From 8c54cccc993ab617ac8bbfb1fc6347484640c441 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 19:03:16 -0400 Subject: sub_81231EC --- src/scene/cable_car.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/scene/cable_car.c (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c new file mode 100644 index 000000000..1b5d22221 --- /dev/null +++ b/src/scene/cable_car.c @@ -0,0 +1,27 @@ + +// Includes +#include "global.h" +#include "palette.h" +#include "main.h" +#include "task.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations + +void sub_8123244(void); + +// .rodata + +// .text + +void sub_81231EC(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_8123244); + DestroyTask(taskId); + } +} -- cgit v1.2.3 From 80985df175f67ea1b90772d2d82c5f97bda44106 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 22:16:21 -0400 Subject: sub_8123244 --- src/field/field_weather.c | 48 ----------- src/scene/cable_car.c | 204 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 443a38357..8dcfd62fa 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -4,54 +4,6 @@ #include "sprite.h" #include "task.h" -struct Weather -{ - u8 filler_000[0x200]; - u8 unknown_200[2][32]; - u8 filler_240[0x480]; - s8 unknown_6C0; - s8 unknown_6C1; - u8 unknown_6C2; - u8 unknown_6C3; - u16 unknown_6C4; - u8 unknown_6C6; - u8 unknown_6C7; - u8 unknown_6C8; - u8 unknown_6C9; - u8 unknown_6CA; - u8 unknown_6CB; - u8 filler_6CC[2]; - u16 unknown_6CE; - u8 unknown_6D0; - u8 unknown_6D1; - u8 filler_6D2[1]; - u8 unknown_6D3; - u8 unknown_6D4; - u8 unknown_6D5; - u8 filler_6D6[2]; - u8 unknown_6D8; - u8 filler_6D9[1]; - u8 unknown_6DA; - u8 filler_6DB[3]; - u8 unknown_6DE; - u8 filler_6DF[5]; - u8 unknown_6E4; - u8 filler_6E5[0x15]; - u8 unknown_6FA; - u8 unknown_6FB; - u8 filler_6FC[4]; - u8 unknown_700; - u8 filler_701[0x15]; - u8 unknown_716; - u8 unknown_717; - u8 filler_718[0xc]; - u8 unknown_724; - u8 filler_725[9]; - u8 unknown_72E; -}; - -#define gWeather gUnknown_0202F7E8 -extern struct Weather gWeather; extern u8 *gUnknown_083970E8; extern u8 (*gUnknown_08396FC8[][4])(void); extern u8 (*gUnknown_083970B8[])(void); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 1b5d22221..0f3726e3a 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -3,18 +3,101 @@ #include "global.h" #include "palette.h" #include "main.h" +#include "script.h" #include "task.h" +#include "sound.h" +#include "songs.h" +#include "decompress.h" +#include "field_weather.h" +#include "unknown_task.h" +#include "event_data.h" +#include "cable_car_util.h" // Static type declarations +struct Unk_2017000 { + u8 unk_0000; + u8 unk_0001; + u8 unk_0002; + u8 filler_0003[0xf9]; + u16 unk_00fc[0x400]; + u16 unk_08fc[0x400]; +}; // size 0x10FC + +struct Unk_2019000 { + /* 0x000 */ u16 mtChimneyTilemap[0xb4]; + /* 0x168 */ u16 treeTilemap[0x1e0]; + /* 0x528 */ u16 mountainTilemap[0x258]; + /* 0x9d8 */ u16 pylonStemTilemap[0x628]; // size not actually known +}; + +#define ewram_17000 (*(struct Unk_2017000 *)(ewram + 0x17000)) +#define ewram_19000 (*(struct Unk_2019000 *)(ewram + 0x19000)) + // Static RAM declarations +EWRAM_DATA struct Unk_2017000 *gUnknown_02039274 = NULL; +EWRAM_DATA u8 gUnknown_02039278 = 0; +EWRAM_DATA u8 gUnknown_02039279 = 0; +EWRAM_DATA u8 gUnknown_0203927A = 0; +EWRAM_DATA u8 gUnknown_0203927B = 0; +EWRAM_DATA u8 gUnknown_0203927C = 0; +EWRAM_DATA u8 gUnknown_0203927D = 0; +EWRAM_DATA u32 filler_02039280 = 0; + // Static ROM declarations void sub_8123244(void); +void sub_8124118(void); +void sub_81248AC(u8); +void sub_8123FBC(u8); +void sub_8123C40(void); +void sub_8123724(void); +void sub_8123878(u8 taskId); +void sub_81239E4(u8 taskId); +void sub_8123AF8(u8 taskId); // .rodata +extern const u8 gCableCar_Gfx[]; +extern const u8 gCableCarDoor_Gfx[]; +extern const u8 gCableCarCord_Gfx[]; +extern const u16 gCableCar_Pal[]; +extern const u16 gCableCarBG_Pal[]; +extern const u8 gCableCarBG_Gfx[]; + +const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); + +const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); + +const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz"); + +const u16 gCableCarPylonHookTilemapEntries[] = { + 0x3000, + 0x3001, + 0x3002, + 0x3003, + 0x3004, + 0x3005, + 0x3006, + 0x3007, + 0x3008, + 0x3009 +}; + +const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz"); + +const struct CompressedSpriteSheet gUnknown_08401CF8[] = { + { gCableCar_Gfx, 0x800, 1 }, + { gCableCarDoor_Gfx, 0x40, 2 }, + { gCableCarCord_Gfx, 0x80, 3 }, + { } +}; +const struct SpritePalette gUnknown_08401D18[] = { + { gCableCar_Pal, 1 }, + { } +}; + // .text void sub_81231EC(u8 taskId) @@ -25,3 +108,124 @@ void sub_81231EC(u8 taskId) DestroyTask(taskId); } } + +void sub_8123218(void) +{ + ScriptContext2_Enable(); + CreateTask(sub_81231EC, 1); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); +} + +void sub_8123244(void) +{ + u8 i; + u16 imebak; + + switch (gMain.state) + { + case 0: + default: + SetVBlankCallback(NULL); + remove_some_task(); + DmaFill16Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + gUnknown_02039274 = &ewram_17000; + DmaFill16Large(3, 0, &ewram_17000, 0x10FC, 0x1000); + gMain.state ++; + break; + case 1: + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + sub_807C828(); + for (i = 0; i < 20; i ++) + { + gUnknown_08396FC4->unk_0f0[i] = NULL; + } + InitMapMusic(); + ResetMapMusic(); + gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0; + gMain.state ++; + break; + case 2: + for (i = 0; i < 3; i ++) + { + LoadCompressedObjectPic(&gUnknown_08401CF8[i]); + } + LoadSpritePalettes(gUnknown_08401D18); + LZDecompressWram(gCableCarMtChimneyTilemap, ewram_19000.mtChimneyTilemap); + LZDecompressWram(gCableCarTreeTilemap, ewram_19000.treeTilemap); + LZDecompressWram(gCableCarMountainTilemap, ewram_19000.mountainTilemap); + LZDecompressWram(gCableCarPylonStemTilemap, ewram_19000.pylonStemTilemap); + LoadPalette(gCableCarBG_Pal, 0, 0x80); + LZ77UnCompVram(gCableCarBG_Gfx, (u16 *)BG_VRAM); + gMain.state ++; + break; + case 3: + sub_8124118(); + RunTasks(); + gMain.state ++; + break; + case 4: + if (gUnknown_02039274->unk_0002 == 7) + { + gMain.state ++; + } + else if (gUnknown_08396FC4->unk_0f0[0] != NULL) + { + for (i = 0; i < 20; i ++) + { + if (gUnknown_08396FC4->unk_0f0[i] != NULL) + { + gUnknown_08396FC4->unk_0f0[i]->unk_5_2 = 0; + } + } + gMain.state ++; + } + break; + case 5: + sub_8124F08((u16 *)BG_SCREEN_ADDR(29), ewram_19000.treeTilemap, 0, 17, 32, 15); + sub_8124F08((u16 *)BG_SCREEN_ADDR(30), ewram_19000.mountainTilemap, 0, 0, 30, 20); + sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(gUnknown_02039274->unk_08fc, ewram_19000.pylonStemTilemap, 0, 2, 2, 20); + gMain.state ++; + break; + case 6: + sub_81248AC(gSpecialVar_0x8004); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x48, 0, 14, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x6C, 12, 17, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x90, 24, 20, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x00, 0, 17, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x24, 0, 20, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x00, 12, 20, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x24, 12, 23, 12, 3); + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x00, 24, 23, 12, 3); + gMain.state ++; + break; + case 7: + BeginNormalPaletteFade(-1, 3, 16, 0, 0); + FadeInNewBGM(BGM_ROPEWAY, 1); + sub_8123FBC(1); + gMain.state ++; + break; + case 8: + imebak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imebak; + SetVBlankCallback(sub_8123C40); + SetMainCallback2(sub_8123724); + CreateTask(sub_8123878, 0); + if (gSpecialVar_0x8004 == 0) + { + gUnknown_02039274->unk_0000 = CreateTask(sub_81239E4, 1); + } + else + { + gUnknown_02039274->unk_0000 = CreateTask(sub_8123AF8, 1); + } + break; + } +} -- cgit v1.2.3 From b833bf304963f92de2670529d1d9083180ade9ba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 22:34:01 -0400 Subject: sub_8123740 --- src/scene/cable_car.c | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 0f3726e3a..899bb9dba 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "overworld.h" #include "palette.h" #include "main.h" #include "script.h" @@ -127,9 +128,9 @@ void sub_8123244(void) default: SetVBlankCallback(NULL); remove_some_task(); - DmaFill16Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); - DmaFill32Defvars(3, 0, (void *)OAM, OAM_SIZE); - DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); gUnknown_02039274 = &ewram_17000; DmaFill16Large(3, 0, &ewram_17000, 0x10FC, 0x1000); gMain.state ++; @@ -229,3 +230,33 @@ void sub_8123244(void) break; } } + +void sub_8123724(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + MapMusicMain(); +} + +void sub_8123740(void) +{ + u8 i; + + for (i = 0, sub_8123FBC(0), gSpriteCoordOffsetX = 0, sub_807C9B4(0); i < 20; i ++) + { + gUnknown_08396FC4->unk_0f0[i] = NULL; + } + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + DmaFill32Large(3, 0, ewram, 0x20000, 0x1000); + gUnknown_02039274 = NULL; + DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); + warp_in(); + gFieldCallback = NULL; + SetMainCallback2(CB2_LoadMap); +} -- cgit v1.2.3 From 89904a0f2492e9e579b7478c4a66cc547027cf48 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 23:07:27 -0400 Subject: sub_8123878 --- src/scene/cable_car.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 82 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 899bb9dba..27ae54d51 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -20,7 +20,10 @@ struct Unk_2017000 { u8 unk_0000; u8 unk_0001; u8 unk_0002; - u8 filler_0003[0xf9]; + u8 unk_0003; + u16 unk_0004; + u16 unk_0006; + u8 filler_0008[0xf4]; u16 unk_00fc[0x400]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -180,7 +183,7 @@ void sub_8123244(void) { if (gUnknown_08396FC4->unk_0f0[i] != NULL) { - gUnknown_08396FC4->unk_0f0[i]->unk_5_2 = 0; + gUnknown_08396FC4->unk_0f0[i]->oam.priority = 0; } } gMain.state ++; @@ -244,7 +247,11 @@ void sub_8123740(void) { u8 i; - for (i = 0, sub_8123FBC(0), gSpriteCoordOffsetX = 0, sub_807C9B4(0); i < 20; i ++) + i = 0; + sub_8123FBC(0); + gSpriteCoordOffsetX = 0; + sub_807C9B4(0); + for (; i < 20; i ++) { gUnknown_08396FC4->unk_0f0[i] = NULL; } @@ -260,3 +267,75 @@ void sub_8123740(void) gFieldCallback = NULL; SetMainCallback2(CB2_LoadMap); } + +void sub_8123878(u8 taskId) +{ + u8 i; + + i = 0; + gUnknown_02039274->unk_0006 ++; + switch (gUnknown_02039274->unk_0001) + { + case 0: + if (gUnknown_02039274->unk_0006 == gUnknown_02039274->unk_0004) + { + DoWeatherEffect(gUnknown_02039274->unk_0002); + gUnknown_02039274->unk_0001 = 1; + } + break; + case 1: + switch (gUnknown_02039274->unk_0002) + { + case 7: + if (gUnknown_08396FC4->unk_0f0[0] != NULL && gUnknown_08396FC4->unk_0f0[0]->oam.priority != 0) + { + for (; i < 20; i ++) + { + if (gUnknown_08396FC4->unk_0f0[i] != NULL) + { + gUnknown_08396FC4->unk_0f0[i]->oam.priority = 0; + } + } + gUnknown_02039274->unk_0001 = 2; + } + break; + case 2: + if (gUnknown_08396FC4->unknown_6D0 == 2) + { + gUnknown_02039274->unk_0001 = 2; + } + else if (gUnknown_02039274->unk_0006 >= gUnknown_02039274->unk_0004 + 8) + { + for (; i < 20; i ++) + { + if (gUnknown_08396FC4->unk_0f0[i] != NULL) + { + gUnknown_08396FC4->unk_0f0[i]->invisible ^= TRUE; + } + } + } + break; + } + break; + case 2: + if (gUnknown_02039274->unk_0006 == 570) + { + gUnknown_02039274->unk_0001 = 3; + BeginNormalPaletteFade(-1, 3, 0, 16, 0); + FadeOutBGM(4); + } + break; + case 3: + if (!gPaletteFade.active) + { + gUnknown_02039274->unk_0001 = 255; + } + break; + case 255: + SetVBlankCallback(NULL); + DestroyTask(taskId); + DestroyTask(gUnknown_02039274->unk_0000); + SetMainCallback2(sub_8123740); + break; + } +} -- cgit v1.2.3 From 91a171ff93f10ba185a826257c5b1f2564e59a22 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 14 Oct 2017 23:40:20 -0400 Subject: sub_81239E4 --- src/scene/cable_car.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 27ae54d51..8f708903e 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -23,7 +23,13 @@ struct Unk_2017000 { u8 unk_0003; u16 unk_0004; u16 unk_0006; - u8 filler_0008[0xf4]; + u8 filler_0008[4]; + u8 unk_000c; + u8 unk_000d; + u8 filler_0000e[6]; + u8 unk_0014; + u8 unk_0015; + u8 filler_0016[0xe6]; u16 unk_00fc[0x400]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -60,6 +66,7 @@ void sub_8123724(void); void sub_8123878(u8 taskId); void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); +void sub_812453C(void); // .rodata @@ -339,3 +346,39 @@ void sub_8123878(u8 taskId) break; } } + +void sub_81239E4(u8 taskId) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + gUnknown_02039274->unk_0014 --; + if ((gUnknown_02039274->unk_0006 % 2) == 0) + { + gUnknown_02039274->unk_0015 --; + } + if ((gUnknown_02039274->unk_0006 % 8) == 0) + { + gUnknown_02039274->unk_000c --; + gUnknown_02039274->unk_000d --; + } + switch (gUnknown_02039274->unk_0014) + { + case 175: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); + break; + case 40: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 3, 0, 2, 2); + break; + case 32: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 1, 2); + break; + case 16: + sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(gUnknown_02039274->unk_08fc, ewram_19000.pylonStemTilemap, 0, 2, 2, 30); + gUnknown_02039274->unk_0015 = 64; + break; + } + } + sub_812453C(); + gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128; +} -- cgit v1.2.3 From acf2820efce9893e71700c8892b00f9acceb9477 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Oct 2017 10:18:11 -0400 Subject: sub_8123AF8 --- src/scene/cable_car.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 8f708903e..4d762af1a 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -67,6 +67,7 @@ void sub_8123878(u8 taskId); void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); void sub_812453C(void); +void sub_8124598(void); // .rodata @@ -382,3 +383,49 @@ void sub_81239E4(u8 taskId) sub_812453C(); gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128; } + +void sub_8123AF8(u8 taskId) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + gUnknown_02039274->unk_0014 ++; + if ((gUnknown_02039274->unk_0006 % 2) == 0) + { + gUnknown_02039274->unk_0015 ++; + } + if ((gUnknown_02039274->unk_0006 % 8) == 0) + { + gUnknown_02039274->unk_000c ++; + gUnknown_02039274->unk_000d ++; + } + switch (gUnknown_02039274->unk_0014) + { + case 176: + sub_8124F08(gUnknown_02039274->unk_08fc, ewram_19000.pylonStemTilemap, 0, 2, 2, 30); + break; + case 16: + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 3, 2); + sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); + gUnknown_02039274->unk_0015 = 192; + break; + case 32: + gUnknown_02039274->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; + gUnknown_02039274->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; + gUnknown_02039274->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; + gUnknown_02039274->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; + break; + case 40: + gUnknown_02039274->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; + gUnknown_02039274->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; + break; + } + } + sub_8124598(); + if (gUnknown_02039274->unk_0006 < gUnknown_02039274->unk_0004) { + gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 247) % 248; + } + else + { + gUnknown_08396FC4->unknown_6FC = (gUnknown_08396FC4->unknown_6FC + 247) % 248; + } +} -- cgit v1.2.3 From ba3934b56f4bba4ddb1a7df4d4362d34d35a12d2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Oct 2017 10:27:48 -0400 Subject: sub_8123C40 --- src/scene/cable_car.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 4d762af1a..6e4fe608e 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -23,7 +23,9 @@ struct Unk_2017000 { u8 unk_0003; u16 unk_0004; u16 unk_0006; - u8 filler_0008[4]; + u8 unk_0008; + u8 unk_0009; + u8 filler_000a[2]; u8 unk_000c; u8 unk_000d; u8 filler_0000e[6]; @@ -429,3 +431,18 @@ void sub_8123AF8(u8 taskId) gUnknown_08396FC4->unknown_6FC = (gUnknown_08396FC4->unknown_6FC + 247) % 248; } } + +void sub_8123C40(void) +{ + DmaCopy16(3, gUnknown_02039274->unk_00fc, BG_SCREEN_ADDR(28), 0x800); + DmaCopy16(3, gUnknown_02039274->unk_08fc, BG_SCREEN_ADDR(31), 0x800); + REG_BG3HOFS = gUnknown_02039274->unk_0014; + REG_BG3VOFS = gUnknown_02039274->unk_0015; + REG_BG1HOFS = gUnknown_02039274->unk_000c; + REG_BG1VOFS = gUnknown_02039274->unk_000d; + REG_BG0HOFS = gUnknown_02039274->unk_0008; + REG_BG0VOFS = gUnknown_02039274->unk_0009; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} -- cgit v1.2.3 From 259d0cfc75f03da9b2e9f02d45810bb4eb7de12a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 15 Oct 2017 11:00:34 -0400 Subject: sub_8123CB8 --- src/scene/cable_car.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 6e4fe608e..5a2f39a6f 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -16,6 +16,15 @@ // Static type declarations +// Credits to Made (dolphin emoji) +#define S16TOPOSFLOAT(val) \ +({ \ + s16 v = (val); \ + float f = (float)v; \ + if(v < 0) f += 65536.0f; \ + f; \ +}) + struct Unk_2017000 { u8 unk_0000; u8 unk_0001; @@ -446,3 +455,25 @@ void sub_8123C40(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); } + +void nullsub_76(void) +{ + +} + +void sub_8123CB8(struct Sprite *sprite) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + if (gSpecialVar_0x8004 == 0) + { + sprite->pos1.x = sprite->data0 - (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 - (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + else + { + sprite->pos1.x = sprite->data0 + (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 + (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + } +} -- cgit v1.2.3 From faea6fd64a4dc8332f6b6171f52c6055e21c3e27 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 13:48:33 -0400 Subject: sub_8123D98 --- src/scene/cable_car.c | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 5a2f39a6f..30002bb47 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -467,13 +467,49 @@ void sub_8123CB8(struct Sprite *sprite) { if (gSpecialVar_0x8004 == 0) { - sprite->pos1.x = sprite->data0 - (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data1 - (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data0 - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); } else { - sprite->pos1.x = sprite->data0 + (u8)((f32)0.14 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data1 + (u8)((f32)0.067 * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data0 + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + } +} + +void sub_8123D98(struct Sprite *sprite) +{ + if (gUnknown_02039274->unk_0001 != 255) + { + if (gSpecialVar_0x8004 == 0) + { + sprite->pos1.x = sprite->data0 - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + else + { + sprite->pos1.x = sprite->data0 + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.y = sprite->data1 + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + } + switch (sprite->data2) + { + case 0: + sprite->pos2.y = 17; + if (sprite->data3 ++ > 9) + { + sprite->data3 = 0; + sprite->data2 ++; + } + break; + default: + sprite->pos2.y = 16; + if (sprite->data3 ++ > 9) + { + sprite->data3 = 0; + sprite->data2 = 0; + } + break; } } } -- cgit v1.2.3 From 270ed12126feb679f5fc818d33da56f65ae9fa98 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 14:01:09 -0400 Subject: sub_8123EB8 --- src/scene/cable_car.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 30002bb47..ee26d730b 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -513,3 +513,39 @@ void sub_8123D98(struct Sprite *sprite) } } } + +void sub_8123EB8(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + sprite->pos1.x += 2 * sprite->centerToCornerVecX; + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + } + if (++ sprite->data0 >= sprite->data2) + { + switch (sprite->data1) + { + case 0: + sprite->pos1.x ++; + if ((sprite->data0 % 4) == 0) + { + sprite->pos1.y ++; + } + break; + case 1: + if ((sprite->data0 % 2) != 0) + { + sprite->pos1.x ++; + if ((sprite->pos1.x % 4) == 0) + { + sprite->pos1.y ++; + } + } + break; + } + if (sprite->pos1.y > 0xa0) + { + DestroySprite(sprite); + } + } +} -- cgit v1.2.3 From 958a2b9a4028d974a8cbd906368340d2c2641adc Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 14:03:33 -0400 Subject: sub_8123F44 --- src/scene/cable_car.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index ee26d730b..a59862278 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -549,3 +549,38 @@ void sub_8123EB8(struct Sprite *sprite) } } } + +void sub_8123F44(struct Sprite *sprite) +{ + if (sprite->data0 == 0) + { + sprite->pos1.y += 16 + sprite->centerToCornerVecY; + } + if (++ sprite->data0 >= sprite->data2) + { + switch (sprite->data1) + { + case 0: + sprite->pos1.x --; + if ((sprite->data0 % 4) == 0) + { + sprite->pos1.y --; + } + break; + case 1: + if ((sprite->data0 % 2) != 0) + { + sprite->pos1.x --; + if ((sprite->pos1.x % 4) == 0) + { + sprite->pos1.y --; + } + } + break; + } + if (sprite->pos1.y < 0x50) + { + DestroySprite(sprite); + } + } +} -- cgit v1.2.3 From 2022b1dfb43691e3123024fcddcd07dd45b20a75 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 14:18:25 -0400 Subject: sub_8123FBC --- src/scene/cable_car.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index a59862278..76223925b 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -584,3 +584,73 @@ void sub_8123F44(struct Sprite *sprite) } } } + +void sub_8123FBC(bool8 which) +{ + switch (which) + { + case FALSE: + default: + REG_WININ = 0; + REG_WINOUT = 0; + REG_WIN0H = 0; + REG_WIN1H = 0; + REG_WIN0V = 0; + REG_WIN1V = 0; + REG_DISPCNT = 0; + REG_BG3CNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BLDCNT = 0; + break; + case TRUE: + REG_WININ = 0; + REG_WINOUT = 0; + REG_WIN0H = 0; + REG_WIN1H = 0; + REG_WIN0V = 0; + REG_WIN1V = 0; + if (gSpecialVar_0x8004 == 0) + { + gUnknown_02039274->unk_0014 = 0xb0; + gUnknown_02039274->unk_0015 = 0x10; + gUnknown_02039274->unk_000c = 0x00; + gUnknown_02039274->unk_000d = 0x50; + gUnknown_02039274->unk_0009 = 0; + gUnknown_02039274->unk_0009 = 0; + } + else + { + gUnknown_02039274->unk_0014 = 0x60; + gUnknown_02039274->unk_0015 = 0xe8; + gUnknown_02039274->unk_000c = 0x00; + gUnknown_02039274->unk_000d = 0x04; + gUnknown_02039274->unk_0009 = 0; + gUnknown_02039274->unk_0009 = 0; + } + REG_BG3HOFS = gUnknown_02039274->unk_0014; + REG_BG3VOFS = gUnknown_02039274->unk_0015; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = gUnknown_02039274->unk_000c; + REG_BG1VOFS = gUnknown_02039274->unk_000d; + REG_BG0HOFS = gUnknown_02039274->unk_0008; + REG_BG0VOFS = gUnknown_02039274->unk_0009; + REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28) | BGCNT_WRAP; + REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29) | BGCNT_WRAP; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(30) | BGCNT_WRAP; + REG_BG3CNT = BGCNT_PRIORITY(0) | BGCNT_SCREENBASE(31) | BGCNT_WRAP; + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + REG_BLDCNT = 0x3f00; + break; + } +} -- cgit v1.2.3 From 2fff1ae7c56ae2511137d14ea2085bb03e1e2d43 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 15:30:38 -0400 Subject: Decompile remaining data --- src/scene/cable_car.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 76223925b..d5398f262 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -13,6 +13,7 @@ #include "unknown_task.h" #include "event_data.h" #include "cable_car_util.h" +#include "map_object_constants.h" // Static type declarations @@ -79,6 +80,10 @@ void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); void sub_812453C(void); void sub_8124598(void); +void sub_8123CB8(struct Sprite *sprite); +void nullsub_76(struct Sprite *sprite); +void sub_8123EB8(struct Sprite *sprite); +void sub_8123F44(struct Sprite *sprite); // .rodata @@ -121,6 +126,83 @@ const struct SpritePalette gUnknown_08401D18[] = { { } }; +const struct OamData gOamData_8401D28 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .size = 3, + .priority = 2 +}; + +const struct OamData gOamData_8401D30 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .shape = ST_OAM_H_RECTANGLE, + .priority = 2 +}; + +const struct OamData gOamData_8401D38 = { + .affineMode = ST_OAM_AFFINE_DOUBLE, + .size = 1, + .priority = 2 +}; + +const struct SpriteTemplate gSpriteTemplate_8401D40 = { + 1, + 1, + &gOamData_8401D28, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 +}; + +const struct SpriteTemplate gSpriteTemplate_8401D58 = { + 2, + 1, + &gOamData_8401D30, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 +}; + +const struct SpriteTemplate gSpriteTemplate_8401D70 = { + 3, + 1, + &gOamData_8401D38, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + nullsub_76 +}; + +const u8 gCableCarPlayerGraphicsIDs[] = { + MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, + MAP_OBJ_GFX_RIVAL_MAY_NORMAL +}; + +const u8 gMtChimneyHikerGraphicsIDs[] = { + MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_POOCHYENA +}; + +const u16 gMtChimneyHikerCoords[][2] = { + { 0, 80 }, + { 240, 146 } +}; + +const u8 gMtChimneyHikerMovementDelayTable[] = { + 0, + 60, + 120, + 170 +}; + +void (*const gUnknown_08401D9C[])(struct Sprite *sprite) = { + sub_8123EB8, + sub_8123F44 +}; + // .text void sub_81231EC(u8 taskId) @@ -456,7 +538,7 @@ void sub_8123C40(void) TransferPlttBuffer(); } -void nullsub_76(void) +void nullsub_76(struct Sprite *sprite) { } -- cgit v1.2.3 From abab76bc84f1a7554f43c33a52c18297f462e058 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 15 Oct 2017 16:40:06 -0400 Subject: sub_8124118 --- src/scene/cable_car.c | 214 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 157 insertions(+), 57 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d5398f262..12b2e62b3 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -3,6 +3,7 @@ #include "global.h" #include "overworld.h" #include "palette.h" +#include "rng.h" #include "main.h" #include "script.h" #include "task.h" @@ -10,6 +11,7 @@ #include "songs.h" #include "decompress.h" #include "field_weather.h" +#include "field_map_obj.h" #include "unknown_task.h" #include "event_data.h" #include "cable_car_util.h" @@ -144,63 +146,32 @@ const struct OamData gOamData_8401D38 = { .priority = 2 }; -const struct SpriteTemplate gSpriteTemplate_8401D40 = { - 1, - 1, - &gOamData_8401D28, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - sub_8123CB8 -}; - -const struct SpriteTemplate gSpriteTemplate_8401D58 = { - 2, - 1, - &gOamData_8401D30, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - sub_8123CB8 -}; - -const struct SpriteTemplate gSpriteTemplate_8401D70 = { - 3, - 1, - &gOamData_8401D38, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - nullsub_76 -}; - -const u8 gCableCarPlayerGraphicsIDs[] = { - MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, - MAP_OBJ_GFX_RIVAL_MAY_NORMAL -}; - -const u8 gMtChimneyHikerGraphicsIDs[] = { - MAP_OBJ_GFX_HIKER, - MAP_OBJ_GFX_CAMPER, - MAP_OBJ_GFX_PICNICKER, - MAP_OBJ_GFX_POOCHYENA -}; - -const u16 gMtChimneyHikerCoords[][2] = { - { 0, 80 }, - { 240, 146 } -}; - -const u8 gMtChimneyHikerMovementDelayTable[] = { - 0, - 60, - 120, - 170 -}; - -void (*const gUnknown_08401D9C[])(struct Sprite *sprite) = { - sub_8123EB8, - sub_8123F44 +const struct SpriteTemplate gSpriteTemplate_8401D40[] = { + { + 1, + 1, + &gOamData_8401D28, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 + }, { + 2, + 1, + &gOamData_8401D30, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + sub_8123CB8 + }, { + 3, + 1, + &gOamData_8401D38, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + nullsub_76 + } }; // .text @@ -736,3 +707,132 @@ void sub_8123FBC(bool8 which) break; } } + +void sub_8124118(void) +{ + u8 spriteId; + u8 i; + + u8 playerGraphicsIds[2] = { + MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, + MAP_OBJ_GFX_RIVAL_MAY_NORMAL + }; + u16 rval = Random(); + u8 hikerGraphicsIds[4] = { + MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_POOCHYENA + }; + s16 hikerCoords[2][2] = { + { 0, 80 }, + { 240, 146 } + }; + u8 hikerMovementDelayTable[4] = { + 0, + 60, + 120, + 170 + }; + void (*callbacks[2])(struct Sprite *) = { + sub_8123EB8, + sub_8123F44 + }; + + switch (gSpecialVar_0x8004) + { + case 0: + default: + spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0xc8, 0x49, 0x66); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].pos2.x = 0x08; + gSprites[spriteId].pos2.y = 0x10; + gSprites[spriteId].data0 = 0xc8; + gSprites[spriteId].data1 = 0x49; + } + spriteId = CreateSprite(&gSpriteTemplate_8401D40[0], 0xb0, 0x2b, 0x67); + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20; + gSprites[spriteId].data0 = 0xb0; + gSprites[spriteId].data1 = 0x2b; + spriteId = CreateSprite(&gSpriteTemplate_8401D40[1], 0xc8, 0x63, 0x65); + gSprites[spriteId].pos2.x = 8; + gSprites[spriteId].pos2.y = 4; + gSprites[spriteId].data0 = 0xc8; + gSprites[spriteId].data1 = 0x63; + gUnknown_02039274->unk_0002 = 7; + gUnknown_02039274->unk_0004 = 0x15e; + sub_807C9B4(2); + break; + case 1: + sub_8124F08(gUnknown_02039274->unk_00fc, ewram_19000.mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); + spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].pos2.x = 0x08; + gSprites[spriteId].pos2.y = 0x10; + gSprites[spriteId].data0 = 0x80; + gSprites[spriteId].data1 = 0x27; + } + spriteId = CreateSprite(&gSpriteTemplate_8401D40[0], 0x68, 0x09, 0x67); + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = 0x20; + gSprites[spriteId].data0 = 0x68; + gSprites[spriteId].data1 = 0x09; + spriteId = CreateSprite(&gSpriteTemplate_8401D40[1], 0x80, 0x41, 0x65); + gSprites[spriteId].pos2.x = 8; + gSprites[spriteId].pos2.y = 4; + gSprites[spriteId].data0 = 0x80; + gSprites[spriteId].data1 = 0x41; + gUnknown_02039274->unk_0002 = 2; + gUnknown_02039274->unk_0004 = 0x109; + sub_807C9B4(7); + break; + } + for (i = 0; i < 9; i ++) + { + spriteId = CreateSprite(&gSpriteTemplate_8401D40[2], 16 * i + 0x60, 8 * i - 8, 0x68); + gSprites[spriteId].pos2.x = 8; + gSprites[spriteId].pos2.y = 8; + } + if ((rval % 64) == 0) + { + spriteId = AddPseudoFieldObject(hikerGraphicsIds[rval % 3], callbacks[gSpecialVar_0x8004], hikerCoords[gSpecialVar_0x8004][0], hikerCoords[gSpecialVar_0x8004][1], 0x6a); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].pos2.x = -gSprites[spriteId].centerToCornerVecX; + gSprites[spriteId].pos2.y = -gSprites[spriteId].centerToCornerVecY; + if (gSpecialVar_0x8004 == 0) + { + if (rval % 2) + { + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data1 = 1; + gSprites[spriteId].pos1.y += 2; + } + else + { + StartSpriteAnim(&gSprites[spriteId], 7); + gSprites[spriteId].data1 = 0; + } + } + else + { + if (rval % 2) + { + StartSpriteAnim(&gSprites[spriteId], 7); + gSprites[spriteId].data1 = 1; + gSprites[spriteId].pos1.y += 2; + } + else + { + StartSpriteAnim(&gSprites[spriteId], 6); + gSprites[spriteId].data1 = 0; + } + } + gSprites[spriteId].data2 = hikerMovementDelayTable[rval % 4]; + } + } +} -- cgit v1.2.3 From bb8f652504f886af296ffcaac57bf76cdc893c97 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 16 Oct 2017 21:14:29 -0400 Subject: nonmatching sub_812446C --- src/scene/cable_car.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 12b2e62b3..9caa2234f 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -836,3 +836,132 @@ void sub_8124118(void) } } } + +#ifdef NONMATCHING +// this is nowhere near correct +void sub_812446C(void) +{ + u8 i; + u8 j; + u8 k; + u8 offset; + + for (i = 0, k = 0, offset = 36 * (gUnknown_02039274->unk_001b + 2); i < 3; i ++) + { + for (j = 0; j < 12; j ++) + { + gUnknown_02039274->unk_0022[i][k] = ewram_19000.mtChimneyTilemap[0][offset + k]; + gUnknown_02039274->unk_0022[i + 3][k] = ewram_19000.mtChimneyTilemap[0][k]; + gUnknown_02039274->unk_0022[i + 6][k] = ewram_19000.mtChimneyTilemap[2][k]; + k ++; + } + } + gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; +} +#else +__attribute__((naked)) void sub_812446C(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tmovs r3, 0\n" + "\tmov r9, r3\n" + "\tldr r2, _08124530 @ =gUnknown_02039274\n" + "\tldr r0, [r2]\n" + "\tldrb r1, [r0, 0x1B]\n" + "\tadds r1, 0x2\n" + "\tlsls r0, r1, 3\n" + "\tadds r0, r1\n" + "\tlsls r0, 26\n" + "\tlsrs r0, 24\n" + "\tmov r12, r0\n" + "_0812448E:\n" + "\tmovs r6, 0\n" + "\tlsls r0, r3, 1\n" + "\tadds r1, r3, 0x3\n" + "\tadds r2, r3, 0x6\n" + "\tadds r4, r3, 0x1\n" + "\tstr r4, [sp]\n" + "\tadds r0, r3\n" + "\tlsls r0, 3\n" + "\tmov r10, r0\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r1\n" + "\tlsls r0, 3\n" + "\tmov r8, r0\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tstr r0, [sp, 0x4]\n" + "_081244B0:\n" + "\tldr r7, _08124530 @ =gUnknown_02039274\n" + "\tldr r5, [r7]\n" + "\tlsls r3, r6, 1\n" + "\tmov r0, r10\n" + "\tadds r2, r3, r0\n" + "\tadds r4, r5, 0\n" + "\tadds r4, 0x22\n" + "\tadds r2, r4, r2\n" + "\tmov r1, r12\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r12, r0\n" + "\tlsls r1, 1\n" + "\tldr r7, _08124534 @ =0x02019000\n" + "\tadds r1, r7\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r2]\n" + "\tmov r0, r8\n" + "\tadds r1, r3, r0\n" + "\tadds r1, r4, r1\n" + "\tmov r7, r9\n" + "\tlsls r2, r7, 1\n" + "\tldr r7, _08124534 @ =0x02019000\n" + "\tadds r0, r2, r7\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1]\n" + "\tldr r0, [sp, 0x4]\n" + "\tadds r3, r0\n" + "\tadds r4, r3\n" + "\tldr r1, _08124538 @ =0x02019048\n" + "\tadds r2, r1\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r4]\n" + "\tmov r0, r9\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r9, r0\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tcmp r6, 0xB\n" + "\tbls _081244B0\n" + "\tldr r4, [sp]\n" + "\tlsls r0, r4, 24\n" + "\tlsrs r3, r0, 24\n" + "\tcmp r3, 0x2\n" + "\tbls _0812448E\n" + "\tldrb r0, [r5, 0x1B]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0x3\n" + "\tbl __modsi3\n" + "\tstrb r0, [r5, 0x1B]\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08124530: .4byte gUnknown_02039274\n" + "_08124534: .4byte 0x02019000\n" + "_08124538: .4byte 0x02019048"); +} +#endif -- cgit v1.2.3 From 272cd213391b5ce87cb2aeac263b3eedb0f19a07 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 20 Dec 2017 15:33:08 -0500 Subject: Add NDEBUG (NOAGBPRN) support to pokeruby. --- src/engine/main.c | 7 +++ src/libs/libc.c | 143 ---------------------------------------------- src/libs/libisagbprn.c | 151 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 158 insertions(+), 143 deletions(-) delete mode 100644 src/libs/libc.c create mode 100755 src/libs/libisagbprn.c (limited to 'src') diff --git a/src/engine/main.c b/src/engine/main.c index 82a5fffb4..11c540d07 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -98,6 +98,13 @@ void AgbMain() gSoftResetDisabled = FALSE; +// In Fire Red, AGBPrintInit is called at this spot. For user convenience, I +// opt to initialize the print area here. It is up to the user where they choose +// to print stuff from, as anything else declared is NOT authoritative. +#ifndef NOAGBPRN + AGBPrintInit(); +#endif + if (gFlashMemoryPresent != TRUE) SetMainCallback2(NULL); diff --git a/src/libs/libc.c b/src/libs/libc.c deleted file mode 100644 index 920673e3e..000000000 --- a/src/libs/libc.c +++ /dev/null @@ -1,143 +0,0 @@ -#include "global.h" -#include - -#define LBLOCKSIZE (sizeof(long)) - -// Nonzero if (long)X contains a NULL byte. -#define CONTAINSNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) - -// Nonzero if X is not aligned on a "long" boundary. -#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) - -void *memcpy(void *dst0, const void *src0, size_t len0) -{ - char *dst = dst0; - const char *src = src0; - long *aligned_dst; - const long *aligned_src; - unsigned int len = len0; - - // If the size is small, or either src or dst is unaligned, - // then go to the byte copy loop. This should be rare. - if (len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst))) - { - aligned_dst = (long *)dst; - aligned_src = (long *)src; - - // Copy 4X long words at a time if possible. - while (len >= 16) - { - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - len -= 16; - } - - // Copy one long word at a time if possible - while (len >= 4) - { - *aligned_dst++ = *aligned_src++; - len -= 4; - } - - dst = (char *)aligned_dst; - src = (char *)aligned_src; - } - - // Pick up any remaining bytes with a byte copier. - while (len--) - *dst++ = *src++; - - return dst0; -} - -void *memset(void *m, int c, size_t n) -{ - char *s = (char *)m; - int count, i; - unsigned long buffer; - unsigned long *aligned_addr; - unsigned char *unaligned_addr; - - // If the size is small or m is unaligned, - // then go to the byte copy loop. This should be rare. - if (n >= LBLOCKSIZE && !UNALIGNED(m)) - { - // We know that n is large and m is word-aligned. - aligned_addr = (unsigned long *)m; - - // Store C into each char sized location in buffer so that - // we can set large blocks quickly. - c &= 0xFF; - if (LBLOCKSIZE == 4) - { - buffer = (c << 8) | c; - buffer |= (buffer << 16); - } - else - { - buffer = 0; - for (i = 0; i < LBLOCKSIZE; i++) - buffer = (buffer << 8) | c; - } - - while (n >= LBLOCKSIZE * 4) - { - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - n -= LBLOCKSIZE * 4; - } - while (n >= LBLOCKSIZE) - { - *aligned_addr++ = buffer; - n -= LBLOCKSIZE; - } - - s = (char *)aligned_addr; - } - - // Pick up the remainder with a bytewise loop. - while (n--) - *s++ = (char)c; - - return m; -} - -int strcmp(const char *s1, const char *s2) -{ - unsigned long *a1; - unsigned long *a2; - - // If s1 or s2 are unaligned, then skip this and compare bytes. - if (!(UNALIGNED(s1) | UNALIGNED(s2))) - { - // Compare them a word at a time. - a1 = (unsigned long *)s1; - a2 = (unsigned long *)s2; - while (*a1 == *a2) - { - // If *a1 == *a2, and we find a null in *a1, - // then the strings must be equal, so return zero. - if (CONTAINSNULL(*a1)) - return 0; - - a1++; - a2++; - } - - s1 = (char *)a1; - s2 = (char *)a2; - } - - // Check the remaining few bytes. - while (*s1 != '\0' && *s1 == *s2) - { - s1++; - s2++; - } - - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -} diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c new file mode 100755 index 000000000..64ccb6351 --- /dev/null +++ b/src/libs/libisagbprn.c @@ -0,0 +1,151 @@ +#include +#include +#include "gba/gba.h" +#include "config.h" + +#define AGB_PRINT_FLUSH_ADDR 0x9FE209D +#define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 +#define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE +#define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) + +struct AGBPrintStruct +{ + u16 m_nRequest; + u16 m_nBank; + u16 m_nGet; + u16 m_nPut; +}; + +typedef void (*LPFN_PRINT_FLUSH)(void); + +#ifndef NOAGBPRN +void AGBPrintFlush1Block(void); + +void AGBPrintInit(void) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + *pProtect = 0x20; + pPrint->m_nRequest = pPrint->m_nGet = pPrint->m_nPut = 0; + pPrint->m_nBank = 0xFD; + *pProtect = 0; + *pWSCNT = nOldWSCNT; +} + +static void AGBPutcInternal(const char cChr) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pPrintBuf = (u16 *)(0x8000000 + (pPrint->m_nBank << 16)); + u16 *pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + u16 nData = pPrintBuf[pPrint->m_nPut / 2]; + *pProtect = 0x20; + nData = (pPrint->m_nPut & 1) ? (nData & 0xFF) | (cChr << 8) : (nData & 0xFF00) | cChr; + pPrintBuf[pPrint->m_nPut / 2] = nData; + pPrint->m_nPut++; + *pProtect = 0; +} + +void AGBPutc(const char cChr) +{ + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + volatile struct AGBPrintStruct *pPrint; + *pWSCNT = WSCNT_DATA; + AGBPutcInternal(cChr); + *pWSCNT = nOldWSCNT; + pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + if (pPrint->m_nPut == ((pPrint->m_nGet - 1) & 0xFFFF)) + AGBPrintFlush1Block(); +} + +void AGBPrint(const char *pBuf) +{ + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; +} + +void AGBPrintf(const char *pBuf, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, pBuf); + vsprintf(bufPrint, pBuf, vArgv); + va_end(vArgv); + AGBPrint(bufPrint); +} + +static void AGBPrintTransferDataInternal(u32 bAllData) +{ + LPFN_PRINT_FLUSH lpfnFuncFlush; + u16 *pIME; + u16 nIME; + u16 *pWSCNT; + u16 nOldWSCNT; + u16 *pProtect; + volatile struct AGBPrintStruct *pPrint; + + pProtect = (u16 *)AGB_PRINT_PROTECT_ADDR; + pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + lpfnFuncFlush = (LPFN_PRINT_FLUSH)AGB_PRINT_FLUSH_ADDR; + pIME = (u16 *)REG_ADDR_IME; + nIME = *pIME; + pWSCNT = (u16 *)REG_ADDR_WAITCNT; + nOldWSCNT = *pWSCNT; + *pIME = nIME & ~1; + *pWSCNT = WSCNT_DATA; + + if (bAllData) + { + while (pPrint->m_nPut != pPrint->m_nGet) + { + *pProtect = 0x20; + lpfnFuncFlush(); + *pProtect = 0; + } + } + else if (pPrint->m_nPut != pPrint->m_nGet) + { + *pProtect = 0x20; + lpfnFuncFlush(); + *pProtect = 0; + } + + *pWSCNT = nOldWSCNT; + *pIME = nIME; +} + +void AGBPrintFlush1Block(void) +{ + AGBPrintTransferDataInternal(FALSE); +} + +void AGBPrintFlush(void) +{ + AGBPrintTransferDataInternal(TRUE); +} + +void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram) +{ + if (nStopProgram) + { + AGBPrintf("ASSERTION FAILED FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); + AGBPrintFlush(); + asm(".hword 0xEFFF"); + } + else + { + AGBPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); + } +} +#endif -- cgit v1.2.3 From 8fd3100fb491c22bb90d1a86f2f1b0fd3b090ac4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Dec 2017 17:31:27 -0500 Subject: Through sub_8101A28 --- src/field/slot_machine.c | 125 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 122 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 89ec68b0a..3bff71f4f 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1,13 +1,24 @@ #include "global.h" +#include "main.h" #include "slot_machine.h" #include "decompress.h" #include "palette.h" #include "task.h" +#include "util.h" #include "ewram.h" -struct UnkStruct2000000 { - /*0x00*/ u8 filler00[61]; +struct SlotMachineEwramStruct { + /*0x00*/ u8 unk00; + /*0x01*/ u8 unk01; + /*0x02*/ u8 filler02[59]; /*0x3D*/ u8 unk3D; + /*0x3E*/ u8 filler3E[26]; + /*0x58*/ u16 win0h; + /*0x5a*/ u16 win0v; + /*0x5c*/ u16 winIn; + /*0x5e*/ u16 winOut; + /*0x60*/ u8 filler_60[4]; + /*0x64*/ void *unk64; }; struct UnkStruct1 { @@ -31,6 +42,114 @@ extern const u16 gUnknown_08E95A18[]; extern u16 gUnknown_08E95AB8[]; extern u16 gUnknown_08E95FB8[]; +void sub_81018B8(void); +void sub_8101954(void); +void sub_81019B0(u8 arg0, void *ptr); +void nullsub_67(u8 taskId); +void sub_8101A28(void); +void sub_8101BA4(void); +void sub_8101A8C(void); +void sub_8101AE0(void); +void sub_8101B04(void); +void sub_8101C84(void); +void sub_8101CA0(void); +void sub_8101CC0(void); +void sub_8101CD4(void); +void sub_8101CEC(void); +void sub_8101A44(void); + + +void PlaySlotMachine(u8 arg0, void *ptr) +{ + sub_81019B0(arg0, ptr); + SetMainCallback2(sub_81018B8); +} + +void sub_81018B8(void) +{ + switch (gMain.state) + { + case 0: + sub_8101A28(); + sub_8101BA4(); + gMain.state++; + break; + case 1: + sub_8101A8C(); + gMain.state++; + break; + case 2: + sub_8101AE0(); + sub_8101B04(); + gMain.state++; + break; + case 3: + sub_8101C84(); + gMain.state++; + break; + case 4: + sub_8101CA0(); + gMain.state++; + break; + case 5: + sub_8101CC0(); + gMain.state++; + break; + case 6: + sub_8101CD4(); + sub_8101CEC(); + sub_8101A44(); + SetMainCallback2(sub_8101954); + break; + } +} + +void sub_8101954(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_810196C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + REG_WIN0H = eSlotMachine->win0h; + REG_WIN0V = eSlotMachine->win0v; + REG_WININ = eSlotMachine->winIn; + REG_WINOUT = eSlotMachine->winOut; +} + +void sub_81019B0(u8 arg0, void *ptr) +{ + struct Task *task = &gTasks[CreateTask(nullsub_67, 0xFF)]; + task->data[0] = arg0; + StoreWordInTwoHalfwords(task->data + 1, (intptr_t)ptr); +} + +void sub_81019EC(void) +{ + struct Task *task = &gTasks[FindTaskIdByFunc(nullsub_67)]; + eSlotMachine->unk01 = task->data[0]; + LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->unk64); +} + +void nullsub_67(u8 taskId) +{ +} + +void sub_8101A28(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + REG_DISPCNT = 0; +} + +asm(".section .text_a"); + static void LoadSlotMachineWheelOverlay(void); void sub_8104CAC(u8 arg0) { @@ -39,7 +158,7 @@ void sub_8104CAC(u8 arg0) { sub_8104DA4(); - task = &gTasks[ewram0_8->unk3D]; + task = &gTasks[eSlotMachine->unk3D]; task->data[1] = arg0; i = 0; -- cgit v1.2.3 From f0957176bc96aef3bac673ac520ba55832957ba8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Dec 2017 17:51:17 -0500 Subject: through sub_8101AE0 --- src/field/slot_machine.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 3bff71f4f..60f8a58ff 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -148,6 +148,28 @@ void sub_8101A28(void) REG_DISPCNT = 0; } +void sub_8101A44(void) +{ + u16 imeBak; + SetVBlankCallback(sub_810196C); + imeBak = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = imeBak; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; +} + +void sub_8101A8C(void) +{ + DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000); +} + +void sub_8101AE0(void) +{ + DmaClear16(3, (u16 *)OAM, OAM_SIZE); +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 9c9c31b1e15014d7cfeb3856717d9b29715d46a5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 20 Dec 2017 20:09:48 -0500 Subject: through sub_8101D8C --- src/field/slot_machine.c | 162 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 145 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 60f8a58ff..cb1326151 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1,26 +1,16 @@ #include "global.h" +#include "random.h" +#include "sound.h" #include "main.h" #include "slot_machine.h" #include "decompress.h" #include "palette.h" #include "task.h" #include "util.h" +#include "text.h" +#include "menu.h" #include "ewram.h" -struct SlotMachineEwramStruct { - /*0x00*/ u8 unk00; - /*0x01*/ u8 unk01; - /*0x02*/ u8 filler02[59]; - /*0x3D*/ u8 unk3D; - /*0x3E*/ u8 filler3E[26]; - /*0x58*/ u16 win0h; - /*0x5a*/ u16 win0v; - /*0x5c*/ u16 winIn; - /*0x5e*/ u16 winOut; - /*0x60*/ u8 filler_60[4]; - /*0x64*/ void *unk64; -}; - struct UnkStruct1 { /*0x00*/ u8 unk00; /*0x01*/ u8 unk01; @@ -47,17 +37,30 @@ void sub_8101954(void); void sub_81019B0(u8 arg0, void *ptr); void nullsub_67(u8 taskId); void sub_8101A28(void); -void sub_8101BA4(void); +void sub_8101A44(void); void sub_8101A8C(void); void sub_8101AE0(void); void sub_8101B04(void); +void sub_8101BA4(void); void sub_8101C84(void); void sub_8101CA0(void); void sub_8101CC0(void); void sub_8101CD4(void); void sub_8101CEC(void); -void sub_8101A44(void); - +void sub_8101D04(void); +void sub_8101D24(u8 taskId); + +void sub_8102DA8(void); +void sub_8103DC8(void); +void sub_8104048(void); +void sub_810423C(u8 a0); +void sub_8104C5C(void); +void sub_8104EA8(void); +void sub_8104F8C(void); +void sub_81050C4(void); +void sub_8106448(void); +void sub_81064B8(void); +void sub_81063C0(void); void PlaySlotMachine(u8 arg0, void *ptr) { @@ -170,6 +173,131 @@ void sub_8101AE0(void) DmaClear16(3, (u16 *)OAM, OAM_SIZE); } +void sub_8101B04(void) +{ + REG_BG0CNT = 0; + REG_BG1CNT = 0; + REG_BG2CNT = 0; + REG_BG3CNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_SCREENBASE(31) | BGCNT_CHARBASE(2); + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29); + REG_BG3CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(30); + REG_WININ = 0x3f; + REG_WINOUT = 0x3f; + REG_BLDCNT = BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_OBJ; + REG_BLDALPHA = 0x809; +} + +extern const s16 gUnknown_083ECCF8[3][2]; + +void sub_8101BA4(void) +{ + u8 i; + + sub_81019EC(); + eSlotMachine->unk00 = 0; + eSlotMachine->unk02 = 0; + eSlotMachine->unk03 = Random() & 1; + eSlotMachine->unk04 = 0; + eSlotMachine->unk08 = 0; + eSlotMachine->unk0A = 0; + eSlotMachine->unk0B = 0; + eSlotMachine->coins = gSaveBlock1.coins; + eSlotMachine->unk0E = 0; + eSlotMachine->unk10 = 0; + eSlotMachine->unk12 = 0; + eSlotMachine->unk18 = 0; + eSlotMachine->unk1A = 8; + eSlotMachine->win0h = 0xf0; + eSlotMachine->win0v = 0xa0; + eSlotMachine->winIn = 0x3f; + eSlotMachine->winOut = 0x3f; + eSlotMachine->backupMapMusic = GetCurrentMapMusic(); + for (i = 0; i < 3; i++) + { + eSlotMachine->unk22[i] = 0; + eSlotMachine->unk28[i] = gUnknown_083ECCF8[i][eSlotMachine->unk03] % 21; + eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->unk28[i] * 24; + eSlotMachine->unk1C[i] %= 0x1f8; + } +} + +void sub_8101C84(void) +{ + SetUpWindowConfig(&gWindowConfig_81E7128); + InitMenuWindow(&gWindowConfig_81E7128); +} + +void sub_8101CA0(void) +{ + ResetPaletteFade(); + ResetSpriteData(); + gOamLimit = 128; + FreeAllSpritePalettes(); + ResetTasks(); +} + +void sub_8101CC0(void) +{ + sub_8106448(); + sub_81064B8(); + sub_81063C0(); +} + +void sub_8101CD4(void) +{ + sub_8104EA8(); + sub_8104F8C(); + sub_8103DC8(); + sub_81050C4(); +} + +void sub_8101CEC(void) +{ + sub_8104048(); + sub_8102DA8(); + sub_8104C5C(); + sub_8101D04(); +} + +extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task); + +void sub_8101D04(void) +{ + sub_8101D24(CreateTask(sub_8101D24, 0)); +} + +void sub_8101D24(u8 taskId) +{ + while (gUnknown_083ECAAC[eSlotMachine->unk00](gTasks + taskId)); +} + +bool8 sub_8101D5C(struct Task *task) +{ + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + sub_810423C(eSlotMachine->unk02); + eSlotMachine->unk00++; + return FALSE; +} + +bool8 sub_8101D8C(struct Task *task) +{ + if (!gPaletteFade.active) + { + eSlotMachine->unk00++; + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 3f6124709ae7843bcc82183c387ce03290c28c36 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 08:42:29 -0500 Subject: through sub_8101E3C --- src/field/slot_machine.c | 104 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index cb1326151..16cfea7b5 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/songs.h" #include "random.h" #include "sound.h" #include "main.h" @@ -51,16 +52,20 @@ void sub_8101D04(void); void sub_8101D24(u8 taskId); void sub_8102DA8(void); +void sub_8103D50(u8 a0); void sub_8103DC8(void); void sub_8104048(void); void sub_810423C(u8 a0); +void sub_8104AB8(u8 a0); void sub_8104C5C(void); +void sub_8104CAC(u8 arg0); +bool8 sub_8104E18(void); void sub_8104EA8(void); void sub_8104F8C(void); void sub_81050C4(void); +void sub_81063C0(void); void sub_8106448(void); void sub_81064B8(void); -void sub_81063C0(void); void PlaySlotMachine(u8 arg0, void *ptr) { @@ -204,7 +209,7 @@ void sub_8101BA4(void) u8 i; sub_81019EC(); - eSlotMachine->unk00 = 0; + eSlotMachine->state = 0; eSlotMachine->unk02 = 0; eSlotMachine->unk03 = Random() & 1; eSlotMachine->unk04 = 0; @@ -214,7 +219,7 @@ void sub_8101BA4(void) eSlotMachine->coins = gSaveBlock1.coins; eSlotMachine->unk0E = 0; eSlotMachine->unk10 = 0; - eSlotMachine->unk12 = 0; + eSlotMachine->bet = 0; eSlotMachine->unk18 = 0; eSlotMachine->unk1A = 8; eSlotMachine->win0h = 0xf0; @@ -278,14 +283,14 @@ void sub_8101D04(void) void sub_8101D24(u8 taskId) { - while (gUnknown_083ECAAC[eSlotMachine->unk00](gTasks + taskId)); + while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId)); } bool8 sub_8101D5C(struct Task *task) { BeginNormalPaletteFade(-1, 0, 16, 0, 0); sub_810423C(eSlotMachine->unk02); - eSlotMachine->unk00++; + eSlotMachine->state++; return FALSE; } @@ -293,7 +298,94 @@ bool8 sub_8101D8C(struct Task *task) { if (!gPaletteFade.active) { - eSlotMachine->unk00++; + eSlotMachine->state++; + } + return FALSE; +} + +bool8 sub_8101DB0(struct Task *task) +{ + eSlotMachine->unk0E = 0; + eSlotMachine->bet = 0; + eSlotMachine->unk18 = 0; + eSlotMachine->unk04 &= 0xc0; + eSlotMachine->state = 4; + if (eSlotMachine->coins <= 0) + { + eSlotMachine->state = 25; + } + else if (eSlotMachine->unk0A) + { + eSlotMachine->state = 3; + sub_8104CAC(4); + } + return TRUE; +} + +bool8 sub_8101DF4(struct Task *task) +{ + if (sub_8104E18()) + { + eSlotMachine->state = 4; + } + return FALSE; +} + +bool8 sub_8101E10(struct Task *task) +{ + sub_8104CAC(0); + eSlotMachine->state = 5; + if (eSlotMachine->coins >= 9999) + { + eSlotMachine->state = 23; + } + return TRUE; +} + +bool8 sub_8101E3C(struct Task *task) +{ + s16 i; + + if (gMain.newKeys & SELECT_BUTTON) + { + sub_8104AB8(0); + eSlotMachine->state = 8; + } + else if (gMain.newKeys & R_BUTTON) + { + if (eSlotMachine->coins - (3 - eSlotMachine->bet) >= 0) + { + for (i = eSlotMachine->bet; i < 3; i++) + { + sub_8103D50(i); + } + eSlotMachine->coins -= (3 - eSlotMachine->bet); + eSlotMachine->bet = 3; + eSlotMachine->state = 9; + PlaySE(SE_REGI); + } + else + { + eSlotMachine->state = 6; + } + } + else + { + if (gMain.newKeys & DPAD_DOWN && eSlotMachine->coins != 0) + { + PlaySE(SE_REGI); + sub_8103D50(eSlotMachine->bet); + eSlotMachine->coins--; + eSlotMachine->bet++; + } + if (eSlotMachine->bet >= 3 || (eSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON)) + { + eSlotMachine->state = 9; + } + if (gMain.newKeys & B_BUTTON) + { + eSlotMachine->state = 21; + } } return FALSE; } -- cgit v1.2.3 From 994bf583aa4d50b95f7b43179206639a81aa68ea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 08:46:32 -0500 Subject: sub_8101F44 --- src/field/slot_machine.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 16cfea7b5..4cf93d5d6 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/songs.h" +#include "strings2.h" #include "random.h" #include "sound.h" #include "main.h" @@ -390,6 +391,19 @@ bool8 sub_8101E3C(struct Task *task) return FALSE; } +void sub_8101F2C(const u8 *str) +{ + MenuDisplayMessageBox(); + MenuPrint(str, 2, 15); +} + +bool8 sub_8101F44(struct Task *task) +{ + sub_8101F2C(gOtherText_DontHaveThreeCoins); + eSlotMachine->state = 7; + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 2fe7a0e1542fa24731d233ed3b9e97ce4efa9c31 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 16:32:23 -0500 Subject: through sub_8102090 --- src/field/slot_machine.c | 173 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 138 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 4cf93d5d6..94dd5b08f 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -34,30 +34,39 @@ extern const u16 gUnknown_08E95A18[]; extern u16 gUnknown_08E95AB8[]; extern u16 gUnknown_08E95FB8[]; -void sub_81018B8(void); -void sub_8101954(void); -void sub_81019B0(u8 arg0, void *ptr); -void nullsub_67(u8 taskId); -void sub_8101A28(void); -void sub_8101A44(void); -void sub_8101A8C(void); -void sub_8101AE0(void); -void sub_8101B04(void); -void sub_8101BA4(void); -void sub_8101C84(void); -void sub_8101CA0(void); -void sub_8101CC0(void); -void sub_8101CD4(void); -void sub_8101CEC(void); -void sub_8101D04(void); -void sub_8101D24(u8 taskId); - +static void sub_81018B8(void); +static void sub_8101954(void); +static void sub_81019B0(u8 arg0, void *ptr); +static void nullsub_67(u8 taskId); +static void sub_8101A28(void); +static void sub_8101A44(void); +static void sub_8101A8C(void); +static void sub_8101AE0(void); +static void sub_8101B04(void); +static void sub_8101BA4(void); +static void sub_8101C84(void); +static void sub_8101CA0(void); +static void sub_8101CC0(void); +static void sub_8101CD4(void); +static void sub_8101CEC(void); +static void sub_8101D04(void); +static void sub_8101D24(u8 taskId); + +void sub_8102484(void); +void sub_81024F0(void); void sub_8102DA8(void); +void sub_8102DEC(u8 a0); +void sub_8102E1C(u8 a0); +bool8 sub_8102E40(u8 a0); +void sub_8103C14(u8 a0); void sub_8103D50(u8 a0); void sub_8103DC8(void); void sub_8104048(void); void sub_810423C(u8 a0); +void sub_810430C(void); +bool8 sub_810432C(void); void sub_8104AB8(u8 a0); +bool8 sub_8104AEC(void); void sub_8104C5C(void); void sub_8104CAC(u8 arg0); bool8 sub_8104E18(void); @@ -67,6 +76,7 @@ void sub_81050C4(void); void sub_81063C0(void); void sub_8106448(void); void sub_81064B8(void); +u16 dp15_jump_random_unknown(void); void PlaySlotMachine(u8 arg0, void *ptr) { @@ -74,7 +84,7 @@ void PlaySlotMachine(u8 arg0, void *ptr) SetMainCallback2(sub_81018B8); } -void sub_81018B8(void) +static void sub_81018B8(void) { switch (gMain.state) { @@ -113,7 +123,7 @@ void sub_81018B8(void) } } -void sub_8101954(void) +static void sub_8101954(void) { RunTasks(); AnimateSprites(); @@ -132,7 +142,7 @@ void sub_810196C(void) REG_WINOUT = eSlotMachine->winOut; } -void sub_81019B0(u8 arg0, void *ptr) +static void sub_81019B0(u8 arg0, void *ptr) { struct Task *task = &gTasks[CreateTask(nullsub_67, 0xFF)]; task->data[0] = arg0; @@ -146,18 +156,18 @@ void sub_81019EC(void) LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->unk64); } -void nullsub_67(u8 taskId) +static void nullsub_67(u8 taskId) { } -void sub_8101A28(void) +static void sub_8101A28(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); REG_DISPCNT = 0; } -void sub_8101A44(void) +static void sub_8101A44(void) { u16 imeBak; SetVBlankCallback(sub_810196C); @@ -169,17 +179,17 @@ void sub_8101A44(void) REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; } -void sub_8101A8C(void) +static void sub_8101A8C(void) { DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000); } -void sub_8101AE0(void) +static void sub_8101AE0(void) { DmaClear16(3, (u16 *)OAM, OAM_SIZE); } -void sub_8101B04(void) +static void sub_8101B04(void) { REG_BG0CNT = 0; REG_BG1CNT = 0; @@ -205,7 +215,7 @@ void sub_8101B04(void) extern const s16 gUnknown_083ECCF8[3][2]; -void sub_8101BA4(void) +static void sub_8101BA4(void) { u8 i; @@ -237,13 +247,13 @@ void sub_8101BA4(void) } } -void sub_8101C84(void) +static void sub_8101C84(void) { SetUpWindowConfig(&gWindowConfig_81E7128); InitMenuWindow(&gWindowConfig_81E7128); } -void sub_8101CA0(void) +static void sub_8101CA0(void) { ResetPaletteFade(); ResetSpriteData(); @@ -252,14 +262,14 @@ void sub_8101CA0(void) ResetTasks(); } -void sub_8101CC0(void) +static void sub_8101CC0(void) { sub_8106448(); sub_81064B8(); sub_81063C0(); } -void sub_8101CD4(void) +static void sub_8101CD4(void) { sub_8104EA8(); sub_8104F8C(); @@ -267,7 +277,7 @@ void sub_8101CD4(void) sub_81050C4(); } -void sub_8101CEC(void) +static void sub_8101CEC(void) { sub_8104048(); sub_8102DA8(); @@ -277,12 +287,12 @@ void sub_8101CEC(void) extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task); -void sub_8101D04(void) +static void sub_8101D04(void) { sub_8101D24(CreateTask(sub_8101D24, 0)); } -void sub_8101D24(u8 taskId) +static void sub_8101D24(u8 taskId) { while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId)); } @@ -404,6 +414,99 @@ bool8 sub_8101F44(struct Task *task) return FALSE; } +bool8 sub_8101F60(struct Task *task) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + MenuZeroFillScreen(); + eSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_8101F88(struct Task *task) +{ + if (sub_8104AEC()) + { + eSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_8101FA4(struct Task *task) +{ + sub_8102484(); + sub_8104DA4(); + sub_8102DEC(0); + sub_8102DEC(1); + sub_8102DEC(2); + task->data[0] = 0; + if (eSlotMachine->unk04 & 0x20) + { + sub_810430C(); + eSlotMachine->state = 10; + } + else + { + sub_8104CAC(1); + eSlotMachine->state = 11; + } + eSlotMachine->unk1A = 8; + if (eSlotMachine->unk0A) + { + eSlotMachine->unk1A = dp15_jump_random_unknown(); + } + return FALSE; +} + +bool8 sub_8102008(struct Task *task) +{ + if (sub_810432C()) + { + sub_8104CAC(1); + eSlotMachine->unk04 &= 0xDF; + eSlotMachine->state = 11; + } + return FALSE; +} + +bool8 sub_8102034(struct Task *task) +{ + if (++task->data[0] >= 30) + { + sub_81024F0(); + eSlotMachine->state = 12; + } + return FALSE; +} + +bool8 sub_8102058(struct Task *task) +{ + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_JYUNI); + sub_8102E1C(eSlotMachine->unk18); + sub_8103C14(eSlotMachine->unk18); + eSlotMachine->state = 13; + } + return FALSE; +} + +bool8 sub_8102090(struct Task *task) +{ + if (!sub_8102E40(eSlotMachine->unk18)) + { + eSlotMachine->unk18++; + eSlotMachine->state = 12; + if (eSlotMachine->unk18 > 2) + { + eSlotMachine->state = 14; + } + return TRUE; + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 6369dca42b4a0cab379b5ecfdc5b8235e64f79cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 18:34:43 -0500 Subject: sub_81020C8 --- src/field/slot_machine.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 94dd5b08f..65d7e21ba 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -54,6 +54,8 @@ static void sub_8101D24(u8 taskId); void sub_8102484(void); void sub_81024F0(void); +void sub_81027A0(void); +void sub_8102A24(void); void sub_8102DA8(void); void sub_8102DEC(u8 a0); void sub_8102E1C(u8 a0); @@ -61,7 +63,9 @@ bool8 sub_8102E40(u8 a0); void sub_8103C14(u8 a0); void sub_8103D50(u8 a0); void sub_8103DC8(void); +void sub_8103F70(void); void sub_8104048(void); +void sub_8104064(u8 a0); void sub_810423C(u8 a0); void sub_810430C(void); bool8 sub_810432C(void); @@ -507,6 +511,71 @@ bool8 sub_8102090(struct Task *task) return FALSE; } +bool8 sub_81020C8(struct Task *task) +{ + eSlotMachine->unk04 &= 0xc0; + sub_81027A0(); + if (eSlotMachine->unk0A) + { + eSlotMachine->unk0A--; + eSlotMachine->unk0B++; + } + if (eSlotMachine->unk08) + { + eSlotMachine->state = 15; + sub_8102A24(); + sub_8103F70(); + if ((eSlotMachine->unk10 -= eSlotMachine->unk0E) < 0) + { + eSlotMachine->unk10 = 0; + } + if (eSlotMachine->unk08 & 0x180) + { + PlayFanfare(BGM_ME_B_BIG); + sub_8104CAC(6); + } + else if (eSlotMachine->unk08 & 0x40) + { + PlayFanfare(BGM_ME_B_BIG); + sub_8104CAC(5); + } + else + { + PlayFanfare(BGM_ME_B_SMALL); + sub_8104CAC(2); + } + if (eSlotMachine->unk08 & 0x1c0) + { + eSlotMachine->unk04 &= 0x3f; + if (eSlotMachine->unk08 & 0x180) + { + eSlotMachine->unk0A = 0; + eSlotMachine->unk0B = 0; + eSlotMachine->unk03 = 0; + if (eSlotMachine->unk08 & 0x100) + { + eSlotMachine->unk03 = 1; + } + } + } + if (eSlotMachine->unk08 & 0x20 && eSlotMachine->unk02 < 16) + { + eSlotMachine->unk02++; + sub_8104064(eSlotMachine->unk02); + } + } + else + { + sub_8104CAC(3); + eSlotMachine->state = 20; + if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999) + { + eSlotMachine->unk10 = 9999; + } + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From e432ffd18d6a1cd5bf1147a42979df3541ea0807 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 19:08:24 -0500 Subject: through sub_8102460 --- src/field/slot_machine.c | 174 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 173 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 65d7e21ba..37fbbbb51 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1,6 +1,8 @@ #include "global.h" #include "constants/songs.h" #include "strings2.h" +#include "overworld.h" +#include "menu_cursor.h" #include "random.h" #include "sound.h" #include "main.h" @@ -56,16 +58,20 @@ void sub_8102484(void); void sub_81024F0(void); void sub_81027A0(void); void sub_8102A24(void); +bool8 sub_8102A44(void); void sub_8102DA8(void); void sub_8102DEC(u8 a0); void sub_8102E1C(u8 a0); bool8 sub_8102E40(u8 a0); void sub_8103C14(u8 a0); void sub_8103D50(u8 a0); +void sub_8103D8C(u8 a0); void sub_8103DC8(void); void sub_8103F70(void); +bool8 sub_8103FA0(void); void sub_8104048(void); void sub_8104064(u8 a0); +bool8 sub_81040C8(void); void sub_810423C(u8 a0); void sub_810430C(void); bool8 sub_810432C(void); @@ -157,7 +163,7 @@ void sub_81019EC(void) { struct Task *task = &gTasks[FindTaskIdByFunc(nullsub_67)]; eSlotMachine->unk01 = task->data[0]; - LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->unk64); + LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->prevMainCb); } static void nullsub_67(u8 taskId) @@ -576,6 +582,172 @@ bool8 sub_81020C8(struct Task *task) return FALSE; } +bool8 sub_81021E0(struct Task *task) +{ + if (sub_8102A44()) + { + eSlotMachine->state = 16; + } + return FALSE; +} + +bool8 sub_81021FC(struct Task *tas) +{ + if (sub_8103FA0()) + { + eSlotMachine->state = 19; + if (eSlotMachine->unk08 & 0x180) + { + IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); + } + if (eSlotMachine->unk08 & 0x04) + { + eSlotMachine->unk18 = 0; + eSlotMachine->state = 9; + } + if (eSlotMachine->unk08 & 0x20) + { + eSlotMachine->state = 17; + } + if (eSlotMachine->unk0A && eSlotMachine->unk08 & 0x04) + { + sub_8104CAC(4); + eSlotMachine->state = 18; + } + } + return FALSE; +} + +bool8 sub_8102264(struct Task *task) +{ + if (!sub_81040C8()) + { + eSlotMachine->state = 19; + if (eSlotMachine->unk08 & 0x04) + { + eSlotMachine->state = 9; + if (eSlotMachine->unk0A) + { + sub_8104CAC(4); + eSlotMachine->state = 18; + } + } + } + return FALSE; +} + +bool8 sub_81022A0(struct Task *task) +{ + if (sub_8104E18()) + { + eSlotMachine->state = 19; + if (eSlotMachine->unk08 & 0x04) + { + eSlotMachine->state = 9; + } + } + return FALSE; +} + +bool8 sub_81022CC(struct Task *task) +{ + sub_8103D8C(0); + sub_8103D8C(1); + sub_8103D8C(2); + eSlotMachine->state = 2; + return FALSE; +} + +bool8 sub_81022F0(struct Task *task) +{ + if (++task->data[1] > 64) + { + task->data[1] = 0; + eSlotMachine->state = 19; + } + return FALSE; +} + +bool8 sub_8102318(struct Task *task) +{ + sub_8101F2C(gOtherText_QuitGamePrompt); + DisplayYesNoMenu(21, 7, 1); + sub_814AB84(); + eSlotMachine->state = 22; + return FALSE; +} + +bool8 sub_8102344(struct Task *task) +{ + s8 input = ProcessMenuInputNoWrap_(); + if (input == 0) + { + MenuZeroFillScreen(); + sub_8103D8C(0); + sub_8103D8C(1); + sub_8103D8C(2); + eSlotMachine->coins += eSlotMachine->bet; + eSlotMachine->state = 27; + } + else if (input == 1 || input == -1) + { + MenuZeroFillScreen(); + eSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_810239C(struct Task *task) +{ + sub_8101F2C(gOtherText_MaxCoins); + eSlotMachine->state = 24; + return FALSE; +} + +bool8 sub_81023B8(struct Task *task) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + MenuZeroFillScreen(); + eSlotMachine->state = 5; + } + return FALSE; +} + +bool8 sub_81023E0(struct Task *task) +{ + sub_8101F2C(gOtherText_OutOfCoins); + eSlotMachine->state = 26; + return FALSE; +} + +bool8 sub_81023FC(struct Task *task) +{ + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + MenuZeroFillScreen(); + eSlotMachine->state = 27; + } + return FALSE; +} + +bool8 sub_8102424(struct Task *task) +{ + gSaveBlock1.coins = eSlotMachine->coins; + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + eSlotMachine->state++; + return FALSE; +} + +bool8 sub_8102460(struct Task *task) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(eSlotMachine->prevMainCb); + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 683862fbd5fdcd9b1c60f926553db0cbe2847422 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 19:12:42 -0500 Subject: through sub_8102460; decompile associated pointer table --- src/field/slot_machine.c | 121 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 90 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 37fbbbb51..2bf8e9c97 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -53,6 +53,35 @@ static void sub_8101CD4(void); static void sub_8101CEC(void); static void sub_8101D04(void); static void sub_8101D24(u8 taskId); +static bool8 sub_8101D5C(struct Task *task); +static bool8 sub_8101D8C(struct Task *task); +static bool8 sub_8101DB0(struct Task *task); +static bool8 sub_8101DF4(struct Task *task); +static bool8 sub_8101E10(struct Task *task); +static bool8 sub_8101E3C(struct Task *task); +static bool8 sub_8101F44(struct Task *task); +static bool8 sub_8101F60(struct Task *task); +static bool8 sub_8101F88(struct Task *task); +static bool8 sub_8101FA4(struct Task *task); +static bool8 sub_8102008(struct Task *task); +static bool8 sub_8102034(struct Task *task); +static bool8 sub_8102058(struct Task *task); +static bool8 sub_8102090(struct Task *task); +static bool8 sub_81020C8(struct Task *task); +static bool8 sub_81021E0(struct Task *task); +static bool8 sub_81021FC(struct Task *task); +static bool8 sub_8102264(struct Task *task); +static bool8 sub_81022A0(struct Task *task); +static bool8 sub_81022CC(struct Task *task); +static bool8 sub_81022F0(struct Task *task); +static bool8 sub_8102318(struct Task *task); +static bool8 sub_8102344(struct Task *task); +static bool8 sub_810239C(struct Task *task); +static bool8 sub_81023B8(struct Task *task); +static bool8 sub_81023E0(struct Task *task); +static bool8 sub_81023FC(struct Task *task); +static bool8 sub_8102424(struct Task *task); +static bool8 sub_8102460(struct Task *task); void sub_8102484(void); void sub_81024F0(void); @@ -88,6 +117,38 @@ void sub_8106448(void); void sub_81064B8(void); u16 dp15_jump_random_unknown(void); +static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { + sub_8101D5C, + sub_8101D8C, + sub_8101DB0, + sub_8101DF4, + sub_8101E10, + sub_8101E3C, + sub_8101F44, + sub_8101F60, + sub_8101F88, + sub_8101FA4, + sub_8102008, + sub_8102034, + sub_8102058, + sub_8102090, + sub_81020C8, + sub_81021E0, + sub_81021FC, + sub_8102264, + sub_81022A0, + sub_81022CC, + sub_81022F0, + sub_8102318, + sub_8102344, + sub_810239C, + sub_81023B8, + sub_81023E0, + sub_81023FC, + sub_8102424, + sub_8102460 +}; + void PlaySlotMachine(u8 arg0, void *ptr) { sub_81019B0(arg0, ptr); @@ -295,8 +356,6 @@ static void sub_8101CEC(void) sub_8101D04(); } -extern bool8 (*const gUnknown_083ECAAC[])(struct Task *task); - static void sub_8101D04(void) { sub_8101D24(CreateTask(sub_8101D24, 0)); @@ -307,7 +366,7 @@ static void sub_8101D24(u8 taskId) while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId)); } -bool8 sub_8101D5C(struct Task *task) +static bool8 sub_8101D5C(struct Task *task) { BeginNormalPaletteFade(-1, 0, 16, 0, 0); sub_810423C(eSlotMachine->unk02); @@ -315,7 +374,7 @@ bool8 sub_8101D5C(struct Task *task) return FALSE; } -bool8 sub_8101D8C(struct Task *task) +static bool8 sub_8101D8C(struct Task *task) { if (!gPaletteFade.active) { @@ -324,7 +383,7 @@ bool8 sub_8101D8C(struct Task *task) return FALSE; } -bool8 sub_8101DB0(struct Task *task) +static bool8 sub_8101DB0(struct Task *task) { eSlotMachine->unk0E = 0; eSlotMachine->bet = 0; @@ -343,7 +402,7 @@ bool8 sub_8101DB0(struct Task *task) return TRUE; } -bool8 sub_8101DF4(struct Task *task) +static bool8 sub_8101DF4(struct Task *task) { if (sub_8104E18()) { @@ -352,7 +411,7 @@ bool8 sub_8101DF4(struct Task *task) return FALSE; } -bool8 sub_8101E10(struct Task *task) +static bool8 sub_8101E10(struct Task *task) { sub_8104CAC(0); eSlotMachine->state = 5; @@ -363,7 +422,7 @@ bool8 sub_8101E10(struct Task *task) return TRUE; } -bool8 sub_8101E3C(struct Task *task) +static bool8 sub_8101E3C(struct Task *task) { s16 i; @@ -417,14 +476,14 @@ void sub_8101F2C(const u8 *str) MenuPrint(str, 2, 15); } -bool8 sub_8101F44(struct Task *task) +static bool8 sub_8101F44(struct Task *task) { sub_8101F2C(gOtherText_DontHaveThreeCoins); eSlotMachine->state = 7; return FALSE; } -bool8 sub_8101F60(struct Task *task) +static bool8 sub_8101F60(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { @@ -434,7 +493,7 @@ bool8 sub_8101F60(struct Task *task) return FALSE; } -bool8 sub_8101F88(struct Task *task) +static bool8 sub_8101F88(struct Task *task) { if (sub_8104AEC()) { @@ -443,7 +502,7 @@ bool8 sub_8101F88(struct Task *task) return FALSE; } -bool8 sub_8101FA4(struct Task *task) +static bool8 sub_8101FA4(struct Task *task) { sub_8102484(); sub_8104DA4(); @@ -469,7 +528,7 @@ bool8 sub_8101FA4(struct Task *task) return FALSE; } -bool8 sub_8102008(struct Task *task) +static bool8 sub_8102008(struct Task *task) { if (sub_810432C()) { @@ -480,7 +539,7 @@ bool8 sub_8102008(struct Task *task) return FALSE; } -bool8 sub_8102034(struct Task *task) +static bool8 sub_8102034(struct Task *task) { if (++task->data[0] >= 30) { @@ -490,7 +549,7 @@ bool8 sub_8102034(struct Task *task) return FALSE; } -bool8 sub_8102058(struct Task *task) +static bool8 sub_8102058(struct Task *task) { if (gMain.newKeys & A_BUTTON) { @@ -502,7 +561,7 @@ bool8 sub_8102058(struct Task *task) return FALSE; } -bool8 sub_8102090(struct Task *task) +static bool8 sub_8102090(struct Task *task) { if (!sub_8102E40(eSlotMachine->unk18)) { @@ -517,7 +576,7 @@ bool8 sub_8102090(struct Task *task) return FALSE; } -bool8 sub_81020C8(struct Task *task) +static bool8 sub_81020C8(struct Task *task) { eSlotMachine->unk04 &= 0xc0; sub_81027A0(); @@ -582,7 +641,7 @@ bool8 sub_81020C8(struct Task *task) return FALSE; } -bool8 sub_81021E0(struct Task *task) +static bool8 sub_81021E0(struct Task *task) { if (sub_8102A44()) { @@ -591,7 +650,7 @@ bool8 sub_81021E0(struct Task *task) return FALSE; } -bool8 sub_81021FC(struct Task *tas) +static bool8 sub_81021FC(struct Task *task) { if (sub_8103FA0()) { @@ -618,7 +677,7 @@ bool8 sub_81021FC(struct Task *tas) return FALSE; } -bool8 sub_8102264(struct Task *task) +static bool8 sub_8102264(struct Task *task) { if (!sub_81040C8()) { @@ -636,7 +695,7 @@ bool8 sub_8102264(struct Task *task) return FALSE; } -bool8 sub_81022A0(struct Task *task) +static bool8 sub_81022A0(struct Task *task) { if (sub_8104E18()) { @@ -649,7 +708,7 @@ bool8 sub_81022A0(struct Task *task) return FALSE; } -bool8 sub_81022CC(struct Task *task) +static bool8 sub_81022CC(struct Task *task) { sub_8103D8C(0); sub_8103D8C(1); @@ -658,7 +717,7 @@ bool8 sub_81022CC(struct Task *task) return FALSE; } -bool8 sub_81022F0(struct Task *task) +static bool8 sub_81022F0(struct Task *task) { if (++task->data[1] > 64) { @@ -668,7 +727,7 @@ bool8 sub_81022F0(struct Task *task) return FALSE; } -bool8 sub_8102318(struct Task *task) +static bool8 sub_8102318(struct Task *task) { sub_8101F2C(gOtherText_QuitGamePrompt); DisplayYesNoMenu(21, 7, 1); @@ -677,7 +736,7 @@ bool8 sub_8102318(struct Task *task) return FALSE; } -bool8 sub_8102344(struct Task *task) +static bool8 sub_8102344(struct Task *task) { s8 input = ProcessMenuInputNoWrap_(); if (input == 0) @@ -697,14 +756,14 @@ bool8 sub_8102344(struct Task *task) return FALSE; } -bool8 sub_810239C(struct Task *task) +static bool8 sub_810239C(struct Task *task) { sub_8101F2C(gOtherText_MaxCoins); eSlotMachine->state = 24; return FALSE; } -bool8 sub_81023B8(struct Task *task) +static bool8 sub_81023B8(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { @@ -714,14 +773,14 @@ bool8 sub_81023B8(struct Task *task) return FALSE; } -bool8 sub_81023E0(struct Task *task) +static bool8 sub_81023E0(struct Task *task) { sub_8101F2C(gOtherText_OutOfCoins); eSlotMachine->state = 26; return FALSE; } -bool8 sub_81023FC(struct Task *task) +static bool8 sub_81023FC(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { @@ -731,7 +790,7 @@ bool8 sub_81023FC(struct Task *task) return FALSE; } -bool8 sub_8102424(struct Task *task) +static bool8 sub_8102424(struct Task *task) { gSaveBlock1.coins = eSlotMachine->coins; BeginNormalPaletteFade(-1, 0, 0, 16, 0); @@ -739,7 +798,7 @@ bool8 sub_8102424(struct Task *task) return FALSE; } -bool8 sub_8102460(struct Task *task) +static bool8 sub_8102460(struct Task *task) { if (!gPaletteFade.active) { -- cgit v1.2.3 From 388a4cc729c84e334819db165eb5aab99233ee9c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 21 Dec 2017 22:35:46 -0500 Subject: sub_8102540 --- src/field/slot_machine.c | 98 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 89 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 2bf8e9c97..b72c749d0 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -82,9 +82,11 @@ static bool8 sub_81023E0(struct Task *task); static bool8 sub_81023FC(struct Task *task); static bool8 sub_8102424(struct Task *task); static bool8 sub_8102460(struct Task *task); - -void sub_8102484(void); -void sub_81024F0(void); +static void sub_8102484(void); +static void sub_81024F0(void); +bool8 sub_8102540(void); +u8 sub_8102578(void); +u8 sub_81025BC(void); void sub_81027A0(void); void sub_8102A24(void); bool8 sub_8102A44(void); @@ -113,7 +115,7 @@ void sub_8104EA8(void); void sub_8104F8C(void); void sub_81050C4(void); void sub_81063C0(void); -void sub_8106448(void); +static void sub_8106448(void); void sub_81064B8(void); u16 dp15_jump_random_unknown(void); @@ -149,6 +151,11 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { sub_8102460 }; +extern const u8 gUnknown_083ECD04[][3]; +extern const u8 gUnknown_083ECE3A[]; +extern const u16 gUnknown_083ECE42[]; +extern const u16 gUnknown_083ECE48[]; + void PlaySlotMachine(u8 arg0, void *ptr) { sub_81019B0(arg0, ptr); @@ -807,6 +814,82 @@ static bool8 sub_8102460(struct Task *task) return FALSE; } +static void sub_8102484(void) +{ + u8 r3; + + if (eSlotMachine->unk0A == 0 && !(eSlotMachine->unk04 & 0xc0)) + { + if (sub_8102540()) + { + r3 = sub_8102578(); + if (r3 != 3) + { + eSlotMachine->unk04 |= gUnknown_083ECE42[r3]; + if (r3 != 1) + { + return; + } + } + } + r3 = sub_81025BC(); + if (r3 != 5) + { + eSlotMachine->unk04 |= gUnknown_083ECE48[r3]; + } + } +} + +static void sub_81024F0(void) +{ + eSlotMachine->unk06 = 0; + if (eSlotMachine->unk04) + { + eSlotMachine->unk06 = 1; + } +} + +u8 sub_810250C(u8 a0) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (a0 & 1) + { + return gUnknown_083ECE3A[i]; + } + a0 >>= 1; + } + return 0; +} + +bool8 sub_8102540(void) +{ + u8 rval = Random(); + if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval) + { + return TRUE; + } + return FALSE; +} + +//extern const u8 gUnknown_083ECD16[][3]; +// +//u8 sub_8102578(void) +//{ +// s16 i; +// +// for (i = 0; i < 3; i++) +// { +// if ((Random() & 0xff) <= (int)gUnknown_083ECD16[i][eSlotMachine->unk01]) +// { +// break; +// } +// } +// return i; +//} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); @@ -820,8 +903,7 @@ void sub_8104CAC(u8 arg0) { task = &gTasks[eSlotMachine->unk3D]; task->data[1] = arg0; - i = 0; - while (gUnknown_083ED048[arg0][i].unk00 != 0xFF) + for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++) { u8 spriteId; spriteId = sub_8105BB4( @@ -837,14 +919,12 @@ void sub_8104CAC(u8 arg0) { gSprites[spriteId].invisible = TRUE; } #endif - - i += 1; } } asm(".section .text_b"); -void sub_8106448(void) { +static void sub_8106448(void) { u32 offsetRead, offsetWrite; u32 size; -- cgit v1.2.3 From 56bf99fd9106b3cc8fac45cc051cbeeec40e34aa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 22 Dec 2017 08:37:19 -0500 Subject: Nonmatching sub_8102578 --- src/field/slot_machine.c | 75 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index b72c749d0..f6d58e592 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -84,8 +84,8 @@ static bool8 sub_8102424(struct Task *task); static bool8 sub_8102460(struct Task *task); static void sub_8102484(void); static void sub_81024F0(void); -bool8 sub_8102540(void); -u8 sub_8102578(void); +static bool8 sub_8102540(void); +static u8 sub_8102578(void); u8 sub_81025BC(void); void sub_81027A0(void); void sub_8102A24(void); @@ -864,7 +864,7 @@ u8 sub_810250C(u8 a0) return 0; } -bool8 sub_8102540(void) +static bool8 sub_8102540(void) { u8 rval = Random(); if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval) @@ -874,21 +874,60 @@ bool8 sub_8102540(void) return FALSE; } -//extern const u8 gUnknown_083ECD16[][3]; -// -//u8 sub_8102578(void) -//{ -// s16 i; -// -// for (i = 0; i < 3; i++) -// { -// if ((Random() & 0xff) <= (int)gUnknown_083ECD16[i][eSlotMachine->unk01]) -// { -// break; -// } -// } -// return i; -//} +extern const u8 gUnknown_083ECD16[][3]; + +#ifdef NONMATCHING +static u8 sub_8102578(void) +{ + s16 i; + + for (i = 0; i < 3; i++) + { + if ((Random() & 0xff) <= gUnknown_083ECD16[i][eSlotMachine->unk01]) + { + break; + } + } + return i; +} +#else +static __attribute__((naked)) u8 sub_8102578(void) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tmovs r5, 0\n" + "\tldr r6, =gUnknown_083ECD16\n" + "_0810257E:\n" + "\tbl Random\n" + "\tmovs r2, 0xFF\n" + "\tldr r3, =gSharedMem\n" + "\tlsls r1, r5, 16\n" + "\tasrs r4, r1, 16\n" + "\tlsls r1, r4, 1\n" + "\tadds r1, r4\n" + "\tlsls r1, 1\n" + "\tldrb r3, [r3, 0x1]\n" + "\tadds r1, r3\n" + "\tadds r1, r6\n" + "\tldrb r1, [r1]\n" + "\tands r2, r0\n" + "\tcmp r1, r2\n" + "\tbgt _081025AA\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x2\n" + "\tble _0810257E\n" + "_081025AA:\n" + "\tlsls r0, r5, 24\n" + "\tlsrs r0, 24\n" + "\tpop {r4-r6}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "\t.pool"); +} +#endif asm(".section .text_a"); -- cgit v1.2.3 From af86226a5b15ccf1d7d1fea2dc96ff6bba0dc5fc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Dec 2017 19:51:07 -0500 Subject: sub_81025BC and matching sub_8102578 --- src/field/slot_machine.c | 75 +++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index f6d58e592..08506a59f 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -874,60 +874,57 @@ static bool8 sub_8102540(void) return FALSE; } -extern const u8 gUnknown_083ECD16[][3]; +extern const u8 gUnknown_083ECD16[][6]; -#ifdef NONMATCHING static u8 sub_8102578(void) { s16 i; for (i = 0; i < 3; i++) { - if ((Random() & 0xff) <= gUnknown_083ECD16[i][eSlotMachine->unk01]) + s16 rval = Random() & 0xff; + s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01]; + if (value > rval) { break; } } return i; } -#else -static __attribute__((naked)) u8 sub_8102578(void) + +extern const u8 gUnknown_083ECD28[][6]; + +u8 sub_81025BC(void) { - asm_unified("\tpush {r4-r6,lr}\n" - "\tmovs r5, 0\n" - "\tldr r6, =gUnknown_083ECD16\n" - "_0810257E:\n" - "\tbl Random\n" - "\tmovs r2, 0xFF\n" - "\tldr r3, =gSharedMem\n" - "\tlsls r1, r5, 16\n" - "\tasrs r4, r1, 16\n" - "\tlsls r1, r4, 1\n" - "\tadds r1, r4\n" - "\tlsls r1, 1\n" - "\tldrb r3, [r3, 0x1]\n" - "\tadds r1, r3\n" - "\tadds r1, r6\n" - "\tldrb r1, [r1]\n" - "\tands r2, r0\n" - "\tcmp r1, r2\n" - "\tbgt _081025AA\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r5, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x2\n" - "\tble _0810257E\n" - "_081025AA:\n" - "\tlsls r0, r5, 24\n" - "\tlsrs r0, 24\n" - "\tpop {r4-r6}\n" - "\tpop {r1}\n" - "\tbx r1\n" - "\t.align 2, 0\n" - "\t.pool"); + s16 i; + + for (i = 0; i < 5; i++) + { + s16 rval = Random() & 0xff; + s16 r3 = gUnknown_083ECD28[i][eSlotMachine->unk01]; + if (i == 0 && eSlotMachine->unk03 == 1) + { + r3 += 10; + if (r3 > 0x100) + { + r3 = 0x100; + } + } + else if (i == 4 && eSlotMachine->unk03 == 1) + { + r3 -= 10; + if (r3 < 0) + { + r3 = 0; + } + } + if (r3 > rval) + { + break; + } + } + return i; } -#endif asm(".section .text_a"); -- cgit v1.2.3 From 9041e039a728f4d2cb7c4938eb5585441965952f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Dec 2017 20:21:03 -0500 Subject: through sub_8102680 --- src/field/slot_machine.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 08506a59f..cc8c28654 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -926,6 +926,40 @@ u8 sub_81025BC(void) return i; } +extern const u8 gUnknown_083ECDAC[][17]; +extern const u8 gUnknown_083ECD46[][17]; + +u8 sub_810264C(u8 a0) +{ + if (eSlotMachine->unk03 == 0) + { + return gUnknown_083ECD46[a0][eSlotMachine->unk02]; + } + return gUnknown_083ECDAC[a0][eSlotMachine->unk02]; +} + +void sub_8102680(void) +{ + u8 rval; + s16 i; + + eSlotMachine->unk05 = 0; + rval = Random(); + if (rval < sub_810264C(0)) + { + return; + } + for (i = 5; i > 0; i--) + { + rval = Random(); + if (rval < sub_810264C(i)) + { + break; + } + } + eSlotMachine->unk05 = i; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); @@ -957,7 +991,6 @@ void sub_8104CAC(u8 arg0) { #endif } } - asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From b66b2e49bea686c71b62f0f31470aef09b50a15d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Dec 2017 21:12:07 -0500 Subject: through dp15_jump_random_unknown --- src/field/slot_machine.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index cc8c28654..be6c8746b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -960,6 +960,57 @@ void sub_8102680(void) eSlotMachine->unk05 = i; } +extern const u16 gUnknown_083ECE12[]; + +bool8 sub_81026DC(u16 a0) +{ + u16 rval = Random() & 0xff; + if (rval < gUnknown_083ECE12[a0]) + { + return TRUE; + } + return FALSE; +} + +extern const u16 gUnknown_083ECE1C[][2]; +extern const u16 gUnknown_083ECE30[]; + +u16 dp15_jump_random_unknown(void) +{ + u8 r4 = 0; + u8 rval; + u8 value; + if (eSlotMachine->unk10 >= 300) + { + r4 = 4; + } + else if (eSlotMachine->unk10 >= 250) + { + r4 = 3; + } + else if (eSlotMachine->unk10 >= 200) + { + r4 = 2; + } + else if (eSlotMachine->unk10 >= 150) + { + r4 = 1; + } + rval = Random() % 100; + value = gUnknown_083ECE1C[r4][0]; + if (rval < value) + { + return 4; + } + rval = Random() % 100; + value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B]; + if (rval < value) + { + return 2; + } + return 8; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 482db3566086318c27d1accbe89a96e2f695de5b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 23 Dec 2017 21:33:46 -0500 Subject: sub_81027D0 --- src/field/slot_machine.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index be6c8746b..2e47317a5 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -86,10 +86,16 @@ static void sub_8102484(void); static void sub_81024F0(void); static bool8 sub_8102540(void); static u8 sub_8102578(void); -u8 sub_81025BC(void); -void sub_81027A0(void); +u16 dp15_jump_random_unknown(void); +static u8 sub_81025BC(void); +static void sub_81027A0(void); +void sub_81027D0(void); +void sub_8102840(void); +void sub_810290C(void); +u8 sub_81029D4(u8 a0, u8 a1, u8 a2); void sub_8102A24(void); bool8 sub_8102A44(void); +u8 sub_8102BA4(u8 a0, u8 a1); void sub_8102DA8(void); void sub_8102DEC(u8 a0); void sub_8102E1C(u8 a0); @@ -98,6 +104,7 @@ void sub_8103C14(u8 a0); void sub_8103D50(u8 a0); void sub_8103D8C(u8 a0); void sub_8103DC8(void); +void sub_8103E04(u8 a0); void sub_8103F70(void); bool8 sub_8103FA0(void); void sub_8104048(void); @@ -117,7 +124,6 @@ void sub_81050C4(void); void sub_81063C0(void); static void sub_8106448(void); void sub_81064B8(void); -u16 dp15_jump_random_unknown(void); static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { sub_8101D5C, @@ -894,7 +900,7 @@ static u8 sub_8102578(void) extern const u8 gUnknown_083ECD28[][6]; -u8 sub_81025BC(void) +static u8 sub_81025BC(void) { s16 i; @@ -1011,6 +1017,34 @@ u16 dp15_jump_random_unknown(void) return 8; } +static void sub_81027A0(void) +{ + eSlotMachine->unk08 = 0; + sub_81027D0(); + if (eSlotMachine->bet > 1) + { + sub_8102840(); + } + if (eSlotMachine->bet > 2) + { + sub_810290C(); + } +} + +extern const u16 gUnknown_083ECE6C[]; +extern const u16 gUnknown_083ECE5A[]; + +void sub_81027D0(void) +{ + u8 payout = sub_81029D4(sub_8102BA4(0, 2), sub_8102BA4(1, 2), sub_8102BA4(2, 2)); + if (payout != 9) + { + eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; + eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + sub_8103E04(0); + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 64c3afb438eb712cca11a374d0025bf3492ccb82 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 24 Dec 2017 20:48:44 -0500 Subject: through sub_810290C --- src/field/slot_machine.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 2e47317a5..0a1ab8bb1 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1036,7 +1036,12 @@ extern const u16 gUnknown_083ECE5A[]; void sub_81027D0(void) { - u8 payout = sub_81029D4(sub_8102BA4(0, 2), sub_8102BA4(1, 2), sub_8102BA4(2, 2)); + u8 c1, c2, c3, payout; + + c1 = sub_8102BA4(0, 2); + c2 = sub_8102BA4(1, 2); + c3 = sub_8102BA4(2, 2); + payout = sub_81029D4(c1, c2, c3); if (payout != 9) { eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; @@ -1045,6 +1050,72 @@ void sub_81027D0(void) } } +void sub_8102840(void) +{ + u8 c1, c2, c3, payout; + + c1 = sub_8102BA4(0, 1); + c2 = sub_8102BA4(1, 1); + c3 = sub_8102BA4(2, 1); + payout = sub_81029D4(c1, c2, c3); + if (payout != 9) + { + if (payout == 0) + { + payout = 1; + } + eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; + eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + sub_8103E04(1); + } + c1 = sub_8102BA4(0, 3); + c2 = sub_8102BA4(1, 3); + c3 = sub_8102BA4(2, 3); + payout = sub_81029D4(c1, c2, c3); + if (payout != 9) + { + if (payout == 0) + { + payout = 1; + } + eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; + eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + sub_8103E04(2); + } +} + +void sub_810290C(void) +{ + u8 c1, c2, c3, payout; + + c1 = sub_8102BA4(0, 1); + c2 = sub_8102BA4(1, 2); + c3 = sub_8102BA4(2, 3); + payout = sub_81029D4(c1, c2, c3); + if (payout != 9) + { + if (payout != 0) + { + eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; + eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + } + sub_8103E04(3); + } + c1 = sub_8102BA4(0, 3); + c2 = sub_8102BA4(1, 2); + c3 = sub_8102BA4(2, 1); + payout = sub_81029D4(c1, c2, c3); + if (payout != 9) + { + if (payout != 0) + { + eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; + eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + } + sub_8103E04(4); + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 7d311d0f747dc5c7c194f436d1b90181bee3cc66 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 24 Dec 2017 21:42:08 -0500 Subject: through sub_8102BA4 --- src/field/slot_machine.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 0a1ab8bb1..bd259129d 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -95,7 +95,7 @@ void sub_810290C(void); u8 sub_81029D4(u8 a0, u8 a1, u8 a2); void sub_8102A24(void); bool8 sub_8102A44(void); -u8 sub_8102BA4(u8 a0, u8 a1); +u8 sub_8102BA4(u8 a0, s16 a1); void sub_8102DA8(void); void sub_8102DEC(u8 a0); void sub_8102E1C(u8 a0); @@ -105,6 +105,8 @@ void sub_8103D50(u8 a0); void sub_8103D8C(u8 a0); void sub_8103DC8(void); void sub_8103E04(u8 a0); +bool8 sub_8103E38(void); +bool8 sub_8103E7C(void); void sub_8103F70(void); bool8 sub_8103FA0(void); void sub_8104048(void); @@ -1116,6 +1118,123 @@ void sub_810290C(void) } } +extern const u8 gUnknown_083ECE52[]; + +u8 sub_81029D4(u8 c1, u8 c2, u8 c3) +{ + if (c1 == c2 && c1 == c3) + { + return gUnknown_083ECE52[c1]; + } + if (c1 == 0 && c2 == 0 && c3 == 1) + { + return 6; + } + if (c1 == 1 && c2 == 1 && c3 == 0) + { + return 6; + } + if (c1 == 4) + { + return 0; + } + return 9; +} + +void sub_8102A64(u8 taskId); + +void sub_8102A24(void) +{ + sub_8102A64(CreateTask(sub_8102A64, 4)); +} + +bool8 sub_8102A44(void) +{ + if (FindTaskIdByFunc(sub_8102A64) == 0xff) + { + return TRUE; + } + return FALSE; +} + +extern bool8 (*const gUnknown_083ECB20[])(struct Task *task); + +void sub_8102A64(u8 taskId) +{ + while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId)); +} + +bool8 sub_8102A9C(struct Task *task) +{ + if (sub_8103E38()) + { + task->data[0]++; + if (eSlotMachine->unk0E == 0) + { + task->data[0] = 2; + return TRUE; + } + } + return FALSE; +} + +bool8 sub_8102AD0(struct Task *task) +{ + if (!task->data[1]--) + { + if (IsFanfareTaskInactive()) + { + PlaySE(SE_PIN); + } + eSlotMachine->unk0E--; + if (eSlotMachine->coins < 9999) + { + eSlotMachine->coins++; + } + task->data[1] = 8; + if (gMain.heldKeys & A_BUTTON) + { + task->data[1] = 4; + } + } + if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON) + { + PlaySE(SE_PIN); + eSlotMachine->coins += eSlotMachine->unk0E; + if (eSlotMachine->coins > 9999) + { + eSlotMachine->coins = 9999; + } + eSlotMachine->unk0E = 0; + } + if (eSlotMachine->unk0E == 0) + { + task->data[0]++; + } + return FALSE; +} + +bool8 sub_8102B80(struct Task *task) +{ + if (sub_8103E7C()) + { + DestroyTask(FindTaskIdByFunc(sub_8102A64)); + } + return FALSE; +} + +extern const u8 gUnknown_083ECCB2[][21]; + +u8 sub_8102BA4(u8 x, s16 y) +{ + s16 offset = (eSlotMachine->unk28[x] + y) % 21; + if (offset < 0) + { + offset += 21; + } + return gUnknown_083ECCB2[x][offset]; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From ef9b0680653a5291b168b22b8ed0d273b6b1febe Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 25 Dec 2017 20:57:12 -0600 Subject: move easy_chat.c out of field/ --- src/easy_chat.c | 445 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/field/easy_chat.c | 445 -------------------------------------------------- 2 files changed, 445 insertions(+), 445 deletions(-) create mode 100644 src/easy_chat.c delete mode 100644 src/field/easy_chat.c (limited to 'src') diff --git a/src/easy_chat.c b/src/easy_chat.c new file mode 100644 index 000000000..1dce5863e --- /dev/null +++ b/src/easy_chat.c @@ -0,0 +1,445 @@ +#include "global.h" +#include "easy_chat.h" +#include "constants/easy_chat.h" +#include "data2.h" +#include "event_data.h" +#include "field_message_box.h" +#include "pokedex.h" +#include "random.h" +#include "string_util.h" +#include "strings.h" +#include "strings2.h" +#include "text.h" + +static bool8 sub_80EB680(u16 *, u16, u16, u16); +static u16 sub_80EB9D8(void); +static u16 sub_80EB960(void); + +extern void *gEasyChatGroupWords[]; +extern const u8 gEasyChatGroupSizes[]; + +extern u16 gSpecialVar_0x8004; + +IWRAM_DATA u8 gUnknown_03000740; + +// returns the end of the destination buffer text +u8 *EasyChat_GetWordText(u8 *dst, u16 word) +{ + u16 group; + u16 wordIndex; + u8 *src; + u16 i; + + if (sub_80EB37C(word)) + return StringCopy(dst, gOtherText_ThreeQuestions); + + if (word == 0xFFFF) + { + *dst = EOS; + return dst; + } + else + { + group = EC_GROUP(word); + wordIndex = EC_INDEX(word); + switch (group) + { + case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_2: // 21 + dst = StringCopy(dst, gSpeciesNames[wordIndex]); + break; + case EC_GROUP_MOVE_1: // 18 + case EC_GROUP_MOVE_2: // 19 + dst = StringCopy(dst, gMoveNames[wordIndex]); + break; + default: + src = gEasyChatGroupWords[group]; + for (i = wordIndex - 1; i != 0xFFFF; i--) + { + while (*src++ != EOS) + ; + } + dst = StringCopy(dst, src); + break; + } + *dst = EOS; + return dst; + } +} + +u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ + u16 i; + u16 n; + + const u16 i1 = arg2 - 1; + + for (i = 0; i < arg3; i++) + { + u16 word; + + for (n = 0; n < i1; n++) + { + dst = EasyChat_GetWordText(dst, words[0]); + + if (words[0] != 0xFFFF) + { + dst[0] = CHAR_SPACE; + dst++; + } + + words++; + } + + word = words[0]; + words++; + dst = EasyChat_GetWordText(dst, word); + + dst[0] = CHAR_NEWLINE; + dst++; + } + + dst--; + dst[0] = EOS; + + return dst; +} + +u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ + u16 i; + u16 n; + + const u16 i1 = arg2 - 1; + + for (i = 0; i < arg3; i++) + { + u16 word; + + for (n = 0; n < i1; n++) + { + dst = EasyChat_GetWordText(dst, words[0]); + + if (words[0] != 0xFFFF) + { + dst[0] = CHAR_SPACE; + dst++; + } + + words++; + } + + word = words[0]; + words++; + dst = EasyChat_GetWordText(dst, word); + + // Only difference with ConvertEasyChatWordsToString + dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; + dst++; + } + + dst--; + dst[0] = EOS; + + return dst; +} + + +u16 unref_sub_80EB5E0(u16 arg0) +{ + const u8 *chars; + u16 i; + u16 length; + int group, word; + + + if (arg0 == 0xFFFF) + return 0; + + group = EC_GROUP(arg0); + word = EC_INDEX(arg0); + switch (group) + { + case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_2: // 21 + chars = gSpeciesNames[word]; + break; + case EC_GROUP_MOVE_1: // 18 + case EC_GROUP_MOVE_2: // 19 + chars = gMoveNames[word]; + break; + default: + chars = gEasyChatGroupWords[group]; + for (i = word - 1; i != 0xFFFF; i--) + { + while (*chars++ != EOS) + ; + } + break; + } + + length = 0; + while (*chars != EOS) + { + chars++; + length++; + } + + return length; +} + +static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) +{ + return FALSE; +} + +void unref_sub_80EB684(u8 arg0, u16 arg1) +{ + u16 *ptr; + u16 c; + + // FIXME: find actual tv shows used + switch (arg0) + { + case 5: + c = 6; + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); + break; + case 7: + c = 2; + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); + break; + case 8: + c = 1; + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); + break; + default: + return; + } + + c -= 1; + while (c != 0xFFFF) + { + *ptr = -1; + ptr++; + c -= 1; + } +} + +void sub_80EB6FC(u16 *arg0, u16 arg1) +{ + u16 i; + + for (i = arg1 - 1; i != 0xFFFF; i--) + { + *arg0 = 0xFFFF; + arg0++; + } + +} + +u16 sub_80EB72C(u16 group) +{ + u16 local1 = Random() % gEasyChatGroupSizes[group]; + + if (group == EC_GROUP_POKEMON + || group == EC_GROUP_POKEMON_2 + || group == EC_GROUP_MOVE_1 + || group == EC_GROUP_MOVE_2) + { + local1 = ((u16 *) gEasyChatGroupWords[group])[local1]; + } + + return ((group & 0x7F) << 9) | (local1 & 0x1FF); +} + +u16 sub_80EB784(u16 group) +{ + if (!sub_80EAD7C(group)) + return -1; + + if (group != EC_GROUP_POKEMON) + { + if (group == EC_GROUP_TRENDY_SAYING) + return sub_80EB960(); + } + else + { + return sub_80EB9D8(); + } + + return sub_80EB72C(group); +} + +void sub_80EB7C4(void) +{ + u16 *words; + u16 arg1, arg2; + + switch (gSpecialVar_0x8004) + { + case 0: + words = gSaveBlock1.easyChats.unk2B1C; + arg1 = 2; + arg2 = 2; + break; + case 1: + words = gSaveBlock1.easyChats.unk2B28; + if (sub_80EB680(gSaveBlock1.easyChats.unk2B28, 3, 2, 20)) + { + arg1 = 2; + arg2 = 3; + } + else + { + arg1 = 3; + arg2 = 2; + } + break; + case 2: + words = gSaveBlock1.easyChats.unk2B34; + arg1 = 3; + arg2 = 2; + break; + case 3: + words = gSaveBlock1.easyChats.unk2B40; + arg1 = 3; + arg2 = 2; + break; + default: + return; + } + + ConvertEasyChatWordsToString(gStringVar4, words, arg1, arg2); + ShowFieldAutoScrollMessage(gStringVar4); +} + +void sub_80EB83C(void) +{ + u16 group, local2; + + if (Random() & 1) + group = EC_GROUP_HOBBIES; + else + group = EC_GROUP_LIFESTYLE; + + local2 = sub_80EB784(group); + EasyChat_GetWordText(gStringVar2, local2); +} + +u8 sub_80EB868(u8 arg0) +{ + int offset; + int index; + + index = arg0 / 8; + offset = arg0 % 8; + return (gSaveBlock1.unk2D8C[index] >> offset) & 1; +} + +void sub_80EB890(u8 arg0) +{ + int offset; + int index; + + if (arg0 < 33) + { + index = arg0 / 8; + offset = arg0 % 8; + gSaveBlock1.unk2D8C[index] |= 1 << offset; + } +} + +u8 sub_80EB8C0(void) +{ + u8 i, count; + + for (i = 0, count = 0; i < 33; i++) + { + if (sub_80EB868(i)) + count++; + } + return count; +} + +u16 sub_80EB8EC(void) +{ + u16 i; + u16 local1, local2; + + local1 = sub_80EB8C0(); + if (local1 == 33) + return -1; + + local2 = Random() % (33 - local1); + for (i = 0; i < 33; i++) + { + if (sub_80EB868(i) == 0) + { + if (local2 == 0) + { + sub_80EB890(i); + return (i & 0x1FF) | 0x2800; + } + local2--; + } + } + return -1; +} + +static u16 sub_80EB960(void) +{ + u16 i; + u16 local1; + + local1 = sub_80EB8C0(); + if (local1 == 0) + return -1; + + local1 = Random() % local1; + for (i = 0; i < 33; i++) + { + if (sub_80EB868(i)) + { + if (local1 == 0) + return (i & 0x1FF) | 0x2800; + local1--; + } + } + + return -1; +} + +u8 sub_80EB9C8(void) +{ + return IsNationalPokedexEnabled(); +} + +static u16 sub_80EB9D8(void) +{ + u16 *speciesList; + u16 local1; + u16 i; + + local1 = sub_80EAE88(0); + + if (local1 == 0) + return -1; + + local1 = Random() % local1; + speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; + for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) + { + const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); + const u8 local2 = GetSetPokedexFlag(dexNum, 0); + + if (local2) + { + if (local1 == 0) + return *speciesList & 0x1FF; + local1--; + } + speciesList++; + } + return -1; +} diff --git a/src/field/easy_chat.c b/src/field/easy_chat.c deleted file mode 100644 index 1dce5863e..000000000 --- a/src/field/easy_chat.c +++ /dev/null @@ -1,445 +0,0 @@ -#include "global.h" -#include "easy_chat.h" -#include "constants/easy_chat.h" -#include "data2.h" -#include "event_data.h" -#include "field_message_box.h" -#include "pokedex.h" -#include "random.h" -#include "string_util.h" -#include "strings.h" -#include "strings2.h" -#include "text.h" - -static bool8 sub_80EB680(u16 *, u16, u16, u16); -static u16 sub_80EB9D8(void); -static u16 sub_80EB960(void); - -extern void *gEasyChatGroupWords[]; -extern const u8 gEasyChatGroupSizes[]; - -extern u16 gSpecialVar_0x8004; - -IWRAM_DATA u8 gUnknown_03000740; - -// returns the end of the destination buffer text -u8 *EasyChat_GetWordText(u8 *dst, u16 word) -{ - u16 group; - u16 wordIndex; - u8 *src; - u16 i; - - if (sub_80EB37C(word)) - return StringCopy(dst, gOtherText_ThreeQuestions); - - if (word == 0xFFFF) - { - *dst = EOS; - return dst; - } - else - { - group = EC_GROUP(word); - wordIndex = EC_INDEX(word); - switch (group) - { - case EC_GROUP_POKEMON: // 0 - case EC_GROUP_POKEMON_2: // 21 - dst = StringCopy(dst, gSpeciesNames[wordIndex]); - break; - case EC_GROUP_MOVE_1: // 18 - case EC_GROUP_MOVE_2: // 19 - dst = StringCopy(dst, gMoveNames[wordIndex]); - break; - default: - src = gEasyChatGroupWords[group]; - for (i = wordIndex - 1; i != 0xFFFF; i--) - { - while (*src++ != EOS) - ; - } - dst = StringCopy(dst, src); - break; - } - *dst = EOS; - return dst; - } -} - -u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) -{ - u16 i; - u16 n; - - const u16 i1 = arg2 - 1; - - for (i = 0; i < arg3; i++) - { - u16 word; - - for (n = 0; n < i1; n++) - { - dst = EasyChat_GetWordText(dst, words[0]); - - if (words[0] != 0xFFFF) - { - dst[0] = CHAR_SPACE; - dst++; - } - - words++; - } - - word = words[0]; - words++; - dst = EasyChat_GetWordText(dst, word); - - dst[0] = CHAR_NEWLINE; - dst++; - } - - dst--; - dst[0] = EOS; - - return dst; -} - -u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) -{ - u16 i; - u16 n; - - const u16 i1 = arg2 - 1; - - for (i = 0; i < arg3; i++) - { - u16 word; - - for (n = 0; n < i1; n++) - { - dst = EasyChat_GetWordText(dst, words[0]); - - if (words[0] != 0xFFFF) - { - dst[0] = CHAR_SPACE; - dst++; - } - - words++; - } - - word = words[0]; - words++; - dst = EasyChat_GetWordText(dst, word); - - // Only difference with ConvertEasyChatWordsToString - dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; - dst++; - } - - dst--; - dst[0] = EOS; - - return dst; -} - - -u16 unref_sub_80EB5E0(u16 arg0) -{ - const u8 *chars; - u16 i; - u16 length; - int group, word; - - - if (arg0 == 0xFFFF) - return 0; - - group = EC_GROUP(arg0); - word = EC_INDEX(arg0); - switch (group) - { - case EC_GROUP_POKEMON: // 0 - case EC_GROUP_POKEMON_2: // 21 - chars = gSpeciesNames[word]; - break; - case EC_GROUP_MOVE_1: // 18 - case EC_GROUP_MOVE_2: // 19 - chars = gMoveNames[word]; - break; - default: - chars = gEasyChatGroupWords[group]; - for (i = word - 1; i != 0xFFFF; i--) - { - while (*chars++ != EOS) - ; - } - break; - } - - length = 0; - while (*chars != EOS) - { - chars++; - length++; - } - - return length; -} - -static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) -{ - return FALSE; -} - -void unref_sub_80EB684(u8 arg0, u16 arg1) -{ - u16 *ptr; - u16 c; - - // FIXME: find actual tv shows used - switch (arg0) - { - case 5: - c = 6; - ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); - break; - case 7: - c = 2; - ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); - break; - case 8: - c = 1; - ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); - break; - default: - return; - } - - c -= 1; - while (c != 0xFFFF) - { - *ptr = -1; - ptr++; - c -= 1; - } -} - -void sub_80EB6FC(u16 *arg0, u16 arg1) -{ - u16 i; - - for (i = arg1 - 1; i != 0xFFFF; i--) - { - *arg0 = 0xFFFF; - arg0++; - } - -} - -u16 sub_80EB72C(u16 group) -{ - u16 local1 = Random() % gEasyChatGroupSizes[group]; - - if (group == EC_GROUP_POKEMON - || group == EC_GROUP_POKEMON_2 - || group == EC_GROUP_MOVE_1 - || group == EC_GROUP_MOVE_2) - { - local1 = ((u16 *) gEasyChatGroupWords[group])[local1]; - } - - return ((group & 0x7F) << 9) | (local1 & 0x1FF); -} - -u16 sub_80EB784(u16 group) -{ - if (!sub_80EAD7C(group)) - return -1; - - if (group != EC_GROUP_POKEMON) - { - if (group == EC_GROUP_TRENDY_SAYING) - return sub_80EB960(); - } - else - { - return sub_80EB9D8(); - } - - return sub_80EB72C(group); -} - -void sub_80EB7C4(void) -{ - u16 *words; - u16 arg1, arg2; - - switch (gSpecialVar_0x8004) - { - case 0: - words = gSaveBlock1.easyChats.unk2B1C; - arg1 = 2; - arg2 = 2; - break; - case 1: - words = gSaveBlock1.easyChats.unk2B28; - if (sub_80EB680(gSaveBlock1.easyChats.unk2B28, 3, 2, 20)) - { - arg1 = 2; - arg2 = 3; - } - else - { - arg1 = 3; - arg2 = 2; - } - break; - case 2: - words = gSaveBlock1.easyChats.unk2B34; - arg1 = 3; - arg2 = 2; - break; - case 3: - words = gSaveBlock1.easyChats.unk2B40; - arg1 = 3; - arg2 = 2; - break; - default: - return; - } - - ConvertEasyChatWordsToString(gStringVar4, words, arg1, arg2); - ShowFieldAutoScrollMessage(gStringVar4); -} - -void sub_80EB83C(void) -{ - u16 group, local2; - - if (Random() & 1) - group = EC_GROUP_HOBBIES; - else - group = EC_GROUP_LIFESTYLE; - - local2 = sub_80EB784(group); - EasyChat_GetWordText(gStringVar2, local2); -} - -u8 sub_80EB868(u8 arg0) -{ - int offset; - int index; - - index = arg0 / 8; - offset = arg0 % 8; - return (gSaveBlock1.unk2D8C[index] >> offset) & 1; -} - -void sub_80EB890(u8 arg0) -{ - int offset; - int index; - - if (arg0 < 33) - { - index = arg0 / 8; - offset = arg0 % 8; - gSaveBlock1.unk2D8C[index] |= 1 << offset; - } -} - -u8 sub_80EB8C0(void) -{ - u8 i, count; - - for (i = 0, count = 0; i < 33; i++) - { - if (sub_80EB868(i)) - count++; - } - return count; -} - -u16 sub_80EB8EC(void) -{ - u16 i; - u16 local1, local2; - - local1 = sub_80EB8C0(); - if (local1 == 33) - return -1; - - local2 = Random() % (33 - local1); - for (i = 0; i < 33; i++) - { - if (sub_80EB868(i) == 0) - { - if (local2 == 0) - { - sub_80EB890(i); - return (i & 0x1FF) | 0x2800; - } - local2--; - } - } - return -1; -} - -static u16 sub_80EB960(void) -{ - u16 i; - u16 local1; - - local1 = sub_80EB8C0(); - if (local1 == 0) - return -1; - - local1 = Random() % local1; - for (i = 0; i < 33; i++) - { - if (sub_80EB868(i)) - { - if (local1 == 0) - return (i & 0x1FF) | 0x2800; - local1--; - } - } - - return -1; -} - -u8 sub_80EB9C8(void) -{ - return IsNationalPokedexEnabled(); -} - -static u16 sub_80EB9D8(void) -{ - u16 *speciesList; - u16 local1; - u16 i; - - local1 = sub_80EAE88(0); - - if (local1 == 0) - return -1; - - local1 = Random() % local1; - speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; - for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) - { - const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = GetSetPokedexFlag(dexNum, 0); - - if (local2) - { - if (local1 == 0) - return *speciesList & 0x1FF; - local1--; - } - speciesList++; - } - return -1; -} -- cgit v1.2.3 From 22d0b82ee547a46c4673cf8c9039c68b2a6d7f0b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 Dec 2017 19:35:16 -0500 Subject: sub_8102BF8 --- src/field/slot_machine.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index bd259129d..9e3d70727 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1235,6 +1235,14 @@ u8 sub_8102BA4(u8 x, s16 y) return gUnknown_083ECCB2[x][offset]; } +u8 sub_8102BF8(u8 x, s16 y) +{ + s16 r6 = 0; + if ((eSlotMachine->unk1C[x]) % 24) + r6 = -1; + return sub_8102BA4(x, y + r6); +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From a3b25543b3d85a5f88284752367abd6ed713f82b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 Dec 2017 20:37:55 -0500 Subject: through sub_8102DEC --- src/field/slot_machine.c | 100 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 84 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9e3d70727..6f1e7610a 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -89,17 +89,19 @@ static u8 sub_8102578(void); u16 dp15_jump_random_unknown(void); static u8 sub_81025BC(void); static void sub_81027A0(void); -void sub_81027D0(void); -void sub_8102840(void); -void sub_810290C(void); -u8 sub_81029D4(u8 a0, u8 a1, u8 a2); -void sub_8102A24(void); +static void sub_81027D0(void); +static void sub_8102840(void); +static void sub_810290C(void); +static u8 sub_81029D4(u8 c1, u8 c2, u8 c3); +static void sub_8102A24(void); +static void sub_8102A64(u8 taskId); bool8 sub_8102A44(void); -u8 sub_8102BA4(u8 a0, s16 a1); -void sub_8102DA8(void); -void sub_8102DEC(u8 a0); +u8 sub_8102BA4(u8 x, s16 y); +static void sub_8102DA8(void); +static void sub_8102DEC(u8 a0); void sub_8102E1C(u8 a0); bool8 sub_8102E40(u8 a0); +void sub_8102E68(u8 taskId); void sub_8103C14(u8 a0); void sub_8103D50(u8 a0); void sub_8103D8C(u8 a0); @@ -1036,7 +1038,7 @@ static void sub_81027A0(void) extern const u16 gUnknown_083ECE6C[]; extern const u16 gUnknown_083ECE5A[]; -void sub_81027D0(void) +static void sub_81027D0(void) { u8 c1, c2, c3, payout; @@ -1052,7 +1054,7 @@ void sub_81027D0(void) } } -void sub_8102840(void) +static void sub_8102840(void) { u8 c1, c2, c3, payout; @@ -1086,7 +1088,7 @@ void sub_8102840(void) } } -void sub_810290C(void) +static void sub_810290C(void) { u8 c1, c2, c3, payout; @@ -1120,7 +1122,7 @@ void sub_810290C(void) extern const u8 gUnknown_083ECE52[]; -u8 sub_81029D4(u8 c1, u8 c2, u8 c3) +static u8 sub_81029D4(u8 c1, u8 c2, u8 c3) { if (c1 == c2 && c1 == c3) { @@ -1141,9 +1143,7 @@ u8 sub_81029D4(u8 c1, u8 c2, u8 c3) return 9; } -void sub_8102A64(u8 taskId); - -void sub_8102A24(void) +static void sub_8102A24(void) { sub_8102A64(CreateTask(sub_8102A64, 4)); } @@ -1159,7 +1159,7 @@ bool8 sub_8102A44(void) extern bool8 (*const gUnknown_083ECB20[])(struct Task *task); -void sub_8102A64(u8 taskId) +static void sub_8102A64(u8 taskId) { while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId)); } @@ -1243,6 +1243,74 @@ u8 sub_8102BF8(u8 x, s16 y) return sub_8102BA4(x, y + r6); } +extern const u8 gUnknown_083ECCF1[]; + +u8 sub_8102C48(s16 a0) +{ + s16 r1 = (eSlotMachine->unk16 + a0) % 6; + if (r1 < 0) + r1 += 6; + return gUnknown_083ECCF1[r1]; +} + +void sub_8102C84(u8 a0, s16 a1) +{ + eSlotMachine->unk1C[a0] += a1; + eSlotMachine->unk1C[a0] %= 504; + eSlotMachine->unk28[a0] = 21 - eSlotMachine->unk1C[a0] / 24; +} + +s16 sub_8102CCC(u8 a0, s16 a1) +{ + s16 r1 = eSlotMachine->unk1C[a0] % 24; + if (r1 != 0) + { + if (r1 < a1) + a1 = r1; + sub_8102C84(a0, a1); + r1 = eSlotMachine->unk1C[a0] % 24; + } + return r1; +} + +void sub_8102D28(s16 a0) +{ + eSlotMachine->unk14 += a0; + eSlotMachine->unk14 %= 120; + eSlotMachine->unk16 = 6 - eSlotMachine->unk14 / 20; +} + +s16 sub_8102D5C(s16 a0) +{ + s16 r1 = eSlotMachine->unk14 % 20; + if (r1 != 0) + { + if (r1 < a0) + a0 = r1; + sub_8102D28(a0); + r1 = eSlotMachine->unk14 % 20; + } + return r1; +} + +static void sub_8102DA8(void) +{ + u8 i; + for (i = 0; i < 3; i++) + { + u8 taskId = CreateTask(sub_8102E68, 2); + gTasks[taskId].data[15] = i; + eSlotMachine->unk3A[i] = taskId; + sub_8102E68(taskId); + } +} + +static void sub_8102DEC(u8 a0) +{ + gTasks[eSlotMachine->unk3A[a0]].data[0] = 1; + gTasks[eSlotMachine->unk3A[a0]].data[14] = 1; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 3a51ad2c81b0c479c2621e81ae13d28f3f90fc48 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 Dec 2017 20:48:28 -0500 Subject: through sub_8102EA4 --- src/field/slot_machine.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 6f1e7610a..55bbaef3a 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -99,7 +99,7 @@ bool8 sub_8102A44(void); u8 sub_8102BA4(u8 x, s16 y); static void sub_8102DA8(void); static void sub_8102DEC(u8 a0); -void sub_8102E1C(u8 a0); +static void sub_8102E1C(u8 a0); bool8 sub_8102E40(u8 a0); void sub_8102E68(u8 taskId); void sub_8103C14(u8 a0); @@ -1311,6 +1311,34 @@ static void sub_8102DEC(u8 a0) gTasks[eSlotMachine->unk3A[a0]].data[14] = 1; } +static void sub_8102E1C(u8 a0) +{ + gTasks[eSlotMachine->unk3A[a0]].data[0] = 2; +} + +bool8 sub_8102E40(u8 a0) +{ + return gTasks[eSlotMachine->unk3A[a0]].data[14]; +} + +extern bool8 (*const gUnknown_083ECB2C[])(struct Task *task); + +void sub_8102E68(u8 taskId) +{ + while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId)); +} + +bool8 sub_8102EA0(struct Task *task) +{ + return FALSE; +} + +bool8 sub_8102EA4(struct Task *task) +{ + sub_8102C84(task->data[15], eSlotMachine->unk1A); + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From da62907ec54f400646416f38ef02bd7f03d5dbc4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 Dec 2017 21:25:47 -0500 Subject: through sub_8103008 --- src/field/slot_machine.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 55bbaef3a..96fa2e18b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1339,6 +1339,69 @@ bool8 sub_8102EA4(struct Task *task) return FALSE; } +extern bool8 (*const gUnknown_083ECB40[])(void); +extern void (*const gUnknown_083ECB4C[])(void); + +bool8 sub_8102EC0(struct Task *task) +{ + task->data[0]++; + eSlotMachine->unk34[task->data[15]] = 0; + eSlotMachine->unk2E[task->data[15]] = 0; + if (eSlotMachine->unk0A == 0 && (eSlotMachine->unk04 == 0 || eSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]())) + { + eSlotMachine->unk06 = 0; + gUnknown_083ECB4C[task->data[15]](); + } + task->data[1] = eSlotMachine->unk2E[task->data[15]]; + return TRUE; +} + +extern const u16 gUnknown_083ECB58[5]; // don't move this + +bool8 sub_8102F4C(struct Task *task) +{ + s16 r2; + u16 sp[5]; + memcpy(sp, gUnknown_083ECB58, sizeof gUnknown_083ECB58); + // u16 sp[] = {2, 4, 4, 4, 8}; + r2 = eSlotMachine->unk1C[task->data[15]] % 24; + if (r2 != 0) + { + r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A); + } + else if (eSlotMachine->unk2E[task->data[15]]) + { + eSlotMachine->unk2E[task->data[15]]--; + sub_8102C84(task->data[15], eSlotMachine->unk1A); + r2 = eSlotMachine->unk1C[task->data[15]] % 24; + } + if (r2 == 0 && eSlotMachine->unk2E[task->data[15]] == 0) + { + task->data[0]++; + task->data[1] = sp[task->data[1]]; + task->data[2] = 0; + } + return FALSE; +} + +bool8 sub_8103008(struct Task *task) +{ + eSlotMachine->unk22[task->data[15]] = task->data[1]; + task->data[1] = -task->data[1]; + task->data[2]++; + if ((task->data[2] & 0x3) == 0) + { + task->data[1] >>= 1; + } + if (task->data[1] == 0) + { + task->data[0] = 0; + task->data[14] = 0; + eSlotMachine->unk22[task->data[15]] = 0; + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From a161d7e816ecf99cae3bf8c690d665f04d2a9ecd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 26 Dec 2017 21:50:35 -0500 Subject: through sub_8103134 --- src/field/slot_machine.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 96fa2e18b..7fab44c30 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1402,6 +1402,49 @@ bool8 sub_8103008(struct Task *task) return FALSE; } +extern bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1); + +bool8 sub_810305C(void) +{ + u8 r3 = sub_810250C(eSlotMachine->unk04); + u8 r5 = r3; + if (eSlotMachine->unk04 & 0xc0) + { + r5 = 0; + r3 = 1; + } + return gUnknown_083ECB64[eSlotMachine->bet - 1](r5, r3); +} + +bool8 sub_81030A4(s16 a0, u8 a1, u8 a2) +{ + u8 r1 = sub_8102BF8(0, a0); + if (r1 == a1 || r1 == a2) + { + eSlotMachine->unk07 = r1; + return TRUE; + } + return FALSE; +} + +bool8 sub_81030E0(s16 a0) +{ + if (sub_8102BF8(0, 1 - a0) == 4 || sub_8102BF8(0, 2 - a0) == 4 || sub_8102BF8(0, 3 - a0) == 4) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8103134(void) +{ + if (eSlotMachine->unk04 & 0xc2) + { + return TRUE; + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 4bd55a4f027410a7caf50933d9b7e1da14ce73da Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 27 Dec 2017 22:01:52 -0500 Subject: through sub_81032E8 --- src/field/slot_machine.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 7fab44c30..469753726 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1445,6 +1445,90 @@ bool8 sub_8103134(void) return FALSE; } +bool8 sub_8103154(u8 a0, u8 a1) +{ + s16 i; + + for (i = 0; i < 5; i++) + { + if (sub_81030A4(2 - i, a0, a1)) + { + eSlotMachine->unk34[0] = 2; + eSlotMachine->unk2E[0] = i; + return TRUE; + } + } + return FALSE; +} + +bool8 sub_81031B4(u8 a0, u8 a1) +{ + s16 i; + bool8 r6 = sub_8103134(); + if (r6 || !sub_81030E0(0)) + { + for (i = 1; i < 4; i++) + { + if (sub_81030A4(i, a0, a1)) + { + eSlotMachine->unk34[0] = i; + eSlotMachine->unk2E[0] = 0; + return TRUE; + } + } + } + for (i = 1; i < 5; i++) + { + bool8 r7 = r6; + if (r7 || !sub_81030E0(i)) + { + if (sub_81030A4(1 - i, a0, a1)) + { + if (i == 1 && (r7 || !sub_81030E0(3))) + { + eSlotMachine->unk34[0] = 3; + eSlotMachine->unk2E[0] = 3; + return TRUE; + } + if (i < 4 && (r7 || !sub_81030E0(i + 1))) + { + eSlotMachine->unk34[0] = 2; + eSlotMachine->unk2E[0] = i + 1; + return TRUE; + } + eSlotMachine->unk34[0] = 1; + eSlotMachine->unk2E[0] = i; + return TRUE; + } + } + } + return FALSE; +} + +extern bool8 (*const gUnknown_083ECB70[])(void); + +bool8 sub_81032C0(void) +{ + return gUnknown_083ECB70[eSlotMachine->bet - 1](); +} + +bool8 sub_81032E8(void) +{ + s16 i; + s16 unk34_0 = eSlotMachine->unk34[0]; + + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(1, unk34_0 - i) == eSlotMachine->unk07) + { + eSlotMachine->unk34[1] = unk34_0; + eSlotMachine->unk2E[1] = i; + return TRUE; + } + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 57af95611d0a3cb0fda3ccebae725221ca5eac3e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 27 Dec 2017 22:14:54 -0500 Subject: through sub_810341C --- src/field/slot_machine.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 469753726..df6a6bd0b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1529,6 +1529,73 @@ bool8 sub_81032E8(void) return FALSE; } +bool8 sub_810333C(void) +{ + s16 i; + if (sub_81032E8()) + { + if (eSlotMachine->unk34[0] != 2 && eSlotMachine->unk2E[1] > 1 && eSlotMachine->unk2E[1] != 4) + { + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(1, 2 - i) == eSlotMachine->unk07) + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i; + break; + } + } + } + return TRUE; + } + if (eSlotMachine->unk34[0] != 2) + { + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(1, 2 - i) == eSlotMachine->unk07) + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i; + return TRUE; + } + } + } + return FALSE; +} + +extern bool8 (*const gUnknown_083ECB7C[])(u8 a0); + +bool8 sub_81033DC(void) +{ + u8 r3 = eSlotMachine->unk07; + if (eSlotMachine->unk04 & 0x40) + { + r3 = 0; + if (eSlotMachine->unk07 == 0) + { + r3 = 1; + } + } + return gUnknown_083ECB7C[eSlotMachine->bet - 1](r3); +} + +bool8 sub_810341C(u8 a0) +{ + s16 i; + s16 unk34_1 = eSlotMachine->unk34[1]; + + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(2, unk34_1 - i) == a0) + { + eSlotMachine->unk34[2] = unk34_1; + eSlotMachine->unk2E[2] = i; + return TRUE; + } + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From e3acf564701fe6bc77c92fc5268083e4adc10ed7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 27 Dec 2017 23:14:42 -0500 Subject: through sub_8103520 --- src/field/slot_machine.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index df6a6bd0b..612dcd49f 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1596,6 +1596,53 @@ bool8 sub_810341C(u8 a0) return FALSE; } +bool8 sub_810347C(u8 a0) +{ + s16 i; + s16 r8; + if (eSlotMachine->unk34[0] == eSlotMachine->unk34[1]) + { + return sub_810341C(a0); + } + r8 = 1; + if (eSlotMachine->unk34[0] == 1) + { + r8 = 3; + } + for (i = 0; i < 5; i++) + { + if (sub_8102BF8(2, r8 - i) == a0) + { + eSlotMachine->unk2E[2] = i; + eSlotMachine->unk34[2] = r8; + return TRUE; + } + } + return FALSE; +} + +void sub_81034F4(void) +{ + s16 i; + for (i = 0; sub_81030E0(i); i++); + eSlotMachine->unk2E[0] = i; +} + +bool8 sub_8103520(u8 *a0) +{ + if (*a0 == 0) + { + *a0 = 1; + return TRUE; + } + if (*a0 == 1) + { + *a0 = 0; + return TRUE; + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From d6f88aaae447dbc22ff5fa289343343e7034263b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 28 Dec 2017 02:47:41 -0500 Subject: fix for printf --- src/engine/main.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/engine/main.c b/src/engine/main.c index 11c540d07..e52551f72 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -83,6 +83,10 @@ static void WaitForVBlank(void); #define B_START_SELECT (B_BUTTON | START_BUTTON | SELECT_BUTTON) +#ifndef NOAGBPRN + #include // don't include if not needed. +#endif + void AgbMain() { RegisterRamReset(RESET_ALL); @@ -103,6 +107,7 @@ void AgbMain() // to print stuff from, as anything else declared is NOT authoritative. #ifndef NOAGBPRN AGBPrintInit(); + __mb_cur_max = 1; // fix for AGBPrintf #endif if (gFlashMemoryPresent != TRUE) -- cgit v1.2.3 From ae42fdd5f4de2a68ef8d3ec8dd8147a189089a1b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 28 Dec 2017 20:43:51 -0500 Subject: through sub_8103668 (nonmatching) --- src/field/slot_machine.c | 250 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 612dcd49f..9e5980446 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1643,6 +1643,256 @@ bool8 sub_8103520(u8 *a0) return FALSE; } +extern void (*gUnknown_083ECB88[])(void); + +void sub_8103540(void) +{ + gUnknown_083ECB88[eSlotMachine->bet - 1](); +} + +void sub_8103564(void) +{ + if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) + { + u8 sp0 = sub_8102BF8(0, 2 - eSlotMachine->unk2E[0]); + if (sub_8103520(&sp0)) + { + s16 i; + for (i = 0; i < 5; i++) + { + if (sp0 == sub_8102BF8(1, 2 - i)) + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i; + break; + } + } + } + } +} + +void j5_08111E84(void) +{ + if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) + { + u8 sp0 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + if (sub_8103520(&sp0)) + { + s16 i; + for (i = 0; i < 5; i++) + { + if (sp0 == sub_8102BF8(1, eSlotMachine->unk34[0] - i)) + { + eSlotMachine->unk34[1] = eSlotMachine->unk34[0]; + eSlotMachine->unk2E[1] = i; + break; + } + } + } + } +} + +#ifdef NONMATCHING // variable r6 is mistakenly plopped into r5, + // and variable i is mistakenly plopped into r6 +void sub_8103668(void) +{ + if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) + { + if (eSlotMachine->unk34[0] == 2) + { + j5_08111E84(); + } + else + { + u8 sp0 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + if (sub_8103520(&sp0)) + { + s16 i; + s16 r6 = 2; + if (eSlotMachine->unk34[0] == 3) + r6 = 3; + for (i = 0; i < 2; i++, r6--) + { + if (sp0 == sub_8102BF8(1, r6)) + { + eSlotMachine->unk34[1] = r6; + eSlotMachine->unk2E[1] = 0; + return; + } + } + for (i = 1; i < 5; i++) + { + if (sp0 == sub_8102BF8(1, eSlotMachine->unk34[0] - i)) + { + if (eSlotMachine->unk34[0] == 1) + { + if (i < 3) + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i + 1; + } + else + { + eSlotMachine->unk34[1] = 1; + eSlotMachine->unk2E[1] = i; + } + } + else + { + if (i < 3) + { + eSlotMachine->unk34[1] = 3; + eSlotMachine->unk2E[1] = i; + } + else + { + eSlotMachine->unk34[1] = 2; + eSlotMachine->unk2E[1] = i - 1; + } + } + return; + } + } + } + } + } +} +#else +__attribute__((naked)) void sub_8103668(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tsub sp, 0x4\n" + "\tldr r4, _0810368C @ =gSharedMem\n" + "\tldrh r3, [r4, 0x34]\n" + "\tmovs r0, 0x34\n" + "\tldrsh r2, [r4, r0]\n" + "\tcmp r2, 0\n" + "\tbeq _0810375A\n" + "\tldrb r1, [r4, 0x4]\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0810375A\n" + "\tcmp r2, 0x2\n" + "\tbne _081036AE\n" + "\tbl j5_08111E84\n" + "\tb _0810375A\n" + "\t.align 2, 0\n" + "_0810368C: .4byte gSharedMem\n" + "_08103690:\n" + "\tldr r0, _0810369C @ =gSharedMem\n" + "\tmovs r1, 0\n" + "\tstrh r6, [r0, 0x36]\n" + "\tstrh r1, [r0, 0x30]\n" + "\tb _0810375A\n" + "\t.align 2, 0\n" + "_0810369C: .4byte gSharedMem\n" + "_081036A0:\n" + "\tmovs r0, 0x2\n" + "\tstrh r0, [r5, 0x36]\n" + "\tadds r0, r4, 0x1\n" + "\tstrh r0, [r5, 0x30]\n" + "\tb _0810375A\n" + "_081036AA:\n" + "\tmovs r0, 0x3\n" + "\tb _08103736\n" + "_081036AE:\n" + "\tldrh r1, [r4, 0x2E]\n" + "\tsubs r1, r3, r1\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tmovs r0, 0\n" + "\tbl sub_8102BF8\n" + "\tmov r1, sp\n" + "\tstrb r0, [r1]\n" + "\tmov r0, sp\n" + "\tbl sub_8103520\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0810375A\n" + "\tmovs r6, 0x2\n" + "\tmovs r1, 0x34\n" + "\tldrsh r0, [r4, r1]\n" + "\tcmp r0, 0x3\n" + "\tbne _081036D8\n" + "\tmovs r6, 0x3\n" + "_081036D8:\n" + "\tmovs r5, 0\n" + "\tmov r7, sp\n" + "_081036DC:\n" + "\tlsls r0, r6, 16\n" + "\tasrs r4, r0, 16\n" + "\tmovs r0, 0x1\n" + "\tadds r1, r4, 0\n" + "\tbl sub_8102BF8\n" + "\tldrb r1, [r7]\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r1, r0\n" + "\tbeq _08103690\n" + "\tlsls r1, r5, 16\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 9\n" + "\tadds r1, r0\n" + "\tsubs r0, r4, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tlsrs r5, r1, 16\n" + "\tasrs r1, 16\n" + "\tcmp r1, 0x1\n" + "\tble _081036DC\n" + "\tmovs r6, 0x1\n" + "\tmov r7, sp\n" + "\tldr r5, _0810373C @ =gSharedMem\n" + "_0810370E:\n" + "\tldrh r1, [r5, 0x34]\n" + "\tlsls r0, r6, 16\n" + "\tasrs r4, r0, 16\n" + "\tsubs r1, r4\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tmovs r0, 0x1\n" + "\tbl sub_8102BF8\n" + "\tldrb r1, [r7]\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r1, r0\n" + "\tbne _0810374E\n" + "\tmovs r1, 0x34\n" + "\tldrsh r0, [r5, r1]\n" + "\tcmp r0, 0x1\n" + "\tbne _08103740\n" + "\tcmp r4, 0x2\n" + "\tble _081036A0\n" + "_08103736:\n" + "\tstrh r0, [r5, 0x36]\n" + "\tstrh r6, [r5, 0x30]\n" + "\tb _0810375A\n" + "\t.align 2, 0\n" + "_0810373C: .4byte gSharedMem\n" + "_08103740:\n" + "\tcmp r4, 0x2\n" + "\tble _081036AA\n" + "\tmovs r0, 0x2\n" + "\tstrh r0, [r5, 0x36]\n" + "\tsubs r0, r4, 0x1\n" + "\tstrh r0, [r5, 0x30]\n" + "\tb _0810375A\n" + "_0810374E:\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, 0x4\n" + "\tble _0810370E\n" + "_0810375A:\n" + "\tadd sp, 0x4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif // NONMATCHING + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From c42efaf17328594dc30e4fc6f31b8eef0f629278 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 28 Dec 2017 21:17:15 -0500 Subject: through sub_810380C --- src/field/slot_machine.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9e5980446..a4b3175d2 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1893,6 +1893,44 @@ __attribute__((naked)) void sub_8103668(void) } #endif // NONMATCHING +bool8 sub_8103764(u8 a0, u8 a1) +{ + if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0)) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_810378C(u8 a0, u8 a1, u8 a2) +{ + if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1)) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) +{ + if ((a0 == 0 && a1 == 1 && a2 == 0) || + (a0 == 1 && a1 == 0 && a2 == 1) || + (a0 == 0 && a1 == 0 && a2 == 1) || + (a0 == 1 && a1 == 1 && a2 == 0) || + (a0 == a1 && a0 == a2)) + { + return FALSE; + } + return TRUE; +} + +extern void (*const gUnknown_083ECB94[])(void); + +void sub_810380C(void) +{ + gUnknown_083ECB94[eSlotMachine->bet - 1](); +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 857b166086756ccc92e58981493513a7f00920ff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 28 Dec 2017 21:49:13 -0500 Subject: sub_8103830 --- src/field/slot_machine.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index a4b3175d2..fbc89133a 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1931,6 +1931,49 @@ void sub_810380C(void) gUnknown_083ECB94[eSlotMachine->bet - 1](); } +void sub_8103830(void) +{ + s16 i = 0; + u8 r5 = sub_8102BF8(0, 2 - eSlotMachine->unk2E[0]); + u8 r1 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); + if (r5 == r1) + { + while (1) + { + u8 r0; + if (!(r5 == (r0 = sub_8102BF8(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0))) + { + break; + } + i++; + } + } + else if (sub_8103764(r5, r1)) + { + if (eSlotMachine->unk04 & 0x80) + { + for (i = 0; i < 5; i++) + { + if (r5 == sub_8102BF8(2, 2 - i)) + { + eSlotMachine->unk2E[2] = i; + return; + } + } + } + i = 0; + while (1) + { + if (r5 != sub_8102BF8(2, 2 - i)) + { + break; + } + i++; + } + } + eSlotMachine->unk2E[2] = i; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 31660ed578795464ed46f663bfaacd1ecb2006a6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Dec 2017 17:01:25 -0500 Subject: sub_8103910 --- src/field/slot_machine.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index fbc89133a..bea32d9fb 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1696,6 +1696,8 @@ void j5_08111E84(void) // and variable i is mistakenly plopped into r6 void sub_8103668(void) { + s16 i; + s16 r6; if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) { if (eSlotMachine->unk34[0] == 2) @@ -1707,8 +1709,7 @@ void sub_8103668(void) u8 sp0 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); if (sub_8103520(&sp0)) { - s16 i; - s16 r6 = 2; + r6 = 2; if (eSlotMachine->unk34[0] == 3) r6 = 3; for (i = 0; i < 2; i++, r6--) @@ -1974,6 +1975,54 @@ void sub_8103830(void) eSlotMachine->unk2E[2] = i; } +void sub_8103910(void) +{ + s16 sp0 = 0; + s16 i; + u8 r7; + u8 r6; + u8 r4; + + if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] == eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80) + { + r7 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + r6 = sub_8102BF8(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); + if (sub_8103764(r7, r6)) + { + for (i = 0; i < 5; i++) + { + r4 = sub_8102BF8(2, eSlotMachine->unk34[1] - i); + if (r7 == r4) + { + sp0 = i; + break; + } + } + } + } + while (1) + { + s16 r8; + for (i = 1, r8 = 0; i < 4; i++) + { + r7 = sub_8102BF8(0, i - eSlotMachine->unk2E[0]); + r6 = sub_8102BF8(1, i - eSlotMachine->unk2E[1]); + r4 = sub_8102BF8(2, i - sp0); + if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(eSlotMachine->unk04 & 0x80))) + { + r8++; + break; + } + } + if (r8 == 0) + { + break; + } + sp0++; + } + eSlotMachine->unk2E[2] = sp0; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From b7f9313a2183203a92d1eac744c52b13119202b7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Dec 2017 18:04:53 -0500 Subject: sub_8103A78 --- src/field/slot_machine.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index bea32d9fb..04cd699d3 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -2023,6 +2023,55 @@ void sub_8103910(void) eSlotMachine->unk2E[2] = sp0; } +void sub_8103A78(void) +{ + u8 r6; + u8 r5; + u8 r4; + s16 r8; + s16 i; + + sub_8103910(); + if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] != eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80) + { + r6 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + r5 = sub_8102BF8(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); + if (sub_8103764(r6, r5)) + { + r8 = 1; + if (eSlotMachine->unk34[0] == 1) + r8 = 3; + for (i = 0; i < 5; i++) + { + r4 = sub_8102BF8(2, r8 - (eSlotMachine->unk2E[2] + i)); + if (r6 == r4) + { + eSlotMachine->unk2E[2] += i; + break; + } + } + } + } + while (1) + { + r6 = sub_8102BF8(0, 1 - eSlotMachine->unk2E[0]); + r5 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); + r4 = sub_8102BF8(2, 3 - eSlotMachine->unk2E[2]); + if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80)) + break; + eSlotMachine->unk2E[2]++; + } + while (1) + { + r6 = sub_8102BF8(0, 3 - eSlotMachine->unk2E[0]); + r5 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); + r4 = sub_8102BF8(2, 1 - eSlotMachine->unk2E[2]); + if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80)) + break; + eSlotMachine->unk2E[2]++; + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 8e79fd9e13e42961cfb1de4c44714960ae3ac668 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Dec 2017 18:18:15 -0500 Subject: through sub_8103CC8 --- src/field/slot_machine.c | 50 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 04cd699d3..922ab0c4d 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -95,14 +95,15 @@ static void sub_810290C(void); static u8 sub_81029D4(u8 c1, u8 c2, u8 c3); static void sub_8102A24(void); static void sub_8102A64(u8 taskId); -bool8 sub_8102A44(void); +static bool8 sub_8102A44(void); u8 sub_8102BA4(u8 x, s16 y); static void sub_8102DA8(void); static void sub_8102DEC(u8 a0); static void sub_8102E1C(u8 a0); -bool8 sub_8102E40(u8 a0); -void sub_8102E68(u8 taskId); -void sub_8103C14(u8 a0); +static bool8 sub_8102E40(u8 a0); +static void sub_8102E68(u8 taskId); +static void sub_8103C14(u8 a0); +void sub_8103C48(u8 taskId); void sub_8103D50(u8 a0); void sub_8103D8C(u8 a0); void sub_8103DC8(void); @@ -128,6 +129,7 @@ void sub_81050C4(void); void sub_81063C0(void); static void sub_8106448(void); void sub_81064B8(void); +void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { sub_8101D5C, @@ -1148,7 +1150,7 @@ static void sub_8102A24(void) sub_8102A64(CreateTask(sub_8102A64, 4)); } -bool8 sub_8102A44(void) +static bool8 sub_8102A44(void) { if (FindTaskIdByFunc(sub_8102A64) == 0xff) { @@ -1316,14 +1318,14 @@ static void sub_8102E1C(u8 a0) gTasks[eSlotMachine->unk3A[a0]].data[0] = 2; } -bool8 sub_8102E40(u8 a0) +static bool8 sub_8102E40(u8 a0) { return gTasks[eSlotMachine->unk3A[a0]].data[14]; } extern bool8 (*const gUnknown_083ECB2C[])(struct Task *task); -void sub_8102E68(u8 taskId) +static void sub_8102E68(u8 taskId) { while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId)); } @@ -2072,6 +2074,40 @@ void sub_8103A78(void) } } +static void sub_8103C14(u8 a0) +{ + u8 taskId = CreateTask(sub_8103C48, 5); + gTasks[taskId].data[15] = a0; + sub_8103C48(taskId); +} + +extern void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId); + +void sub_8103C48(u8 taskId) +{ + gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId); +} + +extern const s16 gUnknown_083ECBAC[]; + +void sub_8103C78(struct Task *task, u8 taskId) +{ + sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73); + task->data[0]++; +} + +void sub_8103CAC(struct Task *task, u8 taskId) +{ + if (++task->data[1] > 11) + task->data[0]++; +} + +void sub_8103CC8(struct Task *task, u8 taskId) +{ + sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53); + DestroyTask(taskId); +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From d05e72b6b269defef8d9b1bbce42adaf48f4ed8f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Dec 2017 19:35:05 -0500 Subject: through sub_8103E7C --- src/field/slot_machine.c | 98 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 90 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 922ab0c4d..82ac4e9e7 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -103,13 +103,15 @@ static void sub_8102E1C(u8 a0); static bool8 sub_8102E40(u8 a0); static void sub_8102E68(u8 taskId); static void sub_8103C14(u8 a0); -void sub_8103C48(u8 taskId); -void sub_8103D50(u8 a0); -void sub_8103D8C(u8 a0); -void sub_8103DC8(void); -void sub_8103E04(u8 a0); -bool8 sub_8103E38(void); -bool8 sub_8103E7C(void); +static void sub_8103C48(u8 taskId); +static void sub_8103D50(u8 a0); +static void sub_8103D8C(u8 a0); +static void sub_8103DC8(void); +static void sub_8103E04(u8 a0); +static bool8 sub_8103E38(void); +static bool8 sub_8103E7C(void); +bool8 sub_8103EAC(u8 a0); +void sub_8103EE4(struct Sprite *sprite); void sub_8103F70(void); bool8 sub_8103FA0(void); void sub_8104048(void); @@ -2083,7 +2085,7 @@ static void sub_8103C14(u8 a0) extern void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId); -void sub_8103C48(u8 taskId) +static void sub_8103C48(u8 taskId) { gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId); } @@ -2108,6 +2110,86 @@ void sub_8103CC8(struct Task *task, u8 taskId) DestroyTask(taskId); } +extern const u16 *const gUnknown_083EDD08[]; +extern const u16 *const gUnknown_083EDD1C[]; +extern const u8 gUnknown_083EDD30[]; + +static void sub_8103D00(u8 a0) +{ + LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2); +} + +static void sub_8103D28(u8 a0) +{ + LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2); +} + +extern const u8 gUnknown_083EDD3B[]; +extern const u8 gUnknown_083EDD35[][2]; + +static void sub_8103D50(u8 a0) +{ + u8 i; + for (i = 0; i < gUnknown_083EDD3B[a0]; i++) + { + sub_8103D00(gUnknown_083EDD35[a0][i]); + } +} + +static void sub_8103D8C(u8 a0) +{ + u8 i; + for (i = 0; i < gUnknown_083EDD3B[a0]; i++) + { + sub_8103D28(gUnknown_083EDD35[a0][i]); + } +} + +static void sub_8103DC8(void) +{ + u8 i; + for (i = 0; i < 5; i++) + { + u8 spriteId = CreateInvisibleSprite(sub_8103EE4); + gSprites[spriteId].data[0] = i; + eSlotMachine->unk44[i] = spriteId; + } +} + +static void sub_8103E04(u8 a0) +{ + struct Sprite *sprite = gSprites + eSlotMachine->unk44[a0]; + sprite->data[1] = 1; + sprite->data[2] = 4; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = 2; + sprite->data[7] = 0; +} + +static bool8 sub_8103E38(void) +{ + u8 i; + for (i = 0; i < 5; i++) + { + struct Sprite *sprite = gSprites + eSlotMachine->unk44[i]; + if (sprite->data[1] && sprite->data[2]) + return FALSE; + } + return TRUE; +} + +static bool8 sub_8103E7C(void) +{ + u8 i; + for (i = 0; i < 5; i++) + { + if (!sub_8103EAC(eSlotMachine->unk44[i])) + return FALSE; + } + return TRUE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 17745475ccc35c99ac9b586a03bc39de0936bb2e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Dec 2017 20:03:05 -0500 Subject: through sub_8103FA0 --- src/field/slot_machine.c | 70 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 82ac4e9e7..659688d81 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3,6 +3,7 @@ #include "strings2.h" #include "overworld.h" #include "menu_cursor.h" +#include "field_effect.h" #include "random.h" #include "sound.h" #include "main.h" @@ -110,10 +111,11 @@ static void sub_8103DC8(void); static void sub_8103E04(u8 a0); static bool8 sub_8103E38(void); static bool8 sub_8103E7C(void); -bool8 sub_8103EAC(u8 a0); -void sub_8103EE4(struct Sprite *sprite); -void sub_8103F70(void); -bool8 sub_8103FA0(void); +static bool8 sub_8103EAC(u8 spriteId); +static void sub_8103EE4(struct Sprite *sprite); +static void sub_8103F70(void); +void sub_8103FE8(u8 taskId); +static bool8 sub_8103FA0(void); void sub_8104048(void); void sub_8104064(u8 a0); bool8 sub_81040C8(void); @@ -2190,6 +2192,66 @@ static bool8 sub_8103E7C(void) return TRUE; } +static bool8 sub_8103EAC(u8 spriteId) +{ + struct Sprite *sprite = gSprites + spriteId; + if (!sprite->data[1]) + return TRUE; + if (sprite->data[7]) + sprite->data[1] = 0; + return sprite->data[7]; +} + +static void sub_8103EE4(struct Sprite *sprite) +{ + s16 r4; + if (sprite->data[1]) + { + if (!sprite->data[3]--) + { + sprite->data[7] = 0; + sprite->data[3] = 1; + sprite->data[4] += sprite->data[5]; + r4 = 4; + if (sprite->data[2]) + r4 = 8; + if (sprite->data[4] <= 0) + { + sprite->data[7] = 1; + sprite->data[5] = -sprite->data[5]; + if (sprite->data[2]) + sprite->data[2]--; + } + else if (sprite->data[4] >= r4) + sprite->data[5] = -sprite->data[5]; + if (sprite->data[2]) + sprite->data[3] <<= 1; + } + MultiplyPaletteRGBComponents(gUnknown_083EDD30[sprite->data[0]], sprite->data[4], sprite->data[4], sprite->data[4]); + } +} + +static void sub_8103F70(void) +{ + u8 taskId = CreateTask(sub_8103FE8, 6); + gTasks[taskId].data[3] = 1; + sub_8103FE8(taskId); +} + +extern const u16 *const gUnknown_083EDDAC; + +static bool8 sub_8103FA0(void) +{ + u8 taskId = FindTaskIdByFunc(sub_8103FE8); + if (!gTasks[taskId].data[2]) + { + DestroyTask(taskId); + LoadPalette(gUnknown_083EDDAC, 0x10, 0x20); + return TRUE; + } + return FALSE; +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 8eb7f3db6ee630fd801391ac3a3b574abfa7a08d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 29 Dec 2017 21:14:09 -0500 Subject: through sub_8104144 --- src/field/slot_machine.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 659688d81..9efaccd39 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -114,11 +114,13 @@ static bool8 sub_8103E7C(void); static bool8 sub_8103EAC(u8 spriteId); static void sub_8103EE4(struct Sprite *sprite); static void sub_8103F70(void); -void sub_8103FE8(u8 taskId); static bool8 sub_8103FA0(void); -void sub_8104048(void); -void sub_8104064(u8 a0); +static void sub_8103FE8(u8 taskId); +static void sub_8104048(void); +static void sub_8104064(u8 unused); bool8 sub_81040C8(void); +void sub_81040E8(u8 taskId); +void sub_810421C(struct Task *task); void sub_810423C(u8 a0); void sub_810430C(void); bool8 sub_810432C(void); @@ -130,6 +132,8 @@ bool8 sub_8104E18(void); void sub_8104EA8(void); void sub_8104F8C(void); void sub_81050C4(void); +u8 sub_8105B1C(s16 a0, s16 a1); +void sub_8105B88(u8 a0); void sub_81063C0(void); static void sub_8106448(void); void sub_81064B8(void); @@ -2238,6 +2242,7 @@ static void sub_8103F70(void) sub_8103FE8(taskId); } +extern const u16 *const gUnknown_083EDDA0[]; extern const u16 *const gUnknown_083EDDAC; static bool8 sub_8103FA0(void) @@ -2252,6 +2257,86 @@ static bool8 sub_8103FA0(void) return FALSE; } +static void sub_8103FE8(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (!task->data[1]--) + { + task->data[1] = 4; + task->data[2] += task->data[3]; + if (task->data[2] == 0 || task->data[2] == 2) + { + task->data[3] = -task->data[3]; + } + } + LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20); +} + +static void sub_8104048(void) +{ + eSlotMachine->unk3E = CreateTask(sub_81040E8, 8); +} + +static void sub_8104064(u8 unused) +{ + struct Task *task = gTasks + eSlotMachine->unk3E; + sub_810421C(task); + task->data[0] = 1; + task->data[1]++; + task->data[15] = 1; +} + +void sub_8104098(void) +{ + struct Task *task = gTasks + eSlotMachine->unk3E; + sub_810421C(task); + task->data[0] = 3; + task->data[15] = 1; +} + +bool8 sub_81040C8(void) +{ + return gTasks[eSlotMachine->unk3E].data[15]; +} + +extern void (*const gUnknown_083ECBB4[])(struct Task *task); + +void sub_81040E8(u8 taskId) +{ + gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId); +} + +void nullsub_68(struct Task *task) +{ + +} + +void sub_810411C(struct Task *task) +{ + task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20); + task->data[0]++; +} + +extern const u16 gUnknown_083ECBC4[][2]; + +void sub_8104144(struct Task *task) +{ + u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29); + if (gSprites[task->data[2]].data[7]) + { + s16 r2 = task->data[1] + 2; + u8 r0 = 0; + if (task->data[1] == 1) + r0 = 1; + else if (task->data[1] == 16) + r0 = 2; + vaddr[r2 + 0x40] = gUnknown_083ECBC4[r0][0]; + sub_8105B88(task->data[2]); + task->data[0] = 0; + task->data[15] = 0; + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 1d1c88a850e0967051599b37873328e63ae63643 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 10:30:24 -0500 Subject: through sub_810437C --- src/field/slot_machine.c | 119 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9efaccd39..f7679588c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -119,11 +119,13 @@ static void sub_8103FE8(u8 taskId); static void sub_8104048(void); static void sub_8104064(u8 unused); bool8 sub_81040C8(void); -void sub_81040E8(u8 taskId); -void sub_810421C(struct Task *task); +static void sub_81040E8(u8 taskId); +static void sub_810421C(struct Task *task); void sub_810423C(u8 a0); -void sub_810430C(void); -bool8 sub_810432C(void); +static void sub_810430C(void); +static bool8 sub_810432C(void); +void sub_810434C(u8 taskId); +void sub_8104A40(s16 a0, s16 a1); void sub_8104AB8(u8 a0); bool8 sub_8104AEC(void); void sub_8104C5C(void); @@ -132,6 +134,11 @@ bool8 sub_8104E18(void); void sub_8104EA8(void); void sub_8104F8C(void); void sub_81050C4(void); +void sub_8105100(void); +void sub_81051C0(void); +void sub_81052EC(void); +void sub_81053A0(void); +void sub_810545C(void); u8 sub_8105B1C(s16 a0, s16 a1); void sub_8105B88(u8 a0); void sub_81063C0(void); @@ -2301,7 +2308,7 @@ bool8 sub_81040C8(void) extern void (*const gUnknown_083ECBB4[])(struct Task *task); -void sub_81040E8(u8 taskId) +static void sub_81040E8(u8 taskId) { gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId); } @@ -2337,6 +2344,108 @@ void sub_8104144(struct Task *task) } } +void sub_81041AC(struct Task *task) +{ + u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29); + s16 r4 = task->data[1] + 2; + u8 r2 = 0; + if (task->data[1] == 1) + r2 = 1; + else if (task->data[1] == 16) + r2 = 2; + if (task->data[2] == 0) + { + vaddr[r4 + 0x40] = gUnknown_083ECBC4[r2][1]; + task->data[1]--; + } + if (++task->data[2] >= 20) + task->data[2] = 0; + if (task->data[1] == 0) + { + task->data[0] = 0; + task->data[15] = 0; + } +} + +static void sub_810421C(struct Task *task) +{ + u8 i; + + for (i = 2; i < 16; i++) + task->data[i] = 0; +} + +void sub_810423C(u8 a0) +{ + s16 i; + u8 r3; + s16 r2 = 3; + u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29); + for (i = 0; i < a0; i++, r2++) + { + r3 = 0; + if (i == 0) + r3 = 1; + else if (i == 15) + r3 = 2; + vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][0]; + } + for (; i < 16; i++, r2++) + { + r3 = 0; + if (i == 0) + r3 = 1; + else if (i == 15) + r3 = 2; + vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][1]; + } + gTasks[eSlotMachine->unk3E].data[1] = a0; +} + +static void sub_810430C(void) +{ + u8 taskId = CreateTask(sub_810434C, 7); + sub_810434C(taskId); +} + +static bool8 sub_810432C(void) +{ + if (FindTaskIdByFunc(sub_810434C) == 0xFF) + return TRUE; + return FALSE; +} + +extern void (*const gUnknown_083ECBD0[])(struct Task *task); + +void sub_810434C(u8 taskId) +{ + gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId); +} + +void sub_810437C(struct Task *task) +{ + eSlotMachine->unk0A = 0; + eSlotMachine->unk14 = 0; + eSlotMachine->unk16 = 0; + task->data[0]++; + task->data[1] = 0; + task->data[2] = 30; + task->data[4] = 1280; + gSpriteCoordOffsetX = 0; + gSpriteCoordOffsetY = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + sub_8104A40(30, 0); + sub_81051C0(); + sub_8105100(); + sub_81052EC(); + sub_81053A0(); + sub_810545C(); + sub_8102680(); + StopMapMusic(); + PlayNewMapMusic(BGM_BD_TIME); +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 13b2657c49b60dcf5d851a63346801232f9ee832 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 13:31:22 -0500 Subject: through sub_8104498; decompile some data --- src/field/slot_machine.c | 294 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 233 insertions(+), 61 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index f7679588c..8bfb30bfa 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -22,20 +22,12 @@ struct UnkStruct1 { /*0x02*/ s16 unk02; }; -extern struct UnkStruct1 *gUnknown_083ED048[]; -extern const u16 gPalette_83EDE24[]; - -extern const u8 gSlotMachine_Gfx[]; #if ENGLISH #define SLOTMACHINE_GFX_TILES 233 #elif GERMAN #define SLOTMACHINE_GFX_TILES 236 #endif -extern const u16 gUnknown_08E95A18[]; - -extern u16 gUnknown_08E95AB8[]; -extern u16 gUnknown_08E95FB8[]; static void sub_81018B8(void); static void sub_8101954(void); @@ -97,15 +89,44 @@ static u8 sub_81029D4(u8 c1, u8 c2, u8 c3); static void sub_8102A24(void); static void sub_8102A64(u8 taskId); static bool8 sub_8102A44(void); +bool8 sub_8102A9C(struct Task *task); +bool8 sub_8102AD0(struct Task *task); +bool8 sub_8102B80(struct Task *task); u8 sub_8102BA4(u8 x, s16 y); static void sub_8102DA8(void); static void sub_8102DEC(u8 a0); static void sub_8102E1C(u8 a0); static bool8 sub_8102E40(u8 a0); static void sub_8102E68(u8 taskId); +bool8 sub_8102EA0(struct Task *task); +bool8 sub_8102EA4(struct Task *task); +bool8 sub_8102EC0(struct Task *task); +bool8 sub_8102F4C(struct Task *task); +bool8 sub_8103008(struct Task *task); +bool8 sub_810305C(void); +bool8 sub_8103154(u8 a0, u8 a1); +bool8 sub_81031B4(u8 a0, u8 a1); +bool8 sub_81032C0(void); +bool8 sub_81032E8(void); +bool8 sub_810333C(void); +bool8 sub_81033DC(void); +bool8 sub_810341C(u8 a0); +bool8 sub_810347C(u8 a0); +void sub_81034F4(void); +void sub_8103540(void); +void sub_8103564(void); +void j5_08111E84(void); +void sub_8103668(void); +void sub_810380C(void); +void sub_8103830(void); +void sub_8103910(void); +void sub_8103A78(void); static void sub_8103C14(u8 a0); static void sub_8103C48(u8 taskId); static void sub_8103D50(u8 a0); +void sub_8103C78(struct Task *task, u8 taskId); +void sub_8103CAC(struct Task *task, u8 taskId); +void sub_8103CC8(struct Task *task, u8 taskId); static void sub_8103D8C(u8 a0); static void sub_8103DC8(void); static void sub_8103E04(u8 a0); @@ -120,11 +141,33 @@ static void sub_8104048(void); static void sub_8104064(u8 unused); bool8 sub_81040C8(void); static void sub_81040E8(u8 taskId); +void nullsub_68(struct Task *task); +void sub_810411C(struct Task *task); +void sub_8104144(struct Task *task); +void sub_81041AC(struct Task *task); static void sub_810421C(struct Task *task); void sub_810423C(u8 a0); static void sub_810430C(void); static bool8 sub_810432C(void); void sub_810434C(u8 taskId); +void sub_810437C(struct Task *task); +void sub_81043EC(struct Task *task); +void sub_8104468(struct Task *task); +void sub_8104498(struct Task *task); +void sub_8104548(struct Task *task); +void sub_8104598(struct Task *task); +void sub_81045CC(struct Task *task); +void sub_810463C(struct Task *task); +void sub_81046C0(struct Task *task); +void sub_8104764(struct Task *task); +void sub_8104794(struct Task *task); +void sub_81047EC(struct Task *task); +void sub_8104860(struct Task *task); +void sub_81048A8(struct Task *task); +void sub_81048CC(struct Task *task); +void sub_8104940(struct Task *task); +void sub_81049C8(struct Task *task); +void sub_81049F8(struct Task *task); void sub_8104A40(s16 a0, s16 a1); void sub_8104AB8(u8 a0); bool8 sub_8104AEC(void); @@ -139,6 +182,10 @@ void sub_81051C0(void); void sub_81052EC(void); void sub_81053A0(void); void sub_810545C(void); +void sub_8105578(void); +void sub_8105688(s16 a0); +void sub_81056F0(void); +void sub_81057E8(s16 a0); u8 sub_8105B1C(s16 a0, s16 a1); void sub_8105B88(u8 a0); void sub_81063C0(void); @@ -146,38 +193,12 @@ static void sub_8106448(void); void sub_81064B8(void); void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); -static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { - sub_8101D5C, - sub_8101D8C, - sub_8101DB0, - sub_8101DF4, - sub_8101E10, - sub_8101E3C, - sub_8101F44, - sub_8101F60, - sub_8101F88, - sub_8101FA4, - sub_8102008, - sub_8102034, - sub_8102058, - sub_8102090, - sub_81020C8, - sub_81021E0, - sub_81021FC, - sub_8102264, - sub_81022A0, - sub_81022CC, - sub_81022F0, - sub_8102318, - sub_8102344, - sub_810239C, - sub_81023B8, - sub_81023E0, - sub_81023FC, - sub_8102424, - sub_8102460 -}; - +extern struct UnkStruct1 *gUnknown_083ED048[]; +extern const u16 gPalette_83EDE24[]; +extern const u8 gSlotMachine_Gfx[]; +extern const u16 gUnknown_08E95A18[]; +extern u16 gUnknown_08E95AB8[]; +extern u16 gUnknown_08E95FB8[]; extern const u8 gUnknown_083ECD04[][3]; extern const u8 gUnknown_083ECE3A[]; extern const u16 gUnknown_083ECE42[]; @@ -395,6 +416,38 @@ static void sub_8101D04(void) sub_8101D24(CreateTask(sub_8101D24, 0)); } +static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { + sub_8101D5C, + sub_8101D8C, + sub_8101DB0, + sub_8101DF4, + sub_8101E10, + sub_8101E3C, + sub_8101F44, + sub_8101F60, + sub_8101F88, + sub_8101FA4, + sub_8102008, + sub_8102034, + sub_8102058, + sub_8102090, + sub_81020C8, + sub_81021E0, + sub_81021FC, + sub_8102264, + sub_81022A0, + sub_81022CC, + sub_81022F0, + sub_8102318, + sub_8102344, + sub_810239C, + sub_81023B8, + sub_81023E0, + sub_81023FC, + sub_8102424, + sub_8102460 +}; + static void sub_8101D24(u8 taskId) { while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId)); @@ -1174,7 +1227,11 @@ static bool8 sub_8102A44(void) return FALSE; } -extern bool8 (*const gUnknown_083ECB20[])(struct Task *task); +bool8 (*const gUnknown_083ECB20[])(struct Task *task) = { + sub_8102A9C, + sub_8102AD0, + sub_8102B80 +}; static void sub_8102A64(u8 taskId) { @@ -1338,7 +1395,13 @@ static bool8 sub_8102E40(u8 a0) return gTasks[eSlotMachine->unk3A[a0]].data[14]; } -extern bool8 (*const gUnknown_083ECB2C[])(struct Task *task); +bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = { + sub_8102EA0, + sub_8102EA4, + sub_8102EC0, + sub_8102F4C, + sub_8103008 +}; static void sub_8102E68(u8 taskId) { @@ -1356,8 +1419,16 @@ bool8 sub_8102EA4(struct Task *task) return FALSE; } -extern bool8 (*const gUnknown_083ECB40[])(void); -extern void (*const gUnknown_083ECB4C[])(void); +bool8 (*const gUnknown_083ECB40[])(void) = { + sub_810305C, + sub_81032C0, + sub_81033DC +}; +void (*const gUnknown_083ECB4C[])(void) = { + sub_81034F4, + sub_8103540, + sub_810380C +}; bool8 sub_8102EC0(struct Task *task) { @@ -1373,15 +1444,10 @@ bool8 sub_8102EC0(struct Task *task) return TRUE; } -extern const u16 gUnknown_083ECB58[5]; // don't move this - bool8 sub_8102F4C(struct Task *task) { - s16 r2; - u16 sp[5]; - memcpy(sp, gUnknown_083ECB58, sizeof gUnknown_083ECB58); - // u16 sp[] = {2, 4, 4, 4, 8}; - r2 = eSlotMachine->unk1C[task->data[15]] % 24; + u16 sp[] = {2, 4, 4, 4, 8}; + s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24; if (r2 != 0) { r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A); @@ -1419,7 +1485,11 @@ bool8 sub_8103008(struct Task *task) return FALSE; } -extern bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1); +bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = { + sub_8103154, + sub_81031B4, + sub_81031B4 +}; bool8 sub_810305C(void) { @@ -1522,7 +1592,11 @@ bool8 sub_81031B4(u8 a0, u8 a1) return FALSE; } -extern bool8 (*const gUnknown_083ECB70[])(void); +bool8 (*const gUnknown_083ECB70[])(void) = { + sub_81032E8, + sub_81032E8, + sub_810333C +}; bool8 sub_81032C0(void) { @@ -1580,7 +1654,11 @@ bool8 sub_810333C(void) return FALSE; } -extern bool8 (*const gUnknown_083ECB7C[])(u8 a0); +bool8 (*const gUnknown_083ECB7C[])(u8 a0) = { + sub_810341C, + sub_810341C, + sub_810347C +}; bool8 sub_81033DC(void) { @@ -1660,7 +1738,11 @@ bool8 sub_8103520(u8 *a0) return FALSE; } -extern void (*gUnknown_083ECB88[])(void); +void (*const gUnknown_083ECB88[])(void) = { + sub_8103564, + j5_08111E84, + sub_8103668 +}; void sub_8103540(void) { @@ -1942,7 +2024,11 @@ bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) return TRUE; } -extern void (*const gUnknown_083ECB94[])(void); +void (*const gUnknown_083ECB94[])(void) = { + sub_8103830, + sub_8103910, + sub_8103A78 +}; void sub_810380C(void) { @@ -2096,14 +2182,18 @@ static void sub_8103C14(u8 a0) sub_8103C48(taskId); } -extern void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId); +void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = { + sub_8103C78, + sub_8103CAC, + sub_8103CC8 +}; static void sub_8103C48(u8 taskId) { gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId); } -extern const s16 gUnknown_083ECBAC[]; +const s16 gUnknown_083ECBAC[] = {5, 10, 15}; void sub_8103C78(struct Task *task, u8 taskId) { @@ -2306,7 +2396,12 @@ bool8 sub_81040C8(void) return gTasks[eSlotMachine->unk3E].data[15]; } -extern void (*const gUnknown_083ECBB4[])(struct Task *task); +void (*const gUnknown_083ECBB4[])(struct Task *task) = { + nullsub_68, + sub_810411C, + sub_8104144, + sub_81041AC +}; static void sub_81040E8(u8 taskId) { @@ -2324,7 +2419,11 @@ void sub_810411C(struct Task *task) task->data[0]++; } -extern const u16 gUnknown_083ECBC4[][2]; +const u16 gUnknown_083ECBC4[][2] = { + {0x9e, 0x6e}, + {0x9f, 0x6f}, + {0xaf, 0x7f} +}; void sub_8104144(struct Task *task) { @@ -2415,7 +2514,27 @@ static bool8 sub_810432C(void) return FALSE; } -extern void (*const gUnknown_083ECBD0[])(struct Task *task); +void (*const gUnknown_083ECBD0[])(struct Task *task) = { + sub_810437C, + sub_81043EC, + sub_8104468, + sub_8104498, + sub_8104548, + sub_8104598, + sub_81045CC, + sub_810463C, + sub_81046C0, + sub_8104764, + sub_8104794, + sub_81047EC, + sub_8104860, + sub_81048A8, + sub_81048CC, + sub_8104940, + sub_81049C8, + sub_8104794, + sub_81049F8 +}; void sub_810434C(u8 taskId) { @@ -2446,6 +2565,59 @@ void sub_810437C(struct Task *task) PlayNewMapMusic(BGM_BD_TIME); } +void sub_81043EC(struct Task *task) +{ + s16 r3; + gSpriteCoordOffsetX -= 8; + task->data[1] += 8; + r3 = ((task->data[1] + 240) & 0xff) >> 3; + REG_BG1HOFS = task->data[1] & 0x1ff; + if (r3 != task->data[2] && task->data[3] <= 18) + { + task->data[2] = r3; + task->data[3] = task->data[1] >> 3; + sub_8104A40(r3, task->data[3]); + } + if (task->data[1] >= 200) + { + task->data[0]++; + task->data[3] = 0; + } + sub_8102D28(task->data[4] >> 8); +} + +void sub_8104468(struct Task *task) +{ + sub_8102D28(task->data[4] >> 8); + if (++task->data[5] >= 60) + { + task->data[0]++; + sub_8105578(); + sub_81056F0(); + } +} + +void sub_8104498(struct Task *task) +{ + int r5; + u8 sp0[] = {1, 1, 2, 2}; + s16 sp4[] = {0x40, 0x30, 0x18, 0x08}; + s16 spC[] = {10, 8, 6, 4}; + + sub_8102D28(task->data[4] >> 8); + task->data[4] -= 4; + r5 = 4 - (task->data[4] >> 8); + sub_8105688(sp4[r5]); + sub_81057E8(spC[r5]); + StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, sp0[r5]); + if (task->data[4] <= 0x100) + { + task->data[0]++; + task->data[4] = 0x100; + task->data[5] = 0; + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From ee7ecf3d11732236bc43ae15757056f03e356a05 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 13:58:29 -0500 Subject: through sub_81045CC --- src/field/slot_machine.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 8bfb30bfa..50a6fbd6e 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -2618,6 +2618,55 @@ void sub_8104498(struct Task *task) } } +void sub_8104548(struct Task *task) +{ + sub_8102D28(task->data[4] >> 8); + if (++task->data[5] >= 80) + { + task->data[0]++; + task->data[5] = 0; + sub_81057E8(2); + StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 3); + } +} + +void sub_8104598(struct Task *task) +{ + sub_8102D28(task->data[4] >> 8); + task->data[4] = (u8)task->data[4] + 0x80; + if (++task->data[5] >= 80) + { + task->data[0]++; + task->data[5] = 0; + } +} + +void sub_81045CC(struct Task *task) +{ + sub_8102D28(task->data[4] >> 8); + task->data[4] = (u8)task->data[4] + 0x40; + if (++task->data[5] >= 40) + { + task->data[5] = 0; + if (eSlotMachine->unk05) + { + if (eSlotMachine->unk0A <= task->data[6]) + { + task->data[0]++; + } + } + else if (task->data[6] > 3) + { + task->data[0]++; + } + else if (sub_81026DC(task->data[6])) + { + task->data[0] = 14; + } + task->data[6]++; + } +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From b628d68bae049d3798142acbf4182b121e51a232 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 16:09:07 -0500 Subject: through sub_81049F8 --- src/field/slot_machine.c | 195 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 50a6fbd6e..b57f0cfaf 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -169,6 +169,7 @@ void sub_8104940(struct Task *task); void sub_81049C8(struct Task *task); void sub_81049F8(struct Task *task); void sub_8104A40(s16 a0, s16 a1); +void sub_8104A88(s16 a0); void sub_8104AB8(u8 a0); bool8 sub_8104AEC(void); void sub_8104C5C(void); @@ -178,14 +179,28 @@ void sub_8104EA8(void); void sub_8104F8C(void); void sub_81050C4(void); void sub_8105100(void); +void sub_810514C(void); void sub_81051C0(void); +void sub_8105284(void); void sub_81052EC(void); void sub_81053A0(void); void sub_810545C(void); +void sub_81054B8(void); +void sub_8105524(void); +void sub_8105554(void); void sub_8105578(void); void sub_8105688(s16 a0); +void sub_81056C0(void); void sub_81056F0(void); void sub_81057E8(s16 a0); +void sub_8105804(void); +void sub_8105854(void); +void sub_81058A0(void); +void sub_81058C4(void); +void sub_81059B8(void); +void sub_81059E8(void); +bool8 sub_8105ACC(void); +void sub_8105AEC(void); u8 sub_8105B1C(s16 a0, s16 a1); void sub_8105B88(u8 a0); void sub_81063C0(void); @@ -2667,6 +2682,186 @@ void sub_81045CC(struct Task *task) } } +void sub_810463C(struct Task *task) +{ + s16 r5 = eSlotMachine->unk14 % 20; + if (r5) + { + r5 = sub_8102D5C(task->data[4] >> 8); + task->data[4] = (u8)task->data[4] + 0x40; + } + else if (sub_8102C48(1) != eSlotMachine->unk05) + { + sub_8102D28(task->data[4] >> 8); + r5 = eSlotMachine->unk14 % 20; + task->data[4] = (u8)task->data[4] + 0x40; + } + if (r5 == 0 && sub_8102C48(1) == eSlotMachine->unk05) + { + task->data[4] = 0; + task->data[0]++; + } +} + +void sub_81046C0(struct Task *task) +{ + if (++task->data[4] >= 60) + { + StopMapMusic(); + sub_81056C0(); + sub_8105804(); + task->data[0]++; + if(eSlotMachine->unk05 == 0) + { + task->data[4] = 0xa0; + StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5); + PlayFanfare(BGM_ME_ZANNEN); + } + else + { + task->data[4] = 0xc0; + StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 4); + gSprites[eSlotMachine->unk3F].animCmdIndex = 0; + if (eSlotMachine->unk02) + { + sub_8104098(); + eSlotMachine->unk02 = 0; + } + PlayFanfare(BGM_ME_B_SMALL); + } + } +} + +void sub_8104764(struct Task *task) +{ + if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8()) + { + task->data[0]++; + } +} + +void sub_8104794(struct Task *task) +{ + s16 r4; + gSpriteCoordOffsetX -= 8; + task->data[1] += 8; + task->data[3] += 8; + r4 = ((task->data[1] - 8) & 0xff) >> 3; + REG_BG1HOFS = task->data[1] & 0x1ff; + if (task->data[3] >> 3 <= 25) + { + sub_8104A88(r4); + } + else + { + task->data[0]++; + } +} + +void sub_81047EC(struct Task *task) +{ + eSlotMachine->unk0B = 0; + eSlotMachine->unk0A = eSlotMachine->unk05; + gSpriteCoordOffsetX = 0; + REG_BG1HOFS = 0; + eSlotMachine->unk1A = 8; + sub_810514C(); + sub_81054B8(); + sub_8105524(); + PlayNewMapMusic(eSlotMachine->backupMapMusic); + if (eSlotMachine->unk0A == 0) + { + DestroyTask(FindTaskIdByFunc(sub_810434C)); + } + else + { + sub_8104CAC(4); + task->data[1] = dp15_jump_random_unknown(); + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + } +} + +void sub_8104860(struct Task *task) +{ + if (eSlotMachine->unk1A == task->data[1]) + { + task->data[0]++; + } + else if (eSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0) + { + eSlotMachine->unk1A >>= 1; + } +} + +void sub_81048A8(struct Task *task) +{ + if (sub_8104E18()) + { + DestroyTask(FindTaskIdByFunc(sub_810434C)); + } +} + +void sub_81048CC(struct Task *task) +{ + sub_81054B8(); + sub_81056C0(); + sub_8105804(); + sub_8105854(); + gSprites[eSlotMachine->unk4E].invisible = TRUE; + StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5); + task->data[0]++; + task->data[4] = 4; + task->data[5] = 0; + StopMapMusic(); + PlayFanfare(BGM_ME_ZANNEN); + PlaySE(SE_W153); +} + +void sub_8104940(struct Task *task) +{ + gSpriteCoordOffsetY = task->data[4]; + REG_BG1VOFS = task->data[4]; + if (task->data[5] & 0x01) + task->data[4] = -task->data[4]; + if ((++task->data[5] & 0x1f) == 0) + task->data[4] >>= 1; + if (task->data[4] == 0) + { + sub_81058A0(); + sub_81058C4(); + sub_8105284(); + sub_81059E8(); + gSprites[eSlotMachine->unk4E].invisible = FALSE; + task->data[0]++; + task->data[5] = 0; + } +} + +void sub_81049C8(struct Task *task) +{ + gSpriteCoordOffsetY = 0; + REG_BG1VOFS = 0; + if (sub_8105ACC()) + { + task->data[0]++; + sub_8105AEC(); + } +} + +void sub_81049F8(struct Task *task) +{ + gSpriteCoordOffsetX = 0; + REG_BG1HOFS = 0; + PlayNewMapMusic(eSlotMachine->backupMapMusic); + sub_810514C(); + sub_8105554(); + sub_8105524(); + sub_81059B8(); + DestroyTask(FindTaskIdByFunc(sub_810434C)); +} + asm(".section .text_a"); static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 1989ffb9a856ebebde994b5af53860436c6606a0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 17:11:00 -0500 Subject: through sub_8104C5C --- src/field/slot_machine.c | 126 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index b57f0cfaf..4076d7770 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -172,9 +172,17 @@ void sub_8104A40(s16 a0, s16 a1); void sub_8104A88(s16 a0); void sub_8104AB8(u8 a0); bool8 sub_8104AEC(void); +void sub_8104B0C(u8 taskId); +void sub_8104B3C(struct Task *task); +void sub_8104B60(struct Task *task); +void sub_8104B80(struct Task *task); +void sub_8104BC8(struct Task *task); +void sub_8104BFC(struct Task *task); +void sub_8104C44(struct Task *task); void sub_8104C5C(void); void sub_8104CAC(u8 arg0); bool8 sub_8104E18(void); +void sub_8104E74(u8 taskId); void sub_8104EA8(void); void sub_8104F8C(void); void sub_81050C4(void); @@ -207,6 +215,7 @@ void sub_81063C0(void); static void sub_8106448(void); void sub_81064B8(void); void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); +void sub_81065DC(void); extern struct UnkStruct1 *gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; @@ -2862,7 +2871,122 @@ void sub_81049F8(struct Task *task) DestroyTask(FindTaskIdByFunc(sub_810434C)); } -asm(".section .text_a"); +extern const u16 gReelTimeWindowTilemap[]; + +void sub_8104A40(s16 a0, s16 a1) +{ + s16 i; + + for (i = 4; i < 15; i++) + { + u16 tile = gReelTimeWindowTilemap[a1 + (i - 4) * 20]; + ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = tile; + } +} + +void sub_8104A88(s16 a0) +{ + s16 i; + + for (i = 4; i < 15; i++) + { + ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = 0; + } +} + +void sub_8104AB8(u8 a0) +{ + u8 taskId = CreateTask(sub_8104B0C, 1); + gTasks[taskId].data[1] = a0; + sub_8104B0C(taskId); +} + +bool8 sub_8104AEC(void) +{ + if (FindTaskIdByFunc(sub_8104B0C) == 0xFF) + return TRUE; + return FALSE; +} + +void (*const gUnknown_083ECC30[])(struct Task *task) = { + sub_8104B3C, + sub_8104B60, + sub_8104B80, + sub_8104B60, + sub_8104BC8, + sub_8104B60, + sub_8104BFC, + sub_8104B60, + sub_8104C44 +}; + +void sub_8104B0C(u8 taskId) +{ + gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId); +} + +void sub_8104B3C(struct Task *task) +{ + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + task->data[0]++; +} + +void sub_8104B60(struct Task *task) +{ + if (!gPaletteFade.active) + { + task->data[0]++; + } +} + +void sub_8104B80(struct Task *task) +{ + sub_8104DA4(); + sub_81065DC(); + BasicInitMenuWindow(&gWindowConfig_81E7144); + MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + task->data[0]++; +} + +void sub_8104BC8(struct Task *task) +{ + if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON)) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + task->data[0]++; + } +} + +void sub_8104BFC(struct Task *task) +{ + MenuZeroFillScreen(); + BasicInitMenuWindow(&gWindowConfig_81E7128); + sub_81064B8(); + sub_8104CAC(task->data[1]); + sub_810423C(eSlotMachine->unk02); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + task->data[0]++; +} + +void sub_8104C44(struct Task *task) +{ + DestroyTask(FindTaskIdByFunc(sub_8104B0C)); +} + +void sub_8104C5C(void) +{ + u8 i; + struct Task *task; + i = CreateTask(sub_8104E74, 3); + eSlotMachine->unk3D = i; + task = gTasks + i; + task->data[1] = -1; + for (i = 4; i < 16; i++) + { + task->data[i] = 0x40; + } +} static void LoadSlotMachineWheelOverlay(void); -- cgit v1.2.3 From 7f6d7c107b2986a4631218b482db216cfca91733 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 20:18:52 -0500 Subject: through sub_8104F8C --- src/field/slot_machine.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 4076d7770..d6e078139 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -182,9 +182,11 @@ void sub_8104C44(struct Task *task); void sub_8104C5C(void); void sub_8104CAC(u8 arg0); bool8 sub_8104E18(void); +void nullsub_69(struct Task *task); void sub_8104E74(u8 taskId); void sub_8104EA8(void); void sub_8104F8C(void); +void sub_8104FF4(s16 a0, s16 a1, u8 a2, s16 a3); void sub_81050C4(void); void sub_8105100(void); void sub_810514C(void); @@ -211,6 +213,7 @@ bool8 sub_8105ACC(void); void sub_8105AEC(void); u8 sub_8105B1C(s16 a0, s16 a1); void sub_8105B88(u8 a0); +u8 sub_8105BF8(u8, u32, s16, s16, s16); void sub_81063C0(void); static void sub_8106448(void); void sub_81064B8(void); @@ -2984,7 +2987,7 @@ void sub_8104C5C(void) task->data[1] = -1; for (i = 4; i < 16; i++) { - task->data[i] = 0x40; + task->data[i] = MAX_SPRITES; } } @@ -3017,6 +3020,111 @@ void sub_8104CAC(u8 arg0) { #endif } } + +void sub_8104D30(u8 a0, u32 a1, s16 a2, s16 a3, s16 a4) +{ + u8 i; + struct Task *task = gTasks + eSlotMachine->unk3D; + for (i = 4; i < 16; i++) + { + if (task->data[i] == MAX_SPRITES) + { + task->data[i] = sub_8105BF8(a0, a1, a2, a3, a4); + break; + } + } +} + +extern void (*const gUnknown_083ED064[])(void); + +void sub_8104DA4(void) +{ + u8 i; + struct Task *task = gTasks + eSlotMachine->unk3D; + if ((u16)task->data[1] != 0xFFFF) + gUnknown_083ED064[task->data[1]](); + for (i = 4; i < 16; i++) + { + if (task->data[i] != MAX_SPRITES) + { + DestroySprite(gSprites + task->data[i]); + task->data[i] = MAX_SPRITES; + } + } +} + +bool8 sub_8104E18(void) +{ + u8 i; + struct Task *task = gTasks + eSlotMachine->unk3D; + for (i = 4; i < 16; i++) + { + if (task->data[i] != MAX_SPRITES) + { + if (gSprites[task->data[i]].data[7]) + return FALSE; + } + } + return TRUE; +} + +void (*const gUnknown_083ECC54[])(struct Task *task) = { + nullsub_69 +}; + +void sub_8104E74(u8 taskId) +{ + gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId); +} + +void nullsub_69(struct Task *task) +{ + +} + +const struct SpriteTemplate gSpriteTemplate_83ED414; + +void sub_8104EA8(void) +{ + s16 i; + s16 j; + s16 x; + for (i = 0, x = 0x30; i < 3; i++, x += 0x28) + { + for (j = 0; j < 120; j += 24) + { + struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED414, x, 0, 14); + sprite->oam.priority = 3; + sprite->data[0] = i; + sprite->data[1] = j; + sprite->data[3] = -1; + } + } +} + +void sub_8104F18(struct Sprite *sprite) +{ + sprite->data[2] = eSlotMachine->unk1C[sprite->data[0]] + sprite->data[1]; + sprite->data[2] %= 120; + sprite->pos1.y = eSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2]; + sprite->sheetTileStart = GetSpriteTileStartByTag(sub_8102BA4(sprite->data[0], sprite->data[2] / 24)); + SetSpriteSheetFrameTileNum(sprite); +} + +void sub_8104F8C(void) +{ + s16 i; + s16 r4; + for (r4 = 203, i = 1; i < 10000; i *= 10, r4 -= 7) + { + sub_8104FF4(r4, 23, 0, i); + } + for (r4 = 235, i = 1; i < 10000; i *= 10, r4 -= 7) + { + sub_8104FF4(r4, 23, 1, i); + } +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From 4137641bfecb300694d0045d3b694d4c6dca2aef Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 21:08:10 -0500 Subject: through sub_8105170 --- src/field/slot_machine.c | 78 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index d6e078139..9246e9428 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -186,7 +186,7 @@ void nullsub_69(struct Task *task); void sub_8104E74(u8 taskId); void sub_8104EA8(void); void sub_8104F8C(void); -void sub_8104FF4(s16 a0, s16 a1, u8 a2, s16 a3); +void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3); void sub_81050C4(void); void sub_8105100(void); void sub_810514C(void); @@ -3114,14 +3114,80 @@ void sub_8104F18(struct Sprite *sprite) void sub_8104F8C(void) { s16 i; - s16 r4; - for (r4 = 203, i = 1; i < 10000; i *= 10, r4 -= 7) + s16 x; + for (x = 203, i = 1; i < 10000; i *= 10, x -= 7) { - sub_8104FF4(r4, 23, 0, i); + sub_8104FF4(x, 23, 0, i); } - for (r4 = 235, i = 1; i < 10000; i *= 10, r4 -= 7) + for (x = 235, i = 1; i < 10000; i *= 10, x -= 7) { - sub_8104FF4(r4, 23, 1, i); + sub_8104FF4(x, 23, 1, i); + } +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED42C; + +void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3) +{ + struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13); + sprite->oam.priority = 2; + sprite->data[0] = a2; + sprite->data[1] = a3; + sprite->data[2] = a3 * 10; + sprite->data[3] = -1; +} + +void sub_810506C(struct Sprite *sprite) +{ + u16 tag = eSlotMachine->coins; + if (sprite->data[0]) + tag = eSlotMachine->unk0E; + if (sprite->data[3] != tag) + { + sprite->data[3] = tag; + tag %= (u16)sprite->data[2]; + tag /= (u16)sprite->data[1]; + tag += 7; + sprite->sheetTileStart = GetSpriteTileStartByTag(tag); + SetSpriteSheetFrameTileNum(sprite); + } +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED444; +extern const struct SubspriteTable gSubspriteTables_83ED704[]; + +void sub_81050C4(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15); + gSprites[spriteId].oam.priority = 3; + SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704); +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED45C; + +void sub_8105100(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED45C, 0x118, 0x50, 1); + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].coordOffsetEnabled = TRUE; + eSlotMachine->unk3F = spriteId; +} + +void sub_810514C(void) +{ + DestroySprite(gSprites + eSlotMachine->unk3F); +} + +void sub_8105170(struct Sprite *sprite) +{ + sprite->pos2.y = sprite->pos2.x = 0; + if (sprite->animNum == 4) + { + sprite->pos2.y = sprite->pos2.x = 8; + if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0)) + { + sprite->pos2.y = -8; + } } } -- cgit v1.2.3 From 26d22691dc88b3c9e61fa3612c46d3b24167d0eb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 30 Dec 2017 23:20:35 -0500 Subject: through sub_810535C --- src/field/slot_machine.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9246e9428..3aaad9a8b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3082,7 +3082,7 @@ void nullsub_69(struct Task *task) } -const struct SpriteTemplate gSpriteTemplate_83ED414; +extern const struct SpriteTemplate gSpriteTemplate_83ED414; void sub_8104EA8(void) { @@ -3191,6 +3191,66 @@ void sub_8105170(struct Sprite *sprite) } } +extern const struct SpriteTemplate gSpriteTemplate_83ED474; +extern const struct SpriteTemplate gSpriteTemplate_83ED48C; +extern const struct SubspriteTable gSubspriteTables_83ED73C[]; +extern const struct SubspriteTable gSubspriteTables_83ED75C[]; + +void sub_81051C0(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + SetSubspriteTables(sprite, gSubspriteTables_83ED73C); + eSlotMachine->unk49 = spriteId; + + spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7); + sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + SetSubspriteTables(sprite, gSubspriteTables_83ED75C); + eSlotMachine->unk4A = spriteId; +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED4A4; +extern const struct SubspriteTable gSubspriteTables_83ED78C[]; + +void sub_8105284(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4A4, 0xa8 - gSpriteCoordOffsetX, 0x50, 7); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + SetSubspriteTables(sprite, gSubspriteTables_83ED78C); + eSlotMachine->unk42 = spriteId; +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED4BC; + +void sub_81052EC(void) +{ + u8 i; + s16 r5; + for (i = 0, r5 = 0; i < 3; i++, r5 += 20) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0x00, 10); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + sprite->data[7] = r5; + eSlotMachine->unk4B[i] = spriteId; + } +} + +void sub_810535C(struct Sprite *sprite) +{ + s16 r0 = (u16)(eSlotMachine->unk14 + sprite->data[7]); + r0 %= 40; + sprite->pos1.y = r0 + 59; + StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20)); +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From a357c07d83a3b90adf0353501cbc0f84f6eeeddc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 31 Dec 2017 19:58:37 -0500 Subject: through sub_8105554 --- src/field/slot_machine.c | 70 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 3aaad9a8b..4b580839c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -2821,7 +2821,7 @@ void sub_81048CC(struct Task *task) sub_81056C0(); sub_8105804(); sub_8105854(); - gSprites[eSlotMachine->unk4E].invisible = TRUE; + gSprites[eSlotMachine->unk4E[0]].invisible = TRUE; StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 5); task->data[0]++; task->data[4] = 4; @@ -2845,7 +2845,7 @@ void sub_8104940(struct Task *task) sub_81058C4(); sub_8105284(); sub_81059E8(); - gSprites[eSlotMachine->unk4E].invisible = FALSE; + gSprites[eSlotMachine->unk4E[0]].invisible = FALSE; task->data[0]++; task->data[5] = 0; } @@ -3203,14 +3203,14 @@ void sub_81051C0(void) sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; SetSubspriteTables(sprite, gSubspriteTables_83ED73C); - eSlotMachine->unk49 = spriteId; + eSlotMachine->unk49[0] = spriteId; spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7); sprite = gSprites + spriteId; sprite->oam.priority = 1; sprite->coordOffsetEnabled = TRUE; SetSubspriteTables(sprite, gSubspriteTables_83ED75C); - eSlotMachine->unk4A = spriteId; + eSlotMachine->unk49[1] = spriteId; } extern const struct SpriteTemplate gSpriteTemplate_83ED4A4; @@ -3251,6 +3251,68 @@ void sub_810535C(struct Sprite *sprite) StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20)); } +extern const struct SpriteTemplate gSpriteTemplate_83ED4D4; +extern const struct SubspriteTable gSubspriteTables_83ED7B4[]; + +void sub_81053A0(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9); + struct Sprite *sprite = gSprites + spriteId; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + SetSubspriteTables(sprite, gSubspriteTables_83ED7B4); + eSlotMachine->unk4E[0] = spriteId; + + spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4); + sprite = gSprites + spriteId; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + SetSubspriteTables(sprite, gSubspriteTables_83ED7B4); + eSlotMachine->unk4E[1] = spriteId; +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED4EC; +extern const struct SubspriteTable gSubspriteTables_83ED7D4[]; + +void sub_810545C(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11); + struct Sprite *sprite = gSprites + spriteId; + sprite->coordOffsetEnabled = TRUE; + sprite->oam.priority = 1; + SetSubspriteTables(sprite, gSubspriteTables_83ED7D4); + eSlotMachine->unk40 = spriteId; +} + +void sub_81054B8(void) +{ + u8 i; + + DestroySprite(gSprites + eSlotMachine->unk40); + for (i = 0; i < 2; i++) + { + DestroySprite(gSprites + eSlotMachine->unk49[i]); + } + for (i = 0; i < 3; i++) + { + DestroySprite(gSprites + eSlotMachine->unk4B[i]); + } +} + +void sub_8105524(void) +{ + u8 i; + for (i = 0; i < 2; i++) + { + DestroySprite(gSprites + eSlotMachine->unk4E[i]); + } +} + +void sub_8105554(void) +{ + DestroySprite(gSprites + eSlotMachine->unk42); +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From 39d2d1f37c62ffc458c82943fbfceb86959ef1a3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 31 Dec 2017 20:18:22 -0500 Subject: through sub_81056C0 --- src/field/slot_machine.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 4b580839c..8ca873e84 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3313,6 +3313,67 @@ void sub_8105554(void) DestroySprite(gSprites + eSlotMachine->unk42); } +extern const struct SpriteTemplate gSpriteTemplate_83ED504; + +void sub_8105578(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->hFlip = TRUE; + eSlotMachine->unk50[0] = spriteId; + sprite->data[0] = 8; + sprite->data[1] = -1; + sprite->data[2] = -1; + sprite->data[7] = 0x20; + + spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5); + sprite = gSprites + spriteId; + sprite->oam.priority = 1; + eSlotMachine->unk50[1] = spriteId; + sprite->data[1] = 1; + sprite->data[2] = -1; + sprite->data[7] = 0x20; +} + +void sub_810562C(struct Sprite *sprite) +{ + if (sprite->data[0] != 0) + { + sprite->data[0]--; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->invisible = TRUE; + } + else + { + sprite->invisible = FALSE; + sprite->pos2.x += sprite->data[1]; + sprite->pos2.y += sprite->data[2]; + if (++sprite->data[3] >= 8) + { + sprite->data[0] = sprite->data[7]; + sprite->data[3] = 0; + } + } +} + +void sub_8105688(s16 a0) +{ + gSprites[eSlotMachine->unk50[0]].data[7] = a0; + gSprites[eSlotMachine->unk50[1]].data[7] = a0; +} + +void sub_81056C0(void) +{ + u8 i; + + for (i = 0; i < 2; i++) + { + DestroySprite(gSprites + eSlotMachine->unk50[i]); + } +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From 99c897b71582e942e47765837c936b5fd79bf569 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 31 Dec 2017 21:11:48 -0500 Subject: through sub_81059B8 --- src/field/slot_machine.c | 116 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 8ca873e84..9a098d4cf 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -9,6 +9,7 @@ #include "main.h" #include "slot_machine.h" #include "decompress.h" +#include "trig.h" #include "palette.h" #include "task.h" #include "util.h" @@ -3374,6 +3375,121 @@ void sub_81056C0(void) } } +extern const struct SpriteTemplate gSpriteTemplate_83ED51C; + +void sub_81056F0(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3); + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].data[0] = 1; + gSprites[spriteId].data[5] = 0; + gSprites[spriteId].data[6] = 16; + gSprites[spriteId].data[7] = 8; + eSlotMachine->unk52[0] = spriteId; + + spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3); + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].hFlip = TRUE; + eSlotMachine->unk52[1] = spriteId; +} + +extern const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled through gUnknown_083ECCF8 + +void sub_8105784(struct Sprite *sprite) +{ + // u8 sp[] = {16, 0}; + u8 sp[ARRAY_COUNT(gUnknown_083ECC58)]; + memcpy(sp, gUnknown_083ECC58, sizeof gUnknown_083ECC58); + if (sprite->data[0] && --sprite->data[6] <= 0) + { + MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, sp[sprite->data[5]], sp[sprite->data[5]], sp[sprite->data[5]]); + ++sprite->data[5]; + sprite->data[5] &= 1; + sprite->data[6] = sprite->data[7]; + } +} + +void sub_81057E8(s16 a0) +{ + gSprites[eSlotMachine->unk52[0]].data[7] = a0; +} + +void sub_8105804(void) +{ + u8 i; + MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0); + for (i = 0; i < 2; i++) + { + DestroySprite(gSprites + eSlotMachine->unk52[i]); + } +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED534; + +void sub_8105854(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6); + gSprites[spriteId].oam.priority = 1; + eSlotMachine->unk41 = spriteId; +} + +void sub_8105894(struct Sprite *sprite) +{ + sprite->pos2.y = gSpriteCoordOffsetY; +} + +void sub_81058A0(void) +{ + DestroySprite(gSprites + eSlotMachine->unk41); +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED54C; +extern const u16 gUnknown_083ECC5A[4]; // don't remove this until decompiled through gUnknown_083ECCF8 + +void sub_81058C4(void) +{ + u8 i; + // u16 sp[] = {0x0, 0x40, 0x80, 0xC0}; + u16 sp[ARRAY_COUNT(gUnknown_083ECC5A)]; + memcpy(sp, gUnknown_083ECC5A, sizeof gUnknown_083ECC5A); + for (i = 0; i < 4; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->coordOffsetEnabled = TRUE; + sprite->data[0] = sp[i]; + eSlotMachine->unk54[i] = spriteId; + } +} + +void sub_810594C(struct Sprite *sprite) +{ + sprite->data[0] -= 2; + sprite->data[0] &= 0xff; + sprite->pos2.x = Cos(sprite->data[0], 20); + sprite->pos2.y = Sin(sprite->data[0], 6); + sprite->subpriority = 0; + if (sprite->data[0] >= 0x80) + { + sprite->subpriority = 2; + } + if (++sprite->data[1] >= 16) + { + sprite->hFlip ^= 1; + sprite->data[1] = 0; + } +} + +void sub_81059B8(void) +{ + u8 i; + for (i = 0; i < 4; i++) + { + DestroySprite(gSprites + eSlotMachine->unk54[i]); + } +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From f35549349e3c51003c124c74a8917b84a3f8e704 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 31 Dec 2017 21:45:59 -0500 Subject: through sub_8105BF8 --- src/field/slot_machine.c | 108 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 104 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9a098d4cf..f10ed4352 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -212,9 +212,9 @@ void sub_81059B8(void); void sub_81059E8(void); bool8 sub_8105ACC(void); void sub_8105AEC(void); -u8 sub_8105B1C(s16 a0, s16 a1); -void sub_8105B88(u8 a0); -u8 sub_8105BF8(u8, u32, s16, s16, s16); +u8 sub_8105B1C(s16 x, s16 y); +void sub_8105B88(u8 spriteId); +u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4); void sub_81063C0(void); static void sub_8106448(void); void sub_81064B8(void); @@ -3022,7 +3022,7 @@ void sub_8104CAC(u8 arg0) { } } -void sub_8104D30(u8 a0, u32 a1, s16 a2, s16 a3, s16 a4) +void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) { u8 i; struct Task *task = gTasks + eSlotMachine->unk3D; @@ -3490,6 +3490,106 @@ void sub_81059B8(void) } } +extern const struct SpriteTemplate gSpriteTemplate_83ED564; + +void sub_81059E8(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 1; + sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + InitSpriteAffineAnim(sprite); + eSlotMachine->unk43 = spriteId; +} + +void sub_8105A38(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + if (sprite->affineAnimEnded) + sprite->data[0]++; + } + else if (sprite->data[0] == 1) + { + sprite->invisible ^= 1; + if (++sprite->data[2] >= 24) + { + sprite->data[0]++; + sprite->data[2] = 0; + } + } + else + { + sprite->invisible = TRUE; + if (++sprite->data[2] >= 16) + sprite->data[7] = 1; + } + sprite->data[1] &= 0xff; + sprite->data[1] += 16; + sprite->pos2.y -= (sprite->data[1] >> 8); +} + +u8 sub_8105ACC(void) +{ + return gSprites[eSlotMachine->unk43].data[7]; +} + +void sub_8105AEC(void) +{ + struct Sprite *sprite = gSprites + eSlotMachine->unk43; + FreeOamMatrix(sprite->oam.matrixNum); + DestroySprite(sprite); +} + +extern const struct SpriteTemplate gSpriteTemplate_83ED6CC; + +u8 sub_8105B1C(s16 x, s16 y) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 2; + sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + InitSpriteAffineAnim(sprite); + return spriteId; +} + +void sub_8105B70(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + sprite->data[7] = 1; +} + +void sub_8105B88(u8 spriteId) +{ + struct Sprite *sprite = gSprites + spriteId; + FreeOamMatrix(sprite->oam.matrixNum); + DestroySprite(sprite); +} + +extern const SpriteCallback gUnknown_083ECF0C[]; +extern const s16 gUnknown_083ECE7E[][2]; + +u8 sub_8105BB4(u8 a0, u8 a1, s16 a2) +{ + return sub_8105BF8(a0, gUnknown_083ECF0C[a1], gUnknown_083ECE7E[a1][0], gUnknown_083ECE7E[a1][1], a2); +} + +extern const struct SpriteTemplate *gUnknown_083EDB5C[]; +extern const struct SubspriteTable *gUnknown_083EDBC4[]; + +u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) +{ + u8 spriteId = CreateSprite(gUnknown_083EDB5C[templateIdx], x, y, 16); + struct Sprite *sprite = gSprites + spriteId; + sprite->oam.priority = 3; + sprite->callback = callback; + sprite->data[6] = a4; + sprite->data[7] = 1; + if (gUnknown_083EDBC4[templateIdx]) + SetSubspriteTables(sprite, gUnknown_083EDBC4[templateIdx]); + return spriteId; +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From de03aa5bcb74f63d53b9603acf4e512a14b31663 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 31 Dec 2017 22:42:40 -0500 Subject: through sub_8105D3C --- src/field/slot_machine.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index f10ed4352..91cd12db6 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3590,6 +3590,88 @@ u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) return spriteId; } +void sub_8105C64(struct Sprite *sprite) +{ + sprite->data[7] = 0; +} + +extern const s16 gUnknown_083ECC62[4]; // do not delete yet +extern const s16 gUnknown_083ECC6A[4]; // do not delete yet + +void sub_8105C6C(struct Sprite *sprite) +{ + // s16 sp0[] = {4, -4, 4, -4}; + // s16 sp8[] = {4, 4, -4, -4}; + + s16 sp0[ARRAY_COUNT(gUnknown_083ECC62)]; + s16 sp8[ARRAY_COUNT(gUnknown_083ECC6A)]; + memcpy(sp0, gUnknown_083ECC62, sizeof gUnknown_083ECC62); + memcpy(sp8, gUnknown_083ECC6A, sizeof gUnknown_083ECC6A); + + if (sprite->data[1]++ >= 16) + { + sprite->subspriteTableNum ^= 1; + sprite->data[1] = 0; + } + sprite->pos2.x = 0; + sprite->pos2.y = 0; + if (sprite->subspriteTableNum != 0) + { + sprite->pos2.x = sp0[sprite->data[6]]; + sprite->pos2.y = sp8[sprite->data[6]]; + } +} + +void sub_8105CF0(struct Sprite *sprite) +{ + sprite->hFlip = TRUE; + sub_8105C6C(sprite); +} + +void sub_8105D08(struct Sprite *sprite) +{ + sprite->vFlip = TRUE; + sub_8105C6C(sprite); +} + +void sub_8105D20(struct Sprite *sprite) +{ + sprite->hFlip = TRUE; + sprite->vFlip = TRUE; + sub_8105C6C(sprite); +} + +void sub_8105D3C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0xd0) + { + sprite->pos1.x = 0xd0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 90) + { + sprite->data[0]++; + } + break; + case 2: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0x110) + { + sprite->data[0]++; + } + break; + case 3: + sprite->data[7] = 0; + break; + } +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From c96d7a085f00911275f95c51f4cea5be03dcbd3a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 1 Jan 2018 19:45:25 -0500 Subject: through sub_8105F9C --- src/field/slot_machine.c | 171 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 91cd12db6..dbc3da45a 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3672,6 +3672,177 @@ void sub_8105D3C(struct Sprite *sprite) } } +void sub_8105DA4(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.x -= 4; + if (sprite->pos1.x <= 0xd0) + { + sprite->pos1.x = 0xd0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] > 90) + { + sprite->data[0]++; + } + break; + case 2: + sprite->pos1.x -= 4; + if (sprite->pos1.x <= 0x90) + { + sprite->data[0]++; + } + break; + case 3: + sprite->data[7] = 0; + break; + } +} + +void sub_8105E08(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + StartSpriteAnim(sprite, eSlotMachine->unk0A - 1); + sprite->data[0]++; + // fallthrough + case 1: + if (++sprite->data[1] >= 4) + { + sprite->data[0]++; + sprite->data[1] = 0; + } + break; + case 2: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0xd0) + { + sprite->pos1.x = 0xd0; + sprite->data[0]++; + } + break; + case 3: + if (++sprite->data[1] > 90) + { + sprite->data[0]++; + } + break; + case 4: + sprite->pos1.x += 4; + if (sprite->pos1.x >= 0xf8) + { + sprite->data[0]++; + } + break; + case 5: + sprite->data[7] = 0; + break; + } +} + +void sub_8105EB4(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->animPaused = TRUE; + sprite->data[0]++; + // fallthrough + case 1: + sprite->pos1.y += 8; + if (sprite->pos1.y >= 0x70) + { + sprite->pos1.y = 0x70; + sprite->data[1] = 16; + sprite->data[0]++; + } + break; + case 2: + if (sprite->data[2] == 0) + { + sprite->pos1.y -= sprite->data[1]; + sprite->data[1] = -sprite->data[1]; + if (++sprite->data[3] >= 2) + { + sprite->data[1] >>= 2; + sprite->data[3] = 0; + if (sprite->data[1] == 0) + { + sprite->data[0]++; + sprite->data[7] = 0; + sprite->animPaused = FALSE; + } + } + } + sprite->data[2]++; + sprite->data[2] &= 0x07; + break; + } +} + +void sub_8105F54(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[1] > 8) + { + sprite->data[0]++; + } + break; + case 1: + sprite->pos1.y += 2; + if (sprite->pos1.y >= 0x30) + { + sprite->pos1.y = 0x30; + sprite->data[0]++; + sprite->data[7] = 0; + } + break; + } +} + +void sub_8105F9C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->invisible = TRUE; + if (++sprite->data[1] > 0x20) + { + sprite->data[0]++; + sprite->data[1] = 5; + sprite->oam.mosaic = TRUE; + sprite->invisible = FALSE; + StartSpriteAnim(sprite, 1); + REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8; + } + break; + case 1: + sprite->data[1] -= (sprite->data[2] >> 8); + if (sprite->data[1] < 0) + { + sprite->data[1] = 0; + } + REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8; + sprite->data[2] &= 0xff; + sprite->data[2] += 0x80; + if (sprite->data[1] == 0) + { + sprite->data[0]++; + sprite->data[7] = 0; + sprite->oam.mosaic = FALSE; + StartSpriteAnim(sprite, 0); + } + break; + } +} + asm(".section .text_b"); static void sub_8106448(void) { -- cgit v1.2.3 From 25a4ce0c32704beacba2addde906f56c7cb8c592 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 1 Jan 2018 21:03:00 -0500 Subject: Remaining functions in slot_machine --- src/field/slot_machine.c | 228 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 227 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index dbc3da45a..d33e46099 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -216,6 +216,7 @@ u8 sub_8105B1C(s16 x, s16 y); void sub_8105B88(u8 spriteId); u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4); void sub_81063C0(void); +void sub_8106404(void); static void sub_8106448(void); void sub_81064B8(void); void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); @@ -3843,7 +3844,232 @@ void sub_8105F9C(struct Sprite *sprite) } } -asm(".section .text_b"); +extern const u16 *const gUnknown_083EDE10[]; + +void sub_8106058(struct Sprite *sprite) +{ + if (sprite->data[1] < 3) + { + LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20); + if (++sprite->data[2] >= 4) + { + sprite->data[1]++; + sprite->data[2] = 0; + } + } + else + { + LoadPalette(gUnknown_083EDE10[sprite->data[1]], (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20); + if (++sprite->data[2] >= 25) + { + sprite->data[1] = 0; + sprite->data[2] = 0; + } + } + StartSpriteAnimIfDifferent(sprite, 1); + sprite->data[7] = 0; +} + +extern const s16 gUnknown_083ECC72[8]; // do not remove these yet +extern const s16 gUnknown_083ECC82[8]; // do not remove these yet +extern const s16 gUnknown_083ECC92[8]; // do not remove these yet + +void sub_81060FC(struct Sprite *sprite) +{ + // s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0}; + // s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48}; + // s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8}; + + s16 sp00[ARRAY_COUNT(gUnknown_083ECC72)]; + s16 sp10[ARRAY_COUNT(gUnknown_083ECC82)]; + s16 sp20[ARRAY_COUNT(gUnknown_083ECC92)]; + + memcpy(sp00, gUnknown_083ECC72, sizeof gUnknown_083ECC72); + memcpy(sp10, gUnknown_083ECC82, sizeof gUnknown_083ECC82); + memcpy(sp20, gUnknown_083ECC92, sizeof gUnknown_083ECC92); + + switch (sprite->data[0]) + { + case 0: + sprite->pos2.x = sp00[sprite->data[6]]; + sprite->pos2.y = sp10[sprite->data[6]]; + sprite->data[1] = sp20[sprite->data[6]]; + sprite->data[0]++; + // fallthrough + case 1: + if (sprite->data[1]-- == 0) + { + sprite->data[0]++; + } + break; + case 2: + if (sprite->pos2.x > 0) + { + sprite->pos2.x -= 4; + } + else if (sprite->pos2.x < 0) + { + sprite->pos2.x += 4; + } + if (sprite->pos2.y > 0) + { + sprite->pos2.y -= 4; + } + else if (sprite->pos2.y < 0) + { + sprite->pos2.y += 4; + } + if (sprite->pos2.x == 0 && sprite->pos2.y == 0) + { + sprite->data[0]++; + } + break; + } +} + +extern const s16 gUnknown_083ECCA2[8]; // do not remove this yet + +void sub_81061C8(struct Sprite *sprite) +{ + s16 sp0[ARRAY_COUNT(gUnknown_083ECCA2)]; + + memcpy(sp0, gUnknown_083ECCA2, sizeof gUnknown_083ECCA2); + + if (sprite->data[0] == 0) + { + sprite->data[0]++; + sprite->data[1] = 12; + } + sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]); + sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]); + if (sprite->data[1]) + { + sprite->data[1]--; + } +} + +void sub_8106230(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + eSlotMachine->winIn = 0x2f; + eSlotMachine->winOut = 0x3f; + eSlotMachine->win0v = 0x2088; + sprite->invisible = TRUE; + sprite->data[0]++; + // fallthrough + case 1: + sprite->data[1] += 2; + sprite->data[2] = sprite->data[1] + 0xb0; + sprite->data[3] = 0xf0 - sprite->data[1]; + if (sprite->data[2] > 0xd0) + { + sprite->data[2] = 0xd0; + } + if (sprite->data[3] < 0xd0) + { + sprite->data[3] = 0xd0; + } + eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3]; + if (sprite->data[1] > 0x33) + { + sprite->data[0]++; + eSlotMachine->winIn = 0x3f; + } + break; + case 2: + if (eSlotMachine->bet == 0) + { + break; + } + sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0); + eSlotMachine->win0h = 0xc0e0; + eSlotMachine->win0v = 0x6880; + eSlotMachine->winIn = 0x2f; + sprite->data[0]++; + sprite->data[1] = 0; + // fallthrough + case 3: + sprite->data[1] += 2; + sprite->data[2] = sprite->data[1] + 0xc0; + sprite->data[3] = 0xe0 - sprite->data[1]; + if (sprite->data[2] > 0xd0) + { + sprite->data[2] = 0xd0; + } + if (sprite->data[3] < 0xd0) + { + sprite->data[3] = 0xd0; + } + eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3]; + if (sprite->data[1] > 0x0f) + { + sprite->data[0]++; + eSlotMachine->winIn = 0x3f; + } + break; + } +} + +void nullsub_70(void) +{ + +} + +void sub_8106364(void) +{ + REG_MOSAIC = 0; +} + +extern const u16 *const gUnknown_083EDE20; + +void sub_8106370(void) +{ + LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20); +} + +void sub_810639C(void) +{ + eSlotMachine->win0h = 0xf0; + eSlotMachine->win0v = 0xa0; + eSlotMachine->winIn = 0x3f; + eSlotMachine->winOut = 0x3f; +} + +extern const u8 gSlotMachineReelTimeLights_Gfx[]; +extern const u8 gUnknown_083EDE8C[]; +extern const struct SpriteSheet gUnknown_083EDC2C[]; +extern const struct SpritePalette gSlotMachineSpritePalettes[]; + +void sub_81063C0(void) +{ + sub_8106404(); + LZDecompressWram(gSlotMachineReelTimeLights_Gfx, ewram10000); + LZDecompressWram(gUnknown_083EDE8C, ewram10000 + 0x3200); + LoadSpriteSheets(gUnknown_083EDC2C); + LoadSpritePalettes(gSlotMachineSpritePalettes); +} + +extern const u8 *gUnknown_083EDCE4; +extern const struct SpriteSheet gUnknown_083EDCDC; + +void sub_8106404(void) +{ + u8 *dest = ewram10000; + u8 i = 0; + const struct SpriteSheet *sheet = &gUnknown_083EDCDC; + const u8 *src = gUnknown_083EDCE4; + for (i = 0; i < 0x40; i++) + { + u8 j; + for (j = 0; j < 0x20; j++, dest++) + { + *dest = src[j]; + } + } + LoadSpriteSheet(sheet); +} static void sub_8106448(void) { u32 offsetRead, offsetWrite; -- cgit v1.2.3 From d84dfb66de48aca1146f86b2b790a2c73f964b51 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 1 Jan 2018 21:11:54 -0500 Subject: Decompile enough data to nuke the explicit calls to memcpy --- src/field/slot_machine.c | 59 ++++++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index d33e46099..594d743f1 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -1326,7 +1326,7 @@ bool8 sub_8102B80(struct Task *task) return FALSE; } -extern const u8 gUnknown_083ECCB2[][21]; +const u8 gUnknown_083ECCB2[][21]; u8 sub_8102BA4(u8 x, s16 y) { @@ -1346,7 +1346,7 @@ u8 sub_8102BF8(u8 x, s16 y) return sub_8102BA4(x, y + r6); } -extern const u8 gUnknown_083ECCF1[]; +const u8 gUnknown_083ECCF1[]; u8 sub_8102C48(s16 a0) { @@ -3398,9 +3398,7 @@ extern const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled thro void sub_8105784(struct Sprite *sprite) { - // u8 sp[] = {16, 0}; - u8 sp[ARRAY_COUNT(gUnknown_083ECC58)]; - memcpy(sp, gUnknown_083ECC58, sizeof gUnknown_083ECC58); + u8 sp[] = {16, 0}; if (sprite->data[0] && --sprite->data[6] <= 0) { MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, sp[sprite->data[5]], sp[sprite->data[5]], sp[sprite->data[5]]); @@ -3445,14 +3443,11 @@ void sub_81058A0(void) } extern const struct SpriteTemplate gSpriteTemplate_83ED54C; -extern const u16 gUnknown_083ECC5A[4]; // don't remove this until decompiled through gUnknown_083ECCF8 void sub_81058C4(void) { u8 i; - // u16 sp[] = {0x0, 0x40, 0x80, 0xC0}; - u16 sp[ARRAY_COUNT(gUnknown_083ECC5A)]; - memcpy(sp, gUnknown_083ECC5A, sizeof gUnknown_083ECC5A); + u16 sp[] = {0x0, 0x40, 0x80, 0xC0}; for (i = 0; i < 4; i++) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0); @@ -3596,18 +3591,10 @@ void sub_8105C64(struct Sprite *sprite) sprite->data[7] = 0; } -extern const s16 gUnknown_083ECC62[4]; // do not delete yet -extern const s16 gUnknown_083ECC6A[4]; // do not delete yet - void sub_8105C6C(struct Sprite *sprite) { - // s16 sp0[] = {4, -4, 4, -4}; - // s16 sp8[] = {4, 4, -4, -4}; - - s16 sp0[ARRAY_COUNT(gUnknown_083ECC62)]; - s16 sp8[ARRAY_COUNT(gUnknown_083ECC6A)]; - memcpy(sp0, gUnknown_083ECC62, sizeof gUnknown_083ECC62); - memcpy(sp8, gUnknown_083ECC6A, sizeof gUnknown_083ECC6A); + s16 sp0[] = {4, -4, 4, -4}; + s16 sp8[] = {4, 4, -4, -4}; if (sprite->data[1]++ >= 16) { @@ -3870,23 +3857,11 @@ void sub_8106058(struct Sprite *sprite) sprite->data[7] = 0; } -extern const s16 gUnknown_083ECC72[8]; // do not remove these yet -extern const s16 gUnknown_083ECC82[8]; // do not remove these yet -extern const s16 gUnknown_083ECC92[8]; // do not remove these yet - void sub_81060FC(struct Sprite *sprite) { - // s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0}; - // s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48}; - // s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8}; - - s16 sp00[ARRAY_COUNT(gUnknown_083ECC72)]; - s16 sp10[ARRAY_COUNT(gUnknown_083ECC82)]; - s16 sp20[ARRAY_COUNT(gUnknown_083ECC92)]; - - memcpy(sp00, gUnknown_083ECC72, sizeof gUnknown_083ECC72); - memcpy(sp10, gUnknown_083ECC82, sizeof gUnknown_083ECC82); - memcpy(sp20, gUnknown_083ECC92, sizeof gUnknown_083ECC92); + s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0}; + s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48}; + s16 sp20[] = {16, 12, 16, 0, 0, 4, 8, 8}; switch (sprite->data[0]) { @@ -3927,13 +3902,9 @@ void sub_81060FC(struct Sprite *sprite) } } -extern const s16 gUnknown_083ECCA2[8]; // do not remove this yet - void sub_81061C8(struct Sprite *sprite) { - s16 sp0[ARRAY_COUNT(gUnknown_083ECCA2)]; - - memcpy(sp0, gUnknown_083ECCA2, sizeof gUnknown_083ECCA2); + s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24}; if (sprite->data[0] == 0) { @@ -4152,3 +4123,13 @@ void sub_81065DC(void) { } } } + +const u8 gUnknown_083ECCB2[][21] = { + {0, 4, 2, 6, 5, 3, 1, 3, 4, 5, 6, 2, 0, 5, 3, 6, 2, 1, 5, 3, 6}, + {0, 4, 6, 3, 2, 4, 6, 5, 5, 3, 1, 3, 6, 4, 2, 3, 6, 4, 3, 6, 4}, + {0, 5, 1, 6, 3, 2, 6, 3, 5, 2, 6, 3, 2, 5, 6, 3, 2, 5, 6, 3, 4} +}; + +const u8 gUnknown_083ECCF1[] = { + 1, 0, 5, 4, 3, 2 +}; -- cgit v1.2.3 From 28e98d9df7db41f9dcc813ad4e0b37c568833aee Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 1 Jan 2018 23:09:51 -0600 Subject: decompile sub_80E60D8 - sub_80E6AC4 --- src/easy_chat.c | 107 ++++++- src/easy_chat_before.c | 684 +++++++++++++++++++++++++++++++++++++++++++++ src/pokemon/pokemon_menu.c | 8 +- 3 files changed, 793 insertions(+), 6 deletions(-) create mode 100644 src/easy_chat_before.c (limited to 'src') diff --git a/src/easy_chat.c b/src/easy_chat.c index 1dce5863e..ee35341cc 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1,5 +1,6 @@ #include "global.h" #include "easy_chat.h" +#include "ewram.h" #include "constants/easy_chat.h" #include "data2.h" #include "event_data.h" @@ -11,7 +12,6 @@ #include "strings2.h" #include "text.h" -static bool8 sub_80EB680(u16 *, u16, u16, u16); static u16 sub_80EB9D8(void); static u16 sub_80EB960(void); @@ -22,6 +22,109 @@ extern u16 gSpecialVar_0x8004; IWRAM_DATA u8 gUnknown_03000740; +/* + +extern const u8 *const gUnknown_083DB694[]; + +u16 sub_80EB2D4(u16 a) +{ + u16 r2; + u16 r1; + const u8 *str; + + if (sub_80EB37C(a) != 0) + return StringLength(gOtherText_ThreeQuestions); + //_080EB2F8 + if (a == 0xFFFF) + return 0; + //_080EB308 + r2 = a >> 9; + r1 = a & 0x1FF; + switch (r2) + { + case 0: + case 0x13: + case 0x14: + case 0x15: + str = gSpeciesNames[r1]; + break; + case 0x12: + str = gMoveNames[r1]; + break; + case 0x15: + str = + } +} +*/ + +#ifdef NONMATCHING +bool8 sub_80EB37C(u16 a) +{ + u16 i; + u16 r2; + u16 r5; + u16 *r4; + + if (a == 0xFFFF) + return FALSE; + + r2 = a >> 9; + r5 = a & 0x1FF; + + if (r2 <= 0x15) + { + /* + switch (r2) + { + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + case EC_GROUP_TRENDY_SAYING: + r4 = gEasyChatGroupWords[r2]; + for (i = 0; i < gEasyChatGroupSizes[r2]; i++) + { + if (r5 == r4[i]) + return FALSE; + } + break; + default: + if (r5 < gEasyChatGroupSizes[a]) + return FALSE; + break; + } + */ + if ((r2 == EC_GROUP_MOVE_1 || r2 == EC_GROUP_MOVE_2) + || (r2 == EC_GROUP_POKEMON || r2 == EC_GROUP_POKEMON_2)) + { + r4 = gEasyChatGroupWords[r2]; + for (i = 0; i < gEasyChatGroupSizes[r2]; i++) + { + if (r5 == r4[i]) + return FALSE; + } + } + else if (r2 == EC_GROUP_TRENDY_SAYING) + { + r4 = gEasyChatGroupWords[r2]; + for (i = 0; i < gEasyChatGroupSizes[r2]; i++) + { + if (r5 == r4[i]) + return FALSE; + } + } + else + { + if (r5 < gEasyChatGroupSizes[a]) + return FALSE; + } + } + return TRUE; +} +#else + +#endif + // returns the end of the destination buffer text u8 *EasyChat_GetWordText(u8 *dst, u16 word) { @@ -188,7 +291,7 @@ u16 unref_sub_80EB5E0(u16 arg0) return length; } -static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) +bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) { return FALSE; } diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c new file mode 100644 index 000000000..7af22df53 --- /dev/null +++ b/src/easy_chat_before.c @@ -0,0 +1,684 @@ +#include "global.h" +#include "constants/easy_chat.h" +#include "constants/species.h" +#include "easy_chat.h" +#include "event_data.h" +#include "ewram.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "string_util.h" +#include "strings.h" +#include "unknown_task.h" + +extern const struct WindowConfig gWindowConfig_81E6D54; +extern const struct WindowConfig gWindowConfig_81E6DA8; + +extern void sub_80546B8(void); + +struct Shared1000 +{ + void *unk0; // callback + u16 *unk4; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u8 fillerC[0x20-0xC]; + void (*unk20)(void); + u16 unk24; + u8 unk26; + u8 filler27[0x28-0x27]; + u16 unk28; + u8 unk2A[11][2]; // unknown length + u8 unk40[4][14]; + u8 unk78[0x83-0x78]; // unknown length + u8 unk83; + u8 unk84; + u8 unk85; + u8 unk86; + u8 unk87; + u16 unk88; + u16 unk8A; + u8 filler8C[0x1A8-0x8C]; + u8 unk1A8; + u8 unk1A9; + u8 unk1AA[0xB5-0xAA]; // unknown length + u8 unk1B5; + s8 unk1B6; + u8 unk1B7; + u8 unk1B8; + u8 filler1B9[0x1BA-0x1B9]; + u16 unk1BA; + u8 filler1BC[0xBE - 0xBC]; + u8 unk1BE; + u8 filler1BF[0x4142-0x1BF]; + u16 unk4142[(0x78-0x42)/2]; + u16 unk4178[(0x99A4-0x4178)/2]; // unknown length + + u8 unk99A4; + u8 unk99A5; + u8 unk99A6[0xA28-0x9A6]; + s8 unk9A28; + u8 unk9A29; + u8 filler9A2A[0xC7C-0xA2A]; + + u16 unk9C7C; + s16 unk9C7E; + u8 filler9C80[0xDA4-0xC80]; + u8 unk9DA4[0x24]; + u8 filler9DC8[0xF6E - 0xDC8]; + u8 unk9F6E[1]; // unknown length +}; + +#define static_assert(cond) \ + typedef char test_[(cond) ? 1 : -1] + +static_assert(offsetof(struct Shared1000, unk4142) == 0x4142); + +#define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) + +const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING}; +const u16 gBerryMasterWifePhrases[][2] = +{ +#if ENGLISH + {EC_WORD_GREAT, EC_WORD_BATTLE}, + {EC_WORD_CHALLENGE, EC_WORD_CONTEST}, + {EC_WORD_OVERWHELMING, EC_POKEMON(LATIAS)}, + {EC_WORD_COOL, EC_POKEMON(LATIOS)}, + {EC_WORD_SUPER, EC_WORD_HUSTLE}, +#else + {EC_WORD_GREAT, EC_WORD_FIGHT}, + {EC_WORD_CONTEST, EC_WORD_CHALLENGE}, + {EC_POKEMON(LATIAS), EC_WORD_OVERWHELMING}, + {EC_POKEMON(LATIOS), EC_WORD_COOL}, + {EC_WORD_SUPER, 0xFFFF}, +#endif +}; + +// const pointer to shared1000. easy_chat might be two separate files. +struct Shared1000 *const gUnknown_083DB694 = &shared1000; + +const struct UnknownTaskStruct gUnknown_083DB698 = +{ + ®_BG3VOFS, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1 +}; + +const u8 gUnknown_083DB6A4[] = {4, 0, 0, 0, 1, 5, 0, 2, 2, 3, 2, 2, 2, 3}; + +// choose by alphabet keyboard +const u8 gUnknown_083DB6B2[][16] = +{ + _("ABCDEF "), + _("GHIJKL"), + _("MNOPQRS"), + _("TUVWXYZ"), +}; + +struct EasyChatPrompt +{ + const u8 *text1; + const u8 *text2; + bool8 unk8; +}; + +const struct EasyChatPrompt gUnknown_083DB6F4[] = +{ + {OtherText_MakeProfilePage1, OtherText_MakeProfilePage2, TRUE}, + {OtherText_MakeMessagePage1, OtherText_MakeMessagePage2, TRUE}, + {OtherText_CombineNinePhrasesPage1, OtherText_CombineNinePhrasesPage2, TRUE}, + {OtherText_DescribeFeelingsPage1, OtherText_DescribeFeelingsPage2, TRUE}, + {OtherText_ImproveBardSongPage1, OtherText_ImproveBardSongPage2, TRUE}, + {OtherText_CombineTwoPhrasesPage1, OtherText_CombineTwoPhrasesPage2, TRUE}, + {OtherText_YourProfile, OtherText_ConfirmTrendyPage2, FALSE}, + {OtherText_YourFeelingBattle, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_SetWinMessage, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_SetLossMessage, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_MailMessage, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_MailSalutation, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_NewSong, OtherText_ConfirmTrendyPage2, FALSE}, + {OtherText_TheAnswer, OtherText_ConfirmTrendyPage2, FALSE}, + {OtherText_ConfirmTrendyPage1, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_HipsterPage1, OtherText_HipsterPage2, TRUE}, + {OtherText_WithFourPhrases, OtherText_CombineNinePhrasesPage2, TRUE}, +}; + +const u8 gUnknown_083DB7C0[][2] = +{ + { 0, 6}, + { 1, 7}, + { 1, 8}, + { 1, 9}, + { 2, 10}, + {16, 13}, + { 4, 12}, + { 3, 13}, + { 3, 13}, + { 5, 14}, + { 3, 13}, + { 3, 13}, + { 3, 13}, + {15, 13}, +}; + +void sub_80E62F8(void); +void sub_80E6424(void); +void sub_80E6554(void); +void sub_80E6630(void); +void sub_80E6690(void); +void sub_80E682C(void (*)(void)); +void sub_80E69F8(void); +void sub_80E6A6C(void); +void sub_80E6A88(void); +void sub_80E6AA8(void); +void sub_80E6AC4(void); +void sub_80E6AE4(void); +void sub_80E7E50(void); +void sub_80E8218(void); +void sub_80E8398(); +void sub_80E88F0(void); +void sub_80E8BF4(); +void sub_80E8CEC(void); +void sub_80E8DD8(void); +void sub_80E91D4(); +void sub_80E9368(); +void sub_80E9A4C(void); +void sub_80EAC5C(void); +void sub_80EAD08(void); +u8 sub_80EAD7C(u8); +void sub_80EAECC(void); +void sub_80EB040(void); +void sub_80EB0B0(void); +bool8 sub_80EB680(u16 *, u16, u16, u16); + +void sub_80E60D8(void) +{ + u8 r4 = 3; + u16 *r1; + + switch (gSpecialVar_0x8004) + { + case 0: + r1 = gSaveBlock1.easyChats.unk2B1C; + break; + case 1: + r1 = gSaveBlock1.easyChats.unk2B28; + break; + case 2: + r1 = gSaveBlock1.easyChats.unk2B34; + break; + case 3: + r1 = gSaveBlock1.easyChats.unk2B40; + break; + case 4: + r1 = gSaveBlock1.mail[gSpecialVar_0x8005].words; + break; + case 6: + { + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u16 i; + for (i = 0; i < 6; i++) + bard->temporaryLyrics[i] = bard->songLyrics[i]; + r1 = bard->temporaryLyrics; + } + break; + case 5: + // TODO: Is this the right TV show? + r1 = gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubLetter.pad04; + r4 = gSpecialVar_0x8006; + break; + case 7: + // TODO: Is this the right TV show? + r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubOpinions.var1C[gSpecialVar_0x8006]; + r4 = 1; + break; + case 8: + // TODO: Is this the right TV show? + r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubOpinions.var02; + r4 = 0; + break; + case 9: + r1 = NULL; + break; + case 10: + r1 = &gSaveBlock1.gabbyAndTyData.quote; + *r1 = 0xFFFF; + r4 = 1; + break; + case 11: + // TODO: Is this the right TV show? + r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].bravoTrainer.var04[gSpecialVar_0x8006]; + r4 = 0; + break; + case 12: + // TODO: Is this the right TV show? + r1 = gSaveBlock1.tvShows[gSpecialVar_0x8005].bravoTrainerTower.var18; + r4 = 1; + break; + case 13: + shared1000.unk9C7C = 0xFFFF; + shared1000.unk9C7E = -1; + r1 = &shared1000.unk9C7C; + break; + default: + return; + } + sub_80E62A0(gSpecialVar_0x8004, r1, sub_80546B8, r4); +} + +void sub_80E62A0(u8 a, u16 *b, void *c, u8 d) +{ + shared1000.unk0 = c; + shared1000.unk4 = b; + shared1000.unk8 = a; + shared1000.unkB = d; + if (a == 9) + { + shared1000.unk4 = &shared1000.unk9C7C; + shared1000.unk9C7C = gSaveBlock1.easyChatPairs[0].words[0]; + shared1000.unk9C7E = gSaveBlock1.easyChatPairs[0].words[1]; + } + SetMainCallback2(sub_80E62F8); +} + +void sub_80E62F8(void) +{ + switch (gMain.state) + { + case 0: + default: + REG_DISPCNT = 0; + SetVBlankCallback(0); + ResetPaletteFade(); + ResetSpriteData(); + dp12_8087EA4(); + remove_some_task(); + sub_80EAD08(); + sub_80895F8(gUnknown_083DB698); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6DA8); + break; + case 2: + InitMenuWindow(&gWindowConfig_81E6D54); + InitMenuWindow(&gWindowConfig_81E6DA8); + MenuZeroFillScreen(); + break; + case 3: + sub_80E6424(); + break; + case 4: + sub_80E8DD8(); + break; + case 5: + sub_80E8218(); + sub_80E8CEC(); + break; + case 6: + sub_80E69F8(); + sub_80E682C(sub_80E6AA8); + SetVBlankCallback(sub_80E6A6C); + break; + case 7: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + case 8: + REG_DISPCNT = 0x1F40; + SetMainCallback2(sub_80E6A88); + FlagSet(FLAG_SYS_CHAT_USED); + break; + } + gMain.state++; +} + +void sub_80E6424(void) +{ + shared1000.unk9 = gUnknown_083DB6A4[shared1000.unk8]; + switch (shared1000.unk9) + { + case 4: + shared1000.unkA = 4; + shared1000.unk83 = 2; + shared1000.unk84 = 2; + shared1000.unk88 = 5; + shared1000.unk8A = 4; + break; + case 5: + shared1000.unkA = 4; + shared1000.unk83 = 1; + shared1000.unk84 = 4; + shared1000.unk88 = 16; + shared1000.unk8A = 2; + break; + case 0: + shared1000.unkA = 6; + shared1000.unk83 = 2; + shared1000.unk84 = 3; + shared1000.unk88 = 4; + shared1000.unk8A = 3; + break; + case 1: + shared1000.unkA = 9; + shared1000.unk83 = 2; + shared1000.unk84 = 5; + shared1000.unk88 = 4; + shared1000.unk8A = 0; + break; + case 2: + shared1000.unkA = 1; + shared1000.unk83 = 1; + shared1000.unk84 = 1; + shared1000.unk88 = 16; + shared1000.unk8A = 4; + break; + case 3: + shared1000.unkA = 2; + shared1000.unk83 = 2; + shared1000.unk84 = 1; + shared1000.unk88 = 5; + shared1000.unk8A = 3; + break; + } + shared1000.unk86 = 0; + shared1000.unk85 = 0; + shared1000.unk87 = 0; + shared1000.unk26 = 0; + shared1000.unk1BA = 0; + shared1000.unk1BE = 2; + sub_80E6554(); + sub_80EAECC(); + sub_80EB040(); + sub_80E7E50(); + sub_80E6630(); + sub_80E6690(); +} + +void sub_80E6554(void) +{ + u16 r4 = 0; + u16 r7; + u16 r5; + + for (r7 = 0; ; r7++) + { + for (r5 = 0; r5 < 2; r5++) + { + shared1000.unk2A[r7][r5] = r4++; + if (r4 == 17) + break; + } + if (r4 == 17) + break; + } + shared1000.unk28 = 17; + while (r4 < 22) + { + if (sub_80EAD7C(r4) != 0) + { + r5++; + if (r5 > 1) + { + r7++; + r5 = 0; + } + shared1000.unk2A[r7][r5] = r4; + shared1000.unk78[r4 - 17] = 1; // hmm... + shared1000.unk28++; + } + else + { + shared1000.unk78[r4 - 17] = 0; + } + r4++; + } + shared1000.unk1B6 = (shared1000.unk28 + 1) / 2; +} + +void sub_80E6630(void) +{ + u8 i; + u8 r3; + + for (i = 0; i < 4; i++) + { + const u8 *row = gUnknown_083DB6B2[i]; + + for (r3 = 0; row[r3] != EOS; r3++) + { + if (row[r3] != CHAR_SPACE) + shared1000.unk40[i][r3] = row[r3] + 0x46; + else + shared1000.unk40[i][r3] = CHAR_SPACE; + } + } +} + +void sub_80E6690(void) +{ + u8 *pointers[] = + { +#if ENGLISH + gSharedMem + 0xAC80, gSharedMem + 0xACC9, + gSharedMem + 0xAD12, gSharedMem + 0xAD5B, +#else + gSharedMem + 0xAFAC, gSharedMem + 0xAFF5, + gSharedMem + 0xB03E, gSharedMem + 0xB087, +#endif + }; + u8 *r3; + u16 i; + + for (i = 0; i < 2; i++) + { + const struct EasyChatPrompt *prompt = &gUnknown_083DB6F4[gUnknown_083DB7C0[shared1000.unk8][i]]; + + r3 = StringCopy(pointers[i * 2 + 0], prompt->text1); + if (prompt->unk8) + { + StringCopy(pointers[i * 2 + 1], prompt->text2); + } + else + { + *r3++ = CHAR_SPACE; + StringCopy(r3, prompt->text2); + *pointers[i * 2 + 1] = EOS; + } + } + + for (i = 0; i < 0x24; i++) + shared1000.unk9DA4[i] = 0; + shared1000.unk9DA4[i] = 0xFF; + + r3 = shared1000.unk9F6E; + r3[0] = EXT_CTRL_CODE_BEGIN; + r3[1] = 0x11; + r3[2] = 0xE0; + r3[3] = 0xFF; +} + +// Default profile phrase +const u16 gUnknown_083DB7EC[] = +{ +#if ENGLISH + EC_WORD_I_AM, + EC_WORD_A, + EC_WORD_POKEMON, + EC_WORD_GREAT, +#else + EC_WORD_I_AM, + EC_WORD_BIG, + EC_WORD_IN, + EC_WORD_POKEMON, +#endif +}; + +const u16 gUnknown_083DB7F4[] = +{ + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_QUES, + EC_WORD_HERE_I_COME, + EC_WORD_EXCL, +}; + +const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); + +// ResetDefaultEasyChatPhrases +void InitEasyChatPhrases(void) +{ + u16 i; + u16 j; + + for (i = 0; i < 4; i++) + gSaveBlock1.easyChats.unk2B1C[i] = gUnknown_083DB7EC[i]; + + for (i = 0; i < 6; i++) + gSaveBlock1.easyChats.unk2B28[i] = gUnknown_083DB7F4[i]; + + for (i = 0; i < 6; i++) + { + gSaveBlock1.easyChats.unk2B34[i] = 0xFFFF; + gSaveBlock1.easyChats.unk2B40[i] = 0xFFFF; + } + + for (i = 0; i < 16; i++) + { + for (j = 0; j < 9; j++) + gSaveBlock1.mail[i].words[j] = 0xFFFF; + } + + for (i = 0; i < 64; i++) + gSaveBlock1.unk2D8C[i] = 0; +} + +void sub_80E682C(void (*func)(void)) +{ + shared1000.unk20 = func; + shared1000.unk24 = 0; +} + +void sub_80E683C(void) +{ + u16 i; + + if (shared1000.unk26 == 0) + { + for (i = 0; i < shared1000.unk1B6; i++) + shared1000.unk1AA[i] = 2; + shared1000.unk1AA[i - 1] = shared1000.unk28 % 2; + if (shared1000.unk1AA[i - 1] == 0) + shared1000.unk1AA[i - 1] = 2; + } + else + { + shared1000.unk1AA[0] = 7; + shared1000.unk1AA[1] = 6; + shared1000.unk1AA[2] = 7; + shared1000.unk1AA[3] = 7; + } + shared1000.unk1A8 = 0; + shared1000.unk1A9 = 0; + shared1000.unk1B5 = 0; + shared1000.unk1B7 = 0; + sub_80E9A4C(); +} + +void sub_80E68E8(void) +{ + sub_80EB0B0(); + if (shared1000.unk26 == 0) + { + u16 i; + u8 r6; + + r6 = shared1000.unk1B8; + shared1000.unk9A28 = (shared1000.unk4178[r6] + 1) / 2; + for (i = 0; i < shared1000.unk9A28; i++) + shared1000.unk99A6[i] = 2; + i--; + shared1000.unk99A6[i] = shared1000.unk4178[r6] % 2; + if (shared1000.unk99A6[i] == 0) + shared1000.unk99A6[i] = 2; + } + else + { + u16 i; + u8 r6; + + r6 = shared1000.unk1B8; + shared1000.unk9A28 = (shared1000.unk4142[r6] + 1) / 2; + for (i = 0; i < shared1000.unk9A28; i++) + shared1000.unk99A6[i] = 2; + i--; + shared1000.unk99A6[i] = shared1000.unk4142[r6] % 2; + if (shared1000.unk99A6[i] == 0) + shared1000.unk99A6[i] = 2; + } + shared1000.unk99A4 = 0; + shared1000.unk99A5 = 0; + shared1000.unk9A29 = 0; + sub_80E9A4C(); +} + +void sub_80E69F8(void) +{ + switch (shared1000.unk8) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 6: + case 9: + case 13: + default: + sub_80E9368(shared1000.unk8); + break; + case 5: + case 7: + case 8: + case 10: + case 11: + case 12: + sub_80E9368(shared1000.unk8); + sub_80E8BF4(shared1000.unkB, shared1000.unk9); + break; + } +} + +void sub_80E6A6C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + sub_80EAC5C(); + TransferPlttBuffer(); + sub_8089668(); +} + +void sub_80E6A88(void) +{ + shared1000.unk20(); + AnimateSprites(); + BuildOamBuffer(); + sub_80EAD08(); +} + +void sub_80E6AA8(void) +{ + if (!UpdatePaletteFade()) + sub_80E682C(sub_80E6AC4); +} + +void sub_80E6AC4(void) +{ + sub_80E88F0(); + sub_80E8398(0); + sub_80E91D4(0); + sub_80E682C(sub_80E6AE4); +} diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index d2a5197a0..6c3c6c2b8 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -1,4 +1,5 @@ #include "global.h" +#include "easy_chat.h" #include "pokemon.h" #include "pokemon_menu.h" #include "party_menu.h" @@ -53,7 +54,6 @@ extern u16 gUnknown_0202E8F8; extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func); extern TaskFunc gUnknown_03005CF0; -void sub_80E62A0(u8 arg0, struct MailStruct* arg1, void* arg2, u8 arg3); void sub_808A520(void); void sub_80A61D0(void); void CB2_InitFlyRegionMap(void); @@ -419,7 +419,7 @@ static void sub_808A180(u8 taskID) { u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); DestroyTask(taskID); - sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3); + sub_80E62A0(4, gSaveBlock1.mail[mailID].words, sub_808A520, 3); } } @@ -458,7 +458,7 @@ static void sub_808A2DC(u8 taskID) { u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL); DestroyTask(taskID); - sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3); + sub_80E62A0(4, gSaveBlock1.mail[mailID].words, sub_808A520, 3); } static void sub_808A330(u8 taskID) @@ -1095,7 +1095,7 @@ static void sub_808B338(u8 taskID) gLastFieldPokeMenuOpened = sub_806CA38(taskID); mailID = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MAIL); DestroyTask(taskID); - sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808B3EC, 3); + sub_80E62A0(4, gSaveBlock1.mail[mailID].words, sub_808B3EC, 3); } } -- cgit v1.2.3 From d50dcfcdd37aedab6352e4953cb2be04f2691113 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 2 Jan 2018 00:53:26 -0500 Subject: add no print support. --- src/libs/libisagbprn.c | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 64ccb6351..9691d1b90 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -2,12 +2,17 @@ #include #include "gba/gba.h" #include "config.h" +#include "assert.h" #define AGB_PRINT_FLUSH_ADDR 0x9FE209D #define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 #define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE #define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) +// for auto no$gba support, the string "no$gba" should be at this address. +#define NOGBAIDADDR 0x4FFFA00 +#define NOGBAPRINTADDR 0x4FFFA14 + struct AGBPrintStruct { u16 m_nRequest; @@ -61,18 +66,29 @@ void AGBPutc(const char cChr) AGBPrintFlush1Block(); } +#undef AGBPrint // dont break the function + void AGBPrint(const char *pBuf) { - volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; - u16 nOldWSCNT = *pWSCNT; - *pWSCNT = WSCNT_DATA; - while (*pBuf) - { - AGBPutc(*pBuf); - pBuf++; - } - *pWSCNT = nOldWSCNT; + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; +} + +// I have to define this twice to avoid messing AGBPrint up. If there's a better way of doing this, please fix it. +// currently cannot use IsNoGba due to no$gba doing a gloriously fuck up of a job and +// breaking the version identifier. +#define AGBPrint(pBuf) \ +{ \ + NOGBAPrint(pBuf); \ + AGBPrint(pBuf); \ } void AGBPrintf(const char *pBuf, ...) @@ -148,4 +164,12 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP AGBPrintf("WARING FILE=[%s] LINE=[%d] EXP=[%s] \n", pFile, nLine, pExpression); } } + +// nogba print function + +void NOGBAPrint(const char *pBuf) +{ + *(volatile u32*)NOGBAPRINTADDR = (u32)pBuf; +} + #endif -- cgit v1.2.3 From ab06b56532026db85a9cba1c21c8b2235fcdf222 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 2 Jan 2018 00:56:11 -0500 Subject: formatting --- src/libs/libisagbprn.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 9691d1b90..ef0d51f26 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -70,16 +70,16 @@ void AGBPutc(const char cChr) void AGBPrint(const char *pBuf) { - volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; - u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; - u16 nOldWSCNT = *pWSCNT; - *pWSCNT = WSCNT_DATA; - while (*pBuf) - { - AGBPutc(*pBuf); - pBuf++; - } - *pWSCNT = nOldWSCNT; + volatile struct AGBPrintStruct *pPrint = (struct AGBPrintStruct *)AGB_PRINT_STRUCT_ADDR; + u16 *pWSCNT = (u16 *)REG_ADDR_WAITCNT; + u16 nOldWSCNT = *pWSCNT; + *pWSCNT = WSCNT_DATA; + while (*pBuf) + { + AGBPutc(*pBuf); + pBuf++; + } + *pWSCNT = nOldWSCNT; } // I have to define this twice to avoid messing AGBPrint up. If there's a better way of doing this, please fix it. -- cgit v1.2.3 From 865dcd79aab063eb90aef470e6ed54ba40a8c812 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 10:54:50 -0500 Subject: data through gUnknown_083ECE12 --- src/field/slot_machine.c | 71 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 594d743f1..3d68b187e 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -222,13 +222,13 @@ void sub_81064B8(void); void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); void sub_81065DC(void); -extern struct UnkStruct1 *gUnknown_083ED048[]; +extern const struct UnkStruct1 *gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; extern const u8 gSlotMachine_Gfx[]; extern const u16 gUnknown_08E95A18[]; -extern u16 gUnknown_08E95AB8[]; -extern u16 gUnknown_08E95FB8[]; -extern const u8 gUnknown_083ECD04[][3]; +extern const u16 gUnknown_08E95AB8[]; +extern const u16 gUnknown_08E95FB8[]; +const u8 gUnknown_083ECD04[][3]; extern const u8 gUnknown_083ECE3A[]; extern const u16 gUnknown_083ECE42[]; extern const u16 gUnknown_083ECE48[]; @@ -368,7 +368,7 @@ static void sub_8101B04(void) REG_BLDALPHA = 0x809; } -extern const s16 gUnknown_083ECCF8[3][2]; +const s16 gUnknown_083ECCF8[][2]; static void sub_8101BA4(void) { @@ -983,7 +983,7 @@ static bool8 sub_8102540(void) return FALSE; } -extern const u8 gUnknown_083ECD16[][6]; +const u8 gUnknown_083ECD16[][6]; static u8 sub_8102578(void) { @@ -1001,7 +1001,7 @@ static u8 sub_8102578(void) return i; } -extern const u8 gUnknown_083ECD28[][6]; +const u8 gUnknown_083ECD28[][6]; static u8 sub_81025BC(void) { @@ -1035,8 +1035,8 @@ static u8 sub_81025BC(void) return i; } -extern const u8 gUnknown_083ECDAC[][17]; -extern const u8 gUnknown_083ECD46[][17]; +const u8 gUnknown_083ECD46[][17]; +const u8 gUnknown_083ECDAC[][17]; u8 sub_810264C(u8 a0) { @@ -1069,7 +1069,7 @@ void sub_8102680(void) eSlotMachine->unk05 = i; } -extern const u16 gUnknown_083ECE12[]; +const u16 gUnknown_083ECE12[]; bool8 sub_81026DC(u16 a0) { @@ -4133,3 +4133,54 @@ const u8 gUnknown_083ECCB2[][21] = { const u8 gUnknown_083ECCF1[] = { 1, 0, 5, 4, 3, 2 }; + +const s16 gUnknown_083ECCF8[][2] = { + {0, 6}, + {0, 10}, + {0, 2} +}; + +const u8 gUnknown_083ECD04[][3] = { + {1, 1, 12}, + {1, 1, 14}, + {2, 2, 14}, + {2, 2, 14}, + {2, 3, 16}, + {3, 3, 16} +}; + +const u8 gUnknown_083ECD16[][6] = { + {25, 25, 30, 40, 40, 50}, + {25, 25, 30, 30, 35, 35}, + {25, 25, 30, 25, 25, 30} +}; + +const u8 gUnknown_083ECD28[][6] = { + {20, 25, 25, 20, 25, 25}, + {12, 15, 15, 18, 19, 22}, + {25, 25, 25, 30, 30, 40}, + {25, 25, 20, 20, 15, 15}, + {40, 40, 35, 35, 40, 40} +}; + +const u8 gUnknown_083ECD46[][17] = { + {243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5}, + { 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5}, + { 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40}, + { 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 45, 45, 45, 100}, + { 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 5, 100}, + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6} +}; + +const u8 gUnknown_083ECDAC[][17] = { + { 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5}, + { 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6}, + { 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35}, + { 2, 2, 2, 3, 3, 3, 3, 30, 30, 30, 30, 30, 30, 100, 100, 100, 50}, + { 1, 1, 1, 2, 2, 2, 2, 30, 30, 30, 30, 30, 30, 40, 40, 40, 100}, + { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60} +}; + +const u16 gUnknown_083ECE12[] = { + 0x80, 0xaf, 0xc8, 0xe1, 0x100 +}; -- cgit v1.2.3 From 8f0ea5f965251a6fc8097302b2dae3c8635ae569 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 11:52:15 -0500 Subject: data through gOamData_83ED0B8 --- src/field/slot_machine.c | 349 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 338 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 3d68b187e..1e440cba8 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -222,16 +222,16 @@ void sub_81064B8(void); void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); void sub_81065DC(void); -extern const struct UnkStruct1 *gUnknown_083ED048[]; +const struct UnkStruct1 *const gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; extern const u8 gSlotMachine_Gfx[]; extern const u16 gUnknown_08E95A18[]; extern const u16 gUnknown_08E95AB8[]; extern const u16 gUnknown_08E95FB8[]; const u8 gUnknown_083ECD04[][3]; -extern const u8 gUnknown_083ECE3A[]; -extern const u16 gUnknown_083ECE42[]; -extern const u16 gUnknown_083ECE48[]; +const u8 gUnknown_083ECE3A[]; +const u16 gUnknown_083ECE42[]; +const u16 gUnknown_083ECE48[]; void PlaySlotMachine(u8 arg0, void *ptr) { @@ -1081,8 +1081,8 @@ bool8 sub_81026DC(u16 a0) return FALSE; } -extern const u16 gUnknown_083ECE1C[][2]; -extern const u16 gUnknown_083ECE30[]; +const u16 gUnknown_083ECE1C[][2]; +const u16 gUnknown_083ECE30[]; u16 dp15_jump_random_unknown(void) { @@ -1134,8 +1134,8 @@ static void sub_81027A0(void) } } -extern const u16 gUnknown_083ECE6C[]; extern const u16 gUnknown_083ECE5A[]; +extern const u16 gUnknown_083ECE6C[]; static void sub_81027D0(void) { @@ -1219,7 +1219,7 @@ static void sub_810290C(void) } } -extern const u8 gUnknown_083ECE52[]; +const u8 gUnknown_083ECE52[]; static u8 sub_81029D4(u8 c1, u8 c2, u8 c3) { @@ -3037,7 +3037,7 @@ void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) } } -extern void (*const gUnknown_083ED064[])(void); +void (*const gUnknown_083ED064[])(void); void sub_8104DA4(void) { @@ -3562,8 +3562,8 @@ void sub_8105B88(u8 spriteId) DestroySprite(sprite); } -extern const SpriteCallback gUnknown_083ECF0C[]; -extern const s16 gUnknown_083ECE7E[][2]; +const s16 gUnknown_083ECE7E[][2]; +const SpriteCallback gUnknown_083ECF0C[]; u8 sub_8105BB4(u8 a0, u8 a1, s16 a2) { @@ -4184,3 +4184,330 @@ const u8 gUnknown_083ECDAC[][17] = { const u16 gUnknown_083ECE12[] = { 0x80, 0xaf, 0xc8, 0xe1, 0x100 }; + +const u16 gUnknown_083ECE1C[][2] = { + {10, 5}, + {10, 10}, + {10, 15}, + {10, 25}, + {10, 35} +}; + +const u16 gUnknown_083ECE30[] = { + 0, 5, 10, 15, 20 +}; + + +const u8 gUnknown_083ECE3A[] = { + 6, 4, 3, 2, 5, 0, 0, 0 +}; + +const u16 gUnknown_083ECE42[] = { + 0x80, 0x20, 0x40 +}; + +const u16 gUnknown_083ECE48[] = { + 0x10, 0x08, 0x04, 0x02, 0x01 +}; + +const u8 gUnknown_083ECE52[] = { + 7, 8, 4, 3, 0, 5, 2 +}; + +const u16 gUnknown_083ECE5A[] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100 +}; + +const u16 gUnknown_083ECE6C[] = { + 2, 4, 0, 6, 12, 3, 90, 300, 300 +}; + +const s16 gUnknown_083ECE7E[][2] = { + { 0xd0, 0x38}, + { 0xb8, 0x00}, + { 0xc8, 0x08}, + { 0xd8, 0x10}, + { 0xe8, 0x18}, + { 0xd0, 0x48}, + { 0xd0, 0x08}, + { 0xd0, 0x40}, + { 0xd0, 0x38}, + { 0xc0, 0x58}, + { 0xe0, 0x58}, + { 0xc0, 0x78}, + { 0xe0, 0x78}, + { 0x90, 0x38}, + {0x110, 0x58}, + { 0xa8, 0x70}, + { 0xd0, 0x54}, + { 0xd0, 0x70}, + { 0xbc, 0x34}, + { 0xd0, 0x34}, + { 0xe4, 0x34}, + { 0xb8, 0x48}, + { 0xc4, 0x48}, + { 0xd0, 0x48}, + { 0xdc, 0x48}, + { 0xe8, 0x48}, + { 0xbc, 0x34}, + { 0xd0, 0x34}, + { 0xe4, 0x34}, + { 0xb8, 0x48}, + { 0xc4, 0x48}, + { 0xd0, 0x48}, + { 0xdc, 0x48}, + { 0xe8, 0x48}, + { 0x00, 0x00} +}; + +const SpriteCallback gUnknown_083ECF0C[] = { + sub_8105C64, + sub_8105F54, + sub_8105F54, + sub_8105F54, + sub_8105F54, + sub_8105F9C, + sub_8105EB4, + sub_8105C64, + sub_8105C64, + sub_8105C6C, + sub_8105CF0, + sub_8105D08, + sub_8105D20, + sub_8105D3C, + sub_8105DA4, + sub_8105E08, + sub_8105C64, + sub_8106058, + sub_81060FC, + sub_81060FC, + sub_81060FC, + sub_81060FC, + sub_81060FC, + sub_81060FC, + sub_81060FC, + sub_81060FC, + sub_81061C8, + sub_81061C8, + sub_81061C8, + sub_81061C8, + sub_81061C8, + sub_81061C8, + sub_81061C8, + sub_81061C8, + sub_8106230 +}; + +static const struct UnkStruct1 Unknown_83ECF98[] = { + {25, 34, 0}, + {2, 0, 0}, + {9, 16, 0}, + {255, 0, 0} +}; + +static const struct UnkStruct1 Unknown_83ECFA8[] = { + {10, 1, 0}, + {11, 2, 0}, + {12, 3, 0}, + {13, 4, 0}, + {5, 5, 0}, + {8, 6, 0}, + {255, 0, 0} +}; + +static const struct UnkStruct1 Unknown_83ECFC4[] = { + {3, 7, 0}, + {8, 17, 0}, + {255, 0, 0} +}; + +static const struct UnkStruct1 Unknown_83ECFD0[] = { + {4, 8, 0}, + {6, 9, 0}, + {6, 10, 1}, + {6, 11, 2}, + {6, 12, 3}, + {255, 0, 0} +}; + +static const struct UnkStruct1 Unknown_83ECFE8[] = { + {0, 13, 0}, + {1, 14, 0}, + {7, 15, 0}, + {255, 0, 0} +}; + +static const struct UnkStruct1 Unknown_83ECFF8[] = { + {19, 26, 0}, + {20, 27, 1}, + {21, 28, 2}, + {14, 29, 3}, + {15, 30, 4}, + {16, 31, 5}, + {17, 32, 6}, + {18, 33, 7}, + {8, 17, 0}, + {255, 0, 0} +}; + +static const struct UnkStruct1 Unknown_83ED020[] = { + {22, 18, 0}, + {23, 19, 1}, + {24, 20, 2}, + {14, 21, 3}, + {15, 22, 4}, + {16, 23, 5}, + {17, 24, 6}, + {18, 25, 7}, + {8, 17, 0}, + {255, 0, 0} +}; + +const struct UnkStruct1 *const gUnknown_083ED048[] = { + Unknown_83ECF98, + Unknown_83ECFA8, + Unknown_83ECFC4, + Unknown_83ECFD0, + Unknown_83ECFE8, + Unknown_83ED020, + Unknown_83ECFF8 +}; + +void (*const gUnknown_083ED064[])(void) = { + sub_810639C, + sub_8106364, + sub_8106370, + nullsub_70, + nullsub_70, + sub_8106370, + sub_8106370 +}; + + +const struct OamData gOamData_83ED080 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0x0, + .matrixNum = 0, + .size = 0, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED088 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .x = 0x0, + .matrixNum = 0, + .size = 0, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED090 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0x0, + .matrixNum = 0, + .size = 1, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED098 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .x = 0x0, + .matrixNum = 0, + .size = 2, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED0A0 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0x0, + .matrixNum = 0, + .size = 2, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED0A8 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_V_RECTANGLE, + .x = 0x0, + .matrixNum = 0, + .size = 3, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED0B0 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .x = 0x0, + .matrixNum = 0, + .size = 3, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct OamData gOamData_83ED0B8 = { + .y = 0x0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0x0, + .matrixNum = 0, + .size = 3, + .tileNum = 0x0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0 +}; -- cgit v1.2.3 From fb99fe5aa6d8f7a257ba5613b32f285bba7afabd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 12:05:43 -0500 Subject: data through gSpriteImageTable_83ED228 --- src/field/slot_machine.c | 130 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 129 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 1e440cba8..43eb6e53a 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -10,6 +10,7 @@ #include "slot_machine.h" #include "decompress.h" #include "trig.h" +#include "graphics.h" #include "palette.h" #include "task.h" #include "util.h" @@ -4017,7 +4018,7 @@ void sub_81063C0(void) { sub_8106404(); LZDecompressWram(gSlotMachineReelTimeLights_Gfx, ewram10000); - LZDecompressWram(gUnknown_083EDE8C, ewram10000 + 0x3200); + LZDecompressWram(gUnknown_083EDE8C, ewram13200); LoadSpriteSheets(gUnknown_083EDC2C); LoadSpritePalettes(gSlotMachineSpritePalettes); } @@ -4511,3 +4512,130 @@ const struct OamData gOamData_83ED0B8 = { .paletteNum = 0, .affineParam = 0 }; + +const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = { + {ewram13200 + 0x0000, 0x800}, + {ewram13200 + 0x0800, 0x800}, + {ewram13200 + 0x1000, 0x800}, + {ewram13200 + 0x1800, 0x800}, + {ewram13200 + 0x2000, 0x800} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED0E8[] = { + {ewram13200 + 0x2800, 0x300} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED0F0[] = { + {ewram13200 + 0x2B00, 0x500} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED0F8[] = { + {ewram13200 + 0x3000, 0x600} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED100[] = { + {gSpriteImage_8E988E8, 0x80}, + {gSpriteImage_8E98968, 0x80}, + {gSpriteImage_8E989E8, 0x80}, + {gSpriteImage_8E98A68, 0x80}, + {gSpriteImage_8E98AE8, 0x80}, + {gSpriteImage_8E98B68, 0x80} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED130[] = { + {gSpriteImage_8E991E8, 0x200} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED138[] = { + {gSpriteImage_8E99808, 0x40} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED140[] = { + {gSpriteImage_8E98BE8, 0x100}, + {gSpriteImage_8E98CE8, 0x100} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED150[] = { + {gSpriteImage_8E993E8, 0x400} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED158[] = { + {gSpriteImage_8E98DE8, 0x200}, + {gSpriteImage_8E98FE8, 0x200} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED168[] = { + {gSpriteImage_8E98848, 0x20} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED170[] = { + {gSpriteImage_8E98868, 0x80} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED178[] = { + {ewram10000 + 0x0000, 0x600} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED180[] = { + {ewram10000 + 0x0600, 0x200} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED188[] = { + {ewram10000 + 0x0800, 0x200} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED190[] = { + {ewram10000 + 0x0A00, 0x200} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED198[] = { + {ewram10000 + 0x0C00, 0x300} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1A0[] = { + {ewram10000 + 0x1000, 0x400} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1A8[] = { + {ewram10000 + 0x1400, 0x200} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1B0[] = { + {ewram10000 + 0x1600, 0x300} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1B8[] = { + {ewram10000 + 0x1900, 0x300} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1C0[] = { + {ewram10000 + 0x1C00, 0x200}, + {ewram10000 + 0x1E00, 0x200}, + {ewram10000 + 0x1E00, 0x200} // is this a typo? +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1D8[] = { + {ewram10000 + 0x2000, 0x280} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = { + {ewram10000 + 0x2280, 0x80}, + {ewram10000 + 0x2300, 0x80}, + {ewram10000 + 0x2380, 0x80}, + {ewram10000 + 0x2400, 0x80}, + {ewram10000 + 0x2480, 0x80} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED208[] = { + {ewram10000 + 0x2600, 0x480}, + {ewram10000 + 0x2A80, 0x480} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED218[] = { + {ewram10000 + 0x2F00, 0x180}, + {ewram10000 + 0x3080, 0x180} +}; + +const struct SpriteFrameImage gSpriteImageTable_83ED228[] = { + {gSpriteImage_8E98828, 0x20} +}; -- cgit v1.2.3 From e6f56f2936bfe98da65514291bf9ee6412190b31 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 12:17:54 -0500 Subject: data through gSpriteTemplate_83ED6CC --- src/field/slot_machine.c | 347 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 347 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 43eb6e53a..493db1fa1 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -4639,3 +4639,350 @@ const struct SpriteFrameImage gSpriteImageTable_83ED218[] = { const struct SpriteFrameImage gSpriteImageTable_83ED228[] = { {gSpriteImage_8E98828, 0x20} }; + +const union AnimCmd gSpriteAnim_83ED230[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED238[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED240[] = { + ANIMCMD_FRAME(0, 16), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED248[] = { + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED254[] = { + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED260[] = { + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED26C[] = { + ANIMCMD_FRAME(2, 32), + ANIMCMD_FRAME(3, 32), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED278[] = { + ANIMCMD_FRAME(4, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED280[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED288[] = { + ANIMCMD_FRAME(1, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED290[] = { + ANIMCMD_FRAME(2, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED298[] = { + ANIMCMD_FRAME(3, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED2A0[] = { + ANIMCMD_FRAME(4, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED2A8[] = { + ANIMCMD_FRAME(5, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED2B0[] = { + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED2BC[] = { + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED2C8[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED2D4[] = { + ANIMCMD_FRAME(1, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED2DC[] = { + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED2E8[] = { + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16, .hFlip = TRUE), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83ED2FC[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED304[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED30C[] = { + ANIMCMD_FRAME(1, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED314[] = { + ANIMCMD_FRAME(2, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED31C[] = { + ANIMCMD_FRAME(3, 1), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83ED324[] = { + ANIMCMD_FRAME(4, 1), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83ED32C[] = { + gSpriteAnim_83ED230 +}; + +const union AnimCmd *const gSpriteAnimTable_83ED330[] = { + gSpriteAnim_83ED238 +}; + +const union AnimCmd *const gSpriteAnimTable_83ED334[] = { + gSpriteAnim_83ED240, + gSpriteAnim_83ED248, + gSpriteAnim_83ED254, + gSpriteAnim_83ED260, + gSpriteAnim_83ED26C, + gSpriteAnim_83ED278 +}; + +const union AnimCmd *const gSpriteAnimTable_83ED34C[] = { + gSpriteAnim_83ED280, + gSpriteAnim_83ED288, + gSpriteAnim_83ED290, + gSpriteAnim_83ED298, + gSpriteAnim_83ED2A0, + gSpriteAnim_83ED2A8 +}; + +const union AnimCmd *const gSpriteAnimTable_83ED364[] = { + gSpriteAnim_83ED2B0 +}; + +const union AnimCmd *const gSpriteAnimTable_83ED368[] = { + gSpriteAnim_83ED2BC +}; + +const union AnimCmd *const gSpriteAnimTable_83ED36C[] = { + gSpriteAnim_83ED2C8, + gSpriteAnim_83ED2D4 +}; + +const union AnimCmd *const gSpriteAnimTable_83ED374[] = { + gSpriteAnim_83ED2DC +}; + +const union AnimCmd *const gSpriteAnimTable_83ED378[] = { + gSpriteAnim_83ED2E8, + gSpriteAnim_83ED2FC +}; + +const union AnimCmd *const gSpriteAnimTable_83ED380[] = { + gSpriteAnim_83ED304, + gSpriteAnim_83ED30C, + gSpriteAnim_83ED314, + gSpriteAnim_83ED31C, + gSpriteAnim_83ED324 +}; + +const union AffineAnimCmd gSpriteAffineAnim_83ED394[] = { + AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), + AFFINEANIMCMD_LOOP(0), + AFFINEANIMCMD_FRAME(0x1, 0x1, 0, 1), + AFFINEANIMCMD_LOOP(255), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED3BC[] = { + gSpriteAffineAnim_83ED394 +}; + +const union AffineAnimCmd gSpriteAffineAnim_83ED3C0[] = { + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 6, 32), + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), + AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2), + AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2), + AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 4), + AFFINEANIMCMD_FRAME(0x0, 0x0, 12, 2), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED410[] = { + gSpriteAffineAnim_83ED3C0 +}; + +const struct SpriteTemplate gSpriteTemplate_83ED414 = { + 0, 0, &gOamData_83ED0A0, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_8104F18 +}; + +const struct SpriteTemplate gSpriteTemplate_83ED42C = { + 7, 4, &gOamData_83ED088, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_810506C +}; + +const struct SpriteTemplate gSpriteTemplate_83ED444 = { + 17, 0, &gOamData_83ED0B8, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED45C = { + 0xFFFF, 1, &gOamData_83ED0B8, gSpriteAnimTable_83ED334, gSpriteImageTable_83ED0C0, gDummySpriteAffineAnimTable, sub_8105170 +}; + +const struct SpriteTemplate gSpriteTemplate_83ED474 = { + 0xFFFF, 2, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED48C = { + 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED4A4 = { + 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED4BC = { + 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED34C, gSpriteImageTable_83ED100, gDummySpriteAffineAnimTable, sub_810535C +}; + +const struct SpriteTemplate gSpriteTemplate_83ED4D4 = { + 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED130, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED4EC = { + 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED138, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED504 = { + 0xFFFF, 4, &gOamData_83ED098, gSpriteAnimTable_83ED364, gSpriteImageTable_83ED140, gDummySpriteAffineAnimTable, sub_810562C +}; + +const struct SpriteTemplate gSpriteTemplate_83ED51C = { + 0xFFFF, 7, &gOamData_83ED0A8, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED150, gDummySpriteAffineAnimTable, sub_8105784 +}; + +const struct SpriteTemplate gSpriteTemplate_83ED534 = { + 0xFFFF, 5, &gOamData_83ED0A0, gSpriteAnimTable_83ED368, gSpriteImageTable_83ED158, gDummySpriteAffineAnimTable, sub_8105894 +}; + +const struct SpriteTemplate gSpriteTemplate_83ED54C = { + 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED330, gSpriteImageTable_83ED168, gDummySpriteAffineAnimTable, sub_810594C +}; + +const struct SpriteTemplate gSpriteTemplate_83ED564 = { + 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED170, gSpriteAffineAnimTable_83ED3BC, sub_8105A38 +}; + +const struct SpriteTemplate gSpriteTemplate_83ED57C = { + 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED594 = { + 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED5AC = { + 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED5C4 = { + 18, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED5DC = { + 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED5F4 = { + 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED60C = { + 19, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED624 = { + 20, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED63C = { + 21, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED654 = { + 0xFFFF, 6, &gOamData_83ED0A0, gSpriteAnimTable_83ED36C, gSpriteImageTable_83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED66C = { + 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED684 = { + 0xFFFF, 6, &gOamData_83ED090, gSpriteAnimTable_83ED380, gSpriteImageTable_83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED69C = { + 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED378, gSpriteImageTable_83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED6B4 = { + 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED374, gSpriteImageTable_83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gSpriteTemplate_83ED6CC = { + 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED228, gSpriteAffineAnimTable_83ED410, sub_8105B70 +}; + -- cgit v1.2.3 From d1b6882fb2ddad468a1dfd19493b0bada58d6103 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 12:36:14 -0500 Subject: data through gSubspriteTables_83EDB54 --- src/field/slot_machine.c | 321 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 321 insertions(+) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 493db1fa1..bff4e6a96 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -4986,3 +4986,324 @@ const struct SpriteTemplate gSpriteTemplate_83ED6CC = { 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED228, gSpriteAffineAnimTable_83ED410, sub_8105B70 }; +const struct Subsprite gSubspriteTable_83ED6E4[] = { + {-64, -64, ST_OAM_SQUARE, 3, 0x0, 3}, + {0, -64, ST_OAM_SQUARE, 3, 0x0, 3}, + {-64, 0, ST_OAM_SQUARE, 3, 0x0, 3}, + {0, 0, ST_OAM_SQUARE, 3, 0x0, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED704[] = { + {4, gSubspriteTable_83ED6E4} +}; + +const struct Subsprite gSubspriteTable_83ED70C[] = { + {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 1}, + {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 1}, + {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 1}, + {0, -4, ST_OAM_H_RECTANGLE, 1, 0xc, 1}, + {-32, 4, ST_OAM_H_RECTANGLE, 1, 0x10, 1}, + {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 1} +}; + +const struct SubspriteTable gSubspriteTables_83ED73C[] = { + {6, gSubspriteTable_83ED70C} +}; + +const struct Subsprite gSubspriteTable_83ED744[] = { + {-32, -20, ST_OAM_H_RECTANGLE, 3, 0x0, 1}, + {-32, 12, ST_OAM_H_RECTANGLE, 1, 0x20, 1}, + {0, 12, ST_OAM_H_RECTANGLE, 1, 0x24, 1} +}; + +const struct SubspriteTable gSubspriteTables_83ED75C[] = { + {3, gSubspriteTable_83ED744} +}; + +const struct Subsprite gSubspriteTable_83ED764[] = { + {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 1}, + {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 1}, + {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 1}, + {-32, 16, ST_OAM_H_RECTANGLE, 1, 0x28, 1}, + {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 1} +}; + +const struct SubspriteTable gSubspriteTables_83ED78C[] = { + {5, gSubspriteTable_83ED764} +}; + +const struct Subsprite gSubspriteTable_83ED794[] = { + {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 1}, + {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 1}, + {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 1}, + {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 1} +}; + +const struct SubspriteTable gSubspriteTables_83ED7B4[] = { + {4, gSubspriteTable_83ED794} +}; + +const struct Subsprite gSubspriteTable_83ED7BC[] = { + {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 1}, + {-8, -4, ST_OAM_H_RECTANGLE, 0, 0x0, 1}, + {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x0, 1} +}; + +const struct SubspriteTable gSubspriteTables_83ED7D4[] = { + {3, gSubspriteTable_83ED7BC} +}; + +const struct Subsprite gSubspriteTable_83ED7DC[] = { + {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 3}, + {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 3}, + {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 3}, + {-32, 16, ST_OAM_H_RECTANGLE, 1, 0x28, 3}, + {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED804[] = { + {5, gSubspriteTable_83ED7DC} +}; + +const struct Subsprite gSubspriteTable_83ED80C[] = { + {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, + {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, + {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, + {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED82C[] = { + {4, gSubspriteTable_83ED80C} +}; + +const struct Subsprite gSubspriteTable_83ED834[] = { + {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, + {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, + {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, + {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED854[] = { + {4, gSubspriteTable_83ED834} +}; + +const struct Subsprite gSubspriteTable_83ED85C[] = { + {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, + {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, + {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, + {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED87C[] = { + {4, gSubspriteTable_83ED85C} +}; + +const struct Subsprite gSubspriteTable_83ED884[] = { + {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, + {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, + {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, + {0, -4, ST_OAM_H_RECTANGLE, 1, 0xc, 3}, + {-32, 4, ST_OAM_H_RECTANGLE, 1, 0x10, 3}, + {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED8B4[] = { + {6, gSubspriteTable_83ED884} +}; + +const struct Subsprite gSubspriteTable_83ED8BC[] = { + {-16, -16, ST_OAM_SQUARE, 2, 0x0, 3} +}; + +const struct Subsprite gSubspriteTable_83ED8C4[] = { + {-8, -8, ST_OAM_SQUARE, 1, 0x10, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED8CC[] = { + {1, gSubspriteTable_83ED8BC}, + {1, gSubspriteTable_83ED8C4} +}; + +const struct Subsprite gSubspriteTable_83ED8DC[] = { + {-24, -24, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, + {8, -24, ST_OAM_H_RECTANGLE, 0, 0x4, 3}, + {-24, -16, ST_OAM_H_RECTANGLE, 1, 0x6, 3}, + {8, -16, ST_OAM_H_RECTANGLE, 0, 0xa, 3}, + {-24, -8, ST_OAM_H_RECTANGLE, 1, 0xc, 3}, + {8, -8, ST_OAM_H_RECTANGLE, 0, 0x10, 3}, + {-24, 0, ST_OAM_H_RECTANGLE, 1, 0x12, 3}, + {8, 0, ST_OAM_H_RECTANGLE, 0, 0x16, 3}, + {-24, 8, ST_OAM_H_RECTANGLE, 1, 0x18, 3}, + {8, 8, ST_OAM_H_RECTANGLE, 0, 0x1c, 3}, + {-24, 16, ST_OAM_H_RECTANGLE, 1, 0x1e, 3}, + {8, 16, ST_OAM_H_RECTANGLE, 0, 0x22, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED93C[] = { + 12, gSubspriteTable_83ED8DC +}; + +const struct Subsprite gSubspriteTable_83ED944[] = { + {-16, -12, ST_OAM_H_RECTANGLE, 2, 0x0, 3}, + {-16, 4, ST_OAM_H_RECTANGLE, 0, 0x8, 3}, + {0, 4, ST_OAM_H_RECTANGLE, 0, 0xa, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED95C[] = { + {3, gSubspriteTable_83ED944} +}; + +const struct Subsprite gSubspriteTable_83ED964[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED974[] = { + {2, gSubspriteTable_83ED964} +}; + +const struct Subsprite gSubspriteTable_83ED97C[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x2, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xa, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED98C[] = { + {2, gSubspriteTable_83ED97C} +}; + +const struct Subsprite gSubspriteTable_83ED994[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x4, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xc, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED9A4[] = { + {2, gSubspriteTable_83ED994} +}; + +const struct Subsprite gSubspriteTable_83ED9AC[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED9BC[] = { + {2, gSubspriteTable_83ED9AC} +}; + +const struct Subsprite gSubspriteTable_83ED9C4[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED9D4[] = { + {2, gSubspriteTable_83ED9C4} +}; + +const struct Subsprite gSubspriteTable_83ED9DC[] = { + {-4, -8, ST_OAM_SQUARE, 0, 0x2, 3}, + {-4, 0, ST_OAM_SQUARE, 0, 0xa, 3} +}; + +const struct SubspriteTable gSubspriteTables_83ED9EC[] = { + {2, gSubspriteTable_83ED9DC} +}; + +const struct Subsprite gSubspriteTable_83ED9F4[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x3, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xb, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDA04[] = { + {2, gSubspriteTable_83ED9F4} +}; + +const struct Subsprite gSubspriteTable_83EDA0C[] = { + {-4, -8, ST_OAM_SQUARE, 0, 0x5, 3}, + {-4, 0, ST_OAM_SQUARE, 0, 0xd, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDA1C[] = { + {2, gSubspriteTable_83EDA0C} +}; + +const struct Subsprite gSubspriteTable_83EDA24[] = { + {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3}, + {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDA34[] = { + {2, gSubspriteTable_83EDA24} +}; + +const struct Subsprite gSubspriteTable_83EDA3C[] = { + {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, + {4, -12, ST_OAM_SQUARE, 0, 0x2, 3}, + {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3}, + {4, -4, ST_OAM_SQUARE, 0, 0xa, 3}, + {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x10, 3}, + {4, 4, ST_OAM_SQUARE, 0, 0x12, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDA6C[] = { + {6, gSubspriteTable_83EDA3C} +}; + +const struct Subsprite gSubspriteTable_83EDA74[] = { + {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3}, + {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3}, + {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDA8C[] = { + {3, gSubspriteTable_83EDA74} +}; + +const struct Subsprite gSubspriteTable_83EDA94[] = { + {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3}, + {4, -12, ST_OAM_SQUARE, 0, 0x7, 3}, + {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3}, + {4, -4, ST_OAM_SQUARE, 0, 0xf, 3}, + {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x15, 3}, + {4, 4, ST_OAM_SQUARE, 0, 0x17, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDAC4[] = { + {6, gSubspriteTable_83EDA94} +}; + +const struct Subsprite gSubspriteTable_83EDACC[] = { + {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, + {4, -12, ST_OAM_SQUARE, 0, 0x2, 3}, + {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3}, + {4, -4, ST_OAM_SQUARE, 0, 0xa, 3}, + {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x10, 3}, + {4, 4, ST_OAM_SQUARE, 0, 0x12, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDAFC[] = { + {6, gSubspriteTable_83EDACC} +}; + +const struct Subsprite gSubspriteTable_83EDB04[] = { + {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3}, + {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3}, + {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDB1C[] = { + {3, gSubspriteTable_83EDB04} +}; + +const struct Subsprite gSubspriteTable_83EDB24[] = { + {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3}, + {4, -12, ST_OAM_SQUARE, 0, 0x7, 3}, + {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3}, + {4, -4, ST_OAM_SQUARE, 0, 0xf, 3}, + {-12, 4, ST_OAM_H_RECTANGLE, 0, 0x15, 3}, + {4, 4, ST_OAM_SQUARE, 0, 0x17, 3} +}; + +const struct SubspriteTable gSubspriteTables_83EDB54[] = { + {6, gSubspriteTable_83EDB24} +}; + + -- cgit v1.2.3 From bda69f398560a99fbaef0cb885a25323ca3b51cd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 2 Jan 2018 11:59:23 -0600 Subject: don't build easy_chat_before.c in German for now --- src/easy_chat_before.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index 7af22df53..469583779 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -1,3 +1,6 @@ +// TODO: Integrate German code into this +#if ENGLISH + #include "global.h" #include "constants/easy_chat.h" #include "constants/species.h" @@ -682,3 +685,5 @@ void sub_80E6AC4(void) sub_80E91D4(0); sub_80E682C(sub_80E6AE4); } + +#endif -- cgit v1.2.3 From aee62a5b2487845921a1e6c3c3f08475cc7ae2ea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 15:08:57 -0500 Subject: data through gUnknown_083EDD08 --- src/field/slot_machine.c | 112 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 107 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index bff4e6a96..4aa6af742 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3571,8 +3571,8 @@ u8 sub_8105BB4(u8 a0, u8 a1, s16 a2) return sub_8105BF8(a0, gUnknown_083ECF0C[a1], gUnknown_083ECE7E[a1][0], gUnknown_083ECE7E[a1][1], a2); } -extern const struct SpriteTemplate *gUnknown_083EDB5C[]; -extern const struct SubspriteTable *gUnknown_083EDBC4[]; +const struct SpriteTemplate *const gUnknown_083EDB5C[]; +const struct SubspriteTable *const gUnknown_083EDBC4[]; u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) { @@ -4011,7 +4011,7 @@ void sub_810639C(void) extern const u8 gSlotMachineReelTimeLights_Gfx[]; extern const u8 gUnknown_083EDE8C[]; -extern const struct SpriteSheet gUnknown_083EDC2C[]; +const struct SpriteSheet gUnknown_083EDC2C[]; extern const struct SpritePalette gSlotMachineSpritePalettes[]; void sub_81063C0(void) @@ -4023,8 +4023,8 @@ void sub_81063C0(void) LoadSpritePalettes(gSlotMachineSpritePalettes); } -extern const u8 *gUnknown_083EDCE4; -extern const struct SpriteSheet gUnknown_083EDCDC; +const u8 *const gUnknown_083EDCE4; +const struct SpriteSheet gUnknown_083EDCDC; void sub_8106404(void) { @@ -5306,4 +5306,106 @@ const struct SubspriteTable gSubspriteTables_83EDB54[] = { {6, gSubspriteTable_83EDB24} }; +const struct SpriteTemplate *const gUnknown_083EDB5C[] = { + &gSpriteTemplate_83ED57C, + &gSpriteTemplate_83ED594, + &gSpriteTemplate_83ED5AC, + &gSpriteTemplate_83ED5DC, + &gSpriteTemplate_83ED5F4, + &gSpriteTemplate_83ED654, + &gSpriteTemplate_83ED66C, + &gSpriteTemplate_83ED684, + &gSpriteTemplate_83ED69C, + &gSpriteTemplate_83ED6B4, + &gSpriteTemplate_83ED5C4, + &gSpriteTemplate_83ED5C4, + &gSpriteTemplate_83ED5C4, + &gSpriteTemplate_83ED5C4, + &gSpriteTemplate_83ED60C, + &gSpriteTemplate_83ED60C, + &gSpriteTemplate_83ED60C, + &gSpriteTemplate_83ED60C, + &gSpriteTemplate_83ED60C, + &gSpriteTemplate_83ED624, + &gSpriteTemplate_83ED624, + &gSpriteTemplate_83ED624, + &gSpriteTemplate_83ED63C, + &gSpriteTemplate_83ED63C, + &gSpriteTemplate_83ED63C, + &gDummySpriteTemplate +}; + +const struct SubspriteTable *const gUnknown_083EDBC4[] = { + gSubspriteTables_83ED804, + gSubspriteTables_83ED82C, + gSubspriteTables_83ED854, + gSubspriteTables_83ED8B4, + NULL, + NULL, + gSubspriteTables_83ED8CC, + NULL, + gSubspriteTables_83ED93C, + gSubspriteTables_83ED95C, + gSubspriteTables_83ED974, + gSubspriteTables_83ED98C, + gSubspriteTables_83ED9A4, + gSubspriteTables_83ED9BC, + gSubspriteTables_83ED9D4, + gSubspriteTables_83ED9EC, + gSubspriteTables_83EDA04, + gSubspriteTables_83EDA1C, + gSubspriteTables_83EDA34, + gSubspriteTables_83EDA6C, + gSubspriteTables_83EDA8C, + gSubspriteTables_83EDAC4, + gSubspriteTables_83EDAFC, + gSubspriteTables_83EDB1C, + gSubspriteTables_83EDB54, + NULL +}; + +const struct SpriteSheet gUnknown_083EDC2C[] = { + {gSlotMachineReelSymbol1Tiles, 0x200, 0}, + {gSlotMachineReelSymbol2Tiles, 0x200, 1}, + {gSlotMachineReelSymbol3Tiles, 0x200, 2}, + {gSlotMachineReelSymbol4Tiles, 0x200, 3}, + {gSlotMachineReelSymbol5Tiles, 0x200, 4}, + {gSlotMachineReelSymbol6Tiles, 0x200, 5}, + {gSlotMachineReelSymbol7Tiles, 0x200, 6}, + {gSlotMachineNumber0Tiles, 0x40, 7}, + {gSlotMachineNumber1Tiles, 0x40, 8}, + {gSlotMachineNumber2Tiles, 0x40, 9}, + {gSlotMachineNumber3Tiles, 0x40, 10}, + {gSlotMachineNumber4Tiles, 0x40, 11}, + {gSlotMachineNumber5Tiles, 0x40, 12}, + {gSlotMachineNumber6Tiles, 0x40, 13}, + {gSlotMachineNumber7Tiles, 0x40, 14}, + {gSlotMachineNumber8Tiles, 0x40, 15}, + {gSlotMachineNumber9Tiles, 0x40, 16}, + {ewram10000 + 0x0A00, 0x200, 18}, + {ewram10000 + 0x1400, 0x200, 19}, + {ewram10000 + 0x1600, 0x300, 20}, + {ewram10000 + 0x1900, 0x300, 21}, + {} +}; + +const struct SpriteSheet gUnknown_083EDCDC = { + ewram10000 + 0x0000, 0x800, 17 +}; + +const u8 *const gUnknown_083EDCE4 = gUnknownPalette_08E997E8; + +#ifdef SAPPHIRE +const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/sapphire_83EDD40.gbapal"); +#elif defined(RUBY) +const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/ruby_83EDCE8.gbapal"); +#endif // RS + +const u16 *const gUnknown_083EDD08[] = { + UnknownPalette_83EDCE8 + 10, + UnknownPalette_83EDCE8 + 11, + UnknownPalette_83EDCE8 + 12, + UnknownPalette_83EDCE8 + 13, + UnknownPalette_83EDCE8 + 14 +}; -- cgit v1.2.3 From 82b9b4fc7e9c45caa6229a1f88bf8034381862e6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 2 Jan 2018 15:38:48 -0600 Subject: decompile sub_80E6AE4 - sub_80E7294 --- src/easy_chat_before.c | 553 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 536 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index 469583779..54084ef9e 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -1,15 +1,15 @@ -// TODO: Integrate German code into this -#if ENGLISH - #include "global.h" #include "constants/easy_chat.h" +#include "constants/songs.h" #include "constants/species.h" +#include "dewford_trend.h" #include "easy_chat.h" #include "event_data.h" #include "ewram.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "sound.h" #include "string_util.h" #include "strings.h" #include "unknown_task.h" @@ -27,46 +27,58 @@ struct Shared1000 u8 unk9; u8 unkA; u8 unkB; - u8 fillerC[0x20-0xC]; + u16 unkC; + u16 unkE; + u8 filler10[0x20-0x10]; void (*unk20)(void); u16 unk24; u8 unk26; - u8 filler27[0x28-0x27]; + u8 unk27; u16 unk28; u8 unk2A[11][2]; // unknown length u8 unk40[4][14]; u8 unk78[0x83-0x78]; // unknown length u8 unk83; - u8 unk84; - u8 unk85; - u8 unk86; + s8 unk84; + s8 unk85; + s8 unk86; u8 unk87; u16 unk88; u16 unk8A; - u8 filler8C[0x1A8-0x8C]; - u8 unk1A8; - u8 unk1A9; + u8 filler8C[0x96-0x8C]; + u8 unk96; + u8 filler97[0x1A8-0x97]; + s8 unk1A8; + s8 unk1A9; u8 unk1AA[0xB5-0xAA]; // unknown length u8 unk1B5; s8 unk1B6; - u8 unk1B7; + s8 unk1B7; u8 unk1B8; - u8 filler1B9[0x1BA-0x1B9]; + u8 unk1B9; u16 unk1BA; u8 filler1BC[0xBE - 0xBC]; u8 unk1BE; - u8 filler1BF[0x4142-0x1BF]; + u8 filler1BF; + s8 unk1C0; + u8 filler1C1[3]; + void (*unk1C4)(void); + u8 filler1C8[0x4142-0x1C8]; +#if GERMAN + u8 filler4142_de[0x32A]; +#endif u16 unk4142[(0x78-0x42)/2]; u16 unk4178[(0x99A4-0x4178)/2]; // unknown length - +#if GERMAN + u8 filler99A4_de[2]; +#endif u8 unk99A4; u8 unk99A5; u8 unk99A6[0xA28-0x9A6]; s8 unk9A28; u8 unk9A29; u8 filler9A2A[0xC7C-0xA2A]; - - u16 unk9C7C; + u16 unk9C7C; // this is at 0x9FA8 in German s16 unk9C7E; u8 filler9C80[0xDA4-0xC80]; u8 unk9DA4[0x24]; @@ -178,16 +190,60 @@ void sub_80E6A88(void); void sub_80E6AA8(void); void sub_80E6AC4(void); void sub_80E6AE4(void); +void sub_80E6BC0(void); +void sub_80E6C84(void); +void sub_80E6D7C(void); +void sub_80E6F68(void); +void sub_80E6FC8(void); +void sub_80E7114(void); +void sub_80E718C(void); +void sub_80E7218(void); +void sub_80E7294(void); +void sub_80E7324(void); +void sub_80E73D0(void); +void sub_80E7458(void); +void sub_80E752C(void); +void sub_80E7574(void); +u8 sub_80E75D8(void); +u8 sub_80E77C8(void); +void sub_80E7AD4(void); +u8 sub_80E7B40(void); +void sub_80E7D6C(void); +void sub_80E7D9C(void); void sub_80E7E50(void); +void sub_80E7F00(); +u8 sub_80E7FA8(void); +u8 sub_80E8054(void); +u8 sub_80E8094(void); +u8 sub_80E810C(void); +void sub_80E81C0(void); +void sub_80E81FC(void); void sub_80E8218(void); void sub_80E8398(); +void sub_80E8420(void); +void sub_80E8504(void); +void sub_80E87CC(); void sub_80E88F0(void); +void sub_80E8958(); void sub_80E8BF4(); void sub_80E8CEC(void); +void sub_80E8D54(void); +void sub_80E8D8C(); void sub_80E8DD8(void); void sub_80E91D4(); void sub_80E9368(); +void sub_80E95A4(void); +void sub_80E9744(void); +void sub_80E98C4(void); +void sub_80E9974(void); void sub_80E9A4C(void); +void sub_80E9AD4(void); +void sub_80E9E98(void); +u8 sub_80E9EA8(void); +u8 sub_80E9F50(void); +u8 sub_80E9FD4(void); +u8 sub_80EA014(void); +u8 sub_80EA050(void); void sub_80EAC5C(void); void sub_80EAD08(void); u8 sub_80EAD7C(u8); @@ -195,6 +251,10 @@ void sub_80EAECC(void); void sub_80EB040(void); void sub_80EB0B0(void); bool8 sub_80EB680(u16 *, u16, u16, u16); +void sub_80E9C94(void); + +// TODO: Integrate German code into this +#if ENGLISH void sub_80E60D8(void) { @@ -503,6 +563,22 @@ void sub_80E6690(void) r3[3] = 0xFF; } +#endif + +// local variable +#if GERMAN +u8 *const gUnknown_083DB7DC[] = +{ +#if ENGLISH + gSharedMem + 0xAC80, gSharedMem + 0xACC9, + gSharedMem + 0xAD12, gSharedMem + 0xAD5B, +#else + gSharedMem + 0xAFAC, gSharedMem + 0xAFF5, + gSharedMem + 0xB03E, gSharedMem + 0xB087, +#endif +}; +#endif + // Default profile phrase const u16 gUnknown_083DB7EC[] = { @@ -531,6 +607,7 @@ const u16 gUnknown_083DB7F4[] = const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); +#if ENGLISH // ResetDefaultEasyChatPhrases void InitEasyChatPhrases(void) { @@ -686,4 +763,446 @@ void sub_80E6AC4(void) sub_80E682C(sub_80E6AE4); } +void sub_80E6AE4(void) +{ + shared1000.unk87 = sub_80E75D8(); + if (shared1000.unk87 != 0) + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + { + u8 r2; + + PlaySE(SE_SELECT); + r2 = shared1000.unk86; + if (shared1000.unk86 == shared1000.unk84) + { + switch (shared1000.unk85) + { + case 0: + sub_80E682C(sub_80E6BC0); + return; + case 1: + sub_80E682C(sub_80E6C84); + return; + case 2: + sub_80E682C(sub_80E6D7C); + return; + } + } + else + { + shared1000.unk27 = shared1000.unk83 * r2 + shared1000.unk85; + sub_80E7574(); + sub_80E682C(sub_80E6F68); + return; + } + } + if (gMain.newKeys & B_BUTTON) + { + sub_80E682C(sub_80E6C84); + } +} + +void sub_80E6BC0(void) +{ + //s8 selection; + + switch (shared1000.unk24) + { + case 0: + sub_80E8398(2); + if (shared1000.unk8 == 6) + { + sub_80E91D4(6); + shared1000.unk24 = 100; + } + else + { + sub_80E91D4(2); + DisplayYesNoMenu(23, 8, 1); + MoveMenuCursor(1); + shared1000.unk24++; + } + break; + case 1: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + sub_80E7D6C(); + sub_80E98C4(); + sub_80E95A4(); + shared1000.unk24++; + break; + case -1: + case 1: + shared1000.unk24++; + break; + } + break; + case 2: + sub_80E81FC(); + sub_80E682C(sub_80E6AC4); + break; + case 100: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E6C84(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(2); + sub_80E91D4(3); + DisplayYesNoMenu(23, 8, 0); + MoveMenuCursor(1); + if (shared1000.unk8 == 9 + || shared1000.unk8 == 4 + || shared1000.unk8 == 7 + || shared1000.unk8 == 8 + || shared1000.unk8 == 10 + || shared1000.unk8 == 11 + || shared1000.unk8 == 12 + || shared1000.unk8 == 5 + || shared1000.unk8 == 13) + shared1000.unk24 = 2; + else + shared1000.unk24++; + break; + case 1: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + sub_80E91D4(4); + DisplayYesNoMenu(23, 8, 0); + MoveMenuCursor(1); + shared1000.unk24++; + break; + case -1: + case 1: + shared1000.unk24 = 0xFF; + break; + } + break; + case 2: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + gSpecialVar_Result = 0; + sub_80E682C(sub_80E752C); + break; + case -1: + case 1: + shared1000.unk24 = 0xFF; + break; + } + break; + case 0xFF: + HandleDestroyMenuCursors(); + sub_80E81FC(); + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E6D7C(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(2); + if (sub_80E8054() != 0) + { + sub_80E91D4(5); + shared1000.unk24 = 10; + break; + } + if (shared1000.unk8 == 9) + { + if (sub_80E7FA8() == 0) + { + sub_80E91D4(8); + shared1000.unk24 = 10; + break; + } + if (shared1000.unkC == 0xFFFF || shared1000.unkE == 0xFFFF) + { + sub_80E91D4(9); + shared1000.unk24 = 10; + break; + } + } + if (shared1000.unk8 == 4 && sub_80E7FA8() == 0) + { + sub_80E682C(sub_80E6C84); + } + else + { + sub_80E91D4(1); + sub_80E9744(); + DisplayYesNoMenu(23, 8, 0); + MoveMenuCursor(0); + shared1000.unk24++; + } + break; + case 1: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + gSpecialVar_Result = (sub_80E7FA8() != 0); + sub_80E7D9C(); + if (shared1000.unk8 == 0) + gSpecialVar_0x8004 = sub_80E8094(); + if (shared1000.unk8 == 9) // dewford trend? + { + sub_80E81C0(); + gSpecialVar_0x8004 = sub_80FA364(&shared1000.unk9C7C); + } + if (shared1000.unk8 == 13) + { + if (shared1000.unkC == 0xFFFF || shared1000.unkE == 0xFFFF) + gSpecialVar_Result = 0; + gSpecialVar_0x8004 = sub_80E810C(); + } + sub_80E682C(sub_80E752C); + break; + case -1: + case 1: + HandleDestroyMenuCursors(); + sub_80E81FC(); + if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + { + shared1000.unk24 = 100; + } + else + { + sub_80E95A4(); + sub_80E682C(sub_80E6AC4); + } + break; + } + break; + case 10: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + sub_80E682C(sub_80E6AC4); + break; + case 100: + sub_80E91D4(7); + shared1000.unk24++; + // fall through + case 101: + if (gMain.newKeys & A_BUTTON) + shared1000.unk24++; + break; + case 102: + sub_80E7E50(); + sub_80E95A4(); + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E6F68(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(1); + sub_80E91D4(10); + sub_80E683C(); + sub_80E9974(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 1: + if (sub_80E9EA8() != 0) + { + sub_80E8D8C(1); + sub_80E8420(); + sub_80E8958(0); + sub_80E682C(sub_80E6FC8); + } + break; + } +} + +void sub_80E6FC8(void) +{ + shared1000.unk96 = sub_80E77C8(); + if (shared1000.unk1C0 != 0) + { + PlaySE(SE_SELECT); + shared1000.unk1C4 = sub_80E6FC8; + sub_80E682C(sub_80E7458); + } + else + { + if (shared1000.unk96 != 0) + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + { + if (shared1000.unk1B7 != 0) + { + PlaySE(SE_SELECT); + switch (shared1000.unk1A8) + { + case 1: + sub_80E682C(sub_80E718C); + break; + case 2: + if (shared1000.unk8 != 6) + { + sub_80E7F00(shared1000.unk27, 0xFFFF); + sub_80E7574(); + sub_80E95A4(); + } + break; + case 3: + sub_80E682C(sub_80E7114); + break; + } + } + else + { + if (shared1000.unk26 == 0 + || shared1000.unk4142[shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]] != 0) + { + PlaySE(SE_SELECT); + sub_80E7AD4(); + sub_80E682C(sub_80E7218); + } + } + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80E682C(sub_80E7114); + } + else if (gMain.newKeys & SELECT_BUTTON) + { + sub_80E682C(sub_80E718C); + } + } +} + +void sub_80E7114(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8504(); + sub_80E9E98(); + sub_80E88F0(); + sub_80E8D8C(0); + shared1000.unk24++; + break; + case 1: + case 2: + shared1000.unk24++; + break; + case 3: + if (sub_80E9F50() != 0) + shared1000.unk24++; + break; + case 4: + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E718C(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8504(); + sub_80E9E98(); + sub_80E88F0(); + shared1000.unk24++; + sub_80E8D54(); + break; + case 1: + if (sub_80E9FD4() != 0) + { + shared1000.unk26 = !shared1000.unk26; + sub_80E683C(); + sub_80E9974(); + sub_80E9E98(); + shared1000.unk24++; + } + break; + default: + shared1000.unk24++; + break; + case 8: + if (sub_80EA014() != 0) + { + sub_80E8420(); + sub_80E8958(0); + sub_80E682C(sub_80E6FC8); + } + break; + } +} + +void sub_80E7218(void) +{ + switch (shared1000.unk24) + { + default: + shared1000.unk24++; + break; + case 8: + sub_80E8D8C(0); + sub_80E8504(); + sub_80E9AD4(); + sub_80E68E8(); + sub_80E88F0(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 9: + if (sub_80EA050() != 0) + { + sub_80E9C94(); + shared1000.unk24++; + } + break; + case 10: + sub_80E87CC(1); + sub_80E8958(1); + sub_80E682C(sub_80E7294); + break; + case 11: + break; + } +} + +void sub_80E7294(void) +{ + shared1000.unk1B9 = sub_80E7B40(); + if (shared1000.unk1C0 != 0) + { + PlaySE(SE_SELECT); + shared1000.unk1C4 = sub_80E7294; + sub_80E682C(sub_80E7458); + } + else + { + if (shared1000.unk1B9 != 0) + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80E682C(sub_80E7324); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80E682C(sub_80E73D0); + } + } +} + #endif -- cgit v1.2.3 From 8a14021bf25ffd7bf0d6a1ce808f29d3528bf111 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 2 Jan 2018 15:46:16 -0600 Subject: hopefully fix German build --- src/easy_chat_before.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index 54084ef9e..d71fad303 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -89,7 +89,7 @@ struct Shared1000 #define static_assert(cond) \ typedef char test_[(cond) ? 1 : -1] -static_assert(offsetof(struct Shared1000, unk4142) == 0x4142); +//static_assert(offsetof(struct Shared1000, unk4142) == 0x4142); #define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) -- cgit v1.2.3 From a2e854bb7cda3d4de0b4f2d1fc9e7bd88a471980 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 2 Jan 2018 19:22:51 -0600 Subject: decompile sub_80E7324 - sub_80E7AD4 --- src/easy_chat_before.c | 418 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 395 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index d71fad303..9d6989612 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -21,15 +21,13 @@ extern void sub_80546B8(void); struct Shared1000 { - void *unk0; // callback + void (*unk0)(void); // main cb 2 u16 *unk4; u8 unk8; u8 unk9; u8 unkA; u8 unkB; - u16 unkC; - u16 unkE; - u8 filler10[0x20-0x10]; + u16 unkC[(0x20-0xC)/2]; // unknown length void (*unk20)(void); u16 unk24; u8 unk26; @@ -37,12 +35,15 @@ struct Shared1000 u16 unk28; u8 unk2A[11][2]; // unknown length u8 unk40[4][14]; - u8 unk78[0x83-0x78]; // unknown length - u8 unk83; + u8 unk78[0x7D - 0x78]; // unknown length + u8 unk7D; + u8 unk7E[0x83-0x7E]; + s8 unk83; // s8? + //u8 unk83; // s8? s8 unk84; s8 unk85; s8 unk86; - u8 unk87; + bool8 unk87; u16 unk88; u16 unk8A; u8 filler8C[0x96-0x8C]; @@ -50,8 +51,8 @@ struct Shared1000 u8 filler97[0x1A8-0x97]; s8 unk1A8; s8 unk1A9; - u8 unk1AA[0xB5-0xAA]; // unknown length - u8 unk1B5; + s8 unk1AA[0xB5-0xAA]; // unknown length + s8 unk1B5; s8 unk1B6; s8 unk1B7; u8 unk1B8; @@ -89,7 +90,7 @@ struct Shared1000 #define static_assert(cond) \ typedef char test_[(cond) ? 1 : -1] -//static_assert(offsetof(struct Shared1000, unk4142) == 0x4142); +static_assert(offsetof(struct Shared1000, unk20) == 0x20); #define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) @@ -204,12 +205,15 @@ void sub_80E73D0(void); void sub_80E7458(void); void sub_80E752C(void); void sub_80E7574(void); -u8 sub_80E75D8(void); -u8 sub_80E77C8(void); +bool8 sub_80E75D8(void); +bool8 sub_80E77C8(void); +void sub_80E7A98(void); void sub_80E7AD4(void); u8 sub_80E7B40(void); +void sub_80E7D30(void); void sub_80E7D6C(void); void sub_80E7D9C(void); +u8 sub_80E7DD0(void); void sub_80E7E50(void); void sub_80E7F00(); u8 sub_80E7FA8(void); @@ -236,20 +240,28 @@ void sub_80E95A4(void); void sub_80E9744(void); void sub_80E98C4(void); void sub_80E9974(void); +void sub_80E9A14(void); void sub_80E9A4C(void); void sub_80E9AD4(void); +void sub_80E9D00(void); +void sub_80E9D7C(void); +void sub_80E9E08(); +u8 sub_80E9E54(void); void sub_80E9E98(void); u8 sub_80E9EA8(void); u8 sub_80E9F50(void); u8 sub_80E9FD4(void); u8 sub_80EA014(void); u8 sub_80EA050(void); +u8 sub_80EA0E4(void); +u8 sub_80EA184(void); void sub_80EAC5C(void); void sub_80EAD08(void); u8 sub_80EAD7C(u8); void sub_80EAECC(void); void sub_80EB040(void); void sub_80EB0B0(void); +u16 sub_80EB2D4(); bool8 sub_80EB680(u16 *, u16, u16, u16); void sub_80E9C94(void); @@ -331,7 +343,7 @@ void sub_80E60D8(void) sub_80E62A0(gSpecialVar_0x8004, r1, sub_80546B8, r4); } -void sub_80E62A0(u8 a, u16 *b, void *c, u8 d) +void sub_80E62A0(u8 a, u16 *b, void (*c)(void), u8 d) { shared1000.unk0 = c; shared1000.unk4 = b; @@ -766,14 +778,11 @@ void sub_80E6AC4(void) void sub_80E6AE4(void) { shared1000.unk87 = sub_80E75D8(); - if (shared1000.unk87 != 0) + if (shared1000.unk87) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { - u8 r2; - PlaySE(SE_SELECT); - r2 = shared1000.unk86; if (shared1000.unk86 == shared1000.unk84) { switch (shared1000.unk85) @@ -791,7 +800,7 @@ void sub_80E6AE4(void) } else { - shared1000.unk27 = shared1000.unk83 * r2 + shared1000.unk85; + shared1000.unk27 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; sub_80E7574(); sub_80E682C(sub_80E6F68); return; @@ -805,8 +814,6 @@ void sub_80E6AE4(void) void sub_80E6BC0(void) { - //s8 selection; - switch (shared1000.unk24) { case 0: @@ -928,7 +935,7 @@ void sub_80E6D7C(void) shared1000.unk24 = 10; break; } - if (shared1000.unkC == 0xFFFF || shared1000.unkE == 0xFFFF) + if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) { sub_80E91D4(9); shared1000.unk24 = 10; @@ -963,7 +970,7 @@ void sub_80E6D7C(void) } if (shared1000.unk8 == 13) { - if (shared1000.unkC == 0xFFFF || shared1000.unkE == 0xFFFF) + if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) gSpecialVar_Result = 0; gSpecialVar_0x8004 = sub_80E810C(); } @@ -1040,7 +1047,7 @@ void sub_80E6FC8(void) } else { - if (shared1000.unk96 != 0) + if (shared1000.unk96) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { @@ -1205,4 +1212,369 @@ void sub_80E7294(void) } } +void sub_80E7324(void) +{ + switch (shared1000.unk24) + { + case 0: + if (sub_80E7DD0() == 0) + { + sub_80E682C(sub_80E7294); + } + else + { + sub_80E88F0(); + sub_80E87CC(0); + shared1000.unk24++; + } + break; + case 1: + shared1000.unk24++; + break; + case 2: + sub_80E9E98(); + shared1000.unk24++; + break; + case 3: + if (sub_80EA184() != 0) + shared1000.unk24++; + break; + case 4: + if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + sub_80E682C(sub_80E6D7C); + else + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E73D0(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E87CC(0); + sub_80E88F0(); + shared1000.unk24++; + break; + case 1: + sub_80E9AD4(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 2: + if (sub_80EA0E4() != 0) + { + sub_80E8D8C(1); + sub_80E9A14(); + shared1000.unk24++; + } + break; + case 3: + sub_80E8420(); + sub_80E8958(0); + shared1000.unk24++; + break; + case 4: + sub_80E9974(); + sub_80E682C(sub_80E6FC8); + break; + } +} + +void sub_80E7458(void) +{ + switch (shared1000.unk24) + { + case 0: + if (shared1000.unk1C4 == sub_80E6FC8) + sub_80E9D7C(); + else + sub_80E9D00(); + sub_80E9E08(shared1000.unk1BE); + shared1000.unk24++; + break; + case 1: + if (sub_80E9E54() != 0) + { + if (shared1000.unk1C4 == sub_80E6FC8) + { + sub_80E9D7C(); + shared1000.unk1B5 += shared1000.unk1C0; + sub_80E7A98(); + shared1000.unk96 = TRUE; + } + else + { + shared1000.unk9A29 += shared1000.unk1C0; + sub_80E7D30(); + shared1000.unk1B9 = 1; + } + shared1000.unk1BE = 2; + sub_80E682C(shared1000.unk1C4); + } + break; + } +} + +void sub_80E752C(void) +{ + switch (shared1000.unk24) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + shared1000.unk24++; + break; + case 1: + if (!UpdatePaletteFade()) + SetMainCallback2(shared1000.unk0); + break; + } +} + +void sub_80E7574(void) +{ + if (shared1000.unk8 == 1 + && shared1000.unk7E[shared1000.unk86] == 2 + && sub_80EB2D4(shared1000.unkC[shared1000.unk27]) != 7) + shared1000.unk7D = 1; + else + shared1000.unk7D = 0; + shared1000.unk7D = 0; // What the hell? +} + +bool8 sub_80E75D8(void) +{ + bool8 pressedUpDown = FALSE; + u8 r0; + + if (gMain.newKeys & START_BUTTON) + { + shared1000.unk86 = shared1000.unk84; + shared1000.unk85 = 2; + return TRUE; + } + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk86--; + if (shared1000.unk86 < 0) + shared1000.unk86 = shared1000.unk84; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk86++; + if (shared1000.unk86 > shared1000.unk84) + shared1000.unk86 = 0; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + if (shared1000.unk9 == 2) + { + if (shared1000.unk86 == shared1000.unk84) + shared1000.unk85 = 2; + else + shared1000.unk85 = 0; + return TRUE; + } + else + { + if (shared1000.unk85 >= shared1000.unk83) + shared1000.unk85 = shared1000.unk83 - 1; + if (shared1000.unk86 != shared1000.unk84) + { + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + return TRUE; + } + } + else + { + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (--shared1000.unk85 < 0) + { + if (shared1000.unk86 == shared1000.unk84) + { + shared1000.unk85 = 2; + } + else + { + shared1000.unk85 = shared1000.unk83 - 1; + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + } + return TRUE; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (shared1000.unk86 == shared1000.unk84) + { + if (++shared1000.unk85 > 2) + shared1000.unk85 = 0; + } + else + { + if (++shared1000.unk85 >= shared1000.unk83) + shared1000.unk85 = 0; + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + return TRUE; + } + } + return FALSE; +} + +bool8 sub_80E77C8(void) +{ + bool8 pressedLeftRight = FALSE; + bool8 pressedUpDown; + + if (shared1000.unk1B7 != 0) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk1A8--; + if (shared1000.unk1A8 < 1) + shared1000.unk1A8 = 3; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk1A8++; + if (shared1000.unk1A8 > 3) + shared1000.unk1A8 = 1; + return TRUE; + } + } + else + { + if (shared1000.unk26 == 1) + { + pressedUpDown = FALSE; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk1A8--; + if (shared1000.unk1A8 < 0) + shared1000.unk1A8 = 3; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk1A8++; + if (shared1000.unk1A8 > 3) + shared1000.unk1A8 = 0; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + sub_80E7A98(); + return TRUE; + } + } + else + { + pressedUpDown = FALSE; + shared1000.unk1C0 = 0; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (shared1000.unk1A8 == 0) + return FALSE; + shared1000.unk1A8--; + if (shared1000.unk1A8 < shared1000.unk1B5) + shared1000.unk1C0 = -1; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (shared1000.unk1A8 >= shared1000.unk1B6 - 1) + return FALSE; + shared1000.unk1A8++; + if (shared1000.unk1A8 > shared1000.unk1B5 + 3) + shared1000.unk1C0 = 1; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + if (shared1000.unk1C0 == 0) + { + sub_80E7A98(); + return TRUE; + } + return FALSE; + } + } + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (shared1000.unk1A9 != 0) + shared1000.unk1A9--; + else + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + pressedLeftRight = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (shared1000.unk1B7 != 0 + || shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]) + shared1000.unk1A9 = 0; + else + shared1000.unk1A9++; + pressedLeftRight = TRUE; + } + + if (pressedLeftRight) + { + s8 r9 = shared1000.unk1B7; + + shared1000.unk1B7 = (shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]); + if (shared1000.unk1B7 != 0) + { + shared1000.unk1A8 -= shared1000.unk1B5; + if (shared1000.unk1A8 == 0) + { + shared1000.unk1A8 = 1; + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + } + } + else if (r9 != 0) + { + shared1000.unk1A8 += shared1000.unk1B5; + if (shared1000.unk1A9 != 0) + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; + } + return TRUE; + } + + return FALSE; +} + +void sub_80E7A98(void) +{ + if (shared1000.unk1A9 >= shared1000.unk1AA[shared1000.unk1A8]) + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; +} + +void sub_80E7AD4(void) +{ + if (shared1000.unk26 == 0) + shared1000.unk1B8 = shared1000.unk2A[shared1000.unk1A8][shared1000.unk1A9]; + else + shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]; +} + #endif -- cgit v1.2.3 From 9b2ebe671fe77298d0b1adcb5d87cbb2bd01cd3e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jan 2018 21:35:41 -0500 Subject: Remaining slot machine data --- src/field/slot_machine.c | 79 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 4aa6af742..e1687b3d1 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -2244,8 +2244,8 @@ void sub_8103CC8(struct Task *task, u8 taskId) } extern const u16 *const gUnknown_083EDD08[]; -extern const u16 *const gUnknown_083EDD1C[]; -extern const u8 gUnknown_083EDD30[]; +const u16 *const gUnknown_083EDD1C[]; +const u8 gUnknown_083EDD30[]; static void sub_8103D00(u8 a0) { @@ -2257,8 +2257,8 @@ static void sub_8103D28(u8 a0) LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2); } -extern const u8 gUnknown_083EDD3B[]; -extern const u8 gUnknown_083EDD35[][2]; +const u8 gUnknown_083EDD35[][2]; +const u8 gUnknown_083EDD3B[]; static void sub_8103D50(u8 a0) { @@ -2369,8 +2369,8 @@ static void sub_8103F70(void) sub_8103FE8(taskId); } -extern const u16 *const gUnknown_083EDDA0[]; -extern const u16 *const gUnknown_083EDDAC; +const u16 *const gUnknown_083EDDA0[]; +const u16 *const gUnknown_083EDDAC; static bool8 sub_8103FA0(void) { @@ -5409,3 +5409,70 @@ const u16 *const gUnknown_083EDD08[] = { UnknownPalette_83EDCE8 + 14 }; +const u16 *const gUnknown_083EDD1C[] = { + gUnknown_08E95A18 + 74, + gUnknown_08E95A18 + 75, + gUnknown_08E95A18 + 76, + gUnknown_08E95A18 + 77, + gUnknown_08E95A18 + 78 +}; + +const u8 gUnknown_083EDD30[] = { + 0x4a, 0x4b, 0x4c, 0x4e, 0x4d +}; + +const u8 gUnknown_083EDD35[][2] = { + {0, 0}, + {1, 2}, + {3, 4} +}; +const u8 gUnknown_083EDD3B[] = {1, 2, 2}; + +#ifdef SAPPHIRE +const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/sapphire_83EDD96.gbapal"); +const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDB6.gbapal"); +const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDD6.gbapal"); +#elif defined (RUBY) +const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/ruby_83EDD3E.gbapal"); +const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/ruby_83EDD5E.gbapal"); +const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/ruby_83EDD7E.gbapal"); +#endif // RS + +const u16 *const gUnknown_083EDDA0[] = { + Unknown_83EDD3E, + Unknown_83EDD5E, + Unknown_83EDD7E +}; + +const u16 *const gUnknown_083EDDAC = gUnknown_08E95A18 + 16; + +const u16 Palette_83EDDB0[] = INCBIN_U16("graphics/slot_machine/83EDDB0.gbapal"); +const u16 Palette_83EDDD0[] = INCBIN_U16("graphics/slot_machine/83EDDD0.gbapal"); +const u16 Palette_83EDDF0[] = INCBIN_U16("graphics/slot_machine/83EDDF0.gbapal"); + +const u16 *const gUnknown_083EDE10[] = { + Palette_83EDDB0, + Palette_83EDDD0, + Palette_83EDDF0, + gSlotMachineSpritePalette6 +}; + +const u16 *const gUnknown_083EDE20 = gSlotMachineSpritePalette6; + +const u16 gPalette_83EDE24[] = INCBIN_U16("graphics/slot_machine/83EDE24_pal.bin"); + +const struct SpritePalette gSlotMachineSpritePalettes[] = { + {gSlotMachineSpritePalette0, 0}, + {gSlotMachineSpritePalette1, 1}, + {gSlotMachineSpritePalette2, 2}, + {gSlotMachineSpritePalette3, 3}, + {gSlotMachineSpritePalette4, 4}, + {gSlotMachineSpritePalette5, 5}, + {gSlotMachineSpritePalette6, 6}, + {gSlotMachineSpritePalette4, 7}, + {} +}; + +const u8 gUnknown_083EDE8C[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); + +const u16 gReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin"); -- cgit v1.2.3 From 2d95fb9b9774df71c19a442ed2ce0aead8ece63b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 2 Jan 2018 21:03:40 -0600 Subject: decompile sub_80E7B40 - sub_80E8094 --- src/easy_chat_before.c | 251 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 235 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index 9d6989612..c43804c23 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -46,7 +46,7 @@ struct Shared1000 bool8 unk87; u16 unk88; u16 unk8A; - u8 filler8C[0x96-0x8C]; + u8 unk8C[(0x96-0x8C)/2][2]; u8 unk96; u8 filler97[0x1A8-0x97]; s8 unk1A8; @@ -73,28 +73,33 @@ struct Shared1000 #if GERMAN u8 filler99A4_de[2]; #endif - u8 unk99A4; - u8 unk99A5; - u8 unk99A6[0xA28-0x9A6]; + s8 unk99A4; + s8 unk99A5; + s8 unk99A6[0xA28-0x9A6]; s8 unk9A28; - u8 unk9A29; - u8 filler9A2A[0xC7C-0xA2A]; + s8 unk9A29; + //u8 filler9A2A[0xC7C-0xA2A]; + u16 unk9A2A[0x94][2]; // unknown length + u8 filler9C7A[2]; u16 unk9C7C; // this is at 0x9FA8 in German s16 unk9C7E; u8 filler9C80[0xDA4-0xC80]; u8 unk9DA4[0x24]; - u8 filler9DC8[0xF6E - 0xDC8]; + u8 filler9DC8[0xE14 - 0xDC8]; + u8 unk9E14[0xE41 - 0xE14]; + u8 unk9E41[0xF6E - 0xE41]; u8 unk9F6E[1]; // unknown length }; #define static_assert(cond) \ typedef char test_[(cond) ? 1 : -1] -static_assert(offsetof(struct Shared1000, unk20) == 0x20); +//static_assert(offsetof(struct Shared1000, unk9DA4) == 0x9DA4); #define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING}; + const u16 gBerryMasterWifePhrases[][2] = { #if ENGLISH @@ -209,15 +214,15 @@ bool8 sub_80E75D8(void); bool8 sub_80E77C8(void); void sub_80E7A98(void); void sub_80E7AD4(void); -u8 sub_80E7B40(void); +bool8 sub_80E7B40(void); void sub_80E7D30(void); void sub_80E7D6C(void); void sub_80E7D9C(void); -u8 sub_80E7DD0(void); +bool8 sub_80E7DD0(void); void sub_80E7E50(void); -void sub_80E7F00(); +void sub_80E7F00(u16, u16); u8 sub_80E7FA8(void); -u8 sub_80E8054(void); +bool8 sub_80E8054(void); u8 sub_80E8094(void); u8 sub_80E810C(void); void sub_80E81C0(void); @@ -243,6 +248,7 @@ void sub_80E9974(void); void sub_80E9A14(void); void sub_80E9A4C(void); void sub_80E9AD4(void); +void sub_80E9C94(void); void sub_80E9D00(void); void sub_80E9D7C(void); void sub_80E9E08(); @@ -261,9 +267,9 @@ u8 sub_80EAD7C(u8); void sub_80EAECC(void); void sub_80EB040(void); void sub_80EB0B0(void); +void sub_80EB218(); u16 sub_80EB2D4(); bool8 sub_80EB680(u16 *, u16, u16, u16); -void sub_80E9C94(void); // TODO: Integrate German code into this #if ENGLISH @@ -921,7 +927,7 @@ void sub_80E6D7C(void) { case 0: sub_80E8398(2); - if (sub_80E8054() != 0) + if (sub_80E8054()) { sub_80E91D4(5); shared1000.unk24 = 10; @@ -1198,7 +1204,7 @@ void sub_80E7294(void) } else { - if (shared1000.unk1B9 != 0) + if (shared1000.unk1B9) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { @@ -1217,7 +1223,7 @@ void sub_80E7324(void) switch (shared1000.unk24) { case 0: - if (sub_80E7DD0() == 0) + if (!sub_80E7DD0()) { sub_80E682C(sub_80E7294); } @@ -1577,4 +1583,217 @@ void sub_80E7AD4(void) shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]; } +bool8 sub_80E7B40(void) +{ + bool8 pressedUpDown = FALSE; + + shared1000.unk1C0 = 0; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (shared1000.unk99A4 == 0) + return FALSE; + shared1000.unk99A4--; + if (shared1000.unk99A4 < shared1000.unk9A29) + { + shared1000.unk1C0 = -1; + return FALSE; + } + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (shared1000.unk99A4 >= shared1000.unk9A28 - 1) + return FALSE; + shared1000.unk99A4++; + if (shared1000.unk99A4 >= shared1000.unk9A29 + 4) + { + shared1000.unk1C0 = 1; + return FALSE; + } + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + sub_80E7D30(); + return TRUE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + shared1000.unk99A5--; + if (shared1000.unk99A5 < 0) + shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + shared1000.unk99A5++; + if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) + shared1000.unk99A5 = 0; + return TRUE; + } + + if (gMain.newKeys & START_BUTTON) + { + if (shared1000.unk9A29 != 0) + { + shared1000.unk1C0 = -shared1000.unk9A29; + if (shared1000.unk1C0 < -4) + shared1000.unk1C0 = -4; + } + shared1000.unk99A4 += shared1000.unk1C0; + shared1000.unk1BE = 4; + } + else if (gMain.newKeys & SELECT_BUTTON) + { + if (shared1000.unk9A29 < shared1000.unk9A28 - 4) + { + shared1000.unk1C0 = shared1000.unk9A28 - 4 - shared1000.unk9A29; + if (shared1000.unk1C0 > 4) + shared1000.unk1C0 = 4; + } + shared1000.unk99A4 += shared1000.unk1C0; + shared1000.unk1BE = 4; + } + + return FALSE; +} + +void sub_80E7D30(void) +{ + if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) + shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; +} + +void sub_80E7D6C(void) +{ + u16 i; + + for (i = 0; i < shared1000.unkA; i++) + sub_80E7F00(i, 0xFFFF); +} + +void sub_80E7D9C(void) +{ + u16 i; + + for (i = 0; i < shared1000.unkA; i++) + shared1000.unk4[i] = shared1000.unkC[i]; +} + +bool8 sub_80E7DD0(void) +{ + u16 r4 = shared1000.unk9A2A[shared1000.unk99A4][shared1000.unk99A5]; + + if (shared1000.unk7D != 0 + && shared1000.unk7E[shared1000.unk86] > 1 + && sub_80EB2D4(r4) == 7) + return FALSE; + + sub_80E7F00(shared1000.unk27, r4); + sub_80E95A4(); + return TRUE; +} + +void sub_80E7E50(void) +{ + u16 r5 = 0; + u16 i; + u16 j; + + for (i = 0; i < shared1000.unk84; i++) + { + shared1000.unk7E[i] = 0; + for (j = 0; j < shared1000.unk83; j++) + { + shared1000.unkC[r5] = shared1000.unk4[r5]; + shared1000.unk8C[i][j] = 0; + r5++; + } + } +} + +void sub_80E7F00(u16 a, u16 b) +{ + u16 r5 = a / shared1000.unk83; + u16 r8 = a % shared1000.unk83; + u16 r4 = sub_80EB2D4(shared1000.unkC[a]); + u16 r3 = sub_80EB2D4(b); + + if (r4 == 7) + { + if (r3 != 7) + shared1000.unk7E[r5]--; + } + else + { + if (r3 == 7) + shared1000.unk7E[r5]++; + } + r3 = 0; + shared1000.unk8C[r5][r8] = r3; + shared1000.unkC[a] = b; +} + +u8 sub_80E7FA8(void) +{ + u16 r8 = 0; + u16 i; + u8 *r1; + u8 *r2; + + for (i = 0; i < shared1000.unkA; i++) + { + sub_80EB218(shared1000.unk9E14, shared1000.unk4[i], 0); + sub_80EB218(shared1000.unk9E41, shared1000.unkC[i], 0); + r1 = shared1000.unk9E14; + r2 = shared1000.unk9E41; + while (*r1 == *r2 && *r1 != 0xFF) + { + r1++; + r2++; + } + if (*r1 != *r2) + r8++; + } + return r8; +} + +bool8 sub_80E8054(void) +{ + u16 i; + + for (i = 0; i < shared1000.unkA; i++) + { + if (shared1000.unkC[i] != 0xFFFF) + return FALSE; + } + return TRUE; +} + +// CheckMysteryEventPhrase +bool8 sub_80E8094(void) +{ + u16 i; + u8 *r3; + u8 *r4; + + for (i = 0; i < 4; i++) + { + sub_80EB218(shared1000.unk9E14, shared1000.unkC[i], 0); + sub_80EB218(shared1000.unk9E41, gMysteryEventPhrase[i], 0); + r3 = shared1000.unk9E14; + r4 = shared1000.unk9E41; + while (*r3 != 0xFF && *r4 != 0xFF) + { + if (*r3++ != *r4++) + return FALSE; + } + if (*r3 != 0xFF || *r4 != 0xFF) + return FALSE; + } + return TRUE; +} + #endif -- cgit v1.2.3 From 967d010f6dc9b7e07550154894307a24f165bbd8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 3 Jan 2018 00:09:13 -0600 Subject: integrate some German easy chat code --- src/easy_chat_before.c | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index c43804c23..b5e87337f 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -83,8 +83,11 @@ struct Shared1000 u8 filler9C7A[2]; u16 unk9C7C; // this is at 0x9FA8 in German s16 unk9C7E; - u8 filler9C80[0xDA4-0xC80]; - u8 unk9DA4[0x24]; + u8 unk9C80[0xC9-0x80]; + u8 unk9CC9[0xD12-0xCC9]; + u8 unk9D12[0x5B-0x12]; + u8 unk9D5B[0xA4-0x5B]; + u8 unk9DA4[0xC8-0xA4]; u8 filler9DC8[0xE14 - 0xDC8]; u8 unk9E14[0xE41 - 0xE14]; u8 unk9E41[0xF6E - 0xE41]; @@ -271,9 +274,6 @@ void sub_80EB218(); u16 sub_80EB2D4(); bool8 sub_80EB680(u16 *, u16, u16, u16); -// TODO: Integrate German code into this -#if ENGLISH - void sub_80E60D8(void) { u8 r4 = 3; @@ -542,13 +542,8 @@ void sub_80E6690(void) { u8 *pointers[] = { -#if ENGLISH - gSharedMem + 0xAC80, gSharedMem + 0xACC9, - gSharedMem + 0xAD12, gSharedMem + 0xAD5B, -#else - gSharedMem + 0xAFAC, gSharedMem + 0xAFF5, - gSharedMem + 0xB03E, gSharedMem + 0xB087, -#endif + shared1000.unk9C80, shared1000.unk9CC9, + shared1000.unk9D12, shared1000.unk9D5B, }; u8 *r3; u16 i; @@ -581,22 +576,6 @@ void sub_80E6690(void) r3[3] = 0xFF; } -#endif - -// local variable -#if GERMAN -u8 *const gUnknown_083DB7DC[] = -{ -#if ENGLISH - gSharedMem + 0xAC80, gSharedMem + 0xACC9, - gSharedMem + 0xAD12, gSharedMem + 0xAD5B, -#else - gSharedMem + 0xAFAC, gSharedMem + 0xAFF5, - gSharedMem + 0xB03E, gSharedMem + 0xB087, -#endif -}; -#endif - // Default profile phrase const u16 gUnknown_083DB7EC[] = { @@ -625,7 +604,6 @@ const u16 gUnknown_083DB7F4[] = const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); -#if ENGLISH // ResetDefaultEasyChatPhrases void InitEasyChatPhrases(void) { @@ -1795,5 +1773,3 @@ bool8 sub_80E8094(void) } return TRUE; } - -#endif -- cgit v1.2.3 From cf37681831a9a8289d5941e66ce673b896abf71f Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 3 Jan 2018 14:30:23 -0600 Subject: decompile sub_80E810C - sub_80E872C --- src/easy_chat_2.c | 403 +++++++++++++++++++++++++++++++++++++++++++++++++ src/easy_chat_before.c | 135 +++++++---------- 2 files changed, 455 insertions(+), 83 deletions(-) create mode 100644 src/easy_chat_2.c (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c new file mode 100644 index 000000000..cc1877db1 --- /dev/null +++ b/src/easy_chat_2.c @@ -0,0 +1,403 @@ +#include "global.h" +#include "easy_chat.h" +#include "graphics.h" +#include "sprite.h" +#include "trig.h" + +void sub_80E8268(void); +void sub_80E82BC(struct Sprite *); +void sub_80E8534(void); +void sub_80E85F8(struct Sprite *); +void sub_80E872C(struct Sprite *); +void sub_80E8760(struct Sprite *); +void sub_80E8818(void); +void sub_80E8A7C(void); + +const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); +const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); +const u8 InterviewArrowTiles[] = INCBIN_U8("graphics/misc/interview_arrow.4bpp"); +const u8 InterviewButtonTiles[] = INCBIN_U8("graphics/misc/interview_buttons.4bpp"); +const u16 gMenuInterviewFrame_Pal[] = INCBIN_U16("graphics/misc/interview_frame.gbapal"); +const u8 gMenuInterviewFrame_Gfx[] = INCBIN_U8("graphics/misc/interview_frame.4bpp.lz"); +const u8 InterviewTriangleCursorTiles[] = INCBIN_U8("graphics/misc/interview_triangle_cursor.4bpp"); + +void sub_80E8218(void) +{ + struct SpriteSheet interviewSpriteSheets[] = + { + {InterviewTriangleCursorTiles, 0x20, 0}, + {gInterviewOutlineCursorTiles, 0x700, 1}, + {InterviewArrowTiles, 0x100, 2}, + {InterviewButtonTiles, 0x100, 3}, + {NULL, 0, 0}, + }; + struct SpritePalette interviewSpritePalettes[] = + { + {InterviewPalette_0, 0}, + {InterviewPalette_1, 1}, + {NULL, 0}, + }; + + LoadSpriteSheets(interviewSpriteSheets); + LoadSpritePalettes(interviewSpritePalettes); + sub_80E8268(); + sub_80E8818(); + sub_80E8A7C(); +} + +const struct OamData gOamData_83DBBF4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct SpriteTemplate gSpriteTemplate_83DBBFC = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gOamData_83DBBF4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E82BC, +}; + +void sub_80E8268(void) +{ + u8 spriteId; + + spriteId = CreateSprite(&gSpriteTemplate_83DBBFC, 0, 0, 0); + gSprites[spriteId].pos1.y = gUnknown_083DB694->unk8A * 8 + 8; + gSprites[spriteId].pos1.x = gUnknown_083DB694->unk88 * 8 + 4; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = 0; + gUnknown_083DB694->unk98 = &gSprites[spriteId]; +} + +void sub_80E82BC(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + { + if (gUnknown_083DB694->unk87) + { + u16 r5 = gUnknown_083DB694->unk86; + u16 r4 = gUnknown_083DB694->unk85; + u16 r7 = 0; + u16 i; + + for (i = 0; i < r4; i++) + r7 += gUnknown_083DB694->unk8C[r5][i]; + + if (r5 == gUnknown_083DB694->unk84) + { + sprite->pos1.y = 96; + sprite->pos1.x = (r4 * 7 + 3) * 8 + 4; + } + else + { + sprite->pos1.y = (gUnknown_083DB694->unk8A + r5 * 2) * 8 + 8; + sprite->pos1.x = (gUnknown_083DB694->unk88 + r7 + r4 * 11) * 8 + 4; + } + + sprite->pos2.x = -6; + sprite->data[0] = 0; + } + else + { + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + if (++sprite->pos2.x > 0) + sprite->pos2.x = -6; + } + } + } +} + +void sub_80E8398(u8 a) +{ + switch (a) + { + case 0: + gUnknown_083DB694->unk98->data[1] = a; + gUnknown_083DB694->unk98->pos2.x = a; + gUnknown_083DB694->unk98->invisible = FALSE; + break; + case 1: + gUnknown_083DB694->unk98->data[1] = a; + gUnknown_083DB694->unk98->pos2.x = 0; + gUnknown_083DB694->unk98->invisible = FALSE; + break; + case 2: + gUnknown_083DB694->unk98->data[1] = 1; + gUnknown_083DB694->unk98->pos2.x = 0; + gUnknown_083DB694->unk98->invisible = TRUE; + break; + } +} + +const struct OamData gOamData_83DBC14 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83DBC1C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC24[] = +{ +#if ENGLISH + ANIMCMD_FRAME(8, 5), +#else + ANIMCMD_FRAME(0, 5), +#endif + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC2C[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC34[] = +{ + ANIMCMD_FRAME(24, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC3C[] = +{ + ANIMCMD_FRAME(32, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC44[] = +{ + ANIMCMD_FRAME(40, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC4C[] = +{ + ANIMCMD_FRAME(40, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC54[] = +{ + ANIMCMD_FRAME(40, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC5C[] = +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC64[] = +{ +#if ENGLISH + ANIMCMD_FRAME(40, 5), +#else + ANIMCMD_FRAME(16, 5), +#endif + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC6C[] = +{ + ANIMCMD_FRAME(48, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBC74[] = +{ + ANIMCMD_FRAME(40, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DBC7C[] = +{ + gSpriteAnim_83DBC1C, + gSpriteAnim_83DBC24, + gSpriteAnim_83DBC2C, + gSpriteAnim_83DBC34, +}; + +const union AnimCmd *const gSpriteAnimTable_83DBC8C[] = +{ + gSpriteAnim_83DBC3C, + gSpriteAnim_83DBC44, + gSpriteAnim_83DBC4C, + gSpriteAnim_83DBC54, +}; + +const union AnimCmd *const gSpriteAnimTable_83DBC9C[] = +{ + gSpriteAnim_83DBC5C, + gSpriteAnim_83DBC64, + gSpriteAnim_83DBC6C, + gSpriteAnim_83DBC74, +}; + +/* +const struct SpriteTemplate gSpriteTemplate_83DBCAC = +{ + .tileTag = 1, + .paletteTag = 1, + .oam = &gOamData_83DBC14, + .anims = gSpriteAnimTable_83DBC7C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E85F8, +}; +*/ + +void sub_80E8420(void) +{ + struct SpriteTemplate spriteTemplate_83DBCAC = + { + .tileTag = 1, + .paletteTag = 1, + .oam = &gOamData_83DBC14, + .anims = gSpriteAnimTable_83DBC7C, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E85F8, + }; + u8 spriteId; + + spriteId = CreateSprite(&spriteTemplate_83DBCAC, 0, 0, 3); + gUnknown_083DB694->unk9C = &gSprites[spriteId]; + + spriteTemplate_83DBCAC.anims = gSpriteAnimTable_83DBC8C; + spriteTemplate_83DBCAC.callback = sub_80E872C; + spriteId = CreateSprite(&spriteTemplate_83DBCAC, 0, 0, 4); + gUnknown_083DB694->unkA0 = &gSprites[spriteId]; + + spriteTemplate_83DBCAC.anims = gSpriteAnimTable_83DBC9C; + spriteTemplate_83DBCAC.callback = sub_80E8760; + spriteId = CreateSprite(&spriteTemplate_83DBCAC, 0, 0, 5); + gUnknown_083DB694->unkA4 = &gSprites[spriteId]; + + gUnknown_083DB694->unk9C->data[0] = 0; + gUnknown_083DB694->unkA0->data[0] = 0; + gUnknown_083DB694->unkA4->data[0] = 0; + + gUnknown_083DB694->unk9C->data[3] = 0x0101 + IndexOfSpritePaletteTag(1) * 16; + sub_80E8534(); + gUnknown_083DB694->unk96 = 1; + REG_BLDCNT = 0x3F40; +} + +void sub_80E8504(void) +{ + DestroySprite(gUnknown_083DB694->unk9C); + DestroySprite(gUnknown_083DB694->unkA0); + DestroySprite(gUnknown_083DB694->unkA4); +} + +void sub_80E8534(void) +{ + if (gUnknown_083DB694->unk1B7 != 0) + gUnknown_020388AC = 1; + else if (gUnknown_083DB694->unk26 == 0) + gUnknown_020388AC = 0; + else if (gUnknown_083DB694->unk1A8 == 0 && gUnknown_083DB694->unk1A9 == 6) + gUnknown_020388AC = 2; + else + gUnknown_020388AC = 3; + + gUnknown_083DB694->unk9C->data[2] = gUnknown_020388AC; + gUnknown_083DB694->unkA0->data[2] = gUnknown_020388AC; + gUnknown_083DB694->unkA4->data[2] = gUnknown_020388AC; + + StartSpriteAnim(gUnknown_083DB694->unk9C, gUnknown_020388AC); + StartSpriteAnim(gUnknown_083DB694->unkA0, gUnknown_020388AC); + StartSpriteAnim(gUnknown_083DB694->unkA4, gUnknown_020388AC); + + gUnknown_083DB694->unk9C->data[5] = 8; + gUnknown_083DB694->unk9C->data[6] = 8; + gUnknown_083DB694->unk9C->data[1] = 0; +} + +extern const s8 gUnknown_083DBCC4[][7]; + +void sub_80E85F8(struct Sprite *sprite) +{ + sprite->data[0]++; + if (sprite->data[0] & 1) + sprite->data[5] = 8 + (gSineTable[sprite->data[1]] >> 5); + else + sprite->data[6] = 8 - (gSineTable[sprite->data[1]] >> 5); + + sprite->data[1] = (sprite->data[1] + 5) & 0xFF; + + REG_BLDALPHA = (sprite->data[6] << 8) | sprite->data[5]; + + if (gUnknown_083DB694->unk96 != 0) + { + sub_80E8534(); + + gUnknown_083DB694->unk9C->data[5] = 8; + gUnknown_083DB694->unk9C->data[6] = 8; + gUnknown_083DB694->unk9C->data[1] = 0; + + switch (sprite->data[2]) + { + case 0: + sprite->pos1.x = gUnknown_083DB694->unk1A9 * 88 + 32; + sprite->pos1.y = (gUnknown_083DB694->unk1A8 - gUnknown_083DB694->unk1B5) * 16 + 96; + break; + case 1: + sprite->pos1.x = 216; + sprite->pos1.y = gUnknown_083DB694->unk1A8 * 16 + 96; + break; + case 2: + sprite->pos1.x = 151; + sprite->pos1.y = 96; + break; + case 3: + sprite->pos1.x = gUnknown_083DBCC4[gUnknown_083DB694->unk1A8][gUnknown_083DB694->unk1A9] * 8 + 31; + sprite->pos1.y = (gUnknown_083DB694->unk1A8 - gUnknown_083DB694->unk1B5) * 16 + 96; + break; + } + } +} + +void sub_80E872C(struct Sprite *sprite) +{ + if (gUnknown_083DB694->unk96 != 0 && sprite->data[2] == 0) + { + sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 32; + sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + } +} diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index b5e87337f..5d606ef10 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -6,10 +6,12 @@ #include "easy_chat.h" #include "event_data.h" #include "ewram.h" +#include "graphics.h" #include "main.h" #include "menu.h" #include "palette.h" #include "sound.h" +#include "sprite.h" #include "string_util.h" #include "strings.h" #include "unknown_task.h" @@ -19,86 +21,6 @@ extern const struct WindowConfig gWindowConfig_81E6DA8; extern void sub_80546B8(void); -struct Shared1000 -{ - void (*unk0)(void); // main cb 2 - u16 *unk4; - u8 unk8; - u8 unk9; - u8 unkA; - u8 unkB; - u16 unkC[(0x20-0xC)/2]; // unknown length - void (*unk20)(void); - u16 unk24; - u8 unk26; - u8 unk27; - u16 unk28; - u8 unk2A[11][2]; // unknown length - u8 unk40[4][14]; - u8 unk78[0x7D - 0x78]; // unknown length - u8 unk7D; - u8 unk7E[0x83-0x7E]; - s8 unk83; // s8? - //u8 unk83; // s8? - s8 unk84; - s8 unk85; - s8 unk86; - bool8 unk87; - u16 unk88; - u16 unk8A; - u8 unk8C[(0x96-0x8C)/2][2]; - u8 unk96; - u8 filler97[0x1A8-0x97]; - s8 unk1A8; - s8 unk1A9; - s8 unk1AA[0xB5-0xAA]; // unknown length - s8 unk1B5; - s8 unk1B6; - s8 unk1B7; - u8 unk1B8; - u8 unk1B9; - u16 unk1BA; - u8 filler1BC[0xBE - 0xBC]; - u8 unk1BE; - u8 filler1BF; - s8 unk1C0; - u8 filler1C1[3]; - void (*unk1C4)(void); - u8 filler1C8[0x4142-0x1C8]; -#if GERMAN - u8 filler4142_de[0x32A]; -#endif - u16 unk4142[(0x78-0x42)/2]; - u16 unk4178[(0x99A4-0x4178)/2]; // unknown length -#if GERMAN - u8 filler99A4_de[2]; -#endif - s8 unk99A4; - s8 unk99A5; - s8 unk99A6[0xA28-0x9A6]; - s8 unk9A28; - s8 unk9A29; - //u8 filler9A2A[0xC7C-0xA2A]; - u16 unk9A2A[0x94][2]; // unknown length - u8 filler9C7A[2]; - u16 unk9C7C; // this is at 0x9FA8 in German - s16 unk9C7E; - u8 unk9C80[0xC9-0x80]; - u8 unk9CC9[0xD12-0xCC9]; - u8 unk9D12[0x5B-0x12]; - u8 unk9D5B[0xA4-0x5B]; - u8 unk9DA4[0xC8-0xA4]; - u8 filler9DC8[0xE14 - 0xDC8]; - u8 unk9E14[0xE41 - 0xE14]; - u8 unk9E41[0xF6E - 0xE41]; - u8 unk9F6E[1]; // unknown length -}; - -#define static_assert(cond) \ - typedef char test_[(cond) ? 1 : -1] - -//static_assert(offsetof(struct Shared1000, unk9DA4) == 0x9DA4); - #define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING}; @@ -231,12 +153,15 @@ u8 sub_80E810C(void); void sub_80E81C0(void); void sub_80E81FC(void); void sub_80E8218(void); + void sub_80E8398(); void sub_80E8420(void); void sub_80E8504(void); void sub_80E87CC(); + void sub_80E88F0(void); void sub_80E8958(); + void sub_80E8BF4(); void sub_80E8CEC(void); void sub_80E8D54(void); @@ -270,7 +195,7 @@ u8 sub_80EAD7C(u8); void sub_80EAECC(void); void sub_80EB040(void); void sub_80EB0B0(void); -void sub_80EB218(); +u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(); bool8 sub_80EB680(u16 *, u16, u16, u16); @@ -602,8 +527,6 @@ const u16 gUnknown_083DB7F4[] = EC_WORD_EXCL, }; -const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); - // ResetDefaultEasyChatPhrases void InitEasyChatPhrases(void) { @@ -1773,3 +1696,49 @@ bool8 sub_80E8094(void) } return TRUE; } + +u8 sub_80E810C(void) +{ + u16 i; + + for (i = 0; i < 5; i++) + { + u8 *ptr; + u8 *r3; + + ptr = sub_80EB218(shared1000.unk9E6E, shared1000.unkC[0], 0); + *ptr++ = CHAR_SPACE; + sub_80EB218(ptr, shared1000.unkC[1], 0); + + ptr = sub_80EB218(shared1000.unk9EEE, gBerryMasterWifePhrases[i][0], 0); + *ptr++ = CHAR_SPACE; + sub_80EB218(ptr, gBerryMasterWifePhrases[i][1], 0); + + ptr = shared1000.unk9E6E; + r3 = shared1000.unk9EEE; + while (*ptr != EOS && *r3 != EOS) + { + if (*ptr++ != *r3++) + break; + } + if (*ptr == EOS && *r3 == EOS) + return i + 1; + } + return 0; +} + +void sub_80E81C0(void) +{ + u8 *ptr; + + ptr = sub_80EB218(gStringVar2, shared1000.unk9C7C, 0); + *ptr++ = CHAR_SPACE; + sub_80EB218(ptr, shared1000.unk9C7E, 0); +} + +void sub_80E81FC(void) +{ + PlaySE(SE_SELECT); + sub_80E95A4(); + MenuZeroFillWindowRect(0, 0, 29, 13); +} -- cgit v1.2.3 From 324705201c8648830a9b5ed7926891bf38bfcabe Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 3 Jan 2018 20:24:50 -0600 Subject: decompile sub_80E8760 - sub_80E8B78 --- src/easy_chat_2.c | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 306 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index cc1877db1..0c0bc9e80 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -11,7 +11,9 @@ void sub_80E85F8(struct Sprite *); void sub_80E872C(struct Sprite *); void sub_80E8760(struct Sprite *); void sub_80E8818(void); +void sub_80E8860(struct Sprite *); void sub_80E8A7C(void); +void sub_80E8B78(struct Sprite *); const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); @@ -349,7 +351,13 @@ void sub_80E8534(void) gUnknown_083DB694->unk9C->data[1] = 0; } -extern const s8 gUnknown_083DBCC4[][7]; +const s8 gUnknown_083DBCC4[][7] = +{ + {1, 3, 5, 8, 10, 12, 15}, + {1, 3, 5, 8, 10, 12, 0}, + {1, 3, 5, 8, 10, 12, 14}, + {1, 3, 5, 8, 10, 12, 14}, +}; void sub_80E85F8(struct Sprite *sprite) { @@ -393,6 +401,7 @@ void sub_80E85F8(struct Sprite *sprite) } } + void sub_80E872C(struct Sprite *sprite) { if (gUnknown_083DB694->unk96 != 0 && sprite->data[2] == 0) @@ -401,3 +410,299 @@ void sub_80E872C(struct Sprite *sprite) sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; } } + +#if ENGLISH +void sub_80E8760(struct Sprite *sprite) +{ + if (gUnknown_083DB694->unk96 != 0) + { + switch (sprite->data[2]) + { + case 0: + sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 64; + sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + break; + case 2: + sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 21; + sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + break; + } + } +} +#else +__attribute__((naked)) +void sub_80E8760(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {lr}\n\ + adds r2, r0, 0\n\ + ldr r0, _080E8784 @ =gUnknown_083DB694\n\ + ldr r1, [r0]\n\ + adds r0, r1, 0\n\ + adds r0, 0x96\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080E87B2\n\ + movs r3, 0x32\n\ + ldrsh r0, [r2, r3]\n\ + cmp r0, 0x1\n\ + beq _080E8798\n\ + cmp r0, 0x1\n\ + bgt _080E8788\n\ + cmp r0, 0\n\ + beq _080E878E\n\ + b _080E87B2\n\ + .align 2, 0\n\ +_080E8784: .4byte gUnknown_083DB694\n\ +_080E8788:\n\ + cmp r0, 0x2\n\ + beq _080E87A2\n\ + b _080E87B2\n\ +_080E878E:\n\ + adds r1, 0x9C\n\ + ldr r0, [r1]\n\ + ldrh r0, [r0, 0x20]\n\ + adds r0, 0x40\n\ + b _080E87AA\n\ +_080E8798:\n\ + adds r1, 0x9C\n\ + ldr r0, [r1]\n\ + ldrh r0, [r0, 0x20]\n\ + adds r0, 0x1C\n\ + b _080E87AA\n\ +_080E87A2:\n\ + adds r1, 0x9C\n\ + ldr r0, [r1]\n\ + ldrh r0, [r0, 0x20]\n\ + adds r0, 0x15\n\ +_080E87AA:\n\ + strh r0, [r2, 0x20]\n\ + ldr r0, [r1]\n\ + ldrh r0, [r0, 0x22]\n\ + strh r0, [r2, 0x22]\n\ +_080E87B2:\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +void sub_80E87A4(u8 a) +{ + gUnknown_083DB694->unkA8->data[1] = (a == 0); + gUnknown_083DB694->unkA8->pos2.x = 0; +} + +void sub_80E87CC(u8 a) +{ + gUnknown_083DB694->unkA8->invisible = (a == 0); + sub_80E87A4(a); + if (a != 0) + gUnknown_083DB694->unk1B9 = 1; +} + +void sub_80E8818(void) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83DBBFC, 0, 0, 0); + + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = 0; + gUnknown_083DB694->unkA8 = &gSprites[spriteId]; + gUnknown_083DB694->unkA8->callback = sub_80E8860; + sub_80E87CC(0); +} + +void sub_80E8860(struct Sprite *sprite) +{ + if (sprite->data[1] == 0) + { + if (gUnknown_083DB694->unk1B9 != 0) + { + sprite->pos1.x = gUnknown_083DB694->unk99A5 * 88 + 44; + sprite->pos1.y = (gUnknown_083DB694->unk99A4 - gUnknown_083DB694->unk9A29) * 16 + 96; + sprite->pos2.x = -6; + sprite->data[0] = 0; + } + else + { + sprite->data[0]++; + if (sprite->data[0] > 2) + { + sprite->data[0] = 0; + sprite->pos2.x++; + if (sprite->pos2.x > 0) + sprite->pos2.x = -6; + } + } + } +} + +void sub_80E88F0(void) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + gUnknown_083DB694->unkAC[i]->invisible = TRUE; + gUnknown_083DB694->unkAC[i]->data[1] = 0; + gUnknown_083DB694->unkB4[i]->invisible = TRUE; + gUnknown_083DB694->unkB4[i]->data[1] = 0; + } + gUnknown_083DB694->unk9C70 = 0; +} + +void sub_80E8958(u8 animNum) +{ + s16 r9; + u16 i; + + if (animNum == 0) + { + r9 = 100; + gUnknown_083DB694->unk9C6C = &gUnknown_083DB694->unk1B5; + if (gUnknown_083DB694->unk26 == 0) + gUnknown_083DB694->unk9C71 = gUnknown_083DB694->unk1B6 - 4; + else + gUnknown_083DB694->unk9C71 = 0; + } + else + { + r9 = 120; + gUnknown_083DB694->unk9C6C = &gUnknown_083DB694->unk9A29; + gUnknown_083DB694->unk9C71 = gUnknown_083DB694->unk9A28 - 4; + for (i = 0; i < 2; i++) + { + gUnknown_083DB694->unkB4[i]->invisible = FALSE; + gUnknown_083DB694->unkB4[i]->data[1] = 1; + } + } + + if (gUnknown_083DB694->unk9C71 < 0) + gUnknown_083DB694->unk9C71 = 0; + + for (i = 0; i < 2; i++) + { + gUnknown_083DB694->unkAC[i]->pos1.x = r9; + gUnknown_083DB694->unkAC[i]->invisible = FALSE; + gUnknown_083DB694->unkAC[i]->data[1] = 1; + StartSpriteAnim(gUnknown_083DB694->unkAC[i], animNum); + } + + gUnknown_083DB694->unk9C70 = 1; +} + +const struct OamData gOamData_83DBCE0 = +{ + .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, +}; + +const union AnimCmd gSpriteAnim_83DBCE8[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBCF0[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DBCF8[] = +{ + gSpriteAnim_83DBCE8, + gSpriteAnim_83DBCF0, +}; + +const union AnimCmd gSpriteAnim_83DBD00[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBD08[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DBD10[] = +{ + gSpriteAnim_83DBD00, + gSpriteAnim_83DBD08, +}; + +void sub_80E8A7C(void) +{ + struct SpriteTemplate spriteTemplate_83DBD18 = + { + .tileTag = 2, + .paletteTag = 0, + .oam = &gOamData_83DBCE0, + .anims = gSpriteAnimTable_83DBCF8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80E8B78, + }; + u16 i; + u8 spriteId; + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&spriteTemplate_83DBD18, 0, 84 + i * 72 , 0); + gUnknown_083DB694->unkAC[i] = &gSprites[spriteId]; + gUnknown_083DB694->unkAC[i]->data[0] = i; + gUnknown_083DB694->unkAC[i]->vFlip = i; + } + + spriteTemplate_83DBD18.tileTag = 3; + spriteTemplate_83DBD18.anims = gSpriteAnimTable_83DBD10; + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&spriteTemplate_83DBD18, 142 + i * 40, 88, 0); + gUnknown_083DB694->unkB4[i] = &gSprites[spriteId]; + gUnknown_083DB694->unkB4[i]->data[0] = i; + gUnknown_083DB694->unkB4[i]->oam.shape = 1; + gUnknown_083DB694->unkB4[i]->oam.size = 1; + StartSpriteAnim(gUnknown_083DB694->unkB4[i], i); + } + + sub_80E8958(0); + sub_80E88F0(); +} + +void sub_80E8B78(struct Sprite *sprite) +{ + bool8 invisible; + + if (gUnknown_083DB694->unk9C70 != 0 && sprite->data[1] != 0) + { + if (sprite->data[0] == 0) + { + invisible = FALSE; + if (*gUnknown_083DB694->unk9C6C == 0) + invisible = TRUE; + sprite->invisible = invisible; + } + else + { + invisible = FALSE; + if (*gUnknown_083DB694->unk9C6C == gUnknown_083DB694->unk9C71) + invisible = TRUE; + sprite->invisible = invisible; + } + } +} -- cgit v1.2.3 From 4a01c3233aa8758a9a56fa419642c8bc4590d09a Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Thu, 4 Jan 2018 04:15:17 +0100 Subject: Decompiled poison.s --- src/battle/anim/poison.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++ src/rom_8077ABC.c | 4 +- 2 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/battle/anim/poison.c (limited to 'src') diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c new file mode 100644 index 000000000..c53fb2a8b --- /dev/null +++ b/src/battle/anim/poison.c @@ -0,0 +1,115 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +void sub_80D9DD4(struct Sprite *sprite); +void sub_80D9E78(struct Sprite *sprite); +void sub_80D9EE8(struct Sprite *sprite); +void sub_80D9FF0(struct Sprite *sprite); + +void sub_80D9D70(struct Sprite *sprite) { + if (!gBattleAnimArgs[3]) { + StartSpriteAnim(sprite, 2); + } + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9DD4; +} + +void sub_80D9DD4(struct Sprite *sprite) { + if (sub_8078718(sprite)) { + DestroyAnimSprite(sprite); + } +} + +void sub_80D9DF0(struct Sprite *sprite) { + s16 l1, l2; + if (!gBattleAnimArgs[3]) { + StartSpriteAnim(sprite, 2); + } + sub_80787B0(sprite, 1); + sub_807A3FC(gAnimBankTarget, 1, &l1, &l2); + if (GetBankSide(gAnimBankAttacker)) { + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + } + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[2] = l1 + gBattleAnimArgs[4]; + sprite->data[4] = l2 + gBattleAnimArgs[5]; + sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9E78; +} + +void sub_80D9E78(struct Sprite *sprite) { + if (sub_8078718(sprite)) { + DestroyAnimSprite(sprite); + } +} + +void sub_80D9E94(struct Sprite *sprite) { + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + sub_8078A5C(sprite); + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; + sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + sprite->callback = sub_80D9EE8; +} + +void sub_80D9EE8(struct Sprite *sprite) { + sub_8078394(sprite); + sprite->data[1] -= sprite->data[5]; + sprite->data[2] -= sprite->data[6]; + if (!sprite->data[0]) { + DestroyAnimSprite(sprite); + } +} + +void sub_80D9F14(struct Sprite *sprite) { + sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + if (GetBankSide(gAnimBankAttacker)) { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[4] = sprite->pos1.y + sprite->data[0]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80D9F88(struct Sprite *sprite) { + if (!gBattleAnimArgs[2]) { + sub_8078764(sprite, TRUE); + } else { + sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); + if (GetBankSide(gAnimBankAttacker)) { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + } + sprite->callback = sub_80D9FF0; +} + +void sub_80D9FF0(struct Sprite *sprite) { + sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; + sprite->pos2.x = Sin(sprite->data[0], 4); + sprite->data[1] += 0x30; + sprite->pos2.y = -(sprite->data[1] >> 8); + if (sprite->affineAnimEnded) { + DestroyAnimSprite(sprite); + } +} \ No newline at end of file diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 9cf28a111..667f74a25 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -698,7 +698,7 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { sprite->pos2.y = 0; } -void sub_8078764(struct Sprite *sprite, u8 a2) { +void sub_8078764(struct Sprite *sprite, bool8 a2) { if (!a2) { sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 0); sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 1); @@ -1841,7 +1841,7 @@ int sub_807A100(u8 slot, u8 a2) { } } -void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { +void sub_807A3FC(u8 slot, bool8 a2, s16 *a3, s16 *a4) { u8 v1, v2; s16 v3, v4; s16 v5, v6; -- cgit v1.2.3 From 3c709ef2ede275d6eeaa319a603c199a3906226b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jan 2018 23:55:30 -0500 Subject: A little tidying --- src/field/slot_machine.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index e1687b3d1..0e907674b 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -12,7 +12,6 @@ #include "trig.h" #include "graphics.h" #include "palette.h" -#include "task.h" #include "util.h" #include "text.h" #include "menu.h" -- cgit v1.2.3 From 86e1d1098e2554f21c42784115e9f69fb81b2925 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jan 2018 00:09:07 -0500 Subject: Declare as static what can be so declared --- src/field/slot_machine.c | 1119 +++++++++++++++++++++++----------------------- 1 file changed, 557 insertions(+), 562 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 0e907674b..b21d8a082 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -80,7 +80,7 @@ static void sub_8102484(void); static void sub_81024F0(void); static bool8 sub_8102540(void); static u8 sub_8102578(void); -u16 dp15_jump_random_unknown(void); +static u16 dp15_jump_random_unknown(void); static u8 sub_81025BC(void); static void sub_81027A0(void); static void sub_81027D0(void); @@ -90,44 +90,44 @@ static u8 sub_81029D4(u8 c1, u8 c2, u8 c3); static void sub_8102A24(void); static void sub_8102A64(u8 taskId); static bool8 sub_8102A44(void); -bool8 sub_8102A9C(struct Task *task); -bool8 sub_8102AD0(struct Task *task); -bool8 sub_8102B80(struct Task *task); -u8 sub_8102BA4(u8 x, s16 y); +static bool8 sub_8102A9C(struct Task *task); +static bool8 sub_8102AD0(struct Task *task); +static bool8 sub_8102B80(struct Task *task); +static u8 sub_8102BA4(u8 x, s16 y); static void sub_8102DA8(void); static void sub_8102DEC(u8 a0); static void sub_8102E1C(u8 a0); static bool8 sub_8102E40(u8 a0); static void sub_8102E68(u8 taskId); -bool8 sub_8102EA0(struct Task *task); -bool8 sub_8102EA4(struct Task *task); -bool8 sub_8102EC0(struct Task *task); -bool8 sub_8102F4C(struct Task *task); -bool8 sub_8103008(struct Task *task); -bool8 sub_810305C(void); -bool8 sub_8103154(u8 a0, u8 a1); -bool8 sub_81031B4(u8 a0, u8 a1); -bool8 sub_81032C0(void); -bool8 sub_81032E8(void); -bool8 sub_810333C(void); -bool8 sub_81033DC(void); -bool8 sub_810341C(u8 a0); -bool8 sub_810347C(u8 a0); -void sub_81034F4(void); -void sub_8103540(void); -void sub_8103564(void); -void j5_08111E84(void); -void sub_8103668(void); -void sub_810380C(void); -void sub_8103830(void); -void sub_8103910(void); -void sub_8103A78(void); +static bool8 sub_8102EA0(struct Task *task); +static bool8 sub_8102EA4(struct Task *task); +static bool8 sub_8102EC0(struct Task *task); +static bool8 sub_8102F4C(struct Task *task); +static bool8 sub_8103008(struct Task *task); +static bool8 sub_810305C(void); +static bool8 sub_8103154(u8 a0, u8 a1); +static bool8 sub_81031B4(u8 a0, u8 a1); +static bool8 sub_81032C0(void); +static bool8 sub_81032E8(void); +static bool8 sub_810333C(void); +static bool8 sub_81033DC(void); +static bool8 sub_810341C(u8 a0); +static bool8 sub_810347C(u8 a0); +static void sub_81034F4(void); +static void sub_8103540(void); +static void sub_8103564(void); +static void j5_08111E84(void); +static void sub_8103668(void); +static void sub_810380C(void); +static void sub_8103830(void); +static void sub_8103910(void); +static void sub_8103A78(void); static void sub_8103C14(u8 a0); static void sub_8103C48(u8 taskId); static void sub_8103D50(u8 a0); -void sub_8103C78(struct Task *task, u8 taskId); -void sub_8103CAC(struct Task *task, u8 taskId); -void sub_8103CC8(struct Task *task, u8 taskId); +static void sub_8103C78(struct Task *task, u8 taskId); +static void sub_8103CAC(struct Task *task, u8 taskId); +static void sub_8103CC8(struct Task *task, u8 taskId); static void sub_8103D8C(u8 a0); static void sub_8103DC8(void); static void sub_8103E04(u8 a0); @@ -140,98 +140,94 @@ static bool8 sub_8103FA0(void); static void sub_8103FE8(u8 taskId); static void sub_8104048(void); static void sub_8104064(u8 unused); -bool8 sub_81040C8(void); +static bool8 sub_81040C8(void); static void sub_81040E8(u8 taskId); -void nullsub_68(struct Task *task); -void sub_810411C(struct Task *task); -void sub_8104144(struct Task *task); -void sub_81041AC(struct Task *task); +static void nullsub_68(struct Task *task); +static void sub_810411C(struct Task *task); +static void sub_8104144(struct Task *task); +static void sub_81041AC(struct Task *task); static void sub_810421C(struct Task *task); -void sub_810423C(u8 a0); +static void sub_810423C(u8 a0); static void sub_810430C(void); static bool8 sub_810432C(void); -void sub_810434C(u8 taskId); -void sub_810437C(struct Task *task); -void sub_81043EC(struct Task *task); -void sub_8104468(struct Task *task); -void sub_8104498(struct Task *task); -void sub_8104548(struct Task *task); -void sub_8104598(struct Task *task); -void sub_81045CC(struct Task *task); -void sub_810463C(struct Task *task); -void sub_81046C0(struct Task *task); -void sub_8104764(struct Task *task); -void sub_8104794(struct Task *task); -void sub_81047EC(struct Task *task); -void sub_8104860(struct Task *task); -void sub_81048A8(struct Task *task); -void sub_81048CC(struct Task *task); -void sub_8104940(struct Task *task); -void sub_81049C8(struct Task *task); -void sub_81049F8(struct Task *task); -void sub_8104A40(s16 a0, s16 a1); -void sub_8104A88(s16 a0); -void sub_8104AB8(u8 a0); -bool8 sub_8104AEC(void); -void sub_8104B0C(u8 taskId); -void sub_8104B3C(struct Task *task); -void sub_8104B60(struct Task *task); -void sub_8104B80(struct Task *task); -void sub_8104BC8(struct Task *task); -void sub_8104BFC(struct Task *task); -void sub_8104C44(struct Task *task); -void sub_8104C5C(void); -void sub_8104CAC(u8 arg0); -bool8 sub_8104E18(void); -void nullsub_69(struct Task *task); -void sub_8104E74(u8 taskId); -void sub_8104EA8(void); -void sub_8104F8C(void); -void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3); -void sub_81050C4(void); -void sub_8105100(void); -void sub_810514C(void); -void sub_81051C0(void); -void sub_8105284(void); -void sub_81052EC(void); -void sub_81053A0(void); -void sub_810545C(void); -void sub_81054B8(void); -void sub_8105524(void); -void sub_8105554(void); -void sub_8105578(void); -void sub_8105688(s16 a0); -void sub_81056C0(void); -void sub_81056F0(void); -void sub_81057E8(s16 a0); -void sub_8105804(void); -void sub_8105854(void); -void sub_81058A0(void); -void sub_81058C4(void); -void sub_81059B8(void); -void sub_81059E8(void); -bool8 sub_8105ACC(void); -void sub_8105AEC(void); -u8 sub_8105B1C(s16 x, s16 y); -void sub_8105B88(u8 spriteId); -u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4); -void sub_81063C0(void); -void sub_8106404(void); +static void sub_810434C(u8 taskId); +static void sub_810437C(struct Task *task); +static void sub_81043EC(struct Task *task); +static void sub_8104468(struct Task *task); +static void sub_8104498(struct Task *task); +static void sub_8104548(struct Task *task); +static void sub_8104598(struct Task *task); +static void sub_81045CC(struct Task *task); +static void sub_810463C(struct Task *task); +static void sub_81046C0(struct Task *task); +static void sub_8104764(struct Task *task); +static void sub_8104794(struct Task *task); +static void sub_81047EC(struct Task *task); +static void sub_8104860(struct Task *task); +static void sub_81048A8(struct Task *task); +static void sub_81048CC(struct Task *task); +static void sub_8104940(struct Task *task); +static void sub_81049C8(struct Task *task); +static void sub_81049F8(struct Task *task); +static void sub_8104A40(s16 a0, s16 a1); +static void sub_8104A88(s16 a0); +static void sub_8104AB8(u8 a0); +static bool8 sub_8104AEC(void); +static void sub_8104B0C(u8 taskId); +static void sub_8104B3C(struct Task *task); +static void sub_8104B60(struct Task *task); +static void sub_8104B80(struct Task *task); +static void sub_8104BC8(struct Task *task); +static void sub_8104BFC(struct Task *task); +static void sub_8104C44(struct Task *task); +static void sub_8104C5C(void); +static void sub_8104CAC(u8 arg0); +static bool8 sub_8104E18(void); +static void nullsub_69(struct Task *task); +static void sub_8104E74(u8 taskId); +static void sub_8104EA8(void); +static void sub_8104F8C(void); +static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3); +static void sub_81050C4(void); +static void sub_8105100(void); +static void sub_810514C(void); +static void sub_81051C0(void); +static void sub_8105284(void); +static void sub_81052EC(void); +static void sub_81053A0(void); +static void sub_810545C(void); +static void sub_81054B8(void); +static void sub_8105524(void); +static void sub_8105554(void); +static void sub_8105578(void); +static void sub_8105688(s16 a0); +static void sub_81056C0(void); +static void sub_81056F0(void); +static void sub_81057E8(s16 a0); +static void sub_8105804(void); +static void sub_8105854(void); +static void sub_81058A0(void); +static void sub_81058C4(void); +static void sub_81059B8(void); +static void sub_81059E8(void); +static bool8 sub_8105ACC(void); +static void sub_8105AEC(void); +static u8 sub_8105B1C(s16 x, s16 y); +static void sub_8105B88(u8 spriteId); +static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4); +static void sub_81063C0(void); +static void sub_8106404(void); static void sub_8106448(void); -void sub_81064B8(void); -void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); -void sub_81065DC(void); - -const struct UnkStruct1 *const gUnknown_083ED048[]; -extern const u16 gPalette_83EDE24[]; -extern const u8 gSlotMachine_Gfx[]; -extern const u16 gUnknown_08E95A18[]; -extern const u16 gUnknown_08E95AB8[]; -extern const u16 gUnknown_08E95FB8[]; -const u8 gUnknown_083ECD04[][3]; -const u8 gUnknown_083ECE3A[]; -const u16 gUnknown_083ECE42[]; -const u16 gUnknown_083ECE48[]; +static void sub_81064B8(void); +static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); +static void sub_81065DC(void); + +static const struct UnkStruct1 *const gUnknown_083ED048[]; +static const u16 gPalette_83EDE24[]; +static const u8 gUnknown_083ECD04[][3]; +static const u8 gUnknown_083ECE3A[]; +static const u16 gUnknown_083ECE42[]; +static const u16 gUnknown_083ECE48[]; void PlaySlotMachine(u8 arg0, void *ptr) { @@ -286,7 +282,7 @@ static void sub_8101954(void) UpdatePaletteFade(); } -void sub_810196C(void) +static void sub_810196C(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -304,7 +300,7 @@ static void sub_81019B0(u8 arg0, void *ptr) StoreWordInTwoHalfwords(task->data + 1, (intptr_t)ptr); } -void sub_81019EC(void) +static void sub_81019EC(void) { struct Task *task = &gTasks[FindTaskIdByFunc(nullsub_67)]; eSlotMachine->unk01 = task->data[0]; @@ -368,7 +364,7 @@ static void sub_8101B04(void) REG_BLDALPHA = 0x809; } -const s16 gUnknown_083ECCF8[][2]; +static const s16 gUnknown_083ECCF8[][2]; static void sub_8101BA4(void) { @@ -586,7 +582,7 @@ static bool8 sub_8101E3C(struct Task *task) return FALSE; } -void sub_8101F2C(const u8 *str) +static void sub_8101F2C(const u8 *str) { MenuDisplayMessageBox(); MenuPrint(str, 2, 15); @@ -958,7 +954,7 @@ static void sub_81024F0(void) } } -u8 sub_810250C(u8 a0) +static u8 sub_810250C(u8 a0) { u8 i; @@ -983,7 +979,7 @@ static bool8 sub_8102540(void) return FALSE; } -const u8 gUnknown_083ECD16[][6]; +static const u8 gUnknown_083ECD16[][6]; static u8 sub_8102578(void) { @@ -1001,7 +997,7 @@ static u8 sub_8102578(void) return i; } -const u8 gUnknown_083ECD28[][6]; +static const u8 gUnknown_083ECD28[][6]; static u8 sub_81025BC(void) { @@ -1035,10 +1031,10 @@ static u8 sub_81025BC(void) return i; } -const u8 gUnknown_083ECD46[][17]; -const u8 gUnknown_083ECDAC[][17]; +static const u8 gUnknown_083ECD46[][17]; +static const u8 gUnknown_083ECDAC[][17]; -u8 sub_810264C(u8 a0) +static u8 sub_810264C(u8 a0) { if (eSlotMachine->unk03 == 0) { @@ -1047,7 +1043,7 @@ u8 sub_810264C(u8 a0) return gUnknown_083ECDAC[a0][eSlotMachine->unk02]; } -void sub_8102680(void) +static void sub_8102680(void) { u8 rval; s16 i; @@ -1069,9 +1065,9 @@ void sub_8102680(void) eSlotMachine->unk05 = i; } -const u16 gUnknown_083ECE12[]; +static const u16 gUnknown_083ECE12[]; -bool8 sub_81026DC(u16 a0) +static bool8 sub_81026DC(u16 a0) { u16 rval = Random() & 0xff; if (rval < gUnknown_083ECE12[a0]) @@ -1081,10 +1077,10 @@ bool8 sub_81026DC(u16 a0) return FALSE; } -const u16 gUnknown_083ECE1C[][2]; -const u16 gUnknown_083ECE30[]; +static const u16 gUnknown_083ECE1C[][2]; +static const u16 gUnknown_083ECE30[]; -u16 dp15_jump_random_unknown(void) +static u16 dp15_jump_random_unknown(void) { u8 r4 = 0; u8 rval; @@ -1134,8 +1130,8 @@ static void sub_81027A0(void) } } -extern const u16 gUnknown_083ECE5A[]; -extern const u16 gUnknown_083ECE6C[]; +static const u16 gUnknown_083ECE5A[]; +static const u16 gUnknown_083ECE6C[]; static void sub_81027D0(void) { @@ -1219,7 +1215,7 @@ static void sub_810290C(void) } } -const u8 gUnknown_083ECE52[]; +static const u8 gUnknown_083ECE52[]; static u8 sub_81029D4(u8 c1, u8 c2, u8 c3) { @@ -1256,7 +1252,7 @@ static bool8 sub_8102A44(void) return FALSE; } -bool8 (*const gUnknown_083ECB20[])(struct Task *task) = { +static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = { sub_8102A9C, sub_8102AD0, sub_8102B80 @@ -1267,7 +1263,7 @@ static void sub_8102A64(u8 taskId) while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId)); } -bool8 sub_8102A9C(struct Task *task) +static bool8 sub_8102A9C(struct Task *task) { if (sub_8103E38()) { @@ -1281,7 +1277,7 @@ bool8 sub_8102A9C(struct Task *task) return FALSE; } -bool8 sub_8102AD0(struct Task *task) +static bool8 sub_8102AD0(struct Task *task) { if (!task->data[1]--) { @@ -1317,7 +1313,7 @@ bool8 sub_8102AD0(struct Task *task) return FALSE; } -bool8 sub_8102B80(struct Task *task) +static bool8 sub_8102B80(struct Task *task) { if (sub_8103E7C()) { @@ -1326,9 +1322,9 @@ bool8 sub_8102B80(struct Task *task) return FALSE; } -const u8 gUnknown_083ECCB2[][21]; +static const u8 gUnknown_083ECCB2[][21]; -u8 sub_8102BA4(u8 x, s16 y) +static u8 sub_8102BA4(u8 x, s16 y) { s16 offset = (eSlotMachine->unk28[x] + y) % 21; if (offset < 0) @@ -1338,7 +1334,7 @@ u8 sub_8102BA4(u8 x, s16 y) return gUnknown_083ECCB2[x][offset]; } -u8 sub_8102BF8(u8 x, s16 y) +static u8 sub_8102BF8(u8 x, s16 y) { s16 r6 = 0; if ((eSlotMachine->unk1C[x]) % 24) @@ -1346,9 +1342,9 @@ u8 sub_8102BF8(u8 x, s16 y) return sub_8102BA4(x, y + r6); } -const u8 gUnknown_083ECCF1[]; +static const u8 gUnknown_083ECCF1[]; -u8 sub_8102C48(s16 a0) +static u8 sub_8102C48(s16 a0) { s16 r1 = (eSlotMachine->unk16 + a0) % 6; if (r1 < 0) @@ -1356,14 +1352,14 @@ u8 sub_8102C48(s16 a0) return gUnknown_083ECCF1[r1]; } -void sub_8102C84(u8 a0, s16 a1) +static void sub_8102C84(u8 a0, s16 a1) { eSlotMachine->unk1C[a0] += a1; eSlotMachine->unk1C[a0] %= 504; eSlotMachine->unk28[a0] = 21 - eSlotMachine->unk1C[a0] / 24; } -s16 sub_8102CCC(u8 a0, s16 a1) +static s16 sub_8102CCC(u8 a0, s16 a1) { s16 r1 = eSlotMachine->unk1C[a0] % 24; if (r1 != 0) @@ -1376,14 +1372,14 @@ s16 sub_8102CCC(u8 a0, s16 a1) return r1; } -void sub_8102D28(s16 a0) +static void sub_8102D28(s16 a0) { eSlotMachine->unk14 += a0; eSlotMachine->unk14 %= 120; eSlotMachine->unk16 = 6 - eSlotMachine->unk14 / 20; } -s16 sub_8102D5C(s16 a0) +static s16 sub_8102D5C(s16 a0) { s16 r1 = eSlotMachine->unk14 % 20; if (r1 != 0) @@ -1424,7 +1420,7 @@ static bool8 sub_8102E40(u8 a0) return gTasks[eSlotMachine->unk3A[a0]].data[14]; } -bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = { +static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = { sub_8102EA0, sub_8102EA4, sub_8102EC0, @@ -1437,29 +1433,29 @@ static void sub_8102E68(u8 taskId) while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId)); } -bool8 sub_8102EA0(struct Task *task) +static bool8 sub_8102EA0(struct Task *task) { return FALSE; } -bool8 sub_8102EA4(struct Task *task) +static bool8 sub_8102EA4(struct Task *task) { sub_8102C84(task->data[15], eSlotMachine->unk1A); return FALSE; } -bool8 (*const gUnknown_083ECB40[])(void) = { +static bool8 (*const gUnknown_083ECB40[])(void) = { sub_810305C, sub_81032C0, sub_81033DC }; -void (*const gUnknown_083ECB4C[])(void) = { +static void (*const gUnknown_083ECB4C[])(void) = { sub_81034F4, sub_8103540, sub_810380C }; -bool8 sub_8102EC0(struct Task *task) +static bool8 sub_8102EC0(struct Task *task) { task->data[0]++; eSlotMachine->unk34[task->data[15]] = 0; @@ -1473,7 +1469,7 @@ bool8 sub_8102EC0(struct Task *task) return TRUE; } -bool8 sub_8102F4C(struct Task *task) +static bool8 sub_8102F4C(struct Task *task) { u16 sp[] = {2, 4, 4, 4, 8}; s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24; @@ -1496,7 +1492,7 @@ bool8 sub_8102F4C(struct Task *task) return FALSE; } -bool8 sub_8103008(struct Task *task) +static bool8 sub_8103008(struct Task *task) { eSlotMachine->unk22[task->data[15]] = task->data[1]; task->data[1] = -task->data[1]; @@ -1514,13 +1510,13 @@ bool8 sub_8103008(struct Task *task) return FALSE; } -bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = { +static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = { sub_8103154, sub_81031B4, sub_81031B4 }; -bool8 sub_810305C(void) +static bool8 sub_810305C(void) { u8 r3 = sub_810250C(eSlotMachine->unk04); u8 r5 = r3; @@ -1532,7 +1528,7 @@ bool8 sub_810305C(void) return gUnknown_083ECB64[eSlotMachine->bet - 1](r5, r3); } -bool8 sub_81030A4(s16 a0, u8 a1, u8 a2) +static bool8 sub_81030A4(s16 a0, u8 a1, u8 a2) { u8 r1 = sub_8102BF8(0, a0); if (r1 == a1 || r1 == a2) @@ -1543,7 +1539,7 @@ bool8 sub_81030A4(s16 a0, u8 a1, u8 a2) return FALSE; } -bool8 sub_81030E0(s16 a0) +static bool8 sub_81030E0(s16 a0) { if (sub_8102BF8(0, 1 - a0) == 4 || sub_8102BF8(0, 2 - a0) == 4 || sub_8102BF8(0, 3 - a0) == 4) { @@ -1552,7 +1548,7 @@ bool8 sub_81030E0(s16 a0) return FALSE; } -bool8 sub_8103134(void) +static bool8 sub_8103134(void) { if (eSlotMachine->unk04 & 0xc2) { @@ -1561,7 +1557,7 @@ bool8 sub_8103134(void) return FALSE; } -bool8 sub_8103154(u8 a0, u8 a1) +static bool8 sub_8103154(u8 a0, u8 a1) { s16 i; @@ -1577,7 +1573,7 @@ bool8 sub_8103154(u8 a0, u8 a1) return FALSE; } -bool8 sub_81031B4(u8 a0, u8 a1) +static bool8 sub_81031B4(u8 a0, u8 a1) { s16 i; bool8 r6 = sub_8103134(); @@ -1621,18 +1617,18 @@ bool8 sub_81031B4(u8 a0, u8 a1) return FALSE; } -bool8 (*const gUnknown_083ECB70[])(void) = { +static bool8 (*const gUnknown_083ECB70[])(void) = { sub_81032E8, sub_81032E8, sub_810333C }; -bool8 sub_81032C0(void) +static bool8 sub_81032C0(void) { return gUnknown_083ECB70[eSlotMachine->bet - 1](); } -bool8 sub_81032E8(void) +static bool8 sub_81032E8(void) { s16 i; s16 unk34_0 = eSlotMachine->unk34[0]; @@ -1649,7 +1645,7 @@ bool8 sub_81032E8(void) return FALSE; } -bool8 sub_810333C(void) +static bool8 sub_810333C(void) { s16 i; if (sub_81032E8()) @@ -1683,13 +1679,13 @@ bool8 sub_810333C(void) return FALSE; } -bool8 (*const gUnknown_083ECB7C[])(u8 a0) = { +static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = { sub_810341C, sub_810341C, sub_810347C }; -bool8 sub_81033DC(void) +static bool8 sub_81033DC(void) { u8 r3 = eSlotMachine->unk07; if (eSlotMachine->unk04 & 0x40) @@ -1703,7 +1699,7 @@ bool8 sub_81033DC(void) return gUnknown_083ECB7C[eSlotMachine->bet - 1](r3); } -bool8 sub_810341C(u8 a0) +static bool8 sub_810341C(u8 a0) { s16 i; s16 unk34_1 = eSlotMachine->unk34[1]; @@ -1720,7 +1716,7 @@ bool8 sub_810341C(u8 a0) return FALSE; } -bool8 sub_810347C(u8 a0) +static bool8 sub_810347C(u8 a0) { s16 i; s16 r8; @@ -1745,14 +1741,14 @@ bool8 sub_810347C(u8 a0) return FALSE; } -void sub_81034F4(void) +static void sub_81034F4(void) { s16 i; for (i = 0; sub_81030E0(i); i++); eSlotMachine->unk2E[0] = i; } -bool8 sub_8103520(u8 *a0) +static bool8 sub_8103520(u8 *a0) { if (*a0 == 0) { @@ -1767,18 +1763,18 @@ bool8 sub_8103520(u8 *a0) return FALSE; } -void (*const gUnknown_083ECB88[])(void) = { +static void (*const gUnknown_083ECB88[])(void) = { sub_8103564, j5_08111E84, sub_8103668 }; -void sub_8103540(void) +static void sub_8103540(void) { gUnknown_083ECB88[eSlotMachine->bet - 1](); } -void sub_8103564(void) +static void sub_8103564(void) { if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) { @@ -1799,7 +1795,7 @@ void sub_8103564(void) } } -void j5_08111E84(void) +static void j5_08111E84(void) { if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) { @@ -1822,7 +1818,7 @@ void j5_08111E84(void) #ifdef NONMATCHING // variable r6 is mistakenly plopped into r5, // and variable i is mistakenly plopped into r6 -void sub_8103668(void) +static void sub_8103668(void) { s16 i; s16 r6; @@ -2022,7 +2018,7 @@ __attribute__((naked)) void sub_8103668(void) } #endif // NONMATCHING -bool8 sub_8103764(u8 a0, u8 a1) +static bool8 sub_8103764(u8 a0, u8 a1) { if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0)) { @@ -2031,7 +2027,7 @@ bool8 sub_8103764(u8 a0, u8 a1) return FALSE; } -bool8 sub_810378C(u8 a0, u8 a1, u8 a2) +static bool8 sub_810378C(u8 a0, u8 a1, u8 a2) { if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1)) { @@ -2040,7 +2036,7 @@ bool8 sub_810378C(u8 a0, u8 a1, u8 a2) return FALSE; } -bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) +static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) { if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1) || @@ -2053,18 +2049,18 @@ bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) return TRUE; } -void (*const gUnknown_083ECB94[])(void) = { +static void (*const gUnknown_083ECB94[])(void) = { sub_8103830, sub_8103910, sub_8103A78 }; -void sub_810380C(void) +static void sub_810380C(void) { gUnknown_083ECB94[eSlotMachine->bet - 1](); } -void sub_8103830(void) +static void sub_8103830(void) { s16 i = 0; u8 r5 = sub_8102BF8(0, 2 - eSlotMachine->unk2E[0]); @@ -2107,7 +2103,7 @@ void sub_8103830(void) eSlotMachine->unk2E[2] = i; } -void sub_8103910(void) +static void sub_8103910(void) { s16 sp0 = 0; s16 i; @@ -2155,7 +2151,7 @@ void sub_8103910(void) eSlotMachine->unk2E[2] = sp0; } -void sub_8103A78(void) +static void sub_8103A78(void) { u8 r6; u8 r5; @@ -2211,7 +2207,7 @@ static void sub_8103C14(u8 a0) sub_8103C48(taskId); } -void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = { +static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = { sub_8103C78, sub_8103CAC, sub_8103CC8 @@ -2222,29 +2218,29 @@ static void sub_8103C48(u8 taskId) gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId); } -const s16 gUnknown_083ECBAC[] = {5, 10, 15}; +static const s16 gUnknown_083ECBAC[] = {5, 10, 15}; -void sub_8103C78(struct Task *task, u8 taskId) +static void sub_8103C78(struct Task *task, u8 taskId) { sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73); task->data[0]++; } -void sub_8103CAC(struct Task *task, u8 taskId) +static void sub_8103CAC(struct Task *task, u8 taskId) { if (++task->data[1] > 11) task->data[0]++; } -void sub_8103CC8(struct Task *task, u8 taskId) +static void sub_8103CC8(struct Task *task, u8 taskId) { sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53); DestroyTask(taskId); } -extern const u16 *const gUnknown_083EDD08[]; -const u16 *const gUnknown_083EDD1C[]; -const u8 gUnknown_083EDD30[]; +static const u16 *const gUnknown_083EDD08[]; +static const u16 *const gUnknown_083EDD1C[]; +static const u8 gUnknown_083EDD30[]; static void sub_8103D00(u8 a0) { @@ -2256,8 +2252,8 @@ static void sub_8103D28(u8 a0) LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2); } -const u8 gUnknown_083EDD35[][2]; -const u8 gUnknown_083EDD3B[]; +static const u8 gUnknown_083EDD35[][2]; +static const u8 gUnknown_083EDD3B[]; static void sub_8103D50(u8 a0) { @@ -2368,8 +2364,8 @@ static void sub_8103F70(void) sub_8103FE8(taskId); } -const u16 *const gUnknown_083EDDA0[]; -const u16 *const gUnknown_083EDDAC; +static const u16 *const gUnknown_083EDDA0[]; +static const u16 *const gUnknown_083EDDAC; static bool8 sub_8103FA0(void) { @@ -2412,7 +2408,7 @@ static void sub_8104064(u8 unused) task->data[15] = 1; } -void sub_8104098(void) +static void sub_8104098(void) { struct Task *task = gTasks + eSlotMachine->unk3E; sub_810421C(task); @@ -2420,12 +2416,12 @@ void sub_8104098(void) task->data[15] = 1; } -bool8 sub_81040C8(void) +static bool8 sub_81040C8(void) { return gTasks[eSlotMachine->unk3E].data[15]; } -void (*const gUnknown_083ECBB4[])(struct Task *task) = { +static void (*const gUnknown_083ECBB4[])(struct Task *task) = { nullsub_68, sub_810411C, sub_8104144, @@ -2437,24 +2433,24 @@ static void sub_81040E8(u8 taskId) gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId); } -void nullsub_68(struct Task *task) +static void nullsub_68(struct Task *task) { } -void sub_810411C(struct Task *task) +static void sub_810411C(struct Task *task) { task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20); task->data[0]++; } -const u16 gUnknown_083ECBC4[][2] = { +static const u16 gUnknown_083ECBC4[][2] = { {0x9e, 0x6e}, {0x9f, 0x6f}, {0xaf, 0x7f} }; -void sub_8104144(struct Task *task) +static void sub_8104144(struct Task *task) { u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29); if (gSprites[task->data[2]].data[7]) @@ -2472,7 +2468,7 @@ void sub_8104144(struct Task *task) } } -void sub_81041AC(struct Task *task) +static void sub_81041AC(struct Task *task) { u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29); s16 r4 = task->data[1] + 2; @@ -2503,7 +2499,7 @@ static void sub_810421C(struct Task *task) task->data[i] = 0; } -void sub_810423C(u8 a0) +static void sub_810423C(u8 a0) { s16 i; u8 r3; @@ -2543,7 +2539,7 @@ static bool8 sub_810432C(void) return FALSE; } -void (*const gUnknown_083ECBD0[])(struct Task *task) = { +static void (*const gUnknown_083ECBD0[])(struct Task *task) = { sub_810437C, sub_81043EC, sub_8104468, @@ -2565,12 +2561,12 @@ void (*const gUnknown_083ECBD0[])(struct Task *task) = { sub_81049F8 }; -void sub_810434C(u8 taskId) +static void sub_810434C(u8 taskId) { gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId); } -void sub_810437C(struct Task *task) +static void sub_810437C(struct Task *task) { eSlotMachine->unk0A = 0; eSlotMachine->unk14 = 0; @@ -2594,7 +2590,7 @@ void sub_810437C(struct Task *task) PlayNewMapMusic(BGM_BD_TIME); } -void sub_81043EC(struct Task *task) +static void sub_81043EC(struct Task *task) { s16 r3; gSpriteCoordOffsetX -= 8; @@ -2615,7 +2611,7 @@ void sub_81043EC(struct Task *task) sub_8102D28(task->data[4] >> 8); } -void sub_8104468(struct Task *task) +static void sub_8104468(struct Task *task) { sub_8102D28(task->data[4] >> 8); if (++task->data[5] >= 60) @@ -2626,7 +2622,7 @@ void sub_8104468(struct Task *task) } } -void sub_8104498(struct Task *task) +static void sub_8104498(struct Task *task) { int r5; u8 sp0[] = {1, 1, 2, 2}; @@ -2647,7 +2643,7 @@ void sub_8104498(struct Task *task) } } -void sub_8104548(struct Task *task) +static void sub_8104548(struct Task *task) { sub_8102D28(task->data[4] >> 8); if (++task->data[5] >= 80) @@ -2659,7 +2655,7 @@ void sub_8104548(struct Task *task) } } -void sub_8104598(struct Task *task) +static void sub_8104598(struct Task *task) { sub_8102D28(task->data[4] >> 8); task->data[4] = (u8)task->data[4] + 0x80; @@ -2670,7 +2666,7 @@ void sub_8104598(struct Task *task) } } -void sub_81045CC(struct Task *task) +static void sub_81045CC(struct Task *task) { sub_8102D28(task->data[4] >> 8); task->data[4] = (u8)task->data[4] + 0x40; @@ -2696,7 +2692,7 @@ void sub_81045CC(struct Task *task) } } -void sub_810463C(struct Task *task) +static void sub_810463C(struct Task *task) { s16 r5 = eSlotMachine->unk14 % 20; if (r5) @@ -2717,7 +2713,7 @@ void sub_810463C(struct Task *task) } } -void sub_81046C0(struct Task *task) +static void sub_81046C0(struct Task *task) { if (++task->data[4] >= 60) { @@ -2746,7 +2742,7 @@ void sub_81046C0(struct Task *task) } } -void sub_8104764(struct Task *task) +static void sub_8104764(struct Task *task) { if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8()) { @@ -2754,7 +2750,7 @@ void sub_8104764(struct Task *task) } } -void sub_8104794(struct Task *task) +static void sub_8104794(struct Task *task) { s16 r4; gSpriteCoordOffsetX -= 8; @@ -2772,7 +2768,7 @@ void sub_8104794(struct Task *task) } } -void sub_81047EC(struct Task *task) +static void sub_81047EC(struct Task *task) { eSlotMachine->unk0B = 0; eSlotMachine->unk0A = eSlotMachine->unk05; @@ -2797,7 +2793,7 @@ void sub_81047EC(struct Task *task) } } -void sub_8104860(struct Task *task) +static void sub_8104860(struct Task *task) { if (eSlotMachine->unk1A == task->data[1]) { @@ -2809,7 +2805,7 @@ void sub_8104860(struct Task *task) } } -void sub_81048A8(struct Task *task) +static void sub_81048A8(struct Task *task) { if (sub_8104E18()) { @@ -2817,7 +2813,7 @@ void sub_81048A8(struct Task *task) } } -void sub_81048CC(struct Task *task) +static void sub_81048CC(struct Task *task) { sub_81054B8(); sub_81056C0(); @@ -2833,7 +2829,7 @@ void sub_81048CC(struct Task *task) PlaySE(SE_W153); } -void sub_8104940(struct Task *task) +static void sub_8104940(struct Task *task) { gSpriteCoordOffsetY = task->data[4]; REG_BG1VOFS = task->data[4]; @@ -2853,7 +2849,7 @@ void sub_8104940(struct Task *task) } } -void sub_81049C8(struct Task *task) +static void sub_81049C8(struct Task *task) { gSpriteCoordOffsetY = 0; REG_BG1VOFS = 0; @@ -2864,7 +2860,7 @@ void sub_81049C8(struct Task *task) } } -void sub_81049F8(struct Task *task) +static void sub_81049F8(struct Task *task) { gSpriteCoordOffsetX = 0; REG_BG1HOFS = 0; @@ -2876,9 +2872,9 @@ void sub_81049F8(struct Task *task) DestroyTask(FindTaskIdByFunc(sub_810434C)); } -extern const u16 gReelTimeWindowTilemap[]; +static const u16 gReelTimeWindowTilemap[]; -void sub_8104A40(s16 a0, s16 a1) +static void sub_8104A40(s16 a0, s16 a1) { s16 i; @@ -2889,7 +2885,7 @@ void sub_8104A40(s16 a0, s16 a1) } } -void sub_8104A88(s16 a0) +static void sub_8104A88(s16 a0) { s16 i; @@ -2899,21 +2895,21 @@ void sub_8104A88(s16 a0) } } -void sub_8104AB8(u8 a0) +static void sub_8104AB8(u8 a0) { u8 taskId = CreateTask(sub_8104B0C, 1); gTasks[taskId].data[1] = a0; sub_8104B0C(taskId); } -bool8 sub_8104AEC(void) +static bool8 sub_8104AEC(void) { if (FindTaskIdByFunc(sub_8104B0C) == 0xFF) return TRUE; return FALSE; } -void (*const gUnknown_083ECC30[])(struct Task *task) = { +static void (*const gUnknown_083ECC30[])(struct Task *task) = { sub_8104B3C, sub_8104B60, sub_8104B80, @@ -2925,18 +2921,18 @@ void (*const gUnknown_083ECC30[])(struct Task *task) = { sub_8104C44 }; -void sub_8104B0C(u8 taskId) +static void sub_8104B0C(u8 taskId) { gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId); } -void sub_8104B3C(struct Task *task) +static void sub_8104B3C(struct Task *task) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); task->data[0]++; } -void sub_8104B60(struct Task *task) +static void sub_8104B60(struct Task *task) { if (!gPaletteFade.active) { @@ -2944,7 +2940,7 @@ void sub_8104B60(struct Task *task) } } -void sub_8104B80(struct Task *task) +static void sub_8104B80(struct Task *task) { sub_8104DA4(); sub_81065DC(); @@ -2954,7 +2950,7 @@ void sub_8104B80(struct Task *task) task->data[0]++; } -void sub_8104BC8(struct Task *task) +static void sub_8104BC8(struct Task *task) { if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON)) { @@ -2963,7 +2959,7 @@ void sub_8104BC8(struct Task *task) } } -void sub_8104BFC(struct Task *task) +static void sub_8104BFC(struct Task *task) { MenuZeroFillScreen(); BasicInitMenuWindow(&gWindowConfig_81E7128); @@ -2974,12 +2970,12 @@ void sub_8104BFC(struct Task *task) task->data[0]++; } -void sub_8104C44(struct Task *task) +static void sub_8104C44(struct Task *task) { DestroyTask(FindTaskIdByFunc(sub_8104B0C)); } -void sub_8104C5C(void) +static void sub_8104C5C(void) { u8 i; struct Task *task; @@ -2995,7 +2991,7 @@ void sub_8104C5C(void) static void LoadSlotMachineWheelOverlay(void); -void sub_8104CAC(u8 arg0) { +static void sub_8104CAC(u8 arg0) { u8 i; struct Task *task; @@ -3023,7 +3019,7 @@ void sub_8104CAC(u8 arg0) { } } -void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) +static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) { u8 i; struct Task *task = gTasks + eSlotMachine->unk3D; @@ -3037,7 +3033,7 @@ void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) } } -void (*const gUnknown_083ED064[])(void); +static void (*const gUnknown_083ED064[])(void); void sub_8104DA4(void) { @@ -3055,7 +3051,7 @@ void sub_8104DA4(void) } } -bool8 sub_8104E18(void) +static bool8 sub_8104E18(void) { u8 i; struct Task *task = gTasks + eSlotMachine->unk3D; @@ -3070,23 +3066,23 @@ bool8 sub_8104E18(void) return TRUE; } -void (*const gUnknown_083ECC54[])(struct Task *task) = { +static void (*const gUnknown_083ECC54[])(struct Task *task) = { nullsub_69 }; -void sub_8104E74(u8 taskId) +static void sub_8104E74(u8 taskId) { gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId); } -void nullsub_69(struct Task *task) +static void nullsub_69(struct Task *task) { } -extern const struct SpriteTemplate gSpriteTemplate_83ED414; +static const struct SpriteTemplate gSpriteTemplate_83ED414; -void sub_8104EA8(void) +static void sub_8104EA8(void) { s16 i; s16 j; @@ -3104,7 +3100,7 @@ void sub_8104EA8(void) } } -void sub_8104F18(struct Sprite *sprite) +static void sub_8104F18(struct Sprite *sprite) { sprite->data[2] = eSlotMachine->unk1C[sprite->data[0]] + sprite->data[1]; sprite->data[2] %= 120; @@ -3113,7 +3109,7 @@ void sub_8104F18(struct Sprite *sprite) SetSpriteSheetFrameTileNum(sprite); } -void sub_8104F8C(void) +static void sub_8104F8C(void) { s16 i; s16 x; @@ -3127,9 +3123,9 @@ void sub_8104F8C(void) } } -extern const struct SpriteTemplate gSpriteTemplate_83ED42C; +static const struct SpriteTemplate gSpriteTemplate_83ED42C; -void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3) +static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3) { struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13); sprite->oam.priority = 2; @@ -3139,7 +3135,7 @@ void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3) sprite->data[3] = -1; } -void sub_810506C(struct Sprite *sprite) +static void sub_810506C(struct Sprite *sprite) { u16 tag = eSlotMachine->coins; if (sprite->data[0]) @@ -3155,19 +3151,19 @@ void sub_810506C(struct Sprite *sprite) } } -extern const struct SpriteTemplate gSpriteTemplate_83ED444; -extern const struct SubspriteTable gSubspriteTables_83ED704[]; +static const struct SpriteTemplate gSpriteTemplate_83ED444; +static const struct SubspriteTable gSubspriteTables_83ED704[]; -void sub_81050C4(void) +static void sub_81050C4(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15); gSprites[spriteId].oam.priority = 3; SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704); } -extern const struct SpriteTemplate gSpriteTemplate_83ED45C; +static const struct SpriteTemplate gSpriteTemplate_83ED45C; -void sub_8105100(void) +static void sub_8105100(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED45C, 0x118, 0x50, 1); gSprites[spriteId].oam.priority = 1; @@ -3175,12 +3171,12 @@ void sub_8105100(void) eSlotMachine->unk3F = spriteId; } -void sub_810514C(void) +static void sub_810514C(void) { DestroySprite(gSprites + eSlotMachine->unk3F); } -void sub_8105170(struct Sprite *sprite) +static void sub_8105170(struct Sprite *sprite) { sprite->pos2.y = sprite->pos2.x = 0; if (sprite->animNum == 4) @@ -3193,12 +3189,12 @@ void sub_8105170(struct Sprite *sprite) } } -extern const struct SpriteTemplate gSpriteTemplate_83ED474; -extern const struct SpriteTemplate gSpriteTemplate_83ED48C; -extern const struct SubspriteTable gSubspriteTables_83ED73C[]; -extern const struct SubspriteTable gSubspriteTables_83ED75C[]; +static const struct SpriteTemplate gSpriteTemplate_83ED474; +static const struct SpriteTemplate gSpriteTemplate_83ED48C; +static const struct SubspriteTable gSubspriteTables_83ED73C[]; +static const struct SubspriteTable gSubspriteTables_83ED75C[]; -void sub_81051C0(void) +static void sub_81051C0(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7); struct Sprite *sprite = gSprites + spriteId; @@ -3215,10 +3211,10 @@ void sub_81051C0(void) eSlotMachine->unk49[1] = spriteId; } -extern const struct SpriteTemplate gSpriteTemplate_83ED4A4; -extern const struct SubspriteTable gSubspriteTables_83ED78C[]; +static const struct SpriteTemplate gSpriteTemplate_83ED4A4; +static const struct SubspriteTable gSubspriteTables_83ED78C[]; -void sub_8105284(void) +static void sub_8105284(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4A4, 0xa8 - gSpriteCoordOffsetX, 0x50, 7); struct Sprite *sprite = gSprites + spriteId; @@ -3228,9 +3224,9 @@ void sub_8105284(void) eSlotMachine->unk42 = spriteId; } -extern const struct SpriteTemplate gSpriteTemplate_83ED4BC; +static const struct SpriteTemplate gSpriteTemplate_83ED4BC; -void sub_81052EC(void) +static void sub_81052EC(void) { u8 i; s16 r5; @@ -3245,7 +3241,7 @@ void sub_81052EC(void) } } -void sub_810535C(struct Sprite *sprite) +static void sub_810535C(struct Sprite *sprite) { s16 r0 = (u16)(eSlotMachine->unk14 + sprite->data[7]); r0 %= 40; @@ -3253,10 +3249,10 @@ void sub_810535C(struct Sprite *sprite) StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20)); } -extern const struct SpriteTemplate gSpriteTemplate_83ED4D4; -extern const struct SubspriteTable gSubspriteTables_83ED7B4[]; +static const struct SpriteTemplate gSpriteTemplate_83ED4D4; +static const struct SubspriteTable gSubspriteTables_83ED7B4[]; -void sub_81053A0(void) +static void sub_81053A0(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9); struct Sprite *sprite = gSprites + spriteId; @@ -3273,10 +3269,10 @@ void sub_81053A0(void) eSlotMachine->unk4E[1] = spriteId; } -extern const struct SpriteTemplate gSpriteTemplate_83ED4EC; -extern const struct SubspriteTable gSubspriteTables_83ED7D4[]; +static const struct SpriteTemplate gSpriteTemplate_83ED4EC; +static const struct SubspriteTable gSubspriteTables_83ED7D4[]; -void sub_810545C(void) +static void sub_810545C(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11); struct Sprite *sprite = gSprites + spriteId; @@ -3286,7 +3282,7 @@ void sub_810545C(void) eSlotMachine->unk40 = spriteId; } -void sub_81054B8(void) +static void sub_81054B8(void) { u8 i; @@ -3301,7 +3297,7 @@ void sub_81054B8(void) } } -void sub_8105524(void) +static void sub_8105524(void) { u8 i; for (i = 0; i < 2; i++) @@ -3310,14 +3306,14 @@ void sub_8105524(void) } } -void sub_8105554(void) +static void sub_8105554(void) { DestroySprite(gSprites + eSlotMachine->unk42); } -extern const struct SpriteTemplate gSpriteTemplate_83ED504; +static const struct SpriteTemplate gSpriteTemplate_83ED504; -void sub_8105578(void) +static void sub_8105578(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5); struct Sprite *sprite = gSprites + spriteId; @@ -3338,7 +3334,7 @@ void sub_8105578(void) sprite->data[7] = 0x20; } -void sub_810562C(struct Sprite *sprite) +static void sub_810562C(struct Sprite *sprite) { if (sprite->data[0] != 0) { @@ -3360,13 +3356,13 @@ void sub_810562C(struct Sprite *sprite) } } -void sub_8105688(s16 a0) +static void sub_8105688(s16 a0) { gSprites[eSlotMachine->unk50[0]].data[7] = a0; gSprites[eSlotMachine->unk50[1]].data[7] = a0; } -void sub_81056C0(void) +static void sub_81056C0(void) { u8 i; @@ -3376,9 +3372,9 @@ void sub_81056C0(void) } } -extern const struct SpriteTemplate gSpriteTemplate_83ED51C; +static const struct SpriteTemplate gSpriteTemplate_83ED51C; -void sub_81056F0(void) +static void sub_81056F0(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3); gSprites[spriteId].oam.priority = 1; @@ -3394,9 +3390,9 @@ void sub_81056F0(void) eSlotMachine->unk52[1] = spriteId; } -extern const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled through gUnknown_083ECCF8 +static const u8 gUnknown_083ECC58[2]; // don't remove this until decompiled through gUnknown_083ECCF8 -void sub_8105784(struct Sprite *sprite) +static void sub_8105784(struct Sprite *sprite) { u8 sp[] = {16, 0}; if (sprite->data[0] && --sprite->data[6] <= 0) @@ -3408,12 +3404,12 @@ void sub_8105784(struct Sprite *sprite) } } -void sub_81057E8(s16 a0) +static void sub_81057E8(s16 a0) { gSprites[eSlotMachine->unk52[0]].data[7] = a0; } -void sub_8105804(void) +static void sub_8105804(void) { u8 i; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0); @@ -3423,28 +3419,28 @@ void sub_8105804(void) } } -extern const struct SpriteTemplate gSpriteTemplate_83ED534; +static const struct SpriteTemplate gSpriteTemplate_83ED534; -void sub_8105854(void) +static void sub_8105854(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6); gSprites[spriteId].oam.priority = 1; eSlotMachine->unk41 = spriteId; } -void sub_8105894(struct Sprite *sprite) +static void sub_8105894(struct Sprite *sprite) { sprite->pos2.y = gSpriteCoordOffsetY; } -void sub_81058A0(void) +static void sub_81058A0(void) { DestroySprite(gSprites + eSlotMachine->unk41); } -extern const struct SpriteTemplate gSpriteTemplate_83ED54C; +static const struct SpriteTemplate gSpriteTemplate_83ED54C; -void sub_81058C4(void) +static void sub_81058C4(void) { u8 i; u16 sp[] = {0x0, 0x40, 0x80, 0xC0}; @@ -3459,7 +3455,7 @@ void sub_81058C4(void) } } -void sub_810594C(struct Sprite *sprite) +static void sub_810594C(struct Sprite *sprite) { sprite->data[0] -= 2; sprite->data[0] &= 0xff; @@ -3477,7 +3473,7 @@ void sub_810594C(struct Sprite *sprite) } } -void sub_81059B8(void) +static void sub_81059B8(void) { u8 i; for (i = 0; i < 4; i++) @@ -3486,9 +3482,9 @@ void sub_81059B8(void) } } -extern const struct SpriteTemplate gSpriteTemplate_83ED564; +static const struct SpriteTemplate gSpriteTemplate_83ED564; -void sub_81059E8(void) +static void sub_81059E8(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8); struct Sprite *sprite = gSprites + spriteId; @@ -3498,7 +3494,7 @@ void sub_81059E8(void) eSlotMachine->unk43 = spriteId; } -void sub_8105A38(struct Sprite *sprite) +static void sub_8105A38(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3530,16 +3526,16 @@ u8 sub_8105ACC(void) return gSprites[eSlotMachine->unk43].data[7]; } -void sub_8105AEC(void) +static void sub_8105AEC(void) { struct Sprite *sprite = gSprites + eSlotMachine->unk43; FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } -extern const struct SpriteTemplate gSpriteTemplate_83ED6CC; +static const struct SpriteTemplate gSpriteTemplate_83ED6CC; -u8 sub_8105B1C(s16 x, s16 y) +static u8 sub_8105B1C(s16 x, s16 y) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12); struct Sprite *sprite = gSprites + spriteId; @@ -3549,31 +3545,31 @@ u8 sub_8105B1C(s16 x, s16 y) return spriteId; } -void sub_8105B70(struct Sprite *sprite) +static void sub_8105B70(struct Sprite *sprite) { if (sprite->affineAnimEnded) sprite->data[7] = 1; } -void sub_8105B88(u8 spriteId) +static void sub_8105B88(u8 spriteId) { struct Sprite *sprite = gSprites + spriteId; FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } -const s16 gUnknown_083ECE7E[][2]; -const SpriteCallback gUnknown_083ECF0C[]; +static const s16 gUnknown_083ECE7E[][2]; +static const SpriteCallback gUnknown_083ECF0C[]; u8 sub_8105BB4(u8 a0, u8 a1, s16 a2) { return sub_8105BF8(a0, gUnknown_083ECF0C[a1], gUnknown_083ECE7E[a1][0], gUnknown_083ECE7E[a1][1], a2); } -const struct SpriteTemplate *const gUnknown_083EDB5C[]; -const struct SubspriteTable *const gUnknown_083EDBC4[]; +static const struct SpriteTemplate *const gUnknown_083EDB5C[]; +static const struct SubspriteTable *const gUnknown_083EDBC4[]; -u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) +static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) { u8 spriteId = CreateSprite(gUnknown_083EDB5C[templateIdx], x, y, 16); struct Sprite *sprite = gSprites + spriteId; @@ -3586,12 +3582,12 @@ u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) return spriteId; } -void sub_8105C64(struct Sprite *sprite) +static void sub_8105C64(struct Sprite *sprite) { sprite->data[7] = 0; } -void sub_8105C6C(struct Sprite *sprite) +static void sub_8105C6C(struct Sprite *sprite) { s16 sp0[] = {4, -4, 4, -4}; s16 sp8[] = {4, 4, -4, -4}; @@ -3610,26 +3606,26 @@ void sub_8105C6C(struct Sprite *sprite) } } -void sub_8105CF0(struct Sprite *sprite) +static void sub_8105CF0(struct Sprite *sprite) { sprite->hFlip = TRUE; sub_8105C6C(sprite); } -void sub_8105D08(struct Sprite *sprite) +static void sub_8105D08(struct Sprite *sprite) { sprite->vFlip = TRUE; sub_8105C6C(sprite); } -void sub_8105D20(struct Sprite *sprite) +static void sub_8105D20(struct Sprite *sprite) { sprite->hFlip = TRUE; sprite->vFlip = TRUE; sub_8105C6C(sprite); } -void sub_8105D3C(struct Sprite *sprite) +static void sub_8105D3C(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3660,7 +3656,7 @@ void sub_8105D3C(struct Sprite *sprite) } } -void sub_8105DA4(struct Sprite *sprite) +static void sub_8105DA4(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3691,7 +3687,7 @@ void sub_8105DA4(struct Sprite *sprite) } } -void sub_8105E08(struct Sprite *sprite) +static void sub_8105E08(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3733,7 +3729,7 @@ void sub_8105E08(struct Sprite *sprite) } } -void sub_8105EB4(struct Sprite *sprite) +static void sub_8105EB4(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3773,7 +3769,7 @@ void sub_8105EB4(struct Sprite *sprite) } } -void sub_8105F54(struct Sprite *sprite) +static void sub_8105F54(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3795,7 +3791,7 @@ void sub_8105F54(struct Sprite *sprite) } } -void sub_8105F9C(struct Sprite *sprite) +static void sub_8105F9C(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3831,9 +3827,9 @@ void sub_8105F9C(struct Sprite *sprite) } } -extern const u16 *const gUnknown_083EDE10[]; +static const u16 *const gUnknown_083EDE10[]; -void sub_8106058(struct Sprite *sprite) +static void sub_8106058(struct Sprite *sprite) { if (sprite->data[1] < 3) { @@ -3857,7 +3853,7 @@ void sub_8106058(struct Sprite *sprite) sprite->data[7] = 0; } -void sub_81060FC(struct Sprite *sprite) +static void sub_81060FC(struct Sprite *sprite) { s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0}; s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48}; @@ -3902,7 +3898,7 @@ void sub_81060FC(struct Sprite *sprite) } } -void sub_81061C8(struct Sprite *sprite) +static void sub_81061C8(struct Sprite *sprite) { s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24}; @@ -3919,7 +3915,7 @@ void sub_81061C8(struct Sprite *sprite) } } -void sub_8106230(struct Sprite *sprite) +static void sub_8106230(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3983,24 +3979,24 @@ void sub_8106230(struct Sprite *sprite) } } -void nullsub_70(void) +static void nullsub_70(void) { } -void sub_8106364(void) +static void sub_8106364(void) { REG_MOSAIC = 0; } -extern const u16 *const gUnknown_083EDE20; +static const u16 *const gUnknown_083EDE20; -void sub_8106370(void) +static void sub_8106370(void) { LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20); } -void sub_810639C(void) +static void sub_810639C(void) { eSlotMachine->win0h = 0xf0; eSlotMachine->win0v = 0xa0; @@ -4008,12 +4004,11 @@ void sub_810639C(void) eSlotMachine->winOut = 0x3f; } -extern const u8 gSlotMachineReelTimeLights_Gfx[]; -extern const u8 gUnknown_083EDE8C[]; -const struct SpriteSheet gUnknown_083EDC2C[]; -extern const struct SpritePalette gSlotMachineSpritePalettes[]; +static const u8 gUnknown_083EDE8C[]; +static const struct SpriteSheet gUnknown_083EDC2C[]; +static const struct SpritePalette gSlotMachineSpritePalettes[]; -void sub_81063C0(void) +static void sub_81063C0(void) { sub_8106404(); LZDecompressWram(gSlotMachineReelTimeLights_Gfx, ewram10000); @@ -4022,10 +4017,10 @@ void sub_81063C0(void) LoadSpritePalettes(gSlotMachineSpritePalettes); } -const u8 *const gUnknown_083EDCE4; -const struct SpriteSheet gUnknown_083EDCDC; +static const u8 *const gUnknown_083EDCE4; +static const struct SpriteSheet gUnknown_083EDCDC; -void sub_8106404(void) +static void sub_8106404(void) { u8 *dest = ewram10000; u8 i = 0; @@ -4068,7 +4063,7 @@ static void sub_8106448(void) { LoadPalette(gPalette_83EDE24, 208, 32); } -void sub_81064B8(void) { +static void sub_81064B8(void) { CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2); LoadSlotMachineWheelOverlay(); } @@ -4099,7 +4094,7 @@ static void LoadSlotMachineWheelOverlay(void) { } } -void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { +static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { u16 *vram = BG_SCREEN_ADDR(29); vram[15 * 32 + arg0] = arg1; @@ -4108,7 +4103,7 @@ void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { vram[16 * 32 + 1 + arg0] = arg4; } -void sub_81065DC(void) { +static void sub_81065DC(void) { s16 y, x; u16 *screen; @@ -4124,23 +4119,23 @@ void sub_81065DC(void) { } } -const u8 gUnknown_083ECCB2[][21] = { +static const u8 gUnknown_083ECCB2[][21] = { {0, 4, 2, 6, 5, 3, 1, 3, 4, 5, 6, 2, 0, 5, 3, 6, 2, 1, 5, 3, 6}, {0, 4, 6, 3, 2, 4, 6, 5, 5, 3, 1, 3, 6, 4, 2, 3, 6, 4, 3, 6, 4}, {0, 5, 1, 6, 3, 2, 6, 3, 5, 2, 6, 3, 2, 5, 6, 3, 2, 5, 6, 3, 4} }; -const u8 gUnknown_083ECCF1[] = { +static const u8 gUnknown_083ECCF1[] = { 1, 0, 5, 4, 3, 2 }; -const s16 gUnknown_083ECCF8[][2] = { +static const s16 gUnknown_083ECCF8[][2] = { {0, 6}, {0, 10}, {0, 2} }; -const u8 gUnknown_083ECD04[][3] = { +static const u8 gUnknown_083ECD04[][3] = { {1, 1, 12}, {1, 1, 14}, {2, 2, 14}, @@ -4149,13 +4144,13 @@ const u8 gUnknown_083ECD04[][3] = { {3, 3, 16} }; -const u8 gUnknown_083ECD16[][6] = { +static const u8 gUnknown_083ECD16[][6] = { {25, 25, 30, 40, 40, 50}, {25, 25, 30, 30, 35, 35}, {25, 25, 30, 25, 25, 30} }; -const u8 gUnknown_083ECD28[][6] = { +static const u8 gUnknown_083ECD28[][6] = { {20, 25, 25, 20, 25, 25}, {12, 15, 15, 18, 19, 22}, {25, 25, 25, 30, 30, 40}, @@ -4163,7 +4158,7 @@ const u8 gUnknown_083ECD28[][6] = { {40, 40, 35, 35, 40, 40} }; -const u8 gUnknown_083ECD46[][17] = { +static const u8 gUnknown_083ECD46[][17] = { {243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5}, { 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5}, { 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40}, @@ -4172,7 +4167,7 @@ const u8 gUnknown_083ECD46[][17] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6} }; -const u8 gUnknown_083ECDAC[][17] = { +static const u8 gUnknown_083ECDAC[][17] = { { 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5}, { 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6}, { 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35}, @@ -4181,11 +4176,11 @@ const u8 gUnknown_083ECDAC[][17] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60} }; -const u16 gUnknown_083ECE12[] = { +static const u16 gUnknown_083ECE12[] = { 0x80, 0xaf, 0xc8, 0xe1, 0x100 }; -const u16 gUnknown_083ECE1C[][2] = { +static const u16 gUnknown_083ECE1C[][2] = { {10, 5}, {10, 10}, {10, 15}, @@ -4193,36 +4188,36 @@ const u16 gUnknown_083ECE1C[][2] = { {10, 35} }; -const u16 gUnknown_083ECE30[] = { +static const u16 gUnknown_083ECE30[] = { 0, 5, 10, 15, 20 }; -const u8 gUnknown_083ECE3A[] = { +static const u8 gUnknown_083ECE3A[] = { 6, 4, 3, 2, 5, 0, 0, 0 }; -const u16 gUnknown_083ECE42[] = { +static const u16 gUnknown_083ECE42[] = { 0x80, 0x20, 0x40 }; -const u16 gUnknown_083ECE48[] = { +static const u16 gUnknown_083ECE48[] = { 0x10, 0x08, 0x04, 0x02, 0x01 }; -const u8 gUnknown_083ECE52[] = { +static const u8 gUnknown_083ECE52[] = { 7, 8, 4, 3, 0, 5, 2 }; -const u16 gUnknown_083ECE5A[] = { +static const u16 gUnknown_083ECE5A[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100 }; -const u16 gUnknown_083ECE6C[] = { +static const u16 gUnknown_083ECE6C[] = { 2, 4, 0, 6, 12, 3, 90, 300, 300 }; -const s16 gUnknown_083ECE7E[][2] = { +static const s16 gUnknown_083ECE7E[][2] = { { 0xd0, 0x38}, { 0xb8, 0x00}, { 0xc8, 0x08}, @@ -4260,7 +4255,7 @@ const s16 gUnknown_083ECE7E[][2] = { { 0x00, 0x00} }; -const SpriteCallback gUnknown_083ECF0C[] = { +static const SpriteCallback gUnknown_083ECF0C[] = { sub_8105C64, sub_8105F54, sub_8105F54, @@ -4363,7 +4358,7 @@ static const struct UnkStruct1 Unknown_83ED020[] = { {255, 0, 0} }; -const struct UnkStruct1 *const gUnknown_083ED048[] = { +static const struct UnkStruct1 *const gUnknown_083ED048[] = { Unknown_83ECF98, Unknown_83ECFA8, Unknown_83ECFC4, @@ -4373,7 +4368,7 @@ const struct UnkStruct1 *const gUnknown_083ED048[] = { Unknown_83ECFF8 }; -void (*const gUnknown_083ED064[])(void) = { +static void (*const gUnknown_083ED064[])(void) = { sub_810639C, sub_8106364, sub_8106370, @@ -4384,7 +4379,7 @@ void (*const gUnknown_083ED064[])(void) = { }; -const struct OamData gOamData_83ED080 = { +static const struct OamData gOamData_83ED080 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4400,7 +4395,7 @@ const struct OamData gOamData_83ED080 = { .affineParam = 0 }; -const struct OamData gOamData_83ED088 = { +static const struct OamData gOamData_83ED088 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4416,7 +4411,7 @@ const struct OamData gOamData_83ED088 = { .affineParam = 0 }; -const struct OamData gOamData_83ED090 = { +static const struct OamData gOamData_83ED090 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4432,7 +4427,7 @@ const struct OamData gOamData_83ED090 = { .affineParam = 0 }; -const struct OamData gOamData_83ED098 = { +static const struct OamData gOamData_83ED098 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4448,7 +4443,7 @@ const struct OamData gOamData_83ED098 = { .affineParam = 0 }; -const struct OamData gOamData_83ED0A0 = { +static const struct OamData gOamData_83ED0A0 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4464,7 +4459,7 @@ const struct OamData gOamData_83ED0A0 = { .affineParam = 0 }; -const struct OamData gOamData_83ED0A8 = { +static const struct OamData gOamData_83ED0A8 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4480,7 +4475,7 @@ const struct OamData gOamData_83ED0A8 = { .affineParam = 0 }; -const struct OamData gOamData_83ED0B0 = { +static const struct OamData gOamData_83ED0B0 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4496,7 +4491,7 @@ const struct OamData gOamData_83ED0B0 = { .affineParam = 0 }; -const struct OamData gOamData_83ED0B8 = { +static const struct OamData gOamData_83ED0B8 = { .y = 0x0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -4512,7 +4507,7 @@ const struct OamData gOamData_83ED0B8 = { .affineParam = 0 }; -const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = { {ewram13200 + 0x0000, 0x800}, {ewram13200 + 0x0800, 0x800}, {ewram13200 + 0x1000, 0x800}, @@ -4520,19 +4515,19 @@ const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = { {ewram13200 + 0x2000, 0x800} }; -const struct SpriteFrameImage gSpriteImageTable_83ED0E8[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED0E8[] = { {ewram13200 + 0x2800, 0x300} }; -const struct SpriteFrameImage gSpriteImageTable_83ED0F0[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED0F0[] = { {ewram13200 + 0x2B00, 0x500} }; -const struct SpriteFrameImage gSpriteImageTable_83ED0F8[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED0F8[] = { {ewram13200 + 0x3000, 0x600} }; -const struct SpriteFrameImage gSpriteImageTable_83ED100[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED100[] = { {gSpriteImage_8E988E8, 0x80}, {gSpriteImage_8E98968, 0x80}, {gSpriteImage_8E989E8, 0x80}, @@ -4541,83 +4536,83 @@ const struct SpriteFrameImage gSpriteImageTable_83ED100[] = { {gSpriteImage_8E98B68, 0x80} }; -const struct SpriteFrameImage gSpriteImageTable_83ED130[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED130[] = { {gSpriteImage_8E991E8, 0x200} }; -const struct SpriteFrameImage gSpriteImageTable_83ED138[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED138[] = { {gSpriteImage_8E99808, 0x40} }; -const struct SpriteFrameImage gSpriteImageTable_83ED140[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED140[] = { {gSpriteImage_8E98BE8, 0x100}, {gSpriteImage_8E98CE8, 0x100} }; -const struct SpriteFrameImage gSpriteImageTable_83ED150[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED150[] = { {gSpriteImage_8E993E8, 0x400} }; -const struct SpriteFrameImage gSpriteImageTable_83ED158[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED158[] = { {gSpriteImage_8E98DE8, 0x200}, {gSpriteImage_8E98FE8, 0x200} }; -const struct SpriteFrameImage gSpriteImageTable_83ED168[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED168[] = { {gSpriteImage_8E98848, 0x20} }; -const struct SpriteFrameImage gSpriteImageTable_83ED170[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED170[] = { {gSpriteImage_8E98868, 0x80} }; -const struct SpriteFrameImage gSpriteImageTable_83ED178[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED178[] = { {ewram10000 + 0x0000, 0x600} }; -const struct SpriteFrameImage gSpriteImageTable_83ED180[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED180[] = { {ewram10000 + 0x0600, 0x200} }; -const struct SpriteFrameImage gSpriteImageTable_83ED188[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED188[] = { {ewram10000 + 0x0800, 0x200} }; -const struct SpriteFrameImage gSpriteImageTable_83ED190[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED190[] = { {ewram10000 + 0x0A00, 0x200} }; -const struct SpriteFrameImage gSpriteImageTable_83ED198[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED198[] = { {ewram10000 + 0x0C00, 0x300} }; -const struct SpriteFrameImage gSpriteImageTable_83ED1A0[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1A0[] = { {ewram10000 + 0x1000, 0x400} }; -const struct SpriteFrameImage gSpriteImageTable_83ED1A8[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1A8[] = { {ewram10000 + 0x1400, 0x200} }; -const struct SpriteFrameImage gSpriteImageTable_83ED1B0[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1B0[] = { {ewram10000 + 0x1600, 0x300} }; -const struct SpriteFrameImage gSpriteImageTable_83ED1B8[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1B8[] = { {ewram10000 + 0x1900, 0x300} }; -const struct SpriteFrameImage gSpriteImageTable_83ED1C0[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1C0[] = { {ewram10000 + 0x1C00, 0x200}, {ewram10000 + 0x1E00, 0x200}, {ewram10000 + 0x1E00, 0x200} // is this a typo? }; -const struct SpriteFrameImage gSpriteImageTable_83ED1D8[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1D8[] = { {ewram10000 + 0x2000, 0x280} }; -const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = { {ewram10000 + 0x2280, 0x80}, {ewram10000 + 0x2300, 0x80}, {ewram10000 + 0x2380, 0x80}, @@ -4625,124 +4620,124 @@ const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = { {ewram10000 + 0x2480, 0x80} }; -const struct SpriteFrameImage gSpriteImageTable_83ED208[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED208[] = { {ewram10000 + 0x2600, 0x480}, {ewram10000 + 0x2A80, 0x480} }; -const struct SpriteFrameImage gSpriteImageTable_83ED218[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED218[] = { {ewram10000 + 0x2F00, 0x180}, {ewram10000 + 0x3080, 0x180} }; -const struct SpriteFrameImage gSpriteImageTable_83ED228[] = { +static const struct SpriteFrameImage gSpriteImageTable_83ED228[] = { {gSpriteImage_8E98828, 0x20} }; -const union AnimCmd gSpriteAnim_83ED230[] = { +static const union AnimCmd gSpriteAnim_83ED230[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED238[] = { +static const union AnimCmd gSpriteAnim_83ED238[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED240[] = { +static const union AnimCmd gSpriteAnim_83ED240[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED248[] = { +static const union AnimCmd gSpriteAnim_83ED248[] = { ANIMCMD_FRAME(1, 16), ANIMCMD_FRAME(0, 16), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED254[] = { +static const union AnimCmd gSpriteAnim_83ED254[] = { ANIMCMD_FRAME(1, 8), ANIMCMD_FRAME(0, 8), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED260[] = { +static const union AnimCmd gSpriteAnim_83ED260[] = { ANIMCMD_FRAME(1, 4), ANIMCMD_FRAME(0, 4), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED26C[] = { +static const union AnimCmd gSpriteAnim_83ED26C[] = { ANIMCMD_FRAME(2, 32), ANIMCMD_FRAME(3, 32), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED278[] = { +static const union AnimCmd gSpriteAnim_83ED278[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED280[] = { +static const union AnimCmd gSpriteAnim_83ED280[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED288[] = { +static const union AnimCmd gSpriteAnim_83ED288[] = { ANIMCMD_FRAME(1, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED290[] = { +static const union AnimCmd gSpriteAnim_83ED290[] = { ANIMCMD_FRAME(2, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED298[] = { +static const union AnimCmd gSpriteAnim_83ED298[] = { ANIMCMD_FRAME(3, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED2A0[] = { +static const union AnimCmd gSpriteAnim_83ED2A0[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED2A8[] = { +static const union AnimCmd gSpriteAnim_83ED2A8[] = { ANIMCMD_FRAME(5, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED2B0[] = { +static const union AnimCmd gSpriteAnim_83ED2B0[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(1, 4), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED2BC[] = { +static const union AnimCmd gSpriteAnim_83ED2BC[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_FRAME(1, 16), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED2C8[] = { +static const union AnimCmd gSpriteAnim_83ED2C8[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(1, 30), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED2D4[] = { +static const union AnimCmd gSpriteAnim_83ED2D4[] = { ANIMCMD_FRAME(1, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED2DC[] = { +static const union AnimCmd gSpriteAnim_83ED2DC[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(1, 30), ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED2E8[] = { +static const union AnimCmd gSpriteAnim_83ED2E8[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_FRAME(1, 16), ANIMCMD_FRAME(0, 16), @@ -4750,45 +4745,45 @@ const union AnimCmd gSpriteAnim_83ED2E8[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd gSpriteAnim_83ED2FC[] = { +static const union AnimCmd gSpriteAnim_83ED2FC[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED304[] = { +static const union AnimCmd gSpriteAnim_83ED304[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED30C[] = { +static const union AnimCmd gSpriteAnim_83ED30C[] = { ANIMCMD_FRAME(1, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED314[] = { +static const union AnimCmd gSpriteAnim_83ED314[] = { ANIMCMD_FRAME(2, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED31C[] = { +static const union AnimCmd gSpriteAnim_83ED31C[] = { ANIMCMD_FRAME(3, 1), ANIMCMD_END }; -const union AnimCmd gSpriteAnim_83ED324[] = { +static const union AnimCmd gSpriteAnim_83ED324[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_83ED32C[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED32C[] = { gSpriteAnim_83ED230 }; -const union AnimCmd *const gSpriteAnimTable_83ED330[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED330[] = { gSpriteAnim_83ED238 }; -const union AnimCmd *const gSpriteAnimTable_83ED334[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED334[] = { gSpriteAnim_83ED240, gSpriteAnim_83ED248, gSpriteAnim_83ED254, @@ -4797,7 +4792,7 @@ const union AnimCmd *const gSpriteAnimTable_83ED334[] = { gSpriteAnim_83ED278 }; -const union AnimCmd *const gSpriteAnimTable_83ED34C[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED34C[] = { gSpriteAnim_83ED280, gSpriteAnim_83ED288, gSpriteAnim_83ED290, @@ -4806,29 +4801,29 @@ const union AnimCmd *const gSpriteAnimTable_83ED34C[] = { gSpriteAnim_83ED2A8 }; -const union AnimCmd *const gSpriteAnimTable_83ED364[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED364[] = { gSpriteAnim_83ED2B0 }; -const union AnimCmd *const gSpriteAnimTable_83ED368[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED368[] = { gSpriteAnim_83ED2BC }; -const union AnimCmd *const gSpriteAnimTable_83ED36C[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED36C[] = { gSpriteAnim_83ED2C8, gSpriteAnim_83ED2D4 }; -const union AnimCmd *const gSpriteAnimTable_83ED374[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED374[] = { gSpriteAnim_83ED2DC }; -const union AnimCmd *const gSpriteAnimTable_83ED378[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED378[] = { gSpriteAnim_83ED2E8, gSpriteAnim_83ED2FC }; -const union AnimCmd *const gSpriteAnimTable_83ED380[] = { +static const union AnimCmd *const gSpriteAnimTable_83ED380[] = { gSpriteAnim_83ED304, gSpriteAnim_83ED30C, gSpriteAnim_83ED314, @@ -4836,7 +4831,7 @@ const union AnimCmd *const gSpriteAnimTable_83ED380[] = { gSpriteAnim_83ED324 }; -const union AffineAnimCmd gSpriteAffineAnim_83ED394[] = { +static const union AffineAnimCmd gSpriteAffineAnim_83ED394[] = { AFFINEANIMCMD_FRAME(0x10, 0x10, 0, 0), AFFINEANIMCMD_LOOP(0), AFFINEANIMCMD_FRAME(0x1, 0x1, 0, 1), @@ -4844,11 +4839,11 @@ const union AffineAnimCmd gSpriteAffineAnim_83ED394[] = { AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED3BC[] = { +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED3BC[] = { gSpriteAffineAnim_83ED394 }; -const union AffineAnimCmd gSpriteAffineAnim_83ED3C0[] = { +static const union AffineAnimCmd gSpriteAffineAnim_83ED3C0[] = { AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 32), AFFINEANIMCMD_FRAME(0x0, 0x0, 6, 32), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), @@ -4861,142 +4856,142 @@ const union AffineAnimCmd gSpriteAffineAnim_83ED3C0[] = { AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED410[] = { +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83ED410[] = { gSpriteAffineAnim_83ED3C0 }; -const struct SpriteTemplate gSpriteTemplate_83ED414 = { +static const struct SpriteTemplate gSpriteTemplate_83ED414 = { 0, 0, &gOamData_83ED0A0, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_8104F18 }; -const struct SpriteTemplate gSpriteTemplate_83ED42C = { +static const struct SpriteTemplate gSpriteTemplate_83ED42C = { 7, 4, &gOamData_83ED088, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, sub_810506C }; -const struct SpriteTemplate gSpriteTemplate_83ED444 = { +static const struct SpriteTemplate gSpriteTemplate_83ED444 = { 17, 0, &gOamData_83ED0B8, gSpriteAnimTable_83ED32C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED45C = { +static const struct SpriteTemplate gSpriteTemplate_83ED45C = { 0xFFFF, 1, &gOamData_83ED0B8, gSpriteAnimTable_83ED334, gSpriteImageTable_83ED0C0, gDummySpriteAffineAnimTable, sub_8105170 }; -const struct SpriteTemplate gSpriteTemplate_83ED474 = { +static const struct SpriteTemplate gSpriteTemplate_83ED474 = { 0xFFFF, 2, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0E8, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED48C = { +static const struct SpriteTemplate gSpriteTemplate_83ED48C = { 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F0, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED4A4 = { +static const struct SpriteTemplate gSpriteTemplate_83ED4A4 = { 0xFFFF, 3, &gOamData_83ED088, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED0F8, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED4BC = { +static const struct SpriteTemplate gSpriteTemplate_83ED4BC = { 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED34C, gSpriteImageTable_83ED100, gDummySpriteAffineAnimTable, sub_810535C }; -const struct SpriteTemplate gSpriteTemplate_83ED4D4 = { +static const struct SpriteTemplate gSpriteTemplate_83ED4D4 = { 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED130, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED4EC = { +static const struct SpriteTemplate gSpriteTemplate_83ED4EC = { 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED138, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED504 = { +static const struct SpriteTemplate gSpriteTemplate_83ED504 = { 0xFFFF, 4, &gOamData_83ED098, gSpriteAnimTable_83ED364, gSpriteImageTable_83ED140, gDummySpriteAffineAnimTable, sub_810562C }; -const struct SpriteTemplate gSpriteTemplate_83ED51C = { +static const struct SpriteTemplate gSpriteTemplate_83ED51C = { 0xFFFF, 7, &gOamData_83ED0A8, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED150, gDummySpriteAffineAnimTable, sub_8105784 }; -const struct SpriteTemplate gSpriteTemplate_83ED534 = { +static const struct SpriteTemplate gSpriteTemplate_83ED534 = { 0xFFFF, 5, &gOamData_83ED0A0, gSpriteAnimTable_83ED368, gSpriteImageTable_83ED158, gDummySpriteAffineAnimTable, sub_8105894 }; -const struct SpriteTemplate gSpriteTemplate_83ED54C = { +static const struct SpriteTemplate gSpriteTemplate_83ED54C = { 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED330, gSpriteImageTable_83ED168, gDummySpriteAffineAnimTable, sub_810594C }; -const struct SpriteTemplate gSpriteTemplate_83ED564 = { +static const struct SpriteTemplate gSpriteTemplate_83ED564 = { 0xFFFF, 4, &gOamData_83ED090, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED170, gSpriteAffineAnimTable_83ED3BC, sub_8105A38 }; -const struct SpriteTemplate gSpriteTemplate_83ED57C = { +static const struct SpriteTemplate gSpriteTemplate_83ED57C = { 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED178, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED594 = { +static const struct SpriteTemplate gSpriteTemplate_83ED594 = { 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED180, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED5AC = { +static const struct SpriteTemplate gSpriteTemplate_83ED5AC = { 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED188, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED5C4 = { +static const struct SpriteTemplate gSpriteTemplate_83ED5C4 = { 18, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED190, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED5DC = { +static const struct SpriteTemplate gSpriteTemplate_83ED5DC = { 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED198, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED5F4 = { +static const struct SpriteTemplate gSpriteTemplate_83ED5F4 = { 0xFFFF, 6, &gOamData_83ED0B0, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A0, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED60C = { +static const struct SpriteTemplate gSpriteTemplate_83ED60C = { 19, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1A8, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED624 = { +static const struct SpriteTemplate gSpriteTemplate_83ED624 = { 20, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B0, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED63C = { +static const struct SpriteTemplate gSpriteTemplate_83ED63C = { 21, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1B8, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED654 = { +static const struct SpriteTemplate gSpriteTemplate_83ED654 = { 0xFFFF, 6, &gOamData_83ED0A0, gSpriteAnimTable_83ED36C, gSpriteImageTable_83ED1C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED66C = { +static const struct SpriteTemplate gSpriteTemplate_83ED66C = { 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED1D8, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED684 = { +static const struct SpriteTemplate gSpriteTemplate_83ED684 = { 0xFFFF, 6, &gOamData_83ED090, gSpriteAnimTable_83ED380, gSpriteImageTable_83ED1E0, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED69C = { +static const struct SpriteTemplate gSpriteTemplate_83ED69C = { 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED378, gSpriteImageTable_83ED208, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED6B4 = { +static const struct SpriteTemplate gSpriteTemplate_83ED6B4 = { 0xFFFF, 6, &gOamData_83ED080, gSpriteAnimTable_83ED374, gSpriteImageTable_83ED218, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gSpriteTemplate_83ED6CC = { +static const struct SpriteTemplate gSpriteTemplate_83ED6CC = { 0xFFFF, 4, &gOamData_83ED080, gSpriteAnimTable_83ED32C, gSpriteImageTable_83ED228, gSpriteAffineAnimTable_83ED410, sub_8105B70 }; -const struct Subsprite gSubspriteTable_83ED6E4[] = { +static const struct Subsprite gSubspriteTable_83ED6E4[] = { {-64, -64, ST_OAM_SQUARE, 3, 0x0, 3}, {0, -64, ST_OAM_SQUARE, 3, 0x0, 3}, {-64, 0, ST_OAM_SQUARE, 3, 0x0, 3}, {0, 0, ST_OAM_SQUARE, 3, 0x0, 3} }; -const struct SubspriteTable gSubspriteTables_83ED704[] = { +static const struct SubspriteTable gSubspriteTables_83ED704[] = { {4, gSubspriteTable_83ED6E4} }; -const struct Subsprite gSubspriteTable_83ED70C[] = { +static const struct Subsprite gSubspriteTable_83ED70C[] = { {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 1}, {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 1}, {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 1}, @@ -5005,21 +5000,21 @@ const struct Subsprite gSubspriteTable_83ED70C[] = { {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 1} }; -const struct SubspriteTable gSubspriteTables_83ED73C[] = { +static const struct SubspriteTable gSubspriteTables_83ED73C[] = { {6, gSubspriteTable_83ED70C} }; -const struct Subsprite gSubspriteTable_83ED744[] = { +static const struct Subsprite gSubspriteTable_83ED744[] = { {-32, -20, ST_OAM_H_RECTANGLE, 3, 0x0, 1}, {-32, 12, ST_OAM_H_RECTANGLE, 1, 0x20, 1}, {0, 12, ST_OAM_H_RECTANGLE, 1, 0x24, 1} }; -const struct SubspriteTable gSubspriteTables_83ED75C[] = { +static const struct SubspriteTable gSubspriteTables_83ED75C[] = { {3, gSubspriteTable_83ED744} }; -const struct Subsprite gSubspriteTable_83ED764[] = { +static const struct Subsprite gSubspriteTable_83ED764[] = { {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 1}, {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 1}, {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 1}, @@ -5027,32 +5022,32 @@ const struct Subsprite gSubspriteTable_83ED764[] = { {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 1} }; -const struct SubspriteTable gSubspriteTables_83ED78C[] = { +static const struct SubspriteTable gSubspriteTables_83ED78C[] = { {5, gSubspriteTable_83ED764} }; -const struct Subsprite gSubspriteTable_83ED794[] = { +static const struct Subsprite gSubspriteTable_83ED794[] = { {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 1}, {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 1}, {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 1}, {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 1} }; -const struct SubspriteTable gSubspriteTables_83ED7B4[] = { +static const struct SubspriteTable gSubspriteTables_83ED7B4[] = { {4, gSubspriteTable_83ED794} }; -const struct Subsprite gSubspriteTable_83ED7BC[] = { +static const struct Subsprite gSubspriteTable_83ED7BC[] = { {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 1}, {-8, -4, ST_OAM_H_RECTANGLE, 0, 0x0, 1}, {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x0, 1} }; -const struct SubspriteTable gSubspriteTables_83ED7D4[] = { +static const struct SubspriteTable gSubspriteTables_83ED7D4[] = { {3, gSubspriteTable_83ED7BC} }; -const struct Subsprite gSubspriteTable_83ED7DC[] = { +static const struct Subsprite gSubspriteTable_83ED7DC[] = { {-32, -24, ST_OAM_H_RECTANGLE, 3, 0x0, 3}, {-32, 8, ST_OAM_H_RECTANGLE, 1, 0x20, 3}, {0, 8, ST_OAM_H_RECTANGLE, 1, 0x24, 3}, @@ -5060,44 +5055,44 @@ const struct Subsprite gSubspriteTable_83ED7DC[] = { {0, 16, ST_OAM_H_RECTANGLE, 1, 0x2c, 3} }; -const struct SubspriteTable gSubspriteTables_83ED804[] = { +static const struct SubspriteTable gSubspriteTables_83ED804[] = { {5, gSubspriteTable_83ED7DC} }; -const struct Subsprite gSubspriteTable_83ED80C[] = { +static const struct Subsprite gSubspriteTable_83ED80C[] = { {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3} }; -const struct SubspriteTable gSubspriteTables_83ED82C[] = { +static const struct SubspriteTable gSubspriteTables_83ED82C[] = { {4, gSubspriteTable_83ED80C} }; -const struct Subsprite gSubspriteTable_83ED834[] = { +static const struct Subsprite gSubspriteTable_83ED834[] = { {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3} }; -const struct SubspriteTable gSubspriteTables_83ED854[] = { +static const struct SubspriteTable gSubspriteTables_83ED854[] = { {4, gSubspriteTable_83ED834} }; -const struct Subsprite gSubspriteTable_83ED85C[] = { +static const struct Subsprite gSubspriteTable_83ED85C[] = { {-32, -8, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, {0, -8, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, {-32, 0, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, {0, 0, ST_OAM_H_RECTANGLE, 1, 0xc, 3} }; -const struct SubspriteTable gSubspriteTables_83ED87C[] = { +static const struct SubspriteTable gSubspriteTables_83ED87C[] = { {4, gSubspriteTable_83ED85C} }; -const struct Subsprite gSubspriteTable_83ED884[] = { +static const struct Subsprite gSubspriteTable_83ED884[] = { {-32, -12, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, {0, -12, ST_OAM_H_RECTANGLE, 1, 0x4, 3}, {-32, -4, ST_OAM_H_RECTANGLE, 1, 0x8, 3}, @@ -5106,24 +5101,24 @@ const struct Subsprite gSubspriteTable_83ED884[] = { {0, 4, ST_OAM_H_RECTANGLE, 1, 0x14, 3} }; -const struct SubspriteTable gSubspriteTables_83ED8B4[] = { +static const struct SubspriteTable gSubspriteTables_83ED8B4[] = { {6, gSubspriteTable_83ED884} }; -const struct Subsprite gSubspriteTable_83ED8BC[] = { +static const struct Subsprite gSubspriteTable_83ED8BC[] = { {-16, -16, ST_OAM_SQUARE, 2, 0x0, 3} }; -const struct Subsprite gSubspriteTable_83ED8C4[] = { +static const struct Subsprite gSubspriteTable_83ED8C4[] = { {-8, -8, ST_OAM_SQUARE, 1, 0x10, 3} }; -const struct SubspriteTable gSubspriteTables_83ED8CC[] = { +static const struct SubspriteTable gSubspriteTables_83ED8CC[] = { {1, gSubspriteTable_83ED8BC}, {1, gSubspriteTable_83ED8C4} }; -const struct Subsprite gSubspriteTable_83ED8DC[] = { +static const struct Subsprite gSubspriteTable_83ED8DC[] = { {-24, -24, ST_OAM_H_RECTANGLE, 1, 0x0, 3}, {8, -24, ST_OAM_H_RECTANGLE, 0, 0x4, 3}, {-24, -16, ST_OAM_H_RECTANGLE, 1, 0x6, 3}, @@ -5138,102 +5133,102 @@ const struct Subsprite gSubspriteTable_83ED8DC[] = { {8, 16, ST_OAM_H_RECTANGLE, 0, 0x22, 3} }; -const struct SubspriteTable gSubspriteTables_83ED93C[] = { +static const struct SubspriteTable gSubspriteTables_83ED93C[] = { 12, gSubspriteTable_83ED8DC }; -const struct Subsprite gSubspriteTable_83ED944[] = { +static const struct Subsprite gSubspriteTable_83ED944[] = { {-16, -12, ST_OAM_H_RECTANGLE, 2, 0x0, 3}, {-16, 4, ST_OAM_H_RECTANGLE, 0, 0x8, 3}, {0, 4, ST_OAM_H_RECTANGLE, 0, 0xa, 3} }; -const struct SubspriteTable gSubspriteTables_83ED95C[] = { +static const struct SubspriteTable gSubspriteTables_83ED95C[] = { {3, gSubspriteTable_83ED944} }; -const struct Subsprite gSubspriteTable_83ED964[] = { +static const struct Subsprite gSubspriteTable_83ED964[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3} }; -const struct SubspriteTable gSubspriteTables_83ED974[] = { +static const struct SubspriteTable gSubspriteTables_83ED974[] = { {2, gSubspriteTable_83ED964} }; -const struct Subsprite gSubspriteTable_83ED97C[] = { +static const struct Subsprite gSubspriteTable_83ED97C[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x2, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xa, 3} }; -const struct SubspriteTable gSubspriteTables_83ED98C[] = { +static const struct SubspriteTable gSubspriteTables_83ED98C[] = { {2, gSubspriteTable_83ED97C} }; -const struct Subsprite gSubspriteTable_83ED994[] = { +static const struct Subsprite gSubspriteTable_83ED994[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x4, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xc, 3} }; -const struct SubspriteTable gSubspriteTables_83ED9A4[] = { +static const struct SubspriteTable gSubspriteTables_83ED9A4[] = { {2, gSubspriteTable_83ED994} }; -const struct Subsprite gSubspriteTable_83ED9AC[] = { +static const struct Subsprite gSubspriteTable_83ED9AC[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3} }; -const struct SubspriteTable gSubspriteTables_83ED9BC[] = { +static const struct SubspriteTable gSubspriteTables_83ED9BC[] = { {2, gSubspriteTable_83ED9AC} }; -const struct Subsprite gSubspriteTable_83ED9C4[] = { +static const struct Subsprite gSubspriteTable_83ED9C4[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0x8, 3} }; -const struct SubspriteTable gSubspriteTables_83ED9D4[] = { +static const struct SubspriteTable gSubspriteTables_83ED9D4[] = { {2, gSubspriteTable_83ED9C4} }; -const struct Subsprite gSubspriteTable_83ED9DC[] = { +static const struct Subsprite gSubspriteTable_83ED9DC[] = { {-4, -8, ST_OAM_SQUARE, 0, 0x2, 3}, {-4, 0, ST_OAM_SQUARE, 0, 0xa, 3} }; -const struct SubspriteTable gSubspriteTables_83ED9EC[] = { +static const struct SubspriteTable gSubspriteTables_83ED9EC[] = { {2, gSubspriteTable_83ED9DC} }; -const struct Subsprite gSubspriteTable_83ED9F4[] = { +static const struct Subsprite gSubspriteTable_83ED9F4[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x3, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xb, 3} }; -const struct SubspriteTable gSubspriteTables_83EDA04[] = { +static const struct SubspriteTable gSubspriteTables_83EDA04[] = { {2, gSubspriteTable_83ED9F4} }; -const struct Subsprite gSubspriteTable_83EDA0C[] = { +static const struct Subsprite gSubspriteTable_83EDA0C[] = { {-4, -8, ST_OAM_SQUARE, 0, 0x5, 3}, {-4, 0, ST_OAM_SQUARE, 0, 0xd, 3} }; -const struct SubspriteTable gSubspriteTables_83EDA1C[] = { +static const struct SubspriteTable gSubspriteTables_83EDA1C[] = { {2, gSubspriteTable_83EDA0C} }; -const struct Subsprite gSubspriteTable_83EDA24[] = { +static const struct Subsprite gSubspriteTable_83EDA24[] = { {-8, -8, ST_OAM_H_RECTANGLE, 0, 0x6, 3}, {-8, 0, ST_OAM_H_RECTANGLE, 0, 0xe, 3} }; -const struct SubspriteTable gSubspriteTables_83EDA34[] = { +static const struct SubspriteTable gSubspriteTables_83EDA34[] = { {2, gSubspriteTable_83EDA24} }; -const struct Subsprite gSubspriteTable_83EDA3C[] = { +static const struct Subsprite gSubspriteTable_83EDA3C[] = { {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, {4, -12, ST_OAM_SQUARE, 0, 0x2, 3}, {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3}, @@ -5242,21 +5237,21 @@ const struct Subsprite gSubspriteTable_83EDA3C[] = { {4, 4, ST_OAM_SQUARE, 0, 0x12, 3} }; -const struct SubspriteTable gSubspriteTables_83EDA6C[] = { +static const struct SubspriteTable gSubspriteTables_83EDA6C[] = { {6, gSubspriteTable_83EDA3C} }; -const struct Subsprite gSubspriteTable_83EDA74[] = { +static const struct Subsprite gSubspriteTable_83EDA74[] = { {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3}, {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3}, {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3} }; -const struct SubspriteTable gSubspriteTables_83EDA8C[] = { +static const struct SubspriteTable gSubspriteTables_83EDA8C[] = { {3, gSubspriteTable_83EDA74} }; -const struct Subsprite gSubspriteTable_83EDA94[] = { +static const struct Subsprite gSubspriteTable_83EDA94[] = { {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3}, {4, -12, ST_OAM_SQUARE, 0, 0x7, 3}, {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3}, @@ -5265,11 +5260,11 @@ const struct Subsprite gSubspriteTable_83EDA94[] = { {4, 4, ST_OAM_SQUARE, 0, 0x17, 3} }; -const struct SubspriteTable gSubspriteTables_83EDAC4[] = { +static const struct SubspriteTable gSubspriteTables_83EDAC4[] = { {6, gSubspriteTable_83EDA94} }; -const struct Subsprite gSubspriteTable_83EDACC[] = { +static const struct Subsprite gSubspriteTable_83EDACC[] = { {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x0, 3}, {4, -12, ST_OAM_SQUARE, 0, 0x2, 3}, {-12, -4, ST_OAM_H_RECTANGLE, 0, 0x8, 3}, @@ -5278,21 +5273,21 @@ const struct Subsprite gSubspriteTable_83EDACC[] = { {4, 4, ST_OAM_SQUARE, 0, 0x12, 3} }; -const struct SubspriteTable gSubspriteTables_83EDAFC[] = { +static const struct SubspriteTable gSubspriteTables_83EDAFC[] = { {6, gSubspriteTable_83EDACC} }; -const struct Subsprite gSubspriteTable_83EDB04[] = { +static const struct Subsprite gSubspriteTable_83EDB04[] = { {-8, -12, ST_OAM_H_RECTANGLE, 0, 0x3, 3}, {-8, -4, ST_OAM_H_RECTANGLE, 0, 0xb, 3}, {-8, 4, ST_OAM_H_RECTANGLE, 0, 0x13, 3} }; -const struct SubspriteTable gSubspriteTables_83EDB1C[] = { +static const struct SubspriteTable gSubspriteTables_83EDB1C[] = { {3, gSubspriteTable_83EDB04} }; -const struct Subsprite gSubspriteTable_83EDB24[] = { +static const struct Subsprite gSubspriteTable_83EDB24[] = { {-12, -12, ST_OAM_H_RECTANGLE, 0, 0x5, 3}, {4, -12, ST_OAM_SQUARE, 0, 0x7, 3}, {-12, -4, ST_OAM_H_RECTANGLE, 0, 0xd, 3}, @@ -5301,11 +5296,11 @@ const struct Subsprite gSubspriteTable_83EDB24[] = { {4, 4, ST_OAM_SQUARE, 0, 0x17, 3} }; -const struct SubspriteTable gSubspriteTables_83EDB54[] = { +static const struct SubspriteTable gSubspriteTables_83EDB54[] = { {6, gSubspriteTable_83EDB24} }; -const struct SpriteTemplate *const gUnknown_083EDB5C[] = { +static const struct SpriteTemplate *const gUnknown_083EDB5C[] = { &gSpriteTemplate_83ED57C, &gSpriteTemplate_83ED594, &gSpriteTemplate_83ED5AC, @@ -5334,7 +5329,7 @@ const struct SpriteTemplate *const gUnknown_083EDB5C[] = { &gDummySpriteTemplate }; -const struct SubspriteTable *const gUnknown_083EDBC4[] = { +static const struct SubspriteTable *const gUnknown_083EDBC4[] = { gSubspriteTables_83ED804, gSubspriteTables_83ED82C, gSubspriteTables_83ED854, @@ -5363,7 +5358,7 @@ const struct SubspriteTable *const gUnknown_083EDBC4[] = { NULL }; -const struct SpriteSheet gUnknown_083EDC2C[] = { +static const struct SpriteSheet gUnknown_083EDC2C[] = { {gSlotMachineReelSymbol1Tiles, 0x200, 0}, {gSlotMachineReelSymbol2Tiles, 0x200, 1}, {gSlotMachineReelSymbol3Tiles, 0x200, 2}, @@ -5388,19 +5383,19 @@ const struct SpriteSheet gUnknown_083EDC2C[] = { {} }; -const struct SpriteSheet gUnknown_083EDCDC = { +static const struct SpriteSheet gUnknown_083EDCDC = { ewram10000 + 0x0000, 0x800, 17 }; -const u8 *const gUnknown_083EDCE4 = gUnknownPalette_08E997E8; +static const u8 *const gUnknown_083EDCE4 = gUnknownPalette_08E997E8; #ifdef SAPPHIRE -const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/sapphire_83EDD40.gbapal"); +static const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/sapphire_83EDD40.gbapal"); #elif defined(RUBY) -const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/ruby_83EDCE8.gbapal"); +static const u16 UnknownPalette_83EDCE8[] = INCBIN_U16("graphics/unknown/ruby_83EDCE8.gbapal"); #endif // RS -const u16 *const gUnknown_083EDD08[] = { +static const u16 *const gUnknown_083EDD08[] = { UnknownPalette_83EDCE8 + 10, UnknownPalette_83EDCE8 + 11, UnknownPalette_83EDCE8 + 12, @@ -5408,7 +5403,7 @@ const u16 *const gUnknown_083EDD08[] = { UnknownPalette_83EDCE8 + 14 }; -const u16 *const gUnknown_083EDD1C[] = { +static const u16 *const gUnknown_083EDD1C[] = { gUnknown_08E95A18 + 74, gUnknown_08E95A18 + 75, gUnknown_08E95A18 + 76, @@ -5416,51 +5411,51 @@ const u16 *const gUnknown_083EDD1C[] = { gUnknown_08E95A18 + 78 }; -const u8 gUnknown_083EDD30[] = { +static const u8 gUnknown_083EDD30[] = { 0x4a, 0x4b, 0x4c, 0x4e, 0x4d }; -const u8 gUnknown_083EDD35[][2] = { +static const u8 gUnknown_083EDD35[][2] = { {0, 0}, {1, 2}, {3, 4} }; -const u8 gUnknown_083EDD3B[] = {1, 2, 2}; +static const u8 gUnknown_083EDD3B[] = {1, 2, 2}; #ifdef SAPPHIRE -const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/sapphire_83EDD96.gbapal"); -const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDB6.gbapal"); -const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDD6.gbapal"); +static const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/sapphire_83EDD96.gbapal"); +static const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDB6.gbapal"); +static const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/sapphire_83EDDD6.gbapal"); #elif defined (RUBY) -const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/ruby_83EDD3E.gbapal"); -const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/ruby_83EDD5E.gbapal"); -const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/ruby_83EDD7E.gbapal"); +static const u16 Unknown_83EDD3E[] = INCBIN_U16("graphics/unknown/ruby_83EDD3E.gbapal"); +static const u16 Unknown_83EDD5E[] = INCBIN_U16("graphics/unknown/ruby_83EDD5E.gbapal"); +static const u16 Unknown_83EDD7E[] = INCBIN_U16("graphics/unknown/ruby_83EDD7E.gbapal"); #endif // RS -const u16 *const gUnknown_083EDDA0[] = { +static const u16 *const gUnknown_083EDDA0[] = { Unknown_83EDD3E, Unknown_83EDD5E, Unknown_83EDD7E }; -const u16 *const gUnknown_083EDDAC = gUnknown_08E95A18 + 16; +static const u16 *const gUnknown_083EDDAC = gUnknown_08E95A18 + 16; -const u16 Palette_83EDDB0[] = INCBIN_U16("graphics/slot_machine/83EDDB0.gbapal"); -const u16 Palette_83EDDD0[] = INCBIN_U16("graphics/slot_machine/83EDDD0.gbapal"); -const u16 Palette_83EDDF0[] = INCBIN_U16("graphics/slot_machine/83EDDF0.gbapal"); +static const u16 Palette_83EDDB0[] = INCBIN_U16("graphics/slot_machine/83EDDB0.gbapal"); +static const u16 Palette_83EDDD0[] = INCBIN_U16("graphics/slot_machine/83EDDD0.gbapal"); +static const u16 Palette_83EDDF0[] = INCBIN_U16("graphics/slot_machine/83EDDF0.gbapal"); -const u16 *const gUnknown_083EDE10[] = { +static const u16 *const gUnknown_083EDE10[] = { Palette_83EDDB0, Palette_83EDDD0, Palette_83EDDF0, gSlotMachineSpritePalette6 }; -const u16 *const gUnknown_083EDE20 = gSlotMachineSpritePalette6; +static const u16 *const gUnknown_083EDE20 = gSlotMachineSpritePalette6; -const u16 gPalette_83EDE24[] = INCBIN_U16("graphics/slot_machine/83EDE24_pal.bin"); +static const u16 gPalette_83EDE24[] = INCBIN_U16("graphics/slot_machine/83EDE24_pal.bin"); -const struct SpritePalette gSlotMachineSpritePalettes[] = { +static const struct SpritePalette gSlotMachineSpritePalettes[] = { {gSlotMachineSpritePalette0, 0}, {gSlotMachineSpritePalette1, 1}, {gSlotMachineSpritePalette2, 2}, @@ -5472,6 +5467,6 @@ const struct SpritePalette gSlotMachineSpritePalettes[] = { {} }; -const u8 gUnknown_083EDE8C[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); +static const u8 gUnknown_083EDE8C[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); -const u16 gReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin"); +static const u16 gReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin"); -- cgit v1.2.3 From 5588053754c2f1e293123cb1b793b867848f7c04 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Thu, 4 Jan 2018 23:05:01 +0100 Subject: Formatted to fit with the rest of the source code --- src/battle/anim/poison.c | 83 +++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c index c53fb2a8b..f31c441fb 100644 --- a/src/battle/anim/poison.c +++ b/src/battle/anim/poison.c @@ -12,104 +12,129 @@ void sub_80D9E78(struct Sprite *sprite); void sub_80D9EE8(struct Sprite *sprite); void sub_80D9FF0(struct Sprite *sprite); -void sub_80D9D70(struct Sprite *sprite) { - if (!gBattleAnimArgs[3]) { +void sub_80D9D70(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); - } + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9DD4; } -void sub_80D9DD4(struct Sprite *sprite) { - if (sub_8078718(sprite)) { +void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78 +{ + if (sub_8078718(sprite)) DestroyAnimSprite(sprite); - } } -void sub_80D9DF0(struct Sprite *sprite) { +void sub_80D9DF0(struct Sprite *sprite) +{ s16 l1, l2; - if (!gBattleAnimArgs[3]) { + if (!gBattleAnimArgs[3]) StartSpriteAnim(sprite, 2); - } + sub_80787B0(sprite, 1); sub_807A3FC(gAnimBankTarget, 1, &l1, &l2); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[4] = -gBattleAnimArgs[4]; - } + sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = l1 + gBattleAnimArgs[4]; sprite->data[4] = l2 + gBattleAnimArgs[5]; sprite->data[5] = -30; + sub_80786EC(sprite); + sprite->callback = sub_80D9E78; } -void sub_80D9E78(struct Sprite *sprite) { - if (sub_8078718(sprite)) { +void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4 +{ + if (sub_8078718(sprite)) DestroyAnimSprite(sprite); - } } -void sub_80D9E94(struct Sprite *sprite) { +void sub_80D9E94(struct Sprite *sprite) +{ sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->pos1.x; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[0]; sprite->data[3] = sprite->pos1.y; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1]; + sub_8078A5C(sprite); + sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; + sprite->callback = sub_80D9EE8; } -void sub_80D9EE8(struct Sprite *sprite) { +void sub_80D9EE8(struct Sprite *sprite) +{ sub_8078394(sprite); + sprite->data[1] -= sprite->data[5]; sprite->data[2] -= sprite->data[6]; - if (!sprite->data[0]) { + + if (!sprite->data[0]) DestroyAnimSprite(sprite); - } } -void sub_80D9F14(struct Sprite *sprite) { +void sub_80D9F14(struct Sprite *sprite) +{ sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - } + sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; sprite->data[4] = sprite->pos1.y + sprite->data[0]; + sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80D9F88(struct Sprite *sprite) { - if (!gBattleAnimArgs[2]) { +void sub_80D9F88(struct Sprite *sprite) +{ + if (!gBattleAnimArgs[2]) + { sub_8078764(sprite, TRUE); - } else { + } + else + { sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y); - if (GetBankSide(gAnimBankAttacker)) { + + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - } + sprite->pos1.x += gBattleAnimArgs[0]; sprite->pos1.y += gBattleAnimArgs[1]; } + sprite->callback = sub_80D9FF0; } -void sub_80D9FF0(struct Sprite *sprite) { +void sub_80D9FF0(struct Sprite *sprite) +{ sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; sprite->pos2.x = Sin(sprite->data[0], 4); sprite->data[1] += 0x30; sprite->pos2.y = -(sprite->data[1] >> 8); - if (sprite->affineAnimEnded) { + + if (sprite->affineAnimEnded) DestroyAnimSprite(sprite); - } } \ No newline at end of file -- cgit v1.2.3 From 0a70c2c6938c260bd8d1d036660891beb26c5820 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jan 2018 17:17:42 -0500 Subject: Get sub_8103668 matching --- src/field/slot_machine.c | 535 ++++++++++++++++++----------------------------- 1 file changed, 202 insertions(+), 333 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index b21d8a082..7691f4fa9 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -30,21 +30,21 @@ struct UnkStruct1 { #endif -static void sub_81018B8(void); -static void sub_8101954(void); -static void sub_81019B0(u8 arg0, void *ptr); -static void nullsub_67(u8 taskId); -static void sub_8101A28(void); -static void sub_8101A44(void); -static void sub_8101A8C(void); -static void sub_8101AE0(void); -static void sub_8101B04(void); -static void sub_8101BA4(void); -static void sub_8101C84(void); -static void sub_8101CA0(void); -static void sub_8101CC0(void); -static void sub_8101CD4(void); -static void sub_8101CEC(void); +static void CB2_SlotMachineSetup(void); +static void CB2_SlotMachineLoop(void); +static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb); +static void SlotMachineDummyTask(u8 taskId); +static void SlotMachineSetup_0_0(void); +static void SlotMachineSetup_6_2(void); +static void SlotMachineSetup_1_0(void); +static void SlotMachineSetup_2_0(void); +static void SlotMachineSetup_2_1(void); +static void SlotMachineSetup_0_1(void); +static void SlotMachineSetup_3_0(void); +static void SlotMachineSetup_4_0(void); +static void SlotMachineSetup_5_0(void); +static void SlotMachineSetup_6_0(void); +static void SlotMachineSetup_6_1(void); static void sub_8101D04(void); static void sub_8101D24(u8 taskId); static bool8 sub_8101D5C(struct Task *task); @@ -82,11 +82,11 @@ static bool8 sub_8102540(void); static u8 sub_8102578(void); static u16 dp15_jump_random_unknown(void); static u8 sub_81025BC(void); -static void sub_81027A0(void); -static void sub_81027D0(void); -static void sub_8102840(void); -static void sub_810290C(void); -static u8 sub_81029D4(u8 c1, u8 c2, u8 c3); +static void CheckMatch(void); +static void CheckMatch_CenterRow(void); +static void CheckMatch_TopAndBottom(void); +static void CheckMatch_Diagonals(void); +static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3); static void sub_8102A24(void); static void sub_8102A64(u8 taskId); static bool8 sub_8102A44(void); @@ -229,52 +229,52 @@ static const u8 gUnknown_083ECE3A[]; static const u16 gUnknown_083ECE42[]; static const u16 gUnknown_083ECE48[]; -void PlaySlotMachine(u8 arg0, void *ptr) +void PlaySlotMachine(u8 arg0, MainCallback cb) { - sub_81019B0(arg0, ptr); - SetMainCallback2(sub_81018B8); + PlaySlotMachine_Internal(arg0, cb); + SetMainCallback2(CB2_SlotMachineSetup); } -static void sub_81018B8(void) +static void CB2_SlotMachineSetup(void) { switch (gMain.state) { case 0: - sub_8101A28(); - sub_8101BA4(); + SlotMachineSetup_0_0(); + SlotMachineSetup_0_1(); gMain.state++; break; case 1: - sub_8101A8C(); + SlotMachineSetup_1_0(); gMain.state++; break; case 2: - sub_8101AE0(); - sub_8101B04(); + SlotMachineSetup_2_0(); + SlotMachineSetup_2_1(); gMain.state++; break; case 3: - sub_8101C84(); + SlotMachineSetup_3_0(); gMain.state++; break; case 4: - sub_8101CA0(); + SlotMachineSetup_4_0(); gMain.state++; break; case 5: - sub_8101CC0(); + SlotMachineSetup_5_0(); gMain.state++; break; case 6: - sub_8101CD4(); - sub_8101CEC(); - sub_8101A44(); - SetMainCallback2(sub_8101954); + SlotMachineSetup_6_0(); + SlotMachineSetup_6_1(); + SlotMachineSetup_6_2(); + SetMainCallback2(CB2_SlotMachineLoop); break; } } -static void sub_8101954(void) +static void CB2_SlotMachineLoop(void) { RunTasks(); AnimateSprites(); @@ -282,7 +282,7 @@ static void sub_8101954(void) UpdatePaletteFade(); } -static void sub_810196C(void) +static void SlotMachine_VBlankCallback(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -293,35 +293,35 @@ static void sub_810196C(void) REG_WINOUT = eSlotMachine->winOut; } -static void sub_81019B0(u8 arg0, void *ptr) +static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb) { - struct Task *task = &gTasks[CreateTask(nullsub_67, 0xFF)]; + struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF); task->data[0] = arg0; - StoreWordInTwoHalfwords(task->data + 1, (intptr_t)ptr); + StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb); } static void sub_81019EC(void) { - struct Task *task = &gTasks[FindTaskIdByFunc(nullsub_67)]; + struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask); eSlotMachine->unk01 = task->data[0]; LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&eSlotMachine->prevMainCb); } -static void nullsub_67(u8 taskId) +static void SlotMachineDummyTask(u8 taskId) { } -static void sub_8101A28(void) +static void SlotMachineSetup_0_0(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); REG_DISPCNT = 0; } -static void sub_8101A44(void) +static void SlotMachineSetup_6_2(void) { u16 imeBak; - SetVBlankCallback(sub_810196C); + SetVBlankCallback(SlotMachine_VBlankCallback); imeBak = REG_IME; REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; @@ -330,17 +330,17 @@ static void sub_8101A44(void) REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; } -static void sub_8101A8C(void) +static void SlotMachineSetup_1_0(void) { DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000); } -static void sub_8101AE0(void) +static void SlotMachineSetup_2_0(void) { DmaClear16(3, (u16 *)OAM, OAM_SIZE); } -static void sub_8101B04(void) +static void SlotMachineSetup_2_1(void) { REG_BG0CNT = 0; REG_BG1CNT = 0; @@ -366,7 +366,7 @@ static void sub_8101B04(void) static const s16 gUnknown_083ECCF8[][2]; -static void sub_8101BA4(void) +static void SlotMachineSetup_0_1(void) { u8 i; @@ -375,11 +375,11 @@ static void sub_8101BA4(void) eSlotMachine->unk02 = 0; eSlotMachine->unk03 = Random() & 1; eSlotMachine->unk04 = 0; - eSlotMachine->unk08 = 0; + eSlotMachine->matchedSymbols = 0; eSlotMachine->unk0A = 0; eSlotMachine->unk0B = 0; eSlotMachine->coins = gSaveBlock1.coins; - eSlotMachine->unk0E = 0; + eSlotMachine->payout = 0; eSlotMachine->unk10 = 0; eSlotMachine->bet = 0; eSlotMachine->unk18 = 0; @@ -398,13 +398,13 @@ static void sub_8101BA4(void) } } -static void sub_8101C84(void) +static void SlotMachineSetup_3_0(void) { SetUpWindowConfig(&gWindowConfig_81E7128); InitMenuWindow(&gWindowConfig_81E7128); } -static void sub_8101CA0(void) +static void SlotMachineSetup_4_0(void) { ResetPaletteFade(); ResetSpriteData(); @@ -413,14 +413,14 @@ static void sub_8101CA0(void) ResetTasks(); } -static void sub_8101CC0(void) +static void SlotMachineSetup_5_0(void) { sub_8106448(); sub_81064B8(); sub_81063C0(); } -static void sub_8101CD4(void) +static void SlotMachineSetup_6_0(void) { sub_8104EA8(); sub_8104F8C(); @@ -428,7 +428,7 @@ static void sub_8101CD4(void) sub_81050C4(); } -static void sub_8101CEC(void) +static void SlotMachineSetup_6_1(void) { sub_8104048(); sub_8102DA8(); @@ -497,7 +497,7 @@ static bool8 sub_8101D8C(struct Task *task) static bool8 sub_8101DB0(struct Task *task) { - eSlotMachine->unk0E = 0; + eSlotMachine->payout = 0; eSlotMachine->bet = 0; eSlotMachine->unk18 = 0; eSlotMachine->unk04 &= 0xc0; @@ -691,27 +691,27 @@ static bool8 sub_8102090(struct Task *task) static bool8 sub_81020C8(struct Task *task) { eSlotMachine->unk04 &= 0xc0; - sub_81027A0(); + CheckMatch(); if (eSlotMachine->unk0A) { eSlotMachine->unk0A--; eSlotMachine->unk0B++; } - if (eSlotMachine->unk08) + if (eSlotMachine->matchedSymbols) { eSlotMachine->state = 15; sub_8102A24(); sub_8103F70(); - if ((eSlotMachine->unk10 -= eSlotMachine->unk0E) < 0) + if ((eSlotMachine->unk10 -= eSlotMachine->payout) < 0) { eSlotMachine->unk10 = 0; } - if (eSlotMachine->unk08 & 0x180) + if (eSlotMachine->matchedSymbols & 0x180) { PlayFanfare(BGM_ME_B_BIG); sub_8104CAC(6); } - else if (eSlotMachine->unk08 & 0x40) + else if (eSlotMachine->matchedSymbols & 0x40) { PlayFanfare(BGM_ME_B_BIG); sub_8104CAC(5); @@ -721,21 +721,21 @@ static bool8 sub_81020C8(struct Task *task) PlayFanfare(BGM_ME_B_SMALL); sub_8104CAC(2); } - if (eSlotMachine->unk08 & 0x1c0) + if (eSlotMachine->matchedSymbols & 0x1c0) { eSlotMachine->unk04 &= 0x3f; - if (eSlotMachine->unk08 & 0x180) + if (eSlotMachine->matchedSymbols & 0x180) { eSlotMachine->unk0A = 0; eSlotMachine->unk0B = 0; eSlotMachine->unk03 = 0; - if (eSlotMachine->unk08 & 0x100) + if (eSlotMachine->matchedSymbols & 0x100) { eSlotMachine->unk03 = 1; } } } - if (eSlotMachine->unk08 & 0x20 && eSlotMachine->unk02 < 16) + if (eSlotMachine->matchedSymbols & 0x20 && eSlotMachine->unk02 < 16) { eSlotMachine->unk02++; sub_8104064(eSlotMachine->unk02); @@ -767,20 +767,20 @@ static bool8 sub_81021FC(struct Task *task) if (sub_8103FA0()) { eSlotMachine->state = 19; - if (eSlotMachine->unk08 & 0x180) + if (eSlotMachine->matchedSymbols & 0x180) { IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); } - if (eSlotMachine->unk08 & 0x04) + if (eSlotMachine->matchedSymbols & 0x04) { eSlotMachine->unk18 = 0; eSlotMachine->state = 9; } - if (eSlotMachine->unk08 & 0x20) + if (eSlotMachine->matchedSymbols & 0x20) { eSlotMachine->state = 17; } - if (eSlotMachine->unk0A && eSlotMachine->unk08 & 0x04) + if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & 0x04) { sub_8104CAC(4); eSlotMachine->state = 18; @@ -794,7 +794,7 @@ static bool8 sub_8102264(struct Task *task) if (!sub_81040C8()) { eSlotMachine->state = 19; - if (eSlotMachine->unk08 & 0x04) + if (eSlotMachine->matchedSymbols & 0x04) { eSlotMachine->state = 9; if (eSlotMachine->unk0A) @@ -812,7 +812,7 @@ static bool8 sub_81022A0(struct Task *task) if (sub_8104E18()) { eSlotMachine->state = 19; - if (eSlotMachine->unk08 & 0x04) + if (eSlotMachine->matchedSymbols & 0x04) { eSlotMachine->state = 9; } @@ -1116,126 +1116,126 @@ static u16 dp15_jump_random_unknown(void) return 8; } -static void sub_81027A0(void) +static void CheckMatch(void) { - eSlotMachine->unk08 = 0; - sub_81027D0(); + eSlotMachine->matchedSymbols = 0; + CheckMatch_CenterRow(); if (eSlotMachine->bet > 1) { - sub_8102840(); + CheckMatch_TopAndBottom(); } if (eSlotMachine->bet > 2) { - sub_810290C(); + CheckMatch_Diagonals(); } } -static const u16 gUnknown_083ECE5A[]; -static const u16 gUnknown_083ECE6C[]; +static const u16 sSlotMatchFlags[]; +static const u16 sSlotPayouts[]; -static void sub_81027D0(void) +static void CheckMatch_CenterRow(void) { - u8 c1, c2, c3, payout; + u8 c1, c2, c3, match; c1 = sub_8102BA4(0, 2); c2 = sub_8102BA4(1, 2); c3 = sub_8102BA4(2, 2); - payout = sub_81029D4(c1, c2, c3); - if (payout != 9) + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) { - eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; - eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + eSlotMachine->payout += sSlotPayouts[match]; + eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; sub_8103E04(0); } } -static void sub_8102840(void) +static void CheckMatch_TopAndBottom(void) { - u8 c1, c2, c3, payout; + u8 c1, c2, c3, match; c1 = sub_8102BA4(0, 1); c2 = sub_8102BA4(1, 1); c3 = sub_8102BA4(2, 1); - payout = sub_81029D4(c1, c2, c3); - if (payout != 9) + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) { - if (payout == 0) + if (match == SLOT_MACHINE_MATCHED_1CHERRY) { - payout = 1; + match = SLOT_MACHINE_MATCHED_2CHERRY; } - eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; - eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + eSlotMachine->payout += sSlotPayouts[match]; + eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; sub_8103E04(1); } c1 = sub_8102BA4(0, 3); c2 = sub_8102BA4(1, 3); c3 = sub_8102BA4(2, 3); - payout = sub_81029D4(c1, c2, c3); - if (payout != 9) + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) { - if (payout == 0) + if (match == SLOT_MACHINE_MATCHED_1CHERRY) { - payout = 1; + match = SLOT_MACHINE_MATCHED_2CHERRY; } - eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; - eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + eSlotMachine->payout += sSlotPayouts[match]; + eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; sub_8103E04(2); } } -static void sub_810290C(void) +static void CheckMatch_Diagonals(void) { - u8 c1, c2, c3, payout; + u8 c1, c2, c3, match; c1 = sub_8102BA4(0, 1); c2 = sub_8102BA4(1, 2); c3 = sub_8102BA4(2, 3); - payout = sub_81029D4(c1, c2, c3); - if (payout != 9) + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) { - if (payout != 0) + if (match != SLOT_MACHINE_MATCHED_1CHERRY) { - eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; - eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + eSlotMachine->payout += sSlotPayouts[match]; + eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; } sub_8103E04(3); } c1 = sub_8102BA4(0, 3); c2 = sub_8102BA4(1, 2); c3 = sub_8102BA4(2, 1); - payout = sub_81029D4(c1, c2, c3); - if (payout != 9) + match = GetMatchFromSymbolsInRow(c1, c2, c3); + if (match != SLOT_MACHINE_MATCHED_NONE) { - if (payout != 0) + if (match != SLOT_MACHINE_MATCHED_1CHERRY) { - eSlotMachine->unk0E += gUnknown_083ECE6C[payout]; - eSlotMachine->unk08 |= gUnknown_083ECE5A[payout]; + eSlotMachine->payout += sSlotPayouts[match]; + eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; } sub_8103E04(4); } } -static const u8 gUnknown_083ECE52[]; +static const u8 sSym2Match[]; -static u8 sub_81029D4(u8 c1, u8 c2, u8 c3) +static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3) { if (c1 == c2 && c1 == c3) { - return gUnknown_083ECE52[c1]; + return sSym2Match[c1]; } - if (c1 == 0 && c2 == 0 && c3 == 1) + if (c1 == SLOT_MACHINE_SYM_7_RED && c2 == SLOT_MACHINE_SYM_7_RED && c3 == SLOT_MACHINE_SYM_7_BLUE) { - return 6; + return SLOT_MACHINE_MATCHED_777_MIXED; } - if (c1 == 1 && c2 == 1 && c3 == 0) + if (c1 == SLOT_MACHINE_SYM_7_BLUE && c2 == SLOT_MACHINE_SYM_7_BLUE && c3 == SLOT_MACHINE_SYM_7_RED) { - return 6; + return SLOT_MACHINE_MATCHED_777_MIXED; } - if (c1 == 4) + if (c1 == SLOT_MACHINE_SYM_CHERRY) { - return 0; + return SLOT_MACHINE_MATCHED_1CHERRY; } - return 9; + return SLOT_MACHINE_MATCHED_NONE; } static void sub_8102A24(void) @@ -1268,7 +1268,7 @@ static bool8 sub_8102A9C(struct Task *task) if (sub_8103E38()) { task->data[0]++; - if (eSlotMachine->unk0E == 0) + if (eSlotMachine->payout == 0) { task->data[0] = 2; return TRUE; @@ -1285,7 +1285,7 @@ static bool8 sub_8102AD0(struct Task *task) { PlaySE(SE_PIN); } - eSlotMachine->unk0E--; + eSlotMachine->payout--; if (eSlotMachine->coins < 9999) { eSlotMachine->coins++; @@ -1299,14 +1299,14 @@ static bool8 sub_8102AD0(struct Task *task) if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON) { PlaySE(SE_PIN); - eSlotMachine->coins += eSlotMachine->unk0E; + eSlotMachine->coins += eSlotMachine->payout; if (eSlotMachine->coins > 9999) { eSlotMachine->coins = 9999; } - eSlotMachine->unk0E = 0; + eSlotMachine->payout = 0; } - if (eSlotMachine->unk0E == 0) + if (eSlotMachine->payout == 0) { task->data[0]++; } @@ -1399,25 +1399,25 @@ static void sub_8102DA8(void) { u8 taskId = CreateTask(sub_8102E68, 2); gTasks[taskId].data[15] = i; - eSlotMachine->unk3A[i] = taskId; + eSlotMachine->reelTasks[i] = taskId; sub_8102E68(taskId); } } static void sub_8102DEC(u8 a0) { - gTasks[eSlotMachine->unk3A[a0]].data[0] = 1; - gTasks[eSlotMachine->unk3A[a0]].data[14] = 1; + gTasks[eSlotMachine->reelTasks[a0]].data[0] = 1; + gTasks[eSlotMachine->reelTasks[a0]].data[14] = 1; } static void sub_8102E1C(u8 a0) { - gTasks[eSlotMachine->unk3A[a0]].data[0] = 2; + gTasks[eSlotMachine->reelTasks[a0]].data[0] = 2; } static bool8 sub_8102E40(u8 a0) { - return gTasks[eSlotMachine->unk3A[a0]].data[14]; + return gTasks[eSlotMachine->reelTasks[a0]].data[14]; } static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = { @@ -1816,8 +1816,6 @@ static void j5_08111E84(void) } } -#ifdef NONMATCHING // variable r6 is mistakenly plopped into r5, - // and variable i is mistakenly plopped into r6 static void sub_8103668(void) { s16 i; @@ -1845,34 +1843,34 @@ static void sub_8103668(void) return; } } - for (i = 1; i < 5; i++) + for (r6 = 1; r6 < 5; r6++) { - if (sp0 == sub_8102BF8(1, eSlotMachine->unk34[0] - i)) + if (sp0 == sub_8102BF8(1, eSlotMachine->unk34[0] - r6)) { if (eSlotMachine->unk34[0] == 1) { - if (i < 3) + if (r6 < 3) { eSlotMachine->unk34[1] = 2; - eSlotMachine->unk2E[1] = i + 1; + eSlotMachine->unk2E[1] = r6 + 1; } else { eSlotMachine->unk34[1] = 1; - eSlotMachine->unk2E[1] = i; + eSlotMachine->unk2E[1] = r6; } } else { - if (i < 3) + if (r6 < 3) { eSlotMachine->unk34[1] = 3; - eSlotMachine->unk2E[1] = i; + eSlotMachine->unk2E[1] = r6; } else { eSlotMachine->unk34[1] = 2; - eSlotMachine->unk2E[1] = i - 1; + eSlotMachine->unk2E[1] = r6 - 1; } } return; @@ -1882,141 +1880,6 @@ static void sub_8103668(void) } } } -#else -__attribute__((naked)) void sub_8103668(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tsub sp, 0x4\n" - "\tldr r4, _0810368C @ =gSharedMem\n" - "\tldrh r3, [r4, 0x34]\n" - "\tmovs r0, 0x34\n" - "\tldrsh r2, [r4, r0]\n" - "\tcmp r2, 0\n" - "\tbeq _0810375A\n" - "\tldrb r1, [r4, 0x4]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0810375A\n" - "\tcmp r2, 0x2\n" - "\tbne _081036AE\n" - "\tbl j5_08111E84\n" - "\tb _0810375A\n" - "\t.align 2, 0\n" - "_0810368C: .4byte gSharedMem\n" - "_08103690:\n" - "\tldr r0, _0810369C @ =gSharedMem\n" - "\tmovs r1, 0\n" - "\tstrh r6, [r0, 0x36]\n" - "\tstrh r1, [r0, 0x30]\n" - "\tb _0810375A\n" - "\t.align 2, 0\n" - "_0810369C: .4byte gSharedMem\n" - "_081036A0:\n" - "\tmovs r0, 0x2\n" - "\tstrh r0, [r5, 0x36]\n" - "\tadds r0, r4, 0x1\n" - "\tstrh r0, [r5, 0x30]\n" - "\tb _0810375A\n" - "_081036AA:\n" - "\tmovs r0, 0x3\n" - "\tb _08103736\n" - "_081036AE:\n" - "\tldrh r1, [r4, 0x2E]\n" - "\tsubs r1, r3, r1\n" - "\tlsls r1, 16\n" - "\tasrs r1, 16\n" - "\tmovs r0, 0\n" - "\tbl sub_8102BF8\n" - "\tmov r1, sp\n" - "\tstrb r0, [r1]\n" - "\tmov r0, sp\n" - "\tbl sub_8103520\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _0810375A\n" - "\tmovs r6, 0x2\n" - "\tmovs r1, 0x34\n" - "\tldrsh r0, [r4, r1]\n" - "\tcmp r0, 0x3\n" - "\tbne _081036D8\n" - "\tmovs r6, 0x3\n" - "_081036D8:\n" - "\tmovs r5, 0\n" - "\tmov r7, sp\n" - "_081036DC:\n" - "\tlsls r0, r6, 16\n" - "\tasrs r4, r0, 16\n" - "\tmovs r0, 0x1\n" - "\tadds r1, r4, 0\n" - "\tbl sub_8102BF8\n" - "\tldrb r1, [r7]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r1, r0\n" - "\tbeq _08103690\n" - "\tlsls r1, r5, 16\n" - "\tmovs r0, 0x80\n" - "\tlsls r0, 9\n" - "\tadds r1, r0\n" - "\tsubs r0, r4, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r6, r0, 16\n" - "\tlsrs r5, r1, 16\n" - "\tasrs r1, 16\n" - "\tcmp r1, 0x1\n" - "\tble _081036DC\n" - "\tmovs r6, 0x1\n" - "\tmov r7, sp\n" - "\tldr r5, _0810373C @ =gSharedMem\n" - "_0810370E:\n" - "\tldrh r1, [r5, 0x34]\n" - "\tlsls r0, r6, 16\n" - "\tasrs r4, r0, 16\n" - "\tsubs r1, r4\n" - "\tlsls r1, 16\n" - "\tasrs r1, 16\n" - "\tmovs r0, 0x1\n" - "\tbl sub_8102BF8\n" - "\tldrb r1, [r7]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r1, r0\n" - "\tbne _0810374E\n" - "\tmovs r1, 0x34\n" - "\tldrsh r0, [r5, r1]\n" - "\tcmp r0, 0x1\n" - "\tbne _08103740\n" - "\tcmp r4, 0x2\n" - "\tble _081036A0\n" - "_08103736:\n" - "\tstrh r0, [r5, 0x36]\n" - "\tstrh r6, [r5, 0x30]\n" - "\tb _0810375A\n" - "\t.align 2, 0\n" - "_0810373C: .4byte gSharedMem\n" - "_08103740:\n" - "\tcmp r4, 0x2\n" - "\tble _081036AA\n" - "\tmovs r0, 0x2\n" - "\tstrh r0, [r5, 0x36]\n" - "\tsubs r0, r4, 0x1\n" - "\tstrh r0, [r5, 0x30]\n" - "\tb _0810375A\n" - "_0810374E:\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r6, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, 0x4\n" - "\tble _0810370E\n" - "_0810375A:\n" - "\tadd sp, 0x4\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif // NONMATCHING static bool8 sub_8103764(u8 a0, u8 a1) { @@ -2872,7 +2735,7 @@ static void sub_81049F8(struct Task *task) DestroyTask(FindTaskIdByFunc(sub_810434C)); } -static const u16 gReelTimeWindowTilemap[]; +static const u16 sReelTimeWindowTilemap[]; static void sub_8104A40(s16 a0, s16 a1) { @@ -2880,7 +2743,7 @@ static void sub_8104A40(s16 a0, s16 a1) for (i = 4; i < 15; i++) { - u16 tile = gReelTimeWindowTilemap[a1 + (i - 4) * 20]; + u16 tile = sReelTimeWindowTilemap[a1 + (i - 4) * 20]; ((u16 *)BG_SCREEN_ADDR(28))[32 * i + a0] = tile; } } @@ -2997,7 +2860,7 @@ static void sub_8104CAC(u8 arg0) { sub_8104DA4(); - task = &gTasks[eSlotMachine->unk3D]; + task = gTasks + eSlotMachine->unk3D; task->data[1] = arg0; for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++) @@ -3139,7 +3002,7 @@ static void sub_810506C(struct Sprite *sprite) { u16 tag = eSlotMachine->coins; if (sprite->data[0]) - tag = eSlotMachine->unk0E; + tag = eSlotMachine->payout; if (sprite->data[3] != tag) { sprite->data[3] = tag; @@ -3561,9 +3424,9 @@ static void sub_8105B88(u8 spriteId) static const s16 gUnknown_083ECE7E[][2]; static const SpriteCallback gUnknown_083ECF0C[]; -u8 sub_8105BB4(u8 a0, u8 a1, s16 a2) +u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2) { - return sub_8105BF8(a0, gUnknown_083ECF0C[a1], gUnknown_083ECE7E[a1][0], gUnknown_083ECE7E[a1][1], a2); + return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2); } static const struct SpriteTemplate *const gUnknown_083EDB5C[]; @@ -4004,16 +3867,16 @@ static void sub_810639C(void) eSlotMachine->winOut = 0x3f; } -static const u8 gUnknown_083EDE8C[]; -static const struct SpriteSheet gUnknown_083EDC2C[]; +static const u8 sReelTimeGfx[]; +static const struct SpriteSheet sSlotMachineSpriteSheets[]; static const struct SpritePalette gSlotMachineSpritePalettes[]; static void sub_81063C0(void) { sub_8106404(); - LZDecompressWram(gSlotMachineReelTimeLights_Gfx, ewram10000); - LZDecompressWram(gUnknown_083EDE8C, ewram13200); - LoadSpriteSheets(gUnknown_083EDC2C); + LZDecompressWram(gSlotMachineReelTimeLights_Gfx, eSlotMachineGfxBuffer); + LZDecompressWram(sReelTimeGfx, eSlotMachineReelTimeGfxBuffer); + LoadSpriteSheets(sSlotMachineSpriteSheets); LoadSpritePalettes(gSlotMachineSpritePalettes); } @@ -4022,7 +3885,7 @@ static const struct SpriteSheet gUnknown_083EDCDC; static void sub_8106404(void) { - u8 *dest = ewram10000; + u8 *dest = eSlotMachineGfxBuffer; u8 i = 0; const struct SpriteSheet *sheet = &gUnknown_083EDCDC; const u8 *src = gUnknown_083EDCE4; @@ -4041,9 +3904,9 @@ static void sub_8106448(void) { u32 offsetRead, offsetWrite; u32 size; - LZDecompressWram(gSlotMachine_Gfx, ewram10000_2); + LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer); - offsetRead = (u32)ewram10000_2; + offsetRead = (u32)eSlotMachineGfxBuffer; offsetWrite = BG_VRAM; size = SLOTMACHINE_GFX_TILES * 32; while (TRUE) @@ -4205,15 +4068,21 @@ static const u16 gUnknown_083ECE48[] = { 0x10, 0x08, 0x04, 0x02, 0x01 }; -static const u8 gUnknown_083ECE52[] = { - 7, 8, 4, 3, 0, 5, 2 +static const u8 sSym2Match[] = { + SLOT_MACHINE_MATCHED_777_RED, + SLOT_MACHINE_MATCHED_777_BLUE, + SLOT_MACHINE_MATCHED_AZURILL, + SLOT_MACHINE_MATCHED_LOTAD, + SLOT_MACHINE_MATCHED_1CHERRY, + SLOT_MACHINE_MATCHED_POWER, + SLOT_MACHINE_MATCHED_REPLAY }; -static const u16 gUnknown_083ECE5A[] = { +static const u16 sSlotMatchFlags[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100 }; -static const u16 gUnknown_083ECE6C[] = { +static const u16 sSlotPayouts[] = { 2, 4, 0, 6, 12, 3, 90, 300, 300 }; @@ -4508,23 +4377,23 @@ static const struct OamData gOamData_83ED0B8 = { }; static const struct SpriteFrameImage gSpriteImageTable_83ED0C0[] = { - {ewram13200 + 0x0000, 0x800}, - {ewram13200 + 0x0800, 0x800}, - {ewram13200 + 0x1000, 0x800}, - {ewram13200 + 0x1800, 0x800}, - {ewram13200 + 0x2000, 0x800} + {eSlotMachineReelTimeGfxBuffer + 0x0000, 0x800}, + {eSlotMachineReelTimeGfxBuffer + 0x0800, 0x800}, + {eSlotMachineReelTimeGfxBuffer + 0x1000, 0x800}, + {eSlotMachineReelTimeGfxBuffer + 0x1800, 0x800}, + {eSlotMachineReelTimeGfxBuffer + 0x2000, 0x800} }; static const struct SpriteFrameImage gSpriteImageTable_83ED0E8[] = { - {ewram13200 + 0x2800, 0x300} + {eSlotMachineReelTimeGfxBuffer + 0x2800, 0x300} }; static const struct SpriteFrameImage gSpriteImageTable_83ED0F0[] = { - {ewram13200 + 0x2B00, 0x500} + {eSlotMachineReelTimeGfxBuffer + 0x2B00, 0x500} }; static const struct SpriteFrameImage gSpriteImageTable_83ED0F8[] = { - {ewram13200 + 0x3000, 0x600} + {eSlotMachineReelTimeGfxBuffer + 0x3000, 0x600} }; static const struct SpriteFrameImage gSpriteImageTable_83ED100[] = { @@ -4567,67 +4436,67 @@ static const struct SpriteFrameImage gSpriteImageTable_83ED170[] = { }; static const struct SpriteFrameImage gSpriteImageTable_83ED178[] = { - {ewram10000 + 0x0000, 0x600} + {eSlotMachineGfxBuffer + 0x0000, 0x600} }; static const struct SpriteFrameImage gSpriteImageTable_83ED180[] = { - {ewram10000 + 0x0600, 0x200} + {eSlotMachineGfxBuffer + 0x0600, 0x200} }; static const struct SpriteFrameImage gSpriteImageTable_83ED188[] = { - {ewram10000 + 0x0800, 0x200} + {eSlotMachineGfxBuffer + 0x0800, 0x200} }; static const struct SpriteFrameImage gSpriteImageTable_83ED190[] = { - {ewram10000 + 0x0A00, 0x200} + {eSlotMachineGfxBuffer + 0x0A00, 0x200} }; static const struct SpriteFrameImage gSpriteImageTable_83ED198[] = { - {ewram10000 + 0x0C00, 0x300} + {eSlotMachineGfxBuffer + 0x0C00, 0x300} }; static const struct SpriteFrameImage gSpriteImageTable_83ED1A0[] = { - {ewram10000 + 0x1000, 0x400} + {eSlotMachineGfxBuffer + 0x1000, 0x400} }; static const struct SpriteFrameImage gSpriteImageTable_83ED1A8[] = { - {ewram10000 + 0x1400, 0x200} + {eSlotMachineGfxBuffer + 0x1400, 0x200} }; static const struct SpriteFrameImage gSpriteImageTable_83ED1B0[] = { - {ewram10000 + 0x1600, 0x300} + {eSlotMachineGfxBuffer + 0x1600, 0x300} }; static const struct SpriteFrameImage gSpriteImageTable_83ED1B8[] = { - {ewram10000 + 0x1900, 0x300} + {eSlotMachineGfxBuffer + 0x1900, 0x300} }; static const struct SpriteFrameImage gSpriteImageTable_83ED1C0[] = { - {ewram10000 + 0x1C00, 0x200}, - {ewram10000 + 0x1E00, 0x200}, - {ewram10000 + 0x1E00, 0x200} // is this a typo? + {eSlotMachineGfxBuffer + 0x1C00, 0x200}, + {eSlotMachineGfxBuffer + 0x1E00, 0x200}, + {eSlotMachineGfxBuffer + 0x1E00, 0x200} // is this a typo? }; static const struct SpriteFrameImage gSpriteImageTable_83ED1D8[] = { - {ewram10000 + 0x2000, 0x280} + {eSlotMachineGfxBuffer + 0x2000, 0x280} }; static const struct SpriteFrameImage gSpriteImageTable_83ED1E0[] = { - {ewram10000 + 0x2280, 0x80}, - {ewram10000 + 0x2300, 0x80}, - {ewram10000 + 0x2380, 0x80}, - {ewram10000 + 0x2400, 0x80}, - {ewram10000 + 0x2480, 0x80} + {eSlotMachineGfxBuffer + 0x2280, 0x80}, + {eSlotMachineGfxBuffer + 0x2300, 0x80}, + {eSlotMachineGfxBuffer + 0x2380, 0x80}, + {eSlotMachineGfxBuffer + 0x2400, 0x80}, + {eSlotMachineGfxBuffer + 0x2480, 0x80} }; static const struct SpriteFrameImage gSpriteImageTable_83ED208[] = { - {ewram10000 + 0x2600, 0x480}, - {ewram10000 + 0x2A80, 0x480} + {eSlotMachineGfxBuffer + 0x2600, 0x480}, + {eSlotMachineGfxBuffer + 0x2A80, 0x480} }; static const struct SpriteFrameImage gSpriteImageTable_83ED218[] = { - {ewram10000 + 0x2F00, 0x180}, - {ewram10000 + 0x3080, 0x180} + {eSlotMachineGfxBuffer + 0x2F00, 0x180}, + {eSlotMachineGfxBuffer + 0x3080, 0x180} }; static const struct SpriteFrameImage gSpriteImageTable_83ED228[] = { @@ -5358,7 +5227,7 @@ static const struct SubspriteTable *const gUnknown_083EDBC4[] = { NULL }; -static const struct SpriteSheet gUnknown_083EDC2C[] = { +static const struct SpriteSheet sSlotMachineSpriteSheets[] = { {gSlotMachineReelSymbol1Tiles, 0x200, 0}, {gSlotMachineReelSymbol2Tiles, 0x200, 1}, {gSlotMachineReelSymbol3Tiles, 0x200, 2}, @@ -5376,15 +5245,15 @@ static const struct SpriteSheet gUnknown_083EDC2C[] = { {gSlotMachineNumber7Tiles, 0x40, 14}, {gSlotMachineNumber8Tiles, 0x40, 15}, {gSlotMachineNumber9Tiles, 0x40, 16}, - {ewram10000 + 0x0A00, 0x200, 18}, - {ewram10000 + 0x1400, 0x200, 19}, - {ewram10000 + 0x1600, 0x300, 20}, - {ewram10000 + 0x1900, 0x300, 21}, + {eSlotMachineGfxBuffer + 0x0A00, 0x200, 18}, + {eSlotMachineGfxBuffer + 0x1400, 0x200, 19}, + {eSlotMachineGfxBuffer + 0x1600, 0x300, 20}, + {eSlotMachineGfxBuffer + 0x1900, 0x300, 21}, {} }; static const struct SpriteSheet gUnknown_083EDCDC = { - ewram10000 + 0x0000, 0x800, 17 + eSlotMachineGfxBuffer + 0x0000, 0x800, 17 }; static const u8 *const gUnknown_083EDCE4 = gUnknownPalette_08E997E8; @@ -5467,6 +5336,6 @@ static const struct SpritePalette gSlotMachineSpritePalettes[] = { {} }; -static const u8 gUnknown_083EDE8C[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); +static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); -static const u16 gReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin"); +static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin"); -- cgit v1.2.3 From 59c99b2d65af9ea1d53d457c71dc7f0915d815c5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jan 2018 17:35:13 -0500 Subject: some renaming --- src/field/slot_machine.c | 236 ++++++++++++++++++++++++++++++----------------- 1 file changed, 150 insertions(+), 86 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 7691f4fa9..b1273ce7c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -93,7 +93,7 @@ static bool8 sub_8102A44(void); static bool8 sub_8102A9C(struct Task *task); static bool8 sub_8102AD0(struct Task *task); static bool8 sub_8102B80(struct Task *task); -static u8 sub_8102BA4(u8 x, s16 y); +static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y); static void sub_8102DA8(void); static void sub_8102DEC(u8 a0); static void sub_8102E1C(u8 a0); @@ -392,8 +392,8 @@ static void SlotMachineSetup_0_1(void) for (i = 0; i < 3; i++) { eSlotMachine->unk22[i] = 0; - eSlotMachine->unk28[i] = gUnknown_083ECCF8[i][eSlotMachine->unk03] % 21; - eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->unk28[i] * 24; + eSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][eSlotMachine->unk03] % 21; + eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24; eSlotMachine->unk1C[i] %= 0x1f8; } } @@ -1137,9 +1137,9 @@ static void CheckMatch_CenterRow(void) { u8 c1, c2, c3, match; - c1 = sub_8102BA4(0, 2); - c2 = sub_8102BA4(1, 2); - c3 = sub_8102BA4(2, 2); + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { @@ -1153,9 +1153,9 @@ static void CheckMatch_TopAndBottom(void) { u8 c1, c2, c3, match; - c1 = sub_8102BA4(0, 1); - c2 = sub_8102BA4(1, 1); - c3 = sub_8102BA4(2, 1); + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { @@ -1167,9 +1167,9 @@ static void CheckMatch_TopAndBottom(void) eSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; sub_8103E04(1); } - c1 = sub_8102BA4(0, 3); - c2 = sub_8102BA4(1, 3); - c3 = sub_8102BA4(2, 3); + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { @@ -1187,9 +1187,9 @@ static void CheckMatch_Diagonals(void) { u8 c1, c2, c3, match; - c1 = sub_8102BA4(0, 1); - c2 = sub_8102BA4(1, 2); - c3 = sub_8102BA4(2, 3); + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { @@ -1200,9 +1200,9 @@ static void CheckMatch_Diagonals(void) } sub_8103E04(3); } - c1 = sub_8102BA4(0, 3); - c2 = sub_8102BA4(1, 2); - c3 = sub_8102BA4(2, 1); + c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3); + c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); + c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { @@ -1223,15 +1223,15 @@ static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3) { return sSym2Match[c1]; } - if (c1 == SLOT_MACHINE_SYM_7_RED && c2 == SLOT_MACHINE_SYM_7_RED && c3 == SLOT_MACHINE_SYM_7_BLUE) + if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE) { return SLOT_MACHINE_MATCHED_777_MIXED; } - if (c1 == SLOT_MACHINE_SYM_7_BLUE && c2 == SLOT_MACHINE_SYM_7_BLUE && c3 == SLOT_MACHINE_SYM_7_RED) + if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED) { return SLOT_MACHINE_MATCHED_777_MIXED; } - if (c1 == SLOT_MACHINE_SYM_CHERRY) + if (c1 == SLOT_MACHINE_TAG_CHERRY) { return SLOT_MACHINE_MATCHED_1CHERRY; } @@ -1322,24 +1322,24 @@ static bool8 sub_8102B80(struct Task *task) return FALSE; } -static const u8 gUnknown_083ECCB2[][21]; +static const u8 sReelSymbols[][21]; -static u8 sub_8102BA4(u8 x, s16 y) +static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y) { - s16 offset = (eSlotMachine->unk28[x] + y) % 21; + s16 offset = (eSlotMachine->reelPositions[x] + y) % 21; if (offset < 0) { offset += 21; } - return gUnknown_083ECCB2[x][offset]; + return sReelSymbols[x][offset]; } -static u8 sub_8102BF8(u8 x, s16 y) +static u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y) { s16 r6 = 0; if ((eSlotMachine->unk1C[x]) % 24) r6 = -1; - return sub_8102BA4(x, y + r6); + return GetTagOfReelSymbolOnScreenAtPos(x, y + r6); } static const u8 gUnknown_083ECCF1[]; @@ -1356,7 +1356,7 @@ static void sub_8102C84(u8 a0, s16 a1) { eSlotMachine->unk1C[a0] += a1; eSlotMachine->unk1C[a0] %= 504; - eSlotMachine->unk28[a0] = 21 - eSlotMachine->unk1C[a0] / 24; + eSlotMachine->reelPositions[a0] = 21 - eSlotMachine->unk1C[a0] / 24; } static s16 sub_8102CCC(u8 a0, s16 a1) @@ -1528,20 +1528,20 @@ static bool8 sub_810305C(void) return gUnknown_083ECB64[eSlotMachine->bet - 1](r5, r3); } -static bool8 sub_81030A4(s16 a0, u8 a1, u8 a2) +static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2) { - u8 r1 = sub_8102BF8(0, a0); - if (r1 == a1 || r1 == a2) + u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y); + if (tag == tag1 || tag == tag2) { - eSlotMachine->unk07 = r1; + eSlotMachine->unk07 = tag; return TRUE; } return FALSE; } -static bool8 sub_81030E0(s16 a0) +static bool8 sub_81030E0(s16 y) { - if (sub_8102BF8(0, 1 - a0) == 4 || sub_8102BF8(0, 2 - a0) == 4 || sub_8102BF8(0, 3 - a0) == 4) + if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4) { return TRUE; } @@ -1573,7 +1573,7 @@ static bool8 sub_8103154(u8 a0, u8 a1) return FALSE; } -static bool8 sub_81031B4(u8 a0, u8 a1) +static bool8 sub_81031B4(u8 tag1, u8 tag2) { s16 i; bool8 r6 = sub_8103134(); @@ -1581,7 +1581,7 @@ static bool8 sub_81031B4(u8 a0, u8 a1) { for (i = 1; i < 4; i++) { - if (sub_81030A4(i, a0, a1)) + if (sub_81030A4(i, tag1, tag2)) { eSlotMachine->unk34[0] = i; eSlotMachine->unk2E[0] = 0; @@ -1594,7 +1594,7 @@ static bool8 sub_81031B4(u8 a0, u8 a1) bool8 r7 = r6; if (r7 || !sub_81030E0(i)) { - if (sub_81030A4(1 - i, a0, a1)) + if (sub_81030A4(1 - i, tag1, tag2)) { if (i == 1 && (r7 || !sub_81030E0(3))) { @@ -1635,7 +1635,7 @@ static bool8 sub_81032E8(void) for (i = 0; i < 5; i++) { - if (sub_8102BF8(1, unk34_0 - i) == eSlotMachine->unk07) + if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == eSlotMachine->unk07) { eSlotMachine->unk34[1] = unk34_0; eSlotMachine->unk2E[1] = i; @@ -1654,7 +1654,7 @@ static bool8 sub_810333C(void) { for (i = 0; i < 5; i++) { - if (sub_8102BF8(1, 2 - i) == eSlotMachine->unk07) + if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07) { eSlotMachine->unk34[1] = 2; eSlotMachine->unk2E[1] = i; @@ -1668,7 +1668,7 @@ static bool8 sub_810333C(void) { for (i = 0; i < 5; i++) { - if (sub_8102BF8(1, 2 - i) == eSlotMachine->unk07) + if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == eSlotMachine->unk07) { eSlotMachine->unk34[1] = 2; eSlotMachine->unk2E[1] = i; @@ -1706,7 +1706,7 @@ static bool8 sub_810341C(u8 a0) for (i = 0; i < 5; i++) { - if (sub_8102BF8(2, unk34_1 - i) == a0) + if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0) { eSlotMachine->unk34[2] = unk34_1; eSlotMachine->unk2E[2] = i; @@ -1731,7 +1731,7 @@ static bool8 sub_810347C(u8 a0) } for (i = 0; i < 5; i++) { - if (sub_8102BF8(2, r8 - i) == a0) + if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0) { eSlotMachine->unk2E[2] = i; eSlotMachine->unk34[2] = r8; @@ -1778,13 +1778,13 @@ static void sub_8103564(void) { if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) { - u8 sp0 = sub_8102BF8(0, 2 - eSlotMachine->unk2E[0]); + u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]); if (sub_8103520(&sp0)) { s16 i; for (i = 0; i < 5; i++) { - if (sp0 == sub_8102BF8(1, 2 - i)) + if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i)) { eSlotMachine->unk34[1] = 2; eSlotMachine->unk2E[1] = i; @@ -1799,13 +1799,13 @@ static void j5_08111E84(void) { if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) { - u8 sp0 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); if (sub_8103520(&sp0)) { s16 i; for (i = 0; i < 5; i++) { - if (sp0 == sub_8102BF8(1, eSlotMachine->unk34[0] - i)) + if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - i)) { eSlotMachine->unk34[1] = eSlotMachine->unk34[0]; eSlotMachine->unk2E[1] = i; @@ -1819,7 +1819,7 @@ static void j5_08111E84(void) static void sub_8103668(void) { s16 i; - s16 r6; + s16 j; if (eSlotMachine->unk34[0] != 0 && eSlotMachine->unk04 & 0x80) { if (eSlotMachine->unk34[0] == 2) @@ -1828,49 +1828,49 @@ static void sub_8103668(void) } else { - u8 sp0 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); if (sub_8103520(&sp0)) { - r6 = 2; + j = 2; if (eSlotMachine->unk34[0] == 3) - r6 = 3; - for (i = 0; i < 2; i++, r6--) + j = 3; + for (i = 0; i < 2; i++, j--) { - if (sp0 == sub_8102BF8(1, r6)) + if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j)) { - eSlotMachine->unk34[1] = r6; + eSlotMachine->unk34[1] = j; eSlotMachine->unk2E[1] = 0; return; } } - for (r6 = 1; r6 < 5; r6++) + for (j = 1; j < 5; j++) { - if (sp0 == sub_8102BF8(1, eSlotMachine->unk34[0] - r6)) + if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[0] - j)) { if (eSlotMachine->unk34[0] == 1) { - if (r6 < 3) + if (j < 3) { eSlotMachine->unk34[1] = 2; - eSlotMachine->unk2E[1] = r6 + 1; + eSlotMachine->unk2E[1] = j + 1; } else { eSlotMachine->unk34[1] = 1; - eSlotMachine->unk2E[1] = r6; + eSlotMachine->unk2E[1] = j; } } else { - if (r6 < 3) + if (j < 3) { eSlotMachine->unk34[1] = 3; - eSlotMachine->unk2E[1] = r6; + eSlotMachine->unk2E[1] = j; } else { eSlotMachine->unk34[1] = 2; - eSlotMachine->unk2E[1] = r6 - 1; + eSlotMachine->unk2E[1] = j - 1; } } return; @@ -1926,14 +1926,14 @@ static void sub_810380C(void) static void sub_8103830(void) { s16 i = 0; - u8 r5 = sub_8102BF8(0, 2 - eSlotMachine->unk2E[0]); - u8 r1 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); + u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - eSlotMachine->unk2E[0]); + u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]); if (r5 == r1) { while (1) { u8 r0; - if (!(r5 == (r0 = sub_8102BF8(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0))) + if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0))) { break; } @@ -1946,7 +1946,7 @@ static void sub_8103830(void) { for (i = 0; i < 5; i++) { - if (r5 == sub_8102BF8(2, 2 - i)) + if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) { eSlotMachine->unk2E[2] = i; return; @@ -1956,7 +1956,7 @@ static void sub_8103830(void) i = 0; while (1) { - if (r5 != sub_8102BF8(2, 2 - i)) + if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) { break; } @@ -1976,13 +1976,13 @@ static void sub_8103910(void) if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] == eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80) { - r7 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); - r6 = sub_8102BF8(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); + r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); if (sub_8103764(r7, r6)) { for (i = 0; i < 5; i++) { - r4 = sub_8102BF8(2, eSlotMachine->unk34[1] - i); + r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, eSlotMachine->unk34[1] - i); if (r7 == r4) { sp0 = i; @@ -1996,9 +1996,9 @@ static void sub_8103910(void) s16 r8; for (i = 1, r8 = 0; i < 4; i++) { - r7 = sub_8102BF8(0, i - eSlotMachine->unk2E[0]); - r6 = sub_8102BF8(1, i - eSlotMachine->unk2E[1]); - r4 = sub_8102BF8(2, i - sp0); + r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - eSlotMachine->unk2E[0]); + r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - eSlotMachine->unk2E[1]); + r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0); if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(eSlotMachine->unk04 & 0x80))) { r8++; @@ -2025,8 +2025,8 @@ static void sub_8103A78(void) sub_8103910(); if (eSlotMachine->unk34[1] != 0 && eSlotMachine->unk34[0] != eSlotMachine->unk34[1] && eSlotMachine->unk04 & 0x80) { - r6 = sub_8102BF8(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); - r5 = sub_8102BF8(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); + r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, eSlotMachine->unk34[0] - eSlotMachine->unk2E[0]); + r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, eSlotMachine->unk34[1] - eSlotMachine->unk2E[1]); if (sub_8103764(r6, r5)) { r8 = 1; @@ -2034,7 +2034,7 @@ static void sub_8103A78(void) r8 = 3; for (i = 0; i < 5; i++) { - r4 = sub_8102BF8(2, r8 - (eSlotMachine->unk2E[2] + i)); + r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (eSlotMachine->unk2E[2] + i)); if (r6 == r4) { eSlotMachine->unk2E[2] += i; @@ -2045,18 +2045,18 @@ static void sub_8103A78(void) } while (1) { - r6 = sub_8102BF8(0, 1 - eSlotMachine->unk2E[0]); - r5 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); - r4 = sub_8102BF8(2, 3 - eSlotMachine->unk2E[2]); + r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - eSlotMachine->unk2E[0]); + r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]); + r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - eSlotMachine->unk2E[2]); if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80)) break; eSlotMachine->unk2E[2]++; } while (1) { - r6 = sub_8102BF8(0, 3 - eSlotMachine->unk2E[0]); - r5 = sub_8102BF8(1, 2 - eSlotMachine->unk2E[1]); - r4 = sub_8102BF8(2, 1 - eSlotMachine->unk2E[2]); + r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - eSlotMachine->unk2E[0]); + r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - eSlotMachine->unk2E[1]); + r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - eSlotMachine->unk2E[2]); if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && eSlotMachine->unk04 & 0x80)) break; eSlotMachine->unk2E[2]++; @@ -2968,7 +2968,7 @@ static void sub_8104F18(struct Sprite *sprite) sprite->data[2] = eSlotMachine->unk1C[sprite->data[0]] + sprite->data[1]; sprite->data[2] %= 120; sprite->pos1.y = eSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2]; - sprite->sheetTileStart = GetSpriteTileStartByTag(sub_8102BA4(sprite->data[0], sprite->data[2] / 24)); + sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24)); SetSpriteSheetFrameTileNum(sprite); } @@ -3982,10 +3982,74 @@ static void sub_81065DC(void) { } } -static const u8 gUnknown_083ECCB2[][21] = { - {0, 4, 2, 6, 5, 3, 1, 3, 4, 5, 6, 2, 0, 5, 3, 6, 2, 1, 5, 3, 6}, - {0, 4, 6, 3, 2, 4, 6, 5, 5, 3, 1, 3, 6, 4, 2, 3, 6, 4, 3, 6, 4}, - {0, 5, 1, 6, 3, 2, 6, 3, 5, 2, 6, 3, 2, 5, 6, 3, 2, 5, 6, 3, 4} +static const u8 sReelSymbols[][21] = { + { + SLOT_MACHINE_TAG_7_RED, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_7_BLUE, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_7_RED, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_7_BLUE, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_REPLAY + }, { + SLOT_MACHINE_TAG_7_RED, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_7_BLUE, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_CHERRY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_CHERRY + }, { + SLOT_MACHINE_TAG_7_RED, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_7_BLUE, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_AZURILL, + SLOT_MACHINE_TAG_POWER, + SLOT_MACHINE_TAG_REPLAY, + SLOT_MACHINE_TAG_LOTAD, + SLOT_MACHINE_TAG_CHERRY + } }; static const u8 gUnknown_083ECCF1[] = { -- cgit v1.2.3 From 25bf57596507492210c36cffb1dfb6b9bf626df7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jan 2018 18:03:10 -0500 Subject: propagate SLOT_MACHINE_MATCHED enums --- src/field/slot_machine.c | 56 +++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index b1273ce7c..bfad257d4 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -20,7 +20,7 @@ struct UnkStruct1 { /*0x00*/ u8 unk00; /*0x01*/ u8 unk01; - /*0x02*/ s16 unk02; + /*0x02*/ s16 pikaPower; }; #if ENGLISH @@ -372,7 +372,7 @@ static void SlotMachineSetup_0_1(void) sub_81019EC(); eSlotMachine->state = 0; - eSlotMachine->unk02 = 0; + eSlotMachine->pikaPower = 0; eSlotMachine->unk03 = Random() & 1; eSlotMachine->unk04 = 0; eSlotMachine->matchedSymbols = 0; @@ -481,7 +481,7 @@ static void sub_8101D24(u8 taskId) static bool8 sub_8101D5C(struct Task *task) { BeginNormalPaletteFade(-1, 0, 16, 0, 0); - sub_810423C(eSlotMachine->unk02); + sub_810423C(eSlotMachine->pikaPower); eSlotMachine->state++; return FALSE; } @@ -706,12 +706,12 @@ static bool8 sub_81020C8(struct Task *task) { eSlotMachine->unk10 = 0; } - if (eSlotMachine->matchedSymbols & 0x180) + if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) { PlayFanfare(BGM_ME_B_BIG); sub_8104CAC(6); } - else if (eSlotMachine->matchedSymbols & 0x40) + else if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_MIXED)) { PlayFanfare(BGM_ME_B_BIG); sub_8104CAC(5); @@ -721,24 +721,24 @@ static bool8 sub_81020C8(struct Task *task) PlayFanfare(BGM_ME_B_SMALL); sub_8104CAC(2); } - if (eSlotMachine->matchedSymbols & 0x1c0) + if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) { eSlotMachine->unk04 &= 0x3f; - if (eSlotMachine->matchedSymbols & 0x180) + if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) { eSlotMachine->unk0A = 0; eSlotMachine->unk0B = 0; eSlotMachine->unk03 = 0; - if (eSlotMachine->matchedSymbols & 0x100) + if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE)) { eSlotMachine->unk03 = 1; } } } - if (eSlotMachine->matchedSymbols & 0x20 && eSlotMachine->unk02 < 16) + if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && eSlotMachine->pikaPower < 16) { - eSlotMachine->unk02++; - sub_8104064(eSlotMachine->unk02); + eSlotMachine->pikaPower++; + sub_8104064(eSlotMachine->pikaPower); } } else @@ -767,20 +767,20 @@ static bool8 sub_81021FC(struct Task *task) if (sub_8103FA0()) { eSlotMachine->state = 19; - if (eSlotMachine->matchedSymbols & 0x180) + if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE))) { IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); } - if (eSlotMachine->matchedSymbols & 0x04) + if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { eSlotMachine->unk18 = 0; eSlotMachine->state = 9; } - if (eSlotMachine->matchedSymbols & 0x20) + if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER)) { eSlotMachine->state = 17; } - if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & 0x04) + if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { sub_8104CAC(4); eSlotMachine->state = 18; @@ -794,7 +794,7 @@ static bool8 sub_8102264(struct Task *task) if (!sub_81040C8()) { eSlotMachine->state = 19; - if (eSlotMachine->matchedSymbols & 0x04) + if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { eSlotMachine->state = 9; if (eSlotMachine->unk0A) @@ -812,7 +812,7 @@ static bool8 sub_81022A0(struct Task *task) if (sub_8104E18()) { eSlotMachine->state = 19; - if (eSlotMachine->matchedSymbols & 0x04) + if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { eSlotMachine->state = 9; } @@ -1038,9 +1038,9 @@ static u8 sub_810264C(u8 a0) { if (eSlotMachine->unk03 == 0) { - return gUnknown_083ECD46[a0][eSlotMachine->unk02]; + return gUnknown_083ECD46[a0][eSlotMachine->pikaPower]; } - return gUnknown_083ECDAC[a0][eSlotMachine->unk02]; + return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower]; } static void sub_8102680(void) @@ -2595,10 +2595,10 @@ static void sub_81046C0(struct Task *task) task->data[4] = 0xc0; StartSpriteAnimIfDifferent(gSprites + eSlotMachine->unk3F, 4); gSprites[eSlotMachine->unk3F].animCmdIndex = 0; - if (eSlotMachine->unk02) + if (eSlotMachine->pikaPower) { sub_8104098(); - eSlotMachine->unk02 = 0; + eSlotMachine->pikaPower = 0; } PlayFanfare(BGM_ME_B_SMALL); } @@ -2828,7 +2828,7 @@ static void sub_8104BFC(struct Task *task) BasicInitMenuWindow(&gWindowConfig_81E7128); sub_81064B8(); sub_8104CAC(task->data[1]); - sub_810423C(eSlotMachine->unk02); + sub_810423C(eSlotMachine->pikaPower); BeginNormalPaletteFade(-1, 0, 16, 0, 0); task->data[0]++; } @@ -2869,7 +2869,7 @@ static void sub_8104CAC(u8 arg0) { spriteId = sub_8105BB4( gUnknown_083ED048[arg0][i].unk00, gUnknown_083ED048[arg0][i].unk01, - gUnknown_083ED048[arg0][i].unk02 + gUnknown_083ED048[arg0][i].pikaPower ); task->data[4 + i] = spriteId; @@ -4143,7 +4143,15 @@ static const u8 sSym2Match[] = { }; static const u16 sSlotMatchFlags[] = { - 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x100 + 1 << SLOT_MACHINE_MATCHED_1CHERRY, + 1 << SLOT_MACHINE_MATCHED_2CHERRY, + 1 << SLOT_MACHINE_MATCHED_REPLAY, + 1 << SLOT_MACHINE_MATCHED_LOTAD, + 1 << SLOT_MACHINE_MATCHED_AZURILL, + 1 << SLOT_MACHINE_MATCHED_POWER, + 1 << SLOT_MACHINE_MATCHED_777_MIXED, + 1 << SLOT_MACHINE_MATCHED_777_RED, + 1 << SLOT_MACHINE_MATCHED_777_BLUE }; static const u16 sSlotPayouts[] = { -- cgit v1.2.3 From ed5f6107c4051c0a8056824ce0437862909b579d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jan 2018 18:08:40 -0500 Subject: piKAPOWer --- src/field/slot_machine.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index bfad257d4..a524790b4 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -20,7 +20,7 @@ struct UnkStruct1 { /*0x00*/ u8 unk00; /*0x01*/ u8 unk01; - /*0x02*/ s16 pikaPower; + /*0x02*/ s16 unk02; }; #if ENGLISH @@ -139,7 +139,7 @@ static void sub_8103F70(void); static bool8 sub_8103FA0(void); static void sub_8103FE8(u8 taskId); static void sub_8104048(void); -static void sub_8104064(u8 unused); +static void sub_8104064(u8 pikaPower); static bool8 sub_81040C8(void); static void sub_81040E8(u8 taskId); static void nullsub_68(struct Task *task); @@ -147,7 +147,7 @@ static void sub_810411C(struct Task *task); static void sub_8104144(struct Task *task); static void sub_81041AC(struct Task *task); static void sub_810421C(struct Task *task); -static void sub_810423C(u8 a0); +static void sub_810423C(u8 pikaPower); static void sub_810430C(void); static bool8 sub_810432C(void); static void sub_810434C(u8 taskId); @@ -2262,7 +2262,7 @@ static void sub_8104048(void) eSlotMachine->unk3E = CreateTask(sub_81040E8, 8); } -static void sub_8104064(u8 unused) +static void sub_8104064(u8 pikaPower) { struct Task *task = gTasks + eSlotMachine->unk3E; sub_810421C(task); @@ -2362,13 +2362,13 @@ static void sub_810421C(struct Task *task) task->data[i] = 0; } -static void sub_810423C(u8 a0) +static void sub_810423C(u8 pikaPower) { s16 i; u8 r3; s16 r2 = 3; u16 *vaddr = (u16 *)BG_SCREEN_ADDR(29); - for (i = 0; i < a0; i++, r2++) + for (i = 0; i < pikaPower; i++, r2++) { r3 = 0; if (i == 0) @@ -2386,7 +2386,7 @@ static void sub_810423C(u8 a0) r3 = 2; vaddr[r2 + 0x40] = gUnknown_083ECBC4[r3][1]; } - gTasks[eSlotMachine->unk3E].data[1] = a0; + gTasks[eSlotMachine->unk3E].data[1] = pikaPower; } static void sub_810430C(void) @@ -2869,7 +2869,7 @@ static void sub_8104CAC(u8 arg0) { spriteId = sub_8105BB4( gUnknown_083ED048[arg0][i].unk00, gUnknown_083ED048[arg0][i].unk01, - gUnknown_083ED048[arg0][i].pikaPower + gUnknown_083ED048[arg0][i].unk02 ); task->data[4 + i] = spriteId; -- cgit v1.2.3 From c6fd37b0dffe1975159699cee3ce57c9ea5716d4 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 4 Jan 2018 17:29:36 -0600 Subject: decompile sub_80E8BF4 - sub_80E95A4 --- src/easy_chat_2.c | 538 ++++++++++++++++++++++++++++++++++++++++++++++ src/field/field_map_obj.c | 4 +- 2 files changed, 540 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 0c0bc9e80..15ffa4665 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1,9 +1,17 @@ #include "global.h" +#include "constants/map_objects.h" +#include "decompress.h" #include "easy_chat.h" +#include "field_map_obj.h" #include "graphics.h" +#include "menu.h" +#include "palette.h" #include "sprite.h" +#include "strings.h" #include "trig.h" +extern void sub_809D104(); + void sub_80E8268(void); void sub_80E82BC(struct Sprite *); void sub_80E8534(void); @@ -14,6 +22,12 @@ void sub_80E8818(void); void sub_80E8860(struct Sprite *); void sub_80E8A7C(void); void sub_80E8B78(struct Sprite *); +void sub_80E8FA4(void); +void sub_80E9198(u8); +void sub_80E91D4(u8); +void sub_80E948C(void); +void sub_80E95A4(void); +void sub_80E9620(u16, u16); const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); @@ -706,3 +720,527 @@ void sub_80E8B78(struct Sprite *sprite) } } } + +// defined below +extern const struct SpriteTemplate gSpriteTemplate_83DBD48; + +void sub_80E8BF4(u8 reporter, u8 b) +{ + struct CompressedSpriteSheet gUnknown_083DBD30 = {gMenuInterviewFrame_Gfx, 2048, 0x0006}; + struct SpritePalette gUnknown_083DBD38 = {gMenuInterviewFrame_Pal, 0x0004}; + s16 x; + s16 y; + u16 gabbyTyGfxId; + u8 spriteId; + + switch (b) + { + case 2: + default: + x = 64; + y = 40; + break; + case 5: + x = 36; + y = 48; + break; + } + + switch (reporter) + { + case 0: // Gabby + default: + gabbyTyGfxId = MAP_OBJ_GFX_REPORTER_M; + break; + case 1: // Ty + gabbyTyGfxId = MAP_OBJ_GFX_REPORTER_F; + break; + } + + LoadCompressedObjectPic(&gUnknown_083DBD30); + LoadSpritePalette(&gUnknown_083DBD38); + CreateSprite(&gSpriteTemplate_83DBD48, x, y, 1); + + spriteId = AddPseudoFieldObject( + (gSaveBlock2.playerGender == MALE) ? MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL : MAP_OBJ_GFX_RIVAL_MAY_NORMAL, + SpriteCallbackDummy, x - 12, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 0; + StartSpriteAnim(&gSprites[spriteId], 3); + } + + spriteId = AddPseudoFieldObject(gabbyTyGfxId, SpriteCallbackDummy, x + 12, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 0; + StartSpriteAnim(&gSprites[spriteId], 2); + } +} + +const struct OamData gOamData_83DBD40 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct SpriteTemplate gSpriteTemplate_83DBD48 = +{ + .tileTag = 6, + .paletteTag = 4, + .oam = &gOamData_83DBD40, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct CompressedSpriteSheet gUnknown_083DBD60 = {gMenuWordGroupIndicator_Gfx, 4096, 0x0007}; + +const struct SpritePalette gUnknown_083DBD68 = {gMenuWordGroupIndicator_Pal, 0x0005}; + +const struct OamData gOamData_83DBD70 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83DBD78[] = +{ + ANIMCMD_FRAME(96, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBD80[] = +{ + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(96, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBD94[] = +{ + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(96, 4), + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBDA8[] = +{ + ANIMCMD_FRAME(64, 2), + ANIMCMD_FRAME(32, 2), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBDB4[] = +{ + ANIMCMD_FRAME(64, 2), + ANIMCMD_FRAME(0, 2), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83DBDC0[] = +{ + ANIMCMD_FRAME(64, 2), + ANIMCMD_FRAME(96, 2), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83DBDCC[] = +{ + gSpriteAnim_83DBD78, + gSpriteAnim_83DBD80, + gSpriteAnim_83DBD94, + gSpriteAnim_83DBDA8, + gSpriteAnim_83DBDB4, + gSpriteAnim_83DBDC0, +}; + +const struct SpriteTemplate gSpriteTemplate_83DBDE4 = +{ + .tileTag = 7, + .paletteTag = 5, + .oam = &gOamData_83DBD70, + .anims = gSpriteAnimTable_83DBDCC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +void sub_80E8CEC(void) +{ + u8 spriteId; + + LoadCompressedObjectPic(&gUnknown_083DBD60); + LoadSpritePalette(&gUnknown_083DBD68); + + spriteId = CreateSprite(&gSpriteTemplate_83DBDE4, 224, 88, 0); + if (spriteId != MAX_SPRITES) + gUnknown_083DB694->unk9C74 = &gSprites[spriteId]; + else + gUnknown_083DB694->unk9C74 = NULL; +} + +void sub_80E8D54(void) +{ + if (gUnknown_083DB694->unk9C74 != NULL) + { + if (gUnknown_083DB694->unk26 == 0) + StartSpriteAnim(gUnknown_083DB694->unk9C74, 1); + else + StartSpriteAnim(gUnknown_083DB694->unk9C74, 2); + } +} + +void sub_80E8D8C(u8 a) +{ + if (gUnknown_083DB694->unk9C74 != NULL) + { + if (a != 0) + { + if (gUnknown_083DB694->unk26 == 0) + StartSpriteAnim(gUnknown_083DB694->unk9C74, 3); + else + StartSpriteAnim(gUnknown_083DB694->unk9C74, 4); + } + else + { + StartSpriteAnim(gUnknown_083DB694->unk9C74, 5); + } + } +} + +extern const u16 gUnknown_083DBDFC[]; + +extern const u16 gUnknown_083DBE40[]; + +void sub_80E8DD8(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + + REG_BG0CNT = 0x8B00; + REG_BG1CNT = 0x0D09; + + CpuCopy16(gUnknown_08E945D0, gUnknown_083DB694->unk1C8, 0x500); + LZ77UnCompWram(gUnknown_08E953D0, gUnknown_083DB694->unk6C8); + LZ77UnCompVram(gMenuWordGroupFrame_Gfx, (void *)(VRAM + 0x8000)); + CpuCopy16(gUnknown_083DB694->unk1C8, (void *)(VRAM + 0x6800), 0x500); + LoadPalette(gMenuWordGroupFrame1_Pal, 64, 64); + + REG_BG2CNT = 0x0E02; + + DmaClear16(3, (void *)(VRAM + 0x7000), 0x800); + DmaCopy16Defvars(3, gUnknown_08E9AB00, (void *)(VRAM + 0x6000), 64); + LZ77UnCompVram(gUnknown_08E9AB60, (void *)(VRAM + 0x7000)); + LoadPalette(gUnknown_08E9AB40, 0, 32); + LoadPalette(gUnknown_083DBDFC, 16, 32); + + REG_BG3CNT = 0x0F0F; + + DmaClear32(3, (void *)(VRAM + 0x7800), 0x800); + LoadPalette(gUnknown_083DBE40, 32, 32); + gPlttBufferUnfaded[63] = RGB(31, 31, 31); + gPlttBufferUnfaded[49] = RGB(27, 26, 27); + gPlttBufferUnfaded[56] = RGB(28, 28, 28); + gPlttBufferFaded[63] = RGB(31, 31, 31); + gPlttBufferFaded[49] = RGB(27, 26, 27); + gPlttBufferFaded[56] = RGB(28, 28, 28); + + gUnknown_083DB694->unkBC = 0; + sub_80E8FA4(); + sub_80E948C(); + sub_80E9198(10); + sub_80E91D4(0); + sub_80E95A4(); + + REG_BLDCNT = 0; +} + +// The components are ORed in the reverse order from the normal RGB macro +#define RGB_(r, g, b) ((((b) & 0x1F) << 10) | (((g) & 0x1F) << 5) | ((r) & 0x1F)) + +#define R_VAL(color) ((color) & 0x1F) +#define G_VAL(color) (((color) >> 5) & 0x1F) +#define B_VAL(color) (((color) >> 10) & 0x1F) + +void sub_80E8FA4(void) +{ + u16 i; + u16 r3; + u16 r4; + s32 sp0[3]; + s32 spC[3]; + s32 sp18[3]; + + for (i = 0; i < 3; i++) + { + sp0[0] = R_VAL(*(gMenuWordGroupFrame2_Pal + i + 1)) << 8; + spC[0] = R_VAL(*(gMenuWordGroupFrame2_Pal + i + 4)) << 8; + sp0[1] = G_VAL(*(gMenuWordGroupFrame2_Pal + i + 1)) << 8; + spC[1] = G_VAL(*(gMenuWordGroupFrame2_Pal + i + 4)) << 8; + sp0[2] = B_VAL(*(gMenuWordGroupFrame2_Pal + i + 1)) << 8; + spC[2] = B_VAL(*(gMenuWordGroupFrame2_Pal + i + 4)) << 8; + + for (r3 = 0; r3 < 3; r3++) + sp18[r3] = (spC[r3] - sp0[r3]) / 8; + + for (r4 = 0; r4 < 8; r4++) + { + gUnknown_083DB694->unk9C34[i][r4] = RGB_(sp0[0] >> 8, sp0[1] >> 8, sp0[2] >> 8); + for (r3 = 0; r3 < 3; r3++) + sp0[r3] += sp18[r3]; + } + gUnknown_083DB694->unk9C34[i][r4] = RGB_(spC[0] >> 8, spC[1] >> 8, spC[2] >> 8); + } + gUnknown_083DB694->unk9C32 = 0; +} + +void sub_80E9108(u8 a) +{ + u16 i; + + gUnknown_083DB694->unk9C32 += a; + for (i = 0; i < 3; i++) + { + gPlttBufferUnfaded[81 + i] = gUnknown_083DB694->unk9C34[i][gUnknown_083DB694->unk9C32]; + gPlttBufferFaded[81 + i] = gUnknown_083DB694->unk9C34[i][gUnknown_083DB694->unk9C32]; + } +} + +void sub_80E9178(void) +{ + gUnknown_083DB694->unk9C32 = 0; + sub_80E9108(0); +} + +void sub_80E9198(u8 a) +{ + gUnknown_03000740 = a; +} + +u8 sub_80E91A4(void) +{ + return gUnknown_03000740; +} + +void sub_80E91B0(const u8 *a, u8 b, u8 c, u8 d) +{ + sub_8072AB0(a, b * 8, c * 8, 176, d * 8, 1); +} + +void sub_80E91D4(u8 a) +{ + BasicInitMenuWindow(&gWindowConfig_81E6DA8); + + if (a == 10) + { + MenuZeroFillWindowRect(3, 14, 26, 19); + sub_80E9198(10); + return; + } + + //_080E9200 + if (sub_80E91A4() == 10) + MenuDrawTextWindow(3, 14, 26, 19); + + //_080E9218 + sub_80E9198(a); + switch (a) + { + case 0: + sub_80E91B0(gUnknown_083DB694->unk9C80, 4, 15, 2); + sub_80E91B0(gUnknown_083DB694->unk9CC9, 4, 17, 2); + break; + case 1: + sub_80E91B0(gUnknown_083DB694->unk9D12, 4, 15, 2); + sub_80E91B0(gUnknown_083DB694->unk9D5B, 4, 17, 2); + break; + case 2: + sub_80E91B0(gOtherText_TextDeletedConfirmPage1, 4, 15, 2); + sub_80E91B0(gOtherText_TextDeletedConfirmPage2, 4, 17, 2); + break; + case 3: + switch (gUnknown_083DB694->unk8) + { + case 9: + sub_80E91B0(gOtherText_QuitGivingInfo, 4, 15, 4); + break; + case 4: + sub_80E91B0(gOtherText_StopGivingMail, 4, 15, 4); + break; + default: + sub_80E91B0(gOtherText_QuitEditing, 4, 15, 4); + break; + } + break; + case 4: + sub_80E91B0(gOtherText_EditedTextNoSavePage1, 4, 15, 2); + sub_80E91B0(gOtherText_EditedTextNoSavePage2, 4, 17, 2); + break; + case 5: + sub_80E91B0(gOtherText_EnterAPhraseOrWord, 4, 15, 4); + break; + case 6: + sub_80E91B0(gOtherText_TextNoDelete, 4, 15, 4); + break; + case 7: + sub_80E91B0(gOtherText_OnlyOnePhrase, 4, 15, 2); + sub_80E91B0(gOtherText_OriginalSongRestored, 4, 17, 2); + break; + case 8: + sub_80E91B0(gOtherText_TrendyAlready, 4, 15, 4); + break; + case 9: + sub_80E91B0(gOtherText_CombineTwoPhrases, 4, 15, 4); + break; + } +} + +void sub_80E9368(u8 a) +{ + const u8 *r4; + + switch (a) + { + case 0: + r4 = gOtherText_Profile; + break; + case 1: + r4 = gOtherText_AtBattleStart; + break; + case 2: + r4 = gOtherText_UponWinningBattle; + break; + case 3: + r4 = gOtherText_UponLosingBattle; + break; + case 6: + r4 = gOtherText_TheBardsSong; + break; + case 9: + r4 = gOtherText_WhatsHipHappening; + break; + case 5: + case 7: + case 8: + case 10: + case 11: + case 12: + r4 = gOtherText_Interview; + break; + case 13: + r4 = gOtherText_GoodSaying; + break; + default: + r4 = NULL; + break; + } + + BasicInitMenuWindow(&gWindowConfig_81E6D8C); + gUnknown_083DB694->unk9F8E[0] = EXT_CTRL_CODE_BEGIN; + gUnknown_083DB694->unk9F8E[1] = 5; + gUnknown_083DB694->unk9F8E[2] = 1; + if (r4 != NULL) + { + sub_8072C74(gUnknown_083DB694->unk9F8E + 3, r4, 240, 2); + MenuPrint(gUnknown_083DB694->unk9F8E, 0, 0); + } + else + { + u8 *str = gUnknown_083DB694->unk9F8E + 3; + + str[0] = EXT_CTRL_CODE_BEGIN; + str[1] = 0x11; + str[2] = 0x10; + str[3] = EOS; + + MenuPrint(gUnknown_083DB694->unk9F8E, 0, 0); + MenuPrint(gUnknown_083DB694->unk9F8E, 28, 0); + } + BasicInitMenuWindow(&gWindowConfig_81E6DA8); +} + +void sub_80E948C(void) +{ + switch (gUnknown_083DB694->unk9) + { + case 4: + sub_809D104((void *)(VRAM + 0x6800), 3, 3, gUnknown_08E94AD0, 0, 26, 24, 6); + break; + case 5: + sub_809D104((void *)(VRAM + 0x6800), 14, 2, gUnknown_08E94AD0, 0, 18, 13, 8); + break; + case 0: + sub_809D104((void *)(VRAM + 0x6800), 2, 2, gUnknown_08E94AD0, 0, 10, 26, 8); + break; + case 1: + sub_809D104((void *)(VRAM + 0x6800), 2, 0, gUnknown_08E94AD0, 0, 0, 26, 10); + break; + case 2: + sub_809D104((void *)(VRAM + 0x6800), 14, 3, gUnknown_08E94AD0, 13, 18, 13, 4); + break; + case 3: + sub_809D104((void *)(VRAM + 0x6800), 3, 2, gUnknown_08E94AD0, 0, 32, 24, 4); + break; + } +} + +void sub_80E95A4(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6D8C); + switch (gUnknown_083DB694->unk9) + { + case 4: + sub_80E9620(4, 6); + break; + case 5: + sub_80E9620(2, 17); + break; + case 0: + sub_80E9620(3, 5); + break; + case 1: + sub_80E9620(0, 5); + break; + case 2: + sub_80E9620(4, 17); + break; + case 3: + sub_80E9620(3, 6); + break; + } + BasicInitMenuWindow(&gWindowConfig_81E6DA8); +} diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index ba7c3d68e..77b4c8b5c 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -2440,7 +2440,7 @@ void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjT MakeObjectTemplateFromFieldObjectGraphicsInfoWithCallbackIndex(mapObjTemplate->graphicsId, mapObjTemplate->movementType, sprTemplate, subspriteTables); } -u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c, s16 d, u8 subpriority) +u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority) { struct SpriteTemplate spriteTemplate; const struct SubspriteTable *subspriteTables; @@ -2449,7 +2449,7 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c MakeObjectTemplateFromFieldObjectGraphicsInfo(graphicsId, callback, &spriteTemplate, &subspriteTables); if (spriteTemplate.paletteTag != 0xFFFF) sub_805BDF8(spriteTemplate.paletteTag); - spriteId = CreateSprite(&spriteTemplate, c, d, subpriority); + spriteId = CreateSprite(&spriteTemplate, x, y, subpriority); if (spriteId != 64 && subspriteTables != NULL) { SetSubspriteTables(&gSprites[spriteId], subspriteTables); -- cgit v1.2.3 From cbf59a23017f7bcab82d345abf268a2f67a3bfea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jan 2018 18:58:41 -0500 Subject: Link libc from agbcc --- src/libs/libc.c | 143 -------------------------------------------------------- 1 file changed, 143 deletions(-) delete mode 100644 src/libs/libc.c (limited to 'src') diff --git a/src/libs/libc.c b/src/libs/libc.c deleted file mode 100644 index 920673e3e..000000000 --- a/src/libs/libc.c +++ /dev/null @@ -1,143 +0,0 @@ -#include "global.h" -#include - -#define LBLOCKSIZE (sizeof(long)) - -// Nonzero if (long)X contains a NULL byte. -#define CONTAINSNULL(X) (((X) - 0x01010101) & ~(X) & 0x80808080) - -// Nonzero if X is not aligned on a "long" boundary. -#define UNALIGNED(X) ((long)X & (LBLOCKSIZE - 1)) - -void *memcpy(void *dst0, const void *src0, size_t len0) -{ - char *dst = dst0; - const char *src = src0; - long *aligned_dst; - const long *aligned_src; - unsigned int len = len0; - - // If the size is small, or either src or dst is unaligned, - // then go to the byte copy loop. This should be rare. - if (len >= 16 && !(UNALIGNED(src) | UNALIGNED(dst))) - { - aligned_dst = (long *)dst; - aligned_src = (long *)src; - - // Copy 4X long words at a time if possible. - while (len >= 16) - { - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - *aligned_dst++ = *aligned_src++; - len -= 16; - } - - // Copy one long word at a time if possible - while (len >= 4) - { - *aligned_dst++ = *aligned_src++; - len -= 4; - } - - dst = (char *)aligned_dst; - src = (char *)aligned_src; - } - - // Pick up any remaining bytes with a byte copier. - while (len--) - *dst++ = *src++; - - return dst0; -} - -void *memset(void *m, int c, size_t n) -{ - char *s = (char *)m; - int count, i; - unsigned long buffer; - unsigned long *aligned_addr; - unsigned char *unaligned_addr; - - // If the size is small or m is unaligned, - // then go to the byte copy loop. This should be rare. - if (n >= LBLOCKSIZE && !UNALIGNED(m)) - { - // We know that n is large and m is word-aligned. - aligned_addr = (unsigned long *)m; - - // Store C into each char sized location in buffer so that - // we can set large blocks quickly. - c &= 0xFF; - if (LBLOCKSIZE == 4) - { - buffer = (c << 8) | c; - buffer |= (buffer << 16); - } - else - { - buffer = 0; - for (i = 0; i < LBLOCKSIZE; i++) - buffer = (buffer << 8) | c; - } - - while (n >= LBLOCKSIZE * 4) - { - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - *aligned_addr++ = buffer; - n -= LBLOCKSIZE * 4; - } - while (n >= LBLOCKSIZE) - { - *aligned_addr++ = buffer; - n -= LBLOCKSIZE; - } - - s = (char *)aligned_addr; - } - - // Pick up the remainder with a bytewise loop. - while (n--) - *s++ = (char)c; - - return m; -} - -int strcmp(const char *s1, const char *s2) -{ - unsigned long *a1; - unsigned long *a2; - - // If s1 or s2 are unaligned, then skip this and compare bytes. - if (!(UNALIGNED(s1) | UNALIGNED(s2))) - { - // Compare them a word at a time. - a1 = (unsigned long *)s1; - a2 = (unsigned long *)s2; - while (*a1 == *a2) - { - // If *a1 == *a2, and we find a null in *a1, - // then the strings must be equal, so return zero. - if (CONTAINSNULL(*a1)) - return 0; - - a1++; - a2++; - } - - s1 = (char *)a1; - s2 = (char *)a2; - } - - // Check the remaining few bytes. - while (*s1 != '\0' && *s1 == *s2) - { - s1++; - s2++; - } - - return (*(unsigned char *) s1) - (*(unsigned char *) s2); -} -- cgit v1.2.3 From d7970fba2fef5fd8949eb1b2c24f0556103bda27 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 4 Jan 2018 22:26:27 -0600 Subject: decompile sub_80E9620 - sub_80EA184 --- src/easy_chat_2.c | 570 ++++++++++++++++++++++++++++++++++++++++++++++++- src/easy_chat_before.c | 4 +- 2 files changed, 569 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 15ffa4665..ea3fe3936 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -10,6 +10,7 @@ #include "strings.h" #include "trig.h" +extern void sub_8095C8C(); extern void sub_809D104(); void sub_80E8268(void); @@ -28,6 +29,27 @@ void sub_80E91D4(u8); void sub_80E948C(void); void sub_80E95A4(void); void sub_80E9620(u16, u16); +void sub_80E97C0(u16, u16); +void sub_80E9A4C(void); +void sub_80E9A60(const u8 *, u16, u16); +void sub_80E9A7C(u8 *, u16); +void sub_80E9AD4(void); +void sub_80E9C74(u16); +u8 sub_80EA1E0(void); +void sub_80EA24C(void); +void sub_80EA348(void); +void sub_80EA4A4(void); +void sub_80EA5A0(void); +void sub_80EA704(void); +void sub_80EA764(void); +void sub_80EA7F4(void); +void sub_80EA8BC(void); +void sub_80EA948(void); +void sub_80EAA44(void); +void sub_80EAAD4(void); +u8 *sub_80EAD64(); +u8 *sub_80EB218(u8 *, u16, u16); +u16 sub_80EB2D4(u16); const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); @@ -936,9 +958,28 @@ void sub_80E8D8C(u8 a) } } -extern const u16 gUnknown_083DBDFC[]; +const u16 gUnknown_083DBDFC[] = INCBIN_U16("graphics/unknown/unknown_3DBDFC.gbapal"); -extern const u16 gUnknown_083DBE40[]; +const u16 gUnknown_083DBE1C[] = +{ + 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, 0x300, + 0x301, 0x301, 0x301, 0x301, 0x301, 0x300, 0x300, 0x300, 0x300, +}; + +const u16 gUnknown_083DBE40[] = INCBIN_U16("graphics/unknown/unknown_3DBE40.gbapal"); + +// unused tilemap? +const u16 gUnused_083DBE60[] = +{ + 0x5036, 0x5037, 0x5038, 0x5039, 0x503A, 0x503B, + 0x5046, 0x5047, 0x5048, 0x5049, 0x504A, 0x504B, + 0x5056, 0x5057, 0x5058, 0x5059, 0x505A, 0x505B, + 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, + 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, + 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, +}; + +const u8 gUnknown_083DBEA8[] = _("{CLEAR_TO 88}"); void sub_80E8DD8(void) { @@ -1028,7 +1069,7 @@ void sub_80E8FA4(void) gUnknown_083DB694->unk9C32 = 0; } -void sub_80E9108(u8 a) +void sub_80E9108(s8 a) { u16 i; @@ -1244,3 +1285,526 @@ void sub_80E95A4(void) } BasicInitMenuWindow(&gWindowConfig_81E6DA8); } + +void sub_80E9620(u16 a, u16 b) +{ + u16 i; + u16 j; + u16 r10 = 0; + u16 r7 = a; + + for (i = 0; i < gUnknown_083DB694->unk84; i++) + { + u16 r6 = b; + + for (j = 0; j < gUnknown_083DB694->unk83; j++) + { + if (r10 >= gUnknown_083DB694->unkA) + { + MenuPrint(gUnknown_083DBEA8, r6, r7); + break; + } + if (gUnknown_083DB694->unkC[r10] == 0xFFFF) + { + sub_8095C8C((void *)(VRAM + 0x7000), r6, r7, gUnknown_083DBE1C, 0, 0, 9, 2, 9); + r6 += 11; + } + else + { + sub_80EB218(gUnknown_083DB694->unk9E14, gUnknown_083DB694->unkC[r10], 11); + MenuPrint(gUnknown_083DB694->unk9E14, r6, r7); + r6 += gUnknown_083DB694->unk8C[i][j] + 11; + } + r10++; + } + r7 += 2; + } +} + +void sub_80E9744(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6D8C); + switch (gUnknown_083DB694->unk9) + { + case 4: + sub_80E97C0(4, 6); + break; + case 5: + sub_80E97C0(2, 17); + break; + case 0: + sub_80E97C0(3, 5); + break; + case 1: + sub_80E97C0(0, 5); + break; + case 2: + sub_80E97C0(4, 17); + break; + case 3: + sub_80E97C0(3, 6); + break; + } + BasicInitMenuWindow(&gWindowConfig_81E6DA8); +} + +void sub_80E97C0(u16 a, u16 b) +{ + u8 i; + u8 r7 = 0; + + asm("":::"r9"); + + for (i = 0; i < gUnknown_083DB694->unk84; i++) + { + u8 r6; + u8 *r2 = gUnknown_083DB694->unk9E6E; + u32 r1; + + for (r6 = 0; r6 < gUnknown_083DB694->unk83; r6++) + { + if (r7 >= gUnknown_083DB694->unkA) + break; + if (gUnknown_083DB694->unkC[r7] != 0xFFFF) + { + r2 = sub_80EB218(r2, gUnknown_083DB694->unkC[r7], 0); + *r2++ = CHAR_SPACE; + } + r7++; + } + + r1 = gUnknown_083DB694->unk83 * 11; + r2[0] = EXT_CTRL_CODE_BEGIN; + r2[1] = 0x13; + r2[2] = r1 * 8; + r2[3] = EOS; + + MenuPrint(gUnknown_083DB694->unk9E6E, b, a); + + a += 2; + } +} + +void sub_80E98C4(void) +{ + u8 r1; + u8 r3; + + BasicInitMenuWindow(&gWindowConfig_81E6D8C); + switch (gUnknown_083DB694->unk9) + { + case 4: + r1 = 4; + r3 = 2; + break; + case 5: + r1 = 3; + r3 = 2; + break; + case 0: + r1 = 3; + r3 = 2; + break; + case 1: + r1 = 1; + r3 = 3; + break; + case 2: + r1 = 4; + r3 = 1; + break; + case 3: + r1 = 3; + r3 = 1; + break; + default: + return; + } + MenuFillWindowRectWithBlankTile(2, r1, 27, r3 * 2 + r1 - 1); + BasicInitMenuWindow(&gWindowConfig_81E6DA8); +} + +void sub_80E9940(u8 *a, u8 b) +{ + u8 r4 = (b & 7); + + MenuFillWindowRectWithBlankTile(2, r4 * 2, 31, r4 * 2 + 1); + sub_80E9A7C(a, b); + sub_80E9A60(a, 2, r4 * 2); +} + +extern const u8 gUnknown_083DBEAC[][32]; + +void sub_80E9974(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6D54); + if (gUnknown_083DB694->unk26 == 0) + { + u16 i; + + for (i = gUnknown_083DB694->unk1B5; i < gUnknown_083DB694->unk1B5 + 4; i++) + sub_80E9940(gUnknown_083DB694->unk9DC9, i); + } + else + { + sub_80E9AD4(); + sub_80E9A60(gUnknown_083DBEAC[0], 2, 0); + sub_80E9A60(gUnknown_083DBEAC[1], 2, 2); + sub_80E9A60(gUnknown_083DBEAC[2], 2, 4); + sub_80E9A60(gUnknown_083DBEAC[3], 2, 6); + } +} + +void sub_80E9A14(void) +{ + sub_80E9A4C(); + if (gUnknown_083DB694->unk26 == 0) + gUnknown_083DB694->unk1BA += gUnknown_083DB694->unk1B5 * 16; +} + +void sub_80E9A4C(void) +{ + gUnknown_083DB694->unk1BA = 0; +} + +void sub_80E9A60(const u8 *a, u16 b, u16 c) +{ + c &= 0xF; + MenuPrint(a, b, c); +} + +void sub_80E9A7C(u8 *a, u16 b) +{ + u16 i; + u16 r5 = b * 2; + + for (i = 0; i < 2; i++) + { + a[0] = EXT_CTRL_CODE_BEGIN; + a[1] = 0x12; + a[2] = 88 * i; + a += 3; + + a = sub_80EAD64(a, gUnknown_083DB694->unk2A[b][i], 11); + r5++; + if (r5 >= gUnknown_083DB694->unk28) + break; + } +} + +void sub_80E9AD4(void) +{ + u16 i; + + BasicInitMenuWindow(&gWindowConfig_81E6D54); + for (i = 0; i < 16; i++) + sub_80E9C74(i); +} + +void sub_80E9AF8(u16 a) +{ + u8 *r8; + u16 i; + + sub_80E9C74(a); + + r8 = gUnknown_083DB694->unk9E14; + r8[0] = EXT_CTRL_CODE_BEGIN; + r8[1] = 0x11; + r8[2] = 0x10; + r8 += 3; + + if (gUnknown_083DB694->unk7D != 0) + { + for (i = 0; i < gUnknown_083DB694->unk99A6[a]; i++) + { + if (sub_80EB2D4(gUnknown_083DB694->unk9A2A[a][i]) == 7) + BasicInitMenuWindow(&gWindowConfig_81E6D70); + else + BasicInitMenuWindow(&gWindowConfig_81E6D54); + sub_80EB218(r8, gUnknown_083DB694->unk9A2A[a][i], 9); + sub_80E9A60(gUnknown_083DB694->unk9E14, i * 11 + 4, a * 2); + } + } + else + { + BasicInitMenuWindow(&gWindowConfig_81E6D54); + for (i = 0; i < gUnknown_083DB694->unk99A6[a]; i++) + { + sub_80EB218(r8, gUnknown_083DB694->unk9A2A[a][i], 9); + sub_80E9A60(gUnknown_083DB694->unk9E14, i * 11 + 4, a * 2); + } + } +} + +void sub_80E9C74(u16 a) +{ + a &= 7; + MenuFillWindowRectWithBlankTile(0, a * 2, 29, a * 2 + 1); +} + +void sub_80E9C94(void) +{ + u16 r5 = min(gUnknown_083DB694->unk9A28, 4); + u16 i; + + for (i = 0; i < r5; i++) + sub_80E9AF8(gUnknown_083DB694->unk9A29 + i); + while (i < 4) + sub_80E9C74(i++); +} + +void sub_80E9D00(void) +{ + u16 r4; + u16 r5; + + if (gUnknown_083DB694->unk1C0 > 0) + { + r4 = gUnknown_083DB694->unk1C0; + r5 = gUnknown_083DB694->unk9A29 + 4; + } + else + { + r4 = -gUnknown_083DB694->unk1C0; + r5 = gUnknown_083DB694->unk9A29 - r4; + } + while (--r4 != 0xFFFF) + sub_80E9AF8(r5++); +} + +void sub_80E9D7C(void) +{ + u16 r6; + u16 r4; + u16 i; + + BasicInitMenuWindow(&gWindowConfig_81E6D54); + if (gUnknown_083DB694->unk1C0 < 0) + { + r6 = -gUnknown_083DB694->unk1C0; + r4 = gUnknown_083DB694->unk1B5 - r6; + } + else + { + r6 = gUnknown_083DB694->unk1C0; + r4 = gUnknown_083DB694->unk1B5 + 4; + } + for (i = 0; i < r6; i++) + { + sub_80E9940(gUnknown_083DB694->unk9DC9, r4); + r4++; + } +} + +void sub_80E9E08(u8 a) +{ + gUnknown_083DB694->unk1BC = (gUnknown_083DB694->unk1BA + gUnknown_083DB694->unk1C0 * 16) & 0x7F; + gUnknown_083DB694->unk1BF = (gUnknown_083DB694->unk1C0 < 0) ? -a : a; +} + +bool8 sub_80E9E54(void) +{ + gUnknown_083DB694->unk1BA = (gUnknown_083DB694->unk1BA + gUnknown_083DB694->unk1BF) & 0x7F; + return (gUnknown_083DB694->unk1BA == gUnknown_083DB694->unk1BC); +} + +void nullsub_23(void) +{ +} + +void sub_80E9E98(void) +{ + gUnknown_083DB694->unkBE = 0; +} + +bool8 sub_80E9EA8(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + sub_80EA24C(); + gUnknown_083DB694->unkBE++; + // fall through + case 1: + if (sub_80EA1E0() != 0) + { + sub_80EA4A4(); + gUnknown_083DB694->unkBE++; + } + break; + case 2: + if (sub_80EA1E0() != 0) + { + sub_80EA704(); + gUnknown_083DB694->unkBE++; + } + break; + case 3: + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 4: + gUnknown_083DB694->unkBE++; + break; + case 5: + return TRUE; + } + return FALSE; +} + +bool8 sub_80E9F50(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + nullsub_23(); + sub_80EA764(); + gUnknown_083DB694->unkBE++; + // fall through + case 1: + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 2: + sub_80EA5A0(); + gUnknown_083DB694->unkBE++; + // fall through + case 3: + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 4: + sub_80EA348(); + gUnknown_083DB694->unkBE++; + // fall through + case 5: + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 6: + return TRUE; + } + return FALSE; +} + +bool8 sub_80E9FD4(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + nullsub_23(); + sub_80EA5A0(); + gUnknown_083DB694->unkBE++; + // fall through + case 1: + if (sub_80EA1E0() != 0) + return TRUE; + break; + } + return FALSE; +} + +bool8 sub_80EA014(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + sub_80EA4A4(); + gUnknown_083DB694->unkBE++; + // fall through + case 1: + if (sub_80EA1E0() != 0) + return TRUE; + break; + } + return FALSE; +} + +bool8 sub_80EA050(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + nullsub_23(); + sub_80EA764(); + gUnknown_083DB694->unkBE++; + break; + case 1: + if (sub_80EA1E0() != 0) + { + sub_80EA7F4(); + gUnknown_083DB694->unkBE++; + } + break; + case 2: + sub_80E9108(1); + if (sub_80EA1E0() != 0) + { + sub_80EA8BC(); + gUnknown_083DB694->unkBE++; + } + break; + case 3: + sub_80E9108(1); + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 4: + return TRUE; + } + return FALSE; +} + +bool8 sub_80EA0E4(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + sub_80EA948(); + gUnknown_083DB694->unkBE++; + // fall through + case 1: + sub_80E9108(-1); + if (sub_80EA1E0() != 0) + { + sub_80EAA44(); + gUnknown_083DB694->unkBE++; + } + break; + case 2: + sub_80E9108(-1); + if (sub_80EA1E0() != 0) + { + sub_80EA704(); + gUnknown_083DB694->unkBE++; + } + break; + case 3: + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 4: + return TRUE; + } + return FALSE; +} + +bool8 sub_80EA184(void) +{ + switch (gUnknown_083DB694->unkBE) + { + case 0: + sub_80EAAD4(); + gUnknown_083DB694->unkBE++; + // fall through + case 1: + if (sub_80EA1E0() != 0) + gUnknown_083DB694->unkBE++; + break; + case 2: + sub_80E9178(); + return TRUE; + } + return FALSE; +} diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c index 5d606ef10..59e463260 100644 --- a/src/easy_chat_before.c +++ b/src/easy_chat_before.c @@ -180,7 +180,7 @@ void sub_80E9C94(void); void sub_80E9D00(void); void sub_80E9D7C(void); void sub_80E9E08(); -u8 sub_80E9E54(void); +bool8 sub_80E9E54(void); void sub_80E9E98(void); u8 sub_80E9EA8(void); u8 sub_80E9F50(void); @@ -1202,7 +1202,7 @@ void sub_80E7458(void) shared1000.unk24++; break; case 1: - if (sub_80E9E54() != 0) + if (sub_80E9E54()) { if (shared1000.unk1C4 == sub_80E6FC8) { -- cgit v1.2.3 From 501482beadd05c5ade13f6919c3c2cd42c86952d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 4 Jan 2018 23:18:53 -0600 Subject: fix German build --- src/easy_chat_2.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index ea3fe3936..363cc49fa 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -422,7 +422,11 @@ void sub_80E85F8(struct Sprite *sprite) sprite->pos1.y = (gUnknown_083DB694->unk1A8 - gUnknown_083DB694->unk1B5) * 16 + 96; break; case 1: +#if ENGLISH sprite->pos1.x = 216; +#else + sprite->pos1.x = 214; +#endif sprite->pos1.y = gUnknown_083DB694->unk1A8 * 16 + 96; break; case 2: @@ -1435,6 +1439,7 @@ void sub_80E9940(u8 *a, u8 b) extern const u8 gUnknown_083DBEAC[][32]; +#if ENGLISH void sub_80E9974(void) { BasicInitMenuWindow(&gWindowConfig_81E6D54); @@ -1454,6 +1459,82 @@ void sub_80E9974(void) sub_80E9A60(gUnknown_083DBEAC[3], 2, 6); } } +#else +__attribute__((naked)) +void sub_80E9974(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r0, _080E99C4 @ =gWindowConfig_81E6D54\n\ + bl BasicInitMenuWindow\n\ + ldr r0, _080E99C8 @ =gUnknown_083DB694\n\ + ldr r2, [r0]\n\ + adds r0, r2, 0\n\ + adds r0, 0x26\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080E99D4\n\ + ldr r1, _080E99CC @ =0x000001b5\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + lsls r1, r0, 16\n\ + lsrs r4, r1, 16\n\ + adds r0, 0x4\n\ + cmp r4, r0\n\ + bge _080E9A02\n\ + adds r5, r2, 0\n\ + ldr r2, _080E99CC @ =0x000001b5\n\ + adds r6, r5, r2\n\ +_080E99A4:\n\ + lsls r1, r4, 24\n\ + lsrs r1, 24\n\ + ldr r2, _080E99D0 @ =0x0000a0f5\n\ + adds r0, r5, r2\n\ + bl sub_80E9940\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + movs r0, 0\n\ + ldrsb r0, [r6, r0]\n\ + adds r0, 0x4\n\ + cmp r4, r0\n\ + blt _080E99A4\n\ + b _080E9A02\n\ + .align 2, 0\n\ +_080E99C4: .4byte gWindowConfig_81E6D54\n\ +_080E99C8: .4byte gUnknown_083DB694\n\ +_080E99CC: .4byte 0x000001b5\n\ +_080E99D0: .4byte 0x0000a0f5\n\ +_080E99D4:\n\ + bl sub_80E9AD4\n\ + ldr r4, _080E9A08 @ =gUnknown_083DBEAC\n\ + ldr r0, [r4]\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + bl sub_80E9A60\n\ + ldr r0, [r4, 0x4]\n\ + movs r1, 0x2\n\ + movs r2, 0x2\n\ + bl sub_80E9A60\n\ + ldr r0, [r4, 0x8]\n\ + movs r1, 0x2\n\ + movs r2, 0x4\n\ + bl sub_80E9A60\n\ + ldr r0, [r4, 0xC]\n\ + movs r1, 0x2\n\ + movs r2, 0x6\n\ + bl sub_80E9A60\n\ +_080E9A02:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080E9A08: .4byte gUnknown_083DBEAC\n\ + .syntax divided\n"); +} +#endif void sub_80E9A14(void) { -- cgit v1.2.3 From 737e1403b6b2578d768e2cc808c5b2c60cb3af49 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 00:18:16 -0600 Subject: decompile German code --- src/easy_chat_2.c | 169 +++++++++++------------------------------------------- 1 file changed, 33 insertions(+), 136 deletions(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 363cc49fa..e0e5d5cd4 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -451,7 +451,6 @@ void sub_80E872C(struct Sprite *sprite) } } -#if ENGLISH void sub_80E8760(struct Sprite *sprite) { if (gUnknown_083DB694->unk96 != 0) @@ -462,6 +461,12 @@ void sub_80E8760(struct Sprite *sprite) sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 64; sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; break; +#if GERMAN + case 1: + sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 28; + sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + break; +#endif case 2: sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 21; sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; @@ -469,63 +474,6 @@ void sub_80E8760(struct Sprite *sprite) } } } -#else -__attribute__((naked)) -void sub_80E8760(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {lr}\n\ - adds r2, r0, 0\n\ - ldr r0, _080E8784 @ =gUnknown_083DB694\n\ - ldr r1, [r0]\n\ - adds r0, r1, 0\n\ - adds r0, 0x96\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080E87B2\n\ - movs r3, 0x32\n\ - ldrsh r0, [r2, r3]\n\ - cmp r0, 0x1\n\ - beq _080E8798\n\ - cmp r0, 0x1\n\ - bgt _080E8788\n\ - cmp r0, 0\n\ - beq _080E878E\n\ - b _080E87B2\n\ - .align 2, 0\n\ -_080E8784: .4byte gUnknown_083DB694\n\ -_080E8788:\n\ - cmp r0, 0x2\n\ - beq _080E87A2\n\ - b _080E87B2\n\ -_080E878E:\n\ - adds r1, 0x9C\n\ - ldr r0, [r1]\n\ - ldrh r0, [r0, 0x20]\n\ - adds r0, 0x40\n\ - b _080E87AA\n\ -_080E8798:\n\ - adds r1, 0x9C\n\ - ldr r0, [r1]\n\ - ldrh r0, [r0, 0x20]\n\ - adds r0, 0x1C\n\ - b _080E87AA\n\ -_080E87A2:\n\ - adds r1, 0x9C\n\ - ldr r0, [r1]\n\ - ldrh r0, [r0, 0x20]\n\ - adds r0, 0x15\n\ -_080E87AA:\n\ - strh r0, [r2, 0x20]\n\ - ldr r0, [r1]\n\ - ldrh r0, [r0, 0x22]\n\ - strh r0, [r2, 0x22]\n\ -_080E87B2:\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif void sub_80E87A4(u8 a) { @@ -1437,9 +1385,34 @@ void sub_80E9940(u8 *a, u8 b) sub_80E9A60(a, 2, r4 * 2); } -extern const u8 gUnknown_083DBEAC[][32]; - #if ENGLISH + +extern const u8 gUnknown_083DBEAC[][32] = +{ + __("{UNKNOWN_14 8} A B C D E F {UNKNOWN_14 0}others"), // missing terminator + _("{UNKNOWN_14 8} G H I J K L $"), + _("{UNKNOWN_14 8} M N O P Q R S $"), + _("{UNKNOWN_14 8} T U V W X Y Z $"), +}; + +#else + +const u8 unk_83E7EB0[] = __("{UNKNOWN_14 8} A B C D E F {UNKNOWN_14 0}"); // missing terminator +const u8 unk_83E7EC5[] = _("mehr"); +const u8 unk_83E7ECA[] = _("{UNKNOWN_14 8} G H I J K L "); +const u8 unk_83E7EE1[] = _("{UNKNOWN_14 8} M N O P Q R S "); +const u8 unk_83E7EF8[] = _("{UNKNOWN_14 8} T U V W X Y Z "); +const u8 *const gUnknown_083DBEAC[] = +{ + unk_83E7EB0, + unk_83E7ECA, + unk_83E7EE1, + unk_83E7EF8, + unk_83E7EC5, +}; + +#endif + void sub_80E9974(void) { BasicInitMenuWindow(&gWindowConfig_81E6D54); @@ -1459,82 +1432,6 @@ void sub_80E9974(void) sub_80E9A60(gUnknown_083DBEAC[3], 2, 6); } } -#else -__attribute__((naked)) -void sub_80E9974(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r0, _080E99C4 @ =gWindowConfig_81E6D54\n\ - bl BasicInitMenuWindow\n\ - ldr r0, _080E99C8 @ =gUnknown_083DB694\n\ - ldr r2, [r0]\n\ - adds r0, r2, 0\n\ - adds r0, 0x26\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080E99D4\n\ - ldr r1, _080E99CC @ =0x000001b5\n\ - adds r0, r2, r1\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - lsls r1, r0, 16\n\ - lsrs r4, r1, 16\n\ - adds r0, 0x4\n\ - cmp r4, r0\n\ - bge _080E9A02\n\ - adds r5, r2, 0\n\ - ldr r2, _080E99CC @ =0x000001b5\n\ - adds r6, r5, r2\n\ -_080E99A4:\n\ - lsls r1, r4, 24\n\ - lsrs r1, 24\n\ - ldr r2, _080E99D0 @ =0x0000a0f5\n\ - adds r0, r5, r2\n\ - bl sub_80E9940\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - movs r0, 0\n\ - ldrsb r0, [r6, r0]\n\ - adds r0, 0x4\n\ - cmp r4, r0\n\ - blt _080E99A4\n\ - b _080E9A02\n\ - .align 2, 0\n\ -_080E99C4: .4byte gWindowConfig_81E6D54\n\ -_080E99C8: .4byte gUnknown_083DB694\n\ -_080E99CC: .4byte 0x000001b5\n\ -_080E99D0: .4byte 0x0000a0f5\n\ -_080E99D4:\n\ - bl sub_80E9AD4\n\ - ldr r4, _080E9A08 @ =gUnknown_083DBEAC\n\ - ldr r0, [r4]\n\ - movs r1, 0x2\n\ - movs r2, 0\n\ - bl sub_80E9A60\n\ - ldr r0, [r4, 0x4]\n\ - movs r1, 0x2\n\ - movs r2, 0x2\n\ - bl sub_80E9A60\n\ - ldr r0, [r4, 0x8]\n\ - movs r1, 0x2\n\ - movs r2, 0x4\n\ - bl sub_80E9A60\n\ - ldr r0, [r4, 0xC]\n\ - movs r1, 0x2\n\ - movs r2, 0x6\n\ - bl sub_80E9A60\n\ -_080E9A02:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080E9A08: .4byte gUnknown_083DBEAC\n\ - .syntax divided\n"); -} -#endif void sub_80E9A14(void) { -- cgit v1.2.3 From 60e30230906b16ea40aa6ecc18890661169ce163 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 00:35:54 -0600 Subject: fix build --- src/easy_chat_2.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index e0e5d5cd4..bac1873cc 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1387,18 +1387,17 @@ void sub_80E9940(u8 *a, u8 b) #if ENGLISH -extern const u8 gUnknown_083DBEAC[][32] = +const u8 gUnknown_083DBEAC[][32] = { - __("{UNKNOWN_14 8} A B C D E F {UNKNOWN_14 0}others"), // missing terminator - _("{UNKNOWN_14 8} G H I J K L $"), - _("{UNKNOWN_14 8} M N O P Q R S $"), - _("{UNKNOWN_14 8} T U V W X Y Z $"), + _("{UNKNOWN_14 8} A B C D E F {UNKNOWN_14 0}others"), + _("{UNKNOWN_14 8} G H I J K L "), + _("{UNKNOWN_14 8} M N O P Q R S "), + _("{UNKNOWN_14 8} T U V W X Y Z "), }; #else -const u8 unk_83E7EB0[] = __("{UNKNOWN_14 8} A B C D E F {UNKNOWN_14 0}"); // missing terminator -const u8 unk_83E7EC5[] = _("mehr"); +const u8 unk_83E7EB0[] = _("{UNKNOWN_14 8} A B C D E F {UNKNOWN_14 0}mehr"); const u8 unk_83E7ECA[] = _("{UNKNOWN_14 8} G H I J K L "); const u8 unk_83E7EE1[] = _("{UNKNOWN_14 8} M N O P Q R S "); const u8 unk_83E7EF8[] = _("{UNKNOWN_14 8} T U V W X Y Z "); @@ -1408,7 +1407,7 @@ const u8 *const gUnknown_083DBEAC[] = unk_83E7ECA, unk_83E7EE1, unk_83E7EF8, - unk_83E7EC5, + unk_83E7EB0 + 21, // pointer to "mehr". What is this for? }; #endif -- cgit v1.2.3 From 4149e858836f39836c476a8a6bc1403a6429c141 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 15:28:36 -0600 Subject: decompile sub_80EA1E0 - sub_80EAD7C --- src/easy_chat_2.c | 311 ++++++++++++++++++++++++++++++++++++++++++++++++++++- src/unknown_task.c | 1 + 2 files changed, 310 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index bac1873cc..8fbc54458 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1,17 +1,21 @@ #include "global.h" +#include "constants/easy_chat.h" #include "constants/map_objects.h" #include "decompress.h" #include "easy_chat.h" +#include "event_data.h" #include "field_map_obj.h" #include "graphics.h" #include "menu.h" #include "palette.h" #include "sprite.h" +#include "string_util.h" #include "strings.h" #include "trig.h" +#include "unknown_task.h" extern void sub_8095C8C(); -extern void sub_809D104(); +extern void sub_809D104(void *, u16, u16, const void *, u16, u16, u16, u16); void sub_80E8268(void); void sub_80E82BC(struct Sprite *); @@ -47,9 +51,15 @@ void sub_80EA8BC(void); void sub_80EA948(void); void sub_80EAA44(void); void sub_80EAAD4(void); -u8 *sub_80EAD64(); +void sub_80EABD4(u16 *, u16, u16, u16, u16, u16, u16, u16, u16); +void sub_80EAC0C(u16 *); +void sub_80EAC30(struct UnknownEasyChatStruct1 *, u16, u16, u16, u16, void *); +void sub_80EAC48(struct UnknownEasyChatStruct1 *); +void sub_80EACBC(void *, u16 *, struct UnknownEasyChatStruct1 *); +u8 *sub_80EAD64(u8 *, u8, int); u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(u16); +u8 sub_80EB9C8(void); const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); @@ -1785,3 +1795,300 @@ bool8 sub_80EA184(void) } return FALSE; } + +bool8 sub_80EA1E0(void) +{ + u16 i; + + if (gUnknown_083DB694->unkC4 != 0) + { + for (i = 0; i < gUnknown_083DB694->unkC2; i++) + { + sub_80EAC0C(gUnknown_083DB694->unkC8[i]); + sub_80EAC48(&gUnknown_083DB694->unk148[i]); + } + gUnknown_083DB694->unkBC = 1; + gUnknown_083DB694->unkC4--; + return FALSE; + } + return TRUE; +} + +void sub_80EA24C(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 13, 14, 13, 15, -2, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 14, 12, 15, 0, 0, 2, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 30, 0, -2, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 13, 15, 13, 16, -2, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 9, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 12, 16, 0, 0, 2, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[3], 30, 9, -2, 0, gUnknown_083DB694->unk6C8); + + gUnknown_083DB694->unkC2 = 4; + gUnknown_083DB694->unkC4 = 6; +} + +void sub_80EA348(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 1, 14, 13, 15, 2, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 14, 24, 15, 0, 0, -2, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 18, 0, 2, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 15, 13, 16, 2, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 9, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 24, 16, 0, 0, -2, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[3], 18, 9, 2, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[4], 1, 14, 1, 16, 0, 0, 2, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[4], 1, 14, 0, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[5], 24, 14, 24, 16, -2, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[5], 24, 14, -2, 0, gUnknown_083DB694->unk1C8); + + gUnknown_083DB694->unkC2 = 6; + gUnknown_083DB694->unkC4 = 6; +} + +void sub_80EA4A4(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 1, 14, 13, 15, 0, -1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 14, 24, 15, 0, -1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 18, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 15, 13, 16, 0, 0, 0, 1); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 9, 0, -1, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 24, 16, 0, 0, 0, 1); + sub_80EAC30(&gUnknown_083DB694->unk148[3], 18, 9, 0, -1, gUnknown_083DB694->unk6C8); + + gUnknown_083DB694->unkC2 = 4; + gUnknown_083DB694->unkC4 = 4; +} + +void sub_80EA5A0(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 1, 10, 13, 15, 0, 1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 10, 24, 15, 0, 1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 18, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 15, 13, 20, 0, 0, 0, -1); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 5, 0, 1, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 24, 20, 0, 0, 0, -1); + sub_80EAC30(&gUnknown_083DB694->unk148[3], 18, 5, 0, 1, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[4], 1, 10, 24, 10, 0, 0, 0, 1); + sub_80EAC30(&gUnknown_083DB694->unk148[4], 1, 10, 0, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[5], 1, 20, 24, 20, 0, -1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[5], 1, 20, 0, -1, gUnknown_083DB694->unk1C8); + + gUnknown_083DB694->unkC2 = 6; + gUnknown_083DB694->unkC4 = 4; +} + +void sub_80EA704(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 24, 12, 25, 20, 0, 0, 1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 5, 10, -1, 0, gUnknown_083DB694->unk6C8); + + gUnknown_083DB694->unkC2 = 1; + gUnknown_083DB694->unkC4 = 5; +} + +void sub_80EA764(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 24, 12, 30, 20, 0, 0, -1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 10, 1, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 30, 12, 31, 20, -1, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 30, 12, -1, 0, gUnknown_083DB694->unk1C8); + + gUnknown_083DB694->unkC2 = 2; + gUnknown_083DB694->unkC4 = 6; +} + +void sub_80EA7F4(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 20, 10, 25, 20, 0, 0, 1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 25, 0, -1, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 0, 10, 1, 20, 0, 0, 1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 10, 4, 20, 1, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + gUnknown_083DB694->unkC2 = 3; + gUnknown_083DB694->unkC4 = 2; +} + +void sub_80EA8BC(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 3, 10, 4, 20, 0, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 0, 10, 2, 20, 0, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + + gUnknown_083DB694->unkC2 = 2; + gUnknown_083DB694->unkC4 = 1; +} + +void sub_80EA948(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 0, 10, 2, 20, 0, 0, -1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 3, 10, 5, 20, -1, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 26, 10, 30, 20, -1, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 26, 10, -1, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[3], 25, 10, 26, 20, -1, 0, -1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[3], 29, 0, 0, 0, gUnknown_083DB694->unk6C8); + + gUnknown_083DB694->unkC2 = 4; + gUnknown_083DB694->unkC4 = 2; +} + +void sub_80EAA44(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 24, 10, 30, 20, 0, 0, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 24, 10, 0, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 23, 10, 24, 20, 0, 0, -1, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 29, 0, 0, 0, gUnknown_083DB694->unk6C8); + + gUnknown_083DB694->unkC2 = 2; + gUnknown_083DB694->unkC4 = 1; +} + +void sub_80EAAD4(void) +{ + sub_80EABD4(gUnknown_083DB694->unkC8[0], 0, 10, 30, 15, 0, 1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[1], 0, 15, 30, 20, 0, 0, 0, -1); + sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 5, 0, 1, gUnknown_083DB694->unk6C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[2], 0, 10, 30, 10, 0, 0, 0, 1); + sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + + sub_80EABD4(gUnknown_083DB694->unkC8[3], 0, 20, 30, 20, 0, -1, 0, 0); + sub_80EAC30(&gUnknown_083DB694->unk148[3], 0, 20, 0, -1, gUnknown_083DB694->unk1C8); + + gUnknown_083DB694->unkC2 = 4; + gUnknown_083DB694->unkC4 = 5; +} + +void sub_80EABD4(u16 *a, u16 b, u16 c, u16 d, u16 e, u16 f, u16 g, u16 h, u16 i) +{ + a[0] = b; + a[1] = d; + a[2] = c; + a[3] = e; + a[4] = f; + a[5] = h; + a[6] = g; + a[7] = i; +} + +void sub_80EAC0C(u16 *a) +{ + a[0] += a[4]; + a[1] += a[5]; + a[2] += a[6]; + a[3] += a[7]; +} + +void sub_80EAC30(struct UnknownEasyChatStruct1 *a, u16 b, u16 c, u16 d, u16 e, void *f) +{ + a->unk0 = b; + a->unk2 = c; + a->unk4 = d; + a->unk6 = e; + a->unk8 = f; +} + +void sub_80EAC48(struct UnknownEasyChatStruct1 *a) +{ + a->unk0 += a->unk4; + a->unk2 += a->unk6; +} + +void sub_80EAC5C(void) +{ + u16 i; + + if (gUnknown_083DB694->unkBC != 0) + { + for (i = 0; i < gUnknown_083DB694->unkC2; i++) + sub_80EACBC((void *)(VRAM + 0x6800), gUnknown_083DB694->unkC8[i], &gUnknown_083DB694->unk148[i]); + gUnknown_083DB694->unkBC = 0; + } +} + +void sub_80EACBC(void *a, u16 *b, struct UnknownEasyChatStruct1 *c) +{ + s16 r6 = b[1] - b[0]; + s16 r5 = b[3] - b[2]; + + if (r6 > 0 && r5 > 0) + sub_809D104(a, b[0], b[2], c->unk8, c->unk0, c->unk2, r6, r5); +} + +// Strange... +void sub_80EAD08(void) +{ + u16 *r4; + u16 r2; + u16 i; + + r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + r4 += 88; + r2 = (gUnknown_083DB694->unk1BA - 88) & 0xFF; + + for (i = 0; i < 64; i++) + { + if (gUnknown_083DB694->unk1BA + i == 128) + r2 = (-i - 88) & 0xFF; + *r4++ = r2; + } +} + +extern const u8 *const gEasyChatGroupNames[]; + +u8 *sub_80EAD64(u8 *a, u8 b, int unused) +{ + return StringCopy(a, gEasyChatGroupNames[b]); +} + +bool8 sub_80EAD7C(u8 group) +{ + switch (group) + { + case EC_GROUP_TRENDY_SAYING: + return FlagGet(FLAG_SYS_HIPSTER_MEET); + case EC_GROUP_EVENTS: + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + return FlagGet(FLAG_SYS_GAME_CLEAR); + case EC_GROUP_POKEMON_2: + return sub_80EB9C8(); + } + return TRUE; +} + diff --git a/src/unknown_task.c b/src/unknown_task.c index c9ba95d42..62245502a 100644 --- a/src/unknown_task.c +++ b/src/unknown_task.c @@ -20,6 +20,7 @@ extern u8 gUnknown_0202FFA4; extern struct UnknownTaskStruct2 gUnknown_03004DC0; +// Is this a struct? extern u16 gUnknown_03004DE0[][0x3C0]; void remove_some_task(void) -- cgit v1.2.3 From 0bbbc1c6dfc6c2b8646276de94cedab9ddc8bc4b Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sat, 6 Jan 2018 00:06:06 +0100 Subject: Started decompiling wisp_fire.s --- src/battle/anim/wisp_fire.c | 48 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/battle/anim/wisp_fire.c (limited to 'src') diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c new file mode 100644 index 000000000..e31c15d9c --- /dev/null +++ b/src/battle/anim/wisp_fire.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "battle_anim.h" +#include "main.h" +#include "rom_8077ABC.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankTarget; +// extern u8 gAnimBankAttacker; + +void sub_80D5CC0(struct Sprite *sprite) +{ + if (!sprite->data[0]) + { + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[0] += 1; + } + + sprite->data[3] += 0xC0 * 2; + sprite->data[4] += 0xA0; + + sprite->pos2.x = Sin(sprite->data[1], sprite->data[3] >> 8); + sprite->pos2.y = Cos(sprite->data[1], sprite->data[4] >> 8); + + sprite->data[1] = (sprite->data[1] + 7) & 0xFF; + + if (gMain.inBattle) + if ((u16) (sprite->data[1] - 0x40) > 0x83) + sprite->oam.priority = sub_8079ED4(gAnimBankTarget); + else + sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1; + else + if ((u16) (sprite->data[1] - 0x40) > 0x83) + sprite->subpriority = 0x1D; + else + sprite->subpriority = 0x1F; + + if (++sprite->data[2] > 0x14) + sprite->invisible ^= 1; + + if (sprite->data[2] == 0x1E) + DestroyAnimSprite(sprite); +} + +// void sub_80D5DDC(struct Sprite *sprite) +// { + +// } \ No newline at end of file -- cgit v1.2.3 From 3c375d2cb4189d19c650145c4ddeedc7c43b76a2 Mon Sep 17 00:00:00 2001 From: M Date: Sat, 19 Aug 2017 16:44:22 +0200 Subject: Almost decompiled roulette_util, started decompiling roulette --- src/roulette.c | 33 +++++ src/roulette_util.c | 389 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 422 insertions(+) create mode 100644 src/roulette.c create mode 100644 src/roulette_util.c (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c new file mode 100644 index 000000000..e15d6ee2f --- /dev/null +++ b/src/roulette.c @@ -0,0 +1,33 @@ +#include "global.h" + +#include "roulette_util.h" +#include "task.h" +#include "palette.h" + +extern u8 gUnknown_02019000[]; + +extern u8 ewram[]; +//#define ewram190B8 ((struct UnkStruct0 *) (ewram + 0x190B8)) +#define ewram19000 ((u8 *) (ewram + 0x19000)) + + +void sub_81150FC(void) +{ + struct UnkStruct0 *s; + u8 *p; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + p = ewram19000; + s = (struct UnkStruct0 *)(&p[0xB8]); + if (s->val0) + task_tutorial_controls_fadein(s); +} + +void sub_8115124(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + +} diff --git a/src/roulette_util.c b/src/roulette_util.c new file mode 100644 index 000000000..9dc92a1df --- /dev/null +++ b/src/roulette_util.c @@ -0,0 +1,389 @@ +#include "global.h" +#include "roulette_util.h" + +static u8 sub_81249E4(struct UnkStruct3 *); +static u8 sub_8124BEC(struct UnkStruct3 *); + +extern u16 gPlttBufferFaded[]; +extern u16 gPlttBufferUnfaded[]; + +void sub_8124918(struct UnkStruct0 *r0) +{ + r0->val0 = 0; + r0->val2 = 0; + memset((&r0->val3), 0, 0xC0); +} + +u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2) +{ + if (!(r1 < 0x10) || (r0->val3[r1].field1)) + { + return 0xFF; + } + else + { + r0->val3[r1].val4 = r2->val0; + r0->val3[r1].val5 = r2->val1; + r0->val3[r1].val6 = r2->val2; + r0->val3[r1].val7 = r2->val3; + r0->val3[r1].val8 = r2->val4; + + r0->val3[r1].field2 = r2->field0; + r0->val3[r1].field3 = r2->field1; + r0->val3[r1].field4 = r2->field2; + + r0->val3[r1].field0 = 0x0; + r0->val3[r1].field1 = 0x1; + + r0->val3[r1].val2 = 0x0; + r0->val3[r1].val1 = 0x0; + if (r0->val3[r1].field4 < 0) + r0->val3[r1].val3 = 0xFF; + else + r0->val3[r1].val3 = 0x1; + return r1; + } +} + +#ifdef NONMATCHING + //Functionally equivalent +u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1) +{ + if (!(r1 < 0x10) || (r0->val3[r1].field1)) + { + return 0xFF; + } + else + { + memset(&(r0->val3[r1]), 0, 0xC); + return r1; + } +} +#else +__attribute__((naked)) +u8 unref_sub_81249B0(struct UnkStruct0 *r0 , u8 r1) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + adds r2, r0, 0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r4, r1, 0\n\ + cmp r4, 0xF\n\ + bhi _081249DC\n\ + lsls r0, r4, 1\n\ + adds r0, r4\n\ + lsls r0, 2\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1, 0x4]\n\ + lsrs r0, 7\n\ + cmp r0, 0\n\ + beq _081249DC\n\ + adds r0, r1, 0x4\n\ + movs r1, 0\n\ + movs r2, 0xC\n\ + bl memset\n\ + adds r0, r4, 0\n\ + b _081249DE\n\ + _081249DC:\n\ + movs r0, 0xFF\n\ + _081249DE:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif + +u8 sub_81249E4(struct UnkStruct3 *r0) +{ + u8 i; + u8 returnval; + for (i = 0; i < r0->val6; i++) + { + u32 offset = r0->val5 + i; + struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; + struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset]; + switch(r0->field0) + { + case 0x1: + if ((u32)(faded->r + r0->val3) < 0x20) + faded->r += r0->val3; + if ((u32)(faded->g + r0->val3) < 0x20) + faded->g += r0->val3; + if ((u32)(faded->b + r0->val3) < 0x20) + faded->b += r0->val3; + break; + case 0x2: + if (r0->val3 < 0) + { + if (!(faded->r + r0->val3 < unfaded->r)) + faded->r += r0->val3; + if (!(faded->g + r0->val3 < unfaded->g)) + faded->g += r0->val3; + if (!(faded->b + r0->val3 < unfaded->b)) + faded->b += r0->val3; + } + else + { + if (!(faded->r + r0->val3 > unfaded->r)) + faded->r += r0->val3; + if (!(faded->g + r0->val3 > unfaded->g)) + faded->g += r0->val3; + if (!(faded->b + r0->val3 > unfaded->b)) + faded->b += r0->val3; + } + break; + } + } + if (((u32)r0->val2++) != r0->field2) + { + returnval = 0x0; + } + else + { + r0->val2 = 0x0; + r0->val3 = r0->val3 * -1; + if (r0->field0 == 0x1) + r0->field0++; + else + r0->field0--; + returnval = 0x1; + } + return returnval; +} + +u8 sub_8124BEC(struct UnkStruct3 *r0) +{ + u8 rg2 = 0; + switch (r0->field0) + { + case 0x1: + for (rg2 = 0; rg2 < r0->val6; rg2++) + gPlttBufferFaded[r0->val5 + rg2] = r0->val4; + r0->field0++; + break; + case 0x2: + for (rg2 = 0; rg2 < r0->val6; rg2++) + gPlttBufferFaded[r0->val5 + rg2] = gPlttBufferUnfaded[r0->val5 + rg2]; + r0->field0--; + break; + } + return 0x1; +} + +void task_tutorial_controls_fadein(struct UnkStruct0 *r0) +{ + u8 i = 0; + if (r0->val0) + { + for (i = 0; i < 0x10; i++) + { + if ((r0->val2 >> i) & 0x1) + { + if (((u8)--r0->val3[i].val1) == 0xFF) // if underflow ? + { + if (r0->val3[i].val4 & (0x80 << 8)) // PlttData->unused_15 ? + sub_81249E4(&r0->val3[i]); + else + sub_8124BEC(&r0->val3[i]); + r0->val3[i].val1 = r0->val3[i].val7; + } + } + } + } +} + +void sub_8124CE8(struct UnkStruct0 *r0, u16 r1) +{ + u8 i = 0; + r0->val0++; + for (i = 0; i < 0x10; i++) + { + if ((r1 >> i) & 0x1) + { + if (r0->val3[i].field1) + { + r0->val2 |= 0x1 << i; + r0->val3[i].field0 = 0x1; + } + } + } +} + +void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) +{ + u8 i; + for (i = 0; i < 0x10; i++) + { + if ((r0->val2 >> i) & 0x1) + { + if (r0->val3[i].field1) + { + if ((r1 >> i) & 0x1) + { + u32 offset = r0->val3[i].val5; + u16 *faded = &gPlttBufferFaded[offset]; + u16 *unfaded = &gPlttBufferUnfaded[offset]; + memcpy(faded, unfaded, r0->val3[i].val6 * 2); + r0->val3[i].field0 = 0x0; + r0->val3[i].val2 = 0x0; + r0->val3[i].val1 = 0x0; + if (r0->val3[i].field4 < 0) + r0->val3[i].val3 = 0xFF; + else + r0->val3[i].val3 = 0x1; + } + } + } + } + if (r1 == 0xFFFF) + { + r0->val0 = 0x0; + r0->val2 = 0x0; + } + else + { + r0->val2 = r0->val2 & ~r1; + } +} +#ifdef NONMATCHING +void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5) +{ + u16 *rg0; + u8 c; + u8 i = 0; + u32 offset= r3 * 0x20 + r2; + rg0 = &r0[offset]; + for (i = 0; i < r5; i++) + { + rg0 = &rg0[i * 0x20 ]; + c = 0; + for (c = 0; c < r4; c++) + { + *rg0++ = r1; + } + } +} +#else +__attribute__((naked)) +void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r6, r0, 0\n\ + ldr r0, [sp, 0x14]\n\ + ldr r4, [sp, 0x18]\n\ + lsls r1, 16\n\ + lsrs r7, r1, 16\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + lsls r3, 24\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r1, 0\n\ + lsrs r3, 19\n\ + adds r3, r2\n\ + lsls r3, 1\n\ + adds r6, r3\n\ + cmp r1, r4\n\ + bcs _08124E26\n\ +_08124E04:\n\ + lsls r0, r1, 6\n\ + adds r2, r6, r0\n\ + movs r0, 0\n\ + adds r3, r1, 0x1\n\ + cmp r0, r5\n\ + bcs _08124E1E\n\ +_08124E10:\n\ + strh r7, [r2]\n\ + adds r2, 0x2\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + bcc _08124E10\n\ +_08124E1E:\n\ + lsls r0, r3, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, r4\n\ + bcc _08124E04\n\ +_08124E26:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif +#ifdef NONMATCHING +void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5) +{ + u16 *rg0; + u8 c; + u8 i = 0; + u32 offset= r3 * 0x20 + r2; + //rg0 = &r0[offset]; + for (i = 0; i < r5; i++) + { + rg0 = &r0[offset + i * 0x20 ]; + c = 0; + for (c = 0; c < r4; c++) + { + *(rg0++) = *(r1++); + } + } +} +#else +__attribute__((naked)) +void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r7, r0, 0\n\ + ldr r0, [sp, 0x14]\n\ + ldr r4, [sp, 0x18]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + lsls r3, 24\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r4, 24\n\ + lsrs r6, r4, 24\n\ + movs r4, 0\n\ + lsrs r3, 19\n\ + adds r3, r2\n\ + lsls r3, 1\n\ + adds r7, r3\n\ + cmp r4, r6\n\ + bcs _08124E76\n\ + _08124E50:\n\ + lsls r0, r4, 6\n\ + adds r2, r7, r0\n\ + movs r3, 0\n\ + adds r4, 0x1\n\ + cmp r3, r5\n\ + bcs _08124E6E\n\ + _08124E5C:\n\ + ldrh r0, [r1]\n\ + strh r0, [r2]\n\ + adds r1, 0x2\n\ + adds r2, 0x2\n\ + adds r0, r3, 0x1\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, r5\n\ + bcc _08124E5C\n\ + _08124E6E:\n\ + lsls r0, r4, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, r6\n\ + bcc _08124E50\n\ + _08124E76:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif -- cgit v1.2.3 From 102a039e1e1419e69b45cee55094f5bbdbe16cf1 Mon Sep 17 00:00:00 2001 From: M Date: Sat, 26 Aug 2017 02:14:40 +0200 Subject: Decompiled roulette.s up to sub_8115B58 --- src/roulette.c | 691 +++++++++++++++++++++++++++++++++++++++++++++++++++- src/roulette_util.c | 2 +- 2 files changed, 688 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index e15d6ee2f..3a0702d1d 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -3,25 +3,179 @@ #include "roulette_util.h" #include "task.h" #include "palette.h" +#include "text.h" +#include "pokemon.h" +#include "species.h" +#include "rtc.h" +#include "main.h" +#include "menu_helpers.h" +#include "unknown_task.h" +#include "menu.h" +#include "trig.h" +#include "sprite.h" +#include "menu_cursor.h" +#include "sound.h" extern u8 gUnknown_02019000[]; +extern u16 gSpecialVar_0x8004; +extern struct Unkg083F8DF4 gUnknown_083F8DF4[]; +extern u8 gUnknown_083F8EC4; +extern u8 gUnknown_083F8DF0[]; +extern u8 gUnknown_083F8E34[]; +extern const u8 gUnknown_08E8096C[]; +extern const u8 gRouletteWheelTiles[]; +extern const u8 gRouletteCenter_Gfx[]; +extern const u8 gRouletteHeadersTiles[]; +extern const u8 gRouletteCreditTiles[]; +extern const u8 gRouletteNumbersTiles[]; +extern const u8 gRouletteMultiplierTiles[]; +extern const u8 gUnknown_083F86BC[]; +extern const u8 gUnknown_083F88BC[]; +extern const u8 gUnknown_083F8A60[]; + +extern u16 gPlttBufferFaded[]; +extern u16 gPlttBufferUnfaded[]; + +extern const u8 gUnknown_081C4157[]; + +extern const struct YesNoFuncTable gUnknown_083F8EBC; +extern const u8 gUnknown_081C41E3; + +struct StructUnknown_083F8C00 +{ + u32 var00; + u32 var04; + u32 var08; + u32 var0C; + u32 var10; +}; + +extern const struct StructUnknown_083F8C00 gUnknown_083F8C00[]; + +const extern u8 gUnknown_083F8ECA[]; + + +void sub_8117838(u8); +void sub_811857C(void); +void sub_81184D8(void); +void sub_8117F2C(void); +void sub_8117900(void); +void sub_8117BBC(void); +void sub_8117DF4(void); + +void sub_81180F4(u16); +void sub_81182F8(u8); +void sub_811829C(u8); +void sub_8117158(u8); + +void sub_81156BC(u8); +void sub_8115634(u8); + +void sub_8116CAC(u8); +void sub_8116CF8(void); +void sub_81185E8(void); +void sub_81182F8(u8); +void sub_81159BC(u8); +void sub_8116C34(u8, TaskFunc, u16, u16); + +void sub_8116AB0(u8); + +void sub_8115E14(u8); + +void sub_8116EF8(u8); + extern u8 ewram[]; -//#define ewram190B8 ((struct UnkStruct0 *) (ewram + 0x190B8)) + +#define ewram18a20 ((u16 *) (ewram + 0x18a20)) +#define ewram18a32 ((u16 *) (ewram + 0x18A32)) +#define ewram18a80 ((u16 *) (ewram + 0x18a80)) #define ewram19000 ((u8 *) (ewram + 0x19000)) +#define ewram190b8 ((u8 *) (ewram + 0x190B8)) +#define RDATA ((struct RData *) (ewram + 0x19000)) +#define UNKDATA ((struct UnkStruct0 *) (ewram + 0x190B8)) + +//////////////// +struct OamMatrix +{ + s16 a; + s16 b; + s16 c; + s16 d; +}; + +struct SpriteCopyRequest +{ + const u8 *src; + u8 *dest; + u16 size; +}; + +struct OamDimensions +{ + s8 width; + s8 height; +}; +//////////////// + +struct Unkg083F8DF4 +{ + u8 var00; + u8 var01; + u8 var02; + u8 var03; + u8 var04; + u8 v[0x1B]; +}; + +struct RData /* ewram + 0x19000 */ +{ + u8 v00; + u8 var01; + u8 var02; + u8 v03; + u8 var04_0:2; + u8 var04_2:5; + u8 var04_7:1; + u8 v7[0x3]; + u32 var08; // may be bitfield + u8 v0[0xD]; + u8 var19; + u8 var1A_0:4; + u8 var1A_4:4; + u8 var1B[0x6]; + u8 var21; + u8 var22; + u8 var23; + s16 var24; + u16 var26; + s16 var28; + s16 var2A; + struct OamMatrix var2C; + u16 var34; + u8 v99[0x6]; + u8 var3C; + u8 v67[0x28]; + u8 var65[0x4]; + u8 v6[0x3B]; + u8 varA4; + u8 varA5; // taskid +}; +void sub_8117434(void); + void sub_81150FC(void) { - struct UnkStruct0 *s; u8 *p; + struct UnkStruct0 *s; RunTasks(); AnimateSprites(); BuildOamBuffer(); p = ewram19000; s = (struct UnkStruct0 *)(&p[0xB8]); if (s->val0) - task_tutorial_controls_fadein(s); + task_tutorial_controls_fadein(s); } void sub_8115124(void) @@ -29,5 +183,534 @@ void sub_8115124(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - + sub_8117434(); + REG_BG1HOFS = 0x200 - RDATA->var26; + if (RDATA->var01) + REG_BLDALPHA = RDATA->var34; + if (RDATA->var2A != 0) + { + DmaCopy16(3, &gBGTilemapBuffers[1][0xE0], (void *)(VRAM + 0x21C0), 0x340); + RDATA->var2A = 0x0; + } + switch (RDATA->var28) + { + case 0x1: + REG_BG0CNT = (0x20 * 0xF8); + DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340); + RDATA->var28 = 0x2; + break; + case 0x2: + DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340); + break; + case 0xFF: + REG_BG0CNT = 0x1F08; + DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340); + RDATA->var28 = 0x0; + break; + case 0x0: + } +} +#ifdef NONMATCHING +void sub_8115238(void) +{ + u8 i; + u32 temp; + struct Unkg083F8DF4 *s0; + u16 arr[0x3]; // the third is never used ? + memcpy(&arr, &gUnknown_083F8EC4, 0x6); + memset(RDATA, 0x0, 0x17C); + RDATA->var04_0 = (gSpecialVar_0x8004 & 0x1); + if (gSpecialVar_0x8004 & 0x80) + RDATA->var04_7 = 0x1; + s0 = &gUnknown_083F8DF4[0]; + RDATA->var22 = s0[RDATA->var04_0].var03; + RDATA->var23 = s0[RDATA->var04_0].var04; + temp = gUnknown_083F8DF0[RDATA->var04_0 + RDATA->var04_7 * 2]; + RDATA->var19 = temp; + RDATA->var1A_4 = 0x1; + if (temp == 0x1) + { + u16 *faded = &gPlttBufferFaded[0]; + u16 *unfaded = &gPlttBufferUnfaded[0]; + faded[0x51] = arr[0]; + faded[0x0] = arr[0]; + unfaded[0x51] = arr[0]; + unfaded[0x0] = arr[0]; + } + else + { + u16 *faded = &gPlttBufferFaded[0]; + u16 *unfaded = &gPlttBufferUnfaded[0]; + faded[0x51] = arr[1]; + faded[0x0] = arr[1]; + unfaded[0x51] = arr[1]; + unfaded[0x0] = arr[1]; + } + sub_8124918(UNKDATA); + for (i = 0; i < 0xD; i++) + sub_812492C(UNKDATA, i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]); + for (i = 0; i < 0x6; i++) + { + switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2)) + { + case SPECIES_TAILLOW: + RDATA->var02 |= 0x2; + break; + case SPECIES_SHROOMISH: + RDATA->var02 |= 0x1; + break; + } + } + RtcCalcLocalTime(); +} +#else +__attribute__((naked)) +void sub_8115238(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x8\n\ + ldr r1, _081152C0 @ =gUnknown_083F8EC4\n\ + mov r0, sp\n\ + movs r2, 0x6\n\ + bl memcpy\n\ + ldr r5, _081152C4 @ =0x02019000\n\ + movs r2, 0xBE\n\ + lsls r2, 1\n\ + adds r0, r5, 0\n\ + movs r1, 0\n\ + bl memset\n\ + ldr r0, _081152C8 @ =gSpecialVar_0x8004\n\ + ldrh r2, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r2\n\ + ldrb r1, [r5, 0x4]\n\ + movs r3, 0x4\n\ + negs r3, r3\n\ + ands r3, r1\n\ + orrs r3, r0\n\ + strb r3, [r5, 0x4]\n\ + movs r0, 0x80\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _08115276\n\ + movs r0, 0x80\n\ + orrs r3, r0\n\ + strb r3, [r5, 0x4]\n\ + _08115276:\n\ + ldr r3, _081152CC @ =gUnknown_083F8DF4\n\ + ldrb r2, [r5, 0x4]\n\ + lsls r1, r2, 30\n\ + lsrs r0, r1, 25\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x3]\n\ + adds r4, r5, 0\n\ + adds r4, 0x22\n\ + strb r0, [r4]\n\ + lsrs r0, r1, 25\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x4]\n\ + adds r3, r5, 0\n\ + adds r3, 0x23\n\ + strb r0, [r3]\n\ + ldr r0, _081152D0 @ =gUnknown_083F8DF0\n\ + lsrs r1, 30\n\ + lsls r2, 24\n\ + lsrs r2, 31\n\ + lsls r2, 1\n\ + adds r1, r2\n\ + adds r1, r0\n\ + ldrb r2, [r1]\n\ + strb r2, [r5, 0x19]\n\ + ldrb r1, [r5, 0x1A]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + movs r1, 0x10\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1A]\n\ + cmp r2, 0x1\n\ + bne _081152DC\n\ + ldr r4, _081152D4 @ =gPlttBufferUnfaded\n\ + ldr r3, _081152D8 @ =gPlttBufferFaded\n\ + mov r0, sp\n\ + ldrh r2, [r0]\n\ + b _081152E4\n\ + .align 2, 0\n\ + _081152C0: .4byte gUnknown_083F8EC4\n\ + _081152C4: .4byte 0x02019000\n\ + _081152C8: .4byte gSpecialVar_0x8004\n\ + _081152CC: .4byte gUnknown_083F8DF4\n\ + _081152D0: .4byte gUnknown_083F8DF0\n\ + _081152D4: .4byte gPlttBufferUnfaded\n\ + _081152D8: .4byte gPlttBufferFaded\n\ + _081152DC:\n\ + ldr r4, _08115348 @ =gPlttBufferUnfaded\n\ + ldr r3, _0811534C @ =gPlttBufferFaded\n\ + mov r0, sp\n\ + ldrh r2, [r0, 0x2]\n\ + _081152E4:\n\ + adds r0, r3, 0\n\ + adds r0, 0xA2\n\ + strh r2, [r0]\n\ + ldr r1, _08115350 @ =0x0000ffff\n\ + adds r0, r1, 0\n\ + ands r0, r2\n\ + strh r0, [r3]\n\ + ands r0, r1\n\ + adds r2, r4, 0\n\ + adds r2, 0xA2\n\ + strh r0, [r2]\n\ + ands r0, r1\n\ + strh r0, [r4]\n\ + ldr r0, _08115354 @ =0x020190b8\n\ + bl sub_8124918\n\ + movs r4, 0\n\ + ldr r5, _08115358 @ =gUnknown_083F8E34\n\ + _08115308:\n\ + lsls r2, r4, 3\n\ + adds r2, r5\n\ + ldr r0, _08115354 @ =0x020190b8\n\ + adds r1, r4, 0\n\ + bl sub_812492C\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0xC\n\ + bls _08115308\n\ + movs r4, 0\n\ + ldr r5, _0811535C @ =0x02019000\n\ + _08115322:\n\ + movs r0, 0x64\n\ + muls r0, r4\n\ + ldr r1, _08115360 @ =gPlayerParty\n\ + adds r0, r1\n\ + movs r1, 0x41\n\ + bl GetMonData\n\ + adds r1, r0, 0\n\ + movs r0, 0x98\n\ + lsls r0, 1\n\ + cmp r1, r0\n\ + beq _08115364\n\ + adds r0, 0x2\n\ + cmp r1, r0\n\ + bne _0811536C\n\ + ldrb r0, [r5, 0x2]\n\ + movs r1, 0x1\n\ + b _08115368\n\ + .align 2, 0\n\ + _08115348: .4byte gPlttBufferUnfaded\n\ + _0811534C: .4byte gPlttBufferFaded\n\ + _08115350: .4byte 0x0000ffff\n\ + _08115354: .4byte 0x020190b8\n\ + _08115358: .4byte gUnknown_083F8E34\n\ + _0811535C: .4byte 0x02019000\n\ + _08115360: .4byte gPlayerParty\n\ + _08115364:\n\ + ldrb r0, [r5, 0x2]\n\ + movs r1, 0x2\n\ + _08115368:\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x2]\n\ + _0811536C:\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0x5\n\ + bls _08115322\n\ + bl RtcCalcLocalTime\n\ + add sp, 0x8\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +void sub_8115384(void) +{ + u32 temp_IME; + u8 taskid; + switch (gMain.state) + { + case 0x0: + SetVBlankCallback(NULL); + remove_some_task(); + sub_80F9438(); + sub_80F9368(); + REG_BG2CNT = 0x4686; + REG_BG1CNT = 0x4401; + REG_BLDCNT = 0x2400; + REG_BLDALPHA = 0x060A; + LZ77UnCompVram(&gUnknown_08E8096C, (void *)VRAM); + LZ77UnCompVram(&gRouletteWheelTiles, (void *)(VRAM + 0x4000)); + gMain.state++; + break; + case 0x1: + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + gMain.state++; + break; + case 0x2: + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0); + gMain.state++; + break; + case 0x3: + sub_8115238(); + sub_80F9020(); + LZ77UnCompWram(&gUnknown_083F88BC, (void *)(ewram + 0x18800)); + LZ77UnCompVram(&gUnknown_083F8A60, (void *)(VRAM + 0x3000)); + gMain.state++; + break; + case 0x4: + sub_8117838(0x0); + sub_811857C(); + sub_81184D8(); + sub_8117F2C(); + sub_8117900(); + sub_8117BBC(); + sub_8117DF4(); + gMain.state++; + break; + case 0x5: + AnimateSprites(); + BuildOamBuffer(); + sub_81180F4(gSaveBlock1.coins); + sub_81182F8(0x6); + sub_811829C(0x0); + sub_8117158(0x0); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C4157[0], 0x1, 0xF); + gSpriteCoordOffsetX = -0x3C; + gSpriteCoordOffsetY = 0x0; + gMain.state++; + break; + case 0x6: + REG_DISPCNT = 0x1741; + gMain.state++; + break; + case 0x7: + temp_IME = REG_IME; + REG_IME = 0x0; //disable interrupts + REG_IE |= 0x1; //enable VBlank interrupt + REG_IME = temp_IME; //reenable interrupts + REG_DISPSTAT |= 0x8; + SetVBlankCallback(&sub_8115124); + BeginHardwarePaletteFade(0xFF, 0x0, 0x10, 0x0 , 0x1); + taskid = RDATA->varA4 = CreateTask(&sub_81156BC, 0x0); + gTasks[taskid].data[0x6] = 0x6; + gTasks[taskid].data[0xD] = gSaveBlock1.coins; + RDATA->varA5 = CreateTask(&sub_8115634, 0x1); + SetMainCallback2(&sub_81150FC); + break; + } +} + +void sub_8115634(u8 unused) +{ + s16 sin; + s16 cos; + s32 cos32; + if (RDATA->var21++ == RDATA->var23) + { + RDATA->var21 = 0x0; + if ((RDATA->var24 -= RDATA->var22) < 0) + RDATA->var24 = 0x168 - RDATA->var22; + } + sin = Sin2(RDATA->var24); + cos = Cos2(RDATA->var24); + sin = sin / 16; + cos32 = cos / 16; + RDATA->var2C.d = cos32; + RDATA->var2C.a = cos32; + RDATA->var2C.b = sin; + RDATA->var2C.c = -sin; +} + +void sub_81156BC(u8 taskid) +{ + if (UpdatePaletteFade() == 0) + { + REG_BLDCNT |= 0x2400; + REG_BLDALPHA = 0x0808; + gTasks[taskid].data[0x6] = 0; + sub_8116CAC(taskid); + sub_8116CF8(); + sub_81185E8(); + sub_8117158(0); + sub_81182F8(0x6); + sub_8116C34(taskid, &sub_81159BC, 0xFFFF, 0x3); + } +} + +void sub_8115734(u8 taskid) +{ + DisplayYesNoMenu(0x14, 0x8, 0x1); + sub_814AAF8(0x2D9E); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C41E3, 0x1, 0xF); + DoYesNoFuncWithChoice(taskid, &gUnknown_083F8EBC); +} + +void sub_811577C(u8 taskid) +{ + MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + gTasks[taskid].func = &sub_81159BC; +} + +void sub_81157AC(u8 taskid) +{ + DestroyTask(RDATA->varA5); + sub_8116AB0(taskid); +} + +void sub_81157D0(u8 r0) +{ + u8 temp0, temp1; + switch (r0) + { + case 0x0: + sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD); + break; + case 0x1: + case 0x2: + case 0x3: + case 0x4: + temp0 = (r0 * 3 + 0xE); + sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD); + sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a32, temp0, 0x7, 0x3, 0xD); + break; + case 0x5: + case 0xA: + case 0xF: + temp1 = ((r0 - 1) / 5 * 3 + 0xA); + sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD); + sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a80, 0xE, temp1, 0x10, 0x3); + break; + default: + temp0 = ((r0 % 5) * 3 + 0xE); + temp1 = ((r0 - 1) / 5 * 3 + 0x7); + sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD); + sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a20, temp0, temp1, 0x3, 0x3); + } +} + +void sub_8115928(u8 taskid, bool8 r1) +{ + if (!r1) + sub_811829C(gTasks[taskid].data[0x4]); + else + sub_811829C(RDATA->var1B[RDATA->var1A_0]); + sub_81157D0(gTasks[taskid].data[0x4]); +} + +void sub_811597C(u8 taskid) +{ + RDATA->var28 = 0x1; + sub_81157D0(gTasks[taskid].data[0x4]); + RDATA->var23 = 0x2; + RDATA->var21 = 0x0; + gTasks[taskid].func = &sub_8115E14; +} + +void sub_81159BC(u8 taskid) +{ + s16 i; + if(RDATA->var08 & 0x20) + { + for (i = 0xB; (i < 0xE); i++) + if ((RDATA->var08 & gUnknown_083F8C00[i].var08) == 0) + break; + } + else + { + for (i = 0x6; (i < 0xA); i++) + if ((RDATA->var08 & gUnknown_083F8C00[i].var08) == 0) + break; + } + gTasks[taskid].data[0x4] = i; + sub_8116CAC(taskid); + sub_8117158(gTasks[taskid].data[0x4]); + sub_811829C(gTasks[taskid].data[0x4]); + sub_8116EF8(gTasks[taskid].data[0x4]); + gTasks[taskid].data[0x1] = 0x0; + gTasks[taskid].func = &sub_811597C; +} + +bool8 sub_8115A94(s16 *r0, u8 r1) +{ + s8 temp1 = 0; + s8 temp = 0; + s8 arr[0x4]; + s8 t; + memcpy(&arr, gUnknown_083F8ECA, 0x4); + t = (u8)*r0; + switch (r1) + { + case 0x0: + case 0x1: + temp1 = (*r0 % 5); + temp = temp1 + 0xF; + if (temp1 == 0) + temp1 = 0x5; + break; + case 0x2: + case 0x3: + temp1 = (s16)(*r0 / 5) * 5; + temp = temp1 + 0x4; + if (temp1 == 0) + temp1 = 0x1; + break; + } + *r0 += arr[r1]; + if (*r0 < temp1) + *r0 = temp; + if (*r0 > temp) + *r0 = temp1; + if (*r0 != t) + return TRUE; + return FALSE; +} + + +void sub_8115B58(u8 r0) +{ + bool8 var0; + if (!(gMain.newKeys & DPAD_UP) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x0))) + if (!(gMain.newKeys & DPAD_DOWN) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x1))) + if (!(gMain.newKeys & DPAD_LEFT) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x2))) + if (!(gMain.newKeys & DPAD_RIGHT) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x3))) + if (var0) + { + u8 i; + //u16 temp5; + sub_8117158(gTasks[r0].data[0x4]); + sub_8115928(r0, FALSE); + gTasks[r0].data[0x1] = 0; + PlaySE(0x5); + sub_8124D3C(UNKDATA, 0xFFFF); + UNKDATA->val3[0xF].field1 = 0x0; + UNKDATA->val3[0xE].field1 = 0x0; + UNKDATA->val3[0xD].field1 = 0x0; + sub_8116EF8(gTasks[r0].data[0x4]); + for (i = 0; i < 4; i++) + { + struct Sprite *sprite = &gSprites[RDATA->var65[i]]; + //u16 *temp0 = ; //deoptimize ->var65 + sprite->oam.tileNum = ((*sprite->anims)->type + sprite->sheetTileStart); + } + //temp5 = (); + if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4) + { + if ((RDATA->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) == 0) + { + //u16 temp1 = gTasks[r0].data[0x4] - 1; + u32 temp2 = gSprites[RDATA->var65[(u8)(gTasks[r0].data[0x4] - 1)]].sheetTileStart; + temp2 += (u16)((*gSprites[RDATA->var65[r0]].anims + 1)->type); + gSprites[RDATA->var65[r0]].oam.tileNum = temp2; + } + } + } } diff --git a/src/roulette_util.c b/src/roulette_util.c index 9dc92a1df..7501c3d80 100644 --- a/src/roulette_util.c +++ b/src/roulette_util.c @@ -102,7 +102,7 @@ u8 sub_81249E4(struct UnkStruct3 *r0) for (i = 0; i < r0->val6; i++) { u32 offset = r0->val5 + i; - struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; + struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset]; switch(r0->field0) { -- cgit v1.2.3 From 1b87916e0549cf4a087fde6b1c12e9c362ac4d68 Mon Sep 17 00:00:00 2001 From: M Date: Tue, 26 Sep 2017 18:27:22 +0200 Subject: decompiled up to sub_8116EF8, added roulette header --- src/roulette.c | 1171 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1108 insertions(+), 63 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 3a0702d1d..76b5a4d9c 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -1,5 +1,5 @@ #include "global.h" - +#include "roulette.h" #include "roulette_util.h" #include "task.h" #include "palette.h" @@ -15,6 +15,13 @@ #include "sprite.h" #include "menu_cursor.h" #include "sound.h" +#include "songs.h" +#include "m4a.h" +#include "rng.h" +#include "game_stat.h" +#include "rom4.h" +#include "string_util.h" +#include "field_fadetransition.h" extern u8 gUnknown_02019000[]; extern u16 gSpecialVar_0x8004; @@ -41,19 +48,50 @@ extern const u8 gUnknown_081C4157[]; extern const struct YesNoFuncTable gUnknown_083F8EBC; extern const u8 gUnknown_081C41E3; +extern const u16 gUnknown_083F8ECE; + struct StructUnknown_083F8C00 { - u32 var00; + u8 var00; + u8 var01; + u16 var02; u32 var04; u32 var08; u32 var0C; - u32 var10; + u16 var10; + u16 var12; +}; + +struct StructgUnknown_083F8D90 +{ + u8 var00; + u8 var01; + u8 var02; + u8 var03; + u32 var04; }; extern const struct StructUnknown_083F8C00 gUnknown_083F8C00[]; const extern u8 gUnknown_083F8ECA[]; +const extern u8 gUnknown_081C41A5; +const extern u8 gUnknown_081C4199; +const extern u8 gUnknown_081C41AE; + +const extern u8 gUnknown_081C41BD; + +const extern u8 gUnknown_081C41F1; +const extern u8 gUnknown_081C4231; +const extern u8 gUnknown_081C41D2; + +extern const struct StructgUnknown_083F8D90 gUnknown_083F8D90[]; +extern const u32 gUnknown_083F8ED8[]; +extern const u32 gUnknown_083F8EE8[]; + +extern const struct UnkStruct1 gUnknown_083F8E9C[]; + +void sub_8117434(void); void sub_8117838(u8); void sub_811857C(void); @@ -84,6 +122,39 @@ void sub_8115E14(u8); void sub_8116EF8(u8); +void sub_8115ECC(u8); + +u8 sub_8117380(u8); + +void sub_8117AA8(u8, u8); +void sub_8117C60(u8, u8); +void sub_8116100(u8); + +void sub_8116308(u8); + +void sub_81191F4(struct Sprite *); +void sub_811637C(u8); + +u8 sub_8116D54(u8, u8); +u8 sub_8116E5C(u8 ,u8); +void sub_8116474(u8); + +void sub_81184CC(struct Sprite *); +void sub_8117D68(u8); +void sub_8116514(u8); + +void sub_8116638(u8); + +void sub_811677C(u8); +void sub_81167F4(u8); + +void sub_8116880(u8); +void sub_81157AC(u8); + +void sub_8116B40(u8); + + +void dp01t_12_3_battle_menu(u8); extern u8 ewram[]; @@ -91,12 +162,17 @@ extern u8 ewram[]; #define ewram18a32 ((u16 *) (ewram + 0x18A32)) #define ewram18a80 ((u16 *) (ewram + 0x18a80)) #define ewram19000 ((u8 *) (ewram + 0x19000)) -#define ewram190b8 ((u8 *) (ewram + 0x190B8)) #define RDATA ((struct RData *) (ewram + 0x19000)) -#define UNKDATA ((struct UnkStruct0 *) (ewram + 0x190B8)) -//////////////// -struct OamMatrix +#define S16TOPOSFLOAT(val) \ +({ \ + s16 v = (val); \ + float f = (float)v; \ + if(v < 0) f += 65536.0f; \ + f; \ +}) + +struct Matrix { s16 a; s16 b; @@ -104,20 +180,6 @@ struct OamMatrix s16 d; }; -struct SpriteCopyRequest -{ - const u8 *src; - u8 *dest; - u16 size; -}; - -struct OamDimensions -{ - s8 width; - s8 height; -}; -//////////////// - struct Unkg083F8DF4 { u8 var00; @@ -125,21 +187,29 @@ struct Unkg083F8DF4 u8 var02; u8 var03; u8 var04; - u8 v[0x1B]; + u8 v[0x13]; + s16 var18; + s16 var1A; //is this signed or not ? + u8 v2[0x4]; }; struct RData /* ewram + 0x19000 */ { - u8 v00; + u8 var00; u8 var01; u8 var02; - u8 v03; + u8 var03_0:5; + u8 var03_5:1; + u8 var03_6:1; + u8 var03_7:1; u8 var04_0:2; u8 var04_2:5; u8 var04_7:1; u8 v7[0x3]; - u32 var08; // may be bitfield - u8 v0[0xD]; + u32 var08; + u8 var0C[0x6]; + u8 var12[0x4]; + u8 var16[0x3]; u8 var19; u8 var1A_0:4; u8 var1A_4:4; @@ -148,23 +218,43 @@ struct RData /* ewram + 0x19000 */ u8 var22; u8 var23; s16 var24; - u16 var26; + s16 var26; s16 var28; s16 var2A; - struct OamMatrix var2C; + struct Matrix var2C; u16 var34; - u8 v99[0x6]; - u8 var3C; - u8 v67[0x28]; - u8 var65[0x4]; - u8 v6[0x3B]; + u8 v99[0x2]; + struct Sprite *var38; + u8 var3C[0x30]; // TODO: add some defines for the different areas + u8 var6C; + u8 v6[0xF]; + u8 var7C; + u8 var7D; + u8 var7E; + u8 var7F; + s16 var80; + s16 var82; + s16 var84; + s16 var86; + float var88; + float var8C; + float var90; + float var94; + float var98; + float var9C; + float varA0; u8 varA4; u8 varA5; // taskid + u8 v51[0x2]; + u16 varA8; + u16 varAA; + TaskFunc varAC; + u8 v46[0x4]; + TaskFunc varB4; + struct UnkStruct0 varB8; }; -void sub_8117434(void); - void sub_81150FC(void) { u8 *p; @@ -246,9 +336,9 @@ void sub_8115238(void) unfaded[0x51] = arr[1]; unfaded[0x0] = arr[1]; } - sub_8124918(UNKDATA); + sub_8124918((&RDATA->varB8)); for (i = 0; i < 0xD; i++) - sub_812492C(UNKDATA, i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]); + sub_812492C((&RDATA->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]); for (i = 0; i < 0x6; i++) { switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2)) @@ -649,15 +739,15 @@ bool8 sub_8115A94(s16 *r0, u8 r1) t = (u8)*r0; switch (r1) { - case 0x0: - case 0x1: + case 0x0: + case 0x1: temp1 = (*r0 % 5); temp = temp1 + 0xF; if (temp1 == 0) temp1 = 0x5; break; - case 0x2: - case 0x3: + case 0x2: + case 0x3: temp1 = (s16)(*r0 / 5) * 5; temp = temp1 + 0x4; if (temp1 == 0) @@ -674,10 +764,10 @@ bool8 sub_8115A94(s16 *r0, u8 r1) return FALSE; } - void sub_8115B58(u8 r0) { - bool8 var0; + u8 z = 0x0; + bool8 var0 = FALSE; if (!(gMain.newKeys & DPAD_UP) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x0))) if (!(gMain.newKeys & DPAD_DOWN) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x1))) if (!(gMain.newKeys & DPAD_LEFT) || ((var0 = TRUE), sub_8115A94(&gTasks[r0].data[0x4], 0x2))) @@ -685,32 +775,987 @@ void sub_8115B58(u8 r0) if (var0) { u8 i; - //u16 temp5; sub_8117158(gTasks[r0].data[0x4]); sub_8115928(r0, FALSE); - gTasks[r0].data[0x1] = 0; - PlaySE(0x5); - sub_8124D3C(UNKDATA, 0xFFFF); - UNKDATA->val3[0xF].field1 = 0x0; - UNKDATA->val3[0xE].field1 = 0x0; - UNKDATA->val3[0xD].field1 = 0x0; + gTasks[r0].data[0x1] = z; + PlaySE(SE_SELECT); + sub_8124D3C((&RDATA->varB8), 0xFFFF); + (&RDATA->varB8)->val3[0xF].field1 = 0x0; + (&RDATA->varB8)->val3[0xE].field1 = 0x0; + (&RDATA->varB8)->val3[0xD].field1 = 0x0; sub_8116EF8(gTasks[r0].data[0x4]); - for (i = 0; i < 4; i++) + for (i = 0; i < 0x4; i++) { - struct Sprite *sprite = &gSprites[RDATA->var65[i]]; - //u16 *temp0 = ; //deoptimize ->var65 - sprite->oam.tileNum = ((*sprite->anims)->type + sprite->sheetTileStart); + gSprites[RDATA->var3C[i + 0x29]].oam.tileNum = + gSprites[RDATA->var3C[i + 0x29]].sheetTileStart + + (*gSprites[RDATA->var3C[i + 0x29]].anims)->type; } - //temp5 = (); - if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4) + if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4 && !(RDATA->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) ) { - if ((RDATA->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) == 0) - { - //u16 temp1 = gTasks[r0].data[0x4] - 1; - u32 temp2 = gSprites[RDATA->var65[(u8)(gTasks[r0].data[0x4] - 1)]].sheetTileStart; - temp2 += (u16)((*gSprites[RDATA->var65[r0]].anims + 1)->type); - gSprites[RDATA->var65[r0]].oam.tileNum = temp2; - } + z = gTasks[r0].data[0x4] - 1; + gSprites[RDATA->var3C[z + 0x29]].oam.tileNum = + gSprites[RDATA->var3C[z + 0x29]].sheetTileStart + + (*gSprites[RDATA->var3C[z + 0x29]].anims + 1)->type; } } } + +void sub_8115D58(u8 r0) +{ + RDATA->var28 = 0xFF; + if (RDATA->var19 == 1) + RDATA->var23 = 1; + else + RDATA->var23 = 0; + RDATA->var21 = 0; + gTasks[r0].data[0x1] = 0x20; + gTasks[r0].func = &sub_8115ECC; +} + +void sub_8115DA0(u8 taskid) +{ + RDATA->var1B[RDATA->var1A_0] = gTasks[taskid].data[0x4]; + gTasks[taskid].data[0x2] = sub_8117380(RDATA->var1B[RDATA->var1A_0]); + sub_811829C(RDATA->var1B[RDATA->var1A_0]); + if ((gTasks[taskid].data[0xD] -= RDATA->var19) < 0) + gTasks[taskid].data[0xD] = 0; + sub_81180F4(gTasks[taskid].data[0xD]); + gTasks[taskid].func = &sub_8115D58; +} + +void sub_8115E14(u8 taskid) +{ + sub_8115B58(taskid); + switch (gTasks[taskid].data[0x1]) + { + case 0x0: + sub_81157D0(gTasks[taskid].data[0x4]); + gTasks[taskid].data[0x1]+= 1; + break; + case 0x1E: + sub_81157D0(0); + gTasks[taskid].data[0x1]+= 1; + break; + case 0x3B: + gTasks[taskid].data[0x1] = 0; + break; + default: + gTasks[taskid].data[0x1]++; + } + if (gMain.newKeys & A_BUTTON) + { + if ((RDATA->var08 & gUnknown_083F8C00[gTasks[taskid].data[0x4]].var08)) + PlaySE(SE_BOO); + else + { + m4aSongNumStart(SE_REGI); + gTasks[taskid].func = &sub_8115DA0; + } + } +} + +void sub_8115ECC(u8 taskid) +{ + if (gTasks[taskid].data[0x1]-- > 0) + { + if (gTasks[taskid].data[0x1] > 0x2) + gSpriteCoordOffsetX += 0x2; + if ((RDATA->var26 += 0x4) == 0x68) + gSprites[RDATA->var3C[0x19]].callback = &SpriteCallbackDummy; + } + else + { + sub_8117AA8(0x1, 0xFF); + sub_8117C60(0x1, 0xFF); + gTasks[taskid].func = &sub_8116100; + gTasks[taskid].data[0x1] = 0; + } +} + +u8 sub_8115F58(u16 r0, u16 r1) +{ + u8 timeh; + switch (RDATA->var02) + { + case 0x1: // SHROOMISH + case 0x2: // TAILLOW + // one of the two is in party + timeh = gLocalTime.hours - 0x4; + if (!(timeh > 0x5)) + { + if (!(r0 < 0xC || (r1 & 0x1))) + return 0x1; + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 2; + } + } + else if (!(r1 & 0x3)) + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 2; + } + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02; + } + break; + case 0x3: + // both are in party + timeh = gLocalTime.hours - 0x4; + if (!(timeh > 0x6)) + { + if (r0 < 0x6 || (r1 & 0x1)) + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 2; + } + else + { + return 0x1; + } + } + else if ((r1 & 0x1) && !(r0 < 0x7)) + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 4; + } + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 2; + } + break; + case 0: + default: + // neither is in party + timeh = gLocalTime.hours - 0x4; + if (!(timeh > 5)) + { + if (!(r1 & 0x3)) + { + return 0x1; + } + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 2; + } + } + else if (!(r1 & 0x3)) + { + if (!(r0 < 0xD)) + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02 / 2; + } + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02; + } + } + else if (r1 & (0x80 << 8)) + { + if (!(r0 < 0xD)) + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var02; + } + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var01; + } + } + else + { + struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[RDATA->var04_0].var01 * 2; + } + } +} + +#ifdef NONMATCHING +void sub_8116100(u8 taskid) +{ + u8 randf; + u16 floatr; + float tempf; + u32 zzz; + s8 randfinal; + s8 r5; + u16 g; + u16 rand; + u16 randmod; + s16 angles[0x4]; // angles in 90 degree steps + u8 zero = 0x0; + memcpy(angles, &gUnknown_083F8ECE, 0x8); + rand = Random(); + randmod = rand % 0x64; + RDATA->var7C = gTasks[taskid].data[0x6]; + RDATA->var7F = zero; + RDATA->var7E = zero; + RDATA->var7D = zero; + randf = sub_8115F58(gTasks[taskid].data[0x8], rand); + randfinal = (rand % randf) - (randf / 2); + if (gLocalTime.hours < 0xD) + r5 = 0x0; + else + r5 = 0x1; + if (randmod < 0x50) + r5 *= 2; + else + r5 = (1 - r5) * 2; + g = (&gUnknown_083F8DF4[RDATA->var04_0])->var1A; + RDATA->var80 = (g + randfinal); + tempf = S16TOPOSFLOAT(g + randfinal); + // some register differences here + floatr = tempf / 5.0f; + zzz = floatr * 3; + RDATA->var82 = floatr * 3; + RDATA->var84 = floatr; + RDATA->var86 = floatr; + // + RDATA->var88 = S16TOPOSFLOAT(angles[(rand & 0x1) + r5]); + RDATA->var8C = S16TOPOSFLOAT((&gUnknown_083F8DF4[RDATA->var04_0])->var18); + RDATA->var90 = ((RDATA->var8C * 0.5f) - RDATA->var8C) / S16TOPOSFLOAT(zzz); + RDATA->var94 = 68.0f; + RDATA->var9C = 0.0f; + RDATA->var98 = -(8.0f / S16TOPOSFLOAT(zzz)); + RDATA->varA0 = 36.0f; + gTasks[taskid].func = &sub_8116308; +} +#else +__attribute__((naked)) +void sub_8116100(u8 taskid) +{ +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, 0x8\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +mov r9, r0\n\ +movs r4, 0\n\ +ldr r1, _08116188 @ =gUnknown_083F8ECE\n\ +mov r0, sp\n\ +movs r2, 0x8\n\ +bl memcpy\n\ +bl Random\n\ +lsls r0, 16\n\ +lsrs r7, r0, 16\n\ +adds r0, r7, 0\n\ +movs r1, 0x64\n\ +bl __umodsi3\n\ +lsls r0, 16\n\ +lsrs r6, r0, 16\n\ +ldr r3, _0811618C @ =0x02019000\n\ +ldr r1, _08116190 @ =gTasks\n\ +mov r2, r9\n\ +lsls r0, r2, 2\n\ +add r0, r9\n\ +lsls r0, 3\n\ +adds r0, r1\n\ +ldrh r2, [r0, 0x14]\n\ +adds r1, r3, 0\n\ +adds r1, 0x7C\n\ +strb r2, [r1]\n\ +adds r1, 0x3\n\ +strb r4, [r1]\n\ +subs r1, 0x1\n\ +strb r4, [r1]\n\ +subs r1, 0x1\n\ +strb r4, [r1]\n\ +ldrh r0, [r0, 0x18]\n\ +adds r1, r7, 0\n\ +bl sub_8115F58\n\ +adds r4, r0, 0\n\ +lsls r4, 24\n\ +lsrs r1, r4, 24\n\ +adds r0, r7, 0\n\ +bl __modsi3\n\ +lsrs r4, 25\n\ +subs r0, r4\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r0, _08116194 @ =gLocalTime\n\ +ldrb r0, [r0, 0x2]\n\ +lsls r0, 24\n\ +asrs r0, 24\n\ +movs r5, 0x1\n\ +cmp r0, 0xC\n\ +bgt _08116180\n\ +movs r5, 0\n\ +_08116180:\n\ +cmp r6, 0x4F\n\ +bhi _08116198\n\ +lsls r0, r5, 25\n\ +b _081161A2\n\ +.align 2, 0\n\ +_08116188: .4byte gUnknown_083F8ECE\n\ +_0811618C: .4byte 0x02019000\n\ +_08116190: .4byte gTasks\n\ +_08116194: .4byte gLocalTime\n\ +_08116198:\n\ +lsls r1, r5, 24\n\ +asrs r1, 24\n\ +movs r0, 0x1\n\ +subs r0, r1\n\ +lsls r0, 25\n\ +_081161A2:\n\ +lsrs r5, r0, 24\n\ +ldr r6, _081162D8 @ =0x02019000\n\ +ldrb r0, [r6, 0x4]\n\ +lsls r0, 30\n\ +mov r10, r0\n\ +lsrs r0, 25\n\ +ldr r1, _081162DC @ =gUnknown_083F8DF4\n\ +adds r0, r1\n\ +lsls r4, 24\n\ +asrs r4, 24\n\ +ldrh r0, [r0, 0x1A]\n\ +adds r4, r0\n\ +adds r0, r6, 0\n\ +adds r0, 0x80\n\ +strh r4, [r0]\n\ +lsls r4, 16\n\ +asrs r4, 16\n\ +adds r0, r4, 0\n\ +bl __floatsisf\n\ +cmp r4, 0\n\ +bge _081161D4\n\ +ldr r1, _081162E0 @ =0x47800000\n\ +bl __addsf3\n\ +_081161D4:\n\ +ldr r1, _081162E4 @ =0x40a00000\n\ +bl __divsf3\n\ +bl __fixunssfsi\n\ +lsls r0, 16\n\ +lsrs r4, r0, 16\n\ +lsls r0, r4, 1\n\ +adds r0, r4\n\ +mov r8, r0\n\ +adds r0, r6, 0\n\ +adds r0, 0x82\n\ +mov r2, r8\n\ +strh r2, [r0]\n\ +adds r0, 0x2\n\ +strh r4, [r0]\n\ +adds r0, 0x2\n\ +strh r4, [r0]\n\ +movs r0, 0x1\n\ +ands r0, r7\n\ +lsls r1, r5, 24\n\ +asrs r1, 24\n\ +adds r0, r1\n\ +lsls r0, 1\n\ +add r0, sp\n\ +movs r1, 0\n\ +ldrsh r4, [r0, r1]\n\ +adds r0, r4, 0\n\ +bl __floatsisf\n\ +cmp r4, 0\n\ +bge _0811621A\n\ +ldr r1, _081162E0 @ =0x47800000\n\ +bl __addsf3\n\ +_0811621A:\n\ +ldr r2, _081162E8 @ =0x02019088\n\ +str r0, [r2]\n\ +adds r7, r6, 0\n\ +adds r7, 0x8C\n\ +mov r1, r10\n\ +lsrs r0, r1, 25\n\ +ldr r2, _081162DC @ =gUnknown_083F8DF4\n\ +adds r0, r2\n\ +movs r1, 0x18\n\ +ldrsh r4, [r0, r1]\n\ +adds r0, r4, 0\n\ +bl __floatsisf\n\ +adds r5, r0, 0\n\ +cmp r4, 0\n\ +bge _08116242\n\ +ldr r1, _081162E0 @ =0x47800000\n\ +bl __addsf3\n\ +adds r5, r0, 0\n\ +_08116242:\n\ +str r5, [r7]\n\ +adds r7, r6, 0\n\ +adds r7, 0x90\n\ +ldr r1, _081162EC @ =0x3f000000\n\ +adds r0, r5, 0\n\ +bl __mulsf3\n\ +adds r1, r5, 0\n\ +bl __subsf3\n\ +adds r5, r0, 0\n\ +mov r2, r8\n\ +lsls r0, r2, 16\n\ +asrs r4, r0, 16\n\ +adds r0, r4, 0\n\ +bl __floatsisf\n\ +adds r2, r0, 0\n\ +cmp r4, 0\n\ +bge _08116272\n\ +ldr r1, _081162E0 @ =0x47800000\n\ +bl __addsf3\n\ +adds r2, r0, 0\n\ +_08116272:\n\ +adds r0, r5, 0\n\ +adds r1, r2, 0\n\ +bl __divsf3\n\ +str r0, [r7]\n\ +adds r1, r6, 0\n\ +adds r1, 0x94\n\ +ldr r0, _081162F0 @ =0x42880000\n\ +str r0, [r1]\n\ +adds r1, 0x8\n\ +ldr r0, _081162F4 @ =0x00000000\n\ +str r0, [r1]\n\ +adds r5, r6, 0\n\ +adds r5, 0x98\n\ +adds r0, r4, 0\n\ +bl __floatsisf\n\ +adds r2, r0, 0\n\ +cmp r4, 0\n\ +bge _081162A2\n\ +ldr r1, _081162E0 @ =0x47800000\n\ +bl __addsf3\n\ +adds r2, r0, 0\n\ +_081162A2:\n\ +ldr r0, _081162F8 @ =0x41000000\n\ +adds r1, r2, 0\n\ +bl __divsf3\n\ +bl __negsf2\n\ +str r0, [r5]\n\ +adds r1, r6, 0\n\ +adds r1, 0xA0\n\ +ldr r0, _081162FC @ =0x42100000\n\ +str r0, [r1]\n\ +ldr r1, _08116300 @ =gTasks\n\ +mov r2, r9\n\ +lsls r0, r2, 2\n\ +add r0, r9\n\ +lsls r0, 3\n\ +adds r0, r1\n\ +ldr r1, _08116304 @ =sub_8116308\n\ +str r1, [r0]\n\ +add sp, 0x8\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\ +.align 2, 0\n\ +_081162D8: .4byte 0x02019000\n\ +_081162DC: .4byte gUnknown_083F8DF4\n\ +_081162E0: .4byte 0x47800000\n\ +_081162E4: .4byte 0x40a00000\n\ +_081162E8: .4byte 0x02019088\n\ +_081162EC: .4byte 0x3f000000\n\ +_081162F0: .4byte 0x42880000\n\ +_081162F4: .4byte 0x00000000\n\ +_081162F8: .4byte 0x41000000\n\ +_081162FC: .4byte 0x42100000\n\ +_08116300: .4byte gTasks\n\ +_08116304: .4byte sub_8116308\n\ +.syntax divided\n"); +} +#endif + +void sub_8116308(u8 taskid) +{ + u8 index; + RDATA->var03_7 = 1; + index = RDATA->var3C[RDATA->var7C]; + RDATA->var38 = &gSprites[index]; + (&gSprites[index])->callback = &sub_81191F4; + gTasks[taskid].data[0x6]++; + gTasks[taskid].data[0x8]++; + sub_81182F8(0x6 - gTasks[taskid].data[0x6]); + m4aSongNumStart(SE_TAMAKORO); + gTasks[taskid].func = &sub_811637C; +} + +void sub_811637C(u8 taskid) +{ + if (RDATA->var7D) + { + if (RDATA->var03_5) + { + if (RDATA->var03_6) + { + RDATA->var03_6 = FALSE; + RDATA->var03_5 = FALSE; + } + } + else + { + if (!gTasks[taskid].data[0x1]) + { + u8 temp = sub_8116E5C(sub_8116D54(taskid, RDATA->var7E), RDATA->var1B[RDATA->var1A_0]); + gTasks[taskid].data[0x5] = temp; + if (temp == 1) + sub_8124CE8((&RDATA->varB8), 0x1000); + } + if (gTasks[taskid].data[0x1] < 0x3D) + { + if (gMain.newKeys & A_BUTTON) + gTasks[taskid].data[0x1] = 0x3C; + gTasks[taskid].data[0x1]++; + } + else + { + sub_8117158(RDATA->var1B[RDATA->var1A_0]); + sub_8117AA8(0x0, (u8)gTasks[taskid].data[0xC]); + sub_8117C60(0x0, (u8)gTasks[taskid].data[0x6] - 0x1); + gTasks[taskid].data[0x1] = 0x20; + gTasks[taskid].func = &sub_8116474; + } + } + } +} + +void sub_8116474(u8 taskid) +{ + if (gTasks[taskid].data[0x1]-- > 0x0) + { + if(gTasks[taskid].data[0x1] > 0x2) + gSpriteCoordOffsetX -= 0x2; + if((RDATA->var26 -= 0x4) == 0x68) + gSprites[RDATA->var3C[0x19]].callback = &sub_81184CC; + } + else + { + sub_8117D68(gTasks[taskid].data[0xC]); + if (gTasks[taskid].data[0x5] == 1) + gTasks[taskid].data[0x1] = 0x79; + else + gTasks[taskid].data[0x1] = 0x3D; + gTasks[taskid].func = &sub_8116514; + } +} + +void sub_8116514(u8 taskid) +{ + if (gTasks[taskid].data[0x1]-- > 0x1) + { + switch(gTasks[taskid].data[0x1] % 0x10) + { + case 0x8: + sub_8117AA8(0x0, 0xFF); + sub_8117C60(0x0, 0xFF); + break; + case 0x0: + sub_8117AA8(0x0, (u8)gTasks[taskid].data[0xC]); + sub_8117C60(0x0, (u8)gTasks[taskid].data[0x6] - 0x1); + break; + } + } + else + { + sub_8116C34(taskid, &sub_8116638, 0x1E, 0x0); + } +} + +void sub_811659C(u8 taskid) +{ + switch(gTasks[taskid].data[0x5]) + { + case 0x1: + case 0x2: + if (IsFanfareTaskInactive()) + { + u32 wins = GetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS); + if(wins < ++gTasks[taskid].data[0xB]) + SetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS, gTasks[taskid].data[0xB]); + sub_8116C34(taskid, &sub_811677C, 0xFFFF, 0x3); + } + break; + case 0: + default: + if (!IsSEPlaying()) + { + gTasks[taskid].data[0xB] = FALSE; + sub_8116C34(taskid, &sub_81167F4, 0xFFFF, 0x3); + } + } +} + +void sub_8116638(u8 taskid) +{ + switch(gTasks[taskid].data[0x5]) + { + case 0x1: + case 0x2: + if (gTasks[taskid].data[0x2] == 0xC) + { + PlayFanfare(BGM_ME_B_BIG); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C41A5, 0x1, 0xF); + } + else + { + PlayFanfare(BGM_ME_B_SMALL); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C4199, 0x1, 0xF); + } + break; + case 0: + default: + m4aSongNumStart(SE_HAZURE); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C41AE, 0x1, 0xF); + } + gTasks[taskid].data[0x1] = 0x0; + gTasks[taskid].func = &sub_811659C; +} + +void sub_81166E8(u8 taskid) +{ + s32 r0 = gTasks[taskid].data[0x7]; + switch(r0) + { + case 0x0: + gTasks[taskid].data[0xD]++; + m4aSongNumStart(SE_PIN); + sub_81180F4(gTasks[taskid].data[0xD]); + if (gTasks[taskid].data[0xD] > 0x270E) + { + gTasks[taskid].data[0x1] = r0; + } + else + { + gTasks[taskid].data[0x1]--; + gTasks[taskid].data[0x7]++; + } + break; + case 0x3: + m4aSongNumStop(SE_PIN); + gTasks[taskid].data[0x7] = 0x0; + break; + default: + gTasks[taskid].data[0x7]++; + } + if (gTasks[taskid].data[0x1] == 0x0) + sub_8116C34(taskid, &sub_81167F4, 0xFFFF, 0x3); +} + +void sub_811677C(u8 taskid) +{ + ConvertIntToDecimalStringN((u8 *)&gStringVar1, (RDATA->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2); + StringExpandPlaceholders((u8 *)&gStringVar4, &gUnknown_081C41BD); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint((u8 *)&gStringVar4, 0x1, 0xF); + gTasks[taskid].data[0x1] = (RDATA->var19 * gTasks[taskid].data[0x2]); + gTasks[taskid].data[0x7] = 0x0; + gTasks[taskid].func = &sub_81166E8; +} + +void sub_81167F4(u8 taskid) +{ + sub_8124D3C((&RDATA->varB8), 0xFFFF); + (&RDATA->varB8)->val3[0xF].field1 = 0x0; + (&RDATA->varB8)->val3[0xE].field1 = 0x0; + (&RDATA->varB8)->val3[0xD].field1 = 0x0; + gSprites[RDATA->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE; + gTasks[taskid].func = &sub_8116880; +} + +void sub_8116880(u8 taskid) +{ + u8 i = 0; + gTasks[taskid].data[0x4] = i; + RDATA->var1B[RDATA->var1A_0] = 0x0; + sub_8117158(0x0); + gSprites[RDATA->var6C].invisible = TRUE; + for (i = 0; i < 0x4; i++) + { + gSprites[RDATA->var3C[i + 0x29]].oam.tileNum = + gSprites[RDATA->var3C[i + 0x29]].sheetTileStart + + (*gSprites[RDATA->var3C[i + 0x29]].anims)->type; + } + if (!(gTasks[taskid].data[0xD] < RDATA->var19)) + { + if (gTasks[taskid].data[0x6] == 0x6) + { + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C41F1, 0x1, 0xF); + sub_8116C34(taskid, &dp01t_12_3_battle_menu, 0xFFFF, 0x3); + } + else if (gTasks[taskid].data[0xD] == 0x270F) + { + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C4231, 0x1, 0xF); + sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3); + } + else + { + gTasks[taskid].func = &sub_8115734; + } + } + else + { + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C41D2, 0x1, 0xF); + sub_8116C34(taskid, &sub_81157AC, 0x3C, 0x3); + } +} + +void dp01t_12_3_battle_menu(u8 taskid) +{ + u8 i = 0x0; + gTasks[taskid].data[0x6] = 0x0; + sub_8116CAC(taskid); + sub_8116CF8(); + sub_81185E8(); + sub_8117158(0x0); + sub_81182F8(0x6); + for (i = 0; i < 0xC; i++) + gSprites[RDATA->var3C[i + 0x7]].invisible = FALSE; + if (gTasks[taskid].data[0xD] == 0x270F) + { + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C4231, 0x1, 0xF); + sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3); + } + else + { + gTasks[taskid].func = &sub_8115734; + } +} + +void sub_8116AB0(u8 taskid) +{ + sub_8124D3C((&RDATA->varB8), 0xFFFF); + sub_8124918((&RDATA->varB8)); + gSaveBlock1.coins = gTasks[taskid].data[0xD]; + if (gSaveBlock1.coins < RDATA->var19) + gSpecialVar_0x8004 = TRUE; + else + gSpecialVar_0x8004 = FALSE; + BeginHardwarePaletteFade(0xFF, 0x0, 0x0, 0x10, 0x0); + gTasks[taskid].func = &sub_8116B40; +} + +void sub_8116B40(u8 taskid) // end oulette ? +{ + if (UpdatePaletteFade() == 0) + { + SetVBlankCallback(0x0); + memset(RDATA, 0x0, 0x17C); + gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0; + sub_80F9368(); + FreeAllSpritePalettes(); + ResetPaletteFade(); + ResetSpriteData(); + sub_80F9020(); + REG_BLDCNT = 0x0; + REG_BLDALPHA = 0x0; + REG_BLDY = 0x0; + gFieldCallback = &sub_8080990; + SetMainCallback2(&c2_exit_to_overworld_2_switch); + DestroyTask(taskid); + } +} + +void sub_8116BC0(u8 taskid) +{ + if(RDATA->varA8 == 0 || gMain.newKeys & RDATA->varAA) + { + gTasks[taskid].func = RDATA->varAC; + if (RDATA->varAA > 0) + PlaySE(SE_SELECT); + RDATA->varAC = NULL; + RDATA->varAA = 0x0; + RDATA->varA8 = 0x0; + } + if (RDATA->varA8 != 0xFFFF) + RDATA->varA8--; +} + +void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3) +{ + RDATA->varB4 = gTasks[taskid].func; + if(r1 == NULL) + r1 = RDATA->varB4; + RDATA->varAC = r1; + RDATA->varA8 = r2; + if (r2 == 0xFFFF && r3 == 0) + RDATA->varAA = 0xFFFF; + else + RDATA->varAA = r3; + gTasks[taskid].func = &sub_8116BC0; +} + +void sub_8116CAC(u8 taskid) +{ + u8 i = 0; + RDATA->var00 = i; + RDATA->var03_0 = 0x0; + RDATA->var03_5 = 0x0; + RDATA->var03_6 = 0x0; + RDATA->var03_7 = 0x0; + for (i = 0; i < 0x6; i++) + RDATA->var1B[i] = 0x0; + RDATA->var1A_0 = 0x0; + gTasks[taskid].data[0x1] = 0x0; +} + +void sub_8116CF8(void) +{ + u8 i; + RDATA->var08 = 0x0; + for (i = 0; i < 0x6; i++) + RDATA->var0C[i] = 0x0; + for (i = 0; i < 0x4; i++) + RDATA->var12[i] = 0x0; + for (i = 0; i < 0x3; i++) + RDATA->var16[i] = 0x0; + sub_8117C60(0x1, 0xFF); +} + +u8 sub_8116D54(u8 taskid, u8 r1) +{ + u32 t0[0x4]; + u32 t1[0x3]; + memcpy(t0, gUnknown_083F8ED8, 0x10); + memcpy(t1, gUnknown_083F8EE8, 0xC); + if (r1 > 0xB) + { + return 0x0; + } + else + { + u8 i; + u8 z; + RDATA->var0C[gTasks[taskid].data[0x6] - 1] = gUnknown_083F8D90[r1].var02; + gTasks[taskid].data[0xC] = gUnknown_083F8D90[r1].var02; + RDATA->var08 |= gUnknown_083F8D90[r1].var04; + for (i = 0; i < 0x4; i++) + { + if (gUnknown_083F8D90[r1].var04 & t0[i]) + RDATA->var12[i]++; + if (RDATA->var12[i] > 0x2) + RDATA->var08 |= t0[i]; + } + for (z = 0; z < 0x3; z++) + { + if (gUnknown_083F8D90[r1].var04 & t1[z]) + RDATA->var16[z]++; + if (RDATA->var16[z] > 0x3) + RDATA->var08 |= t1[z]; + } + return gUnknown_083F8D90[r1].var02; + } +} + +u8 sub_8116E5C(u8 r0, u8 r1) +{ + u8 t = r0; + if (--r0 < 0x13) + { + switch(r1) + { + case 0x0: + return 0x3; + break; + case 0x1 ... 0x4: + if (t == r1 + 5 || t == r1 + 10 || t == r1 + 15) + return 0x1; + break; + case 0x5: + case 0xA: + case 0xF: + if (!(t < r1 + 1) && !(t > r1 + 4)) + return 0x1; + break; + default: + if (t == r1) + return 0x1; + } + } + return 0x0; +} +/* +void sub_8116EF8(u8 r0) +{ + + u32 var0 = 0x0; + struct UnkStruct1 var1[0x3]; + u32 var2; + u16 var3; + u32 var4; + u8 i; + switch(r0) + { + case 0x5: + case 0xA: + case 0xF: + for (i = (r0 + 0x1); i < (r0 + 0x5); i++) + if (!(RDATA->var08 & gUnknown_083F8C00[i].var08)) + var0 |= gUnknown_083F8C00[i].var10; + var0 &= 0xDFFF; + sub_8124CE8(&RDATA->varB8, var0); + break; + default: + memcpy(var1, gUnknown_083F8E9C, 0x18); + if ((u8)(r0 - 0x1) < 0x4) + var2 = 0x3; + else + var2 = 0x1; + var3 = ((r0 / 0x5) - 0x1); + switch((u8)r0 % 0x5) + { + case 0x1: + var3 = gSprites[RDATA->var3C[0x7 + 0x0]].oam.paletteNum * 0x10; + break; + case 0x2: + var3 = gSprites[RDATA->var3C[0x7 + 0x1]].oam.paletteNum * 0x10; + break; + case 0x3: + var3 = gSprites[RDATA->var3C[0x7 + 0x2]].oam.paletteNum * 0x10; + break; + case 0x4: + var3 = gSprites[RDATA->var3C[0x7 + 0x3]].oam.paletteNum * 0x10; + break; + } + if (var2 == 0x1) + { + if (!(RDATA->var08 & gUnknown_083F8C00[r0].var08)) + { + var4 = (r0 / 0x5); + var1[var4 - 0x1].val1 += var3; + sub_812492C(&RDATA->varB8, 0xD, &var1[var4 - 0x2]); + sub_8124CE8(&RDATA->varB8, var0 |= gUnknown_083F8C00[r0].var10); + } + } + else + { + //u8 i; + for (i = 0; i < 0x3; i++) + { + u8 var4 = i * 0x5 + r0 + 0x5; + if (!(RDATA->var08 & gUnknown_083F8C00[var4].var08)) + { + u8 var5 = (var4 / 0x5); + var1[var5 - 0x1].val1 += var3; + sub_812492C(&RDATA->varB8, (u8)(0xD + i), &var1[var5 - 0x2]); + if (var2 == 0x3) + var0 = gUnknown_083F8C00[var4].var10; + var2--; + } + } + if (var2 != 0x2) + var0 = 0x0; + sub_8124CE8(&RDATA->varB8, var0 |= gUnknown_083F8C00[r0].var10); + } + } +} +*/ -- cgit v1.2.3 From ed7956354c7e6a761f777c2c43f5538a862656a1 Mon Sep 17 00:00:00 2001 From: M Date: Sun, 19 Nov 2017 10:05:43 +0100 Subject: decompiled up to sub_811857C --- src/roulette.c | 1648 ++++++++++++++++++++++++++++++++++++++++++++++++++- src/roulette_util.c | 80 ++- 2 files changed, 1666 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 76b5a4d9c..1661cce03 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -22,6 +22,10 @@ #include "rom4.h" #include "string_util.h" #include "field_fadetransition.h" +#include "script.h" +#include "strings2.h" + +asm(".include \"constants/gba_constants.inc\""); extern u8 gUnknown_02019000[]; extern u16 gSpecialVar_0x8004; @@ -53,9 +57,14 @@ extern const u16 gUnknown_083F8ECE; struct StructUnknown_083F8C00 { u8 var00; - u8 var01; - u16 var02; - u32 var04; + u8 var01_0:4; + u8 var01_4:4; + u8 var02; + u8 var03; + u8 var04; + u8 var05; + u8 var06; + u8 var07; u32 var08; u32 var0C; u16 var10; @@ -91,6 +100,45 @@ extern const u32 gUnknown_083F8EE8[]; extern const struct UnkStruct1 gUnknown_083F8E9C[]; +extern const u8 gUnknown_083F8EF4[]; + +extern const struct YesNoFuncTable gUnknown_083F8EB4; + +//Strings TODO: give proper names +extern const u8 gUnknown_081C40DF; +extern const u8 gUnknown_081C4139; +extern const u8 gUnknown_081C411C; + +extern const u8 gUnknown_083F92A8[]; +extern const u8 gUnknown_083F90FC[]; +extern const u8 gUnknown_083F9D3C[]; +extern const struct SpritePalette gUnknown_083F9E30; +extern const struct SpriteSheet gUnknown_083F9F54; +extern const struct SpriteSheet gUnknown_083F9F5C; +extern const struct SpriteTemplate gSpriteTemplate_83FA07C[]; +extern const struct SpriteTemplate gSpriteTemplate_83F9FD4[]; +extern const struct SpriteTemplate gSpriteTemplate_83FA034[]; + +extern const struct SpriteTemplate gSpriteTemplate_83FA40C; + +extern const struct SpriteSheet gUnknown_083F9EE8; +extern const struct SpriteTemplate gSpriteTemplate_83FA0DC[]; + +extern struct OamMatrix gOamMatrices[]; + +extern const struct SpriteSheet gUnknown_083FA21C[]; +extern const struct SpriteTemplate gSpriteTemplate_83FA2B0; +extern const struct SpriteTemplate gSpriteTemplate_83FA2C8; +extern const struct SpriteTemplate gSpriteTemplate_83FA2E0; +extern const struct SpriteTemplate gSpriteTemplate_83FA2F8; +extern const struct SpriteTemplate gSpriteTemplate_83FA310; + +extern const u8 gUnknown_083FA608[0x5]; + +extern const struct SpriteSheet gUnknown_083FA42C; +extern const struct SpriteTemplate gSpriteTemplate_83FA434; + + void sub_8117434(void); void sub_8117838(u8); @@ -158,10 +206,15 @@ void dp01t_12_3_battle_menu(u8); extern u8 ewram[]; +#define ewram17000 ((u16 *) (ewram + 0x17000)) //money stuff? +#define ewram17E00 ((u16 *) (ewram + 0x17E00)) +#define ewram17800 ((u16 *) (ewram + 0x17800)) +#define ewram18000 ((u16 *) (ewram + 0x18000)) +#define ewram18800 ((u16 *) (ewram + 0x18800)) +#define ewram189a0 ((u16 *) (ewram + 0x189a0)) #define ewram18a20 ((u16 *) (ewram + 0x18a20)) #define ewram18a32 ((u16 *) (ewram + 0x18A32)) #define ewram18a80 ((u16 *) (ewram + 0x18a80)) -#define ewram19000 ((u8 *) (ewram + 0x19000)) #define RDATA ((struct RData *) (ewram + 0x19000)) #define S16TOPOSFLOAT(val) \ @@ -172,7 +225,7 @@ extern u8 ewram[]; f; \ }) -struct Matrix +struct OamMatrix { s16 a; s16 b; @@ -221,13 +274,11 @@ struct RData /* ewram + 0x19000 */ s16 var26; s16 var28; s16 var2A; - struct Matrix var2C; + struct OamMatrix var2C; u16 var34; u8 v99[0x2]; struct Sprite *var38; - u8 var3C[0x30]; // TODO: add some defines for the different areas - u8 var6C; - u8 v6[0xF]; + u8 var3C[0x40]; // Sprite IDs ? TODO: add some defines for the different areas u8 var7C; u8 var7D; u8 var7E; @@ -257,15 +308,11 @@ struct RData /* ewram + 0x19000 */ void sub_81150FC(void) { - u8 *p; - struct UnkStruct0 *s; RunTasks(); AnimateSprites(); BuildOamBuffer(); - p = ewram19000; - s = (struct UnkStruct0 *)(&p[0xB8]); - if (s->val0) - task_tutorial_controls_fadein(s); + if (RDATA->varB8.val0) + task_tutorial_controls_fadein(&RDATA->varB8); } void sub_8115124(void) @@ -1474,7 +1521,7 @@ void sub_8116880(u8 taskid) gTasks[taskid].data[0x4] = i; RDATA->var1B[RDATA->var1A_0] = 0x0; sub_8117158(0x0); - gSprites[RDATA->var6C].invisible = TRUE; + gSprites[RDATA->var3C[0x30]].invisible = TRUE; for (i = 0; i < 0x4; i++) { gSprites[RDATA->var3C[i + 0x29]].oam.tileNum = @@ -1683,7 +1730,8 @@ u8 sub_8116E5C(u8 r0, u8 r1) } return 0x0; } -/* + +#ifdef NONMATCHING // stack variable switched with a register variable void sub_8116EF8(u8 r0) { @@ -1738,7 +1786,6 @@ void sub_8116EF8(u8 r0) } else { - //u8 i; for (i = 0; i < 0x3; i++) { u8 var4 = i * 0x5 + r0 + 0x5; @@ -1758,4 +1805,1569 @@ void sub_8116EF8(u8 r0) } } } + +#else +__attribute__((naked)) +void sub_8116EF8(u8 r0) +{ +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, 0x20\n\ +lsls r0, 24\n\ +lsrs r6, r0, 24\n\ +movs r0, 0\n\ +str r0, [sp, 0x18]\n\ +cmp r6, 0xA\n\ +beq _08116F1E\n\ +cmp r6, 0xA\n\ +bgt _08116F1A\n\ +cmp r6, 0x5\n\ +beq _08116F1E\n\ +b _08116F7C\n\ +_08116F1A:\n\ +cmp r6, 0xF\n\ +bne _08116F7C\n\ +_08116F1E:\n\ +adds r0, r6, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +adds r0, r6, 0x5\n\ +ldr r7, _08116F70 @ =0x020190b8\n\ +cmp r4, r0\n\ +bge _08116F5E\n\ +adds r1, r7, 0\n\ +subs r1, 0xB8\n\ +ldr r3, _08116F74 @ =gUnknown_083F8C00\n\ +ldr r5, [r1, 0x8]\n\ +adds r6, r3, 0\n\ +adds r6, 0x8\n\ +adds r2, r0, 0\n\ +_08116F3A:\n\ +lsls r0, r4, 2\n\ +adds r0, r4\n\ +lsls r1, r0, 2\n\ +adds r0, r1, r6\n\ +ldr r0, [r0]\n\ +ands r0, r5\n\ +cmp r0, 0\n\ +bne _08116F54\n\ +adds r0, r1, r3\n\ +ldrh r0, [r0, 0x10]\n\ +ldr r1, [sp, 0x18]\n\ +orrs r1, r0\n\ +str r1, [sp, 0x18]\n\ +_08116F54:\n\ +adds r0, r4, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +cmp r4, r2\n\ +blt _08116F3A\n\ +_08116F5E:\n\ +ldr r0, _08116F78 @ =0x0000dfff\n\ +ldr r2, [sp, 0x18]\n\ +ands r2, r0\n\ +str r2, [sp, 0x18]\n\ +adds r0, r7, 0\n\ +adds r1, r2, 0\n\ +bl sub_8124CE8\n\ +b _0811713C\n\ +.align 2, 0\n\ +_08116F70: .4byte 0x020190b8\n\ +_08116F74: .4byte gUnknown_083F8C00\n\ +_08116F78: .4byte 0x0000dfff\n\ +_08116F7C:\n\ +mov r0, sp\n\ +ldr r1, _08116FC8 @ =gUnknown_083F8E9C\n\ +ldm r1!, {r2-r4}\n\ +stm r0!, {r2-r4}\n\ +ldm r1!, {r2-r4}\n\ +stm r0!, {r2-r4}\n\ +subs r0, r6, 0x1\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +movs r3, 0x1\n\ +mov r10, r3\n\ +cmp r0, 0x3\n\ +bhi _08116F9A\n\ +movs r4, 0x3\n\ +mov r10, r4\n\ +_08116F9A:\n\ +adds r0, r6, 0\n\ +movs r1, 0x5\n\ +bl __udivsi3\n\ +lsls r0, 24\n\ +lsrs r0, 8\n\ +ldr r1, _08116FCC @ =0xffff0000\n\ +adds r0, r1\n\ +lsrs r7, r0, 16\n\ +adds r0, r6, 0\n\ +movs r1, 0x5\n\ +bl __umodsi3\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +cmp r0, 0x2\n\ +beq _08116FF8\n\ +cmp r0, 0x2\n\ +bgt _08116FD4\n\ +cmp r0, 0x1\n\ +beq _08116FE4\n\ +ldr r4, _08116FD0 @ =0x02019000\n\ +b _0811703A\n\ +.align 2, 0\n\ +_08116FC8: .4byte gUnknown_083F8E9C\n\ +_08116FCC: .4byte 0xffff0000\n\ +_08116FD0: .4byte 0x02019000\n\ +_08116FD4:\n\ +cmp r0, 0x3\n\ +beq _0811700C\n\ +cmp r0, 0x4\n\ +beq _08117020\n\ +ldr r4, _08116FE0 @ =0x02019000\n\ +b _0811703A\n\ +.align 2, 0\n\ +_08116FE0: .4byte 0x02019000\n\ +_08116FE4:\n\ +ldr r3, _08116FF0 @ =gSprites\n\ +ldr r2, _08116FF4 @ =0x02019000\n\ +adds r0, r2, 0\n\ +adds r0, 0x43\n\ +b _08117028\n\ +.align 2, 0\n\ +_08116FF0: .4byte gSprites\n\ +_08116FF4: .4byte 0x02019000\n\ +_08116FF8:\n\ +ldr r3, _08117004 @ =gSprites\n\ +ldr r2, _08117008 @ =0x02019000\n\ +adds r0, r2, 0\n\ +adds r0, 0x44\n\ +b _08117028\n\ +.align 2, 0\n\ +_08117004: .4byte gSprites\n\ +_08117008: .4byte 0x02019000\n\ +_0811700C:\n\ +ldr r3, _08117018 @ =gSprites\n\ +ldr r2, _0811701C @ =0x02019000\n\ +adds r0, r2, 0\n\ +adds r0, 0x45\n\ +b _08117028\n\ +.align 2, 0\n\ +_08117018: .4byte gSprites\n\ +_0811701C: .4byte 0x02019000\n\ +_08117020:\n\ +ldr r3, _08117088 @ =gSprites\n\ +ldr r2, _0811708C @ =0x02019000\n\ +adds r0, r2, 0\n\ +adds r0, 0x46\n\ +_08117028:\n\ +ldrb r1, [r0]\n\ +lsls r0, r1, 4\n\ +adds r0, r1\n\ +lsls r0, 2\n\ +adds r0, r3\n\ +ldrb r0, [r0, 0x5]\n\ +lsrs r0, 4\n\ +lsls r7, r0, 4\n\ +adds r4, r2, 0\n\ +_0811703A:\n\ +mov r2, r10\n\ +cmp r2, 0x1\n\ +bne _08117094\n\ +ldr r1, _08117090 @ =gUnknown_083F8C00\n\ +lsls r2, r6, 2\n\ +adds r0, r2, r6\n\ +lsls r0, 2\n\ +adds r1, 0x8\n\ +adds r0, r1\n\ +ldr r1, [r4, 0x8]\n\ +ldr r0, [r0]\n\ +ands r1, r0\n\ +str r2, [sp, 0x1C]\n\ +cmp r1, 0\n\ +bne _0811713C\n\ +adds r0, r6, 0\n\ +movs r1, 0x5\n\ +bl __udivsi3\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +subs r1, r0, 0x1\n\ +lsls r1, 3\n\ +mov r3, sp\n\ +adds r2, r3, r1\n\ +ldrh r1, [r2, 0x2]\n\ +adds r1, r7, r1\n\ +strh r1, [r2, 0x2]\n\ +adds r1, r4, 0\n\ +adds r1, 0xB8\n\ +lsls r0, 3\n\ +subs r0, 0x8\n\ +adds r2, r3, r0\n\ +adds r0, r1, 0\n\ +movs r1, 0xD\n\ +bl sub_812492C\n\ +b _08117122\n\ +.align 2, 0\n\ +_08117088: .4byte gSprites\n\ +_0811708C: .4byte 0x02019000\n\ +_08117090: .4byte gUnknown_083F8C00\n\ +_08117094:\n\ +movs r4, 0\n\ +lsls r0, r6, 2\n\ +str r0, [sp, 0x1C]\n\ +ldr r1, _0811714C @ =0x02019000\n\ +mov r8, r1\n\ +ldr r2, _08117150 @ =gUnknown_083F8C00\n\ +mov r9, r2\n\ +_081170A2:\n\ +lsls r0, r4, 2\n\ +adds r0, r4\n\ +adds r0, r6, r0\n\ +adds r0, 0x5\n\ +lsls r0, 24\n\ +lsrs r2, r0, 24\n\ +lsls r0, r2, 2\n\ +adds r0, r2\n\ +lsls r5, r0, 2\n\ +mov r0, r9\n\ +adds r0, 0x8\n\ +adds r0, r5, r0\n\ +mov r3, r8\n\ +ldr r1, [r3, 0x8]\n\ +ldr r0, [r0]\n\ +ands r1, r0\n\ +cmp r1, 0\n\ +bne _0811710E\n\ +adds r0, r2, 0\n\ +movs r1, 0x5\n\ +bl __udivsi3\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +subs r1, r0, 0x1\n\ +lsls r1, 3\n\ +mov r3, sp\n\ +adds r2, r3, r1\n\ +ldrh r1, [r2, 0x2]\n\ +adds r1, r7, r1\n\ +strh r1, [r2, 0x2]\n\ +adds r1, r4, 0\n\ +adds r1, 0xD\n\ +lsls r1, 24\n\ +lsrs r1, 24\n\ +lsls r0, 3\n\ +subs r0, 0x8\n\ +adds r2, r3, r0\n\ +mov r0, r8\n\ +adds r0, 0xB8\n\ +bl sub_812492C\n\ +mov r0, r10\n\ +cmp r0, 0x3\n\ +bne _08117104\n\ +mov r1, r9\n\ +adds r0, r5, r1\n\ +ldrh r0, [r0, 0x10]\n\ +str r0, [sp, 0x18]\n\ +_08117104:\n\ +mov r0, r10\n\ +subs r0, 0x1\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +mov r10, r0\n\ +_0811710E:\n\ +adds r0, r4, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +cmp r4, 0x2\n\ +bls _081170A2\n\ +mov r2, r10\n\ +cmp r2, 0x2\n\ +beq _08117122\n\ +movs r3, 0\n\ +str r3, [sp, 0x18]\n\ +_08117122:\n\ +ldr r0, _08117154 @ =0x020190b8\n\ +ldr r2, _08117150 @ =gUnknown_083F8C00\n\ +ldr r4, [sp, 0x1C]\n\ +adds r1, r4, r6\n\ +lsls r1, 2\n\ +adds r1, r2\n\ +ldrh r1, [r1, 0x10]\n\ +ldr r2, [sp, 0x18]\n\ +orrs r2, r1\n\ +str r2, [sp, 0x18]\n\ +adds r1, r2, 0\n\ +bl sub_8124CE8\n\ +_0811713C:\n\ +add sp, 0x20\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\ +.align 2, 0\n\ +_0811714C: .4byte 0x02019000\n\ +_08117150: .4byte gUnknown_083F8C00\n\ +_08117154: .4byte 0x020190b8\n\ +.syntax divided\n"); +} +#endif + +#ifdef NONMATCHING //not enough stack usage +void sub_8117158(u8 r0) +{ + u8 i; + u8 l; + u8 v[0x5]; + u8 z; + u8 var0; + u8 var1; + u16 var2; + RDATA->var2A = 0x1; + sub_8117AA8(0x0, 0x0); + sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD); + switch(r0) + { + case 0x0: + return; + case 0x1 ... 0x4: + l = 0x4; + for (i = 0x0; i < l; i++) + v[i] = i * 0x5 + r0; + break; + case 0x5: + case 0xA: + case 0xF: + l = 0x5; + for (i = 0x0; i < l; i++) + v[i] = i + r0; + break; + default: + l = 0x1; + v[0] = r0; + } + for (i = 0x0; i < l; i++) + { + //_0811727C + var0 = gUnknown_083F8C00[v[i]].var06; + var1 = gUnknown_083F8C00[v[i]].var03; + for (z = 0; z < 0x3; z++) + { + var2 = (gUnknown_083F8C00[v[i]].var04 + z) * 0x20; + gBGTilemapBuffers[2][var2 + var1 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0]; + gBGTilemapBuffers[2][var2 + var1 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1]; + gBGTilemapBuffers[2][var2 + var1 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2]; + } + //_08117350 + } +} +#else +__attribute__((naked)) +void sub_8117158(u8 r0) +{ +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, 0x24\n\ +lsls r0, 24\n\ +lsrs r5, r0, 24\n\ +ldr r4, _0811719C @ =0x02019000\n\ +movs r0, 0x1\n\ +strh r0, [r4, 0x2A]\n\ +movs r0, 0\n\ +movs r1, 0\n\ +bl sub_8117AA8\n\ +ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800\n\ +ldr r1, _081171A4 @ =0xfffff800\n\ +adds r4, r1\n\ +movs r1, 0x10\n\ +str r1, [sp]\n\ +movs r1, 0xD\n\ +str r1, [sp, 0x4]\n\ +adds r1, r4, 0\n\ +movs r2, 0xE\n\ +movs r3, 0x7\n\ +bl sub_8124E2C\n\ +cmp r5, 0xF\n\ +bhi _08117250\n\ +lsls r0, r5, 2\n\ +ldr r1, _081171A8 @ =_081171AC\n\ +adds r0, r1\n\ +ldr r0, [r0]\n\ +mov pc, r0\n\ +.align 2, 0\n\ +_0811719C: .4byte 0x02019000\n\ +_081171A0: .4byte gBGTilemapBuffers + 0x800\n\ +_081171A4: .4byte 0xfffff800\n\ +_081171A8: .4byte _081171AC\n\ +.align 2, 0\n\ +_081171AC:\n\ +.4byte _08117360\n\ +.4byte _081171EC\n\ +.4byte _081171EC\n\ +.4byte _081171EC\n\ +.4byte _081171EC\n\ +.4byte _08117220\n\ +.4byte _08117250\n\ +.4byte _08117250\n\ +.4byte _08117250\n\ +.4byte _08117250\n\ +.4byte _08117220\n\ +.4byte _08117250\n\ +.4byte _08117250\n\ +.4byte _08117250\n\ +.4byte _08117250\n\ +.4byte _08117220\n\ +_081171EC:\n\ +movs r0, 0x4\n\ +str r0, [sp, 0x18]\n\ +add r1, sp, 0x8\n\ +movs r0, 0\n\ +strb r0, [r1]\n\ +adds r0, r1, 0\n\ +ldrb r0, [r0]\n\ +cmp r0, 0x3\n\ +bhi _08117258\n\ +add r4, sp, 0x10\n\ +adds r3, r1, 0\n\ +_08117202:\n\ +ldrb r2, [r3]\n\ +adds r2, r4\n\ +ldrb r1, [r3]\n\ +lsls r0, r1, 2\n\ +adds r0, r1\n\ +adds r0, r5, r0\n\ +strb r0, [r2]\n\ +ldrb r0, [r3]\n\ +adds r0, 0x1\n\ +strb r0, [r3]\n\ +ldrb r0, [r3]\n\ +ldr r1, [sp, 0x18]\n\ +cmp r0, r1\n\ +bcc _08117202\n\ +b _08117258\n\ +_08117220:\n\ +movs r0, 0x5\n\ +str r0, [sp, 0x18]\n\ +add r1, sp, 0x8\n\ +movs r0, 0\n\ +strb r0, [r1]\n\ +adds r0, r1, 0\n\ +ldrb r0, [r0]\n\ +cmp r0, 0x4\n\ +bhi _08117258\n\ +add r3, sp, 0x10\n\ +adds r2, r1, 0\n\ +_08117236:\n\ +ldrb r1, [r2]\n\ +adds r1, r3\n\ +ldrb r0, [r2]\n\ +adds r0, r5, r0\n\ +strb r0, [r1]\n\ +ldrb r0, [r2]\n\ +adds r0, 0x1\n\ +strb r0, [r2]\n\ +ldrb r0, [r2]\n\ +ldr r1, [sp, 0x18]\n\ +cmp r0, r1\n\ +bcc _08117236\n\ +b _08117258\n\ +_08117250:\n\ +movs r0, 0x1\n\ +str r0, [sp, 0x18]\n\ +add r0, sp, 0x10\n\ +strb r5, [r0]\n\ +_08117258:\n\ +add r1, sp, 0x8\n\ +movs r0, 0\n\ +strb r0, [r1]\n\ +adds r0, r1, 0\n\ +ldrb r0, [r0]\n\ +ldr r1, [sp, 0x18]\n\ +cmp r0, r1\n\ +bcs _08117360\n\ +mov r0, sp\n\ +adds r0, 0xE\n\ +str r0, [sp, 0x1C]\n\ +add r1, sp, 0x10\n\ +mov r9, r1\n\ +add r0, sp, 0x8\n\ +mov r12, r0\n\ +mov r1, sp\n\ +adds r1, 0xA\n\ +str r1, [sp, 0x20]\n\ +_0811727C:\n\ +mov r1, r12\n\ +ldrb r0, [r1]\n\ +add r0, r9\n\ +ldrb r1, [r0]\n\ +lsls r0, r1, 2\n\ +adds r0, r1\n\ +lsls r0, 2\n\ +ldr r1, _08117370 @ =gUnknown_083F8C00\n\ +adds r0, r1\n\ +ldrb r0, [r0, 0x6]\n\ +ldr r1, [sp, 0x1C]\n\ +strb r0, [r1]\n\ +mov r1, r12\n\ +ldrb r0, [r1]\n\ +add r0, r9\n\ +ldrb r1, [r0]\n\ +lsls r0, r1, 2\n\ +adds r0, r1\n\ +lsls r0, 2\n\ +ldr r1, _08117370 @ =gUnknown_083F8C00\n\ +adds r0, r1\n\ +ldrb r0, [r0, 0x3]\n\ +ldr r1, [sp, 0x20]\n\ +strh r0, [r1]\n\ +mov r4, sp\n\ +adds r4, 0x9\n\ +movs r0, 0\n\ +strb r0, [r4]\n\ +ldrb r0, [r4]\n\ +cmp r0, 0x2\n\ +bhi _08117350\n\ +add r5, sp, 0xC\n\ +ldr r7, [sp, 0x20]\n\ +ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800\n\ +mov r8, r0\n\ +ldr r6, [sp, 0x1C]\n\ +ldr r1, _08117378 @ =0x020189a0\n\ +mov r10, r1\n\ +_081172C8:\n\ +mov r1, r12\n\ +ldrb r0, [r1]\n\ +add r0, r9\n\ +ldrb r0, [r0]\n\ +lsls r1, r0, 2\n\ +adds r1, r0\n\ +lsls r1, 2\n\ +ldr r0, _08117370 @ =gUnknown_083F8C00\n\ +adds r1, r0\n\ +adds r3, r4, 0\n\ +ldrb r0, [r4]\n\ +ldrb r1, [r1, 0x4]\n\ +adds r0, r1\n\ +lsls r0, 5\n\ +strh r0, [r5]\n\ +ldrh r0, [r7]\n\ +ldrh r2, [r5]\n\ +adds r2, r0\n\ +lsls r2, 1\n\ +add r2, r8\n\ +ldrb r0, [r6]\n\ +ldrb r1, [r4]\n\ +adds r1, r0\n\ +lsls r0, r1, 1\n\ +adds r0, r1\n\ +lsls r0, 1\n\ +add r0, r10\n\ +ldrh r0, [r0]\n\ +strh r0, [r2]\n\ +ldrh r0, [r7]\n\ +ldrh r2, [r5]\n\ +adds r2, r0\n\ +adds r2, 0x1\n\ +lsls r2, 1\n\ +add r2, r8\n\ +ldrb r0, [r6]\n\ +ldrb r1, [r4]\n\ +adds r1, r0\n\ +lsls r0, r1, 1\n\ +adds r0, r1\n\ +lsls r0, 1\n\ +mov r1, r10\n\ +adds r1, 0x2\n\ +adds r0, r1\n\ +ldrh r0, [r0]\n\ +strh r0, [r2]\n\ +ldrh r0, [r7]\n\ +ldrh r2, [r5]\n\ +adds r2, r0\n\ +adds r2, 0x2\n\ +lsls r2, 1\n\ +add r2, r8\n\ +ldrb r0, [r6]\n\ +ldrb r1, [r4]\n\ +adds r1, r0\n\ +lsls r0, r1, 1\n\ +adds r0, r1\n\ +lsls r0, 1\n\ +ldr r1, _0811737C @ =0x020189a4\n\ +adds r0, r1\n\ +ldrh r0, [r0]\n\ +strh r0, [r2]\n\ +ldrb r0, [r4]\n\ +adds r0, 0x1\n\ +strb r0, [r4]\n\ +ldrb r0, [r3]\n\ +cmp r0, 0x2\n\ +bls _081172C8\n\ +_08117350:\n\ +mov r1, r12\n\ +ldrb r0, [r1]\n\ +adds r0, 0x1\n\ +strb r0, [r1]\n\ +ldrb r0, [r1]\n\ +ldr r1, [sp, 0x18]\n\ +cmp r0, r1\n\ +bcc _0811727C\n\ +_08117360:\n\ +add sp, 0x24\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\ +.align 2, 0\n\ +_08117370: .4byte gUnknown_083F8C00\n\ +_08117374: .4byte gBGTilemapBuffers + 0x800\n\ +_08117378: .4byte 0x020189a0\n\ +_0811737C: .4byte 0x020189a4\n\ +.syntax divided\n"); +} +#endif + +#ifdef NONMATCHING +u8 sub_8117380(u8 r0) +{ + u8 var0[0x5]; + u8 t; + u8 z; + memcpy(var0, gUnknown_083F8EF4, 0x5); + if (r0 > 0x13) + r0 = 0x0; + switch (gUnknown_083F8C00[r0].var01_0) + { + case 0x3: + z = r0 / 0x5 - 0x1; + if (RDATA->var16[z] > 0x3) + return 0x0; + return var0[RDATA->var16[z] + 0x1]; + case 0x4: + t = r0 - 0x1; + if (RDATA->var12[t] > 0x2) + return 0x0; + return var0[RDATA->var12[t] + 0x2]; + case 0xC: + if (RDATA->var08 & gUnknown_083F8C00[r0].var08) + return 0x0; + return var0[0x4]; + default: + } + return 0x0; +} +#else +__attribute__((naked)) +u8 sub_8117380(u8 r0) +{ +asm(".syntax unified\n\ +push {r4,lr}\n\ +sub sp, 0x8\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r1, _081173B8 @ =gUnknown_083F8EF4\n\ +mov r0, sp\n\ +movs r2, 0x5\n\ +bl memcpy\n\ +cmp r4, 0x13\n\ +bls _08117398\n\ +movs r4, 0\n\ +_08117398:\n\ +ldr r3, _081173BC @ =gUnknown_083F8C00\n\ +lsls r0, r4, 2\n\ +adds r0, r4\n\ +lsls r2, r0, 2\n\ +adds r0, r2, r3\n\ +ldrb r0, [r0, 0x1]\n\ +lsls r0, 28\n\ +lsrs r0, 28\n\ +cmp r0, 0x4\n\ +beq _081173EC\n\ +cmp r0, 0x4\n\ +bgt _081173C0\n\ +cmp r0, 0x3\n\ +beq _081173C6\n\ +b _08117428\n\ +.align 2, 0\n\ +_081173B8: .4byte gUnknown_083F8EF4\n\ +_081173BC: .4byte gUnknown_083F8C00\n\ +_081173C0:\n\ +cmp r0, 0xC\n\ +beq _0811740C\n\ +b _08117428\n\ +_081173C6:\n\ +adds r0, r4, 0\n\ +movs r1, 0x5\n\ +bl __udivsi3\n\ +subs r0, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r0, _081173E8 @ =0x02019000\n\ +adds r0, 0x16\n\ +adds r1, r4, r0\n\ +ldrb r0, [r1]\n\ +cmp r0, 0x3\n\ +bhi _08117428\n\ +ldrb r0, [r1]\n\ +adds r0, 0x1\n\ +b _08117402\n\ +.align 2, 0\n\ +_081173E8: .4byte 0x02019000\n\ +_081173EC:\n\ +subs r0, r4, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r0, _08117408 @ =0x02019000\n\ +adds r0, 0x12\n\ +adds r1, r4, r0\n\ +ldrb r0, [r1]\n\ +cmp r0, 0x2\n\ +bhi _08117428\n\ +ldrb r0, [r1]\n\ +adds r0, 0x2\n\ +_08117402:\n\ +add r0, sp\n\ +ldrb r0, [r0]\n\ +b _0811742A\n\ +.align 2, 0\n\ +_08117408: .4byte 0x02019000\n\ +_0811740C:\n\ +ldr r1, _08117424 @ =0x02019000\n\ +adds r0, r3, 0\n\ +adds r0, 0x8\n\ +adds r0, r2, r0\n\ +ldr r1, [r1, 0x8]\n\ +ldr r0, [r0]\n\ +ands r1, r0\n\ +cmp r1, 0\n\ +bne _08117428\n\ +mov r0, sp\n\ +ldrb r0, [r0, 0x4]\n\ +b _0811742A\n\ +.align 2, 0\n\ +_08117424: .4byte 0x02019000\n\ +_08117428:\n\ +movs r0, 0\n\ +_0811742A:\n\ +add sp, 0x8\n\ +pop {r4}\n\ +pop {r1}\n\ +bx r1\n\ +.syntax divided\n"); +} +#endif + +#ifdef NONMATCHING +void sub_8117434(void) //sprite rotation ? +{ + s32 x1; + s32 x2; + REG_BG2PA = RDATA->var2C.a; + REG_BG2PB = RDATA->var2C.b; + REG_BG2PC = RDATA->var2C.c; + REG_BG2PD = RDATA->var2C.d; + x1 = 0x7400 - RDATA->var2C.a * (gSpriteCoordOffsetX + 0x74) + - RDATA->var2C.b * (gSpriteCoordOffsetY + 0x50); + x2 = 0x5400 - RDATA->var2C.c * gSpriteCoordOffsetX + - RDATA->var2C.d * gSpriteCoordOffsetY; + REG_BG2X_L = x1; + REG_BG2X_H = (x1 & 0x0fff0000) >> 16; + REG_BG2Y_L = x2; + REG_BG2Y_H = (x2 & 0x0fff0000) >> 16; +} +#else +__attribute__((naked)) +void sub_8117434(void) +{ +asm(".syntax unified\n\ +push {r4-r6,lr}\n\ +ldr r1, _081174AC @ =REG_BG2PA\n\ +ldr r4, _081174B0 @ =0x02019000\n\ +ldrh r0, [r4, 0x2C]\n\ +strh r0, [r1]\n\ +adds r1, 0x2\n\ +ldrh r0, [r4, 0x2E]\n\ +strh r0, [r1]\n\ +adds r1, 0x2\n\ +ldrh r0, [r4, 0x30]\n\ +strh r0, [r1]\n\ +adds r1, 0x2\n\ +ldrh r0, [r4, 0x32]\n\ +strh r0, [r1]\n\ +movs r0, 0x2E\n\ +ldrsh r2, [r4, r0]\n\ +ldr r0, _081174B4 @ =gSpriteCoordOffsetY\n\ +movs r3, 0\n\ +ldrsh r1, [r0, r3]\n\ +adds r1, 0x50\n\ +adds r0, r2, 0\n\ +muls r0, r1\n\ +movs r2, 0xE8\n\ +lsls r2, 7\n\ +subs r2, r0\n\ +movs r6, 0x2C\n\ +ldrsh r5, [r4, r6]\n\ +ldr r0, _081174B8 @ =gSpriteCoordOffsetX\n\ +movs r6, 0\n\ +ldrsh r3, [r0, r6]\n\ +adds r3, 0x74\n\ +adds r0, r5, 0\n\ +muls r0, r3\n\ +subs r2, r0\n\ +movs r5, 0x32\n\ +ldrsh r0, [r4, r5]\n\ +muls r0, r1\n\ +movs r1, 0xA8\n\ +lsls r1, 7\n\ +subs r1, r0\n\ +movs r6, 0x30\n\ +ldrsh r0, [r4, r6]\n\ +muls r0, r3\n\ +subs r1, r0\n\ +ldr r0, _081174BC @ =REG_BG2X_L\n\ +strh r2, [r0]\n\ +adds r0, 0x2\n\ +ldr r3, _081174C0 @ =0x0fff0000\n\ +ands r2, r3\n\ +asrs r2, 16\n\ +strh r2, [r0]\n\ +adds r0, 0x2\n\ +strh r1, [r0]\n\ +adds r0, 0x2\n\ +ands r1, r3\n\ +asrs r1, 16\n\ +strh r1, [r0]\n\ +pop {r4-r6}\n\ +pop {r0}\n\ +bx r0\n\ +.align 2, 0\n\ +_081174AC: .4byte REG_BG2PA\n\ +_081174B0: .4byte 0x02019000\n\ +_081174B4: .4byte gSpriteCoordOffsetY\n\ +_081174B8: .4byte gSpriteCoordOffsetX\n\ +_081174BC: .4byte REG_BG2X_L\n\ +_081174C0: .4byte 0x0fff0000\n\ +.syntax divided\n"); +} +#endif + +s16 sub_81174C4(s16 r0, s16 r1) +{ + s32 t = r0 * r1; + t /= 0x100; + return t; +} + +s16 sub_81174E0(s16 r0) +{ + s32 t = 0x10000; + return t / r0; +} + +void sub_81174F8(u8 r0) +{ + DisplayYesNoMenu(0x14, 0x8, 0x1); + sub_814AAF8(0x2D9E); + DoYesNoFuncWithChoice(r0, &gUnknown_083F8EB4); +} + +void sub_8117528(u8 taskid) +{ + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + SetMainCallback2(&sub_8115384); + DestroyTask(taskid); + } +} + +void sub_811755C(u8 taskid) +{ + MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + MenuZeroFillScreen(); + BeginNormalPaletteFade(-0x1, 0x0, 0x0, 0x10, 0x0); + gPaletteFade.delayCounter = gPaletteFade.multipurpose2; + UpdatePaletteFade(); + gTasks[taskid].func = &sub_8117528; +} + +void sub_81175C0(u8 taskid) +{ + MenuZeroFillScreen(); + ScriptContext2_Disable(); + DestroyTask(taskid); +} + +void sub_81175DC(u8 taskid) +{ + gTasks[taskid].data[0]++; + if (!(gMain.newKeys & (A_BUTTON | B_BUTTON)) && gTasks[taskid].data[0] < 0x3D) + return; + gSpecialVar_0x8004 = 0x1; + MenuZeroFillScreen(); + ScriptContext2_Disable(); + DestroyTask(taskid); +} + +void sub_8117630(u8 taskid) +{ + u32 temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)]; + ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1); + StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(gStringVar4, 0x1, 0xF); + gTasks[taskid].func = &sub_81174F8; +} + +void Task_Roulette_0(u8 taskid) +{ + s32 temp; + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskid].data[0xD], 0x1, 0x4); + StringExpandPlaceholders(gStringVar4, gOtherText_Coins); + MenuDrawTextWindow(0x0, 0x0, 0x9, 0x3); + MenuPrint_RightAligned(gStringVar4, 0x9, 0x1); + temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)]; + ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1); + if (gTasks[taskid].data[0xD] >= temp) + { + if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 0x1)) + { + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(&gUnknown_081C4139, 0x1, 0xF); + sub_8116C34(taskid , &sub_8117630, 0xFFFF, 0x3); + } + else + { + StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(gStringVar4, 0x1, 0xF); + gTasks[taskid].func = &sub_81174F8; + } + } + else + { + StringExpandPlaceholders(gStringVar4, &gUnknown_081C411C); + MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); + MenuPrint(gStringVar4, 0x1, 0xF); + gTasks[taskid].func = &sub_81175DC; + gTasks[taskid].data[0xD] = 0x0; + gTasks[taskid].data[0x0] = 0x0; + } +} + +void PlayRoulette() +{ + u8 taskid; + ScriptContext2_Enable(); + taskid = CreateTask(&Task_Roulette_0, 0x0); + gTasks[taskid].data[0xD] = gSaveBlock1.coins; +} + +void sub_8117838(u8 r0) +{ + if (!r0) + { + FreeAllSpritePalettes(); + LoadSpritePalettes(&gUnknown_083F9E30); + LZ77UnCompWram(gUnknown_083F92A8, ewram17000); + LZ77UnCompWram(gUnknown_083F90FC, ewram17E00); + LZ77UnCompWram(gUnknown_083F9D3C, ewram18000); + } + else + { + FreeAllSpritePalettes(); + } +} + +u8 sub_8117890(const struct SpriteTemplate *r0, u8 r1, u16 *r2) +{ + u16 temp; + u8 spriteid = CreateSprite(r0, 0x74, 0x50, r0->oam->y); + gSprites[spriteid].data0 = *r2; + gSprites[spriteid].data1 = r1; + gSprites[spriteid].coordOffsetEnabled = TRUE; + gSprites[spriteid].animPaused = TRUE; + gSprites[spriteid].affineAnimPaused = TRUE; + temp = *r2; + *r2 += 0x1E; + if (*r2 > 0x167) + *r2 = temp - 0x14A; + return spriteid; +} + +void sub_8117900(void) +{ + u8 i, j; + u8 spriteid; + struct SpriteSheet s; + LZ77UnCompWram(gUnknown_083F9F54.data, ewram); + s.data = ewram; + s.size = gUnknown_083F9F54.size; + s.tag = gUnknown_083F9F54.tag; + LoadSpriteSheet(&s); + LZ77UnCompWram(gUnknown_083F9F5C.data, ewram); + s.data = ewram; + s.size = gUnknown_083F9F5C.size; + s.tag = gUnknown_083F9F5C.tag; + LoadSpriteSheet(&s); + for (i = 0; i < 0x3; i++) + { + u8 o = i * 0x18; + for (j = 0; j < 0x4; j++) + { + spriteid = RDATA->var3C[0x1D + i * 0x4 + j] = + CreateSprite(&gSpriteTemplate_83FA07C[j], j * 0x18 + 0x94, o + 0x5C, 0x1E); + gSprites[spriteid].animPaused = TRUE; + o += 0x18; + if (o > 0x47) + o = 0x0; + } + } + for (i = 0x0; i < 0x4; i++) + { + spriteid = RDATA->var3C[0x29 + i] = + CreateSprite(&gSpriteTemplate_83F9FD4[i], (s16)(i * 0x18 + 0x94), 0x46, 0x1E); + gSprites[spriteid].animPaused = TRUE; + } + for (i = 0x0; i < 0x3; i++) + { + spriteid = RDATA->var3C[0x2D + i] = + CreateSprite(&gSpriteTemplate_83FA034[i], 0x7E, (s16)(i * 0x18 + 0x5C), 0x1E); + gSprites[spriteid].animPaused = TRUE; + } +} + +void unref_sub_8117A74(void) //destroy all sprites at 0x1D +{ + u8 i; + for (i = 0x0; i < 0xC; i++) + DestroySprite(&gSprites[RDATA->var3C[0x1D + i]]); +} + +void sub_8117AA8(u8 r0, u8 r1) +{ + u8 i; + switch(r0) + { + case 0x1: + for (i = 0x0; i < 0x13; i++) + gSprites[RDATA->var3C[0x1D + i]].invisible = TRUE; + break; + case 0x0: + for (i = 0x0; i < 0xC; i++) + { + if (!(RDATA->var08 & gUnknown_083F8D90[i].var04)) + gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE; + else if(!(gUnknown_083F8D90[i].var02 == r1)) + gSprites[RDATA->var3C[0x1D + i]].invisible = TRUE; + else + gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE; + } + for ( ; i < 0x13; i++) + gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE; + break; + } +} + +void sub_8117BBC(void) +{ + u8 i; + for (i = 0x0; i < 0x6; i++) + { + RDATA->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA); + gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; + gSprites[RDATA->var3C[0x31 + i]].data0 = 0x1; + gSprites[RDATA->var3C[0x31 + i]].callback = &sub_81184CC; + gSprites[RDATA->var3C[0x31 + i]].oam.priority = 0x1; + StartSpriteAnim(&gSprites[RDATA->var3C[0x31 + i]], 0x8); + } +} + +void sub_8117C60(u8 r0, u8 r1) +{ + u8 i = 0x0; + if (r0) + { + for ( ; i < 0x6; i++) + gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; + } + else + { + for ( ; i < 0x6; i++) + { + if (!(RDATA->var0C[i]) || (i == r1)) + { + gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; + } + else + { + gSprites[RDATA->var3C[0x31 + i]].invisible = FALSE; + gSprites[RDATA->var3C[0x31 + i]].pos1.x = (gUnknown_083F8C00[RDATA->var0C[i]].var03 + 0x1) * 0x8 + 0x4; + gSprites[RDATA->var3C[0x31 + i]].pos1.y = (gUnknown_083F8C00[RDATA->var0C[i]].var04 + 0x1) * 0x8 + 0x3; + } + } + } +} + +void sub_8117D68(u8 r0) +{ + if (!r0) + { + gSprites[RDATA->var3C[0x30]].invisible = TRUE; + } + else + { + gSprites[RDATA->var3C[0x30]].invisible = FALSE; + gSprites[RDATA->var3C[0x30]].pos1.x = (gUnknown_083F8C00[r0].var03 + 0x2) * 0x8; + gSprites[RDATA->var3C[0x30]].pos1.y = (gUnknown_083F8C00[r0].var04 + 0x2) * 0x8; + } +} + +void sub_8117DF4(void) +{ + u8 i, j; + u16 k; + struct SpriteSheet s; + LZ77UnCompWram(gUnknown_083F9EE8.data, ewram); + s.data = ewram; + s.size = gUnknown_083F9EE8.size; + s.tag = gUnknown_083F9EE8.tag; + LoadSpriteSheet(&s); + k = 0xF; + for (i = 0x0; i < 0x3; i++) + { + for (j = 0x0; j < 0x4; j++) + { + u8 spriteid; + spriteid = + RDATA->var3C[0x7 + i * 0x4 + j] = sub_8117890(&gSpriteTemplate_83FA0DC[i * 0x4 + j], 0x28, &k); + gSprites[spriteid].animPaused = TRUE; + gSprites[spriteid].affineAnimPaused = TRUE; + } + } +} + +#ifdef NONMATCHING +void sub_8117E98(struct Sprite *sprite) +{ + struct OamMatrix *m; + u8 p; + u16 angle; + s16 cos, sin, z; + u32 cos32; + angle = RDATA->var24 + sprite->data0; + z = angle; + if (z > 359) + angle = z - 360; + sin = Sin2(angle); + cos = Cos2(angle); + sprite->pos2.x = sin * sprite->data1 >> 0xC; + sprite->pos2.y = -cos * sprite->data1 >> 0xC; + p = sprite->oam.matrixNum; + sin = sin / 0x10; + m = &gOamMatrices[p]; + cos32 = cos / 0x10; + + m->d = cos32; + m->a = cos32; + m->b = sin; + m->c = -sin; +} +#else +__attribute__((naked)) +void sub_8117E98(struct Sprite *r0) +{ +asm(".syntax unified\n\ +push {r4-r6,lr}\n\ +adds r6, r0, 0\n\ +ldr r0, _08117F1C @ =0x02019000\n\ +ldrh r1, [r6, 0x2E]\n\ +ldrh r0, [r0, 0x24]\n\ +adds r1, r0\n\ +lsls r1, 16\n\ +lsrs r4, r1, 16\n\ +asrs r1, 16\n\ +ldr r0, _08117F20 @ =0x00000167\n\ +cmp r1, r0\n\ +ble _08117EB8\n\ +ldr r2, _08117F24 @ =0xfffffe98\n\ +adds r0, r1, r2\n\ +lsls r0, 16\n\ +lsrs r4, r0, 16\n\ +_08117EB8:\n\ +adds r0, r4, 0\n\ +bl Sin2\n\ +lsls r0, 16\n\ +lsrs r5, r0, 16\n\ +adds r0, r4, 0\n\ +bl Cos2\n\ +lsls r2, r5, 16\n\ +asrs r2, 16\n\ +movs r3, 0x30\n\ +ldrsh r1, [r6, r3]\n\ +muls r1, r2\n\ +asrs r1, 12\n\ +strh r1, [r6, 0x24]\n\ +lsls r0, 16\n\ +asrs r4, r0, 16\n\ +negs r1, r4\n\ +movs r3, 0x30\n\ +ldrsh r0, [r6, r3]\n\ +muls r0, r1\n\ +asrs r0, 12\n\ +strh r0, [r6, 0x26]\n\ +ldrb r0, [r6, 0x3]\n\ +lsls r0, 26\n\ +lsrs r3, r0, 27\n\ +cmp r2, 0\n\ +bge _08117EF2\n\ +adds r2, 0xF\n\ +_08117EF2:\n\ +lsls r0, r2, 12\n\ +lsrs r5, r0, 16\n\ +ldr r1, _08117F28 @ =gOamMatrices\n\ +lsls r0, r3, 3\n\ +adds r1, r0, r1\n\ +adds r0, r4, 0\n\ +cmp r0, 0\n\ +bge _08117F04\n\ +adds r0, 0xF\n\ +_08117F04:\n\ +asrs r0, 4\n\ +strh r0, [r1, 0x6]\n\ +strh r0, [r1]\n\ +strh r5, [r1, 0x2]\n\ +lsls r0, r5, 16\n\ +asrs r0, 16\n\ +negs r0, r0\n\ +strh r0, [r1, 0x4]\n\ +pop {r4-r6}\n\ +pop {r0}\n\ +bx r0\n\ +.align 2, 0\n\ +_08117F1C: .4byte 0x02019000\n\ +_08117F20: .4byte 0x00000167\n\ +_08117F24: .4byte 0xfffffe98\n\ +_08117F28: .4byte gOamMatrices\n\ +.syntax divided\n"); +} +#endif + +void sub_8117F2C(void) +{ + u8 i; + for (i = 0x0; i < 0x5; i++) + { + struct SpriteSheet s; + LZ77UnCompWram(gUnknown_083FA21C[i].data, ewram); + s.data = ewram; + s.size = gUnknown_083FA21C[i].size; + s.tag = gUnknown_083FA21C[i].tag; + LoadSpriteSheet(&s); + } + RDATA->var3C[0x14] = CreateSprite(&gSpriteTemplate_83FA2B0, 0xD0, 0x10, 0x4); + gSprites[RDATA->var3C[0x14]].animPaused = TRUE; + for (i = 0x0; i < 0x4; i++) + { + RDATA->var3C[0x15 + i] = CreateSprite(&gSpriteTemplate_83FA2C8, (s16)(i * 0x8 + 0xC4), 0x18, 0x0); + gSprites[RDATA->var3C[0x15 + i]].invisible = TRUE; + gSprites[RDATA->var3C[0x15 + i]].animPaused = TRUE; + } + RDATA->var3C[0x19] = CreateSprite(&gSpriteTemplate_83FA2E0, 0x78, 0x44, 0x4); + gSprites[RDATA->var3C[0x19]].animPaused = TRUE; + for (i = 0x0; i < 0x3; i++) + { + RDATA->var3C[0x1A + i] = CreateSprite(&gSpriteTemplate_83FA2F8, (s16)(i * 0x10 + 0xC0), 0x24, 0x4); + gSprites[RDATA->var3C[0x1A + i]].invisible = TRUE; + gSprites[RDATA->var3C[0x1A + i]].animPaused = TRUE; + } + RDATA->var3C[0x30] = CreateSprite(&gSpriteTemplate_83FA310, 0x98, 0x60, 0x9); + gSprites[RDATA->var3C[0x30]].oam.priority = 0x1; + gSprites[RDATA->var3C[0x30]].animPaused = TRUE; + gSprites[RDATA->var3C[0x30]].invisible = TRUE; +} + +void sub_81180F4(u16 r0) +{ + u8 i; + u16 d = 1000; + bool8 v = FALSE; + for (i = 0x0; i < 0x4; i++) + { + u8 t = r0 / d; + gSprites[RDATA->var3C[0x15 + i]].invisible = TRUE; + if (t > 0x0 || v || i == 0x3) + { + gSprites[RDATA->var3C[0x15 + i]].invisible = FALSE; + gSprites[RDATA->var3C[0x15 + i]].oam.tileNum = + gSprites[RDATA->var3C[0x15 + i]].sheetTileStart + + (*gSprites[RDATA->var3C[0x15 + i]].anims + t)->type; + v = TRUE; + } + r0 = r0 % d; + d = d / 10; + } +} + +#ifdef NONMATCHING +u8 sub_81181E8(u8 r0) +{ + u8 t[0x5]; + memcpy(&t, &gUnknown_083FA608, 0x5); + if (r0 > 0x13) + r0 = 0x0; + switch(gUnknown_083F8C00[r0].var01_0) + { + case 0x3: + r0 = r0 / 0x5 - 0x1; + if ((u32)RDATA->var16[r0] < 0x4) + return t[0x1 + RDATA->var16[r0]]; // couldn't recreate redundant loads + break; + case 0x4: + r0 = r0 - 0x1; + if (RDATA->var12[r0] < 0x3) + return t[0x2 + RDATA->var12[r0]]; + break; + case 0xC: + if (!(RDATA->var08 & gUnknown_083F8C00[r0].var08)) + return t[0x4]; + break; + } + return 0x0; +} +#else +__attribute__((naked)) +u8 sub_81181E8(u8 r0) +{ +asm(".syntax unified\n\ +push {r4,lr}\n\ +sub sp, 0x8\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r1, _08118220 @ =gUnknown_083FA608\n\ +mov r0, sp\n\ +movs r2, 0x5\n\ +bl memcpy\n\ +cmp r4, 0x13\n\ +bls _08118200\n\ +movs r4, 0\n\ +_08118200:\n\ +ldr r3, _08118224 @ =gUnknown_083F8C00\n\ +lsls r0, r4, 2\n\ +adds r0, r4\n\ +lsls r2, r0, 2\n\ +adds r0, r2, r3\n\ +ldrb r0, [r0, 0x1]\n\ +lsls r0, 28\n\ +lsrs r0, 28\n\ +cmp r0, 0x4\n\ +beq _08118254\n\ +cmp r0, 0x4\n\ +bgt _08118228\n\ +cmp r0, 0x3\n\ +beq _0811822E\n\ +b _08118290\n\ +.align 2, 0\n\ +_08118220: .4byte gUnknown_083FA608\n\ +_08118224: .4byte gUnknown_083F8C00\n\ +_08118228:\n\ +cmp r0, 0xC\n\ +beq _08118274\n\ +b _08118290\n\ +_0811822E:\n\ +adds r0, r4, 0\n\ +movs r1, 0x5\n\ +bl __udivsi3\n\ +subs r0, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r0, _08118250 @ =0x02019000\n\ +adds r0, 0x16\n\ +adds r1, r4, r0\n\ +ldrb r0, [r1]\n\ +cmp r0, 0x3\n\ +bhi _08118290\n\ +ldrb r0, [r1]\n\ +adds r0, 0x1\n\ +b _0811826A\n\ +.align 2, 0\n\ +_08118250: .4byte 0x02019000\n\ +_08118254:\n\ +subs r0, r4, 0x1\n\ +lsls r0, 24\n\ +lsrs r4, r0, 24\n\ +ldr r0, _08118270 @ =0x02019000\n\ +adds r0, 0x12\n\ +adds r1, r4, r0\n\ +ldrb r0, [r1]\n\ +cmp r0, 0x2\n\ +bhi _08118290\n\ +ldrb r0, [r1]\n\ +adds r0, 0x2\n\ +_0811826A:\n\ +add r0, sp\n\ +ldrb r0, [r0]\n\ +b _08118292\n\ +.align 2, 0\n\ +_08118270: .4byte 0x02019000\n\ +_08118274:\n\ +ldr r1, _0811828C @ =0x02019000\n\ +adds r0, r3, 0\n\ +adds r0, 0x8\n\ +adds r0, r2, r0\n\ +ldr r1, [r1, 0x8]\n\ +ldr r0, [r0]\n\ +ands r1, r0\n\ +cmp r1, 0\n\ +bne _08118290\n\ +mov r0, sp\n\ +ldrb r0, [r0, 0x4]\n\ +b _08118292\n\ +.align 2, 0\n\ +_0811828C: .4byte 0x02019000\n\ +_08118290:\n\ +movs r0, 0\n\ +_08118292:\n\ +add sp, 0x8\n\ +pop {r4}\n\ +pop {r1}\n\ +bx r1\n\ +.syntax divided\n"); +} +#endif + +void sub_811829C(u8 r0) +{ + struct Sprite *s = &gSprites[RDATA->var3C[0x19]]; + s->animCmdIndex = sub_81181E8(r0); + s->oam.tileNum = + s->sheetTileStart + + (*s->anims + s->animCmdIndex)->type; +} + +void sub_81182F8(u8 r0) +{ + u8 i; + u8 t = 0x0; + if (RDATA->var19 == 0x1) + t = 0x2; + switch(r0) + { + case 0x6: + for (i = 0x0; i < 0x3; i++) + { + gSprites[RDATA->var3C[0x1A + i]].invisible = FALSE; + gSprites[RDATA->var3C[0x1A + i]].oam.tileNum = + gSprites[RDATA->var3C[0x1A + i]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1A + i]].anims)->type; + } + break; + case 0x5: + gSprites[RDATA->var3C[0x1C]].oam.tileNum = + gSprites[RDATA->var3C[0x1C]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1C]].anims + t + 0x1)->type; + break; + case 0x4: + gSprites[RDATA->var3C[0x1C]].oam.tileNum = + gSprites[RDATA->var3C[0x1C]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1C]].anims + t + 0x2)->type; + break; + case 0x3: + gSprites[RDATA->var3C[0x1B]].oam.tileNum = + gSprites[RDATA->var3C[0x1B]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1B]].anims + t + 0x1)->type; + break; + case 0x2: + gSprites[RDATA->var3C[0x1B]].oam.tileNum = + gSprites[RDATA->var3C[0x1B]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1B]].anims + t + 0x2)->type; + break; + case 0x1: + gSprites[RDATA->var3C[0x1A]].oam.tileNum = + gSprites[RDATA->var3C[0x1A]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1A]].anims + t + 0x1)->type; + break; + case 0x0: + default: + for (i = 0x0; i < 0x3; i++) + { + gSprites[RDATA->var3C[0x1A + i]].oam.tileNum = + gSprites[RDATA->var3C[0x1A + i]].sheetTileStart + + (*gSprites[RDATA->var3C[0x1A + i]].anims + t + 2)->type; + } + } +} + +void sub_81184CC(struct Sprite *sprite) +{ + sprite->pos2.x = RDATA->var26; +} + +void sub_81184D8(void) +{ + u8 spriteid; + struct SpriteSheet s; + LZ77UnCompWram(gUnknown_083FA42C.data, ewram); + s.data = ewram; + s.size = gUnknown_083FA42C.size; + s.tag = gUnknown_083FA42C.tag; + LoadSpriteSheet(&s); + spriteid = CreateSprite(&gSpriteTemplate_83FA434, 0x74, 0x50, 0x51); + gSprites[spriteid].data0 = RDATA->var24; + gSprites[spriteid].data1 = 0x0; + gSprites[spriteid].animPaused = TRUE; + gSprites[spriteid].affineAnimPaused = TRUE; + gSprites[spriteid].coordOffsetEnabled = TRUE; +} + +void sub_8118554(struct Sprite *sprite) +{ + u32 t = sprite->oam.matrixNum; + struct OamMatrix *m = &gOamMatrices[0]; + m[t].d = RDATA->var2C.a; + m[t].a = RDATA->var2C.a; + m[t].b = RDATA->var2C.b; + m[t].c = RDATA->var2C.c; +} + +void sub_811857C(void) +{ + u8 i; + for (i = 0x0; i < 0x6; i++) + { + u8 spriteid = + RDATA->var3C[i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x50, 0x39 - i); + if (spriteid != 0x40) + { + gSprites[RDATA->var3C[i]].invisible = TRUE; + gSprites[RDATA->var3C[i]].coordOffsetEnabled = TRUE; + } + } +} +/* +void sub_81185E8(void) +{ + u8 t = RDATA->var3C[0x0]; + u8 i; + for (i = 0x0; i < 0x6; i++) + { + u8 j; + gSprites[t].invisible = TRUE; + gSprites[t].callback = &SpriteCallbackDummy; + StartSpriteAnim(&gSprites[t], 0x0); + for (j = 0x0; j < 0x8; j++) + *(&gSprites[t].data0 + j) = 0x0; // zero allocation not quite right + t++; + } +} */ diff --git a/src/roulette_util.c b/src/roulette_util.c index 7501c3d80..bb47ed540 100644 --- a/src/roulette_util.c +++ b/src/roulette_util.c @@ -1,5 +1,6 @@ #include "global.h" #include "roulette_util.h" +#include "roulette.h" static u8 sub_81249E4(struct UnkStruct3 *); static u8 sub_8124BEC(struct UnkStruct3 *); @@ -17,47 +18,38 @@ void sub_8124918(struct UnkStruct0 *r0) u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2) { if (!(r1 < 0x10) || (r0->val3[r1].field1)) - { - return 0xFF; - } - else - { - r0->val3[r1].val4 = r2->val0; - r0->val3[r1].val5 = r2->val1; - r0->val3[r1].val6 = r2->val2; - r0->val3[r1].val7 = r2->val3; - r0->val3[r1].val8 = r2->val4; + return 0xFF; - r0->val3[r1].field2 = r2->field0; - r0->val3[r1].field3 = r2->field1; - r0->val3[r1].field4 = r2->field2; + r0->val3[r1].val4.val0 = r2->val0; + r0->val3[r1].val4.val1 = r2->val1; + r0->val3[r1].val4.val2 = r2->val2; + r0->val3[r1].val4.val3 = r2->val3; + r0->val3[r1].val4.val4 = r2->val4; + r0->val3[r1].val4.field0 = r2->field0; + r0->val3[r1].val4.field1 = r2->field1; + r0->val3[r1].val4.field2 = r2->field2; - r0->val3[r1].field0 = 0x0; - r0->val3[r1].field1 = 0x1; + //Why not r0->val3[r1].val4 = *r2; ? - r0->val3[r1].val2 = 0x0; - r0->val3[r1].val1 = 0x0; - if (r0->val3[r1].field4 < 0) - r0->val3[r1].val3 = 0xFF; - else - r0->val3[r1].val3 = 0x1; - return r1; - } + r0->val3[r1].field0 = 0x0; + r0->val3[r1].field1 = 0x1; + + r0->val3[r1].val2 = 0x0; + r0->val3[r1].val1 = 0x0; + if (r0->val3[r1].val4.field2 < 0) + r0->val3[r1].val3 = 0xFF; + else + r0->val3[r1].val3 = 0x1; + return r1; } #ifdef NONMATCHING - //Functionally equivalent u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1) { if (!(r1 < 0x10) || (r0->val3[r1].field1)) - { - return 0xFF; - } - else - { - memset(&(r0->val3[r1]), 0, 0xC); - return r1; - } + return 0xFF; + r0->val3[r1] = (struct UnkStruct3){0}; + return r1; } #else __attribute__((naked)) @@ -99,9 +91,9 @@ u8 sub_81249E4(struct UnkStruct3 *r0) { u8 i; u8 returnval; - for (i = 0; i < r0->val6; i++) + for (i = 0; i < r0->val4.val2; i++) { - u32 offset = r0->val5 + i; + u32 offset = r0->val4.val1 + i; struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset]; switch(r0->field0) @@ -136,7 +128,7 @@ u8 sub_81249E4(struct UnkStruct3 *r0) break; } } - if (((u32)r0->val2++) != r0->field2) + if (((u32)r0->val2++) != r0->val4.field0) { returnval = 0x0; } @@ -159,13 +151,13 @@ u8 sub_8124BEC(struct UnkStruct3 *r0) switch (r0->field0) { case 0x1: - for (rg2 = 0; rg2 < r0->val6; rg2++) - gPlttBufferFaded[r0->val5 + rg2] = r0->val4; + for (rg2 = 0; rg2 < r0->val4.val2; rg2++) + gPlttBufferFaded[r0->val4.val1 + rg2] = r0->val4.val0; r0->field0++; break; case 0x2: - for (rg2 = 0; rg2 < r0->val6; rg2++) - gPlttBufferFaded[r0->val5 + rg2] = gPlttBufferUnfaded[r0->val5 + rg2]; + for (rg2 = 0; rg2 < r0->val4.val2; rg2++) + gPlttBufferFaded[r0->val4.val1 + rg2] = gPlttBufferUnfaded[r0->val4.val1 + rg2]; r0->field0--; break; } @@ -183,11 +175,11 @@ void task_tutorial_controls_fadein(struct UnkStruct0 *r0) { if (((u8)--r0->val3[i].val1) == 0xFF) // if underflow ? { - if (r0->val3[i].val4 & (0x80 << 8)) // PlttData->unused_15 ? + if (r0->val3[i].val4.val0 & (0x80 << 8)) // PlttData->unused_15 ? sub_81249E4(&r0->val3[i]); else sub_8124BEC(&r0->val3[i]); - r0->val3[i].val1 = r0->val3[i].val7; + r0->val3[i].val1 = r0->val3[i].val4.val3; } } } @@ -222,14 +214,14 @@ void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) { if ((r1 >> i) & 0x1) { - u32 offset = r0->val3[i].val5; + u32 offset = r0->val3[i].val4.val1; u16 *faded = &gPlttBufferFaded[offset]; u16 *unfaded = &gPlttBufferUnfaded[offset]; - memcpy(faded, unfaded, r0->val3[i].val6 * 2); + memcpy(faded, unfaded, r0->val3[i].val4.val2 * 2); r0->val3[i].field0 = 0x0; r0->val3[i].val2 = 0x0; r0->val3[i].val1 = 0x0; - if (r0->val3[i].field4 < 0) + if (r0->val3[i].val4.field2 < 0) r0->val3[i].val3 = 0xFF; else r0->val3[i].val3 = 0x1; -- cgit v1.2.3 From 5753d1b615345ad55d926da75d8680181bbda01a Mon Sep 17 00:00:00 2001 From: M Date: Sun, 19 Nov 2017 23:23:59 +0100 Subject: decompiled up to sub_811889C --- src/roulette.c | 195 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 164 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 1661cce03..19fc3d604 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -19,7 +19,7 @@ #include "m4a.h" #include "rng.h" #include "game_stat.h" -#include "rom4.h" +#include "overworld.h" #include "string_util.h" #include "field_fadetransition.h" #include "script.h" @@ -138,6 +138,10 @@ extern const u8 gUnknown_083FA608[0x5]; extern const struct SpriteSheet gUnknown_083FA42C; extern const struct SpriteTemplate gSpriteTemplate_83FA434; +extern void (*gFieldCallback)(void); + +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; void sub_8117434(void); @@ -204,18 +208,18 @@ void sub_8116B40(u8); void dp01t_12_3_battle_menu(u8); -extern u8 ewram[]; +extern u8 gSharedMem[]; -#define ewram17000 ((u16 *) (ewram + 0x17000)) //money stuff? -#define ewram17E00 ((u16 *) (ewram + 0x17E00)) -#define ewram17800 ((u16 *) (ewram + 0x17800)) -#define ewram18000 ((u16 *) (ewram + 0x18000)) -#define ewram18800 ((u16 *) (ewram + 0x18800)) -#define ewram189a0 ((u16 *) (ewram + 0x189a0)) -#define ewram18a20 ((u16 *) (ewram + 0x18a20)) -#define ewram18a32 ((u16 *) (ewram + 0x18A32)) -#define ewram18a80 ((u16 *) (ewram + 0x18a80)) -#define RDATA ((struct RData *) (ewram + 0x19000)) +#define ewram17000 ((u16 *) (gSharedMem + 0x17000)) //money stuff? +#define ewram17E00 ((u16 *) (gSharedMem + 0x17E00)) +#define ewram17800 ((u16 *) (gSharedMem + 0x17800)) +#define ewram18000 ((u16 *) (gSharedMem + 0x18000)) +#define ewram18800 ((u16 *) (gSharedMem + 0x18800)) +#define ewram189a0 ((u16 *) (gSharedMem + 0x189a0)) +#define ewram18a20 ((u16 *) (gSharedMem + 0x18a20)) +#define ewram18a32 ((u16 *) (gSharedMem + 0x18A32)) +#define ewram18a80 ((u16 *) (gSharedMem + 0x18a80)) +#define RDATA ((struct RData *) (gSharedMem + 0x19000)) #define S16TOPOSFLOAT(val) \ ({ \ @@ -597,7 +601,7 @@ void sub_8115384(void) case 0x3: sub_8115238(); sub_80F9020(); - LZ77UnCompWram(&gUnknown_083F88BC, (void *)(ewram + 0x18800)); + LZ77UnCompWram(&gUnknown_083F88BC, (void *)(ewram18800)); LZ77UnCompVram(&gUnknown_083F8A60, (void *)(VRAM + 0x3000)); gMain.state++; break; @@ -2793,8 +2797,8 @@ u8 sub_8117890(const struct SpriteTemplate *r0, u8 r1, u16 *r2) { u16 temp; u8 spriteid = CreateSprite(r0, 0x74, 0x50, r0->oam->y); - gSprites[spriteid].data0 = *r2; - gSprites[spriteid].data1 = r1; + gSprites[spriteid].data[0] = *r2; + gSprites[spriteid].data[1] = r1; gSprites[spriteid].coordOffsetEnabled = TRUE; gSprites[spriteid].animPaused = TRUE; gSprites[spriteid].affineAnimPaused = TRUE; @@ -2810,13 +2814,13 @@ void sub_8117900(void) u8 i, j; u8 spriteid; struct SpriteSheet s; - LZ77UnCompWram(gUnknown_083F9F54.data, ewram); - s.data = ewram; + LZ77UnCompWram(gUnknown_083F9F54.data, gSharedMem); + s.data = gSharedMem; s.size = gUnknown_083F9F54.size; s.tag = gUnknown_083F9F54.tag; LoadSpriteSheet(&s); - LZ77UnCompWram(gUnknown_083F9F5C.data, ewram); - s.data = ewram; + LZ77UnCompWram(gUnknown_083F9F5C.data, gSharedMem); + s.data = gSharedMem; s.size = gUnknown_083F9F5C.size; s.tag = gUnknown_083F9F5C.tag; LoadSpriteSheet(&s); @@ -2886,7 +2890,7 @@ void sub_8117BBC(void) { RDATA->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA); gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; - gSprites[RDATA->var3C[0x31 + i]].data0 = 0x1; + gSprites[RDATA->var3C[0x31 + i]].data[0] = 0x1; gSprites[RDATA->var3C[0x31 + i]].callback = &sub_81184CC; gSprites[RDATA->var3C[0x31 + i]].oam.priority = 0x1; StartSpriteAnim(&gSprites[RDATA->var3C[0x31 + i]], 0x8); @@ -2938,8 +2942,8 @@ void sub_8117DF4(void) u8 i, j; u16 k; struct SpriteSheet s; - LZ77UnCompWram(gUnknown_083F9EE8.data, ewram); - s.data = ewram; + LZ77UnCompWram(gUnknown_083F9EE8.data, gSharedMem); + s.data = gSharedMem; s.size = gUnknown_083F9EE8.size; s.tag = gUnknown_083F9EE8.tag; LoadSpriteSheet(&s); @@ -3069,8 +3073,8 @@ void sub_8117F2C(void) for (i = 0x0; i < 0x5; i++) { struct SpriteSheet s; - LZ77UnCompWram(gUnknown_083FA21C[i].data, ewram); - s.data = ewram; + LZ77UnCompWram(gUnknown_083FA21C[i].data, gSharedMem); + s.data = gSharedMem; s.size = gUnknown_083FA21C[i].size; s.tag = gUnknown_083FA21C[i].tag; LoadSpriteSheet(&s); @@ -3317,14 +3321,14 @@ void sub_81184D8(void) { u8 spriteid; struct SpriteSheet s; - LZ77UnCompWram(gUnknown_083FA42C.data, ewram); - s.data = ewram; + LZ77UnCompWram(gUnknown_083FA42C.data, gSharedMem); + s.data = gSharedMem; s.size = gUnknown_083FA42C.size; s.tag = gUnknown_083FA42C.tag; LoadSpriteSheet(&s); spriteid = CreateSprite(&gSpriteTemplate_83FA434, 0x74, 0x50, 0x51); - gSprites[spriteid].data0 = RDATA->var24; - gSprites[spriteid].data1 = 0x0; + gSprites[spriteid].data[0] = RDATA->var24; + gSprites[spriteid].data[1] = 0x0; gSprites[spriteid].animPaused = TRUE; gSprites[spriteid].affineAnimPaused = TRUE; gSprites[spriteid].coordOffsetEnabled = TRUE; @@ -3354,7 +3358,7 @@ void sub_811857C(void) } } } -/* + void sub_81185E8(void) { u8 t = RDATA->var3C[0x0]; @@ -3366,8 +3370,137 @@ void sub_81185E8(void) gSprites[t].callback = &SpriteCallbackDummy; StartSpriteAnim(&gSprites[t], 0x0); for (j = 0x0; j < 0x8; j++) - *(&gSprites[t].data0 + j) = 0x0; // zero allocation not quite right + gSprites[t].data[j] = 0x0; t++; } } -*/ + +s16 sub_811866C(struct Sprite *sprite) +{ + if (RDATA->var24 > sprite->data[0x3]) + { + sprite->data[0x6] = 360 - RDATA->var24 + sprite->data[0x3]; + if (sprite->data[0x6] > 359) + sprite->data[0x6] -=360; + } + else + sprite->data[0x6] = sprite->data[0x3] - RDATA->var24; + return sprite->data[0x6]; +} + +u8 sub_81186B8(struct Sprite *sprite) +{ + RDATA->var7E = (u8)(((float)(s16)sub_811866C(sprite)) / 30.0f); + return RDATA->var7E; +} + +s16 sub_81186E8(struct Sprite *sprite) +{ + s16 t = sub_811866C(sprite) % 30; + u16 z; + if (t == 0xE) + { + z = 0x0; + return sprite->data[0x2] = z; + } + else if (t > 0xD) + { + z = (u16)(0x2B - t); + return sprite->data[0x2] = z; + } + else + { + z = (u16)(0xE - t); + return sprite->data[0x2] = z; + } +} + +void sub_8118724(struct Sprite *sprite) +{ + s16 sin, cos; + RDATA->var8C += RDATA->var90; + RDATA->var88 += RDATA->var8C; + if (RDATA->var88 >= 360) + RDATA->var88 -= 360.0f; + else + if (RDATA->var88 < 0.0f) + RDATA->var88 += 360.0f; + sprite->data[0x3] = RDATA->var88; + RDATA->var98 += RDATA->var9C; + RDATA->var94 += RDATA->var98; + sprite->data[0x4] = RDATA->var94; + sin = Sin2(sprite->data[0x3]); + cos = Cos2(sprite->data[0x3]); + sprite->pos2.x = sin * sprite->data[0x4] >> 0xC; + sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC; + if (IsSEPlaying()) + { + m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, sprite->pos2.x); + m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, sprite->pos2.x); + } +} + +void sub_8118834(struct Sprite *sprite) +{ + s16 sin, cos; + sprite->data[0x3] = RDATA->var24 + sprite->data[0x6]; + if (sprite->data[0x3] > 359) + sprite->data[0x3] -= 360; + sin = Sin2(sprite->data[0x3]); + cos = Cos2(sprite->data[0x3]); + sprite->pos2.x = sin * sprite->data[0x4] >> 0xC; + sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC; + sprite->pos2.y += gSpriteCoordOffsetY; +} + +void sub_811889C(struct Sprite *sprite) +{ + sub_8118724(sprite); + sprite->data[0x2]++; + if ((u16)(sprite->data[0x4] + 0x84) > 0xD4) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + if (!(sprite->data[0x2] < 30)) + { + if (!sprite->data[0x0]) + { + if (RDATA->var94 <= RDATA->varA0 - 2.0f) + { + RDATA->var7D = 0xFF; + RDATA->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + RDATA->var9C = RDATA->var98 = 0.0f; + RDATA->var8C = -1.0f; + } + } + else + { + if (RDATA->var94 >= RDATA->varA0 - 2.0f) + { + RDATA->var7D = 0xFF; + RDATA->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + RDATA->var9C = RDATA->var98 = 0.0f; + RDATA->var8C = -1.0f; + } + } + } +} + +void sub_81189A8(struct Sprite *sprite) +{ + +} -- cgit v1.2.3 From 50a9e8f0f514aadce63626253ddd230a4aba1e49 Mon Sep 17 00:00:00 2001 From: Made-s Date: Mon, 20 Nov 2017 14:29:48 +0100 Subject: begin decompiling sub_81189A8 --- src/roulette.c | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 19fc3d604..ef9f8507d 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -244,7 +244,9 @@ struct Unkg083F8DF4 u8 var02; u8 var03; u8 var04; - u8 v[0x13]; + u8 v[0x8]; + u16 var0C; + u8 v1[0x9]; s16 var18; s16 var1A; //is this signed or not ? u8 v2[0x4]; @@ -3502,5 +3504,34 @@ void sub_811889C(struct Sprite *sprite) void sub_81189A8(struct Sprite *sprite) { - + float f0, f1, f2; + sub_8118724(sprite); + switch(sprite->data[0x3]) + { + case 0: + if (sprite->data[0x0]) + return; + f0 = ((float)sprite->data[0x8]); + f1 = ((f0 * (float)(gUnknown_083F8DF4[RDATA->var04_0].var01)) + (float)(gUnknown_083F8DF4[RDATA->var04_0].var02 - 0x1)); + f2 = ((float)gUnknown_083F8DF4[RDATA->var04_0].var0C) / f0; + break; + case 180: + if (!sprite->data[0x0]) + return; + f0 = ((float)sprite->data[0x8]); + f1 = ((f0 * (float)(gUnknown_083F8DF4[RDATA->var04_0].var01)) + (float)(gUnknown_083F8DF4[RDATA->var04_0].var02 - 0x1)); + f2 = ((float)gUnknown_083F8DF4[RDATA->var04_0].var0C) / f0; + break; + default: return; + } + RDATA->varA0 = RDATA->var94; + RDATA->var98 = f2; + RDATA->var9C = -((f2 + f2) / f1 + (2.0f / (f1 * f1))); + RDATA->var8C = 0.0f; + sprite->animPaused = FALSE; + sprite->animNum = 0x0; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->callback = &sub_811889C; + sprite->data[0x2] = 0x0; } -- cgit v1.2.3 From ba4b0d8dd2587667c04e6cc63e31afe16fba1381 Mon Sep 17 00:00:00 2001 From: Made-s Date: Thu, 23 Nov 2017 14:50:16 +0100 Subject: start decompiling ub_8118DE4 --- src/roulette.c | 264 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 228 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index ef9f8507d..0250857a2 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -205,6 +205,11 @@ void sub_81157AC(u8); void sub_8116B40(u8); +void sub_8119224(struct Sprite *); +void sub_81193D4(struct Sprite *); +void sub_811952C(struct Sprite *); + + void dp01t_12_3_battle_menu(u8); @@ -221,14 +226,6 @@ extern u8 gSharedMem[]; #define ewram18a80 ((u16 *) (gSharedMem + 0x18a80)) #define RDATA ((struct RData *) (gSharedMem + 0x19000)) -#define S16TOPOSFLOAT(val) \ -({ \ - s16 v = (val); \ - float f = (float)v; \ - if(v < 0) f += 65536.0f; \ - f; \ -}) - struct OamMatrix { s16 a; @@ -244,12 +241,12 @@ struct Unkg083F8DF4 u8 var02; u8 var03; u8 var04; - u8 v[0x8]; + u8 v[0x7]; u16 var0C; - u8 v1[0x9]; - s16 var18; - s16 var1A; //is this signed or not ? - u8 v2[0x4]; + u8 v1[0xA]; + u16 var18; + u16 var1A; //is this signed or not ? + float var1C; }; struct RData /* ewram + 0x19000 */ @@ -1035,15 +1032,12 @@ u8 sub_8115F58(u16 r0, u16 r1) void sub_8116100(u8 taskid) { u8 randf; - u16 floatr; - float tempf; - u32 zzz; s8 randfinal; s8 r5; u16 g; u16 rand; u16 randmod; - s16 angles[0x4]; // angles in 90 degree steps + u16 angles[0x4]; // angles in 90 degree steps u8 zero = 0x0; memcpy(angles, &gUnknown_083F8ECE, 0x8); rand = Random(); @@ -1064,20 +1058,18 @@ void sub_8116100(u8 taskid) r5 = (1 - r5) * 2; g = (&gUnknown_083F8DF4[RDATA->var04_0])->var1A; RDATA->var80 = (g + randfinal); - tempf = S16TOPOSFLOAT(g + randfinal); - // some register differences here - floatr = tempf / 5.0f; - zzz = floatr * 3; - RDATA->var82 = floatr * 3; - RDATA->var84 = floatr; - RDATA->var86 = floatr; // - RDATA->var88 = S16TOPOSFLOAT(angles[(rand & 0x1) + r5]); - RDATA->var8C = S16TOPOSFLOAT((&gUnknown_083F8DF4[RDATA->var04_0])->var18); - RDATA->var90 = ((RDATA->var8C * 0.5f) - RDATA->var8C) / S16TOPOSFLOAT(zzz); + g = ((float)(u16)(g + randfinal)) / 5.0f; + RDATA->var82 = g * 3; + RDATA->var84 = g; + RDATA->var86 = g; + // + RDATA->var88 = (float)(angles[(rand & 0x1) + r5]); + RDATA->var8C = (float)((&gUnknown_083F8DF4[RDATA->var04_0])->var18); + RDATA->var90 = ((RDATA->var8C * 0.5f) - RDATA->var8C) / (float)(u16)(g * 3); RDATA->var94 = 68.0f; RDATA->var9C = 0.0f; - RDATA->var98 = -(8.0f / S16TOPOSFLOAT(zzz)); + RDATA->var98 = -(8.0f / (float)(u16)(g * 3)); RDATA->varA0 = 36.0f; gTasks[taskid].func = &sub_8116308; } @@ -3505,22 +3497,35 @@ void sub_811889C(struct Sprite *sprite) void sub_81189A8(struct Sprite *sprite) { float f0, f1, f2; + struct Unkg083F8DF4 *p; sub_8118724(sprite); switch(sprite->data[0x3]) { case 0: - if (sprite->data[0x0]) + if (sprite->data[0x0] != 0x1) + { + f0 = ((float)sprite->data[0x7]); + p = &gUnknown_083F8DF4[0]; + f1 = (f0 * ((float)(s32)p[RDATA->var04_0].var01) + (float)((s32)p[RDATA->var04_0].var02 - 0x1)); + f2 = (f0 / ((float)(s32)p[RDATA->var04_0].var0C)); + } + else + { return; - f0 = ((float)sprite->data[0x8]); - f1 = ((f0 * (float)(gUnknown_083F8DF4[RDATA->var04_0].var01)) + (float)(gUnknown_083F8DF4[RDATA->var04_0].var02 - 0x1)); - f2 = ((float)gUnknown_083F8DF4[RDATA->var04_0].var0C) / f0; + } break; case 180: - if (!sprite->data[0x0]) + if (sprite->data[0x0] != 0x0) + { + f0 = ((float)sprite->data[0x7]); + p = &gUnknown_083F8DF4[0]; + f1 = (f0 * ((float)(s32)p[RDATA->var04_0].var01) + (float)((s32)p[RDATA->var04_0].var02 - 0x1)); + f2 = -(f0 / ((float)(s32)p[RDATA->var04_0].var0C)); + } + else + { return; - f0 = ((float)sprite->data[0x8]); - f1 = ((f0 * (float)(gUnknown_083F8DF4[RDATA->var04_0].var01)) + (float)(gUnknown_083F8DF4[RDATA->var04_0].var02 - 0x1)); - f2 = ((float)gUnknown_083F8DF4[RDATA->var04_0].var0C) / f0; + } break; default: return; } @@ -3535,3 +3540,190 @@ void sub_81189A8(struct Sprite *sprite) sprite->callback = &sub_811889C; sprite->data[0x2] = 0x0; } + +void sub_8118B30(struct Sprite *sprite) +{ + sprite->pos2.y = (s32)(((float)sprite->data[0x2]) * 0.05f * ((float)sprite->data[0x2])) - 45; + sprite->data[0x2]++; + if (sprite->data[0x2] > 29 && sprite->pos2.y >= 0) + { + RDATA->var7D = 0xFF; + RDATA->var03_7 = FALSE; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + RDATA->var03_6 = TRUE; + } +} + +void sub_8118BD8(struct Sprite *sprite) +{ + if (sprite->data[0x2]++ < 45) + { + sprite->pos2.y--; + if(sprite->data[0x2] == 45) + { + if (gSprites[RDATA->var3C[0x37]].animCmdIndex == 0x1) + sprite->pos2.y++; + } + } + else + { + if (sprite->data[0x2] < sprite->data[0x7]) + { + if (gSprites[RDATA->var3C[0x37]].animDelayCounter == 0x0) + { + if (gSprites[RDATA->var3C[0x37]].animCmdIndex == 0x1) + sprite->pos2.y++; + else + sprite->pos2.y--; + } + } + else + { + sprite->animPaused = FALSE; + sprite->animNum = 0x1; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->data[0x2] = 0x0; + sprite->callback = &sub_8118B30; + m4aSongNumStart(0x3D); + } + } +} + +void sub_8118CAC(struct Sprite *sprite) +{ + sub_8118724(sprite); + switch(sprite->data[0x3]) + { + case 90: + if (sprite->data[0x0] != 0x1) + { + sprite->callback = &sub_8118BD8; + sprite->data[0x2] = 0x0; + } + break; + case 270: + if (sprite->data[0x0] != 0x0) + { + sprite->callback = &sub_8118BD8; + sprite->data[0x2] = 0x0; + } + break; + } +} + +void sub_8118CEC(struct Sprite *sprite) +{ + sub_8118724(sprite); + switch(RDATA->var03_0) + { + default: + case 0x0: + sub_8119224(sprite); + sprite->callback = &sub_81189A8; + break; + case 0x1: + sub_81193D4(sprite); + sprite->callback = &sub_8118CAC; + break; + } +} + +void sub_8118D2C(struct Sprite *sprite) +{ + sub_8118724(sprite); + if (sprite->data[0x2]-- == 0x10) + RDATA->var98 *= -1.0f; + if (sprite->data[0x2] == 0x0) + { + if (!sprite->data[0x0]) + { + RDATA->var7D = 0xFF; + RDATA->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + } + else + { + sprite->animPaused = TRUE; + m4aSongNumStart(0x38); + sub_811952C(sprite); + } + } +} + +void sub_8118DE4(struct Sprite *sprite) +{ + sub_8118724(sprite); + sprite->data[0x2] = 0x0; + sub_81186B8(sprite); + if (!(gUnknown_083F8D90[RDATA->var7E].var04 & RDATA->var08)) + { + RDATA->var7D = 0xFF; + RDATA->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + } + else + { + u8 t; + u32 z; + m4aSongNumStart(0x38); + if ((z = (Random() & 0x1))) + { + RDATA->var8C = 0.0f; + t = (RDATA->var7E + 0x1) % 0xC; + RDATA->var7F = t; + } + else + { + RDATA->var8C = gUnknown_083F8DF4[RDATA->var04_0].var1C * 2; + t = (RDATA->var7E + 0xB) % 0xC; + RDATA->var7F = t; + } + if (gUnknown_083F8D90[t].var04 & RDATA->var08) + { + sprite->data[0x0] = 0x1; + sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var02; + } + else + { + sprite->data[0x0] = gUnknown_083F8D90[t].var04 & RDATA->var08; + if (RDATA->var04_0) + { + sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var01; + } + else + { + sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var02; + if (z) + { + RDATA->var8C = 1.5f; + } + else + { + RDATA->var8C = -1.5f; + } + } + } + RDATA->var98 = 0.085000000894069671630859375f; + sprite->callback = &sub_8118D2C; + sprite->data[0x1] = 0x5; + } +} -- cgit v1.2.3 From e9bb490023f346697b4f432a9add1fe158f2038d Mon Sep 17 00:00:00 2001 From: M Date: Sat, 6 Jan 2018 00:21:01 +0100 Subject: finish roulette file --- src/roulette.c | 2776 ++++++++++++++++++++++++++++++++++----------------- src/roulette_util.c | 615 ++++++------ 2 files changed, 2157 insertions(+), 1234 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 0250857a2..36c15bf23 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -1,60 +1,121 @@ #include "global.h" -#include "roulette.h" -#include "roulette_util.h" -#include "task.h" -#include "palette.h" -#include "text.h" -#include "pokemon.h" -#include "species.h" -#include "rtc.h" + +#include "ewram.h" +#include "field_fadetransition.h" +#include "game_stat.h" +#include "m4a.h" #include "main.h" -#include "menu_helpers.h" -#include "unknown_task.h" #include "menu.h" -#include "trig.h" -#include "sprite.h" #include "menu_cursor.h" -#include "sound.h" -#include "songs.h" -#include "m4a.h" -#include "rng.h" -#include "game_stat.h" +#include "menu_helpers.h" #include "overworld.h" -#include "string_util.h" -#include "field_fadetransition.h" +#include "palette.h" +#include "pokemon.h" +#include "rng.h" +#include "roulette.h" +#include "roulette_util.h" +#include "rtc.h" +#include "songs.h" +#include "sound.h" #include "script.h" +#include "species.h" +#include "sprite.h" #include "strings2.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "trig.h" +#include "unknown_task.h" asm(".include \"constants/gba_constants.inc\""); -extern u8 gUnknown_02019000[]; -extern u16 gSpecialVar_0x8004; -extern struct Unkg083F8DF4 gUnknown_083F8DF4[]; -extern u8 gUnknown_083F8EC4; -extern u8 gUnknown_083F8DF0[]; -extern u8 gUnknown_083F8E34[]; -extern const u8 gUnknown_08E8096C[]; -extern const u8 gRouletteWheelTiles[]; -extern const u8 gRouletteCenter_Gfx[]; -extern const u8 gRouletteHeadersTiles[]; -extern const u8 gRouletteCreditTiles[]; -extern const u8 gRouletteNumbersTiles[]; -extern const u8 gRouletteMultiplierTiles[]; -extern const u8 gUnknown_083F86BC[]; -extern const u8 gUnknown_083F88BC[]; -extern const u8 gUnknown_083F8A60[]; - -extern u16 gPlttBufferFaded[]; -extern u16 gPlttBufferUnfaded[]; - -extern const u8 gUnknown_081C4157[]; +struct OamMatrix +{ + s16 a; + s16 b; + s16 c; + s16 d; +}; -extern const struct YesNoFuncTable gUnknown_083F8EBC; -extern const u8 gUnknown_081C41E3; +struct Roulette /* ewram + 0x19000 */ +{ + u8 var00; + u8 var01; + u8 var02; + u8 var03_0:5; + u8 var03_5:1; + u8 var03_6:1; + u8 var03_7:1; + u8 var04_0:2; + u8 var04_2:5; + u8 var04_7:1; + u32 var08; + u8 var0C[0x6]; + u8 var12[0x4]; + u8 var16[0x3]; + u8 var19; + u8 var1A_0:4; + u8 var1A_4:4; + u8 var1B[0x6]; + u8 var21; + u8 var22; + u8 var23; + s16 var24; + s16 var26; + s16 var28; + s16 var2A; + struct OamMatrix var2C; + u16 var34; + struct Sprite *var38; + u8 var3C[0x40]; // Sprite IDs + u8 var7C; + u8 var7D; + u8 var7E; + u8 var7F; + s16 var80; + s16 var82; + s16 var84; + s16 var86; + float var88; + float var8C; + float var90; + float var94; + float var98; + float var9C; + float varA0; + u8 varA4; + u8 varA5; + u8 v51[0x2]; + u16 varA8; + u16 varAA; + TaskFunc varAC; + u8 v46[0x4]; + TaskFunc varB4; + struct UnkStruct0 varB8; +}; -extern const u16 gUnknown_083F8ECE; +struct StructgUnknown_083F8DF4 +{ + u8 var00; + u8 var01; + u8 var02; + u8 var03; + u8 var04; + u8 v[0x3]; + u16 var08; + u16 var0A; + u16 var0C; + u16 v13[0x1]; + u16 var10; + u16 var12; + u16 var14; + u8 v1[0x2]; + u16 var18; + u16 var1A; + float var1C; +}; -struct StructUnknown_083F8C00 +struct StructgUnknown_083F8C00 { u8 var00; u8 var01_0:4; @@ -63,8 +124,8 @@ struct StructUnknown_083F8C00 u8 var03; u8 var04; u8 var05; - u8 var06; - u8 var07; + u8 var06; + u8 var07; u32 var08; u32 var0C; u16 var10; @@ -80,35 +141,147 @@ struct StructgUnknown_083F8D90 u32 var04; }; -extern const struct StructUnknown_083F8C00 gUnknown_083F8C00[]; +static void sub_81150FC(void); +static void sub_8115124(void); +static void sub_8115238(void); +static void sub_8115384(void); +static void sub_8115634(u8); +static void sub_81156BC(u8); +static void sub_8115734(u8); +void sub_811577C(u8); +void sub_81157AC(u8); +static void sub_81157D0(u8); +static void sub_8115928(u8, u8); +static void sub_811597C(u8); +static void sub_81159BC(u8); +static u8 sub_8115A94(s16 *, u8); +void sub_8115B58(u8); +static void sub_8115DA0(u8); +static void sub_8115E14(u8); +static void sub_8115ECC(u8); +u8 sub_8115F58(u16, u16); +static void sub_8116100(u8); +void sub_8116308(u8); +static void sub_811637C(u8); +static void sub_8116474(u8); +static void sub_8116514(u8); +static void sub_811659C(u8); +static void sub_8116638(u8); +static void sub_81166E8(u8); +static void sub_811677C(u8); +static void sub_81167F4(u8); +static void sub_8116880(u8); +static void dp01t_12_3_battle_menu(u8); +static void sub_8116AB0(u8); +static void sub_8116B40(u8); +static void sub_8116BC0(u8); +static void sub_8116C34(u8, TaskFunc, u16, u16); +static void sub_8116CAC(u8); +static void sub_8116CF8(void); +static u8 sub_8116D54(u8, u8); +static u8 sub_8116E5C(u8, u8); +static void sub_8116EF8(u8); +static void sub_8117158(u8); +static u8 sub_8117380(u8); +static void sub_8117434(void); +static void sub_81174F8(u8); +static void sub_8117528(u8); +void sub_811755C(u8); +void sub_81175C0(u8); +static void sub_81175DC(u8); +static void sub_8117630(u8); +static void Task_Roulette_0(u8); +static void sub_8117838(u8); +static u8 sub_8117890(const struct SpriteTemplate *, u8, u16 *); +static void sub_8117900(void); +void unref_sub_8117A74(void); +static void sub_8117AA8(u8, u8); +static void sub_8117BBC(void); +static void sub_8117C60(u8, u8); +static void sub_8117D68(u8); +static void sub_8117DF4(void); +void sub_8117E98(struct Sprite *); +static void sub_8117F2C(void); +static void sub_81180F4(u16); +static u8 sub_81181E8(u8); +static void sub_811829C(u8); +static void sub_81182F8(u8); +void sub_81184CC(struct Sprite *); +static void sub_81184D8(void); +void sub_8118554(struct Sprite *); +static void sub_811857C(void); +static void sub_81185E8(void); +static s16 sub_811866C(struct Sprite *); +static u8 sub_81186B8(struct Sprite *); +static s16 sub_81186E8(struct Sprite *); +static void sub_8118724(struct Sprite *); +static void sub_8118834(struct Sprite *); +static void sub_811889C(struct Sprite *); +static void sub_81189A8(struct Sprite *); +static void sub_8118B30(struct Sprite *); +static void sub_8118BD8(struct Sprite *); +static void sub_8118CAC(struct Sprite *); +void sub_8118CEC(struct Sprite *); +void sub_8118D2C(struct Sprite *); +static void sub_8118DE4(struct Sprite *); +static void sub_8118F8C(struct Sprite *); +static void sub_8119088(struct Sprite *); +static void sub_8119134(struct Sprite *); +static void sub_81191F4(struct Sprite *); +static void sub_8119224(struct Sprite *); +static void sub_81193D4(struct Sprite *); +static void sub_811952C(struct Sprite *); +static void sub_8119780(struct Sprite *); +static void sub_81197D8(struct Sprite *); +static void sub_8119898(struct Sprite *); +void sub_8119964(struct Sprite *); +static void sub_8119A90(struct Sprite *); +static void sub_8119AAC(struct Sprite *); +static void sub_8119B24(struct Sprite *); +static void sub_8119BCC(struct Sprite *); +static void sub_8119D08(struct Sprite *); +void sub_8119D80(struct Sprite *); +extern u8 gUnknown_02019000[]; +extern u16 gSpecialVar_0x8004; +extern struct StructgUnknown_083F8DF4 gUnknown_083F8DF4[]; +extern u8 gUnknown_083F8EC4; +extern u8 gUnknown_083F8DF0[]; +extern u8 gUnknown_083F8E34[]; +extern const u8 gUnknown_08E8096C[]; +extern const u8 gRouletteWheelTiles[]; +extern const u8 gRouletteCenter_Gfx[]; +extern const u8 gRouletteHeadersTiles[]; +extern const u8 gRouletteCreditTiles[]; +extern const u8 gRouletteNumbersTiles[]; +extern const u8 gRouletteMultiplierTiles[]; +extern const u16 gUnknown_083F86BC[]; +extern const u8 gUnknown_083F88BC[]; +extern const u8 gUnknown_083F8A60[]; +extern u16 gPlttBufferFaded[]; +extern u16 gPlttBufferUnfaded[]; +extern const u8 gUnknown_081C4157[]; +extern const struct YesNoFuncTable gUnknown_083F8EBC; +extern const u8 gUnknown_081C41E3; +extern const u16 gUnknown_083F8ECE; +extern const struct StructgUnknown_083F8C00 gUnknown_083F8C00[]; const extern u8 gUnknown_083F8ECA[]; - const extern u8 gUnknown_081C41A5; const extern u8 gUnknown_081C4199; const extern u8 gUnknown_081C41AE; - const extern u8 gUnknown_081C41BD; - const extern u8 gUnknown_081C41F1; const extern u8 gUnknown_081C4231; const extern u8 gUnknown_081C41D2; - extern const struct StructgUnknown_083F8D90 gUnknown_083F8D90[]; extern const u32 gUnknown_083F8ED8[]; extern const u32 gUnknown_083F8EE8[]; - extern const struct UnkStruct1 gUnknown_083F8E9C[]; - extern const u8 gUnknown_083F8EF4[]; - extern const struct YesNoFuncTable gUnknown_083F8EB4; - -//Strings TODO: give proper names extern const u8 gUnknown_081C40DF; extern const u8 gUnknown_081C4139; extern const u8 gUnknown_081C411C; - extern const u8 gUnknown_083F92A8[]; extern const u8 gUnknown_083F90FC[]; extern const u8 gUnknown_083F9D3C[]; @@ -118,286 +291,127 @@ extern const struct SpriteSheet gUnknown_083F9F5C; extern const struct SpriteTemplate gSpriteTemplate_83FA07C[]; extern const struct SpriteTemplate gSpriteTemplate_83F9FD4[]; extern const struct SpriteTemplate gSpriteTemplate_83FA034[]; - extern const struct SpriteTemplate gSpriteTemplate_83FA40C; - extern const struct SpriteSheet gUnknown_083F9EE8; extern const struct SpriteTemplate gSpriteTemplate_83FA0DC[]; - extern struct OamMatrix gOamMatrices[]; - extern const struct SpriteSheet gUnknown_083FA21C[]; extern const struct SpriteTemplate gSpriteTemplate_83FA2B0; extern const struct SpriteTemplate gSpriteTemplate_83FA2C8; extern const struct SpriteTemplate gSpriteTemplate_83FA2E0; extern const struct SpriteTemplate gSpriteTemplate_83FA2F8; extern const struct SpriteTemplate gSpriteTemplate_83FA310; - extern const u8 gUnknown_083FA608[0x5]; - extern const struct SpriteSheet gUnknown_083FA42C; extern const struct SpriteTemplate gSpriteTemplate_83FA434; - extern void (*gFieldCallback)(void); - extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; - -void sub_8117434(void); - -void sub_8117838(u8); -void sub_811857C(void); -void sub_81184D8(void); -void sub_8117F2C(void); -void sub_8117900(void); -void sub_8117BBC(void); -void sub_8117DF4(void); - -void sub_81180F4(u16); -void sub_81182F8(u8); -void sub_811829C(u8); -void sub_8117158(u8); - -void sub_81156BC(u8); -void sub_8115634(u8); - -void sub_8116CAC(u8); -void sub_8116CF8(void); -void sub_81185E8(void); -void sub_81182F8(u8); -void sub_81159BC(u8); -void sub_8116C34(u8, TaskFunc, u16, u16); - -void sub_8116AB0(u8); - -void sub_8115E14(u8); - -void sub_8116EF8(u8); - -void sub_8115ECC(u8); - -u8 sub_8117380(u8); - -void sub_8117AA8(u8, u8); -void sub_8117C60(u8, u8); -void sub_8116100(u8); - -void sub_8116308(u8); - -void sub_81191F4(struct Sprite *); -void sub_811637C(u8); - -u8 sub_8116D54(u8, u8); -u8 sub_8116E5C(u8 ,u8); -void sub_8116474(u8); - -void sub_81184CC(struct Sprite *); -void sub_8117D68(u8); -void sub_8116514(u8); - -void sub_8116638(u8); - -void sub_811677C(u8); -void sub_81167F4(u8); - -void sub_8116880(u8); -void sub_81157AC(u8); - -void sub_8116B40(u8); - -void sub_8119224(struct Sprite *); -void sub_81193D4(struct Sprite *); -void sub_811952C(struct Sprite *); +extern const u16 gUnknown_083FA60E[0x2][0x2]; +extern const struct SpriteTemplate gSpriteTemplate_83FA50C; +extern const struct SpriteTemplate gSpriteTemplate_83FA5C0[]; +extern const u16 gUnknown_083FA616[0x2][0x2]; +extern const struct SpriteTemplate gSpriteTemplate_83FA524; +extern const struct SpriteTemplate gSpriteTemplate_83FA5F0; +extern const u16 gUnknown_083FA61E[0xA]; +extern const u16 gUnknown_083FA632[]; +extern const s8 gUnknown_083FA64A[0x2]; +extern const s8 gUnknown_083FA64C[0x8][0x2]; -void dp01t_12_3_battle_menu(u8); -extern u8 gSharedMem[]; - -#define ewram17000 ((u16 *) (gSharedMem + 0x17000)) //money stuff? -#define ewram17E00 ((u16 *) (gSharedMem + 0x17E00)) -#define ewram17800 ((u16 *) (gSharedMem + 0x17800)) -#define ewram18000 ((u16 *) (gSharedMem + 0x18000)) -#define ewram18800 ((u16 *) (gSharedMem + 0x18800)) -#define ewram189a0 ((u16 *) (gSharedMem + 0x189a0)) -#define ewram18a20 ((u16 *) (gSharedMem + 0x18a20)) -#define ewram18a32 ((u16 *) (gSharedMem + 0x18A32)) -#define ewram18a80 ((u16 *) (gSharedMem + 0x18a80)) -#define RDATA ((struct RData *) (gSharedMem + 0x19000)) - -struct OamMatrix +void sub_81150FC(void) { - s16 a; - s16 b; - s16 c; - s16 d; -}; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + if (eRoulette->varB8.var00) + task_tutorial_controls_fadein(&eRoulette->varB8); +} -struct Unkg083F8DF4 +void sub_8115124(void) { - u8 var00; - u8 var01; - u8 var02; - u8 var03; - u8 var04; - u8 v[0x7]; - u16 var0C; - u8 v1[0xA]; - u16 var18; - u16 var1A; //is this signed or not ? - float var1C; -}; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8117434(); + REG_BG1HOFS = 0x200 - eRoulette->var26; + if (eRoulette->var01) + REG_BLDALPHA = eRoulette->var34; + if (eRoulette->var2A != 0) + { + DmaCopy16(3, &gBGTilemapBuffers[1][0xE0], (void *)(VRAM + 0x21C0), 0x340); + eRoulette->var2A = 0x0; + } + switch (eRoulette->var28) + { + case 0x1: + REG_BG0CNT = (0x20 * 0xF8); + DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340); + eRoulette->var28 = 0x2; + break; + case 0x2: + DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340); + break; + case 0xFF: + REG_BG0CNT = 0x1F08; + DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340); + eRoulette->var28 = 0x0; + break; + case 0x0: + } +} +#ifdef NONMATCHING -struct RData /* ewram + 0x19000 */ -{ - u8 var00; - u8 var01; - u8 var02; - u8 var03_0:5; - u8 var03_5:1; - u8 var03_6:1; - u8 var03_7:1; - u8 var04_0:2; - u8 var04_2:5; - u8 var04_7:1; - u8 v7[0x3]; - u32 var08; - u8 var0C[0x6]; - u8 var12[0x4]; - u8 var16[0x3]; - u8 var19; - u8 var1A_0:4; - u8 var1A_4:4; - u8 var1B[0x6]; - u8 var21; - u8 var22; - u8 var23; - s16 var24; - s16 var26; - s16 var28; - s16 var2A; - struct OamMatrix var2C; - u16 var34; - u8 v99[0x2]; - struct Sprite *var38; - u8 var3C[0x40]; // Sprite IDs ? TODO: add some defines for the different areas - u8 var7C; - u8 var7D; - u8 var7E; - u8 var7F; - s16 var80; - s16 var82; - s16 var84; - s16 var86; - float var88; - float var8C; - float var90; - float var94; - float var98; - float var9C; - float varA0; - u8 varA4; - u8 varA5; // taskid - u8 v51[0x2]; - u16 varA8; - u16 varAA; - TaskFunc varAC; - u8 v46[0x4]; - TaskFunc varB4; - struct UnkStruct0 varB8; -}; - - -void sub_81150FC(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - if (RDATA->varB8.val0) - task_tutorial_controls_fadein(&RDATA->varB8); -} - -void sub_8115124(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - sub_8117434(); - REG_BG1HOFS = 0x200 - RDATA->var26; - if (RDATA->var01) - REG_BLDALPHA = RDATA->var34; - if (RDATA->var2A != 0) - { - DmaCopy16(3, &gBGTilemapBuffers[1][0xE0], (void *)(VRAM + 0x21C0), 0x340); - RDATA->var2A = 0x0; - } - switch (RDATA->var28) - { - case 0x1: - REG_BG0CNT = (0x20 * 0xF8); - DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340); - RDATA->var28 = 0x2; - break; - case 0x2: - DmaCopy16(3, &gBGTilemapBuffers[2][0xE0], (void *)(VRAM + 0xF9C0), 0x340); - break; - case 0xFF: - REG_BG0CNT = 0x1F08; - DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340); - RDATA->var28 = 0x0; - break; - case 0x0: - } -} -#ifdef NONMATCHING -void sub_8115238(void) +void sub_8115238(void) { u8 i; u32 temp; - struct Unkg083F8DF4 *s0; - u16 arr[0x3]; // the third is never used ? + struct PlttData t; + struct PlttData *unfaded; + struct PlttData *faded; + struct StructgUnknown_083F8DF4 *s0; + struct PlttData arr[0x3]; // the third is never used ? memcpy(&arr, &gUnknown_083F8EC4, 0x6); - memset(RDATA, 0x0, 0x17C); - RDATA->var04_0 = (gSpecialVar_0x8004 & 0x1); + memset(eRoulette, 0x0, 0x17C); + eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1); if (gSpecialVar_0x8004 & 0x80) - RDATA->var04_7 = 0x1; + eRoulette->var04_7 = 0x1; s0 = &gUnknown_083F8DF4[0]; - RDATA->var22 = s0[RDATA->var04_0].var03; - RDATA->var23 = s0[RDATA->var04_0].var04; - temp = gUnknown_083F8DF0[RDATA->var04_0 + RDATA->var04_7 * 2]; - RDATA->var19 = temp; - RDATA->var1A_4 = 0x1; + eRoulette->var22 = s0[eRoulette->var04_0].var03; + eRoulette->var23 = s0[eRoulette->var04_0].var04; + temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2]; + eRoulette->var19 = temp; + eRoulette->var1A_4 = 0x1; if (temp == 0x1) { - u16 *faded = &gPlttBufferFaded[0]; - u16 *unfaded = &gPlttBufferUnfaded[0]; - faded[0x51] = arr[0]; - faded[0x0] = arr[0]; - unfaded[0x51] = arr[0]; - unfaded[0x0] = arr[0]; + unfaded = (struct PlttData *)&gPlttBufferUnfaded[0]; + faded = (struct PlttData *)&gPlttBufferFaded[0]; + t = arr[0]; } else { - u16 *faded = &gPlttBufferFaded[0]; - u16 *unfaded = &gPlttBufferUnfaded[0]; - faded[0x51] = arr[1]; - faded[0x0] = arr[1]; - unfaded[0x51] = arr[1]; - unfaded[0x0] = arr[1]; + unfaded = (struct PlttData *)&gPlttBufferUnfaded[0]; + faded = (struct PlttData *)&gPlttBufferFaded[0]; + t = arr[1]; } - sub_8124918((&RDATA->varB8)); + faded[0x51] = t; + faded[0x0] = faded[0x51]; + unfaded[0x51] = t; + unfaded[0x0] = t; + sub_8124918((&eRoulette->varB8)); for (i = 0; i < 0xD; i++) - sub_812492C((&RDATA->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]); + sub_812492C((&eRoulette->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]); for (i = 0; i < 0x6; i++) { switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2)) { case SPECIES_TAILLOW: - RDATA->var02 |= 0x2; + eRoulette->var02 |= 0x2; break; case SPECIES_SHROOMISH: - RDATA->var02 |= 0x1; + eRoulette->var02 |= 0x1; break; } } @@ -639,10 +653,10 @@ void sub_8115384(void) REG_DISPSTAT |= 0x8; SetVBlankCallback(&sub_8115124); BeginHardwarePaletteFade(0xFF, 0x0, 0x10, 0x0 , 0x1); - taskid = RDATA->varA4 = CreateTask(&sub_81156BC, 0x0); + taskid = eRoulette->varA4 = CreateTask(&sub_81156BC, 0x0); gTasks[taskid].data[0x6] = 0x6; gTasks[taskid].data[0xD] = gSaveBlock1.coins; - RDATA->varA5 = CreateTask(&sub_8115634, 0x1); + eRoulette->varA5 = CreateTask(&sub_8115634, 0x1); SetMainCallback2(&sub_81150FC); break; } @@ -653,20 +667,20 @@ void sub_8115634(u8 unused) s16 sin; s16 cos; s32 cos32; - if (RDATA->var21++ == RDATA->var23) + if (eRoulette->var21++ == eRoulette->var23) { - RDATA->var21 = 0x0; - if ((RDATA->var24 -= RDATA->var22) < 0) - RDATA->var24 = 0x168 - RDATA->var22; + eRoulette->var21 = 0x0; + if ((eRoulette->var24 -= eRoulette->var22) < 0) + eRoulette->var24 = 0x168 - eRoulette->var22; } - sin = Sin2(RDATA->var24); - cos = Cos2(RDATA->var24); + sin = Sin2(eRoulette->var24); + cos = Cos2(eRoulette->var24); sin = sin / 16; cos32 = cos / 16; - RDATA->var2C.d = cos32; - RDATA->var2C.a = cos32; - RDATA->var2C.b = sin; - RDATA->var2C.c = -sin; + eRoulette->var2C.d = cos32; + eRoulette->var2C.a = cos32; + eRoulette->var2C.b = sin; + eRoulette->var2C.c = -sin; } void sub_81156BC(u8 taskid) @@ -702,7 +716,7 @@ void sub_811577C(u8 taskid) void sub_81157AC(u8 taskid) { - DestroyTask(RDATA->varA5); + DestroyTask(eRoulette->varA5); sub_8116AB0(taskid); } @@ -737,37 +751,37 @@ void sub_81157D0(u8 r0) } } -void sub_8115928(u8 taskid, bool8 r1) +void sub_8115928(u8 taskid, u8 r1) { if (!r1) sub_811829C(gTasks[taskid].data[0x4]); else - sub_811829C(RDATA->var1B[RDATA->var1A_0]); + sub_811829C(eRoulette->var1B[eRoulette->var1A_0]); sub_81157D0(gTasks[taskid].data[0x4]); } void sub_811597C(u8 taskid) { - RDATA->var28 = 0x1; + eRoulette->var28 = 0x1; sub_81157D0(gTasks[taskid].data[0x4]); - RDATA->var23 = 0x2; - RDATA->var21 = 0x0; + eRoulette->var23 = 0x2; + eRoulette->var21 = 0x0; gTasks[taskid].func = &sub_8115E14; } void sub_81159BC(u8 taskid) { s16 i; - if(RDATA->var08 & 0x20) + if(eRoulette->var08 & 0x20) { for (i = 0xB; (i < 0xE); i++) - if ((RDATA->var08 & gUnknown_083F8C00[i].var08) == 0) + if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0) break; } else { for (i = 0x6; (i < 0xA); i++) - if ((RDATA->var08 & gUnknown_083F8C00[i].var08) == 0) + if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0) break; } gTasks[taskid].data[0x4] = i; @@ -779,7 +793,7 @@ void sub_81159BC(u8 taskid) gTasks[taskid].func = &sub_811597C; } -bool8 sub_8115A94(s16 *r0, u8 r1) +u8 sub_8115A94(s16 *r0, u8 r1) { s8 temp1 = 0; s8 temp = 0; @@ -829,45 +843,45 @@ void sub_8115B58(u8 r0) sub_8115928(r0, FALSE); gTasks[r0].data[0x1] = z; PlaySE(SE_SELECT); - sub_8124D3C((&RDATA->varB8), 0xFFFF); - (&RDATA->varB8)->val3[0xF].field1 = 0x0; - (&RDATA->varB8)->val3[0xE].field1 = 0x0; - (&RDATA->varB8)->val3[0xD].field1 = 0x0; + sub_8124D3C((&eRoulette->varB8), 0xFFFF); + (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0; + (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0; + (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0; sub_8116EF8(gTasks[r0].data[0x4]); for (i = 0; i < 0x4; i++) { - gSprites[RDATA->var3C[i + 0x29]].oam.tileNum = - gSprites[RDATA->var3C[i + 0x29]].sheetTileStart - + (*gSprites[RDATA->var3C[i + 0x29]].anims)->type; + gSprites[eRoulette->var3C[i + 0x29]].oam.tileNum = + gSprites[eRoulette->var3C[i + 0x29]].sheetTileStart + + (*gSprites[eRoulette->var3C[i + 0x29]].anims)->type; } - if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4 && !(RDATA->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) ) + if ((u16)(gTasks[r0].data[0x4] - 1) < 0x4 && !(eRoulette->var08 & gUnknown_083F8C00[gTasks[r0].data[0x4]].var08) ) { z = gTasks[r0].data[0x4] - 1; - gSprites[RDATA->var3C[z + 0x29]].oam.tileNum = - gSprites[RDATA->var3C[z + 0x29]].sheetTileStart - + (*gSprites[RDATA->var3C[z + 0x29]].anims + 1)->type; + gSprites[eRoulette->var3C[z + 0x29]].oam.tileNum = + gSprites[eRoulette->var3C[z + 0x29]].sheetTileStart + + (*gSprites[eRoulette->var3C[z + 0x29]].anims + 1)->type; } } } void sub_8115D58(u8 r0) { - RDATA->var28 = 0xFF; - if (RDATA->var19 == 1) - RDATA->var23 = 1; + eRoulette->var28 = 0xFF; + if (eRoulette->var19 == 1) + eRoulette->var23 = 1; else - RDATA->var23 = 0; - RDATA->var21 = 0; + eRoulette->var23 = 0; + eRoulette->var21 = 0; gTasks[r0].data[0x1] = 0x20; gTasks[r0].func = &sub_8115ECC; } void sub_8115DA0(u8 taskid) { - RDATA->var1B[RDATA->var1A_0] = gTasks[taskid].data[0x4]; - gTasks[taskid].data[0x2] = sub_8117380(RDATA->var1B[RDATA->var1A_0]); - sub_811829C(RDATA->var1B[RDATA->var1A_0]); - if ((gTasks[taskid].data[0xD] -= RDATA->var19) < 0) + eRoulette->var1B[eRoulette->var1A_0] = gTasks[taskid].data[0x4]; + gTasks[taskid].data[0x2] = sub_8117380(eRoulette->var1B[eRoulette->var1A_0]); + sub_811829C(eRoulette->var1B[eRoulette->var1A_0]); + if ((gTasks[taskid].data[0xD] -= eRoulette->var19) < 0) gTasks[taskid].data[0xD] = 0; sub_81180F4(gTasks[taskid].data[0xD]); gTasks[taskid].func = &sub_8115D58; @@ -894,7 +908,7 @@ void sub_8115E14(u8 taskid) } if (gMain.newKeys & A_BUTTON) { - if ((RDATA->var08 & gUnknown_083F8C00[gTasks[taskid].data[0x4]].var08)) + if ((eRoulette->var08 & gUnknown_083F8C00[gTasks[taskid].data[0x4]].var08)) PlaySE(SE_BOO); else { @@ -910,8 +924,8 @@ void sub_8115ECC(u8 taskid) { if (gTasks[taskid].data[0x1] > 0x2) gSpriteCoordOffsetX += 0x2; - if ((RDATA->var26 += 0x4) == 0x68) - gSprites[RDATA->var3C[0x19]].callback = &SpriteCallbackDummy; + if ((eRoulette->var26 += 0x4) == 0x68) + gSprites[eRoulette->var3C[0x19]].callback = &SpriteCallbackDummy; } else { @@ -925,7 +939,7 @@ void sub_8115ECC(u8 taskid) u8 sub_8115F58(u16 r0, u16 r1) { u8 timeh; - switch (RDATA->var02) + switch (eRoulette->var02) { case 0x1: // SHROOMISH case 0x2: // TAILLOW @@ -937,19 +951,19 @@ u8 sub_8115F58(u16 r0, u16 r1) return 0x1; else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 2; } } else if (!(r1 & 0x3)) { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 2; } else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02; } break; case 0x3: @@ -959,8 +973,8 @@ u8 sub_8115F58(u16 r0, u16 r1) { if (r0 < 0x6 || (r1 & 0x1)) { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 2; } else { @@ -969,13 +983,13 @@ u8 sub_8115F58(u16 r0, u16 r1) } else if ((r1 & 0x1) && !(r0 < 0x7)) { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 4; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 4; } else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 2; } break; case 0: @@ -990,40 +1004,40 @@ u8 sub_8115F58(u16 r0, u16 r1) } else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 2; } } else if (!(r1 & 0x3)) { if (!(r0 < 0xD)) { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02 / 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02 / 2; } else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02; } } else if (r1 & (0x80 << 8)) { if (!(r0 < 0xD)) { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var02; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var02; } else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var01; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var01; } } else { - struct Unkg083F8DF4 *p = &gUnknown_083F8DF4[0]; - return p[RDATA->var04_0].var01 * 2; + struct StructgUnknown_083F8DF4 *p = &gUnknown_083F8DF4[0]; + return p[eRoulette->var04_0].var01 * 2; } } } @@ -1042,10 +1056,10 @@ void sub_8116100(u8 taskid) memcpy(angles, &gUnknown_083F8ECE, 0x8); rand = Random(); randmod = rand % 0x64; - RDATA->var7C = gTasks[taskid].data[0x6]; - RDATA->var7F = zero; - RDATA->var7E = zero; - RDATA->var7D = zero; + eRoulette->var7C = gTasks[taskid].data[0x6]; + eRoulette->var7F = zero; + eRoulette->var7E = zero; + eRoulette->var7D = zero; randf = sub_8115F58(gTasks[taskid].data[0x8], rand); randfinal = (rand % randf) - (randf / 2); if (gLocalTime.hours < 0xD) @@ -1056,21 +1070,21 @@ void sub_8116100(u8 taskid) r5 *= 2; else r5 = (1 - r5) * 2; - g = (&gUnknown_083F8DF4[RDATA->var04_0])->var1A; - RDATA->var80 = (g + randfinal); + g = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1A; + eRoulette->var80 = (g + randfinal); // g = ((float)(u16)(g + randfinal)) / 5.0f; - RDATA->var82 = g * 3; - RDATA->var84 = g; - RDATA->var86 = g; + eRoulette->var82 = g * 3; + eRoulette->var84 = g; + eRoulette->var86 = g; // - RDATA->var88 = (float)(angles[(rand & 0x1) + r5]); - RDATA->var8C = (float)((&gUnknown_083F8DF4[RDATA->var04_0])->var18); - RDATA->var90 = ((RDATA->var8C * 0.5f) - RDATA->var8C) / (float)(u16)(g * 3); - RDATA->var94 = 68.0f; - RDATA->var9C = 0.0f; - RDATA->var98 = -(8.0f / (float)(u16)(g * 3)); - RDATA->varA0 = 36.0f; + eRoulette->var88 = (float)(angles[(rand & 0x1) + r5]); + eRoulette->var8C = (float)((&gUnknown_083F8DF4[eRoulette->var04_0])->var18); + eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / (float)(u16)(g * 3); + eRoulette->var94 = 68.0f; + eRoulette->var9C = 0.0f; + eRoulette->var98 = -(8.0f / (float)(u16)(g * 3)); + eRoulette->varA0 = 36.0f; gTasks[taskid].func = &sub_8116308; } #else @@ -1317,9 +1331,9 @@ _08116304: .4byte sub_8116308\n\ void sub_8116308(u8 taskid) { u8 index; - RDATA->var03_7 = 1; - index = RDATA->var3C[RDATA->var7C]; - RDATA->var38 = &gSprites[index]; + eRoulette->var03_7 = 1; + index = eRoulette->var3C[eRoulette->var7C]; + eRoulette->var38 = &gSprites[index]; (&gSprites[index])->callback = &sub_81191F4; gTasks[taskid].data[0x6]++; gTasks[taskid].data[0x8]++; @@ -1330,24 +1344,24 @@ void sub_8116308(u8 taskid) void sub_811637C(u8 taskid) { - if (RDATA->var7D) + if (eRoulette->var7D) { - if (RDATA->var03_5) + if (eRoulette->var03_5) { - if (RDATA->var03_6) + if (eRoulette->var03_6) { - RDATA->var03_6 = FALSE; - RDATA->var03_5 = FALSE; + eRoulette->var03_6 = FALSE; + eRoulette->var03_5 = FALSE; } } else { if (!gTasks[taskid].data[0x1]) { - u8 temp = sub_8116E5C(sub_8116D54(taskid, RDATA->var7E), RDATA->var1B[RDATA->var1A_0]); + u8 temp = sub_8116E5C(sub_8116D54(taskid, eRoulette->var7E), eRoulette->var1B[eRoulette->var1A_0]); gTasks[taskid].data[0x5] = temp; if (temp == 1) - sub_8124CE8((&RDATA->varB8), 0x1000); + sub_8124CE8((&eRoulette->varB8), 0x1000); } if (gTasks[taskid].data[0x1] < 0x3D) { @@ -1357,7 +1371,7 @@ void sub_811637C(u8 taskid) } else { - sub_8117158(RDATA->var1B[RDATA->var1A_0]); + sub_8117158(eRoulette->var1B[eRoulette->var1A_0]); sub_8117AA8(0x0, (u8)gTasks[taskid].data[0xC]); sub_8117C60(0x0, (u8)gTasks[taskid].data[0x6] - 0x1); gTasks[taskid].data[0x1] = 0x20; @@ -1373,8 +1387,8 @@ void sub_8116474(u8 taskid) { if(gTasks[taskid].data[0x1] > 0x2) gSpriteCoordOffsetX -= 0x2; - if((RDATA->var26 -= 0x4) == 0x68) - gSprites[RDATA->var3C[0x19]].callback = &sub_81184CC; + if((eRoulette->var26 -= 0x4) == 0x68) + gSprites[eRoulette->var3C[0x19]].callback = &sub_81184CC; } else { @@ -1494,22 +1508,22 @@ void sub_81166E8(u8 taskid) void sub_811677C(u8 taskid) { - ConvertIntToDecimalStringN((u8 *)&gStringVar1, (RDATA->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2); + ConvertIntToDecimalStringN((u8 *)&gStringVar1, (eRoulette->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2); StringExpandPlaceholders((u8 *)&gStringVar4, &gUnknown_081C41BD); MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); MenuPrint((u8 *)&gStringVar4, 0x1, 0xF); - gTasks[taskid].data[0x1] = (RDATA->var19 * gTasks[taskid].data[0x2]); + gTasks[taskid].data[0x1] = (eRoulette->var19 * gTasks[taskid].data[0x2]); gTasks[taskid].data[0x7] = 0x0; gTasks[taskid].func = &sub_81166E8; } void sub_81167F4(u8 taskid) { - sub_8124D3C((&RDATA->varB8), 0xFFFF); - (&RDATA->varB8)->val3[0xF].field1 = 0x0; - (&RDATA->varB8)->val3[0xE].field1 = 0x0; - (&RDATA->varB8)->val3[0xD].field1 = 0x0; - gSprites[RDATA->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE; + sub_8124D3C((&eRoulette->varB8), 0xFFFF); + (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0; + (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0; + (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0; + gSprites[eRoulette->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE; gTasks[taskid].func = &sub_8116880; } @@ -1517,16 +1531,16 @@ void sub_8116880(u8 taskid) { u8 i = 0; gTasks[taskid].data[0x4] = i; - RDATA->var1B[RDATA->var1A_0] = 0x0; + eRoulette->var1B[eRoulette->var1A_0] = 0x0; sub_8117158(0x0); - gSprites[RDATA->var3C[0x30]].invisible = TRUE; + gSprites[eRoulette->var3C[0x30]].invisible = TRUE; for (i = 0; i < 0x4; i++) { - gSprites[RDATA->var3C[i + 0x29]].oam.tileNum = - gSprites[RDATA->var3C[i + 0x29]].sheetTileStart - + (*gSprites[RDATA->var3C[i + 0x29]].anims)->type; + gSprites[eRoulette->var3C[i + 0x29]].oam.tileNum = + gSprites[eRoulette->var3C[i + 0x29]].sheetTileStart + + (*gSprites[eRoulette->var3C[i + 0x29]].anims)->type; } - if (!(gTasks[taskid].data[0xD] < RDATA->var19)) + if (!(gTasks[taskid].data[0xD] < eRoulette->var19)) { if (gTasks[taskid].data[0x6] == 0x6) { @@ -1563,7 +1577,7 @@ void dp01t_12_3_battle_menu(u8 taskid) sub_8117158(0x0); sub_81182F8(0x6); for (i = 0; i < 0xC; i++) - gSprites[RDATA->var3C[i + 0x7]].invisible = FALSE; + gSprites[eRoulette->var3C[i + 0x7]].invisible = FALSE; if (gTasks[taskid].data[0xD] == 0x270F) { MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); @@ -1578,10 +1592,10 @@ void dp01t_12_3_battle_menu(u8 taskid) void sub_8116AB0(u8 taskid) { - sub_8124D3C((&RDATA->varB8), 0xFFFF); - sub_8124918((&RDATA->varB8)); + sub_8124D3C((&eRoulette->varB8), 0xFFFF); + sub_8124918((&eRoulette->varB8)); gSaveBlock1.coins = gTasks[taskid].data[0xD]; - if (gSaveBlock1.coins < RDATA->var19) + if (gSaveBlock1.coins < eRoulette->var19) gSpecialVar_0x8004 = TRUE; else gSpecialVar_0x8004 = FALSE; @@ -1594,7 +1608,7 @@ void sub_8116B40(u8 taskid) // end oulette ? if (UpdatePaletteFade() == 0) { SetVBlankCallback(0x0); - memset(RDATA, 0x0, 0x17C); + memset(eRoulette, 0x0, 0x17C); gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0; sub_80F9368(); FreeAllSpritePalettes(); @@ -1612,57 +1626,57 @@ void sub_8116B40(u8 taskid) // end oulette ? void sub_8116BC0(u8 taskid) { - if(RDATA->varA8 == 0 || gMain.newKeys & RDATA->varAA) + if(eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA) { - gTasks[taskid].func = RDATA->varAC; - if (RDATA->varAA > 0) + gTasks[taskid].func = eRoulette->varAC; + if (eRoulette->varAA > 0) PlaySE(SE_SELECT); - RDATA->varAC = NULL; - RDATA->varAA = 0x0; - RDATA->varA8 = 0x0; + eRoulette->varAC = NULL; + eRoulette->varAA = 0x0; + eRoulette->varA8 = 0x0; } - if (RDATA->varA8 != 0xFFFF) - RDATA->varA8--; + if (eRoulette->varA8 != 0xFFFF) + eRoulette->varA8--; } void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3) { - RDATA->varB4 = gTasks[taskid].func; + eRoulette->varB4 = gTasks[taskid].func; if(r1 == NULL) - r1 = RDATA->varB4; - RDATA->varAC = r1; - RDATA->varA8 = r2; + r1 = eRoulette->varB4; + eRoulette->varAC = r1; + eRoulette->varA8 = r2; if (r2 == 0xFFFF && r3 == 0) - RDATA->varAA = 0xFFFF; + eRoulette->varAA = 0xFFFF; else - RDATA->varAA = r3; + eRoulette->varAA = r3; gTasks[taskid].func = &sub_8116BC0; } void sub_8116CAC(u8 taskid) { u8 i = 0; - RDATA->var00 = i; - RDATA->var03_0 = 0x0; - RDATA->var03_5 = 0x0; - RDATA->var03_6 = 0x0; - RDATA->var03_7 = 0x0; + eRoulette->var00 = i; + eRoulette->var03_0 = 0x0; + eRoulette->var03_5 = 0x0; + eRoulette->var03_6 = 0x0; + eRoulette->var03_7 = 0x0; for (i = 0; i < 0x6; i++) - RDATA->var1B[i] = 0x0; - RDATA->var1A_0 = 0x0; + eRoulette->var1B[i] = 0x0; + eRoulette->var1A_0 = 0x0; gTasks[taskid].data[0x1] = 0x0; } void sub_8116CF8(void) { u8 i; - RDATA->var08 = 0x0; + eRoulette->var08 = 0x0; for (i = 0; i < 0x6; i++) - RDATA->var0C[i] = 0x0; + eRoulette->var0C[i] = 0x0; for (i = 0; i < 0x4; i++) - RDATA->var12[i] = 0x0; + eRoulette->var12[i] = 0x0; for (i = 0; i < 0x3; i++) - RDATA->var16[i] = 0x0; + eRoulette->var16[i] = 0x0; sub_8117C60(0x1, 0xFF); } @@ -1680,22 +1694,22 @@ u8 sub_8116D54(u8 taskid, u8 r1) { u8 i; u8 z; - RDATA->var0C[gTasks[taskid].data[0x6] - 1] = gUnknown_083F8D90[r1].var02; + eRoulette->var0C[gTasks[taskid].data[0x6] - 1] = gUnknown_083F8D90[r1].var02; gTasks[taskid].data[0xC] = gUnknown_083F8D90[r1].var02; - RDATA->var08 |= gUnknown_083F8D90[r1].var04; + eRoulette->var08 |= gUnknown_083F8D90[r1].var04; for (i = 0; i < 0x4; i++) { if (gUnknown_083F8D90[r1].var04 & t0[i]) - RDATA->var12[i]++; - if (RDATA->var12[i] > 0x2) - RDATA->var08 |= t0[i]; + eRoulette->var12[i]++; + if (eRoulette->var12[i] > 0x2) + eRoulette->var08 |= t0[i]; } for (z = 0; z < 0x3; z++) { if (gUnknown_083F8D90[r1].var04 & t1[z]) - RDATA->var16[z]++; - if (RDATA->var16[z] > 0x3) - RDATA->var08 |= t1[z]; + eRoulette->var16[z]++; + if (eRoulette->var16[z] > 0x3) + eRoulette->var08 |= t1[z]; } return gUnknown_083F8D90[r1].var02; } @@ -1745,10 +1759,10 @@ void sub_8116EF8(u8 r0) case 0xA: case 0xF: for (i = (r0 + 0x1); i < (r0 + 0x5); i++) - if (!(RDATA->var08 & gUnknown_083F8C00[i].var08)) + if (!(eRoulette->var08 & gUnknown_083F8C00[i].var08)) var0 |= gUnknown_083F8C00[i].var10; var0 &= 0xDFFF; - sub_8124CE8(&RDATA->varB8, var0); + sub_8124CE8(&eRoulette->varB8, var0); break; default: memcpy(var1, gUnknown_083F8E9C, 0x18); @@ -1760,26 +1774,26 @@ void sub_8116EF8(u8 r0) switch((u8)r0 % 0x5) { case 0x1: - var3 = gSprites[RDATA->var3C[0x7 + 0x0]].oam.paletteNum * 0x10; + var3 = gSprites[eRoulette->var3C[0x7 + 0x0]].oam.paletteNum * 0x10; break; case 0x2: - var3 = gSprites[RDATA->var3C[0x7 + 0x1]].oam.paletteNum * 0x10; + var3 = gSprites[eRoulette->var3C[0x7 + 0x1]].oam.paletteNum * 0x10; break; case 0x3: - var3 = gSprites[RDATA->var3C[0x7 + 0x2]].oam.paletteNum * 0x10; + var3 = gSprites[eRoulette->var3C[0x7 + 0x2]].oam.paletteNum * 0x10; break; case 0x4: - var3 = gSprites[RDATA->var3C[0x7 + 0x3]].oam.paletteNum * 0x10; + var3 = gSprites[eRoulette->var3C[0x7 + 0x3]].oam.paletteNum * 0x10; break; } if (var2 == 0x1) { - if (!(RDATA->var08 & gUnknown_083F8C00[r0].var08)) + if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08)) { var4 = (r0 / 0x5); - var1[var4 - 0x1].val1 += var3; - sub_812492C(&RDATA->varB8, 0xD, &var1[var4 - 0x2]); - sub_8124CE8(&RDATA->varB8, var0 |= gUnknown_083F8C00[r0].var10); + var1[var4 - 0x1].var02 += var3; + sub_812492C(&eRoulette->varB8, 0xD, &var1[var4 - 0x2]); + sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10); } } else @@ -1787,11 +1801,11 @@ void sub_8116EF8(u8 r0) for (i = 0; i < 0x3; i++) { u8 var4 = i * 0x5 + r0 + 0x5; - if (!(RDATA->var08 & gUnknown_083F8C00[var4].var08)) + if (!(eRoulette->var08 & gUnknown_083F8C00[var4].var08)) { u8 var5 = (var4 / 0x5); - var1[var5 - 0x1].val1 += var3; - sub_812492C(&RDATA->varB8, (u8)(0xD + i), &var1[var5 - 0x2]); + var1[var5 - 0x1].var02 += var3; + sub_812492C(&eRoulette->varB8, (u8)(0xD + i), &var1[var5 - 0x2]); if (var2 == 0x3) var0 = gUnknown_083F8C00[var4].var10; var2--; @@ -1799,7 +1813,7 @@ void sub_8116EF8(u8 r0) } if (var2 != 0x2) var0 = 0x0; - sub_8124CE8(&RDATA->varB8, var0 |= gUnknown_083F8C00[r0].var10); + sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10); } } } @@ -2124,7 +2138,7 @@ void sub_8117158(u8 r0) u8 var0; u8 var1; u16 var2; - RDATA->var2A = 0x1; + eRoulette->var2A = 0x1; sub_8117AA8(0x0, 0x0); sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD); switch(r0) @@ -2448,16 +2462,16 @@ u8 sub_8117380(u8 r0) { case 0x3: z = r0 / 0x5 - 0x1; - if (RDATA->var16[z] > 0x3) + if (eRoulette->var16[z] > 0x3) return 0x0; - return var0[RDATA->var16[z] + 0x1]; + return var0[eRoulette->var16[z] + 0x1]; case 0x4: t = r0 - 0x1; - if (RDATA->var12[t] > 0x2) + if (eRoulette->var12[t] > 0x2) return 0x0; - return var0[RDATA->var12[t] + 0x2]; + return var0[eRoulette->var12[t] + 0x2]; case 0xC: - if (RDATA->var08 & gUnknown_083F8C00[r0].var08) + if (eRoulette->var08 & gUnknown_083F8C00[r0].var08) return 0x0; return var0[0x4]; default: @@ -2565,99 +2579,23 @@ bx r1\n\ } #endif -#ifdef NONMATCHING -void sub_8117434(void) //sprite rotation ? +void sub_8117434(void) { s32 x1; s32 x2; - REG_BG2PA = RDATA->var2C.a; - REG_BG2PB = RDATA->var2C.b; - REG_BG2PC = RDATA->var2C.c; - REG_BG2PD = RDATA->var2C.d; - x1 = 0x7400 - RDATA->var2C.a * (gSpriteCoordOffsetX + 0x74) - - RDATA->var2C.b * (gSpriteCoordOffsetY + 0x50); - x2 = 0x5400 - RDATA->var2C.c * gSpriteCoordOffsetX - - RDATA->var2C.d * gSpriteCoordOffsetY; + REG_BG2PA = eRoulette->var2C.a; + REG_BG2PB = eRoulette->var2C.b; + REG_BG2PC = eRoulette->var2C.c; + REG_BG2PD = eRoulette->var2C.d; + x1 = 0x7400 - eRoulette->var2C.a * (gSpriteCoordOffsetX + 0x74) + - eRoulette->var2C.b * (gSpriteCoordOffsetY + 0x50); + x2 = 0x5400 - eRoulette->var2C.c * (gSpriteCoordOffsetX + 0x74) + - eRoulette->var2C.d * (gSpriteCoordOffsetY + 0x50); REG_BG2X_L = x1; REG_BG2X_H = (x1 & 0x0fff0000) >> 16; REG_BG2Y_L = x2; REG_BG2Y_H = (x2 & 0x0fff0000) >> 16; } -#else -__attribute__((naked)) -void sub_8117434(void) -{ -asm(".syntax unified\n\ -push {r4-r6,lr}\n\ -ldr r1, _081174AC @ =REG_BG2PA\n\ -ldr r4, _081174B0 @ =0x02019000\n\ -ldrh r0, [r4, 0x2C]\n\ -strh r0, [r1]\n\ -adds r1, 0x2\n\ -ldrh r0, [r4, 0x2E]\n\ -strh r0, [r1]\n\ -adds r1, 0x2\n\ -ldrh r0, [r4, 0x30]\n\ -strh r0, [r1]\n\ -adds r1, 0x2\n\ -ldrh r0, [r4, 0x32]\n\ -strh r0, [r1]\n\ -movs r0, 0x2E\n\ -ldrsh r2, [r4, r0]\n\ -ldr r0, _081174B4 @ =gSpriteCoordOffsetY\n\ -movs r3, 0\n\ -ldrsh r1, [r0, r3]\n\ -adds r1, 0x50\n\ -adds r0, r2, 0\n\ -muls r0, r1\n\ -movs r2, 0xE8\n\ -lsls r2, 7\n\ -subs r2, r0\n\ -movs r6, 0x2C\n\ -ldrsh r5, [r4, r6]\n\ -ldr r0, _081174B8 @ =gSpriteCoordOffsetX\n\ -movs r6, 0\n\ -ldrsh r3, [r0, r6]\n\ -adds r3, 0x74\n\ -adds r0, r5, 0\n\ -muls r0, r3\n\ -subs r2, r0\n\ -movs r5, 0x32\n\ -ldrsh r0, [r4, r5]\n\ -muls r0, r1\n\ -movs r1, 0xA8\n\ -lsls r1, 7\n\ -subs r1, r0\n\ -movs r6, 0x30\n\ -ldrsh r0, [r4, r6]\n\ -muls r0, r3\n\ -subs r1, r0\n\ -ldr r0, _081174BC @ =REG_BG2X_L\n\ -strh r2, [r0]\n\ -adds r0, 0x2\n\ -ldr r3, _081174C0 @ =0x0fff0000\n\ -ands r2, r3\n\ -asrs r2, 16\n\ -strh r2, [r0]\n\ -adds r0, 0x2\n\ -strh r1, [r0]\n\ -adds r0, 0x2\n\ -ands r1, r3\n\ -asrs r1, 16\n\ -strh r1, [r0]\n\ -pop {r4-r6}\n\ -pop {r0}\n\ -bx r0\n\ -.align 2, 0\n\ -_081174AC: .4byte REG_BG2PA\n\ -_081174B0: .4byte 0x02019000\n\ -_081174B4: .4byte gSpriteCoordOffsetY\n\ -_081174B8: .4byte gSpriteCoordOffsetX\n\ -_081174BC: .4byte REG_BG2X_L\n\ -_081174C0: .4byte 0x0fff0000\n\ -.syntax divided\n"); -} -#endif s16 sub_81174C4(s16 r0, s16 r1) { @@ -2763,7 +2701,7 @@ void Task_Roulette_0(u8 taskid) } } -void PlayRoulette() +void PlayRoulette(void) { u8 taskid; ScriptContext2_Enable(); @@ -2823,7 +2761,7 @@ void sub_8117900(void) u8 o = i * 0x18; for (j = 0; j < 0x4; j++) { - spriteid = RDATA->var3C[0x1D + i * 0x4 + j] = + spriteid = eRoulette->var3C[0x1D + i * 0x4 + j] = CreateSprite(&gSpriteTemplate_83FA07C[j], j * 0x18 + 0x94, o + 0x5C, 0x1E); gSprites[spriteid].animPaused = TRUE; o += 0x18; @@ -2833,13 +2771,13 @@ void sub_8117900(void) } for (i = 0x0; i < 0x4; i++) { - spriteid = RDATA->var3C[0x29 + i] = + spriteid = eRoulette->var3C[0x29 + i] = CreateSprite(&gSpriteTemplate_83F9FD4[i], (s16)(i * 0x18 + 0x94), 0x46, 0x1E); gSprites[spriteid].animPaused = TRUE; } for (i = 0x0; i < 0x3; i++) { - spriteid = RDATA->var3C[0x2D + i] = + spriteid = eRoulette->var3C[0x2D + i] = CreateSprite(&gSpriteTemplate_83FA034[i], 0x7E, (s16)(i * 0x18 + 0x5C), 0x1E); gSprites[spriteid].animPaused = TRUE; } @@ -2849,7 +2787,7 @@ void unref_sub_8117A74(void) //destroy all sprites at 0x1D { u8 i; for (i = 0x0; i < 0xC; i++) - DestroySprite(&gSprites[RDATA->var3C[0x1D + i]]); + DestroySprite(&gSprites[eRoulette->var3C[0x1D + i]]); } void sub_8117AA8(u8 r0, u8 r1) @@ -2859,20 +2797,20 @@ void sub_8117AA8(u8 r0, u8 r1) { case 0x1: for (i = 0x0; i < 0x13; i++) - gSprites[RDATA->var3C[0x1D + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x1D + i]].invisible = TRUE; break; case 0x0: for (i = 0x0; i < 0xC; i++) { - if (!(RDATA->var08 & gUnknown_083F8D90[i].var04)) - gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE; + if (!(eRoulette->var08 & gUnknown_083F8D90[i].var04)) + gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE; else if(!(gUnknown_083F8D90[i].var02 == r1)) - gSprites[RDATA->var3C[0x1D + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x1D + i]].invisible = TRUE; else - gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE; + gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE; } for ( ; i < 0x13; i++) - gSprites[RDATA->var3C[0x1D + i]].invisible = FALSE; + gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE; break; } } @@ -2882,12 +2820,12 @@ void sub_8117BBC(void) u8 i; for (i = 0x0; i < 0x6; i++) { - RDATA->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA); - gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; - gSprites[RDATA->var3C[0x31 + i]].data[0] = 0x1; - gSprites[RDATA->var3C[0x31 + i]].callback = &sub_81184CC; - gSprites[RDATA->var3C[0x31 + i]].oam.priority = 0x1; - StartSpriteAnim(&gSprites[RDATA->var3C[0x31 + i]], 0x8); + eRoulette->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA); + gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1; + gSprites[eRoulette->var3C[0x31 + i]].callback = &sub_81184CC; + gSprites[eRoulette->var3C[0x31 + i]].oam.priority = 0x1; + StartSpriteAnim(&gSprites[eRoulette->var3C[0x31 + i]], 0x8); } } @@ -2897,21 +2835,21 @@ void sub_8117C60(u8 r0, u8 r1) if (r0) { for ( ; i < 0x6; i++) - gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE; } else { for ( ; i < 0x6; i++) { - if (!(RDATA->var0C[i]) || (i == r1)) + if (!(eRoulette->var0C[i]) || (i == r1)) { - gSprites[RDATA->var3C[0x31 + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE; } else { - gSprites[RDATA->var3C[0x31 + i]].invisible = FALSE; - gSprites[RDATA->var3C[0x31 + i]].pos1.x = (gUnknown_083F8C00[RDATA->var0C[i]].var03 + 0x1) * 0x8 + 0x4; - gSprites[RDATA->var3C[0x31 + i]].pos1.y = (gUnknown_083F8C00[RDATA->var0C[i]].var04 + 0x1) * 0x8 + 0x3; + gSprites[eRoulette->var3C[0x31 + i]].invisible = FALSE; + gSprites[eRoulette->var3C[0x31 + i]].pos1.x = (gUnknown_083F8C00[eRoulette->var0C[i]].var03 + 0x1) * 0x8 + 0x4; + gSprites[eRoulette->var3C[0x31 + i]].pos1.y = (gUnknown_083F8C00[eRoulette->var0C[i]].var04 + 0x1) * 0x8 + 0x3; } } } @@ -2921,13 +2859,13 @@ void sub_8117D68(u8 r0) { if (!r0) { - gSprites[RDATA->var3C[0x30]].invisible = TRUE; + gSprites[eRoulette->var3C[0x30]].invisible = TRUE; } else { - gSprites[RDATA->var3C[0x30]].invisible = FALSE; - gSprites[RDATA->var3C[0x30]].pos1.x = (gUnknown_083F8C00[r0].var03 + 0x2) * 0x8; - gSprites[RDATA->var3C[0x30]].pos1.y = (gUnknown_083F8C00[r0].var04 + 0x2) * 0x8; + gSprites[eRoulette->var3C[0x30]].invisible = FALSE; + gSprites[eRoulette->var3C[0x30]].pos1.x = (gUnknown_083F8C00[r0].var03 + 0x2) * 0x8; + gSprites[eRoulette->var3C[0x30]].pos1.y = (gUnknown_083F8C00[r0].var04 + 0x2) * 0x8; } } @@ -2948,7 +2886,7 @@ void sub_8117DF4(void) { u8 spriteid; spriteid = - RDATA->var3C[0x7 + i * 0x4 + j] = sub_8117890(&gSpriteTemplate_83FA0DC[i * 0x4 + j], 0x28, &k); + eRoulette->var3C[0x7 + i * 0x4 + j] = sub_8117890(&gSpriteTemplate_83FA0DC[i * 0x4 + j], 0x28, &k); gSprites[spriteid].animPaused = TRUE; gSprites[spriteid].affineAnimPaused = TRUE; } @@ -2963,14 +2901,14 @@ void sub_8117E98(struct Sprite *sprite) u16 angle; s16 cos, sin, z; u32 cos32; - angle = RDATA->var24 + sprite->data0; + angle = eRoulette->var24 + sprite->data[0x0]; z = angle; if (z > 359) angle = z - 360; sin = Sin2(angle); cos = Cos2(angle); - sprite->pos2.x = sin * sprite->data1 >> 0xC; - sprite->pos2.y = -cos * sprite->data1 >> 0xC; + sprite->pos2.x = sin * sprite->data[0x1] >> 0xC; + sprite->pos2.y = -cos * sprite->data[0x1] >> 0xC; p = sprite->oam.matrixNum; sin = sin / 0x10; m = &gOamMatrices[p]; @@ -3073,26 +3011,26 @@ void sub_8117F2C(void) s.tag = gUnknown_083FA21C[i].tag; LoadSpriteSheet(&s); } - RDATA->var3C[0x14] = CreateSprite(&gSpriteTemplate_83FA2B0, 0xD0, 0x10, 0x4); - gSprites[RDATA->var3C[0x14]].animPaused = TRUE; + eRoulette->var3C[0x14] = CreateSprite(&gSpriteTemplate_83FA2B0, 0xD0, 0x10, 0x4); + gSprites[eRoulette->var3C[0x14]].animPaused = TRUE; for (i = 0x0; i < 0x4; i++) { - RDATA->var3C[0x15 + i] = CreateSprite(&gSpriteTemplate_83FA2C8, (s16)(i * 0x8 + 0xC4), 0x18, 0x0); - gSprites[RDATA->var3C[0x15 + i]].invisible = TRUE; - gSprites[RDATA->var3C[0x15 + i]].animPaused = TRUE; + eRoulette->var3C[0x15 + i] = CreateSprite(&gSpriteTemplate_83FA2C8, (s16)(i * 0x8 + 0xC4), 0x18, 0x0); + gSprites[eRoulette->var3C[0x15 + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x15 + i]].animPaused = TRUE; } - RDATA->var3C[0x19] = CreateSprite(&gSpriteTemplate_83FA2E0, 0x78, 0x44, 0x4); - gSprites[RDATA->var3C[0x19]].animPaused = TRUE; + eRoulette->var3C[0x19] = CreateSprite(&gSpriteTemplate_83FA2E0, 0x78, 0x44, 0x4); + gSprites[eRoulette->var3C[0x19]].animPaused = TRUE; for (i = 0x0; i < 0x3; i++) { - RDATA->var3C[0x1A + i] = CreateSprite(&gSpriteTemplate_83FA2F8, (s16)(i * 0x10 + 0xC0), 0x24, 0x4); - gSprites[RDATA->var3C[0x1A + i]].invisible = TRUE; - gSprites[RDATA->var3C[0x1A + i]].animPaused = TRUE; + eRoulette->var3C[0x1A + i] = CreateSprite(&gSpriteTemplate_83FA2F8, (s16)(i * 0x10 + 0xC0), 0x24, 0x4); + gSprites[eRoulette->var3C[0x1A + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x1A + i]].animPaused = TRUE; } - RDATA->var3C[0x30] = CreateSprite(&gSpriteTemplate_83FA310, 0x98, 0x60, 0x9); - gSprites[RDATA->var3C[0x30]].oam.priority = 0x1; - gSprites[RDATA->var3C[0x30]].animPaused = TRUE; - gSprites[RDATA->var3C[0x30]].invisible = TRUE; + eRoulette->var3C[0x30] = CreateSprite(&gSpriteTemplate_83FA310, 0x98, 0x60, 0x9); + gSprites[eRoulette->var3C[0x30]].oam.priority = 0x1; + gSprites[eRoulette->var3C[0x30]].animPaused = TRUE; + gSprites[eRoulette->var3C[0x30]].invisible = TRUE; } void sub_81180F4(u16 r0) @@ -3103,13 +3041,13 @@ void sub_81180F4(u16 r0) for (i = 0x0; i < 0x4; i++) { u8 t = r0 / d; - gSprites[RDATA->var3C[0x15 + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x15 + i]].invisible = TRUE; if (t > 0x0 || v || i == 0x3) { - gSprites[RDATA->var3C[0x15 + i]].invisible = FALSE; - gSprites[RDATA->var3C[0x15 + i]].oam.tileNum = - gSprites[RDATA->var3C[0x15 + i]].sheetTileStart - + (*gSprites[RDATA->var3C[0x15 + i]].anims + t)->type; + gSprites[eRoulette->var3C[0x15 + i]].invisible = FALSE; + gSprites[eRoulette->var3C[0x15 + i]].oam.tileNum = + gSprites[eRoulette->var3C[0x15 + i]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x15 + i]].anims + t)->type; v = TRUE; } r0 = r0 % d; @@ -3128,16 +3066,16 @@ u8 sub_81181E8(u8 r0) { case 0x3: r0 = r0 / 0x5 - 0x1; - if ((u32)RDATA->var16[r0] < 0x4) - return t[0x1 + RDATA->var16[r0]]; // couldn't recreate redundant loads + if ((u32)eRoulette->var16[r0] < 0x4) + return t[0x1 + eRoulette->var16[r0]]; // couldn't recreate redundant loads break; case 0x4: r0 = r0 - 0x1; - if (RDATA->var12[r0] < 0x3) - return t[0x2 + RDATA->var12[r0]]; + if (eRoulette->var12[r0] < 0x3) + return t[0x2 + eRoulette->var12[r0]]; break; case 0xC: - if (!(RDATA->var08 & gUnknown_083F8C00[r0].var08)) + if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08)) return t[0x4]; break; } @@ -3246,7 +3184,7 @@ bx r1\n\ void sub_811829C(u8 r0) { - struct Sprite *s = &gSprites[RDATA->var3C[0x19]]; + struct Sprite *s = &gSprites[eRoulette->var3C[0x19]]; s->animCmdIndex = sub_81181E8(r0); s->oam.tileNum = s->sheetTileStart @@ -3257,58 +3195,58 @@ void sub_81182F8(u8 r0) { u8 i; u8 t = 0x0; - if (RDATA->var19 == 0x1) + if (eRoulette->var19 == 0x1) t = 0x2; switch(r0) { case 0x6: for (i = 0x0; i < 0x3; i++) { - gSprites[RDATA->var3C[0x1A + i]].invisible = FALSE; - gSprites[RDATA->var3C[0x1A + i]].oam.tileNum = - gSprites[RDATA->var3C[0x1A + i]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1A + i]].anims)->type; + gSprites[eRoulette->var3C[0x1A + i]].invisible = FALSE; + gSprites[eRoulette->var3C[0x1A + i]].oam.tileNum = + gSprites[eRoulette->var3C[0x1A + i]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1A + i]].anims)->type; } break; case 0x5: - gSprites[RDATA->var3C[0x1C]].oam.tileNum = - gSprites[RDATA->var3C[0x1C]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1C]].anims + t + 0x1)->type; + gSprites[eRoulette->var3C[0x1C]].oam.tileNum = + gSprites[eRoulette->var3C[0x1C]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1C]].anims + t + 0x1)->type; break; case 0x4: - gSprites[RDATA->var3C[0x1C]].oam.tileNum = - gSprites[RDATA->var3C[0x1C]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1C]].anims + t + 0x2)->type; + gSprites[eRoulette->var3C[0x1C]].oam.tileNum = + gSprites[eRoulette->var3C[0x1C]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1C]].anims + t + 0x2)->type; break; case 0x3: - gSprites[RDATA->var3C[0x1B]].oam.tileNum = - gSprites[RDATA->var3C[0x1B]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1B]].anims + t + 0x1)->type; + gSprites[eRoulette->var3C[0x1B]].oam.tileNum = + gSprites[eRoulette->var3C[0x1B]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1B]].anims + t + 0x1)->type; break; case 0x2: - gSprites[RDATA->var3C[0x1B]].oam.tileNum = - gSprites[RDATA->var3C[0x1B]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1B]].anims + t + 0x2)->type; + gSprites[eRoulette->var3C[0x1B]].oam.tileNum = + gSprites[eRoulette->var3C[0x1B]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1B]].anims + t + 0x2)->type; break; case 0x1: - gSprites[RDATA->var3C[0x1A]].oam.tileNum = - gSprites[RDATA->var3C[0x1A]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1A]].anims + t + 0x1)->type; + gSprites[eRoulette->var3C[0x1A]].oam.tileNum = + gSprites[eRoulette->var3C[0x1A]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1A]].anims + t + 0x1)->type; break; case 0x0: default: for (i = 0x0; i < 0x3; i++) { - gSprites[RDATA->var3C[0x1A + i]].oam.tileNum = - gSprites[RDATA->var3C[0x1A + i]].sheetTileStart - + (*gSprites[RDATA->var3C[0x1A + i]].anims + t + 2)->type; + gSprites[eRoulette->var3C[0x1A + i]].oam.tileNum = + gSprites[eRoulette->var3C[0x1A + i]].sheetTileStart + + (*gSprites[eRoulette->var3C[0x1A + i]].anims + t + 2)->type; } } } void sub_81184CC(struct Sprite *sprite) { - sprite->pos2.x = RDATA->var26; + sprite->pos2.x = eRoulette->var26; } void sub_81184D8(void) @@ -3321,7 +3259,7 @@ void sub_81184D8(void) s.tag = gUnknown_083FA42C.tag; LoadSpriteSheet(&s); spriteid = CreateSprite(&gSpriteTemplate_83FA434, 0x74, 0x50, 0x51); - gSprites[spriteid].data[0] = RDATA->var24; + gSprites[spriteid].data[0] = eRoulette->var24; gSprites[spriteid].data[1] = 0x0; gSprites[spriteid].animPaused = TRUE; gSprites[spriteid].affineAnimPaused = TRUE; @@ -3332,252 +3270,1284 @@ void sub_8118554(struct Sprite *sprite) { u32 t = sprite->oam.matrixNum; struct OamMatrix *m = &gOamMatrices[0]; - m[t].d = RDATA->var2C.a; - m[t].a = RDATA->var2C.a; - m[t].b = RDATA->var2C.b; - m[t].c = RDATA->var2C.c; + m[t].d = eRoulette->var2C.a; + m[t].a = eRoulette->var2C.a; + m[t].b = eRoulette->var2C.b; + m[t].c = eRoulette->var2C.c; +} + +void sub_811857C(void) +{ + u8 i; + for (i = 0x0; i < 0x6; i++) + { + u8 spriteid = + eRoulette->var3C[i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x50, 0x39 - i); + if (spriteid != 0x40) + { + gSprites[eRoulette->var3C[i]].invisible = TRUE; + gSprites[eRoulette->var3C[i]].coordOffsetEnabled = TRUE; + } + } +} + +void sub_81185E8(void) +{ + u8 t = eRoulette->var3C[0x0]; + u8 i; + for (i = 0x0; i < 0x6; i++) + { + u8 j; + gSprites[t].invisible = TRUE; + gSprites[t].callback = &SpriteCallbackDummy; + StartSpriteAnim(&gSprites[t], 0x0); + for (j = 0x0; j < 0x8; j++) + gSprites[t].data[j] = 0x0; + t++; + } +} + +s16 sub_811866C(struct Sprite *sprite) +{ + if (eRoulette->var24 > sprite->data[0x3]) + { + sprite->data[0x6] = 360 - eRoulette->var24 + sprite->data[0x3]; + if (sprite->data[0x6] > 359) + sprite->data[0x6] -=360; + } + else + sprite->data[0x6] = sprite->data[0x3] - eRoulette->var24; + return sprite->data[0x6]; +} + +u8 sub_81186B8(struct Sprite *sprite) +{ + eRoulette->var7E = (u8)(((float)(s16)sub_811866C(sprite)) / 30.0f); + return eRoulette->var7E; +} + +s16 sub_81186E8(struct Sprite *sprite) +{ + s16 t = sub_811866C(sprite) % 30; + u16 z; + if (t == 0xE) + { + z = 0x0; + return sprite->data[0x2] = z; + } + else if (t > 0xD) + { + z = (u16)(0x2B - t); + return sprite->data[0x2] = z; + } + else + { + z = (u16)(0xE - t); + return sprite->data[0x2] = z; + } +} + +void sub_8118724(struct Sprite *sprite) +{ + s16 sin, cos; + eRoulette->var8C += eRoulette->var90; + eRoulette->var88 += eRoulette->var8C; + if (eRoulette->var88 >= 360) + eRoulette->var88 -= 360.0f; + else + if (eRoulette->var88 < 0.0f) + eRoulette->var88 += 360.0f; + sprite->data[0x3] = eRoulette->var88; + eRoulette->var98 += eRoulette->var9C; + eRoulette->var94 += eRoulette->var98; + sprite->data[0x4] = eRoulette->var94; + sin = Sin2(sprite->data[0x3]); + cos = Cos2(sprite->data[0x3]); + sprite->pos2.x = sin * sprite->data[0x4] >> 0xC; + sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC; + if (IsSEPlaying()) + { + m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, sprite->pos2.x); + m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, sprite->pos2.x); + } +} + +void sub_8118834(struct Sprite *sprite) +{ + s16 sin, cos; + sprite->data[0x3] = eRoulette->var24 + sprite->data[0x6]; + if (sprite->data[0x3] > 359) + sprite->data[0x3] -= 360; + sin = Sin2(sprite->data[0x3]); + cos = Cos2(sprite->data[0x3]); + sprite->pos2.x = sin * sprite->data[0x4] >> 0xC; + sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC; + sprite->pos2.y += gSpriteCoordOffsetY; +} + +void sub_811889C(struct Sprite *sprite) +{ + sub_8118724(sprite); + sprite->data[0x2]++; + if ((u16)(sprite->data[0x4] + 0x84) > 0xD4) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + if (!(sprite->data[0x2] < 30)) + { + if (!sprite->data[0x0]) + { + if (eRoulette->var94 <= eRoulette->varA0 - 2.0f) + { + eRoulette->var7D = 0xFF; + eRoulette->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + eRoulette->var9C = eRoulette->var98 = 0.0f; + eRoulette->var8C = -1.0f; + } + } + else + { + if (eRoulette->var94 >= eRoulette->varA0 - 2.0f) + { + eRoulette->var7D = 0xFF; + eRoulette->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + eRoulette->var9C = eRoulette->var98 = 0.0f; + eRoulette->var8C = -1.0f; + } + } + } +} + +void sub_81189A8(struct Sprite *sprite) +{ + float f0, f1, f2; + struct StructgUnknown_083F8DF4 *p; + sub_8118724(sprite); + switch(sprite->data[0x3]) + { + case 0: + if (sprite->data[0x0] != 0x1) + { + f0 = ((float)sprite->data[0x7]); + p = &gUnknown_083F8DF4[0]; + f1 = (f0 * ((float)(s32)p[eRoulette->var04_0].var01) + (float)((s32)p[eRoulette->var04_0].var02 - 0x1)); + f2 = (f0 / ((float)(s32)p[eRoulette->var04_0].var0C)); + } + else + { + return; + } + break; + case 180: + if (sprite->data[0x0] != 0x0) + { + f0 = ((float)sprite->data[0x7]); + p = &gUnknown_083F8DF4[0]; + f1 = (f0 * ((float)(s32)p[eRoulette->var04_0].var01) + (float)((s32)p[eRoulette->var04_0].var02 - 0x1)); + f2 = -(f0 / ((float)(s32)p[eRoulette->var04_0].var0C)); + } + else + { + return; + } + break; + default: return; + } + eRoulette->varA0 = eRoulette->var94; + eRoulette->var98 = f2; + eRoulette->var9C = -((f2 + f2) / f1 + (2.0f / (f1 * f1))); + eRoulette->var8C = 0.0f; + sprite->animPaused = FALSE; + sprite->animNum = 0x0; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->callback = &sub_811889C; + sprite->data[0x2] = 0x0; +} + +void sub_8118B30(struct Sprite *sprite) +{ + sprite->pos2.y = (s32)(((float)sprite->data[0x2]) * 0.05f * ((float)sprite->data[0x2])) - 45; + sprite->data[0x2]++; + if (sprite->data[0x2] > 29 && sprite->pos2.y >= 0) + { + eRoulette->var7D = 0xFF; + eRoulette->var03_7 = FALSE; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + eRoulette->var03_6 = TRUE; + } +} + +void sub_8118BD8(struct Sprite *sprite) +{ + if (sprite->data[0x2]++ < 45) + { + sprite->pos2.y--; + if(sprite->data[0x2] == 45) + { + if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1) + sprite->pos2.y++; + } + } + else + { + if (sprite->data[0x2] < sprite->data[0x7]) + { + if (gSprites[eRoulette->var3C[0x37]].animDelayCounter == 0x0) + { + if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1) + sprite->pos2.y++; + else + sprite->pos2.y--; + } + } + else + { + sprite->animPaused = FALSE; + sprite->animNum = 0x1; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->data[0x2] = 0x0; + sprite->callback = &sub_8118B30; + m4aSongNumStart(0x3D); + } + } +} + +void sub_8118CAC(struct Sprite *sprite) +{ + sub_8118724(sprite); + switch(sprite->data[0x3]) + { + case 90: + if (sprite->data[0x0] != 0x1) + { + sprite->callback = &sub_8118BD8; + sprite->data[0x2] = 0x0; + } + break; + case 270: + if (sprite->data[0x0] != 0x0) + { + sprite->callback = &sub_8118BD8; + sprite->data[0x2] = 0x0; + } + break; + } +} + +void sub_8118CEC(struct Sprite *sprite) +{ + sub_8118724(sprite); + switch(eRoulette->var03_0) + { + default: + case 0x0: + sub_8119224(sprite); + sprite->callback = &sub_81189A8; + break; + case 0x1: + sub_81193D4(sprite); + sprite->callback = &sub_8118CAC; + break; + } +} + +void sub_8118D2C(struct Sprite *sprite) +{ + sub_8118724(sprite); + if (sprite->data[0x2]-- == 0x10) + eRoulette->var98 *= -1.0f; + if (sprite->data[0x2] == 0x0) + { + if (!sprite->data[0x0]) + { + eRoulette->var7D = 0xFF; + eRoulette->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + } + else + { + sprite->animPaused = TRUE; + m4aSongNumStart(0x38); + sub_811952C(sprite); + } + } +} + +#ifdef NONMATCHING +void sub_8118DE4(struct Sprite *sprite) +{ + sub_8118724(sprite); + sprite->data[0x2] = 0x0; + sub_81186B8(sprite); + if (!(gUnknown_083F8D90[eRoulette->var7E].var04 & eRoulette->var08)) + { + eRoulette->var7D = 0xFF; + eRoulette->var03_7 = 0x0; + StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); + sub_81186B8(sprite); + sprite->data[0x4] = 30; + sub_811866C(sprite); + sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; + sprite->callback = &sub_8118834; + m4aSongNumStartOrChange(0x47); + } + else + { + u8 t; + u32 z; + m4aSongNumStart(0x38); + if ((z = (Random() & 0x1))) + { + u32 o; + eRoulette->var8C = 0.0f; + o = (eRoulette->var7E + 0x1) % 0xC; + t = o; + eRoulette->var7F = o; + } + else + { + eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C * 2; // couldn't replicate loads + t = (eRoulette->var7E + 0xB) % 0xC; + eRoulette->var7F = eRoulette->var7E; + } + if (gUnknown_083F8D90[t].var04 & eRoulette->var08) + { + sprite->data[0x0] = 0x1; + sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02; + } + else + { + sprite->data[0x0] = gUnknown_083F8D90[t].var04 & eRoulette->var08; + if (eRoulette->var04_0) + { + sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var01; + } + else + { + sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02; + if (z) + { + eRoulette->var8C = 1.5f; + } + else + { + eRoulette->var8C = -1.5f; + } + } + } + eRoulette->var98 = 0.085f; + sprite->callback = &sub_8118D2C; + sprite->data[0x1] = 0x5; + } +} +#else +__attribute__((naked)) +void sub_8118DE4(struct Sprite *sprite) +{ +asm(".syntax unified\n\ +push {r4-r7,lr}\n\ +mov r7, r9\n\ +mov r6, r8\n\ +push {r6,r7}\n\ +adds r7, r0, 0\n\ +bl sub_8118724\n\ +movs r0, 0\n\ +strh r0, [r7, 0x32]\n\ +adds r0, r7, 0\n\ +bl sub_81186B8\n\ +ldr r1, _08118E70 @ =gUnknown_083F8D90\n\ +ldr r6, _08118E74 @ =gSharedMem + 0x19000\n\ +movs r0, 0x7E\n\ +adds r0, r6\n\ +mov r8, r0\n\ +ldrb r0, [r0]\n\ +lsls r0, 3\n\ +adds r1, 0x4\n\ +adds r0, r1\n\ +ldr r0, [r0]\n\ +ldr r1, [r6, 0x8]\n\ +ands r0, r1\n\ +cmp r0, 0\n\ +bne _08118E7C\n\ +adds r1, r6, 0\n\ +adds r1, 0x7D\n\ +movs r0, 0xFF\n\ +strb r0, [r1]\n\ +ldrb r1, [r6, 0x3]\n\ +movs r0, 0x7F\n\ +ands r0, r1\n\ +strb r0, [r6, 0x3]\n\ +adds r0, r7, 0\n\ +adds r0, 0x2B\n\ +ldrb r1, [r0]\n\ +adds r1, 0x3\n\ +lsls r1, 24\n\ +lsrs r1, 24\n\ +adds r0, r7, 0\n\ +bl StartSpriteAnim\n\ +adds r0, r7, 0\n\ +bl sub_81186B8\n\ +movs r0, 0x1E\n\ +strh r0, [r7, 0x36]\n\ +adds r0, r7, 0\n\ +bl sub_811866C\n\ +movs r1, 0x3A\n\ +ldrsh r0, [r7, r1]\n\ +movs r1, 0x1E\n\ +bl __divsi3\n\ +lsls r0, 16\n\ +asrs r0, 16\n\ +lsls r1, r0, 4\n\ +subs r1, r0\n\ +lsls r1, 1\n\ +adds r1, 0xF\n\ +strh r1, [r7, 0x3A]\n\ +ldr r0, _08118E78 @ =sub_8118834\n\ +str r0, [r7, 0x1C]\n\ +movs r0, 0x47\n\ +bl m4aSongNumStartOrChange\n\ +b _08118F74\n\ +.align 2, 0\n\ +_08118E70: .4byte gUnknown_083F8D90\n\ +_08118E74: .4byte gSharedMem + 0x19000\n\ +_08118E78: .4byte sub_8118834\n\ +_08118E7C:\n\ +movs r0, 0x38\n\ +bl m4aSongNumStart\n\ +bl Random\n\ +movs r2, 0x1\n\ +mov r9, r2\n\ +mov r1, r9\n\ +ands r1, r0\n\ +mov r9, r1\n\ +cmp r1, 0\n\ +beq _08118EC0\n\ +adds r1, r6, 0\n\ +adds r1, 0x8C\n\ +ldr r0, _08118EB8 @ =0x00000000\n\ +str r0, [r1]\n\ +mov r2, r8\n\ +ldrb r0, [r2]\n\ +adds r0, 0x1\n\ +movs r1, 0xC\n\ +bl __modsi3\n\ +lsls r1, r0, 24\n\ +lsrs r2, r1, 24\n\ +adds r1, r6, 0\n\ +adds r1, 0x7F\n\ +strb r0, [r1]\n\ +ldr r5, _08118EBC @ =gUnknown_083F8DF4\n\ +b _08118EF4\n\ +.align 2, 0\n\ +_08118EB8: .4byte 0x00000000\n\ +_08118EBC: .4byte gUnknown_083F8DF4\n\ +_08118EC0:\n\ +adds r4, r6, 0\n\ +adds r4, 0x8C\n\ +ldr r5, _08118F1C @ =gUnknown_083F8DF4\n\ +ldrb r0, [r6, 0x4]\n\ +lsls r0, 30\n\ +lsrs r0, 25\n\ +adds r1, r5, 0\n\ +adds r1, 0x1C\n\ +adds r0, r1\n\ +ldr r1, [r0]\n\ +adds r0, r1, 0\n\ +bl __addsf3\n\ +str r0, [r4]\n\ +mov r0, r8\n\ +ldrb r4, [r0]\n\ +adds r0, r4, 0\n\ +adds r0, 0xB\n\ +movs r1, 0xC\n\ +bl __modsi3\n\ +lsls r0, 24\n\ +lsrs r2, r0, 24\n\ +adds r0, r6, 0\n\ +adds r0, 0x7F\n\ +strb r4, [r0]\n\ +_08118EF4:\n\ +ldr r0, _08118F20 @ =gUnknown_083F8D90\n\ +lsls r1, r2, 3\n\ +adds r0, 0x4\n\ +adds r1, r0\n\ +ldr r2, _08118F24 @ =gSharedMem + 0x19000\n\ +ldr r1, [r1]\n\ +ldr r0, [r2, 0x8]\n\ +ands r1, r0\n\ +cmp r1, 0\n\ +beq _08118F28\n\ +movs r0, 0x1\n\ +strh r0, [r7, 0x2E]\n\ +ldrb r0, [r2, 0x4]\n\ +lsls r0, 30\n\ +lsrs r0, 25\n\ +adds r0, r5\n\ +ldrb r0, [r0, 0x2]\n\ +strh r0, [r7, 0x32]\n\ +b _08118F64\n\ +.align 2, 0\n\ +_08118F1C: .4byte gUnknown_083F8DF4\n\ +_08118F20: .4byte gUnknown_083F8D90\n\ +_08118F24: .4byte gSharedMem + 0x19000\n\ +_08118F28:\n\ +strh r1, [r7, 0x2E]\n\ +ldrb r1, [r2, 0x4]\n\ +movs r0, 0x3\n\ +ands r0, r1\n\ +cmp r0, 0\n\ +beq _08118F40\n\ +lsls r0, r1, 30\n\ +lsrs r0, 25\n\ +adds r0, r5\n\ +ldrb r0, [r0, 0x1]\n\ +strh r0, [r7, 0x32]\n\ +b _08118F64\n\ +_08118F40:\n\ +lsls r0, r1, 30\n\ +lsrs r0, 25\n\ +adds r0, r5\n\ +ldrb r0, [r0, 0x2]\n\ +strh r0, [r7, 0x32]\n\ +mov r1, r9\n\ +cmp r1, 0\n\ +beq _08118F5C\n\ +adds r1, r2, 0\n\ +adds r1, 0x8C\n\ +ldr r0, _08118F58 @ =0x3f000000\n\ +b _08118F62\n\ +.align 2, 0\n\ +_08118F58: .4byte 0x3f000000\n\ +_08118F5C:\n\ +adds r1, r2, 0\n\ +adds r1, 0x8C\n\ +ldr r0, _08118F80 @ =0xbfc00000\n\ +_08118F62:\n\ +str r0, [r1]\n\ +_08118F64:\n\ +adds r1, r2, 0\n\ +adds r1, 0x98\n\ +ldr r0, _08118F84 @ =0x3dae147b\n\ +str r0, [r1]\n\ +ldr r0, _08118F88 @ =sub_8118D2C\n\ +str r0, [r7, 0x1C]\n\ +movs r0, 0x5\n\ +strh r0, [r7, 0x30]\n\ +_08118F74:\n\ +pop {r3,r4}\n\ +mov r8, r3\n\ +mov r9, r4\n\ +pop {r4-r7}\n\ +pop {r0}\n\ +bx r0\n\ +.align 2, 0\n\ +_08118F80: .4byte 0xbfc00000\n\ +_08118F84: .4byte 0x3dae147b\n\ +_08118F88: .4byte sub_8118D2C\n\ +.syntax divided\n"); +} +#endif + +void sub_8118F8C(struct Sprite *sprite) +{ + sub_8118724(sprite); + if (!(eRoulette->var8C > 0.5f)) + { + sub_81186B8(sprite); + if (sub_81186E8(sprite) == 0x0) + { + struct StructgUnknown_083F8DF4 *p; + eRoulette->var90 = 0.0f; + p = &gUnknown_083F8DF4[0]; + eRoulette->var8C -= ((float)p[eRoulette->var04_0].var03) + / ((float)(s16)((&p[eRoulette->var04_0])->var04 + 0x1)); + sprite->data[0x1] = 0x4; + sprite->callback = &sub_8118DE4; + } + else + { + if (eRoulette->var90 != 0.0f) + { + if (eRoulette->var8C < 0.0f) + { + eRoulette->var90 = 0.0f; + eRoulette->var8C = 0.0f; + eRoulette->var98 /= 1.2; + } + } + } + } +} + +void sub_8119088(struct Sprite *sprite) +{ + sub_8118724(sprite); + if (!(eRoulette->var94 > 40.f)) + { + eRoulette->var98 = - ( 4.0f / (float)(u16)eRoulette->var86); + eRoulette->var90 = - (eRoulette->var8C / (float)(u16)eRoulette->var86); + sprite->animNum = 0x2; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->data[0x1] = 0x3; + sprite->callback = &sub_8118F8C; + } +} + +void sub_8119134(struct Sprite *sprite) +{ + sub_8118724(sprite); + if (!(eRoulette->var94 > 60.0f)) + { + m4aSongNumStartOrChange(0x5D); + eRoulette->var98 = - ( 20.0f / (float)(u16)eRoulette->var84); + eRoulette->var90 = ((1.0f - eRoulette->var8C) / (float)(u16)eRoulette->var84); + sprite->animNum = 0x1; + sprite->animBeginning = TRUE; + sprite->animEnded = FALSE; + sprite->data[0x1] = 0x2; + sprite->callback = &sub_8119088; + } +} + +void sub_81191F4(struct Sprite *sprite) +{ + sprite->data[0x1] = 0x1; + sprite->data[0x2] = 0x0; + sub_8118724(sprite); + sprite->invisible = FALSE; + sprite->callback = &sub_8119134; +} + +void sub_8119224(struct Sprite *sprite) +{ + u16 t; + u8 i; + s16 s[0x2][0x2]; + struct Roulette *p; + memcpy(s, &gUnknown_083FA60E, 0x8); + t = sprite->data[0x7] - 0x2; + p = eRoulette; + p->var3C[0x37] = CreateSprite(&gSpriteTemplate_83FA50C, 0x24, -0xC, 0x32); + p->var3C[0x38] = CreateSprite(&gSpriteTemplate_83FA5C0[0x0], s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x3B); + p->var3C[0x39] = CreateSprite(&gSpriteTemplate_83FA5C0[0x1], 0x24, 0x8C, 0x33); + gSprites[eRoulette->var3C[0x39]].oam.objMode = 0x1; + for (i = 0x0; i < 0x3; i++) + { + gSprites[eRoulette->var3C[0x37 + i]].coordOffsetEnabled = FALSE; + gSprites[eRoulette->var3C[0x37 + i]].invisible = TRUE; + gSprites[eRoulette->var3C[0x37 + i]].animPaused = TRUE; + gSprites[eRoulette->var3C[0x37 + i]].affineAnimPaused = TRUE; + gSprites[eRoulette->var3C[0x37 + i]].data[0x4] = eRoulette->var3C[0x37]; + gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38]; + gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x39]; + gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t; + gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * (&gUnknown_083F8DF4[eRoulette->var04_0])->var01) + + ((&gUnknown_083F8DF4[eRoulette->var04_0])->var02 + 0xFFFF); + } + gSprites[eRoulette->var3C[0x38]].coordOffsetEnabled = TRUE; + eRoulette->var38 = sprite; +} + +void sub_81193D4(struct Sprite *sprite) +{ + u8 i = 0; + s16 t; + s16 s[0x2][0x2]; + struct StructgUnknown_083F8DF4 *p; + memcpy(s, &gUnknown_083FA616, 0x8); + t = sprite->data[0x7] - 0x2; + eRoulette->var3C[0x37] = CreateSprite(&gSpriteTemplate_83FA524, s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x32); + StartSpriteAnim(&gSprites[eRoulette->var3C[0x37]], sprite->data[0x0]); + eRoulette->var3C[0x38] = CreateSprite(&gSpriteTemplate_83FA5F0, s[sprite->data[0x0]][0x0], s[sprite->data[0x0]][0x1], 0x33); + gSprites[eRoulette->var3C[0x38]].affineAnimPaused = TRUE; + gSprites[eRoulette->var3C[0x38]].animPaused = TRUE; + sprite->data[0x7] = (t * (p = &gUnknown_083F8DF4[0])[eRoulette->var04_0].var01) + (p[eRoulette->var04_0].var10 + 0x2D); + for (; i < 0x2; i++) + { + gSprites[eRoulette->var3C[0x37 + i]].data[0x4] = eRoulette->var3C[0x37]; + gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38]; + gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x38]; + gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t; + gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = sprite->data[0x7] - 0x2D; + } + eRoulette->var38 = sprite; +} + +#ifdef NONMATCHING +void sub_811952C(struct Sprite *sprite) +{ + u8 z; + register u8 h asm("r10") = 0x0; + u8 j = 0x5; + u32 p = 0x0; + u16 o; + u8 i; + u8 s[0xA] = (u8[]){0,0,0,0,0,0,0,0,0,0}; + u16 t = Random(); + eRoulette->var7D = 0x1; + eRoulette->var03_5 = TRUE; + eRoulette->var03_6 = FALSE; + eRoulette->var7E = 0xFF; + eRoulette->var88 = sprite->data[0x3]; + eRoulette->var98 = 0.0f; + eRoulette->var8C = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1C; //couldn't replicate load, same as sub_8118DE4 + o = (eRoulette->var04_0 * 30 + 33) + (0x1 - eRoulette->var03_0) * 15; + for (i = 0x0; i < 0x4; i++) + { + if (o < sprite->data[0x3] && !(sprite->data[0x3] > o + 90)) + { + sprite->data[0x0] = i * 0x2; + eRoulette->var03_0 = 0x1 & i; + break; + } + if (i == 0x3) + { + sprite->data[0x0] = 0x1; + eRoulette->var03_0 = 0x1; + break; + } + o += 90; + } + if (eRoulette->var03_0) + { + if (sprite->data[0x0]) + { + PlayCry1(0x130, -0x3F); + } + else + { + PlayCry1(0x130, 0x3F); + } + } + else + { + PlayCry1(0x132, -0x3F); + } + i = 0x2; + z = (eRoulette->var7F + 0x2) % 0xC; + if (eRoulette->var03_0 == 0x1 && eRoulette->var04_0 == 0x1) + j += 0x6; + else + j += i; + for (; i < j; i++) + { + if (!(eRoulette->var08 & gUnknown_083F8D90[z].var04)) + { + s[h++] = i; + if (!p && (gUnknown_083F8D90[z].var04 & gUnknown_083F8C00[eRoulette->var1B[eRoulette->var1A_0]].var00)) + { + p = i; + } + } + z = (z + 0x1) % 0xC; + } + if ((eRoulette->var03_0 + 0x1) & eRoulette->var02) + { + if (p && (t & 0xFF) <= 0xBF) + { + sprite->data[0x7] = p; + } + else + { + sprite->data[0x7] = s[t % h]; + } + } + else + { + sprite->data[0x7] = s[t % h]; + } + sprite->callback = &sub_8118CEC; +} +#else +__attribute__((naked)) +void sub_811952C(struct Sprite *sprite) +{ +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, 0x14\n\ +mov r8, r0\n\ +movs r0, 0\n\ +mov r10, r0\n\ +movs r1, 0x5\n\ +mov r9, r1\n\ +movs r2, 0\n\ +str r2, [sp, 0xC]\n\ +mov r0, sp\n\ +movs r1, 0\n\ +movs r2, 0xA\n\ +bl memset\n\ +bl Random\n\ +lsls r0, 16\n\ +lsrs r0, 16\n\ +str r0, [sp, 0x10]\n\ +ldr r7, _08119610 @ =gSharedMem + 0x19000\n\ +adds r0, r7, 0\n\ +adds r0, 0x7D\n\ +movs r6, 0x1\n\ +strb r6, [r0]\n\ +ldrb r4, [r7, 0x3]\n\ +movs r0, 0x20\n\ +orrs r4, r0\n\ +movs r0, 0x41\n\ +negs r0, r0\n\ +ands r4, r0\n\ +strb r4, [r7, 0x3]\n\ +adds r1, r7, 0\n\ +adds r1, 0x7E\n\ +movs r0, 0xFF\n\ +strb r0, [r1]\n\ +adds r5, r7, 0\n\ +adds r5, 0x88\n\ +mov r3, r8\n\ +movs r1, 0x34\n\ +ldrsh r0, [r3, r1]\n\ +bl __floatsisf\n\ +str r0, [r5]\n\ +adds r1, r7, 0\n\ +adds r1, 0x98\n\ +ldr r0, _08119614 @ =0x00000000\n\ +str r0, [r1]\n\ +adds r3, r7, 0\n\ +adds r3, 0x8C\n\ +ldr r2, _08119618 @ =gUnknown_083F8DF4\n\ +ldrb r0, [r7, 0x4]\n\ +lsls r0, 30\n\ +lsrs r1, r0, 25\n\ +adds r2, 0x1C\n\ +adds r1, r2\n\ +ldr r1, [r1]\n\ +str r1, [r3]\n\ +lsrs r0, 30\n\ +lsls r1, r0, 4\n\ +subs r1, r0\n\ +lsls r1, 1\n\ +adds r1, 0x21\n\ +lsls r4, 27\n\ +lsrs r4, 27\n\ +subs r6, r4\n\ +lsls r0, r6, 4\n\ +subs r0, r6\n\ +adds r1, r0\n\ +lsls r1, 16\n\ +lsrs r1, 16\n\ +mov r5, r10\n\ +mov r3, r8\n\ +movs r0, 0x34\n\ +ldrsh r2, [r3, r0]\n\ +_081195C8:\n\ +cmp r1, r2\n\ +bge _081195D4\n\ +adds r0, r1, 0\n\ +adds r0, 0x5A\n\ +cmp r2, r0\n\ +ble _08119638\n\ +_081195D4:\n\ +cmp r5, 0x3\n\ +beq _0811961C\n\ +adds r0, r1, 0\n\ +adds r0, 0x5A\n\ +lsls r0, 16\n\ +lsrs r1, r0, 16\n\ +adds r0, r5, 0x1\n\ +lsls r0, 24\n\ +lsrs r5, r0, 24\n\ +cmp r5, 0x3\n\ +bls _081195C8\n\ +_081195EA:\n\ +ldr r0, _08119610 @ =gSharedMem + 0x19000\n\ +ldrb r1, [r0, 0x3]\n\ +movs r0, 0x1F\n\ +ands r0, r1\n\ +cmp r0, 0\n\ +beq _08119664\n\ +mov r1, r8\n\ +movs r2, 0x2E\n\ +ldrsh r0, [r1, r2]\n\ +cmp r0, 0\n\ +beq _08119658\n\ +movs r0, 0x98\n\ +lsls r0, 1\n\ +movs r1, 0x3F\n\ +negs r1, r1\n\ +bl PlayCry1\n\ +b _08119670\n\ +.align 2, 0\n\ +_08119610: .4byte gSharedMem + 0x19000\n\ +_08119614: .4byte 0x00000000\n\ +_08119618: .4byte gUnknown_083F8DF4\n\ +_0811961C:\n\ +movs r0, 0x1\n\ +mov r3, r8\n\ +strh r0, [r3, 0x2E]\n\ +ldr r2, _08119634 @ =gSharedMem + 0x19000\n\ +ldrb r1, [r2, 0x3]\n\ +subs r0, 0x21\n\ +ands r0, r1\n\ +movs r1, 0x1\n\ +orrs r0, r1\n\ +strb r0, [r2, 0x3]\n\ +b _081195EA\n\ +.align 2, 0\n\ +_08119634: .4byte gSharedMem + 0x19000\n\ +_08119638:\n\ +lsrs r0, r5, 1\n\ +mov r1, r8\n\ +strh r0, [r1, 0x2E]\n\ +ldr r3, _08119654 @ =gSharedMem + 0x19000\n\ +movs r1, 0x1\n\ +ands r1, r5\n\ +ldrb r2, [r3, 0x3]\n\ +movs r0, 0x20\n\ +negs r0, r0\n\ +ands r0, r2\n\ +orrs r0, r1\n\ +strb r0, [r3, 0x3]\n\ +b _081195EA\n\ +.align 2, 0\n\ +_08119654: .4byte gSharedMem + 0x19000\n\ +_08119658:\n\ +movs r0, 0x98\n\ +lsls r0, 1\n\ +movs r1, 0x3F\n\ +bl PlayCry1\n\ +b _08119670\n\ +_08119664:\n\ +movs r0, 0x99\n\ +lsls r0, 1\n\ +movs r1, 0x3F\n\ +negs r1, r1\n\ +bl PlayCry1\n\ +_08119670:\n\ +movs r5, 0x2\n\ +ldr r4, _081196A0 @ =gSharedMem + 0x19000\n\ +adds r0, r4, 0\n\ +adds r0, 0x7F\n\ +ldrb r0, [r0]\n\ +adds r0, 0x2\n\ +movs r1, 0xC\n\ +bl __modsi3\n\ +lsls r0, 24\n\ +lsrs r3, r0, 24\n\ +ldrb r1, [r4, 0x3]\n\ +movs r0, 0x1F\n\ +ands r0, r1\n\ +cmp r0, 0x1\n\ +bne _081196A4\n\ +ldrb r1, [r4, 0x4]\n\ +movs r0, 0x3\n\ +ands r0, r1\n\ +cmp r0, 0x1\n\ +bne _081196A4\n\ +mov r0, r9\n\ +adds r0, 0x6\n\ +b _081196A8\n\ +.align 2, 0\n\ +_081196A0: .4byte gSharedMem + 0x19000\n\ +_081196A4:\n\ +mov r2, r9\n\ +adds r0, r2, r5\n\ +_081196A8:\n\ +lsls r0, 24\n\ +lsrs r0, 24\n\ +mov r9, r0\n\ +cmp r5, r9\n\ +bcs _0811970E\n\ +ldr r6, _08119734 @ =gSharedMem + 0x19000\n\ +ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n\ +_081196B6:\n\ +lsls r0, r3, 3\n\ +ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n\ +adds r0, r1\n\ +ldr r1, [r6, 0x8]\n\ +ldr r2, [r0]\n\ +ands r1, r2\n\ +cmp r1, 0\n\ +bne _081196F8\n\ +mov r0, r10\n\ +adds r1, r0, 0x1\n\ +lsls r1, 24\n\ +lsrs r1, 24\n\ +mov r10, r1\n\ +add r0, sp\n\ +strb r5, [r0]\n\ +ldr r0, [sp, 0xC]\n\ +cmp r0, 0\n\ +bne _081196F8\n\ +ldrb r0, [r6, 0x1A]\n\ +lsls r0, 28\n\ +lsrs r0, 28\n\ +ldr r1, _08119740 @ =gSharedMem + 0x1901B\n\ +adds r0, r1\n\ +ldrb r1, [r0]\n\ +lsls r0, r1, 2\n\ +adds r0, r1\n\ +lsls r0, 2\n\ +adds r0, r7\n\ +ldr r0, [r0]\n\ +ands r2, r0\n\ +cmp r2, 0\n\ +beq _081196F8\n\ +str r5, [sp, 0xC]\n\ +_081196F8:\n\ +adds r0, r3, 0x1\n\ +movs r1, 0xC\n\ +bl __modsi3\n\ +lsls r0, 24\n\ +lsrs r3, r0, 24\n\ +adds r0, r5, 0x1\n\ +lsls r0, 24\n\ +lsrs r5, r0, 24\n\ +cmp r5, r9\n\ +bcc _081196B6\n\ +_0811970E:\n\ +ldrb r0, [r4, 0x3]\n\ +lsls r0, 27\n\ +lsrs r0, 27\n\ +adds r0, 0x1\n\ +ldrb r1, [r4, 0x2]\n\ +ands r0, r1\n\ +cmp r0, 0\n\ +beq _08119756\n\ +ldr r2, [sp, 0xC]\n\ +cmp r2, 0\n\ +beq _08119744\n\ +movs r0, 0xFF\n\ +ldr r3, [sp, 0x10]\n\ +ands r0, r3\n\ +cmp r0, 0xBF\n\ +bhi _08119744\n\ +mov r0, r8\n\ +strh r2, [r0, 0x3C]\n\ +b _08119766\n\ +.align 2, 0\n\ +_08119734: .4byte gSharedMem + 0x19000\n\ +_08119738: .4byte gUnknown_083F8C00 + 0xC\n\ +_0811973C: .4byte gUnknown_083F8D90 + 0x4\n\ +_08119740: .4byte gSharedMem + 0x1901B\n\ +_08119744:\n\ +ldr r0, [sp, 0x10]\n\ +mov r1, r10\n\ +bl __modsi3\n\ +add r0, sp\n\ +ldrb r0, [r0]\n\ +mov r1, r8\n\ +strh r0, [r1, 0x3C]\n\ +b _08119766\n\ +_08119756:\n\ +ldr r0, [sp, 0x10]\n\ +mov r1, r10\n\ +bl __modsi3\n\ +add r0, sp\n\ +ldrb r0, [r0]\n\ +mov r2, r8\n\ +strh r0, [r2, 0x3C]\n\ +_08119766:\n\ +ldr r3, _0811977C @ =sub_8118CEC\n\ +mov r0, r8\n\ +str r3, [r0, 0x1C]\n\ +add sp, 0x14\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\ +.align 2, 0\n\ +_0811977C: .4byte sub_8118CEC\n\ +.syntax divided\n"); } +#endif -void sub_811857C(void) +void sub_8119780(struct Sprite *sprite) { - u8 i; - for (i = 0x0; i < 0x6; i++) + if (!(sprite->data[0x1]++ < sprite->data[0x3])) { - u8 spriteid = - RDATA->var3C[i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x50, 0x39 - i); - if (spriteid != 0x40) + if ((sprite->pos1.x -= 0x2) < -0x10) { - gSprites[RDATA->var3C[i]].invisible = TRUE; - gSprites[RDATA->var3C[i]].coordOffsetEnabled = TRUE; + if (!eRoulette->var03_6) + { + eRoulette->var03_6 = TRUE; + } + DestroySprite(sprite); + eRoulette->var01 = 0x0; + eRoulette->var34 = gUnknown_083FA61E[0x0]; } } } -void sub_81185E8(void) -{ - u8 t = RDATA->var3C[0x0]; - u8 i; - for (i = 0x0; i < 0x6; i++) - { - u8 j; - gSprites[t].invisible = TRUE; - gSprites[t].callback = &SpriteCallbackDummy; - StartSpriteAnim(&gSprites[t], 0x0); - for (j = 0x0; j < 0x8; j++) - gSprites[t].data[j] = 0x0; - t++; - } -} - -s16 sub_811866C(struct Sprite *sprite) -{ - if (RDATA->var24 > sprite->data[0x3]) - { - sprite->data[0x6] = 360 - RDATA->var24 + sprite->data[0x3]; - if (sprite->data[0x6] > 359) - sprite->data[0x6] -=360; - } - else - sprite->data[0x6] = sprite->data[0x3] - RDATA->var24; - return sprite->data[0x6]; -} - -u8 sub_81186B8(struct Sprite *sprite) -{ - RDATA->var7E = (u8)(((float)(s16)sub_811866C(sprite)) / 30.0f); - return RDATA->var7E; -} - -s16 sub_81186E8(struct Sprite *sprite) +void sub_81197D8(struct Sprite *sprite) { - s16 t = sub_811866C(sprite) % 30; - u16 z; - if (t == 0xE) - { - z = 0x0; - return sprite->data[0x2] = z; - } - else if (t > 0xD) + u16 t[0x3][0x4]; + s32 p, z; + memcpy(t, &gUnknown_083FA632, 0x18); + if (sprite->data[0x1]++ < sprite->data[0x3]) { - z = (u16)(0x2B - t); - return sprite->data[0x2] = z; + if(sprite->data[0x1] & 0x1) + { + gSpriteCoordOffsetY = t[sprite->data[0x2] / 0x2][sprite->data[0x7]]; + p = z = sprite->data[0x7] + 0x1; + if (z < 0) + p += 0x3; + sprite->data[0x7] = z - ((p >> 2) * 4); + } + sprite->invisible ^= 0x1; } else { - z = (u16)(0xE - t); - return sprite->data[0x2] = z; + gSpriteCoordOffsetY = 0x0; + gSprites[eRoulette->var3C[0x37]].animPaused = FALSE; + DestroySprite(sprite); } } -void sub_8118724(struct Sprite *sprite) +void sub_8119898(struct Sprite *sprite) { - s16 sin, cos; - RDATA->var8C += RDATA->var90; - RDATA->var88 += RDATA->var8C; - if (RDATA->var88 >= 360) - RDATA->var88 -= 360.0f; - else - if (RDATA->var88 < 0.0f) - RDATA->var88 += 360.0f; - sprite->data[0x3] = RDATA->var88; - RDATA->var98 += RDATA->var9C; - RDATA->var94 += RDATA->var98; - sprite->data[0x4] = RDATA->var94; - sin = Sin2(sprite->data[0x3]); - cos = Cos2(sprite->data[0x3]); - sprite->pos2.x = sin * sprite->data[0x4] >> 0xC; - sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC; - if (IsSEPlaying()) + float t; + sprite->data[0x1]++; + t = sprite->data[0x1]; + sprite->pos2.y = t * 0.039f * t; + eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 0x1) / 2]; + if (eRoulette->var01 < 0x13) + eRoulette->var01++; + if (sprite->data[0x1] > 0x3C) { - m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, sprite->pos2.x); - m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, sprite->pos2.x); + sprite->data[0x1] = 0x0; + sprite->callback = &sub_8119780; + gSprites[sprite->data[0x6]].callback = &sub_8119780; + gSprites[sprite->data[0x6]].data[0x1] = -0x2; + gSprites[sprite->data[0x5]].invisible = FALSE; + gSprites[sprite->data[0x5]].callback = &sub_81197D8; + m4aSongNumStart(0xD6); } } -void sub_8118834(struct Sprite *sprite) -{ - s16 sin, cos; - sprite->data[0x3] = RDATA->var24 + sprite->data[0x6]; - if (sprite->data[0x3] > 359) - sprite->data[0x3] -= 360; - sin = Sin2(sprite->data[0x3]); - cos = Cos2(sprite->data[0x3]); - sprite->pos2.x = sin * sprite->data[0x4] >> 0xC; - sprite->pos2.y = -cos * sprite->data[0x4] >> 0xC; - sprite->pos2.y += gSpriteCoordOffsetY; -} - -void sub_811889C(struct Sprite *sprite) +void sub_8119964(struct Sprite *sprite) { - sub_8118724(sprite); - sprite->data[0x2]++; - if ((u16)(sprite->data[0x4] + 0x84) > 0xD4) - sprite->invisible = TRUE; - else - sprite->invisible = FALSE; - if (!(sprite->data[0x2] < 30)) + if(sprite->data[0x7] == 0x0) { - if (!sprite->data[0x0]) + register u32 t asm("r2"); + u32 z ; + if (eRoulette->var38->data[0x0] == 0x0) { - if (RDATA->var94 <= RDATA->varA0 - 2.0f) - { - RDATA->var7D = 0xFF; - RDATA->var03_7 = 0x0; - StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); - sub_81186B8(sprite); - sprite->data[0x4] = 30; - sub_811866C(sprite); - sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; - sprite->callback = &sub_8118834; - m4aSongNumStartOrChange(0x47); - RDATA->var9C = RDATA->var98 = 0.0f; - RDATA->var8C = -1.0f; - } + t = eRoulette->var38->data[0x3]; + z = gUnknown_083F8DF4[eRoulette->var04_0].var08; } else { - if (RDATA->var94 >= RDATA->varA0 - 2.0f) - { - RDATA->var7D = 0xFF; - RDATA->var03_7 = 0x0; - StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); - sub_81186B8(sprite); - sprite->data[0x4] = 30; - sub_811866C(sprite); - sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; - sprite->callback = &sub_8118834; - m4aSongNumStartOrChange(0x47); - RDATA->var9C = RDATA->var98 = 0.0f; - RDATA->var8C = -1.0f; - } + t = eRoulette->var38->data[0x3]; + z = gUnknown_083F8DF4[eRoulette->var04_0].var08; + z += 0xB4; + } + if (t == z) + { + sprite->invisible = FALSE; + sprite->data[0x7]++; + m4aSongNumStart(0x2B); + eRoulette->var01 = 0x1; + eRoulette->var34 = gUnknown_083FA61E[0x0]; } } -} - -void sub_81189A8(struct Sprite *sprite) -{ - float f0, f1, f2; - struct Unkg083F8DF4 *p; - sub_8118724(sprite); - switch(sprite->data[0x3]) + else { - case 0: - if (sprite->data[0x0] != 0x1) + u32 t, z; + eRoulette->var34 = gUnknown_083FA61E[(eRoulette->var01 - 0x1) / 2]; + if (eRoulette->var01 < 0x13) + eRoulette->var01++; + if (eRoulette->var38->data[0x0] == 0x0) { - f0 = ((float)sprite->data[0x7]); - p = &gUnknown_083F8DF4[0]; - f1 = (f0 * ((float)(s32)p[RDATA->var04_0].var01) + (float)((s32)p[RDATA->var04_0].var02 - 0x1)); - f2 = (f0 / ((float)(s32)p[RDATA->var04_0].var0C)); + t = eRoulette->var38->data[0x3]; + z = gUnknown_083F8DF4[eRoulette->var04_0].var0A; } else { - return; - } - break; - case 180: - if (sprite->data[0x0] != 0x0) - { - f0 = ((float)sprite->data[0x7]); - p = &gUnknown_083F8DF4[0]; - f1 = (f0 * ((float)(s32)p[RDATA->var04_0].var01) + (float)((s32)p[RDATA->var04_0].var02 - 0x1)); - f2 = -(f0 / ((float)(s32)p[RDATA->var04_0].var0C)); + t = eRoulette->var38->data[0x3]; + z = gUnknown_083F8DF4[eRoulette->var04_0].var0A ; + z += 0xB4; } - else + if (t == z) { - return; + gSprites[sprite->data[0x4]].callback = &sub_8119898; + gSprites[sprite->data[0x4]].invisible = FALSE; + sprite->callback = &SpriteCallbackDummy; + sprite->data[0x7] = 0x0; } - break; - default: return; } - RDATA->varA0 = RDATA->var94; - RDATA->var98 = f2; - RDATA->var9C = -((f2 + f2) / f1 + (2.0f / (f1 * f1))); - RDATA->var8C = 0.0f; - sprite->animPaused = FALSE; - sprite->animNum = 0x0; - sprite->animBeginning = TRUE; - sprite->animEnded = FALSE; - sprite->callback = &sub_811889C; - sprite->data[0x2] = 0x0; } -void sub_8118B30(struct Sprite *sprite) +void sub_8119A90(struct Sprite *sprite) { - sprite->pos2.y = (s32)(((float)sprite->data[0x2]) * 0.05f * ((float)sprite->data[0x2])) - 45; - sprite->data[0x2]++; - if (sprite->data[0x2] > 29 && sprite->pos2.y >= 0) + sprite->invisible ^= 0x1; +} + +void sub_8119AAC(struct Sprite *sprite) +{ + if (sprite->pos1.y > -0x10) { - RDATA->var7D = 0xFF; - RDATA->var03_7 = FALSE; - StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); - sub_81186B8(sprite); - sprite->data[0x4] = 30; - sub_811866C(sprite); - sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 0xF; - sprite->callback = &sub_8118834; - m4aSongNumStartOrChange(0x47); - RDATA->var03_6 = TRUE; + sprite->pos1.y--; + } + else + { + sprite->callback = &SpriteCallbackDummy; + sprite->invisible = TRUE; + sprite->animPaused = TRUE; + m4aSongNumStop(0x5E); + DestroySprite(sprite); + FreeOamMatrix(gSprites[eRoulette->var3C[0x38]].oam.matrixNum); + DestroySprite(&gSprites[eRoulette->var3C[0x38]]); } } -void sub_8118BD8(struct Sprite *sprite) +void sub_8119B24(struct Sprite *sprite) { - if (sprite->data[0x2]++ < 45) + if (!(sprite->data[0x1] < 0x0)) { - sprite->pos2.y--; - if(sprite->data[0x2] == 45) - { - if (gSprites[RDATA->var3C[0x37]].animCmdIndex == 0x1) - sprite->pos2.y++; - } + sprite->data[0x1]--; + sprite->pos1.y--; + if (sprite->data[0x1] == 0x0 && sprite->animCmdIndex == 0x1) + sprite->pos2.y++; } else { - if (sprite->data[0x2] < sprite->data[0x7]) + if (!(sprite->data[0x3] < 0x0)) { - if (gSprites[RDATA->var3C[0x37]].animDelayCounter == 0x0) + sprite->data[0x3]--; + if (sprite->animDelayCounter == 0x0) { - if (gSprites[RDATA->var3C[0x37]].animCmdIndex == 0x1) + if (sprite->animCmdIndex == 0x1) sprite->pos2.y++; else sprite->pos2.y--; @@ -3585,145 +4555,93 @@ void sub_8118BD8(struct Sprite *sprite) } else { - sprite->animPaused = FALSE; - sprite->animNum = 0x1; - sprite->animBeginning = TRUE; - sprite->animEnded = FALSE; - sprite->data[0x2] = 0x0; - sprite->callback = &sub_8118B30; - m4aSongNumStart(0x3D); + m4aSongNumStart(0x2B); + StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x4); + sprite->callback = &sub_8119AAC; + gSprites[sprite->data[0x6]].affineAnimPaused = FALSE; } } } -void sub_8118CAC(struct Sprite *sprite) +void sub_8119BCC(struct Sprite *sprite) { - sub_8118724(sprite); - switch(sprite->data[0x3]) + s8 t[0x2]; //sign + s8 z[0x8][0x2]; + memcpy(t, &gUnknown_083FA64A, 0x2); + memcpy(z, &gUnknown_083FA64C, 0x10); + if (sprite->data[0x1]-- > 0x7) { - case 90: - if (sprite->data[0x0] != 0x1) - { - sprite->callback = &sub_8118BD8; - sprite->data[0x2] = 0x0; - } - break; - case 270: - if (sprite->data[0x0] != 0x0) + sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2; + if (IsSEPlaying()) { - sprite->callback = &sub_8118BD8; - sprite->data[0x2] = 0x0; + s8 u = -((0x74 - sprite->pos1.x) / 0x2); + m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF,u); + m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, u); } - break; - } -} - -void sub_8118CEC(struct Sprite *sprite) -{ - sub_8118724(sprite); - switch(RDATA->var03_0) - { - default: - case 0x0: - sub_8119224(sprite); - sprite->callback = &sub_81189A8; - break; - case 0x1: - sub_81193D4(sprite); - sprite->callback = &sub_8118CAC; - break; } -} - -void sub_8118D2C(struct Sprite *sprite) -{ - sub_8118724(sprite); - if (sprite->data[0x2]-- == 0x10) - RDATA->var98 *= -1.0f; - if (sprite->data[0x2] == 0x0) + else { - if (!sprite->data[0x0]) + if (!(sprite->data[0x1] < 0x0)) { - RDATA->var7D = 0xFF; - RDATA->var03_7 = 0x0; - StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); - sub_81186B8(sprite); - sprite->data[0x4] = 30; - sub_811866C(sprite); - sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; - sprite->callback = &sub_8118834; - m4aSongNumStartOrChange(0x47); + sprite->pos1.x += t[eRoulette->var38->data[0x0]] * z[0x7 - sprite->data[0x1]][0x0]; + sprite->pos1.y += z[0x7 - sprite->data[0x1]][0x1]; } else { - sprite->animPaused = TRUE; - m4aSongNumStart(0x38); - sub_811952C(sprite); + m4aSongNumStartOrChange(0x5E); + if(eRoulette->var38->data[0x0] == 0x0) + PlayCry1(0x130, 0x3F); + else + PlayCry1(0x130, -0x3F); + StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x2); + sprite->data[0x1] = 45; + sprite->callback = &sub_8119B24; } } } -void sub_8118DE4(struct Sprite *sprite) +void sub_8119D08(struct Sprite *sprite) { - sub_8118724(sprite); - sprite->data[0x2] = 0x0; - sub_81186B8(sprite); - if (!(gUnknown_083F8D90[RDATA->var7E].var04 & RDATA->var08)) + s8 t[0x2]; //sign + memcpy(t, &gUnknown_083FA64A, 0x2); + if (!(sprite->data[0x1]-- < 0x0)) { - RDATA->var7D = 0xFF; - RDATA->var03_7 = 0x0; - StartSpriteAnim(sprite, sprite->animCmdIndex + 0x3); - sub_81186B8(sprite); - sprite->data[0x4] = 30; - sub_811866C(sprite); - sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15; - sprite->callback = &sub_8118834; - m4aSongNumStartOrChange(0x47); + sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2; + gSprites[sprite->data[0x6]].invisible ^= 0x1; } else { - u8 t; - u32 z; - m4aSongNumStart(0x38); - if ((z = (Random() & 0x1))) + sprite->callback = &sub_8119A90; + } +} + +void sub_8119D80(struct Sprite *sprite) +{ + if (eRoulette->var38->data[0x0] == 0x0) + { + if (eRoulette->var38->data[0x3] == gUnknown_083F8DF4[eRoulette->var04_0].var12 + 90) { - RDATA->var8C = 0.0f; - t = (RDATA->var7E + 0x1) % 0xC; - RDATA->var7F = t; + gSprites[sprite->data[0x6]].data[0x1] = 0x34; + gSprites[sprite->data[0x4]].data[0x1] = 0x34; } else { - RDATA->var8C = gUnknown_083F8DF4[RDATA->var04_0].var1C * 2; - t = (RDATA->var7E + 0xB) % 0xC; - RDATA->var7F = t; + return; } - if (gUnknown_083F8D90[t].var04 & RDATA->var08) + } + else + { + if (eRoulette->var38->data[0x3] == gUnknown_083F8DF4[eRoulette->var04_0].var14 + 270) { - sprite->data[0x0] = 0x1; - sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var02; + gSprites[sprite->data[0x6]].data[0x1] = 0x2E; + gSprites[sprite->data[0x4]].data[0x1] = 0x2E; } else { - sprite->data[0x0] = gUnknown_083F8D90[t].var04 & RDATA->var08; - if (RDATA->var04_0) - { - sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var01; - } - else - { - sprite->data[0x2] = gUnknown_083F8DF4[RDATA->var04_0].var02; - if (z) - { - RDATA->var8C = 1.5f; - } - else - { - RDATA->var8C = -1.5f; - } - } + return; } - RDATA->var98 = 0.085000000894069671630859375f; - sprite->callback = &sub_8118D2C; - sprite->data[0x1] = 0x5; } + gSprites[sprite->data[0x6]].callback = &sub_8119D08; + gSprites[sprite->data[0x4]].callback = &sub_8119BCC; + m4aSongNumStart(0x2B); } diff --git a/src/roulette_util.c b/src/roulette_util.c index bb47ed540..53585714e 100644 --- a/src/roulette_util.c +++ b/src/roulette_util.c @@ -4,378 +4,383 @@ static u8 sub_81249E4(struct UnkStruct3 *); static u8 sub_8124BEC(struct UnkStruct3 *); +u8 unref_sub_81249B0(struct UnkStruct0 *, u8); extern u16 gPlttBufferFaded[]; extern u16 gPlttBufferUnfaded[]; void sub_8124918(struct UnkStruct0 *r0) { - r0->val0 = 0; - r0->val2 = 0; - memset((&r0->val3), 0, 0xC0); + r0->var00 = 0; + r0->var02 = 0; + memset((&r0->var04), 0, 0xC0); } u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2) { - if (!(r1 < 0x10) || (r0->val3[r1].field1)) - return 0xFF; + if (!(r1 < 0x10) || (r0->var04[r1].var00_7)) + return 0xFF; - r0->val3[r1].val4.val0 = r2->val0; - r0->val3[r1].val4.val1 = r2->val1; - r0->val3[r1].val4.val2 = r2->val2; - r0->val3[r1].val4.val3 = r2->val3; - r0->val3[r1].val4.val4 = r2->val4; - r0->val3[r1].val4.field0 = r2->field0; - r0->val3[r1].val4.field1 = r2->field1; - r0->val3[r1].val4.field2 = r2->field2; + r0->var04[r1].var04.var00 = r2->var00; + r0->var04[r1].var04.var02 = r2->var02; + r0->var04[r1].var04.var04 = r2->var04; + r0->var04[r1].var04.var05 = r2->var05; + r0->var04[r1].var04.var06 = r2->var06; + r0->var04[r1].var04.var07_0 = r2->var07_0; + r0->var04[r1].var04.var07_5 = r2->var07_5; + r0->var04[r1].var04.var07_7 = r2->var07_7; - //Why not r0->val3[r1].val4 = *r2; ? - r0->val3[r1].field0 = 0x0; - r0->val3[r1].field1 = 0x1; + r0->var04[r1].var00_0 = 0x0; + r0->var04[r1].var00_7 = 0x1; - r0->val3[r1].val2 = 0x0; - r0->val3[r1].val1 = 0x0; - if (r0->val3[r1].val4.field2 < 0) - r0->val3[r1].val3 = 0xFF; - else - r0->val3[r1].val3 = 0x1; - return r1; + r0->var04[r1].var02 = 0x0; + r0->var04[r1].var01 = 0x0; + if (r0->var04[r1].var04.var07_7 < 0) + r0->var04[r1].var03 = 0xFF; + else + r0->var04[r1].var03 = 0x1; + return r1; } #ifdef NONMATCHING u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1) { - if (!(r1 < 0x10) || (r0->val3[r1].field1)) - return 0xFF; - r0->val3[r1] = (struct UnkStruct3){0}; - return r1; + if (r1 < 0x10) + { + if (r0->var04[r1].var00_7) + { + r0->var04[r1] = (struct UnkStruct3){0}; + return r1; + } + } + return 0xFF; } #else __attribute__((naked)) u8 unref_sub_81249B0(struct UnkStruct0 *r0 , u8 r1) { - asm(".syntax unified\n\ - push {r4,lr}\n\ - adds r2, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r4, r1, 0\n\ - cmp r4, 0xF\n\ - bhi _081249DC\n\ - lsls r0, r4, 1\n\ - adds r0, r4\n\ - lsls r0, 2\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1, 0x4]\n\ - lsrs r0, 7\n\ - cmp r0, 0\n\ - beq _081249DC\n\ - adds r0, r1, 0x4\n\ - movs r1, 0\n\ - movs r2, 0xC\n\ - bl memset\n\ - adds r0, r4, 0\n\ - b _081249DE\n\ - _081249DC:\n\ - movs r0, 0xFF\n\ - _081249DE:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); + asm(".syntax unified\n\ + push {r4,lr}\n\ + adds r2, r0, 0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r4, r1, 0\n\ + cmp r4, 0xF\n\ + bhi _081249DC\n\ + lsls r0, r4, 1\n\ + adds r0, r4\n\ + lsls r0, 2\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1, 0x4]\n\ + lsrs r0, 7\n\ + cmp r0, 0\n\ + beq _081249DC\n\ + adds r0, r1, 0x4\n\ + movs r1, 0\n\ + movs r2, 0xC\n\ + bl memset\n\ + adds r0, r4, 0\n\ + b _081249DE\n\ + _081249DC:\n\ + movs r0, 0xFF\n\ + _081249DE:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); } #endif u8 sub_81249E4(struct UnkStruct3 *r0) { - u8 i; - u8 returnval; - for (i = 0; i < r0->val4.val2; i++) - { - u32 offset = r0->val4.val1 + i; - struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; - struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset]; - switch(r0->field0) - { - case 0x1: - if ((u32)(faded->r + r0->val3) < 0x20) - faded->r += r0->val3; - if ((u32)(faded->g + r0->val3) < 0x20) - faded->g += r0->val3; - if ((u32)(faded->b + r0->val3) < 0x20) - faded->b += r0->val3; - break; - case 0x2: - if (r0->val3 < 0) - { - if (!(faded->r + r0->val3 < unfaded->r)) - faded->r += r0->val3; - if (!(faded->g + r0->val3 < unfaded->g)) - faded->g += r0->val3; - if (!(faded->b + r0->val3 < unfaded->b)) - faded->b += r0->val3; - } - else - { - if (!(faded->r + r0->val3 > unfaded->r)) - faded->r += r0->val3; - if (!(faded->g + r0->val3 > unfaded->g)) - faded->g += r0->val3; - if (!(faded->b + r0->val3 > unfaded->b)) - faded->b += r0->val3; - } - break; - } - } - if (((u32)r0->val2++) != r0->val4.field0) - { - returnval = 0x0; - } - else - { - r0->val2 = 0x0; - r0->val3 = r0->val3 * -1; - if (r0->field0 == 0x1) - r0->field0++; - else - r0->field0--; - returnval = 0x1; - } - return returnval; + u8 i; + u8 returnval; + for (i = 0; i < r0->var04.var04; i++) + { + u32 offset = r0->var04.var02 + i; + struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; + struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset]; + switch(r0->var00_0) + { + case 0x1: + if ((u32)(faded->r + r0->var03) < 0x20) + faded->r += r0->var03; + if ((u32)(faded->g + r0->var03) < 0x20) + faded->g += r0->var03; + if ((u32)(faded->b + r0->var03) < 0x20) + faded->b += r0->var03; + break; + case 0x2: + if (r0->var03 < 0) + { + if (!(faded->r + r0->var03 < unfaded->r)) + faded->r += r0->var03; + if (!(faded->g + r0->var03 < unfaded->g)) + faded->g += r0->var03; + if (!(faded->b + r0->var03 < unfaded->b)) + faded->b += r0->var03; + } + else + { + if (!(faded->r + r0->var03 > unfaded->r)) + faded->r += r0->var03; + if (!(faded->g + r0->var03 > unfaded->g)) + faded->g += r0->var03; + if (!(faded->b + r0->var03 > unfaded->b)) + faded->b += r0->var03; + } + break; + } + } + if (((u32)r0->var02++) != r0->var04.var07_0) + { + returnval = 0x0; + } + else + { + r0->var02 = 0x0; + r0->var03 = r0->var03 * -1; + if (r0->var00_0 == 0x1) + r0->var00_0++; + else + r0->var00_0--; + returnval = 0x1; + } + return returnval; } u8 sub_8124BEC(struct UnkStruct3 *r0) { - u8 rg2 = 0; - switch (r0->field0) - { - case 0x1: - for (rg2 = 0; rg2 < r0->val4.val2; rg2++) - gPlttBufferFaded[r0->val4.val1 + rg2] = r0->val4.val0; - r0->field0++; - break; - case 0x2: - for (rg2 = 0; rg2 < r0->val4.val2; rg2++) - gPlttBufferFaded[r0->val4.val1 + rg2] = gPlttBufferUnfaded[r0->val4.val1 + rg2]; - r0->field0--; - break; - } - return 0x1; + u8 rg2 = 0; + switch (r0->var00_0) + { + case 0x1: + for (rg2 = 0; rg2 < r0->var04.var04; rg2++) + gPlttBufferFaded[r0->var04.var02 + rg2] = r0->var04.var00; + r0->var00_0++; + break; + case 0x2: + for (rg2 = 0; rg2 < r0->var04.var04; rg2++) + gPlttBufferFaded[r0->var04.var02 + rg2] = gPlttBufferUnfaded[r0->var04.var02 + rg2]; + r0->var00_0--; + break; + } + return 0x1; } void task_tutorial_controls_fadein(struct UnkStruct0 *r0) { - u8 i = 0; - if (r0->val0) - { - for (i = 0; i < 0x10; i++) - { - if ((r0->val2 >> i) & 0x1) - { - if (((u8)--r0->val3[i].val1) == 0xFF) // if underflow ? - { - if (r0->val3[i].val4.val0 & (0x80 << 8)) // PlttData->unused_15 ? - sub_81249E4(&r0->val3[i]); - else - sub_8124BEC(&r0->val3[i]); - r0->val3[i].val1 = r0->val3[i].val4.val3; - } - } - } - } + u8 i = 0; + if (r0->var00) + { + for (i = 0; i < 0x10; i++) + { + if ((r0->var02 >> i) & 0x1) + { + if (((u8)--r0->var04[i].var01) == 0xFF) // if underflow ? + { + if (r0->var04[i].var04.var00 & (0x80 << 8)) // PlttData->unused_15 ? + sub_81249E4(&r0->var04[i]); + else + sub_8124BEC(&r0->var04[i]); + r0->var04[i].var01 = r0->var04[i].var04.var05; + } + } + } + } } void sub_8124CE8(struct UnkStruct0 *r0, u16 r1) { - u8 i = 0; - r0->val0++; - for (i = 0; i < 0x10; i++) - { - if ((r1 >> i) & 0x1) - { - if (r0->val3[i].field1) - { - r0->val2 |= 0x1 << i; - r0->val3[i].field0 = 0x1; - } - } - } + u8 i = 0; + r0->var00++; + for (i = 0; i < 0x10; i++) + { + if ((r1 >> i) & 0x1) + { + if (r0->var04[i].var00_7) + { + r0->var02 |= 0x1 << i; + r0->var04[i].var00_0 = 0x1; + } + } + } } void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) { - u8 i; - for (i = 0; i < 0x10; i++) - { - if ((r0->val2 >> i) & 0x1) - { - if (r0->val3[i].field1) - { - if ((r1 >> i) & 0x1) - { - u32 offset = r0->val3[i].val4.val1; - u16 *faded = &gPlttBufferFaded[offset]; - u16 *unfaded = &gPlttBufferUnfaded[offset]; - memcpy(faded, unfaded, r0->val3[i].val4.val2 * 2); - r0->val3[i].field0 = 0x0; - r0->val3[i].val2 = 0x0; - r0->val3[i].val1 = 0x0; - if (r0->val3[i].val4.field2 < 0) - r0->val3[i].val3 = 0xFF; - else - r0->val3[i].val3 = 0x1; - } - } - } - } - if (r1 == 0xFFFF) - { - r0->val0 = 0x0; - r0->val2 = 0x0; - } - else - { - r0->val2 = r0->val2 & ~r1; - } + u8 i; + for (i = 0; i < 0x10; i++) + { + if ((r0->var02 >> i) & 0x1) + { + if (r0->var04[i].var00_7) + { + if ((r1 >> i) & 0x1) + { + u32 offset = r0->var04[i].var04.var02; + u16 *faded = &gPlttBufferFaded[offset]; + u16 *unfaded = &gPlttBufferUnfaded[offset]; + memcpy(faded, unfaded, r0->var04[i].var04.var04 * 2); + r0->var04[i].var00_0 = 0x0; + r0->var04[i].var02 = 0x0; + r0->var04[i].var01 = 0x0; + if (r0->var04[i].var04.var07_7 < 0) + r0->var04[i].var03 = 0xFF; + else + r0->var04[i].var03 = 0x1; + } + } + } + } + if (r1 == 0xFFFF) + { + r0->var00 = 0x0; + r0->var02 = 0x0; + } + else + { + r0->var02 = r0->var02 & ~r1; + } } #ifdef NONMATCHING void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5) { - u16 *rg0; - u8 c; - u8 i = 0; - u32 offset= r3 * 0x20 + r2; - rg0 = &r0[offset]; - for (i = 0; i < r5; i++) - { - rg0 = &rg0[i * 0x20 ]; - c = 0; - for (c = 0; c < r4; c++) - { - *rg0++ = r1; - } - } + u16 *rg0; + u8 c; + u8 i = 0; + u32 offset= r3 * 0x20 + r2; + rg0 = &r0[offset]; + for (i = 0; i < r5; i++) + { + rg0 = &rg0[i * 0x20 ]; + c = 0; + for (c = 0; c < r4; c++) + { + *rg0++ = r1; + } + } } #else __attribute__((naked)) void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r6, r0, 0\n\ - ldr r0, [sp, 0x14]\n\ - ldr r4, [sp, 0x18]\n\ - lsls r1, 16\n\ - lsrs r7, r1, 16\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - lsls r3, 24\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r1, 0\n\ - lsrs r3, 19\n\ - adds r3, r2\n\ - lsls r3, 1\n\ - adds r6, r3\n\ - cmp r1, r4\n\ - bcs _08124E26\n\ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r6, r0, 0\n\ + ldr r0, [sp, 0x14]\n\ + ldr r4, [sp, 0x18]\n\ + lsls r1, 16\n\ + lsrs r7, r1, 16\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + lsls r3, 24\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r1, 0\n\ + lsrs r3, 19\n\ + adds r3, r2\n\ + lsls r3, 1\n\ + adds r6, r3\n\ + cmp r1, r4\n\ + bcs _08124E26\n\ _08124E04:\n\ - lsls r0, r1, 6\n\ - adds r2, r6, r0\n\ - movs r0, 0\n\ - adds r3, r1, 0x1\n\ - cmp r0, r5\n\ - bcs _08124E1E\n\ + lsls r0, r1, 6\n\ + adds r2, r6, r0\n\ + movs r0, 0\n\ + adds r3, r1, 0x1\n\ + cmp r0, r5\n\ + bcs _08124E1E\n\ _08124E10:\n\ - strh r7, [r2]\n\ - adds r2, 0x2\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, r5\n\ - bcc _08124E10\n\ + strh r7, [r2]\n\ + adds r2, 0x2\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, r5\n\ + bcc _08124E10\n\ _08124E1E:\n\ - lsls r0, r3, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, r4\n\ - bcc _08124E04\n\ + lsls r0, r3, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, r4\n\ + bcc _08124E04\n\ _08124E26:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); } #endif #ifdef NONMATCHING void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5) { - u16 *rg0; - u8 c; - u8 i = 0; - u32 offset= r3 * 0x20 + r2; - //rg0 = &r0[offset]; - for (i = 0; i < r5; i++) - { - rg0 = &r0[offset + i * 0x20 ]; - c = 0; - for (c = 0; c < r4; c++) - { - *(rg0++) = *(r1++); - } - } + u16 *rg0; + u8 c; + u8 i = 0; + u32 offset= r3 * 0x20 + r2; + //rg0 = &r0[offset]; + for (i = 0; i < r5; i++) + { + rg0 = &r0[offset + i * 0x20 ]; + c = 0; + for (c = 0; c < r4; c++) + { + *(rg0++) = *(r1++); + } + } } #else __attribute__((naked)) void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r7, r0, 0\n\ - ldr r0, [sp, 0x14]\n\ - ldr r4, [sp, 0x18]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - lsls r3, 24\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r4, 24\n\ - lsrs r6, r4, 24\n\ - movs r4, 0\n\ - lsrs r3, 19\n\ - adds r3, r2\n\ - lsls r3, 1\n\ - adds r7, r3\n\ - cmp r4, r6\n\ - bcs _08124E76\n\ - _08124E50:\n\ - lsls r0, r4, 6\n\ - adds r2, r7, r0\n\ - movs r3, 0\n\ - adds r4, 0x1\n\ - cmp r3, r5\n\ - bcs _08124E6E\n\ - _08124E5C:\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - adds r1, 0x2\n\ - adds r2, 0x2\n\ - adds r0, r3, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - cmp r3, r5\n\ - bcc _08124E5C\n\ - _08124E6E:\n\ - lsls r0, r4, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, r6\n\ - bcc _08124E50\n\ - _08124E76:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r7, r0, 0\n\ + ldr r0, [sp, 0x14]\n\ + ldr r4, [sp, 0x18]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + lsls r3, 24\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r4, 24\n\ + lsrs r6, r4, 24\n\ + movs r4, 0\n\ + lsrs r3, 19\n\ + adds r3, r2\n\ + lsls r3, 1\n\ + adds r7, r3\n\ + cmp r4, r6\n\ + bcs _08124E76\n\ + _08124E50:\n\ + lsls r0, r4, 6\n\ + adds r2, r7, r0\n\ + movs r3, 0\n\ + adds r4, 0x1\n\ + cmp r3, r5\n\ + bcs _08124E6E\n\ + _08124E5C:\n\ + ldrh r0, [r1]\n\ + strh r0, [r2]\n\ + adds r1, 0x2\n\ + adds r2, 0x2\n\ + adds r0, r3, 0x1\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, r5\n\ + bcc _08124E5C\n\ + _08124E6E:\n\ + lsls r0, r4, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, r6\n\ + bcc _08124E50\n\ + _08124E76:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); } #endif -- cgit v1.2.3 From bc5fdb16a8d374972a4dc93e61eacaa6061e3f61 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 19:38:29 -0500 Subject: get sub_812446C matching --- src/scene/cable_car.c | 199 ++++++++++++-------------------------------------- 1 file changed, 47 insertions(+), 152 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d65022ae8..c735f8ace 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -44,7 +44,11 @@ struct CableCarEwramStruct1 { u8 filler_0000e[6]; u8 unk_0014; u8 unk_0015; - u8 filler_0016[0xe6]; + u8 filler_0016[5]; + u8 unk_001b; + u8 filler_001c[6]; + u16 unk_0022[9][12]; + u8 filler_00fa[2]; u16 unk_00fc[0x400]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -206,7 +210,7 @@ void sub_8123244(void) DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); gUnknown_02039274 = eCableCar1; DmaFill16Large(3, 0, eCableCar1, 0x10FC, 0x1000); - gMain.state ++; + gMain.state++; break; case 1: ResetSpriteData(); @@ -214,17 +218,17 @@ void sub_8123244(void) FreeAllSpritePalettes(); ResetPaletteFade(); StartWeather(); - for (i = 0; i < 20; i ++) + for (i = 0; i < 20; i++) { gWeatherPtr->sprites.s2.ashSprites[i] = NULL; } InitMapMusic(); ResetMapMusic(); gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0; - gMain.state ++; + gMain.state++; break; case 2: - for (i = 0; i < 3; i ++) + for (i = 0; i < 3; i++) { LoadCompressedObjectPic(&gUnknown_08401CF8[i]); } @@ -235,28 +239,28 @@ void sub_8123244(void) LZDecompressWram(gCableCarPylonStemTilemap, eCableCar2->pylonStemTilemap); LoadPalette(gCableCarBG_Pal, 0, 0x80); LZ77UnCompVram(gCableCarBG_Gfx, (u16 *)BG_VRAM); - gMain.state ++; + gMain.state++; break; case 3: sub_8124118(); RunTasks(); - gMain.state ++; + gMain.state++; break; case 4: if (gUnknown_02039274->unk_0002 == 7) { - gMain.state ++; + gMain.state++; } else if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL) { - for (i = 0; i < 20; i ++) + for (i = 0; i < 20; i++) { if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) { gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0; } } - gMain.state ++; + gMain.state++; } break; case 5: @@ -264,7 +268,7 @@ void sub_8123244(void) sub_8124F08((u16 *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); - gMain.state ++; + gMain.state++; break; case 6: sub_81248AC(gSpecialVar_0x8004); @@ -276,13 +280,13 @@ void sub_8123244(void) sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); - gMain.state ++; + gMain.state++; break; case 7: BeginNormalPaletteFade(-1, 3, 16, 0, 0); FadeInNewBGM(BGM_ROPEWAY, 1); sub_8123FBC(1); - gMain.state ++; + gMain.state++; break; case 8: imebak = REG_IME; @@ -321,7 +325,7 @@ void sub_8123740(void) sub_8123FBC(0); gSpriteCoordOffsetX = 0; sub_807C9B4(0); - for (; i < 20; i ++) + for (; i < 20; i++) { gWeatherPtr->sprites.s2.ashSprites[i] = NULL; } @@ -343,7 +347,7 @@ void sub_8123878(u8 taskId) u8 i; i = 0; - gUnknown_02039274->unk_0006 ++; + gUnknown_02039274->unk_0006++; switch (gUnknown_02039274->unk_0001) { case 0: @@ -359,7 +363,7 @@ void sub_8123878(u8 taskId) case 7: if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL && gWeatherPtr->sprites.s2.ashSprites[0]->oam.priority != 0) { - for (; i < 20; i ++) + for (; i < 20; i++) { if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) { @@ -376,7 +380,7 @@ void sub_8123878(u8 taskId) } else if (gUnknown_02039274->unk_0006 >= gUnknown_02039274->unk_0004 + 8) { - for (; i < 20; i ++) + for (; i < 20; i++) { if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) { @@ -414,15 +418,15 @@ void sub_81239E4(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { - gUnknown_02039274->unk_0014 --; + gUnknown_02039274->unk_0014--; if ((gUnknown_02039274->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015 --; + gUnknown_02039274->unk_0015--; } if ((gUnknown_02039274->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c --; - gUnknown_02039274->unk_000d --; + gUnknown_02039274->unk_000c--; + gUnknown_02039274->unk_000d--; } switch (gUnknown_02039274->unk_0014) { @@ -450,15 +454,15 @@ void sub_8123AF8(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { - gUnknown_02039274->unk_0014 ++; + gUnknown_02039274->unk_0014++; if ((gUnknown_02039274->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015 ++; + gUnknown_02039274->unk_0015++; } if ((gUnknown_02039274->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c ++; - gUnknown_02039274->unk_000d ++; + gUnknown_02039274->unk_000c++; + gUnknown_02039274->unk_000d++; } switch (gUnknown_02039274->unk_0014) { @@ -572,24 +576,24 @@ void sub_8123EB8(struct Sprite *sprite) sprite->pos1.x += 2 * sprite->centerToCornerVecX; sprite->pos1.y += 16 + sprite->centerToCornerVecY; } - if (++ sprite->data[0] >= sprite->data[2]) + if (++sprite->data[0] >= sprite->data[2]) { switch (sprite->data[1]) { case 0: - sprite->pos1.x ++; + sprite->pos1.x++; if ((sprite->data[0] % 4) == 0) { - sprite->pos1.y ++; + sprite->pos1.y++; } break; case 1: if ((sprite->data[0] % 2) != 0) { - sprite->pos1.x ++; + sprite->pos1.x++; if ((sprite->pos1.x % 4) == 0) { - sprite->pos1.y ++; + sprite->pos1.y++; } } break; @@ -607,24 +611,24 @@ void sub_8123F44(struct Sprite *sprite) { sprite->pos1.y += 16 + sprite->centerToCornerVecY; } - if (++ sprite->data[0] >= sprite->data[2]) + if (++sprite->data[0] >= sprite->data[2]) { switch (sprite->data[1]) { case 0: - sprite->pos1.x --; + sprite->pos1.x--; if ((sprite->data[0] % 4) == 0) { - sprite->pos1.y --; + sprite->pos1.y--; } break; case 1: if ((sprite->data[0] % 2) != 0) { - sprite->pos1.x --; + sprite->pos1.x--; if ((sprite->pos1.x % 4) == 0) { - sprite->pos1.y --; + sprite->pos1.y--; } } break; @@ -788,7 +792,7 @@ void sub_8124118(void) sub_807C9B4(7); break; } - for (i = 0; i < 9; i ++) + for (i = 0; i < 9; i++) { spriteId = CreateSprite(&gSpriteTemplate_8401D40[2], 16 * i + 0x60, 8 * i - 8, 0x68); gSprites[spriteId].pos2.x = 8; @@ -835,8 +839,6 @@ void sub_8124118(void) } } -#ifdef NONMATCHING -// this is nowhere near correct void sub_812446C(void) { u8 i; @@ -844,122 +846,15 @@ void sub_812446C(void) u8 k; u8 offset; - for (i = 0, k = 0, offset = 36 * (gUnknown_02039274->unk_001b + 2); i < 3; i ++) + for (i = 0, k = 0, offset = 0x24 * (gUnknown_02039274->unk_001b + 2); i < 3; i++) { - for (j = 0; j < 12; j ++) + for (j = 0; j < 12; j++) { - gUnknown_02039274->unk_0022[i][k] = eCableCar2->mtChimneyTilemap[0][offset + k]; - gUnknown_02039274->unk_0022[i + 3][k] = eCableCar2->mtChimneyTilemap[0][k]; - gUnknown_02039274->unk_0022[i + 6][k] = eCableCar2->mtChimneyTilemap[2][k]; - k ++; + gUnknown_02039274->unk_0022[i][j] = *(eCableCar2->mtChimneyTilemap + (offset++)); + gUnknown_02039274->unk_0022[i + 3][j] = eCableCar2->mtChimneyTilemap[k]; + gUnknown_02039274->unk_0022[i + 6][j] = (eCableCar2->mtChimneyTilemap + 0x24)[k]; + k++; } } gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; -} -#else -__attribute__((naked)) void sub_812446C(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tmovs r3, 0\n" - "\tmov r9, r3\n" - "\tldr r2, _08124530 @ =gUnknown_02039274\n" - "\tldr r0, [r2]\n" - "\tldrb r1, [r0, 0x1B]\n" - "\tadds r1, 0x2\n" - "\tlsls r0, r1, 3\n" - "\tadds r0, r1\n" - "\tlsls r0, 26\n" - "\tlsrs r0, 24\n" - "\tmov r12, r0\n" - "_0812448E:\n" - "\tmovs r6, 0\n" - "\tlsls r0, r3, 1\n" - "\tadds r1, r3, 0x3\n" - "\tadds r2, r3, 0x6\n" - "\tadds r4, r3, 0x1\n" - "\tstr r4, [sp]\n" - "\tadds r0, r3\n" - "\tlsls r0, 3\n" - "\tmov r10, r0\n" - "\tlsls r0, r1, 1\n" - "\tadds r0, r1\n" - "\tlsls r0, 3\n" - "\tmov r8, r0\n" - "\tlsls r0, r2, 1\n" - "\tadds r0, r2\n" - "\tlsls r0, 3\n" - "\tstr r0, [sp, 0x4]\n" - "_081244B0:\n" - "\tldr r7, _08124530 @ =gUnknown_02039274\n" - "\tldr r5, [r7]\n" - "\tlsls r3, r6, 1\n" - "\tmov r0, r10\n" - "\tadds r2, r3, r0\n" - "\tadds r4, r5, 0\n" - "\tadds r4, 0x22\n" - "\tadds r2, r4, r2\n" - "\tmov r1, r12\n" - "\tadds r0, r1, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r12, r0\n" - "\tlsls r1, 1\n" - "\tldr r7, _08124534 @ =0x02019000\n" - "\tadds r1, r7\n" - "\tldrh r0, [r1]\n" - "\tstrh r0, [r2]\n" - "\tmov r0, r8\n" - "\tadds r1, r3, r0\n" - "\tadds r1, r4, r1\n" - "\tmov r7, r9\n" - "\tlsls r2, r7, 1\n" - "\tldr r7, _08124534 @ =0x02019000\n" - "\tadds r0, r2, r7\n" - "\tldrh r0, [r0]\n" - "\tstrh r0, [r1]\n" - "\tldr r0, [sp, 0x4]\n" - "\tadds r3, r0\n" - "\tadds r4, r3\n" - "\tldr r1, _08124538 @ =0x02019048\n" - "\tadds r2, r1\n" - "\tldrh r0, [r2]\n" - "\tstrh r0, [r4]\n" - "\tmov r0, r9\n" - "\tadds r0, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r9, r0\n" - "\tadds r0, r6, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tcmp r6, 0xB\n" - "\tbls _081244B0\n" - "\tldr r4, [sp]\n" - "\tlsls r0, r4, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0x2\n" - "\tbls _0812448E\n" - "\tldrb r0, [r5, 0x1B]\n" - "\tadds r0, 0x1\n" - "\tmovs r1, 0x3\n" - "\tbl __modsi3\n" - "\tstrb r0, [r5, 0x1B]\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_08124530: .4byte gUnknown_02039274\n" - "_08124534: .4byte 0x02019000\n" - "_08124538: .4byte 0x02019048"); -} -#endif +} \ No newline at end of file -- cgit v1.2.3 From 81aec4e8dfe9171f7482ff3a38148dbb0e92d407 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 19:51:31 -0500 Subject: through sub_8124598 --- src/scene/cable_car.c | 54 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index c735f8ace..3582ce4fd 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -46,7 +46,11 @@ struct CableCarEwramStruct1 { u8 unk_0015; u8 filler_0016[5]; u8 unk_001b; - u8 filler_001c[6]; + u8 unk_001c; + u8 unk_001d; + u8 unk_001e; + u8 unk_001f; + u8 unk_0020; u16 unk_0022[9][12]; u8 filler_00fa[2]; u16 unk_00fc[0x400]; @@ -74,20 +78,22 @@ EWRAM_DATA u32 filler_02039280 = 0; // Static ROM declarations void sub_8123244(void); -void sub_8124118(void); -void sub_81248AC(u8); -void sub_8123FBC(u8); -void sub_8123C40(void); void sub_8123724(void); void sub_8123878(u8 taskId); void sub_81239E4(u8 taskId); void sub_8123AF8(u8 taskId); -void sub_812453C(void); -void sub_8124598(void); -void sub_8123CB8(struct Sprite *sprite); +void sub_8123C40(void); void nullsub_76(struct Sprite *sprite); +void sub_8123CB8(struct Sprite *sprite); void sub_8123EB8(struct Sprite *sprite); void sub_8123F44(struct Sprite *sprite); +void sub_8123FBC(u8); +void sub_8124118(void); +void sub_812453C(void); +void sub_8124598(void); +void sub_81245F4(void); +void sub_812476C(void); +void sub_81248AC(u8); // .rodata @@ -857,4 +863,36 @@ void sub_812446C(void) } } gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; +} + +void sub_812453C(void) +{ + gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; + gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f - gUnknown_02039274->unk_001d; + gUnknown_02039274->unk_0009 = gUnknown_02039274->unk_0020 - gUnknown_02039274->unk_001e; + gUnknown_02039274->unk_001d++; + if ((gUnknown_02039274->unk_001d % 4) == 0) + { + gUnknown_02039274->unk_001e++; + } + if (gUnknown_02039274->unk_001d > 16) + { + sub_81245F4(); + } +} + +void sub_8124598(void) +{ + gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; + gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f + gUnknown_02039274->unk_001d; + gUnknown_02039274->unk_0009 = gUnknown_02039274->unk_0020 + gUnknown_02039274->unk_001e; + gUnknown_02039274->unk_001d++; + if ((gUnknown_02039274->unk_001d % 4) == 0) + { + gUnknown_02039274->unk_001e++; + } + if (gUnknown_02039274->unk_001d > 16) + { + sub_812476C(); + } } \ No newline at end of file -- cgit v1.2.3 From 319eb710ed84f816b7c8194b35c53a8d32e916c5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:13:50 -0500 Subject: through sub_81245F4 --- src/scene/cable_car.c | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 3582ce4fd..3d93010a2 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -44,7 +44,11 @@ struct CableCarEwramStruct1 { u8 filler_0000e[6]; u8 unk_0014; u8 unk_0015; - u8 filler_0016[5]; + u8 unk_0016; + u8 unk_0017; + u8 unk_0018; + u8 unk_0019; + u8 unk_001a; u8 unk_001b; u8 unk_001c; u8 unk_001d; @@ -53,7 +57,7 @@ struct CableCarEwramStruct1 { u8 unk_0020; u16 unk_0022[9][12]; u8 filler_00fa[2]; - u16 unk_00fc[0x400]; + u16 unk_00fc[0x20][0x20]; u16 unk_08fc[0x400]; }; // size 0x10FC @@ -895,4 +899,34 @@ void sub_8124598(void) { sub_812476C(); } -} \ No newline at end of file +} + +void sub_81245F4(void) +{ + u8 i = 0; + + gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; + gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; + gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; + gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 30) % 32; + gUnknown_02039274->unk_0018 -= 2; + gUnknown_0203927A = (gUnknown_02039274->unk_001a + 23) % 32; + for (i = 0; i < 9; i++) + { + gUnknown_02039278 = gUnknown_02039274->unk_0019; + gUnknown_02039279 = (gUnknown_0203927A + i) % 32; + gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + gUnknown_02039278 = (gUnknown_02039278 + 1) % 32; + gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + } + gUnknown_02039278 = (gUnknown_02039274->unk_0019 + 30) % 32; + sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); + if (gUnknown_02039274->unk_0018 == 0) + { + gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 29) % 32; + gUnknown_02039274->unk_0018 = 12; + sub_812446C(); + gUnknown_02039278 = (gUnknown_02039274->unk_001a + 1) % 32; + sub_8124E7C(gUnknown_02039274->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); + } +} -- cgit v1.2.3 From 66a7a42a108c2d6c86c80d28397ea243969094cd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 20:23:49 -0600 Subject: decompile sub_80EADC0 - sub_80EB37C --- src/easy_chat.c | 103 ------------------ src/easy_chat_2.c | 313 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 308 insertions(+), 108 deletions(-) (limited to 'src') diff --git a/src/easy_chat.c b/src/easy_chat.c index 338505a4b..88afa8fe3 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -23,109 +23,6 @@ extern u16 gSpecialVar_0x8004; // put this in .bss, damnit! __attribute__((section(".bss"))) u8 gUnknown_03000740 = 0; -/* - -extern const u8 *const gUnknown_083DB694[]; - -u16 sub_80EB2D4(u16 a) -{ - u16 r2; - u16 r1; - const u8 *str; - - if (sub_80EB37C(a) != 0) - return StringLength(gOtherText_ThreeQuestions); - //_080EB2F8 - if (a == 0xFFFF) - return 0; - //_080EB308 - r2 = a >> 9; - r1 = a & 0x1FF; - switch (r2) - { - case 0: - case 0x13: - case 0x14: - case 0x15: - str = gSpeciesNames[r1]; - break; - case 0x12: - str = gMoveNames[r1]; - break; - case 0x15: - str = - } -} -*/ - -#ifdef NONMATCHING -bool8 sub_80EB37C(u16 a) -{ - u16 i; - u16 r2; - u16 r5; - u16 *r4; - - if (a == 0xFFFF) - return FALSE; - - r2 = a >> 9; - r5 = a & 0x1FF; - - if (r2 <= 0x15) - { - /* - switch (r2) - { - case EC_GROUP_MOVE_1: - case EC_GROUP_MOVE_2: - case EC_GROUP_POKEMON: - case EC_GROUP_POKEMON_2: - case EC_GROUP_TRENDY_SAYING: - r4 = gEasyChatGroupWords[r2]; - for (i = 0; i < gEasyChatGroupSizes[r2]; i++) - { - if (r5 == r4[i]) - return FALSE; - } - break; - default: - if (r5 < gEasyChatGroupSizes[a]) - return FALSE; - break; - } - */ - if ((r2 == EC_GROUP_MOVE_1 || r2 == EC_GROUP_MOVE_2) - || (r2 == EC_GROUP_POKEMON || r2 == EC_GROUP_POKEMON_2)) - { - r4 = gEasyChatGroupWords[r2]; - for (i = 0; i < gEasyChatGroupSizes[r2]; i++) - { - if (r5 == r4[i]) - return FALSE; - } - } - else if (r2 == EC_GROUP_TRENDY_SAYING) - { - r4 = gEasyChatGroupWords[r2]; - for (i = 0; i < gEasyChatGroupSizes[r2]; i++) - { - if (r5 == r4[i]) - return FALSE; - } - } - else - { - if (r5 < gEasyChatGroupSizes[a]) - return FALSE; - } - } - return TRUE; -} -#else - -#endif - // returns the end of the destination buffer text u8 *EasyChat_GetWordText(u8 *dst, u16 word) { diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 8fbc54458..5dc4bb1c1 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1,6 +1,7 @@ #include "global.h" #include "constants/easy_chat.h" #include "constants/map_objects.h" +#include "data2.h" #include "decompress.h" #include "easy_chat.h" #include "event_data.h" @@ -8,9 +9,11 @@ #include "graphics.h" #include "menu.h" #include "palette.h" +#include "pokedex.h" #include "sprite.h" #include "string_util.h" #include "strings.h" +#include "strings2.h" #include "trig.h" #include "unknown_task.h" @@ -59,6 +62,8 @@ void sub_80EACBC(void *, u16 *, struct UnknownEasyChatStruct1 *); u8 *sub_80EAD64(u8 *, u8, int); u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(u16); +bool8 sub_80EB37C(u16); +bool8 sub_80EB868(u8); u8 sub_80EB9C8(void); const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); @@ -1075,11 +1080,9 @@ void sub_80E91D4(u8 a) return; } - //_080E9200 if (sub_80E91A4() == 10) MenuDrawTextWindow(3, 14, 26, 19); - //_080E9218 sub_80E9198(a); switch (a) { @@ -2070,10 +2073,13 @@ void sub_80EAD08(void) } extern const u8 *const gEasyChatGroupNames[]; +extern const u8 gEasyChatGroupSizes[]; +extern const u16 gEasyChatWordsByLetter[]; +extern const u16 gEasyChatWordsAlphabetized[]; -u8 *sub_80EAD64(u8 *a, u8 b, int unused) +u8 *sub_80EAD64(u8 *a, u8 group, int unused) { - return StringCopy(a, gEasyChatGroupNames[b]); + return StringCopy(a, gEasyChatGroupNames[group]); } bool8 sub_80EAD7C(u8 group) @@ -2088,7 +2094,304 @@ bool8 sub_80EAD7C(u8 group) return FlagGet(FLAG_SYS_GAME_CLEAR); case EC_GROUP_POKEMON_2: return sub_80EB9C8(); + default: + return TRUE; + } +} + +bool8 sub_80EADC0(u8 group, u16 word) +{ + switch (group) + { + case EC_GROUP_TRENDY_SAYING: + if (gUnknown_083DB694->unk40[2][11 + group] == 0) + return FALSE; + return sub_80EB868(word); + case EC_GROUP_POKEMON: + return GetSetPokedexFlag(SpeciesToNationalPokedexNum(word), 0); + case EC_GROUP_EVENTS: + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + if (gUnknown_083DB694->unk40[2][11 + group] == 0) + return FALSE; + return TRUE; + case EC_GROUP_POKEMON_2: + return sub_80EB9C8(); + default: + return TRUE; + } +} + +u16 sub_80EAE88(u8 group) +{ + switch (group) + { + case 0: + return GetHoennPokedexCount(0); + case 0x14: + return sub_80EB8C0(); + default: + if (sub_80EAD7C(group)) + return gEasyChatGroupSizes[group]; + return FALSE; + } +} + +void sub_80EAECC(void) +{ + u16 i; + u16 r9; + u16 r6; + u16 r5; + bool8 r7; + + for (i = 0; i < 27; i++) + { + u16 word = gEasyChatWordsByLetter[i]; + u16 sp0 = gEasyChatWordsByLetter[i + 1]; + + gUnknown_083DB694->unk4142[i] = 0; + r9 = 0; + r6 = word; + while (r6 < sp0) + { + u16 word = gEasyChatWordsAlphabetized[r6++]; + + if (word > 0xFEFF) + { + r5 = word & 0xFF; + r7 = FALSE; + while (--r5 != 0xFFFF) + { + word = gEasyChatWordsAlphabetized[r6++]; + if (sub_80EADC0(EC_GROUP(word), EC_INDEX(word)) && !r7) + { + gUnknown_083DB694->unkB78[i][r9++] = word; + gUnknown_083DB694->unk4142[i]++; + r7 = TRUE; + } + } + } + else + { + if (sub_80EADC0(EC_GROUP(word), EC_INDEX(word))) + { + gUnknown_083DB694->unkB78[i][r9++] = word; + gUnknown_083DB694->unk4142[i]++; + } + } + } } - return TRUE; } +extern const u8 *const gEasyChatGroupWords[]; +extern const u16 *const gEasyChatGroupOrders[]; +extern const u8 gEasyChatGroupSizes[]; + +// loads strings of all easy chat words except for the species and move names. +void sub_80EB040(void) +{ + u16 group; + u16 index; + + for (group = 0; group <= EC_GROUP_POKEMON_2; group++) + { + if (group != EC_GROUP_POKEMON + && group != EC_GROUP_POKEMON_2 + && group != EC_GROUP_MOVE_1 + && group != EC_GROUP_MOVE_2) + { + const u8 *wordText = gEasyChatGroupWords[group]; + + index = 0; + while (*wordText != EOS) + { + gUnknown_083DB694->unk41A4[group][index] = wordText; + + // Find the end of the current word + while (*wordText != EOS) + wordText++; + // Skip over the EOS + wordText++; + + index++; + } + } + } +} + +void sub_80EB0B0(void) +{ + const u16 *sp0; + u16 r7; + u16 r9; + u16 r8; + + if (gUnknown_083DB694->unk26 == 0) + { + u16 r6 = gUnknown_083DB694->unk1B8; + + gUnknown_083DB694->unk4178[r6] = 0; + r7 = 0; + r9 = 0; + sp0 = gEasyChatGroupOrders[r6]; + for (r8 = 0; r8 < gEasyChatGroupSizes[gUnknown_083DB694->unk1B8]; r8++) + { + if (sub_80EADC0(r6, sp0[r8])) + { + gUnknown_083DB694->unk9A2A[r9][r7] = ((r6 & 0x7F) << 9) | (sp0[r8] & 0x1FF); + gUnknown_083DB694->unk4178[r6]++; + r7++; + if (r7 > 1) + { + r7 = 0; + r9++; + } + } + } + } + else + { + u8 r2 = gUnknown_083DB694->unk1B8; + u16 r3 = 0; + u16 r6 = 0; + u16 r5; + + for (r5 = 0; r5 < gUnknown_083DB694->unk4142[r2]; r5++) + { + gUnknown_083DB694->unk9A2A[r6][r3] = gUnknown_083DB694->unkB78[r2][r5]; + r3++; + if (r3 > 1) + { + r3 = 0; + r6++; + } + } + } +} + +u8 *sub_80EB218(u8 *a, u16 word, u16 c) +{ + u8 *wordText; + + if (sub_80EB37C(word)) + { + wordText = StringCopy(a, gOtherText_ThreeQuestions); + } + else if (word == 0xFFFF) + { + wordText = a; + wordText[0] = EOS; // Why? It's going to get overwritten. + } + else + { + u16 group = EC_GROUP(word); + u16 index = EC_INDEX(word); + + switch (group) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + wordText = StringCopy(a, gSpeciesNames[index]); + break; + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + wordText = StringCopy(a, gMoveNames[index]); + break; + default: + wordText = StringCopy(a, gUnknown_083DB694->unk41A4[group][index]); + break; + } + } + + wordText[0] = EXT_CTRL_CODE_BEGIN; + wordText[1] = 0x13; + wordText[2] = c * 8; + wordText += 3; + + *wordText = EOS; + + return wordText; +} + +u16 sub_80EB2D4(u16 word) +{ + const u8 *wordText; + u16 length; + + if (sub_80EB37C(word)) + { + return StringLength(gOtherText_ThreeQuestions); + } + else if (word == 0xFFFF) + { + return 0; + } + else + { + u16 group = EC_GROUP(word); + u16 index = EC_INDEX(word); + + switch (group) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + wordText = gSpeciesNames[index]; + break; + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + wordText = gMoveNames[index]; + break; + default: + wordText = gUnknown_083DB694->unk41A4[group][index]; + break; + } + } + + length = 0; + while (*wordText != EOS) + { + wordText++; + length++; + } + return length; +} + +bool8 sub_80EB37C(u16 word) +{ + const u16 *r4; + u16 r3; + + if (word == 0xFFFF) + { + return FALSE; + } + else + { + u16 group = EC_GROUP(word); + u16 index = EC_INDEX(word); + + if (group <= EC_GROUP_POKEMON_2) + { + switch (group) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + r4 = (u16 *)gEasyChatGroupWords[group]; + for (r3 = 0; r3 < gEasyChatGroupSizes[group]; r3++) + { + if (index == r4[r3]) + return FALSE; + } + break; + default: + if (index < gEasyChatGroupSizes[group]) + return FALSE; + break; + } + } + return TRUE; + } +} -- cgit v1.2.3 From 675cf09efa0f32e5aee4d96fb85a69d4cce7ebb9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:29:32 -0500 Subject: sub_812476C --- src/scene/cable_car.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 3d93010a2..edfc566e8 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -930,3 +930,31 @@ void sub_81245F4(void) sub_8124E7C(gUnknown_02039274->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); } } + +void sub_812476C(void) +{ + u8 i = 0; + + gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; + gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; + gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; + gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 2) % 32; + gUnknown_02039274->unk_0018 += 2; + gUnknown_0203927D = gUnknown_02039274->unk_001a; + for (i = 0; i < 9; i++) + { + gUnknown_0203927B = gUnknown_02039274->unk_0019; + gUnknown_0203927C = (gUnknown_0203927D + i) % 32; + gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + gUnknown_0203927B = (gUnknown_0203927B + 1) % 32; + gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + } + gUnknown_0203927C = (gUnknown_02039274->unk_001a + 23) % 32; + sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039274->unk_0019, gUnknown_0203927C, 2, 9); + if (gUnknown_02039274->unk_0018 == 10) + { + gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 3) % 32; + gUnknown_02039274->unk_0018 = 0xfe; + sub_812446C(); + } +} -- cgit v1.2.3 From 27d47d5a8e6e8362acf4af1c9b6f7cd3a66d335e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:33:27 -0500 Subject: sub_81248AC --- src/scene/cable_car.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index edfc566e8..f12d80dba 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -958,3 +958,28 @@ void sub_812476C(void) sub_812446C(); } } + +void sub_81248AC(u8 a0) +{ + switch (a0) + { + case 0: + default: + gUnknown_02039274->unk_001b = 2; + gUnknown_02039274->unk_0019 = 0; + gUnknown_02039274->unk_001a = 20; + gUnknown_02039274->unk_0018 = 12; + sub_812446C(); + sub_81245F4(); + break; + case 1: + gUnknown_02039274->unk_001b = 2; + gUnknown_02039274->unk_0019 = 28; + gUnknown_02039274->unk_001a = 20; + gUnknown_02039274->unk_0018 = 4; + sub_812446C(); + sub_812476C(); + break; + } + gUnknown_02039274->unk_001c = 0; +} -- cgit v1.2.3 From fe7e54d6d8d158409316af91ca4e119a6af73faf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:37:20 -0500 Subject: Make static what can be made static --- src/scene/cable_car.c | 106 ++++++++++++++++++++++++-------------------------- 1 file changed, 50 insertions(+), 56 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index f12d80dba..6b1c8aa3c 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -9,6 +9,7 @@ #include "script.h" #include "task.h" #include "sound.h" +#include "graphics.h" #include "constants/songs.h" #include "decompress.h" #include "field_weather.h" @@ -81,40 +82,33 @@ EWRAM_DATA u32 filler_02039280 = 0; // Static ROM declarations -void sub_8123244(void); -void sub_8123724(void); -void sub_8123878(u8 taskId); -void sub_81239E4(u8 taskId); -void sub_8123AF8(u8 taskId); -void sub_8123C40(void); -void nullsub_76(struct Sprite *sprite); -void sub_8123CB8(struct Sprite *sprite); -void sub_8123EB8(struct Sprite *sprite); -void sub_8123F44(struct Sprite *sprite); -void sub_8123FBC(u8); -void sub_8124118(void); -void sub_812453C(void); -void sub_8124598(void); -void sub_81245F4(void); -void sub_812476C(void); -void sub_81248AC(u8); +static void sub_8123244(void); +static void sub_8123724(void); +static void sub_8123878(u8 taskId); +static void sub_81239E4(u8 taskId); +static void sub_8123AF8(u8 taskId); +static void sub_8123C40(void); +static void nullsub_76(struct Sprite *sprite); +static void sub_8123CB8(struct Sprite *sprite); +static void sub_8123EB8(struct Sprite *sprite); +static void sub_8123F44(struct Sprite *sprite); +static void sub_8123FBC(u8); +static void sub_8124118(void); +static void sub_812453C(void); +static void sub_8124598(void); +static void sub_81245F4(void); +static void sub_812476C(void); +static void sub_81248AC(u8); // .rodata -extern const u8 gCableCar_Gfx[]; -extern const u8 gCableCarDoor_Gfx[]; -extern const u8 gCableCarCord_Gfx[]; -extern const u16 gCableCar_Pal[]; -extern const u16 gCableCarBG_Pal[]; -extern const u8 gCableCarBG_Gfx[]; +static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); -const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); +static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); -const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); +static const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz"); -const u8 gCableCarMountainTilemap[] = INCBIN_U8("graphics/misc/cable_car_mountain_map.bin.lz"); - -const u16 gCableCarPylonHookTilemapEntries[] = { +static const u16 gCableCarPylonHookTilemapEntries[] = { 0x3000, 0x3001, 0x3002, @@ -127,38 +121,38 @@ const u16 gCableCarPylonHookTilemapEntries[] = { 0x3009 }; -const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz"); +static const u8 gCableCarPylonStemTilemap[] = INCBIN_U8("graphics/misc/cable_car_pylon_stem_map.bin.lz"); -const struct CompressedSpriteSheet gUnknown_08401CF8[] = { +static const struct CompressedSpriteSheet gUnknown_08401CF8[] = { { gCableCar_Gfx, 0x800, 1 }, { gCableCarDoor_Gfx, 0x40, 2 }, { gCableCarCord_Gfx, 0x80, 3 }, { } }; -const struct SpritePalette gUnknown_08401D18[] = { +static const struct SpritePalette gUnknown_08401D18[] = { { gCableCar_Pal, 1 }, { } }; -const struct OamData gOamData_8401D28 = { +static const struct OamData gOamData_8401D28 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .size = 3, .priority = 2 }; -const struct OamData gOamData_8401D30 = { +static const struct OamData gOamData_8401D30 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .shape = ST_OAM_H_RECTANGLE, .priority = 2 }; -const struct OamData gOamData_8401D38 = { +static const struct OamData gOamData_8401D38 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .size = 1, .priority = 2 }; -const struct SpriteTemplate gSpriteTemplate_8401D40[] = { +static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { { 1, 1, @@ -188,7 +182,7 @@ const struct SpriteTemplate gSpriteTemplate_8401D40[] = { // .text -void sub_81231EC(u8 taskId) +static void sub_81231EC(u8 taskId) { if (!gPaletteFade.active) { @@ -204,7 +198,7 @@ void sub_8123218(void) BeginNormalPaletteFade(-1, 0, 0, 16, 0); } -void sub_8123244(void) +static void sub_8123244(void) { u8 i; u16 imebak; @@ -318,7 +312,7 @@ void sub_8123244(void) } } -void sub_8123724(void) +static void sub_8123724(void) { RunTasks(); AnimateSprites(); @@ -327,7 +321,7 @@ void sub_8123724(void) MapMusicMain(); } -void sub_8123740(void) +static void sub_8123740(void) { u8 i; @@ -352,7 +346,7 @@ void sub_8123740(void) SetMainCallback2(CB2_LoadMap); } -void sub_8123878(u8 taskId) +static void sub_8123878(u8 taskId) { u8 i; @@ -424,7 +418,7 @@ void sub_8123878(u8 taskId) } } -void sub_81239E4(u8 taskId) +static void sub_81239E4(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { @@ -460,7 +454,7 @@ void sub_81239E4(u8 taskId) gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 1) % 128; } -void sub_8123AF8(u8 taskId) +static void sub_8123AF8(u8 taskId) { if (gUnknown_02039274->unk_0001 != 255) { @@ -506,7 +500,7 @@ void sub_8123AF8(u8 taskId) } } -void sub_8123C40(void) +static void sub_8123C40(void) { DmaCopy16(3, gUnknown_02039274->unk_00fc, BG_SCREEN_ADDR(28), 0x800); DmaCopy16(3, gUnknown_02039274->unk_08fc, BG_SCREEN_ADDR(31), 0x800); @@ -521,12 +515,12 @@ void sub_8123C40(void) TransferPlttBuffer(); } -void nullsub_76(struct Sprite *sprite) +static void nullsub_76(struct Sprite *sprite) { } -void sub_8123CB8(struct Sprite *sprite) +static void sub_8123CB8(struct Sprite *sprite) { if (gUnknown_02039274->unk_0001 != 255) { @@ -543,7 +537,7 @@ void sub_8123CB8(struct Sprite *sprite) } } -void sub_8123D98(struct Sprite *sprite) +static void sub_8123D98(struct Sprite *sprite) { if (gUnknown_02039274->unk_0001 != 255) { @@ -579,7 +573,7 @@ void sub_8123D98(struct Sprite *sprite) } } -void sub_8123EB8(struct Sprite *sprite) +static void sub_8123EB8(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -615,7 +609,7 @@ void sub_8123EB8(struct Sprite *sprite) } } -void sub_8123F44(struct Sprite *sprite) +static void sub_8123F44(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -650,7 +644,7 @@ void sub_8123F44(struct Sprite *sprite) } } -void sub_8123FBC(bool8 which) +static void sub_8123FBC(bool8 which) { switch (which) { @@ -720,7 +714,7 @@ void sub_8123FBC(bool8 which) } } -void sub_8124118(void) +static void sub_8124118(void) { u8 spriteId; u8 i; @@ -849,7 +843,7 @@ void sub_8124118(void) } } -void sub_812446C(void) +static void sub_812446C(void) { u8 i; u8 j; @@ -869,7 +863,7 @@ void sub_812446C(void) gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; } -void sub_812453C(void) +static void sub_812453C(void) { gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f - gUnknown_02039274->unk_001d; @@ -885,7 +879,7 @@ void sub_812453C(void) } } -void sub_8124598(void) +static void sub_8124598(void) { gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f + gUnknown_02039274->unk_001d; @@ -901,7 +895,7 @@ void sub_8124598(void) } } -void sub_81245F4(void) +static void sub_81245F4(void) { u8 i = 0; @@ -931,7 +925,7 @@ void sub_81245F4(void) } } -void sub_812476C(void) +static void sub_812476C(void) { u8 i = 0; @@ -959,7 +953,7 @@ void sub_812476C(void) } } -void sub_81248AC(u8 a0) +static void sub_81248AC(u8 a0) { switch (a0) { -- cgit v1.2.3 From 2692979c40ce3bc93901ea7194c68c01d14c1c9f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 21:46:59 -0500 Subject: some renaming --- src/scene/cable_car.c | 352 +++++++++++++++++++++++++------------------------- 1 file changed, 176 insertions(+), 176 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 6b1c8aa3c..288c5d40d 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -71,7 +71,7 @@ struct CableCarEwramStruct2 { // Static RAM declarations -EWRAM_DATA struct CableCarEwramStruct1 *gUnknown_02039274 = NULL; +EWRAM_DATA struct CableCarEwramStruct1 *sCableCarPtr = NULL; EWRAM_DATA u8 gUnknown_02039278 = 0; EWRAM_DATA u8 gUnknown_02039279 = 0; EWRAM_DATA u8 gUnknown_0203927A = 0; @@ -82,18 +82,18 @@ EWRAM_DATA u32 filler_02039280 = 0; // Static ROM declarations -static void sub_8123244(void); -static void sub_8123724(void); +static void CableCarMainCallback_Setup(void); +static void CableCarMainCallback_Run(void); static void sub_8123878(u8 taskId); static void sub_81239E4(u8 taskId); static void sub_8123AF8(u8 taskId); -static void sub_8123C40(void); +static void CableCarVblankCallback(void); static void nullsub_76(struct Sprite *sprite); static void sub_8123CB8(struct Sprite *sprite); static void sub_8123EB8(struct Sprite *sprite); static void sub_8123F44(struct Sprite *sprite); static void sub_8123FBC(u8); -static void sub_8124118(void); +static void LoadSprites(void); static void sub_812453C(void); static void sub_8124598(void); static void sub_81245F4(void); @@ -182,23 +182,23 @@ static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { // .text -static void sub_81231EC(u8 taskId) +static void CableCarTask1(u8 taskId) { if (!gPaletteFade.active) { - SetMainCallback2(sub_8123244); + SetMainCallback2(CableCarMainCallback_Setup); DestroyTask(taskId); } } -void sub_8123218(void) +void CableCar(void) { ScriptContext2_Enable(); - CreateTask(sub_81231EC, 1); + CreateTask(CableCarTask1, 1); BeginNormalPaletteFade(-1, 0, 0, 16, 0); } -static void sub_8123244(void) +static void CableCarMainCallback_Setup(void) { u8 i; u16 imebak; @@ -212,7 +212,7 @@ static void sub_8123244(void) DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); - gUnknown_02039274 = eCableCar1; + sCableCarPtr = eCableCar1; DmaFill16Large(3, 0, eCableCar1, 0x10FC, 0x1000); gMain.state++; break; @@ -246,12 +246,12 @@ static void sub_8123244(void) gMain.state++; break; case 3: - sub_8124118(); + LoadSprites(); RunTasks(); gMain.state++; break; case 4: - if (gUnknown_02039274->unk_0002 == 7) + if (sCableCarPtr->unk_0002 == 7) { gMain.state++; } @@ -270,20 +270,20 @@ static void sub_8123244(void) case 5: sub_8124F08((u16 *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); sub_8124F08((u16 *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); - sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); + sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); gMain.state++; break; case 6: sub_81248AC(gSpecialVar_0x8004); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); gMain.state++; break; case 7: @@ -297,22 +297,22 @@ static void sub_8123244(void) REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = imebak; - SetVBlankCallback(sub_8123C40); - SetMainCallback2(sub_8123724); + SetVBlankCallback(CableCarVblankCallback); + SetMainCallback2(CableCarMainCallback_Run); CreateTask(sub_8123878, 0); if (gSpecialVar_0x8004 == 0) { - gUnknown_02039274->unk_0000 = CreateTask(sub_81239E4, 1); + sCableCarPtr->unk_0000 = CreateTask(sub_81239E4, 1); } else { - gUnknown_02039274->unk_0000 = CreateTask(sub_8123AF8, 1); + sCableCarPtr->unk_0000 = CreateTask(sub_8123AF8, 1); } break; } } -static void sub_8123724(void) +static void CableCarMainCallback_Run(void) { RunTasks(); AnimateSprites(); @@ -337,7 +337,7 @@ static void sub_8123740(void) ResetSpriteData(); ResetPaletteFade(); DmaFill32Large(3, 0, gSharedMem, 0x20000, 0x1000); - gUnknown_02039274 = NULL; + sCableCarPtr = NULL; DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); @@ -351,18 +351,18 @@ static void sub_8123878(u8 taskId) u8 i; i = 0; - gUnknown_02039274->unk_0006++; - switch (gUnknown_02039274->unk_0001) + sCableCarPtr->unk_0006++; + switch (sCableCarPtr->unk_0001) { case 0: - if (gUnknown_02039274->unk_0006 == gUnknown_02039274->unk_0004) + if (sCableCarPtr->unk_0006 == sCableCarPtr->unk_0004) { - DoWeatherEffect(gUnknown_02039274->unk_0002); - gUnknown_02039274->unk_0001 = 1; + DoWeatherEffect(sCableCarPtr->unk_0002); + sCableCarPtr->unk_0001 = 1; } break; case 1: - switch (gUnknown_02039274->unk_0002) + switch (sCableCarPtr->unk_0002) { case 7: if (gWeatherPtr->sprites.s2.ashSprites[0] != NULL && gWeatherPtr->sprites.s2.ashSprites[0]->oam.priority != 0) @@ -374,15 +374,15 @@ static void sub_8123878(u8 taskId) gWeatherPtr->sprites.s2.ashSprites[i]->oam.priority = 0; } } - gUnknown_02039274->unk_0001 = 2; + sCableCarPtr->unk_0001 = 2; } break; case 2: if (gWeatherPtr->currWeather == 2) { - gUnknown_02039274->unk_0001 = 2; + sCableCarPtr->unk_0001 = 2; } - else if (gUnknown_02039274->unk_0006 >= gUnknown_02039274->unk_0004 + 8) + else if (sCableCarPtr->unk_0006 >= sCableCarPtr->unk_0004 + 8) { for (; i < 20; i++) { @@ -396,9 +396,9 @@ static void sub_8123878(u8 taskId) } break; case 2: - if (gUnknown_02039274->unk_0006 == 570) + if (sCableCarPtr->unk_0006 == 570) { - gUnknown_02039274->unk_0001 = 3; + sCableCarPtr->unk_0001 = 3; BeginNormalPaletteFade(-1, 3, 0, 16, 0); FadeOutBGM(4); } @@ -406,13 +406,13 @@ static void sub_8123878(u8 taskId) case 3: if (!gPaletteFade.active) { - gUnknown_02039274->unk_0001 = 255; + sCableCarPtr->unk_0001 = 255; } break; case 255: SetVBlankCallback(NULL); DestroyTask(taskId); - DestroyTask(gUnknown_02039274->unk_0000); + DestroyTask(sCableCarPtr->unk_0000); SetMainCallback2(sub_8123740); break; } @@ -420,33 +420,33 @@ static void sub_8123878(u8 taskId) static void sub_81239E4(u8 taskId) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { - gUnknown_02039274->unk_0014--; - if ((gUnknown_02039274->unk_0006 % 2) == 0) + sCableCarPtr->unk_0014--; + if ((sCableCarPtr->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015--; + sCableCarPtr->unk_0015--; } - if ((gUnknown_02039274->unk_0006 % 8) == 0) + if ((sCableCarPtr->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c--; - gUnknown_02039274->unk_000d--; + sCableCarPtr->unk_000c--; + sCableCarPtr->unk_000d--; } - switch (gUnknown_02039274->unk_0014) + switch (sCableCarPtr->unk_0014) { case 175: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); break; case 40: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 3, 0, 2, 2); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 3, 0, 2, 2); break; case 32: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 1, 2); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 1, 2); break; case 16: - sub_8124F08(gUnknown_02039274->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); - gUnknown_02039274->unk_0015 = 64; + sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + sCableCarPtr->unk_0015 = 64; break; } } @@ -456,42 +456,42 @@ static void sub_81239E4(u8 taskId) static void sub_8123AF8(u8 taskId) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { - gUnknown_02039274->unk_0014++; - if ((gUnknown_02039274->unk_0006 % 2) == 0) + sCableCarPtr->unk_0014++; + if ((sCableCarPtr->unk_0006 % 2) == 0) { - gUnknown_02039274->unk_0015++; + sCableCarPtr->unk_0015++; } - if ((gUnknown_02039274->unk_0006 % 8) == 0) + if ((sCableCarPtr->unk_0006 % 8) == 0) { - gUnknown_02039274->unk_000c++; - gUnknown_02039274->unk_000d++; + sCableCarPtr->unk_000c++; + sCableCarPtr->unk_000d++; } - switch (gUnknown_02039274->unk_0014) + switch (sCableCarPtr->unk_0014) { case 176: - sub_8124F08(gUnknown_02039274->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); break; case 16: - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 2, 0, 3, 2); - sub_8124E7C(gUnknown_02039274->unk_08fc, 0, 0, 22, 2, 10); - gUnknown_02039274->unk_0015 = 192; + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 3, 2); + sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); + sCableCarPtr->unk_0015 = 192; break; case 32: - gUnknown_02039274->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; - gUnknown_02039274->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; - gUnknown_02039274->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; - gUnknown_02039274->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; + sCableCarPtr->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; + sCableCarPtr->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; + sCableCarPtr->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; + sCableCarPtr->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; break; case 40: - gUnknown_02039274->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; - gUnknown_02039274->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; + sCableCarPtr->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; + sCableCarPtr->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; break; } } sub_8124598(); - if (gUnknown_02039274->unk_0006 < gUnknown_02039274->unk_0004) { + if (sCableCarPtr->unk_0006 < sCableCarPtr->unk_0004) { gSpriteCoordOffsetX = (gSpriteCoordOffsetX + 247) % 248; } else @@ -500,16 +500,16 @@ static void sub_8123AF8(u8 taskId) } } -static void sub_8123C40(void) +static void CableCarVblankCallback(void) { - DmaCopy16(3, gUnknown_02039274->unk_00fc, BG_SCREEN_ADDR(28), 0x800); - DmaCopy16(3, gUnknown_02039274->unk_08fc, BG_SCREEN_ADDR(31), 0x800); - REG_BG3HOFS = gUnknown_02039274->unk_0014; - REG_BG3VOFS = gUnknown_02039274->unk_0015; - REG_BG1HOFS = gUnknown_02039274->unk_000c; - REG_BG1VOFS = gUnknown_02039274->unk_000d; - REG_BG0HOFS = gUnknown_02039274->unk_0008; - REG_BG0VOFS = gUnknown_02039274->unk_0009; + DmaCopy16(3, sCableCarPtr->unk_00fc, BG_SCREEN_ADDR(28), 0x800); + DmaCopy16(3, sCableCarPtr->unk_08fc, BG_SCREEN_ADDR(31), 0x800); + REG_BG3HOFS = sCableCarPtr->unk_0014; + REG_BG3VOFS = sCableCarPtr->unk_0015; + REG_BG1HOFS = sCableCarPtr->unk_000c; + REG_BG1VOFS = sCableCarPtr->unk_000d; + REG_BG0HOFS = sCableCarPtr->unk_0008; + REG_BG0VOFS = sCableCarPtr->unk_0009; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -522,34 +522,34 @@ static void nullsub_76(struct Sprite *sprite) static void sub_8123CB8(struct Sprite *sprite) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { if (gSpecialVar_0x8004 == 0) { - sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } else { - sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } } } static void sub_8123D98(struct Sprite *sprite) { - if (gUnknown_02039274->unk_0001 != 255) + if (sCableCarPtr->unk_0001 != 255) { if (gSpecialVar_0x8004 == 0) { - sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] - (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] - (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } else { - sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); - sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(gUnknown_02039274->unk_0006)); + sprite->pos1.x = sprite->data[0] + (u8)(0.14f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); + sprite->pos1.y = sprite->data[1] + (u8)(0.067f * S16TOPOSFLOAT(sCableCarPtr->unk_0006)); } switch (sprite->data[2]) { @@ -680,30 +680,30 @@ static void sub_8123FBC(bool8 which) REG_WIN1V = 0; if (gSpecialVar_0x8004 == 0) { - gUnknown_02039274->unk_0014 = 0xb0; - gUnknown_02039274->unk_0015 = 0x10; - gUnknown_02039274->unk_000c = 0x00; - gUnknown_02039274->unk_000d = 0x50; - gUnknown_02039274->unk_0009 = 0; - gUnknown_02039274->unk_0009 = 0; + sCableCarPtr->unk_0014 = 0xb0; + sCableCarPtr->unk_0015 = 0x10; + sCableCarPtr->unk_000c = 0x00; + sCableCarPtr->unk_000d = 0x50; + sCableCarPtr->unk_0009 = 0; + sCableCarPtr->unk_0009 = 0; } else { - gUnknown_02039274->unk_0014 = 0x60; - gUnknown_02039274->unk_0015 = 0xe8; - gUnknown_02039274->unk_000c = 0x00; - gUnknown_02039274->unk_000d = 0x04; - gUnknown_02039274->unk_0009 = 0; - gUnknown_02039274->unk_0009 = 0; + sCableCarPtr->unk_0014 = 0x60; + sCableCarPtr->unk_0015 = 0xe8; + sCableCarPtr->unk_000c = 0x00; + sCableCarPtr->unk_000d = 0x04; + sCableCarPtr->unk_0009 = 0; + sCableCarPtr->unk_0009 = 0; } - REG_BG3HOFS = gUnknown_02039274->unk_0014; - REG_BG3VOFS = gUnknown_02039274->unk_0015; + REG_BG3HOFS = sCableCarPtr->unk_0014; + REG_BG3VOFS = sCableCarPtr->unk_0015; REG_BG2HOFS = 0; REG_BG2VOFS = 0; - REG_BG1HOFS = gUnknown_02039274->unk_000c; - REG_BG1VOFS = gUnknown_02039274->unk_000d; - REG_BG0HOFS = gUnknown_02039274->unk_0008; - REG_BG0VOFS = gUnknown_02039274->unk_0009; + REG_BG1HOFS = sCableCarPtr->unk_000c; + REG_BG1VOFS = sCableCarPtr->unk_000d; + REG_BG0HOFS = sCableCarPtr->unk_0008; + REG_BG0VOFS = sCableCarPtr->unk_0009; REG_BG0CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(28) | BGCNT_WRAP; REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(29) | BGCNT_WRAP; REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(30) | BGCNT_WRAP; @@ -714,7 +714,7 @@ static void sub_8123FBC(bool8 which) } } -static void sub_8124118(void) +static void LoadSprites(void) { u8 spriteId; u8 i; @@ -767,12 +767,12 @@ static void sub_8124118(void) gSprites[spriteId].pos2.y = 4; gSprites[spriteId].data[0] = 0xc8; gSprites[spriteId].data[1] = 0x63; - gUnknown_02039274->unk_0002 = 7; - gUnknown_02039274->unk_0004 = 0x15e; + sCableCarPtr->unk_0002 = 7; + sCableCarPtr->unk_0004 = 0x15e; sub_807C9B4(2); break; case 1: - sub_8124F08(gUnknown_02039274->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); + sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66); if (spriteId != MAX_SPRITES) { @@ -791,8 +791,8 @@ static void sub_8124118(void) gSprites[spriteId].pos2.y = 4; gSprites[spriteId].data[0] = 0x80; gSprites[spriteId].data[1] = 0x41; - gUnknown_02039274->unk_0002 = 2; - gUnknown_02039274->unk_0004 = 0x109; + sCableCarPtr->unk_0002 = 2; + sCableCarPtr->unk_0004 = 0x109; sub_807C9B4(7); break; } @@ -850,30 +850,30 @@ static void sub_812446C(void) u8 k; u8 offset; - for (i = 0, k = 0, offset = 0x24 * (gUnknown_02039274->unk_001b + 2); i < 3; i++) + for (i = 0, k = 0, offset = 0x24 * (sCableCarPtr->unk_001b + 2); i < 3; i++) { for (j = 0; j < 12; j++) { - gUnknown_02039274->unk_0022[i][j] = *(eCableCar2->mtChimneyTilemap + (offset++)); - gUnknown_02039274->unk_0022[i + 3][j] = eCableCar2->mtChimneyTilemap[k]; - gUnknown_02039274->unk_0022[i + 6][j] = (eCableCar2->mtChimneyTilemap + 0x24)[k]; + sCableCarPtr->unk_0022[i][j] = *(eCableCar2->mtChimneyTilemap + (offset++)); + sCableCarPtr->unk_0022[i + 3][j] = eCableCar2->mtChimneyTilemap[k]; + sCableCarPtr->unk_0022[i + 6][j] = (eCableCar2->mtChimneyTilemap + 0x24)[k]; k++; } } - gUnknown_02039274->unk_001b = (gUnknown_02039274->unk_001b + 1) % 3; + sCableCarPtr->unk_001b = (sCableCarPtr->unk_001b + 1) % 3; } static void sub_812453C(void) { - gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; - gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f - gUnknown_02039274->unk_001d; - gUnknown_02039274->unk_0009 = gUnknown_02039274->unk_0020 - gUnknown_02039274->unk_001e; - gUnknown_02039274->unk_001d++; - if ((gUnknown_02039274->unk_001d % 4) == 0) + sCableCarPtr->unk_001c = (sCableCarPtr->unk_001c + 1) % 0x60; + sCableCarPtr->unk_0008 = sCableCarPtr->unk_001f - sCableCarPtr->unk_001d; + sCableCarPtr->unk_0009 = sCableCarPtr->unk_0020 - sCableCarPtr->unk_001e; + sCableCarPtr->unk_001d++; + if ((sCableCarPtr->unk_001d % 4) == 0) { - gUnknown_02039274->unk_001e++; + sCableCarPtr->unk_001e++; } - if (gUnknown_02039274->unk_001d > 16) + if (sCableCarPtr->unk_001d > 16) { sub_81245F4(); } @@ -881,15 +881,15 @@ static void sub_812453C(void) static void sub_8124598(void) { - gUnknown_02039274->unk_001c = (gUnknown_02039274->unk_001c + 1) % 0x60; - gUnknown_02039274->unk_0008 = gUnknown_02039274->unk_001f + gUnknown_02039274->unk_001d; - gUnknown_02039274->unk_0009 = gUnknown_02039274->unk_0020 + gUnknown_02039274->unk_001e; - gUnknown_02039274->unk_001d++; - if ((gUnknown_02039274->unk_001d % 4) == 0) + sCableCarPtr->unk_001c = (sCableCarPtr->unk_001c + 1) % 0x60; + sCableCarPtr->unk_0008 = sCableCarPtr->unk_001f + sCableCarPtr->unk_001d; + sCableCarPtr->unk_0009 = sCableCarPtr->unk_0020 + sCableCarPtr->unk_001e; + sCableCarPtr->unk_001d++; + if ((sCableCarPtr->unk_001d % 4) == 0) { - gUnknown_02039274->unk_001e++; + sCableCarPtr->unk_001e++; } - if (gUnknown_02039274->unk_001d > 16) + if (sCableCarPtr->unk_001d > 16) { sub_812476C(); } @@ -899,29 +899,29 @@ static void sub_81245F4(void) { u8 i = 0; - gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; - gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; - gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; - gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 30) % 32; - gUnknown_02039274->unk_0018 -= 2; - gUnknown_0203927A = (gUnknown_02039274->unk_001a + 23) % 32; + sCableCarPtr->unk_001d = sCableCarPtr->unk_001e = 0; + sCableCarPtr->unk_001f = sCableCarPtr->unk_0008; + sCableCarPtr->unk_0020 = sCableCarPtr->unk_0009; + sCableCarPtr->unk_0019 = (sCableCarPtr->unk_0019 + 30) % 32; + sCableCarPtr->unk_0018 -= 2; + gUnknown_0203927A = (sCableCarPtr->unk_001a + 23) % 32; for (i = 0; i < 9; i++) { - gUnknown_02039278 = gUnknown_02039274->unk_0019; + gUnknown_02039278 = sCableCarPtr->unk_0019; gUnknown_02039279 = (gUnknown_0203927A + i) % 32; - gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + sCableCarPtr->unk_00fc[gUnknown_02039279][gUnknown_02039278] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018]; gUnknown_02039278 = (gUnknown_02039278 + 1) % 32; - gUnknown_02039274->unk_00fc[gUnknown_02039279][gUnknown_02039278] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + sCableCarPtr->unk_00fc[gUnknown_02039279][gUnknown_02039278] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } - gUnknown_02039278 = (gUnknown_02039274->unk_0019 + 30) % 32; - sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); - if (gUnknown_02039274->unk_0018 == 0) + gUnknown_02039278 = (sCableCarPtr->unk_0019 + 30) % 32; + sub_8124E7C(sCableCarPtr->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); + if (sCableCarPtr->unk_0018 == 0) { - gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 29) % 32; - gUnknown_02039274->unk_0018 = 12; + sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 29) % 32; + sCableCarPtr->unk_0018 = 12; sub_812446C(); - gUnknown_02039278 = (gUnknown_02039274->unk_001a + 1) % 32; - sub_8124E7C(gUnknown_02039274->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); + gUnknown_02039278 = (sCableCarPtr->unk_001a + 1) % 32; + sub_8124E7C(sCableCarPtr->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); } } @@ -929,26 +929,26 @@ static void sub_812476C(void) { u8 i = 0; - gUnknown_02039274->unk_001d = gUnknown_02039274->unk_001e = 0; - gUnknown_02039274->unk_001f = gUnknown_02039274->unk_0008; - gUnknown_02039274->unk_0020 = gUnknown_02039274->unk_0009; - gUnknown_02039274->unk_0019 = (gUnknown_02039274->unk_0019 + 2) % 32; - gUnknown_02039274->unk_0018 += 2; - gUnknown_0203927D = gUnknown_02039274->unk_001a; + sCableCarPtr->unk_001d = sCableCarPtr->unk_001e = 0; + sCableCarPtr->unk_001f = sCableCarPtr->unk_0008; + sCableCarPtr->unk_0020 = sCableCarPtr->unk_0009; + sCableCarPtr->unk_0019 = (sCableCarPtr->unk_0019 + 2) % 32; + sCableCarPtr->unk_0018 += 2; + gUnknown_0203927D = sCableCarPtr->unk_001a; for (i = 0; i < 9; i++) { - gUnknown_0203927B = gUnknown_02039274->unk_0019; + gUnknown_0203927B = sCableCarPtr->unk_0019; gUnknown_0203927C = (gUnknown_0203927D + i) % 32; - gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018]; + sCableCarPtr->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018]; gUnknown_0203927B = (gUnknown_0203927B + 1) % 32; - gUnknown_02039274->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = gUnknown_02039274->unk_0022[i][gUnknown_02039274->unk_0018 + 1]; + sCableCarPtr->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } - gUnknown_0203927C = (gUnknown_02039274->unk_001a + 23) % 32; - sub_8124E7C(gUnknown_02039274->unk_00fc, 0, gUnknown_02039274->unk_0019, gUnknown_0203927C, 2, 9); - if (gUnknown_02039274->unk_0018 == 10) + gUnknown_0203927C = (sCableCarPtr->unk_001a + 23) % 32; + sub_8124E7C(sCableCarPtr->unk_00fc, 0, sCableCarPtr->unk_0019, gUnknown_0203927C, 2, 9); + if (sCableCarPtr->unk_0018 == 10) { - gUnknown_02039274->unk_001a = (gUnknown_02039274->unk_001a + 3) % 32; - gUnknown_02039274->unk_0018 = 0xfe; + sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 3) % 32; + sCableCarPtr->unk_0018 = 0xfe; sub_812446C(); } } @@ -959,21 +959,21 @@ static void sub_81248AC(u8 a0) { case 0: default: - gUnknown_02039274->unk_001b = 2; - gUnknown_02039274->unk_0019 = 0; - gUnknown_02039274->unk_001a = 20; - gUnknown_02039274->unk_0018 = 12; + sCableCarPtr->unk_001b = 2; + sCableCarPtr->unk_0019 = 0; + sCableCarPtr->unk_001a = 20; + sCableCarPtr->unk_0018 = 12; sub_812446C(); sub_81245F4(); break; case 1: - gUnknown_02039274->unk_001b = 2; - gUnknown_02039274->unk_0019 = 28; - gUnknown_02039274->unk_001a = 20; - gUnknown_02039274->unk_0018 = 4; + sCableCarPtr->unk_001b = 2; + sCableCarPtr->unk_0019 = 28; + sCableCarPtr->unk_001a = 20; + sCableCarPtr->unk_0018 = 4; sub_812446C(); sub_812476C(); break; } - gUnknown_02039274->unk_001c = 0; + sCableCarPtr->unk_001c = 0; } -- cgit v1.2.3 From 60ab994a0fdf75bc007a5349f424b6e346604de6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 21:27:40 -0600 Subject: fix German build --- src/easy_chat_2.c | 222 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 222 insertions(+) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 5dc4bb1c1..f9843cda9 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2137,6 +2137,195 @@ u16 sub_80EAE88(u8 group) } } +#if GERMAN +__attribute__((naked)) +void sub_80EAECC(void) +{ + 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, 0x10\n\ + movs r7, 0\n\ + ldr r1, _080EAF08 @ =gUnknown_083DB694\n\ + ldr r0, [r1]\n\ + ldr r3, _080EAF0C @ =0x0000446c\n\ + adds r3, r0, r3\n\ + str r3, [sp, 0x4]\n\ +_080EAEE4:\n\ + ldr r1, _080EAF10 @ =gEasyChatWordsByLetter\n\ + lsls r2, r7, 1\n\ + adds r0, r2, r1\n\ + ldrh r4, [r0]\n\ + adds r3, r7, 0x1\n\ + lsls r0, r3, 1\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + str r0, [sp]\n\ + ldr r0, [sp, 0x4]\n\ + adds r1, r0, r2\n\ + movs r0, 0\n\ + strh r0, [r1]\n\ + mov r9, r0\n\ + adds r6, r4, 0\n\ + mov r10, r2\n\ + str r3, [sp, 0x8]\n\ + b _080EB00C\n\ + .align 2, 0\n\ +_080EAF08: .4byte gUnknown_083DB694\n\ +_080EAF0C: .4byte 0x0000446c\n\ +_080EAF10: .4byte gEasyChatWordsByLetter\n\ +_080EAF14:\n\ + ldr r2, _080EAFAC @ =gEasyChatWordsAlphabetized\n\ + adds r0, r6, 0\n\ + adds r1, r0, 0x1\n\ + lsls r1, 16\n\ + lsrs r6, r1, 16\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r1, [r0]\n\ + adds r4, r1, 0\n\ + ldr r0, _080EAFB0 @ =0x0000feff\n\ + cmp r1, r0\n\ + bls _080EAFC8\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + movs r3, 0\n\ + subs r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + ldr r0, _080EAFB4 @ =0x0000ffff\n\ + cmp r5, r0\n\ + beq _080EB00C\n\ + lsls r0, r7, 4\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + mov r8, r0\n\ +_080EAF4A:\n\ + adds r1, r6, 0\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + lsls r1, 1\n\ + ldr r0, _080EAFAC @ =gEasyChatWordsAlphabetized\n\ + adds r1, r0\n\ + ldrh r4, [r1]\n\ + lsrs r0, r4, 9\n\ + ldr r1, _080EAFB8 @ =0x000001ff\n\ + adds r2, r1, 0\n\ + adds r1, r4, 0\n\ + ands r1, r2\n\ + str r3, [sp, 0xC]\n\ + bl sub_80EADC0\n\ + lsls r0, 24\n\ + ldr r3, [sp, 0xC]\n\ + cmp r0, 0\n\ + beq _080EAF9E\n\ + cmp r3, 0\n\ + bne _080EAF9E\n\ + ldr r3, _080EAFBC @ =gUnknown_083DB694\n\ + ldr r2, [r3]\n\ + mov r1, r9\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + lsls r1, 1\n\ + add r1, r8\n\ + ldr r3, _080EAFC0 @ =0x00000b78\n\ + adds r0, r2, r3\n\ + adds r0, r1\n\ + strh r4, [r0]\n\ + ldr r0, _080EAFC4 @ =0x0000446c\n\ + adds r2, r0\n\ + add r2, r10\n\ + ldrh r0, [r2]\n\ + adds r0, 0x1\n\ + strh r0, [r2]\n\ + movs r3, 0x1\n\ +_080EAF9E:\n\ + subs r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + ldr r1, _080EAFB4 @ =0x0000ffff\n\ + cmp r5, r1\n\ + bne _080EAF4A\n\ + b _080EB00C\n\ + .align 2, 0\n\ +_080EAFAC: .4byte gEasyChatWordsAlphabetized\n\ +_080EAFB0: .4byte 0x0000feff\n\ +_080EAFB4: .4byte 0x0000ffff\n\ +_080EAFB8: .4byte 0x000001ff\n\ +_080EAFBC: .4byte gUnknown_083DB694\n\ +_080EAFC0: .4byte 0x00000b78\n\ +_080EAFC4: .4byte 0x0000446c\n\ +_080EAFC8:\n\ + lsrs r0, r4, 9\n\ + ldr r3, _080EB030 @ =0x000001ff\n\ + adds r2, r3, 0\n\ + adds r1, r4, 0\n\ + ands r1, r2\n\ + bl sub_80EADC0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080EB00C\n\ + ldr r0, _080EB034 @ =gUnknown_083DB694\n\ + ldr r2, [r0]\n\ + mov r1, r9\n\ + adds r0, r1, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + lsls r1, 1\n\ + lsls r0, r7, 4\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + subs r0, r7\n\ + lsls r0, 2\n\ + adds r1, r0\n\ + ldr r3, _080EB038 @ =0x00000b78\n\ + adds r0, r2, r3\n\ + adds r0, r1\n\ + strh r4, [r0]\n\ + ldr r0, _080EB03C @ =0x0000446c\n\ + adds r2, r0\n\ + add r2, r10\n\ + ldrh r0, [r2]\n\ + adds r0, 0x1\n\ + strh r0, [r2]\n\ +_080EB00C:\n\ + ldr r1, [sp]\n\ + cmp r6, r1\n\ + bcs _080EB014\n\ + b _080EAF14\n\ +_080EB014:\n\ + ldr r3, [sp, 0x8]\n\ + lsls r0, r3, 16\n\ + lsrs r7, r0, 16\n\ + cmp r7, 0x1A\n\ + bhi _080EB020\n\ + b _080EAEE4\n\ +_080EB020:\n\ + add sp, 0x10\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\ + .align 2, 0\n\ +_080EB030: .4byte 0x000001ff\n\ +_080EB034: .4byte gUnknown_083DB694\n\ +_080EB038: .4byte 0x00000b78\n\ +_080EB03C: .4byte 0x0000446c\n\ + .syntax divided\n"); +} +#else void sub_80EAECC(void) { u16 i; @@ -2183,6 +2372,7 @@ void sub_80EAECC(void) } } } +#endif extern const u8 *const gEasyChatGroupWords[]; extern const u16 *const gEasyChatGroupOrders[]; @@ -2395,3 +2585,35 @@ bool8 sub_80EB37C(u16 word) return TRUE; } } + +#if GERMAN +u32 de_sub_80EB748(s32 group, s32 index) +{ + s32 i; + u16 *words; + u32 r7 = 0; + + switch (group) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + words = (u16 *)gEasyChatGroupWords[group]; + for (i = 0; i < gEasyChatGroupSizes[group]; i++) + { + if (index == words[i]) + { + r7 = i; + break; + } + } + break; + default: + r7 = index; + break; + } + + return r7; +} +#endif -- cgit v1.2.3 From 2ea6caea07ef5926b344871fc283fc1984bd2414 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 21:40:52 -0600 Subject: remove asm and combine easy chat files --- src/easy_chat.c | 446 ------------- src/easy_chat_1.c | 1744 ++++++++++++++++++++++++++++++++++++++++++++++++ src/easy_chat_2.c | 429 ++++++++++++ src/easy_chat_before.c | 1744 ------------------------------------------------ 4 files changed, 2173 insertions(+), 2190 deletions(-) delete mode 100644 src/easy_chat.c create mode 100644 src/easy_chat_1.c delete mode 100644 src/easy_chat_before.c (limited to 'src') diff --git a/src/easy_chat.c b/src/easy_chat.c deleted file mode 100644 index 88afa8fe3..000000000 --- a/src/easy_chat.c +++ /dev/null @@ -1,446 +0,0 @@ -#include "global.h" -#include "easy_chat.h" -#include "ewram.h" -#include "constants/easy_chat.h" -#include "data2.h" -#include "event_data.h" -#include "field_message_box.h" -#include "pokedex.h" -#include "random.h" -#include "string_util.h" -#include "strings.h" -#include "strings2.h" -#include "text.h" - -static u16 sub_80EB9D8(void); -static u16 sub_80EB960(void); - -extern void *gEasyChatGroupWords[]; -extern const u8 gEasyChatGroupSizes[]; - -extern u16 gSpecialVar_0x8004; - -// put this in .bss, damnit! -__attribute__((section(".bss"))) u8 gUnknown_03000740 = 0; - -// returns the end of the destination buffer text -u8 *EasyChat_GetWordText(u8 *dst, u16 word) -{ - u16 group; - u16 wordIndex; - u8 *src; - u16 i; - - if (sub_80EB37C(word)) - return StringCopy(dst, gOtherText_ThreeQuestions); - - if (word == 0xFFFF) - { - *dst = EOS; - return dst; - } - else - { - group = EC_GROUP(word); - wordIndex = EC_INDEX(word); - switch (group) - { - case EC_GROUP_POKEMON: // 0 - case EC_GROUP_POKEMON_2: // 21 - dst = StringCopy(dst, gSpeciesNames[wordIndex]); - break; - case EC_GROUP_MOVE_1: // 18 - case EC_GROUP_MOVE_2: // 19 - dst = StringCopy(dst, gMoveNames[wordIndex]); - break; - default: - src = gEasyChatGroupWords[group]; - for (i = wordIndex - 1; i != 0xFFFF; i--) - { - while (*src++ != EOS) - ; - } - dst = StringCopy(dst, src); - break; - } - *dst = EOS; - return dst; - } -} - -u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) -{ - u16 i; - u16 n; - - const u16 i1 = arg2 - 1; - - for (i = 0; i < arg3; i++) - { - u16 word; - - for (n = 0; n < i1; n++) - { - dst = EasyChat_GetWordText(dst, words[0]); - - if (words[0] != 0xFFFF) - { - dst[0] = CHAR_SPACE; - dst++; - } - - words++; - } - - word = words[0]; - words++; - dst = EasyChat_GetWordText(dst, word); - - dst[0] = CHAR_NEWLINE; - dst++; - } - - dst--; - dst[0] = EOS; - - return dst; -} - -u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) -{ - u16 i; - u16 n; - - const u16 i1 = arg2 - 1; - - for (i = 0; i < arg3; i++) - { - u16 word; - - for (n = 0; n < i1; n++) - { - dst = EasyChat_GetWordText(dst, words[0]); - - if (words[0] != 0xFFFF) - { - dst[0] = CHAR_SPACE; - dst++; - } - - words++; - } - - word = words[0]; - words++; - dst = EasyChat_GetWordText(dst, word); - - // Only difference with ConvertEasyChatWordsToString - dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; - dst++; - } - - dst--; - dst[0] = EOS; - - return dst; -} - - -u16 unref_sub_80EB5E0(u16 arg0) -{ - const u8 *chars; - u16 i; - u16 length; - int group, word; - - - if (arg0 == 0xFFFF) - return 0; - - group = EC_GROUP(arg0); - word = EC_INDEX(arg0); - switch (group) - { - case EC_GROUP_POKEMON: // 0 - case EC_GROUP_POKEMON_2: // 21 - chars = gSpeciesNames[word]; - break; - case EC_GROUP_MOVE_1: // 18 - case EC_GROUP_MOVE_2: // 19 - chars = gMoveNames[word]; - break; - default: - chars = gEasyChatGroupWords[group]; - for (i = word - 1; i != 0xFFFF; i--) - { - while (*chars++ != EOS) - ; - } - break; - } - - length = 0; - while (*chars != EOS) - { - chars++; - length++; - } - - return length; -} - -bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) -{ - return FALSE; -} - -void unref_sub_80EB684(u8 arg0, u16 arg1) -{ - u16 *ptr; - u16 c; - - // FIXME: find actual tv shows used - switch (arg0) - { - case 5: - c = 6; - ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); - break; - case 7: - c = 2; - ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); - break; - case 8: - c = 1; - ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); - break; - default: - return; - } - - c -= 1; - while (c != 0xFFFF) - { - *ptr = -1; - ptr++; - c -= 1; - } -} - -void sub_80EB6FC(u16 *arg0, u16 arg1) -{ - u16 i; - - for (i = arg1 - 1; i != 0xFFFF; i--) - { - *arg0 = 0xFFFF; - arg0++; - } - -} - -u16 sub_80EB72C(u16 group) -{ - u16 local1 = Random() % gEasyChatGroupSizes[group]; - - if (group == EC_GROUP_POKEMON - || group == EC_GROUP_POKEMON_2 - || group == EC_GROUP_MOVE_1 - || group == EC_GROUP_MOVE_2) - { - local1 = ((u16 *) gEasyChatGroupWords[group])[local1]; - } - - return ((group & 0x7F) << 9) | (local1 & 0x1FF); -} - -u16 sub_80EB784(u16 group) -{ - if (!sub_80EAD7C(group)) - return -1; - - if (group != EC_GROUP_POKEMON) - { - if (group == EC_GROUP_TRENDY_SAYING) - return sub_80EB960(); - } - else - { - return sub_80EB9D8(); - } - - return sub_80EB72C(group); -} - -void sub_80EB7C4(void) -{ - u16 *words; - u16 arg1, arg2; - - switch (gSpecialVar_0x8004) - { - case 0: - words = gSaveBlock1.easyChats.unk2B1C; - arg1 = 2; - arg2 = 2; - break; - case 1: - words = gSaveBlock1.easyChats.unk2B28; - if (sub_80EB680(gSaveBlock1.easyChats.unk2B28, 3, 2, 20)) - { - arg1 = 2; - arg2 = 3; - } - else - { - arg1 = 3; - arg2 = 2; - } - break; - case 2: - words = gSaveBlock1.easyChats.unk2B34; - arg1 = 3; - arg2 = 2; - break; - case 3: - words = gSaveBlock1.easyChats.unk2B40; - arg1 = 3; - arg2 = 2; - break; - default: - return; - } - - ConvertEasyChatWordsToString(gStringVar4, words, arg1, arg2); - ShowFieldAutoScrollMessage(gStringVar4); -} - -void BufferRandomHobbyOrLifestyleString(void) -{ - u16 group, local2; - - if (Random() & 1) - group = EC_GROUP_HOBBIES; - else - group = EC_GROUP_LIFESTYLE; - - local2 = sub_80EB784(group); - EasyChat_GetWordText(gStringVar2, local2); -} - -u8 sub_80EB868(u8 arg0) -{ - int offset; - int index; - - index = arg0 / 8; - offset = arg0 % 8; - return (gSaveBlock1.unk2D8C[index] >> offset) & 1; -} - -void sub_80EB890(u8 arg0) -{ - int offset; - int index; - - if (arg0 < 33) - { - index = arg0 / 8; - offset = arg0 % 8; - gSaveBlock1.unk2D8C[index] |= 1 << offset; - } -} - -u8 sub_80EB8C0(void) -{ - u8 i, count; - - for (i = 0, count = 0; i < 33; i++) - { - if (sub_80EB868(i)) - count++; - } - return count; -} - -u16 sub_80EB8EC(void) -{ - u16 i; - u16 local1, local2; - - local1 = sub_80EB8C0(); - if (local1 == 33) - return -1; - - local2 = Random() % (33 - local1); - for (i = 0; i < 33; i++) - { - if (sub_80EB868(i) == 0) - { - if (local2 == 0) - { - sub_80EB890(i); - return (i & 0x1FF) | 0x2800; - } - local2--; - } - } - return -1; -} - -static u16 sub_80EB960(void) -{ - u16 i; - u16 local1; - - local1 = sub_80EB8C0(); - if (local1 == 0) - return -1; - - local1 = Random() % local1; - for (i = 0; i < 33; i++) - { - if (sub_80EB868(i)) - { - if (local1 == 0) - return (i & 0x1FF) | 0x2800; - local1--; - } - } - - return -1; -} - -u8 sub_80EB9C8(void) -{ - return IsNationalPokedexEnabled(); -} - -static u16 sub_80EB9D8(void) -{ - u16 *speciesList; - u16 local1; - u16 i; - - local1 = sub_80EAE88(0); - - if (local1 == 0) - return -1; - - local1 = Random() % local1; - speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; - for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) - { - const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = GetSetPokedexFlag(dexNum, 0); - - if (local2) - { - if (local1 == 0) - return *speciesList & 0x1FF; - local1--; - } - speciesList++; - } - return -1; -} diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c new file mode 100644 index 000000000..59e463260 --- /dev/null +++ b/src/easy_chat_1.c @@ -0,0 +1,1744 @@ +#include "global.h" +#include "constants/easy_chat.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "dewford_trend.h" +#include "easy_chat.h" +#include "event_data.h" +#include "ewram.h" +#include "graphics.h" +#include "main.h" +#include "menu.h" +#include "palette.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "unknown_task.h" + +extern const struct WindowConfig gWindowConfig_81E6D54; +extern const struct WindowConfig gWindowConfig_81E6DA8; + +extern void sub_80546B8(void); + +#define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) + +const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING}; + +const u16 gBerryMasterWifePhrases[][2] = +{ +#if ENGLISH + {EC_WORD_GREAT, EC_WORD_BATTLE}, + {EC_WORD_CHALLENGE, EC_WORD_CONTEST}, + {EC_WORD_OVERWHELMING, EC_POKEMON(LATIAS)}, + {EC_WORD_COOL, EC_POKEMON(LATIOS)}, + {EC_WORD_SUPER, EC_WORD_HUSTLE}, +#else + {EC_WORD_GREAT, EC_WORD_FIGHT}, + {EC_WORD_CONTEST, EC_WORD_CHALLENGE}, + {EC_POKEMON(LATIAS), EC_WORD_OVERWHELMING}, + {EC_POKEMON(LATIOS), EC_WORD_COOL}, + {EC_WORD_SUPER, 0xFFFF}, +#endif +}; + +// const pointer to shared1000. easy_chat might be two separate files. +struct Shared1000 *const gUnknown_083DB694 = &shared1000; + +const struct UnknownTaskStruct gUnknown_083DB698 = +{ + ®_BG3VOFS, + ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, + 1 +}; + +const u8 gUnknown_083DB6A4[] = {4, 0, 0, 0, 1, 5, 0, 2, 2, 3, 2, 2, 2, 3}; + +// choose by alphabet keyboard +const u8 gUnknown_083DB6B2[][16] = +{ + _("ABCDEF "), + _("GHIJKL"), + _("MNOPQRS"), + _("TUVWXYZ"), +}; + +struct EasyChatPrompt +{ + const u8 *text1; + const u8 *text2; + bool8 unk8; +}; + +const struct EasyChatPrompt gUnknown_083DB6F4[] = +{ + {OtherText_MakeProfilePage1, OtherText_MakeProfilePage2, TRUE}, + {OtherText_MakeMessagePage1, OtherText_MakeMessagePage2, TRUE}, + {OtherText_CombineNinePhrasesPage1, OtherText_CombineNinePhrasesPage2, TRUE}, + {OtherText_DescribeFeelingsPage1, OtherText_DescribeFeelingsPage2, TRUE}, + {OtherText_ImproveBardSongPage1, OtherText_ImproveBardSongPage2, TRUE}, + {OtherText_CombineTwoPhrasesPage1, OtherText_CombineTwoPhrasesPage2, TRUE}, + {OtherText_YourProfile, OtherText_ConfirmTrendyPage2, FALSE}, + {OtherText_YourFeelingBattle, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_SetWinMessage, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_SetLossMessage, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_MailMessage, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_MailSalutation, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_NewSong, OtherText_ConfirmTrendyPage2, FALSE}, + {OtherText_TheAnswer, OtherText_ConfirmTrendyPage2, FALSE}, + {OtherText_ConfirmTrendyPage1, OtherText_ConfirmTrendyPage2, TRUE}, + {OtherText_HipsterPage1, OtherText_HipsterPage2, TRUE}, + {OtherText_WithFourPhrases, OtherText_CombineNinePhrasesPage2, TRUE}, +}; + +const u8 gUnknown_083DB7C0[][2] = +{ + { 0, 6}, + { 1, 7}, + { 1, 8}, + { 1, 9}, + { 2, 10}, + {16, 13}, + { 4, 12}, + { 3, 13}, + { 3, 13}, + { 5, 14}, + { 3, 13}, + { 3, 13}, + { 3, 13}, + {15, 13}, +}; + +void sub_80E62F8(void); +void sub_80E6424(void); +void sub_80E6554(void); +void sub_80E6630(void); +void sub_80E6690(void); +void sub_80E682C(void (*)(void)); +void sub_80E69F8(void); +void sub_80E6A6C(void); +void sub_80E6A88(void); +void sub_80E6AA8(void); +void sub_80E6AC4(void); +void sub_80E6AE4(void); +void sub_80E6BC0(void); +void sub_80E6C84(void); +void sub_80E6D7C(void); +void sub_80E6F68(void); +void sub_80E6FC8(void); +void sub_80E7114(void); +void sub_80E718C(void); +void sub_80E7218(void); +void sub_80E7294(void); +void sub_80E7324(void); +void sub_80E73D0(void); +void sub_80E7458(void); +void sub_80E752C(void); +void sub_80E7574(void); +bool8 sub_80E75D8(void); +bool8 sub_80E77C8(void); +void sub_80E7A98(void); +void sub_80E7AD4(void); +bool8 sub_80E7B40(void); +void sub_80E7D30(void); +void sub_80E7D6C(void); +void sub_80E7D9C(void); +bool8 sub_80E7DD0(void); +void sub_80E7E50(void); +void sub_80E7F00(u16, u16); +u8 sub_80E7FA8(void); +bool8 sub_80E8054(void); +u8 sub_80E8094(void); +u8 sub_80E810C(void); +void sub_80E81C0(void); +void sub_80E81FC(void); +void sub_80E8218(void); + +void sub_80E8398(); +void sub_80E8420(void); +void sub_80E8504(void); +void sub_80E87CC(); + +void sub_80E88F0(void); +void sub_80E8958(); + +void sub_80E8BF4(); +void sub_80E8CEC(void); +void sub_80E8D54(void); +void sub_80E8D8C(); +void sub_80E8DD8(void); +void sub_80E91D4(); +void sub_80E9368(); +void sub_80E95A4(void); +void sub_80E9744(void); +void sub_80E98C4(void); +void sub_80E9974(void); +void sub_80E9A14(void); +void sub_80E9A4C(void); +void sub_80E9AD4(void); +void sub_80E9C94(void); +void sub_80E9D00(void); +void sub_80E9D7C(void); +void sub_80E9E08(); +bool8 sub_80E9E54(void); +void sub_80E9E98(void); +u8 sub_80E9EA8(void); +u8 sub_80E9F50(void); +u8 sub_80E9FD4(void); +u8 sub_80EA014(void); +u8 sub_80EA050(void); +u8 sub_80EA0E4(void); +u8 sub_80EA184(void); +void sub_80EAC5C(void); +void sub_80EAD08(void); +u8 sub_80EAD7C(u8); +void sub_80EAECC(void); +void sub_80EB040(void); +void sub_80EB0B0(void); +u8 *sub_80EB218(u8 *, u16, u16); +u16 sub_80EB2D4(); +bool8 sub_80EB680(u16 *, u16, u16, u16); + +void sub_80E60D8(void) +{ + u8 r4 = 3; + u16 *r1; + + switch (gSpecialVar_0x8004) + { + case 0: + r1 = gSaveBlock1.easyChats.unk2B1C; + break; + case 1: + r1 = gSaveBlock1.easyChats.unk2B28; + break; + case 2: + r1 = gSaveBlock1.easyChats.unk2B34; + break; + case 3: + r1 = gSaveBlock1.easyChats.unk2B40; + break; + case 4: + r1 = gSaveBlock1.mail[gSpecialVar_0x8005].words; + break; + case 6: + { + struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; + u16 i; + for (i = 0; i < 6; i++) + bard->temporaryLyrics[i] = bard->songLyrics[i]; + r1 = bard->temporaryLyrics; + } + break; + case 5: + // TODO: Is this the right TV show? + r1 = gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubLetter.pad04; + r4 = gSpecialVar_0x8006; + break; + case 7: + // TODO: Is this the right TV show? + r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubOpinions.var1C[gSpecialVar_0x8006]; + r4 = 1; + break; + case 8: + // TODO: Is this the right TV show? + r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubOpinions.var02; + r4 = 0; + break; + case 9: + r1 = NULL; + break; + case 10: + r1 = &gSaveBlock1.gabbyAndTyData.quote; + *r1 = 0xFFFF; + r4 = 1; + break; + case 11: + // TODO: Is this the right TV show? + r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].bravoTrainer.var04[gSpecialVar_0x8006]; + r4 = 0; + break; + case 12: + // TODO: Is this the right TV show? + r1 = gSaveBlock1.tvShows[gSpecialVar_0x8005].bravoTrainerTower.var18; + r4 = 1; + break; + case 13: + shared1000.unk9C7C = 0xFFFF; + shared1000.unk9C7E = -1; + r1 = &shared1000.unk9C7C; + break; + default: + return; + } + sub_80E62A0(gSpecialVar_0x8004, r1, sub_80546B8, r4); +} + +void sub_80E62A0(u8 a, u16 *b, void (*c)(void), u8 d) +{ + shared1000.unk0 = c; + shared1000.unk4 = b; + shared1000.unk8 = a; + shared1000.unkB = d; + if (a == 9) + { + shared1000.unk4 = &shared1000.unk9C7C; + shared1000.unk9C7C = gSaveBlock1.easyChatPairs[0].words[0]; + shared1000.unk9C7E = gSaveBlock1.easyChatPairs[0].words[1]; + } + SetMainCallback2(sub_80E62F8); +} + +void sub_80E62F8(void) +{ + switch (gMain.state) + { + case 0: + default: + REG_DISPCNT = 0; + SetVBlankCallback(0); + ResetPaletteFade(); + ResetSpriteData(); + dp12_8087EA4(); + remove_some_task(); + sub_80EAD08(); + sub_80895F8(gUnknown_083DB698); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6DA8); + break; + case 2: + InitMenuWindow(&gWindowConfig_81E6D54); + InitMenuWindow(&gWindowConfig_81E6DA8); + MenuZeroFillScreen(); + break; + case 3: + sub_80E6424(); + break; + case 4: + sub_80E8DD8(); + break; + case 5: + sub_80E8218(); + sub_80E8CEC(); + break; + case 6: + sub_80E69F8(); + sub_80E682C(sub_80E6AA8); + SetVBlankCallback(sub_80E6A6C); + break; + case 7: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + case 8: + REG_DISPCNT = 0x1F40; + SetMainCallback2(sub_80E6A88); + FlagSet(FLAG_SYS_CHAT_USED); + break; + } + gMain.state++; +} + +void sub_80E6424(void) +{ + shared1000.unk9 = gUnknown_083DB6A4[shared1000.unk8]; + switch (shared1000.unk9) + { + case 4: + shared1000.unkA = 4; + shared1000.unk83 = 2; + shared1000.unk84 = 2; + shared1000.unk88 = 5; + shared1000.unk8A = 4; + break; + case 5: + shared1000.unkA = 4; + shared1000.unk83 = 1; + shared1000.unk84 = 4; + shared1000.unk88 = 16; + shared1000.unk8A = 2; + break; + case 0: + shared1000.unkA = 6; + shared1000.unk83 = 2; + shared1000.unk84 = 3; + shared1000.unk88 = 4; + shared1000.unk8A = 3; + break; + case 1: + shared1000.unkA = 9; + shared1000.unk83 = 2; + shared1000.unk84 = 5; + shared1000.unk88 = 4; + shared1000.unk8A = 0; + break; + case 2: + shared1000.unkA = 1; + shared1000.unk83 = 1; + shared1000.unk84 = 1; + shared1000.unk88 = 16; + shared1000.unk8A = 4; + break; + case 3: + shared1000.unkA = 2; + shared1000.unk83 = 2; + shared1000.unk84 = 1; + shared1000.unk88 = 5; + shared1000.unk8A = 3; + break; + } + shared1000.unk86 = 0; + shared1000.unk85 = 0; + shared1000.unk87 = 0; + shared1000.unk26 = 0; + shared1000.unk1BA = 0; + shared1000.unk1BE = 2; + sub_80E6554(); + sub_80EAECC(); + sub_80EB040(); + sub_80E7E50(); + sub_80E6630(); + sub_80E6690(); +} + +void sub_80E6554(void) +{ + u16 r4 = 0; + u16 r7; + u16 r5; + + for (r7 = 0; ; r7++) + { + for (r5 = 0; r5 < 2; r5++) + { + shared1000.unk2A[r7][r5] = r4++; + if (r4 == 17) + break; + } + if (r4 == 17) + break; + } + shared1000.unk28 = 17; + while (r4 < 22) + { + if (sub_80EAD7C(r4) != 0) + { + r5++; + if (r5 > 1) + { + r7++; + r5 = 0; + } + shared1000.unk2A[r7][r5] = r4; + shared1000.unk78[r4 - 17] = 1; // hmm... + shared1000.unk28++; + } + else + { + shared1000.unk78[r4 - 17] = 0; + } + r4++; + } + shared1000.unk1B6 = (shared1000.unk28 + 1) / 2; +} + +void sub_80E6630(void) +{ + u8 i; + u8 r3; + + for (i = 0; i < 4; i++) + { + const u8 *row = gUnknown_083DB6B2[i]; + + for (r3 = 0; row[r3] != EOS; r3++) + { + if (row[r3] != CHAR_SPACE) + shared1000.unk40[i][r3] = row[r3] + 0x46; + else + shared1000.unk40[i][r3] = CHAR_SPACE; + } + } +} + +void sub_80E6690(void) +{ + u8 *pointers[] = + { + shared1000.unk9C80, shared1000.unk9CC9, + shared1000.unk9D12, shared1000.unk9D5B, + }; + u8 *r3; + u16 i; + + for (i = 0; i < 2; i++) + { + const struct EasyChatPrompt *prompt = &gUnknown_083DB6F4[gUnknown_083DB7C0[shared1000.unk8][i]]; + + r3 = StringCopy(pointers[i * 2 + 0], prompt->text1); + if (prompt->unk8) + { + StringCopy(pointers[i * 2 + 1], prompt->text2); + } + else + { + *r3++ = CHAR_SPACE; + StringCopy(r3, prompt->text2); + *pointers[i * 2 + 1] = EOS; + } + } + + for (i = 0; i < 0x24; i++) + shared1000.unk9DA4[i] = 0; + shared1000.unk9DA4[i] = 0xFF; + + r3 = shared1000.unk9F6E; + r3[0] = EXT_CTRL_CODE_BEGIN; + r3[1] = 0x11; + r3[2] = 0xE0; + r3[3] = 0xFF; +} + +// Default profile phrase +const u16 gUnknown_083DB7EC[] = +{ +#if ENGLISH + EC_WORD_I_AM, + EC_WORD_A, + EC_WORD_POKEMON, + EC_WORD_GREAT, +#else + EC_WORD_I_AM, + EC_WORD_BIG, + EC_WORD_IN, + EC_WORD_POKEMON, +#endif +}; + +const u16 gUnknown_083DB7F4[] = +{ + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_QUES, + EC_WORD_HERE_I_COME, + EC_WORD_EXCL, +}; + +// ResetDefaultEasyChatPhrases +void InitEasyChatPhrases(void) +{ + u16 i; + u16 j; + + for (i = 0; i < 4; i++) + gSaveBlock1.easyChats.unk2B1C[i] = gUnknown_083DB7EC[i]; + + for (i = 0; i < 6; i++) + gSaveBlock1.easyChats.unk2B28[i] = gUnknown_083DB7F4[i]; + + for (i = 0; i < 6; i++) + { + gSaveBlock1.easyChats.unk2B34[i] = 0xFFFF; + gSaveBlock1.easyChats.unk2B40[i] = 0xFFFF; + } + + for (i = 0; i < 16; i++) + { + for (j = 0; j < 9; j++) + gSaveBlock1.mail[i].words[j] = 0xFFFF; + } + + for (i = 0; i < 64; i++) + gSaveBlock1.unk2D8C[i] = 0; +} + +void sub_80E682C(void (*func)(void)) +{ + shared1000.unk20 = func; + shared1000.unk24 = 0; +} + +void sub_80E683C(void) +{ + u16 i; + + if (shared1000.unk26 == 0) + { + for (i = 0; i < shared1000.unk1B6; i++) + shared1000.unk1AA[i] = 2; + shared1000.unk1AA[i - 1] = shared1000.unk28 % 2; + if (shared1000.unk1AA[i - 1] == 0) + shared1000.unk1AA[i - 1] = 2; + } + else + { + shared1000.unk1AA[0] = 7; + shared1000.unk1AA[1] = 6; + shared1000.unk1AA[2] = 7; + shared1000.unk1AA[3] = 7; + } + shared1000.unk1A8 = 0; + shared1000.unk1A9 = 0; + shared1000.unk1B5 = 0; + shared1000.unk1B7 = 0; + sub_80E9A4C(); +} + +void sub_80E68E8(void) +{ + sub_80EB0B0(); + if (shared1000.unk26 == 0) + { + u16 i; + u8 r6; + + r6 = shared1000.unk1B8; + shared1000.unk9A28 = (shared1000.unk4178[r6] + 1) / 2; + for (i = 0; i < shared1000.unk9A28; i++) + shared1000.unk99A6[i] = 2; + i--; + shared1000.unk99A6[i] = shared1000.unk4178[r6] % 2; + if (shared1000.unk99A6[i] == 0) + shared1000.unk99A6[i] = 2; + } + else + { + u16 i; + u8 r6; + + r6 = shared1000.unk1B8; + shared1000.unk9A28 = (shared1000.unk4142[r6] + 1) / 2; + for (i = 0; i < shared1000.unk9A28; i++) + shared1000.unk99A6[i] = 2; + i--; + shared1000.unk99A6[i] = shared1000.unk4142[r6] % 2; + if (shared1000.unk99A6[i] == 0) + shared1000.unk99A6[i] = 2; + } + shared1000.unk99A4 = 0; + shared1000.unk99A5 = 0; + shared1000.unk9A29 = 0; + sub_80E9A4C(); +} + +void sub_80E69F8(void) +{ + switch (shared1000.unk8) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 6: + case 9: + case 13: + default: + sub_80E9368(shared1000.unk8); + break; + case 5: + case 7: + case 8: + case 10: + case 11: + case 12: + sub_80E9368(shared1000.unk8); + sub_80E8BF4(shared1000.unkB, shared1000.unk9); + break; + } +} + +void sub_80E6A6C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + sub_80EAC5C(); + TransferPlttBuffer(); + sub_8089668(); +} + +void sub_80E6A88(void) +{ + shared1000.unk20(); + AnimateSprites(); + BuildOamBuffer(); + sub_80EAD08(); +} + +void sub_80E6AA8(void) +{ + if (!UpdatePaletteFade()) + sub_80E682C(sub_80E6AC4); +} + +void sub_80E6AC4(void) +{ + sub_80E88F0(); + sub_80E8398(0); + sub_80E91D4(0); + sub_80E682C(sub_80E6AE4); +} + +void sub_80E6AE4(void) +{ + shared1000.unk87 = sub_80E75D8(); + if (shared1000.unk87) + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (shared1000.unk86 == shared1000.unk84) + { + switch (shared1000.unk85) + { + case 0: + sub_80E682C(sub_80E6BC0); + return; + case 1: + sub_80E682C(sub_80E6C84); + return; + case 2: + sub_80E682C(sub_80E6D7C); + return; + } + } + else + { + shared1000.unk27 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + sub_80E7574(); + sub_80E682C(sub_80E6F68); + return; + } + } + if (gMain.newKeys & B_BUTTON) + { + sub_80E682C(sub_80E6C84); + } +} + +void sub_80E6BC0(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(2); + if (shared1000.unk8 == 6) + { + sub_80E91D4(6); + shared1000.unk24 = 100; + } + else + { + sub_80E91D4(2); + DisplayYesNoMenu(23, 8, 1); + MoveMenuCursor(1); + shared1000.unk24++; + } + break; + case 1: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + sub_80E7D6C(); + sub_80E98C4(); + sub_80E95A4(); + shared1000.unk24++; + break; + case -1: + case 1: + shared1000.unk24++; + break; + } + break; + case 2: + sub_80E81FC(); + sub_80E682C(sub_80E6AC4); + break; + case 100: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E6C84(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(2); + sub_80E91D4(3); + DisplayYesNoMenu(23, 8, 0); + MoveMenuCursor(1); + if (shared1000.unk8 == 9 + || shared1000.unk8 == 4 + || shared1000.unk8 == 7 + || shared1000.unk8 == 8 + || shared1000.unk8 == 10 + || shared1000.unk8 == 11 + || shared1000.unk8 == 12 + || shared1000.unk8 == 5 + || shared1000.unk8 == 13) + shared1000.unk24 = 2; + else + shared1000.unk24++; + break; + case 1: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + sub_80E91D4(4); + DisplayYesNoMenu(23, 8, 0); + MoveMenuCursor(1); + shared1000.unk24++; + break; + case -1: + case 1: + shared1000.unk24 = 0xFF; + break; + } + break; + case 2: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + gSpecialVar_Result = 0; + sub_80E682C(sub_80E752C); + break; + case -1: + case 1: + shared1000.unk24 = 0xFF; + break; + } + break; + case 0xFF: + HandleDestroyMenuCursors(); + sub_80E81FC(); + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E6D7C(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(2); + if (sub_80E8054()) + { + sub_80E91D4(5); + shared1000.unk24 = 10; + break; + } + if (shared1000.unk8 == 9) + { + if (sub_80E7FA8() == 0) + { + sub_80E91D4(8); + shared1000.unk24 = 10; + break; + } + if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) + { + sub_80E91D4(9); + shared1000.unk24 = 10; + break; + } + } + if (shared1000.unk8 == 4 && sub_80E7FA8() == 0) + { + sub_80E682C(sub_80E6C84); + } + else + { + sub_80E91D4(1); + sub_80E9744(); + DisplayYesNoMenu(23, 8, 0); + MoveMenuCursor(0); + shared1000.unk24++; + } + break; + case 1: + switch (ProcessMenuInputNoWrap_()) + { + case 0: + gSpecialVar_Result = (sub_80E7FA8() != 0); + sub_80E7D9C(); + if (shared1000.unk8 == 0) + gSpecialVar_0x8004 = sub_80E8094(); + if (shared1000.unk8 == 9) // dewford trend? + { + sub_80E81C0(); + gSpecialVar_0x8004 = sub_80FA364(&shared1000.unk9C7C); + } + if (shared1000.unk8 == 13) + { + if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) + gSpecialVar_Result = 0; + gSpecialVar_0x8004 = sub_80E810C(); + } + sub_80E682C(sub_80E752C); + break; + case -1: + case 1: + HandleDestroyMenuCursors(); + sub_80E81FC(); + if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + { + shared1000.unk24 = 100; + } + else + { + sub_80E95A4(); + sub_80E682C(sub_80E6AC4); + } + break; + } + break; + case 10: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + sub_80E682C(sub_80E6AC4); + break; + case 100: + sub_80E91D4(7); + shared1000.unk24++; + // fall through + case 101: + if (gMain.newKeys & A_BUTTON) + shared1000.unk24++; + break; + case 102: + sub_80E7E50(); + sub_80E95A4(); + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E6F68(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8398(1); + sub_80E91D4(10); + sub_80E683C(); + sub_80E9974(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 1: + if (sub_80E9EA8() != 0) + { + sub_80E8D8C(1); + sub_80E8420(); + sub_80E8958(0); + sub_80E682C(sub_80E6FC8); + } + break; + } +} + +void sub_80E6FC8(void) +{ + shared1000.unk96 = sub_80E77C8(); + if (shared1000.unk1C0 != 0) + { + PlaySE(SE_SELECT); + shared1000.unk1C4 = sub_80E6FC8; + sub_80E682C(sub_80E7458); + } + else + { + if (shared1000.unk96) + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + { + if (shared1000.unk1B7 != 0) + { + PlaySE(SE_SELECT); + switch (shared1000.unk1A8) + { + case 1: + sub_80E682C(sub_80E718C); + break; + case 2: + if (shared1000.unk8 != 6) + { + sub_80E7F00(shared1000.unk27, 0xFFFF); + sub_80E7574(); + sub_80E95A4(); + } + break; + case 3: + sub_80E682C(sub_80E7114); + break; + } + } + else + { + if (shared1000.unk26 == 0 + || shared1000.unk4142[shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]] != 0) + { + PlaySE(SE_SELECT); + sub_80E7AD4(); + sub_80E682C(sub_80E7218); + } + } + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80E682C(sub_80E7114); + } + else if (gMain.newKeys & SELECT_BUTTON) + { + sub_80E682C(sub_80E718C); + } + } +} + +void sub_80E7114(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8504(); + sub_80E9E98(); + sub_80E88F0(); + sub_80E8D8C(0); + shared1000.unk24++; + break; + case 1: + case 2: + shared1000.unk24++; + break; + case 3: + if (sub_80E9F50() != 0) + shared1000.unk24++; + break; + case 4: + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E718C(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E8504(); + sub_80E9E98(); + sub_80E88F0(); + shared1000.unk24++; + sub_80E8D54(); + break; + case 1: + if (sub_80E9FD4() != 0) + { + shared1000.unk26 = !shared1000.unk26; + sub_80E683C(); + sub_80E9974(); + sub_80E9E98(); + shared1000.unk24++; + } + break; + default: + shared1000.unk24++; + break; + case 8: + if (sub_80EA014() != 0) + { + sub_80E8420(); + sub_80E8958(0); + sub_80E682C(sub_80E6FC8); + } + break; + } +} + +void sub_80E7218(void) +{ + switch (shared1000.unk24) + { + default: + shared1000.unk24++; + break; + case 8: + sub_80E8D8C(0); + sub_80E8504(); + sub_80E9AD4(); + sub_80E68E8(); + sub_80E88F0(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 9: + if (sub_80EA050() != 0) + { + sub_80E9C94(); + shared1000.unk24++; + } + break; + case 10: + sub_80E87CC(1); + sub_80E8958(1); + sub_80E682C(sub_80E7294); + break; + case 11: + break; + } +} + +void sub_80E7294(void) +{ + shared1000.unk1B9 = sub_80E7B40(); + if (shared1000.unk1C0 != 0) + { + PlaySE(SE_SELECT); + shared1000.unk1C4 = sub_80E7294; + sub_80E682C(sub_80E7458); + } + else + { + if (shared1000.unk1B9) + PlaySE(SE_SELECT); + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80E682C(sub_80E7324); + } + else if (gMain.newKeys & B_BUTTON) + { + sub_80E682C(sub_80E73D0); + } + } +} + +void sub_80E7324(void) +{ + switch (shared1000.unk24) + { + case 0: + if (!sub_80E7DD0()) + { + sub_80E682C(sub_80E7294); + } + else + { + sub_80E88F0(); + sub_80E87CC(0); + shared1000.unk24++; + } + break; + case 1: + shared1000.unk24++; + break; + case 2: + sub_80E9E98(); + shared1000.unk24++; + break; + case 3: + if (sub_80EA184() != 0) + shared1000.unk24++; + break; + case 4: + if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + sub_80E682C(sub_80E6D7C); + else + sub_80E682C(sub_80E6AC4); + break; + } +} + +void sub_80E73D0(void) +{ + switch (shared1000.unk24) + { + case 0: + sub_80E87CC(0); + sub_80E88F0(); + shared1000.unk24++; + break; + case 1: + sub_80E9AD4(); + sub_80E9E98(); + shared1000.unk24++; + break; + case 2: + if (sub_80EA0E4() != 0) + { + sub_80E8D8C(1); + sub_80E9A14(); + shared1000.unk24++; + } + break; + case 3: + sub_80E8420(); + sub_80E8958(0); + shared1000.unk24++; + break; + case 4: + sub_80E9974(); + sub_80E682C(sub_80E6FC8); + break; + } +} + +void sub_80E7458(void) +{ + switch (shared1000.unk24) + { + case 0: + if (shared1000.unk1C4 == sub_80E6FC8) + sub_80E9D7C(); + else + sub_80E9D00(); + sub_80E9E08(shared1000.unk1BE); + shared1000.unk24++; + break; + case 1: + if (sub_80E9E54()) + { + if (shared1000.unk1C4 == sub_80E6FC8) + { + sub_80E9D7C(); + shared1000.unk1B5 += shared1000.unk1C0; + sub_80E7A98(); + shared1000.unk96 = TRUE; + } + else + { + shared1000.unk9A29 += shared1000.unk1C0; + sub_80E7D30(); + shared1000.unk1B9 = 1; + } + shared1000.unk1BE = 2; + sub_80E682C(shared1000.unk1C4); + } + break; + } +} + +void sub_80E752C(void) +{ + switch (shared1000.unk24) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + shared1000.unk24++; + break; + case 1: + if (!UpdatePaletteFade()) + SetMainCallback2(shared1000.unk0); + break; + } +} + +void sub_80E7574(void) +{ + if (shared1000.unk8 == 1 + && shared1000.unk7E[shared1000.unk86] == 2 + && sub_80EB2D4(shared1000.unkC[shared1000.unk27]) != 7) + shared1000.unk7D = 1; + else + shared1000.unk7D = 0; + shared1000.unk7D = 0; // What the hell? +} + +bool8 sub_80E75D8(void) +{ + bool8 pressedUpDown = FALSE; + u8 r0; + + if (gMain.newKeys & START_BUTTON) + { + shared1000.unk86 = shared1000.unk84; + shared1000.unk85 = 2; + return TRUE; + } + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk86--; + if (shared1000.unk86 < 0) + shared1000.unk86 = shared1000.unk84; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk86++; + if (shared1000.unk86 > shared1000.unk84) + shared1000.unk86 = 0; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + if (shared1000.unk9 == 2) + { + if (shared1000.unk86 == shared1000.unk84) + shared1000.unk85 = 2; + else + shared1000.unk85 = 0; + return TRUE; + } + else + { + if (shared1000.unk85 >= shared1000.unk83) + shared1000.unk85 = shared1000.unk83 - 1; + if (shared1000.unk86 != shared1000.unk84) + { + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + return TRUE; + } + } + else + { + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (--shared1000.unk85 < 0) + { + if (shared1000.unk86 == shared1000.unk84) + { + shared1000.unk85 = 2; + } + else + { + shared1000.unk85 = shared1000.unk83 - 1; + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + } + return TRUE; + } + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (shared1000.unk86 == shared1000.unk84) + { + if (++shared1000.unk85 > 2) + shared1000.unk85 = 0; + } + else + { + if (++shared1000.unk85 >= shared1000.unk83) + shared1000.unk85 = 0; + r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + if (r0 >= shared1000.unkA) + shared1000.unk85 = r0 - shared1000.unkA; + } + return TRUE; + } + } + return FALSE; +} + +bool8 sub_80E77C8(void) +{ + bool8 pressedLeftRight = FALSE; + bool8 pressedUpDown; + + if (shared1000.unk1B7 != 0) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk1A8--; + if (shared1000.unk1A8 < 1) + shared1000.unk1A8 = 3; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk1A8++; + if (shared1000.unk1A8 > 3) + shared1000.unk1A8 = 1; + return TRUE; + } + } + else + { + if (shared1000.unk26 == 1) + { + pressedUpDown = FALSE; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + shared1000.unk1A8--; + if (shared1000.unk1A8 < 0) + shared1000.unk1A8 = 3; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + shared1000.unk1A8++; + if (shared1000.unk1A8 > 3) + shared1000.unk1A8 = 0; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + sub_80E7A98(); + return TRUE; + } + } + else + { + pressedUpDown = FALSE; + shared1000.unk1C0 = 0; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (shared1000.unk1A8 == 0) + return FALSE; + shared1000.unk1A8--; + if (shared1000.unk1A8 < shared1000.unk1B5) + shared1000.unk1C0 = -1; + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (shared1000.unk1A8 >= shared1000.unk1B6 - 1) + return FALSE; + shared1000.unk1A8++; + if (shared1000.unk1A8 > shared1000.unk1B5 + 3) + shared1000.unk1C0 = 1; + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + if (shared1000.unk1C0 == 0) + { + sub_80E7A98(); + return TRUE; + } + return FALSE; + } + } + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if (shared1000.unk1A9 != 0) + shared1000.unk1A9--; + else + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + pressedLeftRight = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (shared1000.unk1B7 != 0 + || shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]) + shared1000.unk1A9 = 0; + else + shared1000.unk1A9++; + pressedLeftRight = TRUE; + } + + if (pressedLeftRight) + { + s8 r9 = shared1000.unk1B7; + + shared1000.unk1B7 = (shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]); + if (shared1000.unk1B7 != 0) + { + shared1000.unk1A8 -= shared1000.unk1B5; + if (shared1000.unk1A8 == 0) + { + shared1000.unk1A8 = 1; + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + } + } + else if (r9 != 0) + { + shared1000.unk1A8 += shared1000.unk1B5; + if (shared1000.unk1A9 != 0) + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; + } + return TRUE; + } + + return FALSE; +} + +void sub_80E7A98(void) +{ + if (shared1000.unk1A9 >= shared1000.unk1AA[shared1000.unk1A8]) + shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; +} + +void sub_80E7AD4(void) +{ + if (shared1000.unk26 == 0) + shared1000.unk1B8 = shared1000.unk2A[shared1000.unk1A8][shared1000.unk1A9]; + else + shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]; +} + +bool8 sub_80E7B40(void) +{ + bool8 pressedUpDown = FALSE; + + shared1000.unk1C0 = 0; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (shared1000.unk99A4 == 0) + return FALSE; + shared1000.unk99A4--; + if (shared1000.unk99A4 < shared1000.unk9A29) + { + shared1000.unk1C0 = -1; + return FALSE; + } + pressedUpDown = TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (shared1000.unk99A4 >= shared1000.unk9A28 - 1) + return FALSE; + shared1000.unk99A4++; + if (shared1000.unk99A4 >= shared1000.unk9A29 + 4) + { + shared1000.unk1C0 = 1; + return FALSE; + } + pressedUpDown = TRUE; + } + + if (pressedUpDown) + { + sub_80E7D30(); + return TRUE; + } + + if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + shared1000.unk99A5--; + if (shared1000.unk99A5 < 0) + shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; + return TRUE; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + shared1000.unk99A5++; + if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) + shared1000.unk99A5 = 0; + return TRUE; + } + + if (gMain.newKeys & START_BUTTON) + { + if (shared1000.unk9A29 != 0) + { + shared1000.unk1C0 = -shared1000.unk9A29; + if (shared1000.unk1C0 < -4) + shared1000.unk1C0 = -4; + } + shared1000.unk99A4 += shared1000.unk1C0; + shared1000.unk1BE = 4; + } + else if (gMain.newKeys & SELECT_BUTTON) + { + if (shared1000.unk9A29 < shared1000.unk9A28 - 4) + { + shared1000.unk1C0 = shared1000.unk9A28 - 4 - shared1000.unk9A29; + if (shared1000.unk1C0 > 4) + shared1000.unk1C0 = 4; + } + shared1000.unk99A4 += shared1000.unk1C0; + shared1000.unk1BE = 4; + } + + return FALSE; +} + +void sub_80E7D30(void) +{ + if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) + shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; +} + +void sub_80E7D6C(void) +{ + u16 i; + + for (i = 0; i < shared1000.unkA; i++) + sub_80E7F00(i, 0xFFFF); +} + +void sub_80E7D9C(void) +{ + u16 i; + + for (i = 0; i < shared1000.unkA; i++) + shared1000.unk4[i] = shared1000.unkC[i]; +} + +bool8 sub_80E7DD0(void) +{ + u16 r4 = shared1000.unk9A2A[shared1000.unk99A4][shared1000.unk99A5]; + + if (shared1000.unk7D != 0 + && shared1000.unk7E[shared1000.unk86] > 1 + && sub_80EB2D4(r4) == 7) + return FALSE; + + sub_80E7F00(shared1000.unk27, r4); + sub_80E95A4(); + return TRUE; +} + +void sub_80E7E50(void) +{ + u16 r5 = 0; + u16 i; + u16 j; + + for (i = 0; i < shared1000.unk84; i++) + { + shared1000.unk7E[i] = 0; + for (j = 0; j < shared1000.unk83; j++) + { + shared1000.unkC[r5] = shared1000.unk4[r5]; + shared1000.unk8C[i][j] = 0; + r5++; + } + } +} + +void sub_80E7F00(u16 a, u16 b) +{ + u16 r5 = a / shared1000.unk83; + u16 r8 = a % shared1000.unk83; + u16 r4 = sub_80EB2D4(shared1000.unkC[a]); + u16 r3 = sub_80EB2D4(b); + + if (r4 == 7) + { + if (r3 != 7) + shared1000.unk7E[r5]--; + } + else + { + if (r3 == 7) + shared1000.unk7E[r5]++; + } + r3 = 0; + shared1000.unk8C[r5][r8] = r3; + shared1000.unkC[a] = b; +} + +u8 sub_80E7FA8(void) +{ + u16 r8 = 0; + u16 i; + u8 *r1; + u8 *r2; + + for (i = 0; i < shared1000.unkA; i++) + { + sub_80EB218(shared1000.unk9E14, shared1000.unk4[i], 0); + sub_80EB218(shared1000.unk9E41, shared1000.unkC[i], 0); + r1 = shared1000.unk9E14; + r2 = shared1000.unk9E41; + while (*r1 == *r2 && *r1 != 0xFF) + { + r1++; + r2++; + } + if (*r1 != *r2) + r8++; + } + return r8; +} + +bool8 sub_80E8054(void) +{ + u16 i; + + for (i = 0; i < shared1000.unkA; i++) + { + if (shared1000.unkC[i] != 0xFFFF) + return FALSE; + } + return TRUE; +} + +// CheckMysteryEventPhrase +bool8 sub_80E8094(void) +{ + u16 i; + u8 *r3; + u8 *r4; + + for (i = 0; i < 4; i++) + { + sub_80EB218(shared1000.unk9E14, shared1000.unkC[i], 0); + sub_80EB218(shared1000.unk9E41, gMysteryEventPhrase[i], 0); + r3 = shared1000.unk9E14; + r4 = shared1000.unk9E41; + while (*r3 != 0xFF && *r4 != 0xFF) + { + if (*r3++ != *r4++) + return FALSE; + } + if (*r3 != 0xFF || *r4 != 0xFF) + return FALSE; + } + return TRUE; +} + +u8 sub_80E810C(void) +{ + u16 i; + + for (i = 0; i < 5; i++) + { + u8 *ptr; + u8 *r3; + + ptr = sub_80EB218(shared1000.unk9E6E, shared1000.unkC[0], 0); + *ptr++ = CHAR_SPACE; + sub_80EB218(ptr, shared1000.unkC[1], 0); + + ptr = sub_80EB218(shared1000.unk9EEE, gBerryMasterWifePhrases[i][0], 0); + *ptr++ = CHAR_SPACE; + sub_80EB218(ptr, gBerryMasterWifePhrases[i][1], 0); + + ptr = shared1000.unk9E6E; + r3 = shared1000.unk9EEE; + while (*ptr != EOS && *r3 != EOS) + { + if (*ptr++ != *r3++) + break; + } + if (*ptr == EOS && *r3 == EOS) + return i + 1; + } + return 0; +} + +void sub_80E81C0(void) +{ + u8 *ptr; + + ptr = sub_80EB218(gStringVar2, shared1000.unk9C7C, 0); + *ptr++ = CHAR_SPACE; + sub_80EB218(ptr, shared1000.unk9C7E, 0); +} + +void sub_80E81FC(void) +{ + PlaySE(SE_SELECT); + sub_80E95A4(); + MenuZeroFillWindowRect(0, 0, 29, 13); +} diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index f9843cda9..767128750 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -6,10 +6,12 @@ #include "easy_chat.h" #include "event_data.h" #include "field_map_obj.h" +#include "field_message_box.h" #include "graphics.h" #include "menu.h" #include "palette.h" #include "pokedex.h" +#include "random.h" #include "sprite.h" #include "string_util.h" #include "strings.h" @@ -64,7 +66,12 @@ u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(u16); bool8 sub_80EB37C(u16); bool8 sub_80EB868(u8); +static u16 sub_80EB960(void); u8 sub_80EB9C8(void); +static u16 sub_80EB9D8(void); + +// put this in .bss, damnit! +__attribute__((section(".bss"))) u8 gUnknown_03000740 = 0; const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); @@ -2617,3 +2624,425 @@ u32 de_sub_80EB748(s32 group, s32 index) return r7; } #endif + +// returns the end of the destination buffer text +u8 *EasyChat_GetWordText(u8 *dst, u16 word) +{ + u16 group; + u16 wordIndex; + const u8 *src; + u16 i; + + if (sub_80EB37C(word)) + return StringCopy(dst, gOtherText_ThreeQuestions); + + if (word == 0xFFFF) + { + *dst = EOS; + return dst; + } + else + { + group = EC_GROUP(word); + wordIndex = EC_INDEX(word); + switch (group) + { + case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_2: // 21 + dst = StringCopy(dst, gSpeciesNames[wordIndex]); + break; + case EC_GROUP_MOVE_1: // 18 + case EC_GROUP_MOVE_2: // 19 + dst = StringCopy(dst, gMoveNames[wordIndex]); + break; + default: + src = gEasyChatGroupWords[group]; + for (i = wordIndex - 1; i != 0xFFFF; i--) + { + while (*src++ != EOS) + ; + } + dst = StringCopy(dst, src); + break; + } + *dst = EOS; + return dst; + } +} + +u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ + u16 i; + u16 n; + + const u16 i1 = arg2 - 1; + + for (i = 0; i < arg3; i++) + { + u16 word; + + for (n = 0; n < i1; n++) + { + dst = EasyChat_GetWordText(dst, words[0]); + + if (words[0] != 0xFFFF) + { + dst[0] = CHAR_SPACE; + dst++; + } + + words++; + } + + word = words[0]; + words++; + dst = EasyChat_GetWordText(dst, word); + + dst[0] = CHAR_NEWLINE; + dst++; + } + + dst--; + dst[0] = EOS; + + return dst; +} + +u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) +{ + u16 i; + u16 n; + + const u16 i1 = arg2 - 1; + + for (i = 0; i < arg3; i++) + { + u16 word; + + for (n = 0; n < i1; n++) + { + dst = EasyChat_GetWordText(dst, words[0]); + + if (words[0] != 0xFFFF) + { + dst[0] = CHAR_SPACE; + dst++; + } + + words++; + } + + word = words[0]; + words++; + dst = EasyChat_GetWordText(dst, word); + + // Only difference with ConvertEasyChatWordsToString + dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL; + dst++; + } + + dst--; + dst[0] = EOS; + + return dst; +} + + +u16 unref_sub_80EB5E0(u16 arg0) +{ + const u8 *chars; + u16 i; + u16 length; + int group, word; + + + if (arg0 == 0xFFFF) + return 0; + + group = EC_GROUP(arg0); + word = EC_INDEX(arg0); + switch (group) + { + case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_2: // 21 + chars = gSpeciesNames[word]; + break; + case EC_GROUP_MOVE_1: // 18 + case EC_GROUP_MOVE_2: // 19 + chars = gMoveNames[word]; + break; + default: + chars = gEasyChatGroupWords[group]; + for (i = word - 1; i != 0xFFFF; i--) + { + while (*chars++ != EOS) + ; + } + break; + } + + length = 0; + while (*chars != EOS) + { + chars++; + length++; + } + + return length; +} + +bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) +{ + return FALSE; +} + +void unref_sub_80EB684(u8 arg0, u16 arg1) +{ + u16 *ptr; + u16 c; + + // FIXME: find actual tv shows used + switch (arg0) + { + case 5: + c = 6; + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); + break; + case 7: + c = 2; + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); + break; + case 8: + c = 1; + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); + break; + default: + return; + } + + c -= 1; + while (c != 0xFFFF) + { + *ptr = -1; + ptr++; + c -= 1; + } +} + +void sub_80EB6FC(u16 *arg0, u16 arg1) +{ + u16 i; + + for (i = arg1 - 1; i != 0xFFFF; i--) + { + *arg0 = 0xFFFF; + arg0++; + } + +} + +u16 sub_80EB72C(u16 group) +{ + u16 local1 = Random() % gEasyChatGroupSizes[group]; + + if (group == EC_GROUP_POKEMON + || group == EC_GROUP_POKEMON_2 + || group == EC_GROUP_MOVE_1 + || group == EC_GROUP_MOVE_2) + { + local1 = ((u16 *) gEasyChatGroupWords[group])[local1]; + } + + return ((group & 0x7F) << 9) | (local1 & 0x1FF); +} + +u16 sub_80EB784(u16 group) +{ + if (!sub_80EAD7C(group)) + return -1; + + if (group != EC_GROUP_POKEMON) + { + if (group == EC_GROUP_TRENDY_SAYING) + return sub_80EB960(); + } + else + { + return sub_80EB9D8(); + } + + return sub_80EB72C(group); +} + +void sub_80EB7C4(void) +{ + u16 *words; + u16 arg1, arg2; + + switch (gSpecialVar_0x8004) + { + case 0: + words = gSaveBlock1.easyChats.unk2B1C; + arg1 = 2; + arg2 = 2; + break; + case 1: + words = gSaveBlock1.easyChats.unk2B28; + if (sub_80EB680(gSaveBlock1.easyChats.unk2B28, 3, 2, 20)) + { + arg1 = 2; + arg2 = 3; + } + else + { + arg1 = 3; + arg2 = 2; + } + break; + case 2: + words = gSaveBlock1.easyChats.unk2B34; + arg1 = 3; + arg2 = 2; + break; + case 3: + words = gSaveBlock1.easyChats.unk2B40; + arg1 = 3; + arg2 = 2; + break; + default: + return; + } + + ConvertEasyChatWordsToString(gStringVar4, words, arg1, arg2); + ShowFieldAutoScrollMessage(gStringVar4); +} + +void BufferRandomHobbyOrLifestyleString(void) +{ + u16 group, local2; + + if (Random() & 1) + group = EC_GROUP_HOBBIES; + else + group = EC_GROUP_LIFESTYLE; + + local2 = sub_80EB784(group); + EasyChat_GetWordText(gStringVar2, local2); +} + +u8 sub_80EB868(u8 arg0) +{ + int offset; + int index; + + index = arg0 / 8; + offset = arg0 % 8; + return (gSaveBlock1.unk2D8C[index] >> offset) & 1; +} + +void sub_80EB890(u8 arg0) +{ + int offset; + int index; + + if (arg0 < 33) + { + index = arg0 / 8; + offset = arg0 % 8; + gSaveBlock1.unk2D8C[index] |= 1 << offset; + } +} + +u8 sub_80EB8C0(void) +{ + u8 i, count; + + for (i = 0, count = 0; i < 33; i++) + { + if (sub_80EB868(i)) + count++; + } + return count; +} + +u16 sub_80EB8EC(void) +{ + u16 i; + u16 local1, local2; + + local1 = sub_80EB8C0(); + if (local1 == 33) + return -1; + + local2 = Random() % (33 - local1); + for (i = 0; i < 33; i++) + { + if (sub_80EB868(i) == 0) + { + if (local2 == 0) + { + sub_80EB890(i); + return (i & 0x1FF) | 0x2800; + } + local2--; + } + } + return -1; +} + +static u16 sub_80EB960(void) +{ + u16 i; + u16 local1; + + local1 = sub_80EB8C0(); + if (local1 == 0) + return -1; + + local1 = Random() % local1; + for (i = 0; i < 33; i++) + { + if (sub_80EB868(i)) + { + if (local1 == 0) + return (i & 0x1FF) | 0x2800; + local1--; + } + } + + return -1; +} + +u8 sub_80EB9C8(void) +{ + return IsNationalPokedexEnabled(); +} + +static u16 sub_80EB9D8(void) +{ + u16 *speciesList; + u16 local1; + u16 i; + + local1 = sub_80EAE88(0); + + if (local1 == 0) + return -1; + + local1 = Random() % local1; + speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; + for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) + { + const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); + const u8 local2 = GetSetPokedexFlag(dexNum, 0); + + if (local2) + { + if (local1 == 0) + return *speciesList & 0x1FF; + local1--; + } + speciesList++; + } + return -1; +} diff --git a/src/easy_chat_before.c b/src/easy_chat_before.c deleted file mode 100644 index 59e463260..000000000 --- a/src/easy_chat_before.c +++ /dev/null @@ -1,1744 +0,0 @@ -#include "global.h" -#include "constants/easy_chat.h" -#include "constants/songs.h" -#include "constants/species.h" -#include "dewford_trend.h" -#include "easy_chat.h" -#include "event_data.h" -#include "ewram.h" -#include "graphics.h" -#include "main.h" -#include "menu.h" -#include "palette.h" -#include "sound.h" -#include "sprite.h" -#include "string_util.h" -#include "strings.h" -#include "unknown_task.h" - -extern const struct WindowConfig gWindowConfig_81E6D54; -extern const struct WindowConfig gWindowConfig_81E6DA8; - -extern void sub_80546B8(void); - -#define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) - -const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING}; - -const u16 gBerryMasterWifePhrases[][2] = -{ -#if ENGLISH - {EC_WORD_GREAT, EC_WORD_BATTLE}, - {EC_WORD_CHALLENGE, EC_WORD_CONTEST}, - {EC_WORD_OVERWHELMING, EC_POKEMON(LATIAS)}, - {EC_WORD_COOL, EC_POKEMON(LATIOS)}, - {EC_WORD_SUPER, EC_WORD_HUSTLE}, -#else - {EC_WORD_GREAT, EC_WORD_FIGHT}, - {EC_WORD_CONTEST, EC_WORD_CHALLENGE}, - {EC_POKEMON(LATIAS), EC_WORD_OVERWHELMING}, - {EC_POKEMON(LATIOS), EC_WORD_COOL}, - {EC_WORD_SUPER, 0xFFFF}, -#endif -}; - -// const pointer to shared1000. easy_chat might be two separate files. -struct Shared1000 *const gUnknown_083DB694 = &shared1000; - -const struct UnknownTaskStruct gUnknown_083DB698 = -{ - ®_BG3VOFS, - ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, - 1 -}; - -const u8 gUnknown_083DB6A4[] = {4, 0, 0, 0, 1, 5, 0, 2, 2, 3, 2, 2, 2, 3}; - -// choose by alphabet keyboard -const u8 gUnknown_083DB6B2[][16] = -{ - _("ABCDEF "), - _("GHIJKL"), - _("MNOPQRS"), - _("TUVWXYZ"), -}; - -struct EasyChatPrompt -{ - const u8 *text1; - const u8 *text2; - bool8 unk8; -}; - -const struct EasyChatPrompt gUnknown_083DB6F4[] = -{ - {OtherText_MakeProfilePage1, OtherText_MakeProfilePage2, TRUE}, - {OtherText_MakeMessagePage1, OtherText_MakeMessagePage2, TRUE}, - {OtherText_CombineNinePhrasesPage1, OtherText_CombineNinePhrasesPage2, TRUE}, - {OtherText_DescribeFeelingsPage1, OtherText_DescribeFeelingsPage2, TRUE}, - {OtherText_ImproveBardSongPage1, OtherText_ImproveBardSongPage2, TRUE}, - {OtherText_CombineTwoPhrasesPage1, OtherText_CombineTwoPhrasesPage2, TRUE}, - {OtherText_YourProfile, OtherText_ConfirmTrendyPage2, FALSE}, - {OtherText_YourFeelingBattle, OtherText_ConfirmTrendyPage2, TRUE}, - {OtherText_SetWinMessage, OtherText_ConfirmTrendyPage2, TRUE}, - {OtherText_SetLossMessage, OtherText_ConfirmTrendyPage2, TRUE}, - {OtherText_MailMessage, OtherText_ConfirmTrendyPage2, TRUE}, - {OtherText_MailSalutation, OtherText_ConfirmTrendyPage2, TRUE}, - {OtherText_NewSong, OtherText_ConfirmTrendyPage2, FALSE}, - {OtherText_TheAnswer, OtherText_ConfirmTrendyPage2, FALSE}, - {OtherText_ConfirmTrendyPage1, OtherText_ConfirmTrendyPage2, TRUE}, - {OtherText_HipsterPage1, OtherText_HipsterPage2, TRUE}, - {OtherText_WithFourPhrases, OtherText_CombineNinePhrasesPage2, TRUE}, -}; - -const u8 gUnknown_083DB7C0[][2] = -{ - { 0, 6}, - { 1, 7}, - { 1, 8}, - { 1, 9}, - { 2, 10}, - {16, 13}, - { 4, 12}, - { 3, 13}, - { 3, 13}, - { 5, 14}, - { 3, 13}, - { 3, 13}, - { 3, 13}, - {15, 13}, -}; - -void sub_80E62F8(void); -void sub_80E6424(void); -void sub_80E6554(void); -void sub_80E6630(void); -void sub_80E6690(void); -void sub_80E682C(void (*)(void)); -void sub_80E69F8(void); -void sub_80E6A6C(void); -void sub_80E6A88(void); -void sub_80E6AA8(void); -void sub_80E6AC4(void); -void sub_80E6AE4(void); -void sub_80E6BC0(void); -void sub_80E6C84(void); -void sub_80E6D7C(void); -void sub_80E6F68(void); -void sub_80E6FC8(void); -void sub_80E7114(void); -void sub_80E718C(void); -void sub_80E7218(void); -void sub_80E7294(void); -void sub_80E7324(void); -void sub_80E73D0(void); -void sub_80E7458(void); -void sub_80E752C(void); -void sub_80E7574(void); -bool8 sub_80E75D8(void); -bool8 sub_80E77C8(void); -void sub_80E7A98(void); -void sub_80E7AD4(void); -bool8 sub_80E7B40(void); -void sub_80E7D30(void); -void sub_80E7D6C(void); -void sub_80E7D9C(void); -bool8 sub_80E7DD0(void); -void sub_80E7E50(void); -void sub_80E7F00(u16, u16); -u8 sub_80E7FA8(void); -bool8 sub_80E8054(void); -u8 sub_80E8094(void); -u8 sub_80E810C(void); -void sub_80E81C0(void); -void sub_80E81FC(void); -void sub_80E8218(void); - -void sub_80E8398(); -void sub_80E8420(void); -void sub_80E8504(void); -void sub_80E87CC(); - -void sub_80E88F0(void); -void sub_80E8958(); - -void sub_80E8BF4(); -void sub_80E8CEC(void); -void sub_80E8D54(void); -void sub_80E8D8C(); -void sub_80E8DD8(void); -void sub_80E91D4(); -void sub_80E9368(); -void sub_80E95A4(void); -void sub_80E9744(void); -void sub_80E98C4(void); -void sub_80E9974(void); -void sub_80E9A14(void); -void sub_80E9A4C(void); -void sub_80E9AD4(void); -void sub_80E9C94(void); -void sub_80E9D00(void); -void sub_80E9D7C(void); -void sub_80E9E08(); -bool8 sub_80E9E54(void); -void sub_80E9E98(void); -u8 sub_80E9EA8(void); -u8 sub_80E9F50(void); -u8 sub_80E9FD4(void); -u8 sub_80EA014(void); -u8 sub_80EA050(void); -u8 sub_80EA0E4(void); -u8 sub_80EA184(void); -void sub_80EAC5C(void); -void sub_80EAD08(void); -u8 sub_80EAD7C(u8); -void sub_80EAECC(void); -void sub_80EB040(void); -void sub_80EB0B0(void); -u8 *sub_80EB218(u8 *, u16, u16); -u16 sub_80EB2D4(); -bool8 sub_80EB680(u16 *, u16, u16, u16); - -void sub_80E60D8(void) -{ - u8 r4 = 3; - u16 *r1; - - switch (gSpecialVar_0x8004) - { - case 0: - r1 = gSaveBlock1.easyChats.unk2B1C; - break; - case 1: - r1 = gSaveBlock1.easyChats.unk2B28; - break; - case 2: - r1 = gSaveBlock1.easyChats.unk2B34; - break; - case 3: - r1 = gSaveBlock1.easyChats.unk2B40; - break; - case 4: - r1 = gSaveBlock1.mail[gSpecialVar_0x8005].words; - break; - case 6: - { - struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; - u16 i; - for (i = 0; i < 6; i++) - bard->temporaryLyrics[i] = bard->songLyrics[i]; - r1 = bard->temporaryLyrics; - } - break; - case 5: - // TODO: Is this the right TV show? - r1 = gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubLetter.pad04; - r4 = gSpecialVar_0x8006; - break; - case 7: - // TODO: Is this the right TV show? - r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubOpinions.var1C[gSpecialVar_0x8006]; - r4 = 1; - break; - case 8: - // TODO: Is this the right TV show? - r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].fanclubOpinions.var02; - r4 = 0; - break; - case 9: - r1 = NULL; - break; - case 10: - r1 = &gSaveBlock1.gabbyAndTyData.quote; - *r1 = 0xFFFF; - r4 = 1; - break; - case 11: - // TODO: Is this the right TV show? - r1 = &gSaveBlock1.tvShows[gSpecialVar_0x8005].bravoTrainer.var04[gSpecialVar_0x8006]; - r4 = 0; - break; - case 12: - // TODO: Is this the right TV show? - r1 = gSaveBlock1.tvShows[gSpecialVar_0x8005].bravoTrainerTower.var18; - r4 = 1; - break; - case 13: - shared1000.unk9C7C = 0xFFFF; - shared1000.unk9C7E = -1; - r1 = &shared1000.unk9C7C; - break; - default: - return; - } - sub_80E62A0(gSpecialVar_0x8004, r1, sub_80546B8, r4); -} - -void sub_80E62A0(u8 a, u16 *b, void (*c)(void), u8 d) -{ - shared1000.unk0 = c; - shared1000.unk4 = b; - shared1000.unk8 = a; - shared1000.unkB = d; - if (a == 9) - { - shared1000.unk4 = &shared1000.unk9C7C; - shared1000.unk9C7C = gSaveBlock1.easyChatPairs[0].words[0]; - shared1000.unk9C7E = gSaveBlock1.easyChatPairs[0].words[1]; - } - SetMainCallback2(sub_80E62F8); -} - -void sub_80E62F8(void) -{ - switch (gMain.state) - { - case 0: - default: - REG_DISPCNT = 0; - SetVBlankCallback(0); - ResetPaletteFade(); - ResetSpriteData(); - dp12_8087EA4(); - remove_some_task(); - sub_80EAD08(); - sub_80895F8(gUnknown_083DB698); - FreeSpriteTileRanges(); - FreeAllSpritePalettes(); - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E6DA8); - break; - case 2: - InitMenuWindow(&gWindowConfig_81E6D54); - InitMenuWindow(&gWindowConfig_81E6DA8); - MenuZeroFillScreen(); - break; - case 3: - sub_80E6424(); - break; - case 4: - sub_80E8DD8(); - break; - case 5: - sub_80E8218(); - sub_80E8CEC(); - break; - case 6: - sub_80E69F8(); - sub_80E682C(sub_80E6AA8); - SetVBlankCallback(sub_80E6A6C); - break; - case 7: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - break; - case 8: - REG_DISPCNT = 0x1F40; - SetMainCallback2(sub_80E6A88); - FlagSet(FLAG_SYS_CHAT_USED); - break; - } - gMain.state++; -} - -void sub_80E6424(void) -{ - shared1000.unk9 = gUnknown_083DB6A4[shared1000.unk8]; - switch (shared1000.unk9) - { - case 4: - shared1000.unkA = 4; - shared1000.unk83 = 2; - shared1000.unk84 = 2; - shared1000.unk88 = 5; - shared1000.unk8A = 4; - break; - case 5: - shared1000.unkA = 4; - shared1000.unk83 = 1; - shared1000.unk84 = 4; - shared1000.unk88 = 16; - shared1000.unk8A = 2; - break; - case 0: - shared1000.unkA = 6; - shared1000.unk83 = 2; - shared1000.unk84 = 3; - shared1000.unk88 = 4; - shared1000.unk8A = 3; - break; - case 1: - shared1000.unkA = 9; - shared1000.unk83 = 2; - shared1000.unk84 = 5; - shared1000.unk88 = 4; - shared1000.unk8A = 0; - break; - case 2: - shared1000.unkA = 1; - shared1000.unk83 = 1; - shared1000.unk84 = 1; - shared1000.unk88 = 16; - shared1000.unk8A = 4; - break; - case 3: - shared1000.unkA = 2; - shared1000.unk83 = 2; - shared1000.unk84 = 1; - shared1000.unk88 = 5; - shared1000.unk8A = 3; - break; - } - shared1000.unk86 = 0; - shared1000.unk85 = 0; - shared1000.unk87 = 0; - shared1000.unk26 = 0; - shared1000.unk1BA = 0; - shared1000.unk1BE = 2; - sub_80E6554(); - sub_80EAECC(); - sub_80EB040(); - sub_80E7E50(); - sub_80E6630(); - sub_80E6690(); -} - -void sub_80E6554(void) -{ - u16 r4 = 0; - u16 r7; - u16 r5; - - for (r7 = 0; ; r7++) - { - for (r5 = 0; r5 < 2; r5++) - { - shared1000.unk2A[r7][r5] = r4++; - if (r4 == 17) - break; - } - if (r4 == 17) - break; - } - shared1000.unk28 = 17; - while (r4 < 22) - { - if (sub_80EAD7C(r4) != 0) - { - r5++; - if (r5 > 1) - { - r7++; - r5 = 0; - } - shared1000.unk2A[r7][r5] = r4; - shared1000.unk78[r4 - 17] = 1; // hmm... - shared1000.unk28++; - } - else - { - shared1000.unk78[r4 - 17] = 0; - } - r4++; - } - shared1000.unk1B6 = (shared1000.unk28 + 1) / 2; -} - -void sub_80E6630(void) -{ - u8 i; - u8 r3; - - for (i = 0; i < 4; i++) - { - const u8 *row = gUnknown_083DB6B2[i]; - - for (r3 = 0; row[r3] != EOS; r3++) - { - if (row[r3] != CHAR_SPACE) - shared1000.unk40[i][r3] = row[r3] + 0x46; - else - shared1000.unk40[i][r3] = CHAR_SPACE; - } - } -} - -void sub_80E6690(void) -{ - u8 *pointers[] = - { - shared1000.unk9C80, shared1000.unk9CC9, - shared1000.unk9D12, shared1000.unk9D5B, - }; - u8 *r3; - u16 i; - - for (i = 0; i < 2; i++) - { - const struct EasyChatPrompt *prompt = &gUnknown_083DB6F4[gUnknown_083DB7C0[shared1000.unk8][i]]; - - r3 = StringCopy(pointers[i * 2 + 0], prompt->text1); - if (prompt->unk8) - { - StringCopy(pointers[i * 2 + 1], prompt->text2); - } - else - { - *r3++ = CHAR_SPACE; - StringCopy(r3, prompt->text2); - *pointers[i * 2 + 1] = EOS; - } - } - - for (i = 0; i < 0x24; i++) - shared1000.unk9DA4[i] = 0; - shared1000.unk9DA4[i] = 0xFF; - - r3 = shared1000.unk9F6E; - r3[0] = EXT_CTRL_CODE_BEGIN; - r3[1] = 0x11; - r3[2] = 0xE0; - r3[3] = 0xFF; -} - -// Default profile phrase -const u16 gUnknown_083DB7EC[] = -{ -#if ENGLISH - EC_WORD_I_AM, - EC_WORD_A, - EC_WORD_POKEMON, - EC_WORD_GREAT, -#else - EC_WORD_I_AM, - EC_WORD_BIG, - EC_WORD_IN, - EC_WORD_POKEMON, -#endif -}; - -const u16 gUnknown_083DB7F4[] = -{ - EC_WORD_ARE, - EC_WORD_YOU, - EC_WORD_READY, - EC_WORD_QUES, - EC_WORD_HERE_I_COME, - EC_WORD_EXCL, -}; - -// ResetDefaultEasyChatPhrases -void InitEasyChatPhrases(void) -{ - u16 i; - u16 j; - - for (i = 0; i < 4; i++) - gSaveBlock1.easyChats.unk2B1C[i] = gUnknown_083DB7EC[i]; - - for (i = 0; i < 6; i++) - gSaveBlock1.easyChats.unk2B28[i] = gUnknown_083DB7F4[i]; - - for (i = 0; i < 6; i++) - { - gSaveBlock1.easyChats.unk2B34[i] = 0xFFFF; - gSaveBlock1.easyChats.unk2B40[i] = 0xFFFF; - } - - for (i = 0; i < 16; i++) - { - for (j = 0; j < 9; j++) - gSaveBlock1.mail[i].words[j] = 0xFFFF; - } - - for (i = 0; i < 64; i++) - gSaveBlock1.unk2D8C[i] = 0; -} - -void sub_80E682C(void (*func)(void)) -{ - shared1000.unk20 = func; - shared1000.unk24 = 0; -} - -void sub_80E683C(void) -{ - u16 i; - - if (shared1000.unk26 == 0) - { - for (i = 0; i < shared1000.unk1B6; i++) - shared1000.unk1AA[i] = 2; - shared1000.unk1AA[i - 1] = shared1000.unk28 % 2; - if (shared1000.unk1AA[i - 1] == 0) - shared1000.unk1AA[i - 1] = 2; - } - else - { - shared1000.unk1AA[0] = 7; - shared1000.unk1AA[1] = 6; - shared1000.unk1AA[2] = 7; - shared1000.unk1AA[3] = 7; - } - shared1000.unk1A8 = 0; - shared1000.unk1A9 = 0; - shared1000.unk1B5 = 0; - shared1000.unk1B7 = 0; - sub_80E9A4C(); -} - -void sub_80E68E8(void) -{ - sub_80EB0B0(); - if (shared1000.unk26 == 0) - { - u16 i; - u8 r6; - - r6 = shared1000.unk1B8; - shared1000.unk9A28 = (shared1000.unk4178[r6] + 1) / 2; - for (i = 0; i < shared1000.unk9A28; i++) - shared1000.unk99A6[i] = 2; - i--; - shared1000.unk99A6[i] = shared1000.unk4178[r6] % 2; - if (shared1000.unk99A6[i] == 0) - shared1000.unk99A6[i] = 2; - } - else - { - u16 i; - u8 r6; - - r6 = shared1000.unk1B8; - shared1000.unk9A28 = (shared1000.unk4142[r6] + 1) / 2; - for (i = 0; i < shared1000.unk9A28; i++) - shared1000.unk99A6[i] = 2; - i--; - shared1000.unk99A6[i] = shared1000.unk4142[r6] % 2; - if (shared1000.unk99A6[i] == 0) - shared1000.unk99A6[i] = 2; - } - shared1000.unk99A4 = 0; - shared1000.unk99A5 = 0; - shared1000.unk9A29 = 0; - sub_80E9A4C(); -} - -void sub_80E69F8(void) -{ - switch (shared1000.unk8) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 6: - case 9: - case 13: - default: - sub_80E9368(shared1000.unk8); - break; - case 5: - case 7: - case 8: - case 10: - case 11: - case 12: - sub_80E9368(shared1000.unk8); - sub_80E8BF4(shared1000.unkB, shared1000.unk9); - break; - } -} - -void sub_80E6A6C(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - sub_80EAC5C(); - TransferPlttBuffer(); - sub_8089668(); -} - -void sub_80E6A88(void) -{ - shared1000.unk20(); - AnimateSprites(); - BuildOamBuffer(); - sub_80EAD08(); -} - -void sub_80E6AA8(void) -{ - if (!UpdatePaletteFade()) - sub_80E682C(sub_80E6AC4); -} - -void sub_80E6AC4(void) -{ - sub_80E88F0(); - sub_80E8398(0); - sub_80E91D4(0); - sub_80E682C(sub_80E6AE4); -} - -void sub_80E6AE4(void) -{ - shared1000.unk87 = sub_80E75D8(); - if (shared1000.unk87) - PlaySE(SE_SELECT); - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - if (shared1000.unk86 == shared1000.unk84) - { - switch (shared1000.unk85) - { - case 0: - sub_80E682C(sub_80E6BC0); - return; - case 1: - sub_80E682C(sub_80E6C84); - return; - case 2: - sub_80E682C(sub_80E6D7C); - return; - } - } - else - { - shared1000.unk27 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - sub_80E7574(); - sub_80E682C(sub_80E6F68); - return; - } - } - if (gMain.newKeys & B_BUTTON) - { - sub_80E682C(sub_80E6C84); - } -} - -void sub_80E6BC0(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E8398(2); - if (shared1000.unk8 == 6) - { - sub_80E91D4(6); - shared1000.unk24 = 100; - } - else - { - sub_80E91D4(2); - DisplayYesNoMenu(23, 8, 1); - MoveMenuCursor(1); - shared1000.unk24++; - } - break; - case 1: - switch (ProcessMenuInputNoWrap_()) - { - case 0: - sub_80E7D6C(); - sub_80E98C4(); - sub_80E95A4(); - shared1000.unk24++; - break; - case -1: - case 1: - shared1000.unk24++; - break; - } - break; - case 2: - sub_80E81FC(); - sub_80E682C(sub_80E6AC4); - break; - case 100: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - sub_80E682C(sub_80E6AC4); - break; - } -} - -void sub_80E6C84(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E8398(2); - sub_80E91D4(3); - DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(1); - if (shared1000.unk8 == 9 - || shared1000.unk8 == 4 - || shared1000.unk8 == 7 - || shared1000.unk8 == 8 - || shared1000.unk8 == 10 - || shared1000.unk8 == 11 - || shared1000.unk8 == 12 - || shared1000.unk8 == 5 - || shared1000.unk8 == 13) - shared1000.unk24 = 2; - else - shared1000.unk24++; - break; - case 1: - switch (ProcessMenuInputNoWrap_()) - { - case 0: - sub_80E91D4(4); - DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(1); - shared1000.unk24++; - break; - case -1: - case 1: - shared1000.unk24 = 0xFF; - break; - } - break; - case 2: - switch (ProcessMenuInputNoWrap_()) - { - case 0: - gSpecialVar_Result = 0; - sub_80E682C(sub_80E752C); - break; - case -1: - case 1: - shared1000.unk24 = 0xFF; - break; - } - break; - case 0xFF: - HandleDestroyMenuCursors(); - sub_80E81FC(); - sub_80E682C(sub_80E6AC4); - break; - } -} - -void sub_80E6D7C(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E8398(2); - if (sub_80E8054()) - { - sub_80E91D4(5); - shared1000.unk24 = 10; - break; - } - if (shared1000.unk8 == 9) - { - if (sub_80E7FA8() == 0) - { - sub_80E91D4(8); - shared1000.unk24 = 10; - break; - } - if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) - { - sub_80E91D4(9); - shared1000.unk24 = 10; - break; - } - } - if (shared1000.unk8 == 4 && sub_80E7FA8() == 0) - { - sub_80E682C(sub_80E6C84); - } - else - { - sub_80E91D4(1); - sub_80E9744(); - DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(0); - shared1000.unk24++; - } - break; - case 1: - switch (ProcessMenuInputNoWrap_()) - { - case 0: - gSpecialVar_Result = (sub_80E7FA8() != 0); - sub_80E7D9C(); - if (shared1000.unk8 == 0) - gSpecialVar_0x8004 = sub_80E8094(); - if (shared1000.unk8 == 9) // dewford trend? - { - sub_80E81C0(); - gSpecialVar_0x8004 = sub_80FA364(&shared1000.unk9C7C); - } - if (shared1000.unk8 == 13) - { - if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) - gSpecialVar_Result = 0; - gSpecialVar_0x8004 = sub_80E810C(); - } - sub_80E682C(sub_80E752C); - break; - case -1: - case 1: - HandleDestroyMenuCursors(); - sub_80E81FC(); - if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) - { - shared1000.unk24 = 100; - } - else - { - sub_80E95A4(); - sub_80E682C(sub_80E6AC4); - } - break; - } - break; - case 10: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - sub_80E682C(sub_80E6AC4); - break; - case 100: - sub_80E91D4(7); - shared1000.unk24++; - // fall through - case 101: - if (gMain.newKeys & A_BUTTON) - shared1000.unk24++; - break; - case 102: - sub_80E7E50(); - sub_80E95A4(); - sub_80E682C(sub_80E6AC4); - break; - } -} - -void sub_80E6F68(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E8398(1); - sub_80E91D4(10); - sub_80E683C(); - sub_80E9974(); - sub_80E9E98(); - shared1000.unk24++; - break; - case 1: - if (sub_80E9EA8() != 0) - { - sub_80E8D8C(1); - sub_80E8420(); - sub_80E8958(0); - sub_80E682C(sub_80E6FC8); - } - break; - } -} - -void sub_80E6FC8(void) -{ - shared1000.unk96 = sub_80E77C8(); - if (shared1000.unk1C0 != 0) - { - PlaySE(SE_SELECT); - shared1000.unk1C4 = sub_80E6FC8; - sub_80E682C(sub_80E7458); - } - else - { - if (shared1000.unk96) - PlaySE(SE_SELECT); - if (gMain.newKeys & A_BUTTON) - { - if (shared1000.unk1B7 != 0) - { - PlaySE(SE_SELECT); - switch (shared1000.unk1A8) - { - case 1: - sub_80E682C(sub_80E718C); - break; - case 2: - if (shared1000.unk8 != 6) - { - sub_80E7F00(shared1000.unk27, 0xFFFF); - sub_80E7574(); - sub_80E95A4(); - } - break; - case 3: - sub_80E682C(sub_80E7114); - break; - } - } - else - { - if (shared1000.unk26 == 0 - || shared1000.unk4142[shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]] != 0) - { - PlaySE(SE_SELECT); - sub_80E7AD4(); - sub_80E682C(sub_80E7218); - } - } - } - else if (gMain.newKeys & B_BUTTON) - { - sub_80E682C(sub_80E7114); - } - else if (gMain.newKeys & SELECT_BUTTON) - { - sub_80E682C(sub_80E718C); - } - } -} - -void sub_80E7114(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E8504(); - sub_80E9E98(); - sub_80E88F0(); - sub_80E8D8C(0); - shared1000.unk24++; - break; - case 1: - case 2: - shared1000.unk24++; - break; - case 3: - if (sub_80E9F50() != 0) - shared1000.unk24++; - break; - case 4: - sub_80E682C(sub_80E6AC4); - break; - } -} - -void sub_80E718C(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E8504(); - sub_80E9E98(); - sub_80E88F0(); - shared1000.unk24++; - sub_80E8D54(); - break; - case 1: - if (sub_80E9FD4() != 0) - { - shared1000.unk26 = !shared1000.unk26; - sub_80E683C(); - sub_80E9974(); - sub_80E9E98(); - shared1000.unk24++; - } - break; - default: - shared1000.unk24++; - break; - case 8: - if (sub_80EA014() != 0) - { - sub_80E8420(); - sub_80E8958(0); - sub_80E682C(sub_80E6FC8); - } - break; - } -} - -void sub_80E7218(void) -{ - switch (shared1000.unk24) - { - default: - shared1000.unk24++; - break; - case 8: - sub_80E8D8C(0); - sub_80E8504(); - sub_80E9AD4(); - sub_80E68E8(); - sub_80E88F0(); - sub_80E9E98(); - shared1000.unk24++; - break; - case 9: - if (sub_80EA050() != 0) - { - sub_80E9C94(); - shared1000.unk24++; - } - break; - case 10: - sub_80E87CC(1); - sub_80E8958(1); - sub_80E682C(sub_80E7294); - break; - case 11: - break; - } -} - -void sub_80E7294(void) -{ - shared1000.unk1B9 = sub_80E7B40(); - if (shared1000.unk1C0 != 0) - { - PlaySE(SE_SELECT); - shared1000.unk1C4 = sub_80E7294; - sub_80E682C(sub_80E7458); - } - else - { - if (shared1000.unk1B9) - PlaySE(SE_SELECT); - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - sub_80E682C(sub_80E7324); - } - else if (gMain.newKeys & B_BUTTON) - { - sub_80E682C(sub_80E73D0); - } - } -} - -void sub_80E7324(void) -{ - switch (shared1000.unk24) - { - case 0: - if (!sub_80E7DD0()) - { - sub_80E682C(sub_80E7294); - } - else - { - sub_80E88F0(); - sub_80E87CC(0); - shared1000.unk24++; - } - break; - case 1: - shared1000.unk24++; - break; - case 2: - sub_80E9E98(); - shared1000.unk24++; - break; - case 3: - if (sub_80EA184() != 0) - shared1000.unk24++; - break; - case 4: - if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) - sub_80E682C(sub_80E6D7C); - else - sub_80E682C(sub_80E6AC4); - break; - } -} - -void sub_80E73D0(void) -{ - switch (shared1000.unk24) - { - case 0: - sub_80E87CC(0); - sub_80E88F0(); - shared1000.unk24++; - break; - case 1: - sub_80E9AD4(); - sub_80E9E98(); - shared1000.unk24++; - break; - case 2: - if (sub_80EA0E4() != 0) - { - sub_80E8D8C(1); - sub_80E9A14(); - shared1000.unk24++; - } - break; - case 3: - sub_80E8420(); - sub_80E8958(0); - shared1000.unk24++; - break; - case 4: - sub_80E9974(); - sub_80E682C(sub_80E6FC8); - break; - } -} - -void sub_80E7458(void) -{ - switch (shared1000.unk24) - { - case 0: - if (shared1000.unk1C4 == sub_80E6FC8) - sub_80E9D7C(); - else - sub_80E9D00(); - sub_80E9E08(shared1000.unk1BE); - shared1000.unk24++; - break; - case 1: - if (sub_80E9E54()) - { - if (shared1000.unk1C4 == sub_80E6FC8) - { - sub_80E9D7C(); - shared1000.unk1B5 += shared1000.unk1C0; - sub_80E7A98(); - shared1000.unk96 = TRUE; - } - else - { - shared1000.unk9A29 += shared1000.unk1C0; - sub_80E7D30(); - shared1000.unk1B9 = 1; - } - shared1000.unk1BE = 2; - sub_80E682C(shared1000.unk1C4); - } - break; - } -} - -void sub_80E752C(void) -{ - switch (shared1000.unk24) - { - case 0: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - shared1000.unk24++; - break; - case 1: - if (!UpdatePaletteFade()) - SetMainCallback2(shared1000.unk0); - break; - } -} - -void sub_80E7574(void) -{ - if (shared1000.unk8 == 1 - && shared1000.unk7E[shared1000.unk86] == 2 - && sub_80EB2D4(shared1000.unkC[shared1000.unk27]) != 7) - shared1000.unk7D = 1; - else - shared1000.unk7D = 0; - shared1000.unk7D = 0; // What the hell? -} - -bool8 sub_80E75D8(void) -{ - bool8 pressedUpDown = FALSE; - u8 r0; - - if (gMain.newKeys & START_BUTTON) - { - shared1000.unk86 = shared1000.unk84; - shared1000.unk85 = 2; - return TRUE; - } - - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - shared1000.unk86--; - if (shared1000.unk86 < 0) - shared1000.unk86 = shared1000.unk84; - pressedUpDown = TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - shared1000.unk86++; - if (shared1000.unk86 > shared1000.unk84) - shared1000.unk86 = 0; - pressedUpDown = TRUE; - } - - if (pressedUpDown) - { - if (shared1000.unk9 == 2) - { - if (shared1000.unk86 == shared1000.unk84) - shared1000.unk85 = 2; - else - shared1000.unk85 = 0; - return TRUE; - } - else - { - if (shared1000.unk85 >= shared1000.unk83) - shared1000.unk85 = shared1000.unk83 - 1; - if (shared1000.unk86 != shared1000.unk84) - { - r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - if (r0 >= shared1000.unkA) - shared1000.unk85 = r0 - shared1000.unkA; - } - return TRUE; - } - } - else - { - if (gMain.newAndRepeatedKeys & DPAD_LEFT) - { - if (--shared1000.unk85 < 0) - { - if (shared1000.unk86 == shared1000.unk84) - { - shared1000.unk85 = 2; - } - else - { - shared1000.unk85 = shared1000.unk83 - 1; - r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - if (r0 >= shared1000.unkA) - shared1000.unk85 = r0 - shared1000.unkA; - } - } - return TRUE; - } - if (gMain.newAndRepeatedKeys & DPAD_RIGHT) - { - if (shared1000.unk86 == shared1000.unk84) - { - if (++shared1000.unk85 > 2) - shared1000.unk85 = 0; - } - else - { - if (++shared1000.unk85 >= shared1000.unk83) - shared1000.unk85 = 0; - r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - if (r0 >= shared1000.unkA) - shared1000.unk85 = r0 - shared1000.unkA; - } - return TRUE; - } - } - return FALSE; -} - -bool8 sub_80E77C8(void) -{ - bool8 pressedLeftRight = FALSE; - bool8 pressedUpDown; - - if (shared1000.unk1B7 != 0) - { - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - shared1000.unk1A8--; - if (shared1000.unk1A8 < 1) - shared1000.unk1A8 = 3; - return TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - shared1000.unk1A8++; - if (shared1000.unk1A8 > 3) - shared1000.unk1A8 = 1; - return TRUE; - } - } - else - { - if (shared1000.unk26 == 1) - { - pressedUpDown = FALSE; - - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - shared1000.unk1A8--; - if (shared1000.unk1A8 < 0) - shared1000.unk1A8 = 3; - pressedUpDown = TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - shared1000.unk1A8++; - if (shared1000.unk1A8 > 3) - shared1000.unk1A8 = 0; - pressedUpDown = TRUE; - } - - if (pressedUpDown) - { - sub_80E7A98(); - return TRUE; - } - } - else - { - pressedUpDown = FALSE; - shared1000.unk1C0 = 0; - - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - if (shared1000.unk1A8 == 0) - return FALSE; - shared1000.unk1A8--; - if (shared1000.unk1A8 < shared1000.unk1B5) - shared1000.unk1C0 = -1; - pressedUpDown = TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - if (shared1000.unk1A8 >= shared1000.unk1B6 - 1) - return FALSE; - shared1000.unk1A8++; - if (shared1000.unk1A8 > shared1000.unk1B5 + 3) - shared1000.unk1C0 = 1; - pressedUpDown = TRUE; - } - - if (pressedUpDown) - { - if (shared1000.unk1C0 == 0) - { - sub_80E7A98(); - return TRUE; - } - return FALSE; - } - } - } - - if (gMain.newAndRepeatedKeys & DPAD_LEFT) - { - if (shared1000.unk1A9 != 0) - shared1000.unk1A9--; - else - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; - pressedLeftRight = TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) - { - if (shared1000.unk1B7 != 0 - || shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]) - shared1000.unk1A9 = 0; - else - shared1000.unk1A9++; - pressedLeftRight = TRUE; - } - - if (pressedLeftRight) - { - s8 r9 = shared1000.unk1B7; - - shared1000.unk1B7 = (shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]); - if (shared1000.unk1B7 != 0) - { - shared1000.unk1A8 -= shared1000.unk1B5; - if (shared1000.unk1A8 == 0) - { - shared1000.unk1A8 = 1; - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; - } - } - else if (r9 != 0) - { - shared1000.unk1A8 += shared1000.unk1B5; - if (shared1000.unk1A9 != 0) - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; - } - return TRUE; - } - - return FALSE; -} - -void sub_80E7A98(void) -{ - if (shared1000.unk1A9 >= shared1000.unk1AA[shared1000.unk1A8]) - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; -} - -void sub_80E7AD4(void) -{ - if (shared1000.unk26 == 0) - shared1000.unk1B8 = shared1000.unk2A[shared1000.unk1A8][shared1000.unk1A9]; - else - shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]; -} - -bool8 sub_80E7B40(void) -{ - bool8 pressedUpDown = FALSE; - - shared1000.unk1C0 = 0; - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - if (shared1000.unk99A4 == 0) - return FALSE; - shared1000.unk99A4--; - if (shared1000.unk99A4 < shared1000.unk9A29) - { - shared1000.unk1C0 = -1; - return FALSE; - } - pressedUpDown = TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - if (shared1000.unk99A4 >= shared1000.unk9A28 - 1) - return FALSE; - shared1000.unk99A4++; - if (shared1000.unk99A4 >= shared1000.unk9A29 + 4) - { - shared1000.unk1C0 = 1; - return FALSE; - } - pressedUpDown = TRUE; - } - - if (pressedUpDown) - { - sub_80E7D30(); - return TRUE; - } - - if (gMain.newAndRepeatedKeys & DPAD_LEFT) - { - shared1000.unk99A5--; - if (shared1000.unk99A5 < 0) - shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; - return TRUE; - } - else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) - { - shared1000.unk99A5++; - if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) - shared1000.unk99A5 = 0; - return TRUE; - } - - if (gMain.newKeys & START_BUTTON) - { - if (shared1000.unk9A29 != 0) - { - shared1000.unk1C0 = -shared1000.unk9A29; - if (shared1000.unk1C0 < -4) - shared1000.unk1C0 = -4; - } - shared1000.unk99A4 += shared1000.unk1C0; - shared1000.unk1BE = 4; - } - else if (gMain.newKeys & SELECT_BUTTON) - { - if (shared1000.unk9A29 < shared1000.unk9A28 - 4) - { - shared1000.unk1C0 = shared1000.unk9A28 - 4 - shared1000.unk9A29; - if (shared1000.unk1C0 > 4) - shared1000.unk1C0 = 4; - } - shared1000.unk99A4 += shared1000.unk1C0; - shared1000.unk1BE = 4; - } - - return FALSE; -} - -void sub_80E7D30(void) -{ - if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) - shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; -} - -void sub_80E7D6C(void) -{ - u16 i; - - for (i = 0; i < shared1000.unkA; i++) - sub_80E7F00(i, 0xFFFF); -} - -void sub_80E7D9C(void) -{ - u16 i; - - for (i = 0; i < shared1000.unkA; i++) - shared1000.unk4[i] = shared1000.unkC[i]; -} - -bool8 sub_80E7DD0(void) -{ - u16 r4 = shared1000.unk9A2A[shared1000.unk99A4][shared1000.unk99A5]; - - if (shared1000.unk7D != 0 - && shared1000.unk7E[shared1000.unk86] > 1 - && sub_80EB2D4(r4) == 7) - return FALSE; - - sub_80E7F00(shared1000.unk27, r4); - sub_80E95A4(); - return TRUE; -} - -void sub_80E7E50(void) -{ - u16 r5 = 0; - u16 i; - u16 j; - - for (i = 0; i < shared1000.unk84; i++) - { - shared1000.unk7E[i] = 0; - for (j = 0; j < shared1000.unk83; j++) - { - shared1000.unkC[r5] = shared1000.unk4[r5]; - shared1000.unk8C[i][j] = 0; - r5++; - } - } -} - -void sub_80E7F00(u16 a, u16 b) -{ - u16 r5 = a / shared1000.unk83; - u16 r8 = a % shared1000.unk83; - u16 r4 = sub_80EB2D4(shared1000.unkC[a]); - u16 r3 = sub_80EB2D4(b); - - if (r4 == 7) - { - if (r3 != 7) - shared1000.unk7E[r5]--; - } - else - { - if (r3 == 7) - shared1000.unk7E[r5]++; - } - r3 = 0; - shared1000.unk8C[r5][r8] = r3; - shared1000.unkC[a] = b; -} - -u8 sub_80E7FA8(void) -{ - u16 r8 = 0; - u16 i; - u8 *r1; - u8 *r2; - - for (i = 0; i < shared1000.unkA; i++) - { - sub_80EB218(shared1000.unk9E14, shared1000.unk4[i], 0); - sub_80EB218(shared1000.unk9E41, shared1000.unkC[i], 0); - r1 = shared1000.unk9E14; - r2 = shared1000.unk9E41; - while (*r1 == *r2 && *r1 != 0xFF) - { - r1++; - r2++; - } - if (*r1 != *r2) - r8++; - } - return r8; -} - -bool8 sub_80E8054(void) -{ - u16 i; - - for (i = 0; i < shared1000.unkA; i++) - { - if (shared1000.unkC[i] != 0xFFFF) - return FALSE; - } - return TRUE; -} - -// CheckMysteryEventPhrase -bool8 sub_80E8094(void) -{ - u16 i; - u8 *r3; - u8 *r4; - - for (i = 0; i < 4; i++) - { - sub_80EB218(shared1000.unk9E14, shared1000.unkC[i], 0); - sub_80EB218(shared1000.unk9E41, gMysteryEventPhrase[i], 0); - r3 = shared1000.unk9E14; - r4 = shared1000.unk9E41; - while (*r3 != 0xFF && *r4 != 0xFF) - { - if (*r3++ != *r4++) - return FALSE; - } - if (*r3 != 0xFF || *r4 != 0xFF) - return FALSE; - } - return TRUE; -} - -u8 sub_80E810C(void) -{ - u16 i; - - for (i = 0; i < 5; i++) - { - u8 *ptr; - u8 *r3; - - ptr = sub_80EB218(shared1000.unk9E6E, shared1000.unkC[0], 0); - *ptr++ = CHAR_SPACE; - sub_80EB218(ptr, shared1000.unkC[1], 0); - - ptr = sub_80EB218(shared1000.unk9EEE, gBerryMasterWifePhrases[i][0], 0); - *ptr++ = CHAR_SPACE; - sub_80EB218(ptr, gBerryMasterWifePhrases[i][1], 0); - - ptr = shared1000.unk9E6E; - r3 = shared1000.unk9EEE; - while (*ptr != EOS && *r3 != EOS) - { - if (*ptr++ != *r3++) - break; - } - if (*ptr == EOS && *r3 == EOS) - return i + 1; - } - return 0; -} - -void sub_80E81C0(void) -{ - u8 *ptr; - - ptr = sub_80EB218(gStringVar2, shared1000.unk9C7C, 0); - *ptr++ = CHAR_SPACE; - sub_80EB218(ptr, shared1000.unk9C7E, 0); -} - -void sub_80E81FC(void) -{ - PlaySE(SE_SELECT); - sub_80E95A4(); - MenuZeroFillWindowRect(0, 0, 29, 13); -} -- cgit v1.2.3 From e28c11ef9518c80e23ce0076b8ba9be4cb140015 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 23:07:57 -0500 Subject: Update delcarations of cable car util funtions --- src/scene/cable_car.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 288c5d40d..f57233556 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -59,7 +59,7 @@ struct CableCarEwramStruct1 { u16 unk_0022[9][12]; u8 filler_00fa[2]; u16 unk_00fc[0x20][0x20]; - u16 unk_08fc[0x400]; + u16 unk_08fc[0x20][0x20]; }; // size 0x10FC struct CableCarEwramStruct2 { @@ -268,8 +268,8 @@ static void CableCarMainCallback_Setup(void) } break; case 5: - sub_8124F08((u16 *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); - sub_8124F08((u16 *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); + sub_8124F08((void *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); + sub_8124F08((void *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); gMain.state++; @@ -479,14 +479,14 @@ static void sub_8123AF8(u8 taskId) sCableCarPtr->unk_0015 = 192; break; case 32: - sCableCarPtr->unk_08fc[2] = (gCableCarPylonHookTilemapEntries + 2)[0]; - sCableCarPtr->unk_08fc[3] = (gCableCarPylonHookTilemapEntries + 2)[1]; - sCableCarPtr->unk_08fc[34] = (gCableCarPylonHookTilemapEntries + 2)[5]; - sCableCarPtr->unk_08fc[35] = (gCableCarPylonHookTilemapEntries + 2)[6]; + sCableCarPtr->unk_08fc[0][2] = (gCableCarPylonHookTilemapEntries + 2)[0]; + sCableCarPtr->unk_08fc[0][3] = (gCableCarPylonHookTilemapEntries + 2)[1]; + sCableCarPtr->unk_08fc[1][2] = (gCableCarPylonHookTilemapEntries + 2)[5]; + sCableCarPtr->unk_08fc[1][3] = (gCableCarPylonHookTilemapEntries + 2)[6]; break; case 40: - sCableCarPtr->unk_08fc[4] = (gCableCarPylonHookTilemapEntries + 4)[0]; - sCableCarPtr->unk_08fc[36] = (gCableCarPylonHookTilemapEntries + 4)[5]; + sCableCarPtr->unk_08fc[0][4] = (gCableCarPylonHookTilemapEntries + 4)[0]; + sCableCarPtr->unk_08fc[1][4] = (gCableCarPylonHookTilemapEntries + 4)[5]; break; } } -- cgit v1.2.3 From 7d181ec03bdc8e5b9424e08e4428b76bab8eb5fd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 5 Jan 2018 22:18:57 -0600 Subject: minor cleanup --- src/easy_chat_1.c | 710 +++++++++++++++++++++++++------------------------ src/easy_chat_2.c | 776 +++++++++++++++++++++++++++--------------------------- 2 files changed, 742 insertions(+), 744 deletions(-) (limited to 'src') diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 59e463260..a1a67152e 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -21,8 +21,6 @@ extern const struct WindowConfig gWindowConfig_81E6DA8; extern void sub_80546B8(void); -#define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000)) - const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING}; const u16 gBerryMasterWifePhrases[][2] = @@ -42,8 +40,8 @@ const u16 gBerryMasterWifePhrases[][2] = #endif }; -// const pointer to shared1000. easy_chat might be two separate files. -struct Shared1000 *const gUnknown_083DB694 = &shared1000; +// const pointer to gEasyChatStruct-> easy_chat might be two separate files. +struct Shared1000 *const gEasyChatStruct = (struct Shared1000 *)(gSharedMem + 0x1000); const struct UnknownTaskStruct gUnknown_083DB698 = { @@ -193,7 +191,7 @@ void sub_80EAC5C(void); void sub_80EAD08(void); u8 sub_80EAD7C(u8); void sub_80EAECC(void); -void sub_80EB040(void); +void LoadEasyChatStrings(void); void sub_80EB0B0(void); u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(); @@ -264,9 +262,9 @@ void sub_80E60D8(void) r4 = 1; break; case 13: - shared1000.unk9C7C = 0xFFFF; - shared1000.unk9C7E = -1; - r1 = &shared1000.unk9C7C; + gEasyChatStruct->unk9C7C = 0xFFFF; + gEasyChatStruct->unk9C7E = -1; + r1 = &gEasyChatStruct->unk9C7C; break; default: return; @@ -276,15 +274,15 @@ void sub_80E60D8(void) void sub_80E62A0(u8 a, u16 *b, void (*c)(void), u8 d) { - shared1000.unk0 = c; - shared1000.unk4 = b; - shared1000.unk8 = a; - shared1000.unkB = d; + gEasyChatStruct->unk0 = c; + gEasyChatStruct->unk4 = b; + gEasyChatStruct->unk8 = a; + gEasyChatStruct->unkB = d; if (a == 9) { - shared1000.unk4 = &shared1000.unk9C7C; - shared1000.unk9C7C = gSaveBlock1.easyChatPairs[0].words[0]; - shared1000.unk9C7E = gSaveBlock1.easyChatPairs[0].words[1]; + gEasyChatStruct->unk4 = &gEasyChatStruct->unk9C7C; + gEasyChatStruct->unk9C7C = gSaveBlock1.easyChatPairs[0].words[0]; + gEasyChatStruct->unk9C7E = gSaveBlock1.easyChatPairs[0].words[1]; } SetMainCallback2(sub_80E62F8); } @@ -343,61 +341,61 @@ void sub_80E62F8(void) void sub_80E6424(void) { - shared1000.unk9 = gUnknown_083DB6A4[shared1000.unk8]; - switch (shared1000.unk9) + gEasyChatStruct->unk9 = gUnknown_083DB6A4[gEasyChatStruct->unk8]; + switch (gEasyChatStruct->unk9) { case 4: - shared1000.unkA = 4; - shared1000.unk83 = 2; - shared1000.unk84 = 2; - shared1000.unk88 = 5; - shared1000.unk8A = 4; + gEasyChatStruct->unkA = 4; + gEasyChatStruct->unk83 = 2; + gEasyChatStruct->unk84 = 2; + gEasyChatStruct->unk88 = 5; + gEasyChatStruct->unk8A = 4; break; case 5: - shared1000.unkA = 4; - shared1000.unk83 = 1; - shared1000.unk84 = 4; - shared1000.unk88 = 16; - shared1000.unk8A = 2; + gEasyChatStruct->unkA = 4; + gEasyChatStruct->unk83 = 1; + gEasyChatStruct->unk84 = 4; + gEasyChatStruct->unk88 = 16; + gEasyChatStruct->unk8A = 2; break; case 0: - shared1000.unkA = 6; - shared1000.unk83 = 2; - shared1000.unk84 = 3; - shared1000.unk88 = 4; - shared1000.unk8A = 3; + gEasyChatStruct->unkA = 6; + gEasyChatStruct->unk83 = 2; + gEasyChatStruct->unk84 = 3; + gEasyChatStruct->unk88 = 4; + gEasyChatStruct->unk8A = 3; break; case 1: - shared1000.unkA = 9; - shared1000.unk83 = 2; - shared1000.unk84 = 5; - shared1000.unk88 = 4; - shared1000.unk8A = 0; + gEasyChatStruct->unkA = 9; + gEasyChatStruct->unk83 = 2; + gEasyChatStruct->unk84 = 5; + gEasyChatStruct->unk88 = 4; + gEasyChatStruct->unk8A = 0; break; case 2: - shared1000.unkA = 1; - shared1000.unk83 = 1; - shared1000.unk84 = 1; - shared1000.unk88 = 16; - shared1000.unk8A = 4; + gEasyChatStruct->unkA = 1; + gEasyChatStruct->unk83 = 1; + gEasyChatStruct->unk84 = 1; + gEasyChatStruct->unk88 = 16; + gEasyChatStruct->unk8A = 4; break; case 3: - shared1000.unkA = 2; - shared1000.unk83 = 2; - shared1000.unk84 = 1; - shared1000.unk88 = 5; - shared1000.unk8A = 3; + gEasyChatStruct->unkA = 2; + gEasyChatStruct->unk83 = 2; + gEasyChatStruct->unk84 = 1; + gEasyChatStruct->unk88 = 5; + gEasyChatStruct->unk8A = 3; break; } - shared1000.unk86 = 0; - shared1000.unk85 = 0; - shared1000.unk87 = 0; - shared1000.unk26 = 0; - shared1000.unk1BA = 0; - shared1000.unk1BE = 2; + gEasyChatStruct->unk86 = 0; + gEasyChatStruct->unk85 = 0; + gEasyChatStruct->unk87 = 0; + gEasyChatStruct->unk26 = 0; + gEasyChatStruct->unk1BA = 0; + gEasyChatStruct->unk1BE = 2; sub_80E6554(); sub_80EAECC(); - sub_80EB040(); + LoadEasyChatStrings(); sub_80E7E50(); sub_80E6630(); sub_80E6690(); @@ -413,14 +411,14 @@ void sub_80E6554(void) { for (r5 = 0; r5 < 2; r5++) { - shared1000.unk2A[r7][r5] = r4++; + gEasyChatStruct->unk2A[r7][r5] = r4++; if (r4 == 17) break; } if (r4 == 17) break; } - shared1000.unk28 = 17; + gEasyChatStruct->unk28 = 17; while (r4 < 22) { if (sub_80EAD7C(r4) != 0) @@ -431,17 +429,17 @@ void sub_80E6554(void) r7++; r5 = 0; } - shared1000.unk2A[r7][r5] = r4; - shared1000.unk78[r4 - 17] = 1; // hmm... - shared1000.unk28++; + gEasyChatStruct->unk2A[r7][r5] = r4; + gEasyChatStruct->unk78[r4 - 17] = 1; // hmm... + gEasyChatStruct->unk28++; } else { - shared1000.unk78[r4 - 17] = 0; + gEasyChatStruct->unk78[r4 - 17] = 0; } r4++; } - shared1000.unk1B6 = (shared1000.unk28 + 1) / 2; + gEasyChatStruct->unk1B6 = (gEasyChatStruct->unk28 + 1) / 2; } void sub_80E6630(void) @@ -456,9 +454,9 @@ void sub_80E6630(void) for (r3 = 0; row[r3] != EOS; r3++) { if (row[r3] != CHAR_SPACE) - shared1000.unk40[i][r3] = row[r3] + 0x46; + gEasyChatStruct->unk40[i][r3] = row[r3] + 0x46; else - shared1000.unk40[i][r3] = CHAR_SPACE; + gEasyChatStruct->unk40[i][r3] = CHAR_SPACE; } } } @@ -467,15 +465,15 @@ void sub_80E6690(void) { u8 *pointers[] = { - shared1000.unk9C80, shared1000.unk9CC9, - shared1000.unk9D12, shared1000.unk9D5B, + gEasyChatStruct->unk9C80, gEasyChatStruct->unk9CC9, + gEasyChatStruct->unk9D12, gEasyChatStruct->unk9D5B, }; u8 *r3; u16 i; for (i = 0; i < 2; i++) { - const struct EasyChatPrompt *prompt = &gUnknown_083DB6F4[gUnknown_083DB7C0[shared1000.unk8][i]]; + const struct EasyChatPrompt *prompt = &gUnknown_083DB6F4[gUnknown_083DB7C0[gEasyChatStruct->unk8][i]]; r3 = StringCopy(pointers[i * 2 + 0], prompt->text1); if (prompt->unk8) @@ -491,10 +489,10 @@ void sub_80E6690(void) } for (i = 0; i < 0x24; i++) - shared1000.unk9DA4[i] = 0; - shared1000.unk9DA4[i] = 0xFF; + gEasyChatStruct->unk9DA4[i] = 0; + gEasyChatStruct->unk9DA4[i] = 0xFF; - r3 = shared1000.unk9F6E; + r3 = gEasyChatStruct->unk9F6E; r3[0] = EXT_CTRL_CODE_BEGIN; r3[1] = 0x11; r3[2] = 0xE0; @@ -557,76 +555,76 @@ void InitEasyChatPhrases(void) void sub_80E682C(void (*func)(void)) { - shared1000.unk20 = func; - shared1000.unk24 = 0; + gEasyChatStruct->unk20 = func; + gEasyChatStruct->unk24 = 0; } void sub_80E683C(void) { u16 i; - if (shared1000.unk26 == 0) + if (gEasyChatStruct->unk26 == 0) { - for (i = 0; i < shared1000.unk1B6; i++) - shared1000.unk1AA[i] = 2; - shared1000.unk1AA[i - 1] = shared1000.unk28 % 2; - if (shared1000.unk1AA[i - 1] == 0) - shared1000.unk1AA[i - 1] = 2; + for (i = 0; i < gEasyChatStruct->unk1B6; i++) + gEasyChatStruct->unk1AA[i] = 2; + gEasyChatStruct->unk1AA[i - 1] = gEasyChatStruct->unk28 % 2; + if (gEasyChatStruct->unk1AA[i - 1] == 0) + gEasyChatStruct->unk1AA[i - 1] = 2; } else { - shared1000.unk1AA[0] = 7; - shared1000.unk1AA[1] = 6; - shared1000.unk1AA[2] = 7; - shared1000.unk1AA[3] = 7; + gEasyChatStruct->unk1AA[0] = 7; + gEasyChatStruct->unk1AA[1] = 6; + gEasyChatStruct->unk1AA[2] = 7; + gEasyChatStruct->unk1AA[3] = 7; } - shared1000.unk1A8 = 0; - shared1000.unk1A9 = 0; - shared1000.unk1B5 = 0; - shared1000.unk1B7 = 0; + gEasyChatStruct->unk1A8 = 0; + gEasyChatStruct->unk1A9 = 0; + gEasyChatStruct->unk1B5 = 0; + gEasyChatStruct->unk1B7 = 0; sub_80E9A4C(); } void sub_80E68E8(void) { sub_80EB0B0(); - if (shared1000.unk26 == 0) + if (gEasyChatStruct->unk26 == 0) { u16 i; u8 r6; - r6 = shared1000.unk1B8; - shared1000.unk9A28 = (shared1000.unk4178[r6] + 1) / 2; - for (i = 0; i < shared1000.unk9A28; i++) - shared1000.unk99A6[i] = 2; + r6 = gEasyChatStruct->unk1B8; + gEasyChatStruct->unk9A28 = (gEasyChatStruct->unk4178[r6] + 1) / 2; + for (i = 0; i < gEasyChatStruct->unk9A28; i++) + gEasyChatStruct->unk99A6[i] = 2; i--; - shared1000.unk99A6[i] = shared1000.unk4178[r6] % 2; - if (shared1000.unk99A6[i] == 0) - shared1000.unk99A6[i] = 2; + gEasyChatStruct->unk99A6[i] = gEasyChatStruct->unk4178[r6] % 2; + if (gEasyChatStruct->unk99A6[i] == 0) + gEasyChatStruct->unk99A6[i] = 2; } else { u16 i; u8 r6; - r6 = shared1000.unk1B8; - shared1000.unk9A28 = (shared1000.unk4142[r6] + 1) / 2; - for (i = 0; i < shared1000.unk9A28; i++) - shared1000.unk99A6[i] = 2; + r6 = gEasyChatStruct->unk1B8; + gEasyChatStruct->unk9A28 = (gEasyChatStruct->unk4142[r6] + 1) / 2; + for (i = 0; i < gEasyChatStruct->unk9A28; i++) + gEasyChatStruct->unk99A6[i] = 2; i--; - shared1000.unk99A6[i] = shared1000.unk4142[r6] % 2; - if (shared1000.unk99A6[i] == 0) - shared1000.unk99A6[i] = 2; + gEasyChatStruct->unk99A6[i] = gEasyChatStruct->unk4142[r6] % 2; + if (gEasyChatStruct->unk99A6[i] == 0) + gEasyChatStruct->unk99A6[i] = 2; } - shared1000.unk99A4 = 0; - shared1000.unk99A5 = 0; - shared1000.unk9A29 = 0; + gEasyChatStruct->unk99A4 = 0; + gEasyChatStruct->unk99A5 = 0; + gEasyChatStruct->unk9A29 = 0; sub_80E9A4C(); } void sub_80E69F8(void) { - switch (shared1000.unk8) + switch (gEasyChatStruct->unk8) { case 0: case 1: @@ -637,7 +635,7 @@ void sub_80E69F8(void) case 9: case 13: default: - sub_80E9368(shared1000.unk8); + sub_80E9368(gEasyChatStruct->unk8); break; case 5: case 7: @@ -645,8 +643,8 @@ void sub_80E69F8(void) case 10: case 11: case 12: - sub_80E9368(shared1000.unk8); - sub_80E8BF4(shared1000.unkB, shared1000.unk9); + sub_80E9368(gEasyChatStruct->unk8); + sub_80E8BF4(gEasyChatStruct->unkB, gEasyChatStruct->unk9); break; } } @@ -662,7 +660,7 @@ void sub_80E6A6C(void) void sub_80E6A88(void) { - shared1000.unk20(); + gEasyChatStruct->unk20(); AnimateSprites(); BuildOamBuffer(); sub_80EAD08(); @@ -684,15 +682,15 @@ void sub_80E6AC4(void) void sub_80E6AE4(void) { - shared1000.unk87 = sub_80E75D8(); - if (shared1000.unk87) + gEasyChatStruct->unk87 = sub_80E75D8(); + if (gEasyChatStruct->unk87) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (shared1000.unk86 == shared1000.unk84) + if (gEasyChatStruct->unk86 == gEasyChatStruct->unk84) { - switch (shared1000.unk85) + switch (gEasyChatStruct->unk85) { case 0: sub_80E682C(sub_80E6BC0); @@ -707,7 +705,7 @@ void sub_80E6AE4(void) } else { - shared1000.unk27 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; + gEasyChatStruct->unk27 = gEasyChatStruct->unk86 * gEasyChatStruct->unk83 + gEasyChatStruct->unk85; sub_80E7574(); sub_80E682C(sub_80E6F68); return; @@ -721,21 +719,21 @@ void sub_80E6AE4(void) void sub_80E6BC0(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E8398(2); - if (shared1000.unk8 == 6) + if (gEasyChatStruct->unk8 == 6) { sub_80E91D4(6); - shared1000.unk24 = 100; + gEasyChatStruct->unk24 = 100; } else { sub_80E91D4(2); DisplayYesNoMenu(23, 8, 1); MoveMenuCursor(1); - shared1000.unk24++; + gEasyChatStruct->unk24++; } break; case 1: @@ -745,11 +743,11 @@ void sub_80E6BC0(void) sub_80E7D6C(); sub_80E98C4(); sub_80E95A4(); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case -1: case 1: - shared1000.unk24++; + gEasyChatStruct->unk24++; break; } break; @@ -766,25 +764,25 @@ void sub_80E6BC0(void) void sub_80E6C84(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E8398(2); sub_80E91D4(3); DisplayYesNoMenu(23, 8, 0); MoveMenuCursor(1); - if (shared1000.unk8 == 9 - || shared1000.unk8 == 4 - || shared1000.unk8 == 7 - || shared1000.unk8 == 8 - || shared1000.unk8 == 10 - || shared1000.unk8 == 11 - || shared1000.unk8 == 12 - || shared1000.unk8 == 5 - || shared1000.unk8 == 13) - shared1000.unk24 = 2; + if (gEasyChatStruct->unk8 == 9 + || gEasyChatStruct->unk8 == 4 + || gEasyChatStruct->unk8 == 7 + || gEasyChatStruct->unk8 == 8 + || gEasyChatStruct->unk8 == 10 + || gEasyChatStruct->unk8 == 11 + || gEasyChatStruct->unk8 == 12 + || gEasyChatStruct->unk8 == 5 + || gEasyChatStruct->unk8 == 13) + gEasyChatStruct->unk24 = 2; else - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 1: switch (ProcessMenuInputNoWrap_()) @@ -793,11 +791,11 @@ void sub_80E6C84(void) sub_80E91D4(4); DisplayYesNoMenu(23, 8, 0); MoveMenuCursor(1); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case -1: case 1: - shared1000.unk24 = 0xFF; + gEasyChatStruct->unk24 = 0xFF; break; } break; @@ -810,7 +808,7 @@ void sub_80E6C84(void) break; case -1: case 1: - shared1000.unk24 = 0xFF; + gEasyChatStruct->unk24 = 0xFF; break; } break; @@ -824,32 +822,32 @@ void sub_80E6C84(void) void sub_80E6D7C(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E8398(2); if (sub_80E8054()) { sub_80E91D4(5); - shared1000.unk24 = 10; + gEasyChatStruct->unk24 = 10; break; } - if (shared1000.unk8 == 9) + if (gEasyChatStruct->unk8 == 9) { if (sub_80E7FA8() == 0) { sub_80E91D4(8); - shared1000.unk24 = 10; + gEasyChatStruct->unk24 = 10; break; } - if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) + if (gEasyChatStruct->unkC[0] == 0xFFFF || gEasyChatStruct->unkC[1] == 0xFFFF) { sub_80E91D4(9); - shared1000.unk24 = 10; + gEasyChatStruct->unk24 = 10; break; } } - if (shared1000.unk8 == 4 && sub_80E7FA8() == 0) + if (gEasyChatStruct->unk8 == 4 && sub_80E7FA8() == 0) { sub_80E682C(sub_80E6C84); } @@ -859,7 +857,7 @@ void sub_80E6D7C(void) sub_80E9744(); DisplayYesNoMenu(23, 8, 0); MoveMenuCursor(0); - shared1000.unk24++; + gEasyChatStruct->unk24++; } break; case 1: @@ -868,16 +866,16 @@ void sub_80E6D7C(void) case 0: gSpecialVar_Result = (sub_80E7FA8() != 0); sub_80E7D9C(); - if (shared1000.unk8 == 0) + if (gEasyChatStruct->unk8 == 0) gSpecialVar_0x8004 = sub_80E8094(); - if (shared1000.unk8 == 9) // dewford trend? + if (gEasyChatStruct->unk8 == 9) // dewford trend? { sub_80E81C0(); - gSpecialVar_0x8004 = sub_80FA364(&shared1000.unk9C7C); + gSpecialVar_0x8004 = sub_80FA364(&gEasyChatStruct->unk9C7C); } - if (shared1000.unk8 == 13) + if (gEasyChatStruct->unk8 == 13) { - if (shared1000.unkC[0] == 0xFFFF || shared1000.unkC[1] == 0xFFFF) + if (gEasyChatStruct->unkC[0] == 0xFFFF || gEasyChatStruct->unkC[1] == 0xFFFF) gSpecialVar_Result = 0; gSpecialVar_0x8004 = sub_80E810C(); } @@ -887,9 +885,9 @@ void sub_80E6D7C(void) case 1: HandleDestroyMenuCursors(); sub_80E81FC(); - if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + if (gEasyChatStruct->unk8 == 6 && sub_80E7FA8() != 0) { - shared1000.unk24 = 100; + gEasyChatStruct->unk24 = 100; } else { @@ -905,11 +903,11 @@ void sub_80E6D7C(void) break; case 100: sub_80E91D4(7); - shared1000.unk24++; + gEasyChatStruct->unk24++; // fall through case 101: if (gMain.newKeys & A_BUTTON) - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 102: sub_80E7E50(); @@ -921,7 +919,7 @@ void sub_80E6D7C(void) void sub_80E6F68(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E8398(1); @@ -929,7 +927,7 @@ void sub_80E6F68(void) sub_80E683C(); sub_80E9974(); sub_80E9E98(); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 1: if (sub_80E9EA8() != 0) @@ -945,31 +943,31 @@ void sub_80E6F68(void) void sub_80E6FC8(void) { - shared1000.unk96 = sub_80E77C8(); - if (shared1000.unk1C0 != 0) + gEasyChatStruct->unk96 = sub_80E77C8(); + if (gEasyChatStruct->unk1C0 != 0) { PlaySE(SE_SELECT); - shared1000.unk1C4 = sub_80E6FC8; + gEasyChatStruct->unk1C4 = sub_80E6FC8; sub_80E682C(sub_80E7458); } else { - if (shared1000.unk96) + if (gEasyChatStruct->unk96) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { - if (shared1000.unk1B7 != 0) + if (gEasyChatStruct->unk1B7 != 0) { PlaySE(SE_SELECT); - switch (shared1000.unk1A8) + switch (gEasyChatStruct->unk1A8) { case 1: sub_80E682C(sub_80E718C); break; case 2: - if (shared1000.unk8 != 6) + if (gEasyChatStruct->unk8 != 6) { - sub_80E7F00(shared1000.unk27, 0xFFFF); + sub_80E7F00(gEasyChatStruct->unk27, 0xFFFF); sub_80E7574(); sub_80E95A4(); } @@ -981,8 +979,8 @@ void sub_80E6FC8(void) } else { - if (shared1000.unk26 == 0 - || shared1000.unk4142[shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]] != 0) + if (gEasyChatStruct->unk26 == 0 + || gEasyChatStruct->unk4142[gEasyChatStruct->unk40[gEasyChatStruct->unk1A8][gEasyChatStruct->unk1A9]] != 0) { PlaySE(SE_SELECT); sub_80E7AD4(); @@ -1003,22 +1001,22 @@ void sub_80E6FC8(void) void sub_80E7114(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E8504(); sub_80E9E98(); sub_80E88F0(); sub_80E8D8C(0); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 1: case 2: - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 3: if (sub_80E9F50() != 0) - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 4: sub_80E682C(sub_80E6AC4); @@ -1028,27 +1026,27 @@ void sub_80E7114(void) void sub_80E718C(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E8504(); sub_80E9E98(); sub_80E88F0(); - shared1000.unk24++; + gEasyChatStruct->unk24++; sub_80E8D54(); break; case 1: if (sub_80E9FD4() != 0) { - shared1000.unk26 = !shared1000.unk26; + gEasyChatStruct->unk26 = !gEasyChatStruct->unk26; sub_80E683C(); sub_80E9974(); sub_80E9E98(); - shared1000.unk24++; + gEasyChatStruct->unk24++; } break; default: - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 8: if (sub_80EA014() != 0) @@ -1063,10 +1061,10 @@ void sub_80E718C(void) void sub_80E7218(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { default: - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 8: sub_80E8D8C(0); @@ -1075,13 +1073,13 @@ void sub_80E7218(void) sub_80E68E8(); sub_80E88F0(); sub_80E9E98(); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 9: if (sub_80EA050() != 0) { sub_80E9C94(); - shared1000.unk24++; + gEasyChatStruct->unk24++; } break; case 10: @@ -1096,16 +1094,16 @@ void sub_80E7218(void) void sub_80E7294(void) { - shared1000.unk1B9 = sub_80E7B40(); - if (shared1000.unk1C0 != 0) + gEasyChatStruct->unk1B9 = sub_80E7B40(); + if (gEasyChatStruct->unk1C0 != 0) { PlaySE(SE_SELECT); - shared1000.unk1C4 = sub_80E7294; + gEasyChatStruct->unk1C4 = sub_80E7294; sub_80E682C(sub_80E7458); } else { - if (shared1000.unk1B9) + if (gEasyChatStruct->unk1B9) PlaySE(SE_SELECT); if (gMain.newKeys & A_BUTTON) { @@ -1121,7 +1119,7 @@ void sub_80E7294(void) void sub_80E7324(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: if (!sub_80E7DD0()) @@ -1132,22 +1130,22 @@ void sub_80E7324(void) { sub_80E88F0(); sub_80E87CC(0); - shared1000.unk24++; + gEasyChatStruct->unk24++; } break; case 1: - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 2: sub_80E9E98(); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 3: if (sub_80EA184() != 0) - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 4: - if (shared1000.unk8 == 6 && sub_80E7FA8() != 0) + if (gEasyChatStruct->unk8 == 6 && sub_80E7FA8() != 0) sub_80E682C(sub_80E6D7C); else sub_80E682C(sub_80E6AC4); @@ -1157,30 +1155,30 @@ void sub_80E7324(void) void sub_80E73D0(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: sub_80E87CC(0); sub_80E88F0(); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 1: sub_80E9AD4(); sub_80E9E98(); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 2: if (sub_80EA0E4() != 0) { sub_80E8D8C(1); sub_80E9A14(); - shared1000.unk24++; + gEasyChatStruct->unk24++; } break; case 3: sub_80E8420(); sub_80E8958(0); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 4: sub_80E9974(); @@ -1191,34 +1189,34 @@ void sub_80E73D0(void) void sub_80E7458(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: - if (shared1000.unk1C4 == sub_80E6FC8) + if (gEasyChatStruct->unk1C4 == sub_80E6FC8) sub_80E9D7C(); else sub_80E9D00(); - sub_80E9E08(shared1000.unk1BE); - shared1000.unk24++; + sub_80E9E08(gEasyChatStruct->unk1BE); + gEasyChatStruct->unk24++; break; case 1: if (sub_80E9E54()) { - if (shared1000.unk1C4 == sub_80E6FC8) + if (gEasyChatStruct->unk1C4 == sub_80E6FC8) { sub_80E9D7C(); - shared1000.unk1B5 += shared1000.unk1C0; + gEasyChatStruct->unk1B5 += gEasyChatStruct->unk1C0; sub_80E7A98(); - shared1000.unk96 = TRUE; + gEasyChatStruct->unk96 = TRUE; } else { - shared1000.unk9A29 += shared1000.unk1C0; + gEasyChatStruct->unk9A29 += gEasyChatStruct->unk1C0; sub_80E7D30(); - shared1000.unk1B9 = 1; + gEasyChatStruct->unk1B9 = 1; } - shared1000.unk1BE = 2; - sub_80E682C(shared1000.unk1C4); + gEasyChatStruct->unk1BE = 2; + sub_80E682C(gEasyChatStruct->unk1C4); } break; } @@ -1226,28 +1224,28 @@ void sub_80E7458(void) void sub_80E752C(void) { - switch (shared1000.unk24) + switch (gEasyChatStruct->unk24) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - shared1000.unk24++; + gEasyChatStruct->unk24++; break; case 1: if (!UpdatePaletteFade()) - SetMainCallback2(shared1000.unk0); + SetMainCallback2(gEasyChatStruct->unk0); break; } } void sub_80E7574(void) { - if (shared1000.unk8 == 1 - && shared1000.unk7E[shared1000.unk86] == 2 - && sub_80EB2D4(shared1000.unkC[shared1000.unk27]) != 7) - shared1000.unk7D = 1; + if (gEasyChatStruct->unk8 == 1 + && gEasyChatStruct->unk7E[gEasyChatStruct->unk86] == 2 + && sub_80EB2D4(gEasyChatStruct->unkC[gEasyChatStruct->unk27]) != 7) + gEasyChatStruct->unk7D = 1; else - shared1000.unk7D = 0; - shared1000.unk7D = 0; // What the hell? + gEasyChatStruct->unk7D = 0; + gEasyChatStruct->unk7D = 0; // What the hell? } bool8 sub_80E75D8(void) @@ -1257,45 +1255,45 @@ bool8 sub_80E75D8(void) if (gMain.newKeys & START_BUTTON) { - shared1000.unk86 = shared1000.unk84; - shared1000.unk85 = 2; + gEasyChatStruct->unk86 = gEasyChatStruct->unk84; + gEasyChatStruct->unk85 = 2; return TRUE; } if (gMain.newAndRepeatedKeys & DPAD_UP) { - shared1000.unk86--; - if (shared1000.unk86 < 0) - shared1000.unk86 = shared1000.unk84; + gEasyChatStruct->unk86--; + if (gEasyChatStruct->unk86 < 0) + gEasyChatStruct->unk86 = gEasyChatStruct->unk84; pressedUpDown = TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - shared1000.unk86++; - if (shared1000.unk86 > shared1000.unk84) - shared1000.unk86 = 0; + gEasyChatStruct->unk86++; + if (gEasyChatStruct->unk86 > gEasyChatStruct->unk84) + gEasyChatStruct->unk86 = 0; pressedUpDown = TRUE; } if (pressedUpDown) { - if (shared1000.unk9 == 2) + if (gEasyChatStruct->unk9 == 2) { - if (shared1000.unk86 == shared1000.unk84) - shared1000.unk85 = 2; + if (gEasyChatStruct->unk86 == gEasyChatStruct->unk84) + gEasyChatStruct->unk85 = 2; else - shared1000.unk85 = 0; + gEasyChatStruct->unk85 = 0; return TRUE; } else { - if (shared1000.unk85 >= shared1000.unk83) - shared1000.unk85 = shared1000.unk83 - 1; - if (shared1000.unk86 != shared1000.unk84) + if (gEasyChatStruct->unk85 >= gEasyChatStruct->unk83) + gEasyChatStruct->unk85 = gEasyChatStruct->unk83 - 1; + if (gEasyChatStruct->unk86 != gEasyChatStruct->unk84) { - r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - if (r0 >= shared1000.unkA) - shared1000.unk85 = r0 - shared1000.unkA; + r0 = gEasyChatStruct->unk86 * gEasyChatStruct->unk83 + gEasyChatStruct->unk85; + if (r0 >= gEasyChatStruct->unkA) + gEasyChatStruct->unk85 = r0 - gEasyChatStruct->unkA; } return TRUE; } @@ -1304,36 +1302,36 @@ bool8 sub_80E75D8(void) { if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - if (--shared1000.unk85 < 0) + if (--gEasyChatStruct->unk85 < 0) { - if (shared1000.unk86 == shared1000.unk84) + if (gEasyChatStruct->unk86 == gEasyChatStruct->unk84) { - shared1000.unk85 = 2; + gEasyChatStruct->unk85 = 2; } else { - shared1000.unk85 = shared1000.unk83 - 1; - r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - if (r0 >= shared1000.unkA) - shared1000.unk85 = r0 - shared1000.unkA; + gEasyChatStruct->unk85 = gEasyChatStruct->unk83 - 1; + r0 = gEasyChatStruct->unk86 * gEasyChatStruct->unk83 + gEasyChatStruct->unk85; + if (r0 >= gEasyChatStruct->unkA) + gEasyChatStruct->unk85 = r0 - gEasyChatStruct->unkA; } } return TRUE; } if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - if (shared1000.unk86 == shared1000.unk84) + if (gEasyChatStruct->unk86 == gEasyChatStruct->unk84) { - if (++shared1000.unk85 > 2) - shared1000.unk85 = 0; + if (++gEasyChatStruct->unk85 > 2) + gEasyChatStruct->unk85 = 0; } else { - if (++shared1000.unk85 >= shared1000.unk83) - shared1000.unk85 = 0; - r0 = shared1000.unk86 * shared1000.unk83 + shared1000.unk85; - if (r0 >= shared1000.unkA) - shared1000.unk85 = r0 - shared1000.unkA; + if (++gEasyChatStruct->unk85 >= gEasyChatStruct->unk83) + gEasyChatStruct->unk85 = 0; + r0 = gEasyChatStruct->unk86 * gEasyChatStruct->unk83 + gEasyChatStruct->unk85; + if (r0 >= gEasyChatStruct->unkA) + gEasyChatStruct->unk85 = r0 - gEasyChatStruct->unkA; } return TRUE; } @@ -1346,41 +1344,41 @@ bool8 sub_80E77C8(void) bool8 pressedLeftRight = FALSE; bool8 pressedUpDown; - if (shared1000.unk1B7 != 0) + if (gEasyChatStruct->unk1B7 != 0) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - shared1000.unk1A8--; - if (shared1000.unk1A8 < 1) - shared1000.unk1A8 = 3; + gEasyChatStruct->unk1A8--; + if (gEasyChatStruct->unk1A8 < 1) + gEasyChatStruct->unk1A8 = 3; return TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - shared1000.unk1A8++; - if (shared1000.unk1A8 > 3) - shared1000.unk1A8 = 1; + gEasyChatStruct->unk1A8++; + if (gEasyChatStruct->unk1A8 > 3) + gEasyChatStruct->unk1A8 = 1; return TRUE; } } else { - if (shared1000.unk26 == 1) + if (gEasyChatStruct->unk26 == 1) { pressedUpDown = FALSE; if (gMain.newAndRepeatedKeys & DPAD_UP) { - shared1000.unk1A8--; - if (shared1000.unk1A8 < 0) - shared1000.unk1A8 = 3; + gEasyChatStruct->unk1A8--; + if (gEasyChatStruct->unk1A8 < 0) + gEasyChatStruct->unk1A8 = 3; pressedUpDown = TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - shared1000.unk1A8++; - if (shared1000.unk1A8 > 3) - shared1000.unk1A8 = 0; + gEasyChatStruct->unk1A8++; + if (gEasyChatStruct->unk1A8 > 3) + gEasyChatStruct->unk1A8 = 0; pressedUpDown = TRUE; } @@ -1393,30 +1391,30 @@ bool8 sub_80E77C8(void) else { pressedUpDown = FALSE; - shared1000.unk1C0 = 0; + gEasyChatStruct->unk1C0 = 0; if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (shared1000.unk1A8 == 0) + if (gEasyChatStruct->unk1A8 == 0) return FALSE; - shared1000.unk1A8--; - if (shared1000.unk1A8 < shared1000.unk1B5) - shared1000.unk1C0 = -1; + gEasyChatStruct->unk1A8--; + if (gEasyChatStruct->unk1A8 < gEasyChatStruct->unk1B5) + gEasyChatStruct->unk1C0 = -1; pressedUpDown = TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (shared1000.unk1A8 >= shared1000.unk1B6 - 1) + if (gEasyChatStruct->unk1A8 >= gEasyChatStruct->unk1B6 - 1) return FALSE; - shared1000.unk1A8++; - if (shared1000.unk1A8 > shared1000.unk1B5 + 3) - shared1000.unk1C0 = 1; + gEasyChatStruct->unk1A8++; + if (gEasyChatStruct->unk1A8 > gEasyChatStruct->unk1B5 + 3) + gEasyChatStruct->unk1C0 = 1; pressedUpDown = TRUE; } if (pressedUpDown) { - if (shared1000.unk1C0 == 0) + if (gEasyChatStruct->unk1C0 == 0) { sub_80E7A98(); return TRUE; @@ -1428,41 +1426,41 @@ bool8 sub_80E77C8(void) if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - if (shared1000.unk1A9 != 0) - shared1000.unk1A9--; + if (gEasyChatStruct->unk1A9 != 0) + gEasyChatStruct->unk1A9--; else - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + gEasyChatStruct->unk1A9 = gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8]; pressedLeftRight = TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - if (shared1000.unk1B7 != 0 - || shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]) - shared1000.unk1A9 = 0; + if (gEasyChatStruct->unk1B7 != 0 + || gEasyChatStruct->unk1A9 == gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8]) + gEasyChatStruct->unk1A9 = 0; else - shared1000.unk1A9++; + gEasyChatStruct->unk1A9++; pressedLeftRight = TRUE; } if (pressedLeftRight) { - s8 r9 = shared1000.unk1B7; + s8 r9 = gEasyChatStruct->unk1B7; - shared1000.unk1B7 = (shared1000.unk1A9 == shared1000.unk1AA[shared1000.unk1A8]); - if (shared1000.unk1B7 != 0) + gEasyChatStruct->unk1B7 = (gEasyChatStruct->unk1A9 == gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8]); + if (gEasyChatStruct->unk1B7 != 0) { - shared1000.unk1A8 -= shared1000.unk1B5; - if (shared1000.unk1A8 == 0) + gEasyChatStruct->unk1A8 -= gEasyChatStruct->unk1B5; + if (gEasyChatStruct->unk1A8 == 0) { - shared1000.unk1A8 = 1; - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8]; + gEasyChatStruct->unk1A8 = 1; + gEasyChatStruct->unk1A9 = gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8]; } } else if (r9 != 0) { - shared1000.unk1A8 += shared1000.unk1B5; - if (shared1000.unk1A9 != 0) - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; + gEasyChatStruct->unk1A8 += gEasyChatStruct->unk1B5; + if (gEasyChatStruct->unk1A9 != 0) + gEasyChatStruct->unk1A9 = gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8] - 1; } return TRUE; } @@ -1472,43 +1470,43 @@ bool8 sub_80E77C8(void) void sub_80E7A98(void) { - if (shared1000.unk1A9 >= shared1000.unk1AA[shared1000.unk1A8]) - shared1000.unk1A9 = shared1000.unk1AA[shared1000.unk1A8] - 1; + if (gEasyChatStruct->unk1A9 >= gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8]) + gEasyChatStruct->unk1A9 = gEasyChatStruct->unk1AA[gEasyChatStruct->unk1A8] - 1; } void sub_80E7AD4(void) { - if (shared1000.unk26 == 0) - shared1000.unk1B8 = shared1000.unk2A[shared1000.unk1A8][shared1000.unk1A9]; + if (gEasyChatStruct->unk26 == 0) + gEasyChatStruct->unk1B8 = gEasyChatStruct->unk2A[gEasyChatStruct->unk1A8][gEasyChatStruct->unk1A9]; else - shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9]; + gEasyChatStruct->unk1B8 = gEasyChatStruct->unk40[gEasyChatStruct->unk1A8][gEasyChatStruct->unk1A9]; } bool8 sub_80E7B40(void) { bool8 pressedUpDown = FALSE; - shared1000.unk1C0 = 0; + gEasyChatStruct->unk1C0 = 0; if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (shared1000.unk99A4 == 0) + if (gEasyChatStruct->unk99A4 == 0) return FALSE; - shared1000.unk99A4--; - if (shared1000.unk99A4 < shared1000.unk9A29) + gEasyChatStruct->unk99A4--; + if (gEasyChatStruct->unk99A4 < gEasyChatStruct->unk9A29) { - shared1000.unk1C0 = -1; + gEasyChatStruct->unk1C0 = -1; return FALSE; } pressedUpDown = TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (shared1000.unk99A4 >= shared1000.unk9A28 - 1) + if (gEasyChatStruct->unk99A4 >= gEasyChatStruct->unk9A28 - 1) return FALSE; - shared1000.unk99A4++; - if (shared1000.unk99A4 >= shared1000.unk9A29 + 4) + gEasyChatStruct->unk99A4++; + if (gEasyChatStruct->unk99A4 >= gEasyChatStruct->unk9A29 + 4) { - shared1000.unk1C0 = 1; + gEasyChatStruct->unk1C0 = 1; return FALSE; } pressedUpDown = TRUE; @@ -1522,40 +1520,40 @@ bool8 sub_80E7B40(void) if (gMain.newAndRepeatedKeys & DPAD_LEFT) { - shared1000.unk99A5--; - if (shared1000.unk99A5 < 0) - shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; + gEasyChatStruct->unk99A5--; + if (gEasyChatStruct->unk99A5 < 0) + gEasyChatStruct->unk99A5 = gEasyChatStruct->unk99A6[gEasyChatStruct->unk99A4] - 1; return TRUE; } else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) { - shared1000.unk99A5++; - if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) - shared1000.unk99A5 = 0; + gEasyChatStruct->unk99A5++; + if (gEasyChatStruct->unk99A5 >= gEasyChatStruct->unk99A6[gEasyChatStruct->unk99A4]) + gEasyChatStruct->unk99A5 = 0; return TRUE; } if (gMain.newKeys & START_BUTTON) { - if (shared1000.unk9A29 != 0) + if (gEasyChatStruct->unk9A29 != 0) { - shared1000.unk1C0 = -shared1000.unk9A29; - if (shared1000.unk1C0 < -4) - shared1000.unk1C0 = -4; + gEasyChatStruct->unk1C0 = -gEasyChatStruct->unk9A29; + if (gEasyChatStruct->unk1C0 < -4) + gEasyChatStruct->unk1C0 = -4; } - shared1000.unk99A4 += shared1000.unk1C0; - shared1000.unk1BE = 4; + gEasyChatStruct->unk99A4 += gEasyChatStruct->unk1C0; + gEasyChatStruct->unk1BE = 4; } else if (gMain.newKeys & SELECT_BUTTON) { - if (shared1000.unk9A29 < shared1000.unk9A28 - 4) + if (gEasyChatStruct->unk9A29 < gEasyChatStruct->unk9A28 - 4) { - shared1000.unk1C0 = shared1000.unk9A28 - 4 - shared1000.unk9A29; - if (shared1000.unk1C0 > 4) - shared1000.unk1C0 = 4; + gEasyChatStruct->unk1C0 = gEasyChatStruct->unk9A28 - 4 - gEasyChatStruct->unk9A29; + if (gEasyChatStruct->unk1C0 > 4) + gEasyChatStruct->unk1C0 = 4; } - shared1000.unk99A4 += shared1000.unk1C0; - shared1000.unk1BE = 4; + gEasyChatStruct->unk99A4 += gEasyChatStruct->unk1C0; + gEasyChatStruct->unk1BE = 4; } return FALSE; @@ -1563,15 +1561,15 @@ bool8 sub_80E7B40(void) void sub_80E7D30(void) { - if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4]) - shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1; + if (gEasyChatStruct->unk99A5 >= gEasyChatStruct->unk99A6[gEasyChatStruct->unk99A4]) + gEasyChatStruct->unk99A5 = gEasyChatStruct->unk99A6[gEasyChatStruct->unk99A4] - 1; } void sub_80E7D6C(void) { u16 i; - for (i = 0; i < shared1000.unkA; i++) + for (i = 0; i < gEasyChatStruct->unkA; i++) sub_80E7F00(i, 0xFFFF); } @@ -1579,20 +1577,20 @@ void sub_80E7D9C(void) { u16 i; - for (i = 0; i < shared1000.unkA; i++) - shared1000.unk4[i] = shared1000.unkC[i]; + for (i = 0; i < gEasyChatStruct->unkA; i++) + gEasyChatStruct->unk4[i] = gEasyChatStruct->unkC[i]; } bool8 sub_80E7DD0(void) { - u16 r4 = shared1000.unk9A2A[shared1000.unk99A4][shared1000.unk99A5]; + u16 r4 = gEasyChatStruct->unk9A2A[gEasyChatStruct->unk99A4][gEasyChatStruct->unk99A5]; - if (shared1000.unk7D != 0 - && shared1000.unk7E[shared1000.unk86] > 1 + if (gEasyChatStruct->unk7D != 0 + && gEasyChatStruct->unk7E[gEasyChatStruct->unk86] > 1 && sub_80EB2D4(r4) == 7) return FALSE; - sub_80E7F00(shared1000.unk27, r4); + sub_80E7F00(gEasyChatStruct->unk27, r4); sub_80E95A4(); return TRUE; } @@ -1603,13 +1601,13 @@ void sub_80E7E50(void) u16 i; u16 j; - for (i = 0; i < shared1000.unk84; i++) + for (i = 0; i < gEasyChatStruct->unk84; i++) { - shared1000.unk7E[i] = 0; - for (j = 0; j < shared1000.unk83; j++) + gEasyChatStruct->unk7E[i] = 0; + for (j = 0; j < gEasyChatStruct->unk83; j++) { - shared1000.unkC[r5] = shared1000.unk4[r5]; - shared1000.unk8C[i][j] = 0; + gEasyChatStruct->unkC[r5] = gEasyChatStruct->unk4[r5]; + gEasyChatStruct->unk8C[i][j] = 0; r5++; } } @@ -1617,24 +1615,24 @@ void sub_80E7E50(void) void sub_80E7F00(u16 a, u16 b) { - u16 r5 = a / shared1000.unk83; - u16 r8 = a % shared1000.unk83; - u16 r4 = sub_80EB2D4(shared1000.unkC[a]); + u16 r5 = a / gEasyChatStruct->unk83; + u16 r8 = a % gEasyChatStruct->unk83; + u16 r4 = sub_80EB2D4(gEasyChatStruct->unkC[a]); u16 r3 = sub_80EB2D4(b); if (r4 == 7) { if (r3 != 7) - shared1000.unk7E[r5]--; + gEasyChatStruct->unk7E[r5]--; } else { if (r3 == 7) - shared1000.unk7E[r5]++; + gEasyChatStruct->unk7E[r5]++; } r3 = 0; - shared1000.unk8C[r5][r8] = r3; - shared1000.unkC[a] = b; + gEasyChatStruct->unk8C[r5][r8] = r3; + gEasyChatStruct->unkC[a] = b; } u8 sub_80E7FA8(void) @@ -1644,12 +1642,12 @@ u8 sub_80E7FA8(void) u8 *r1; u8 *r2; - for (i = 0; i < shared1000.unkA; i++) + for (i = 0; i < gEasyChatStruct->unkA; i++) { - sub_80EB218(shared1000.unk9E14, shared1000.unk4[i], 0); - sub_80EB218(shared1000.unk9E41, shared1000.unkC[i], 0); - r1 = shared1000.unk9E14; - r2 = shared1000.unk9E41; + sub_80EB218(gEasyChatStruct->unk9E14, gEasyChatStruct->unk4[i], 0); + sub_80EB218(gEasyChatStruct->unk9E41, gEasyChatStruct->unkC[i], 0); + r1 = gEasyChatStruct->unk9E14; + r2 = gEasyChatStruct->unk9E41; while (*r1 == *r2 && *r1 != 0xFF) { r1++; @@ -1665,9 +1663,9 @@ bool8 sub_80E8054(void) { u16 i; - for (i = 0; i < shared1000.unkA; i++) + for (i = 0; i < gEasyChatStruct->unkA; i++) { - if (shared1000.unkC[i] != 0xFFFF) + if (gEasyChatStruct->unkC[i] != 0xFFFF) return FALSE; } return TRUE; @@ -1682,10 +1680,10 @@ bool8 sub_80E8094(void) for (i = 0; i < 4; i++) { - sub_80EB218(shared1000.unk9E14, shared1000.unkC[i], 0); - sub_80EB218(shared1000.unk9E41, gMysteryEventPhrase[i], 0); - r3 = shared1000.unk9E14; - r4 = shared1000.unk9E41; + sub_80EB218(gEasyChatStruct->unk9E14, gEasyChatStruct->unkC[i], 0); + sub_80EB218(gEasyChatStruct->unk9E41, gMysteryEventPhrase[i], 0); + r3 = gEasyChatStruct->unk9E14; + r4 = gEasyChatStruct->unk9E41; while (*r3 != 0xFF && *r4 != 0xFF) { if (*r3++ != *r4++) @@ -1706,16 +1704,16 @@ u8 sub_80E810C(void) u8 *ptr; u8 *r3; - ptr = sub_80EB218(shared1000.unk9E6E, shared1000.unkC[0], 0); + ptr = sub_80EB218(gEasyChatStruct->unk9E6E, gEasyChatStruct->unkC[0], 0); *ptr++ = CHAR_SPACE; - sub_80EB218(ptr, shared1000.unkC[1], 0); + sub_80EB218(ptr, gEasyChatStruct->unkC[1], 0); - ptr = sub_80EB218(shared1000.unk9EEE, gBerryMasterWifePhrases[i][0], 0); + ptr = sub_80EB218(gEasyChatStruct->unk9EEE, gBerryMasterWifePhrases[i][0], 0); *ptr++ = CHAR_SPACE; sub_80EB218(ptr, gBerryMasterWifePhrases[i][1], 0); - ptr = shared1000.unk9E6E; - r3 = shared1000.unk9EEE; + ptr = gEasyChatStruct->unk9E6E; + r3 = gEasyChatStruct->unk9EEE; while (*ptr != EOS && *r3 != EOS) { if (*ptr++ != *r3++) @@ -1731,9 +1729,9 @@ void sub_80E81C0(void) { u8 *ptr; - ptr = sub_80EB218(gStringVar2, shared1000.unk9C7C, 0); + ptr = sub_80EB218(gStringVar2, gEasyChatStruct->unk9C7C, 0); *ptr++ = CHAR_SPACE; - sub_80EB218(ptr, shared1000.unk9C7E, 0); + sub_80EB218(ptr, gEasyChatStruct->unk9C7E, 0); } void sub_80E81FC(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 767128750..8a3bb9ab9 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -61,7 +61,7 @@ void sub_80EAC0C(u16 *); void sub_80EAC30(struct UnknownEasyChatStruct1 *, u16, u16, u16, u16, void *); void sub_80EAC48(struct UnknownEasyChatStruct1 *); void sub_80EACBC(void *, u16 *, struct UnknownEasyChatStruct1 *); -u8 *sub_80EAD64(u8 *, u8, int); +u8 *CopyEasyChatGroupName(u8 *, u8, int); u8 *sub_80EB218(u8 *, u16, u16); u16 sub_80EB2D4(u16); bool8 sub_80EB37C(u16); @@ -138,36 +138,36 @@ void sub_80E8268(void) u8 spriteId; spriteId = CreateSprite(&gSpriteTemplate_83DBBFC, 0, 0, 0); - gSprites[spriteId].pos1.y = gUnknown_083DB694->unk8A * 8 + 8; - gSprites[spriteId].pos1.x = gUnknown_083DB694->unk88 * 8 + 4; + gSprites[spriteId].pos1.y = gEasyChatStruct->unk8A * 8 + 8; + gSprites[spriteId].pos1.x = gEasyChatStruct->unk88 * 8 + 4; gSprites[spriteId].data[0] = 0; gSprites[spriteId].data[1] = 0; - gUnknown_083DB694->unk98 = &gSprites[spriteId]; + gEasyChatStruct->unk98 = &gSprites[spriteId]; } void sub_80E82BC(struct Sprite *sprite) { if (sprite->data[1] == 0) { - if (gUnknown_083DB694->unk87) + if (gEasyChatStruct->unk87) { - u16 r5 = gUnknown_083DB694->unk86; - u16 r4 = gUnknown_083DB694->unk85; + u16 r5 = gEasyChatStruct->unk86; + u16 r4 = gEasyChatStruct->unk85; u16 r7 = 0; u16 i; for (i = 0; i < r4; i++) - r7 += gUnknown_083DB694->unk8C[r5][i]; + r7 += gEasyChatStruct->unk8C[r5][i]; - if (r5 == gUnknown_083DB694->unk84) + if (r5 == gEasyChatStruct->unk84) { sprite->pos1.y = 96; sprite->pos1.x = (r4 * 7 + 3) * 8 + 4; } else { - sprite->pos1.y = (gUnknown_083DB694->unk8A + r5 * 2) * 8 + 8; - sprite->pos1.x = (gUnknown_083DB694->unk88 + r7 + r4 * 11) * 8 + 4; + sprite->pos1.y = (gEasyChatStruct->unk8A + r5 * 2) * 8 + 8; + sprite->pos1.x = (gEasyChatStruct->unk88 + r7 + r4 * 11) * 8 + 4; } sprite->pos2.x = -6; @@ -190,19 +190,19 @@ void sub_80E8398(u8 a) switch (a) { case 0: - gUnknown_083DB694->unk98->data[1] = a; - gUnknown_083DB694->unk98->pos2.x = a; - gUnknown_083DB694->unk98->invisible = FALSE; + gEasyChatStruct->unk98->data[1] = a; + gEasyChatStruct->unk98->pos2.x = a; + gEasyChatStruct->unk98->invisible = FALSE; break; case 1: - gUnknown_083DB694->unk98->data[1] = a; - gUnknown_083DB694->unk98->pos2.x = 0; - gUnknown_083DB694->unk98->invisible = FALSE; + gEasyChatStruct->unk98->data[1] = a; + gEasyChatStruct->unk98->pos2.x = 0; + gEasyChatStruct->unk98->invisible = FALSE; break; case 2: - gUnknown_083DB694->unk98->data[1] = 1; - gUnknown_083DB694->unk98->pos2.x = 0; - gUnknown_083DB694->unk98->invisible = TRUE; + gEasyChatStruct->unk98->data[1] = 1; + gEasyChatStruct->unk98->pos2.x = 0; + gEasyChatStruct->unk98->invisible = TRUE; break; } } @@ -356,57 +356,57 @@ void sub_80E8420(void) u8 spriteId; spriteId = CreateSprite(&spriteTemplate_83DBCAC, 0, 0, 3); - gUnknown_083DB694->unk9C = &gSprites[spriteId]; + gEasyChatStruct->unk9C = &gSprites[spriteId]; spriteTemplate_83DBCAC.anims = gSpriteAnimTable_83DBC8C; spriteTemplate_83DBCAC.callback = sub_80E872C; spriteId = CreateSprite(&spriteTemplate_83DBCAC, 0, 0, 4); - gUnknown_083DB694->unkA0 = &gSprites[spriteId]; + gEasyChatStruct->unkA0 = &gSprites[spriteId]; spriteTemplate_83DBCAC.anims = gSpriteAnimTable_83DBC9C; spriteTemplate_83DBCAC.callback = sub_80E8760; spriteId = CreateSprite(&spriteTemplate_83DBCAC, 0, 0, 5); - gUnknown_083DB694->unkA4 = &gSprites[spriteId]; + gEasyChatStruct->unkA4 = &gSprites[spriteId]; - gUnknown_083DB694->unk9C->data[0] = 0; - gUnknown_083DB694->unkA0->data[0] = 0; - gUnknown_083DB694->unkA4->data[0] = 0; + gEasyChatStruct->unk9C->data[0] = 0; + gEasyChatStruct->unkA0->data[0] = 0; + gEasyChatStruct->unkA4->data[0] = 0; - gUnknown_083DB694->unk9C->data[3] = 0x0101 + IndexOfSpritePaletteTag(1) * 16; + gEasyChatStruct->unk9C->data[3] = 0x0101 + IndexOfSpritePaletteTag(1) * 16; sub_80E8534(); - gUnknown_083DB694->unk96 = 1; + gEasyChatStruct->unk96 = 1; REG_BLDCNT = 0x3F40; } void sub_80E8504(void) { - DestroySprite(gUnknown_083DB694->unk9C); - DestroySprite(gUnknown_083DB694->unkA0); - DestroySprite(gUnknown_083DB694->unkA4); + DestroySprite(gEasyChatStruct->unk9C); + DestroySprite(gEasyChatStruct->unkA0); + DestroySprite(gEasyChatStruct->unkA4); } void sub_80E8534(void) { - if (gUnknown_083DB694->unk1B7 != 0) + if (gEasyChatStruct->unk1B7 != 0) gUnknown_020388AC = 1; - else if (gUnknown_083DB694->unk26 == 0) + else if (gEasyChatStruct->unk26 == 0) gUnknown_020388AC = 0; - else if (gUnknown_083DB694->unk1A8 == 0 && gUnknown_083DB694->unk1A9 == 6) + else if (gEasyChatStruct->unk1A8 == 0 && gEasyChatStruct->unk1A9 == 6) gUnknown_020388AC = 2; else gUnknown_020388AC = 3; - gUnknown_083DB694->unk9C->data[2] = gUnknown_020388AC; - gUnknown_083DB694->unkA0->data[2] = gUnknown_020388AC; - gUnknown_083DB694->unkA4->data[2] = gUnknown_020388AC; + gEasyChatStruct->unk9C->data[2] = gUnknown_020388AC; + gEasyChatStruct->unkA0->data[2] = gUnknown_020388AC; + gEasyChatStruct->unkA4->data[2] = gUnknown_020388AC; - StartSpriteAnim(gUnknown_083DB694->unk9C, gUnknown_020388AC); - StartSpriteAnim(gUnknown_083DB694->unkA0, gUnknown_020388AC); - StartSpriteAnim(gUnknown_083DB694->unkA4, gUnknown_020388AC); + StartSpriteAnim(gEasyChatStruct->unk9C, gUnknown_020388AC); + StartSpriteAnim(gEasyChatStruct->unkA0, gUnknown_020388AC); + StartSpriteAnim(gEasyChatStruct->unkA4, gUnknown_020388AC); - gUnknown_083DB694->unk9C->data[5] = 8; - gUnknown_083DB694->unk9C->data[6] = 8; - gUnknown_083DB694->unk9C->data[1] = 0; + gEasyChatStruct->unk9C->data[5] = 8; + gEasyChatStruct->unk9C->data[6] = 8; + gEasyChatStruct->unk9C->data[1] = 0; } const s8 gUnknown_083DBCC4[][7] = @@ -429,19 +429,19 @@ void sub_80E85F8(struct Sprite *sprite) REG_BLDALPHA = (sprite->data[6] << 8) | sprite->data[5]; - if (gUnknown_083DB694->unk96 != 0) + if (gEasyChatStruct->unk96 != 0) { sub_80E8534(); - gUnknown_083DB694->unk9C->data[5] = 8; - gUnknown_083DB694->unk9C->data[6] = 8; - gUnknown_083DB694->unk9C->data[1] = 0; + gEasyChatStruct->unk9C->data[5] = 8; + gEasyChatStruct->unk9C->data[6] = 8; + gEasyChatStruct->unk9C->data[1] = 0; switch (sprite->data[2]) { case 0: - sprite->pos1.x = gUnknown_083DB694->unk1A9 * 88 + 32; - sprite->pos1.y = (gUnknown_083DB694->unk1A8 - gUnknown_083DB694->unk1B5) * 16 + 96; + sprite->pos1.x = gEasyChatStruct->unk1A9 * 88 + 32; + sprite->pos1.y = (gEasyChatStruct->unk1A8 - gEasyChatStruct->unk1B5) * 16 + 96; break; case 1: #if ENGLISH @@ -449,15 +449,15 @@ void sub_80E85F8(struct Sprite *sprite) #else sprite->pos1.x = 214; #endif - sprite->pos1.y = gUnknown_083DB694->unk1A8 * 16 + 96; + sprite->pos1.y = gEasyChatStruct->unk1A8 * 16 + 96; break; case 2: sprite->pos1.x = 151; sprite->pos1.y = 96; break; case 3: - sprite->pos1.x = gUnknown_083DBCC4[gUnknown_083DB694->unk1A8][gUnknown_083DB694->unk1A9] * 8 + 31; - sprite->pos1.y = (gUnknown_083DB694->unk1A8 - gUnknown_083DB694->unk1B5) * 16 + 96; + sprite->pos1.x = gUnknown_083DBCC4[gEasyChatStruct->unk1A8][gEasyChatStruct->unk1A9] * 8 + 31; + sprite->pos1.y = (gEasyChatStruct->unk1A8 - gEasyChatStruct->unk1B5) * 16 + 96; break; } } @@ -466,32 +466,32 @@ void sub_80E85F8(struct Sprite *sprite) void sub_80E872C(struct Sprite *sprite) { - if (gUnknown_083DB694->unk96 != 0 && sprite->data[2] == 0) + if (gEasyChatStruct->unk96 != 0 && sprite->data[2] == 0) { - sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 32; - sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 32; + sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y; } } void sub_80E8760(struct Sprite *sprite) { - if (gUnknown_083DB694->unk96 != 0) + if (gEasyChatStruct->unk96 != 0) { switch (sprite->data[2]) { case 0: - sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 64; - sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 64; + sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y; break; #if GERMAN case 1: - sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 28; - sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 28; + sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y; break; #endif case 2: - sprite->pos1.x = gUnknown_083DB694->unk9C->pos1.x + 21; - sprite->pos1.y = gUnknown_083DB694->unk9C->pos1.y; + sprite->pos1.x = gEasyChatStruct->unk9C->pos1.x + 21; + sprite->pos1.y = gEasyChatStruct->unk9C->pos1.y; break; } } @@ -499,16 +499,16 @@ void sub_80E8760(struct Sprite *sprite) void sub_80E87A4(u8 a) { - gUnknown_083DB694->unkA8->data[1] = (a == 0); - gUnknown_083DB694->unkA8->pos2.x = 0; + gEasyChatStruct->unkA8->data[1] = (a == 0); + gEasyChatStruct->unkA8->pos2.x = 0; } void sub_80E87CC(u8 a) { - gUnknown_083DB694->unkA8->invisible = (a == 0); + gEasyChatStruct->unkA8->invisible = (a == 0); sub_80E87A4(a); if (a != 0) - gUnknown_083DB694->unk1B9 = 1; + gEasyChatStruct->unk1B9 = 1; } void sub_80E8818(void) @@ -517,8 +517,8 @@ void sub_80E8818(void) gSprites[spriteId].data[0] = 0; gSprites[spriteId].data[1] = 0; - gUnknown_083DB694->unkA8 = &gSprites[spriteId]; - gUnknown_083DB694->unkA8->callback = sub_80E8860; + gEasyChatStruct->unkA8 = &gSprites[spriteId]; + gEasyChatStruct->unkA8->callback = sub_80E8860; sub_80E87CC(0); } @@ -526,10 +526,10 @@ void sub_80E8860(struct Sprite *sprite) { if (sprite->data[1] == 0) { - if (gUnknown_083DB694->unk1B9 != 0) + if (gEasyChatStruct->unk1B9 != 0) { - sprite->pos1.x = gUnknown_083DB694->unk99A5 * 88 + 44; - sprite->pos1.y = (gUnknown_083DB694->unk99A4 - gUnknown_083DB694->unk9A29) * 16 + 96; + sprite->pos1.x = gEasyChatStruct->unk99A5 * 88 + 44; + sprite->pos1.y = (gEasyChatStruct->unk99A4 - gEasyChatStruct->unk9A29) * 16 + 96; sprite->pos2.x = -6; sprite->data[0] = 0; } @@ -553,12 +553,12 @@ void sub_80E88F0(void) for (i = 0; i < 2; i++) { - gUnknown_083DB694->unkAC[i]->invisible = TRUE; - gUnknown_083DB694->unkAC[i]->data[1] = 0; - gUnknown_083DB694->unkB4[i]->invisible = TRUE; - gUnknown_083DB694->unkB4[i]->data[1] = 0; + gEasyChatStruct->unkAC[i]->invisible = TRUE; + gEasyChatStruct->unkAC[i]->data[1] = 0; + gEasyChatStruct->unkB4[i]->invisible = TRUE; + gEasyChatStruct->unkB4[i]->data[1] = 0; } - gUnknown_083DB694->unk9C70 = 0; + gEasyChatStruct->unk9C70 = 0; } void sub_80E8958(u8 animNum) @@ -569,36 +569,36 @@ void sub_80E8958(u8 animNum) if (animNum == 0) { r9 = 100; - gUnknown_083DB694->unk9C6C = &gUnknown_083DB694->unk1B5; - if (gUnknown_083DB694->unk26 == 0) - gUnknown_083DB694->unk9C71 = gUnknown_083DB694->unk1B6 - 4; + gEasyChatStruct->unk9C6C = &gEasyChatStruct->unk1B5; + if (gEasyChatStruct->unk26 == 0) + gEasyChatStruct->unk9C71 = gEasyChatStruct->unk1B6 - 4; else - gUnknown_083DB694->unk9C71 = 0; + gEasyChatStruct->unk9C71 = 0; } else { r9 = 120; - gUnknown_083DB694->unk9C6C = &gUnknown_083DB694->unk9A29; - gUnknown_083DB694->unk9C71 = gUnknown_083DB694->unk9A28 - 4; + gEasyChatStruct->unk9C6C = &gEasyChatStruct->unk9A29; + gEasyChatStruct->unk9C71 = gEasyChatStruct->unk9A28 - 4; for (i = 0; i < 2; i++) { - gUnknown_083DB694->unkB4[i]->invisible = FALSE; - gUnknown_083DB694->unkB4[i]->data[1] = 1; + gEasyChatStruct->unkB4[i]->invisible = FALSE; + gEasyChatStruct->unkB4[i]->data[1] = 1; } } - if (gUnknown_083DB694->unk9C71 < 0) - gUnknown_083DB694->unk9C71 = 0; + if (gEasyChatStruct->unk9C71 < 0) + gEasyChatStruct->unk9C71 = 0; for (i = 0; i < 2; i++) { - gUnknown_083DB694->unkAC[i]->pos1.x = r9; - gUnknown_083DB694->unkAC[i]->invisible = FALSE; - gUnknown_083DB694->unkAC[i]->data[1] = 1; - StartSpriteAnim(gUnknown_083DB694->unkAC[i], animNum); + gEasyChatStruct->unkAC[i]->pos1.x = r9; + gEasyChatStruct->unkAC[i]->invisible = FALSE; + gEasyChatStruct->unkAC[i]->data[1] = 1; + StartSpriteAnim(gEasyChatStruct->unkAC[i], animNum); } - gUnknown_083DB694->unk9C70 = 1; + gEasyChatStruct->unk9C70 = 1; } const struct OamData gOamData_83DBCE0 = @@ -672,9 +672,9 @@ void sub_80E8A7C(void) for (i = 0; i < 2; i++) { spriteId = CreateSprite(&spriteTemplate_83DBD18, 0, 84 + i * 72 , 0); - gUnknown_083DB694->unkAC[i] = &gSprites[spriteId]; - gUnknown_083DB694->unkAC[i]->data[0] = i; - gUnknown_083DB694->unkAC[i]->vFlip = i; + gEasyChatStruct->unkAC[i] = &gSprites[spriteId]; + gEasyChatStruct->unkAC[i]->data[0] = i; + gEasyChatStruct->unkAC[i]->vFlip = i; } spriteTemplate_83DBD18.tileTag = 3; @@ -683,11 +683,11 @@ void sub_80E8A7C(void) for (i = 0; i < 2; i++) { spriteId = CreateSprite(&spriteTemplate_83DBD18, 142 + i * 40, 88, 0); - gUnknown_083DB694->unkB4[i] = &gSprites[spriteId]; - gUnknown_083DB694->unkB4[i]->data[0] = i; - gUnknown_083DB694->unkB4[i]->oam.shape = 1; - gUnknown_083DB694->unkB4[i]->oam.size = 1; - StartSpriteAnim(gUnknown_083DB694->unkB4[i], i); + gEasyChatStruct->unkB4[i] = &gSprites[spriteId]; + gEasyChatStruct->unkB4[i]->data[0] = i; + gEasyChatStruct->unkB4[i]->oam.shape = 1; + gEasyChatStruct->unkB4[i]->oam.size = 1; + StartSpriteAnim(gEasyChatStruct->unkB4[i], i); } sub_80E8958(0); @@ -698,19 +698,19 @@ void sub_80E8B78(struct Sprite *sprite) { bool8 invisible; - if (gUnknown_083DB694->unk9C70 != 0 && sprite->data[1] != 0) + if (gEasyChatStruct->unk9C70 != 0 && sprite->data[1] != 0) { if (sprite->data[0] == 0) { invisible = FALSE; - if (*gUnknown_083DB694->unk9C6C == 0) + if (*gEasyChatStruct->unk9C6C == 0) invisible = TRUE; sprite->invisible = invisible; } else { invisible = FALSE; - if (*gUnknown_083DB694->unk9C6C == gUnknown_083DB694->unk9C71) + if (*gEasyChatStruct->unk9C6C == gEasyChatStruct->unk9C71) invisible = TRUE; sprite->invisible = invisible; } @@ -898,36 +898,36 @@ void sub_80E8CEC(void) spriteId = CreateSprite(&gSpriteTemplate_83DBDE4, 224, 88, 0); if (spriteId != MAX_SPRITES) - gUnknown_083DB694->unk9C74 = &gSprites[spriteId]; + gEasyChatStruct->unk9C74 = &gSprites[spriteId]; else - gUnknown_083DB694->unk9C74 = NULL; + gEasyChatStruct->unk9C74 = NULL; } void sub_80E8D54(void) { - if (gUnknown_083DB694->unk9C74 != NULL) + if (gEasyChatStruct->unk9C74 != NULL) { - if (gUnknown_083DB694->unk26 == 0) - StartSpriteAnim(gUnknown_083DB694->unk9C74, 1); + if (gEasyChatStruct->unk26 == 0) + StartSpriteAnim(gEasyChatStruct->unk9C74, 1); else - StartSpriteAnim(gUnknown_083DB694->unk9C74, 2); + StartSpriteAnim(gEasyChatStruct->unk9C74, 2); } } void sub_80E8D8C(u8 a) { - if (gUnknown_083DB694->unk9C74 != NULL) + if (gEasyChatStruct->unk9C74 != NULL) { if (a != 0) { - if (gUnknown_083DB694->unk26 == 0) - StartSpriteAnim(gUnknown_083DB694->unk9C74, 3); + if (gEasyChatStruct->unk26 == 0) + StartSpriteAnim(gEasyChatStruct->unk9C74, 3); else - StartSpriteAnim(gUnknown_083DB694->unk9C74, 4); + StartSpriteAnim(gEasyChatStruct->unk9C74, 4); } else { - StartSpriteAnim(gUnknown_083DB694->unk9C74, 5); + StartSpriteAnim(gEasyChatStruct->unk9C74, 5); } } } @@ -969,10 +969,10 @@ void sub_80E8DD8(void) REG_BG0CNT = 0x8B00; REG_BG1CNT = 0x0D09; - CpuCopy16(gUnknown_08E945D0, gUnknown_083DB694->unk1C8, 0x500); - LZ77UnCompWram(gUnknown_08E953D0, gUnknown_083DB694->unk6C8); + CpuCopy16(gUnknown_08E945D0, gEasyChatStruct->unk1C8, 0x500); + LZ77UnCompWram(gUnknown_08E953D0, gEasyChatStruct->unk6C8); LZ77UnCompVram(gMenuWordGroupFrame_Gfx, (void *)(VRAM + 0x8000)); - CpuCopy16(gUnknown_083DB694->unk1C8, (void *)(VRAM + 0x6800), 0x500); + CpuCopy16(gEasyChatStruct->unk1C8, (void *)(VRAM + 0x6800), 0x500); LoadPalette(gMenuWordGroupFrame1_Pal, 64, 64); REG_BG2CNT = 0x0E02; @@ -994,7 +994,7 @@ void sub_80E8DD8(void) gPlttBufferFaded[49] = RGB(27, 26, 27); gPlttBufferFaded[56] = RGB(28, 28, 28); - gUnknown_083DB694->unkBC = 0; + gEasyChatStruct->unkBC = 0; sub_80E8FA4(); sub_80E948C(); sub_80E9198(10); @@ -1034,30 +1034,30 @@ void sub_80E8FA4(void) for (r4 = 0; r4 < 8; r4++) { - gUnknown_083DB694->unk9C34[i][r4] = RGB_(sp0[0] >> 8, sp0[1] >> 8, sp0[2] >> 8); + gEasyChatStruct->unk9C34[i][r4] = RGB_(sp0[0] >> 8, sp0[1] >> 8, sp0[2] >> 8); for (r3 = 0; r3 < 3; r3++) sp0[r3] += sp18[r3]; } - gUnknown_083DB694->unk9C34[i][r4] = RGB_(spC[0] >> 8, spC[1] >> 8, spC[2] >> 8); + gEasyChatStruct->unk9C34[i][r4] = RGB_(spC[0] >> 8, spC[1] >> 8, spC[2] >> 8); } - gUnknown_083DB694->unk9C32 = 0; + gEasyChatStruct->unk9C32 = 0; } void sub_80E9108(s8 a) { u16 i; - gUnknown_083DB694->unk9C32 += a; + gEasyChatStruct->unk9C32 += a; for (i = 0; i < 3; i++) { - gPlttBufferUnfaded[81 + i] = gUnknown_083DB694->unk9C34[i][gUnknown_083DB694->unk9C32]; - gPlttBufferFaded[81 + i] = gUnknown_083DB694->unk9C34[i][gUnknown_083DB694->unk9C32]; + gPlttBufferUnfaded[81 + i] = gEasyChatStruct->unk9C34[i][gEasyChatStruct->unk9C32]; + gPlttBufferFaded[81 + i] = gEasyChatStruct->unk9C34[i][gEasyChatStruct->unk9C32]; } } void sub_80E9178(void) { - gUnknown_083DB694->unk9C32 = 0; + gEasyChatStruct->unk9C32 = 0; sub_80E9108(0); } @@ -1094,19 +1094,19 @@ void sub_80E91D4(u8 a) switch (a) { case 0: - sub_80E91B0(gUnknown_083DB694->unk9C80, 4, 15, 2); - sub_80E91B0(gUnknown_083DB694->unk9CC9, 4, 17, 2); + sub_80E91B0(gEasyChatStruct->unk9C80, 4, 15, 2); + sub_80E91B0(gEasyChatStruct->unk9CC9, 4, 17, 2); break; case 1: - sub_80E91B0(gUnknown_083DB694->unk9D12, 4, 15, 2); - sub_80E91B0(gUnknown_083DB694->unk9D5B, 4, 17, 2); + sub_80E91B0(gEasyChatStruct->unk9D12, 4, 15, 2); + sub_80E91B0(gEasyChatStruct->unk9D5B, 4, 17, 2); break; case 2: sub_80E91B0(gOtherText_TextDeletedConfirmPage1, 4, 15, 2); sub_80E91B0(gOtherText_TextDeletedConfirmPage2, 4, 17, 2); break; case 3: - switch (gUnknown_083DB694->unk8) + switch (gEasyChatStruct->unk8) { case 9: sub_80E91B0(gOtherText_QuitGivingInfo, 4, 15, 4); @@ -1183,32 +1183,32 @@ void sub_80E9368(u8 a) } BasicInitMenuWindow(&gWindowConfig_81E6D8C); - gUnknown_083DB694->unk9F8E[0] = EXT_CTRL_CODE_BEGIN; - gUnknown_083DB694->unk9F8E[1] = 5; - gUnknown_083DB694->unk9F8E[2] = 1; + gEasyChatStruct->unk9F8E[0] = EXT_CTRL_CODE_BEGIN; + gEasyChatStruct->unk9F8E[1] = 5; + gEasyChatStruct->unk9F8E[2] = 1; if (r4 != NULL) { - sub_8072C74(gUnknown_083DB694->unk9F8E + 3, r4, 240, 2); - MenuPrint(gUnknown_083DB694->unk9F8E, 0, 0); + sub_8072C74(gEasyChatStruct->unk9F8E + 3, r4, 240, 2); + MenuPrint(gEasyChatStruct->unk9F8E, 0, 0); } else { - u8 *str = gUnknown_083DB694->unk9F8E + 3; + u8 *str = gEasyChatStruct->unk9F8E + 3; str[0] = EXT_CTRL_CODE_BEGIN; str[1] = 0x11; str[2] = 0x10; str[3] = EOS; - MenuPrint(gUnknown_083DB694->unk9F8E, 0, 0); - MenuPrint(gUnknown_083DB694->unk9F8E, 28, 0); + MenuPrint(gEasyChatStruct->unk9F8E, 0, 0); + MenuPrint(gEasyChatStruct->unk9F8E, 28, 0); } BasicInitMenuWindow(&gWindowConfig_81E6DA8); } void sub_80E948C(void) { - switch (gUnknown_083DB694->unk9) + switch (gEasyChatStruct->unk9) { case 4: sub_809D104((void *)(VRAM + 0x6800), 3, 3, gUnknown_08E94AD0, 0, 26, 24, 6); @@ -1234,7 +1234,7 @@ void sub_80E948C(void) void sub_80E95A4(void) { BasicInitMenuWindow(&gWindowConfig_81E6D8C); - switch (gUnknown_083DB694->unk9) + switch (gEasyChatStruct->unk9) { case 4: sub_80E9620(4, 6); @@ -1265,27 +1265,27 @@ void sub_80E9620(u16 a, u16 b) u16 r10 = 0; u16 r7 = a; - for (i = 0; i < gUnknown_083DB694->unk84; i++) + for (i = 0; i < gEasyChatStruct->unk84; i++) { u16 r6 = b; - for (j = 0; j < gUnknown_083DB694->unk83; j++) + for (j = 0; j < gEasyChatStruct->unk83; j++) { - if (r10 >= gUnknown_083DB694->unkA) + if (r10 >= gEasyChatStruct->unkA) { MenuPrint(gUnknown_083DBEA8, r6, r7); break; } - if (gUnknown_083DB694->unkC[r10] == 0xFFFF) + if (gEasyChatStruct->unkC[r10] == 0xFFFF) { sub_8095C8C((void *)(VRAM + 0x7000), r6, r7, gUnknown_083DBE1C, 0, 0, 9, 2, 9); r6 += 11; } else { - sub_80EB218(gUnknown_083DB694->unk9E14, gUnknown_083DB694->unkC[r10], 11); - MenuPrint(gUnknown_083DB694->unk9E14, r6, r7); - r6 += gUnknown_083DB694->unk8C[i][j] + 11; + sub_80EB218(gEasyChatStruct->unk9E14, gEasyChatStruct->unkC[r10], 11); + MenuPrint(gEasyChatStruct->unk9E14, r6, r7); + r6 += gEasyChatStruct->unk8C[i][j] + 11; } r10++; } @@ -1296,7 +1296,7 @@ void sub_80E9620(u16 a, u16 b) void sub_80E9744(void) { BasicInitMenuWindow(&gWindowConfig_81E6D8C); - switch (gUnknown_083DB694->unk9) + switch (gEasyChatStruct->unk9) { case 4: sub_80E97C0(4, 6); @@ -1327,31 +1327,31 @@ void sub_80E97C0(u16 a, u16 b) asm("":::"r9"); - for (i = 0; i < gUnknown_083DB694->unk84; i++) + for (i = 0; i < gEasyChatStruct->unk84; i++) { u8 r6; - u8 *r2 = gUnknown_083DB694->unk9E6E; + u8 *r2 = gEasyChatStruct->unk9E6E; u32 r1; - for (r6 = 0; r6 < gUnknown_083DB694->unk83; r6++) + for (r6 = 0; r6 < gEasyChatStruct->unk83; r6++) { - if (r7 >= gUnknown_083DB694->unkA) + if (r7 >= gEasyChatStruct->unkA) break; - if (gUnknown_083DB694->unkC[r7] != 0xFFFF) + if (gEasyChatStruct->unkC[r7] != 0xFFFF) { - r2 = sub_80EB218(r2, gUnknown_083DB694->unkC[r7], 0); + r2 = sub_80EB218(r2, gEasyChatStruct->unkC[r7], 0); *r2++ = CHAR_SPACE; } r7++; } - r1 = gUnknown_083DB694->unk83 * 11; + r1 = gEasyChatStruct->unk83 * 11; r2[0] = EXT_CTRL_CODE_BEGIN; r2[1] = 0x13; r2[2] = r1 * 8; r2[3] = EOS; - MenuPrint(gUnknown_083DB694->unk9E6E, b, a); + MenuPrint(gEasyChatStruct->unk9E6E, b, a); a += 2; } @@ -1363,7 +1363,7 @@ void sub_80E98C4(void) u8 r3; BasicInitMenuWindow(&gWindowConfig_81E6D8C); - switch (gUnknown_083DB694->unk9) + switch (gEasyChatStruct->unk9) { case 4: r1 = 4; @@ -1435,12 +1435,12 @@ const u8 *const gUnknown_083DBEAC[] = void sub_80E9974(void) { BasicInitMenuWindow(&gWindowConfig_81E6D54); - if (gUnknown_083DB694->unk26 == 0) + if (gEasyChatStruct->unk26 == 0) { u16 i; - for (i = gUnknown_083DB694->unk1B5; i < gUnknown_083DB694->unk1B5 + 4; i++) - sub_80E9940(gUnknown_083DB694->unk9DC9, i); + for (i = gEasyChatStruct->unk1B5; i < gEasyChatStruct->unk1B5 + 4; i++) + sub_80E9940(gEasyChatStruct->unk9DC9, i); } else { @@ -1455,13 +1455,13 @@ void sub_80E9974(void) void sub_80E9A14(void) { sub_80E9A4C(); - if (gUnknown_083DB694->unk26 == 0) - gUnknown_083DB694->unk1BA += gUnknown_083DB694->unk1B5 * 16; + if (gEasyChatStruct->unk26 == 0) + gEasyChatStruct->unk1BA += gEasyChatStruct->unk1B5 * 16; } void sub_80E9A4C(void) { - gUnknown_083DB694->unk1BA = 0; + gEasyChatStruct->unk1BA = 0; } void sub_80E9A60(const u8 *a, u16 b, u16 c) @@ -1470,21 +1470,21 @@ void sub_80E9A60(const u8 *a, u16 b, u16 c) MenuPrint(a, b, c); } -void sub_80E9A7C(u8 *a, u16 b) +void sub_80E9A7C(u8 *dest, u16 b) { u16 i; u16 r5 = b * 2; for (i = 0; i < 2; i++) { - a[0] = EXT_CTRL_CODE_BEGIN; - a[1] = 0x12; - a[2] = 88 * i; - a += 3; + dest[0] = EXT_CTRL_CODE_BEGIN; + dest[1] = 0x12; + dest[2] = 88 * i; + dest += 3; - a = sub_80EAD64(a, gUnknown_083DB694->unk2A[b][i], 11); + dest = CopyEasyChatGroupName(dest, gEasyChatStruct->unk2A[b][i], 11); r5++; - if (r5 >= gUnknown_083DB694->unk28) + if (r5 >= gEasyChatStruct->unk28) break; } } @@ -1505,31 +1505,31 @@ void sub_80E9AF8(u16 a) sub_80E9C74(a); - r8 = gUnknown_083DB694->unk9E14; + r8 = gEasyChatStruct->unk9E14; r8[0] = EXT_CTRL_CODE_BEGIN; r8[1] = 0x11; r8[2] = 0x10; r8 += 3; - if (gUnknown_083DB694->unk7D != 0) + if (gEasyChatStruct->unk7D != 0) { - for (i = 0; i < gUnknown_083DB694->unk99A6[a]; i++) + for (i = 0; i < gEasyChatStruct->unk99A6[a]; i++) { - if (sub_80EB2D4(gUnknown_083DB694->unk9A2A[a][i]) == 7) + if (sub_80EB2D4(gEasyChatStruct->unk9A2A[a][i]) == 7) BasicInitMenuWindow(&gWindowConfig_81E6D70); else BasicInitMenuWindow(&gWindowConfig_81E6D54); - sub_80EB218(r8, gUnknown_083DB694->unk9A2A[a][i], 9); - sub_80E9A60(gUnknown_083DB694->unk9E14, i * 11 + 4, a * 2); + sub_80EB218(r8, gEasyChatStruct->unk9A2A[a][i], 9); + sub_80E9A60(gEasyChatStruct->unk9E14, i * 11 + 4, a * 2); } } else { BasicInitMenuWindow(&gWindowConfig_81E6D54); - for (i = 0; i < gUnknown_083DB694->unk99A6[a]; i++) + for (i = 0; i < gEasyChatStruct->unk99A6[a]; i++) { - sub_80EB218(r8, gUnknown_083DB694->unk9A2A[a][i], 9); - sub_80E9A60(gUnknown_083DB694->unk9E14, i * 11 + 4, a * 2); + sub_80EB218(r8, gEasyChatStruct->unk9A2A[a][i], 9); + sub_80E9A60(gEasyChatStruct->unk9E14, i * 11 + 4, a * 2); } } } @@ -1542,11 +1542,11 @@ void sub_80E9C74(u16 a) void sub_80E9C94(void) { - u16 r5 = min(gUnknown_083DB694->unk9A28, 4); + u16 r5 = min(gEasyChatStruct->unk9A28, 4); u16 i; for (i = 0; i < r5; i++) - sub_80E9AF8(gUnknown_083DB694->unk9A29 + i); + sub_80E9AF8(gEasyChatStruct->unk9A29 + i); while (i < 4) sub_80E9C74(i++); } @@ -1556,15 +1556,15 @@ void sub_80E9D00(void) u16 r4; u16 r5; - if (gUnknown_083DB694->unk1C0 > 0) + if (gEasyChatStruct->unk1C0 > 0) { - r4 = gUnknown_083DB694->unk1C0; - r5 = gUnknown_083DB694->unk9A29 + 4; + r4 = gEasyChatStruct->unk1C0; + r5 = gEasyChatStruct->unk9A29 + 4; } else { - r4 = -gUnknown_083DB694->unk1C0; - r5 = gUnknown_083DB694->unk9A29 - r4; + r4 = -gEasyChatStruct->unk1C0; + r5 = gEasyChatStruct->unk9A29 - r4; } while (--r4 != 0xFFFF) sub_80E9AF8(r5++); @@ -1577,33 +1577,33 @@ void sub_80E9D7C(void) u16 i; BasicInitMenuWindow(&gWindowConfig_81E6D54); - if (gUnknown_083DB694->unk1C0 < 0) + if (gEasyChatStruct->unk1C0 < 0) { - r6 = -gUnknown_083DB694->unk1C0; - r4 = gUnknown_083DB694->unk1B5 - r6; + r6 = -gEasyChatStruct->unk1C0; + r4 = gEasyChatStruct->unk1B5 - r6; } else { - r6 = gUnknown_083DB694->unk1C0; - r4 = gUnknown_083DB694->unk1B5 + 4; + r6 = gEasyChatStruct->unk1C0; + r4 = gEasyChatStruct->unk1B5 + 4; } for (i = 0; i < r6; i++) { - sub_80E9940(gUnknown_083DB694->unk9DC9, r4); + sub_80E9940(gEasyChatStruct->unk9DC9, r4); r4++; } } void sub_80E9E08(u8 a) { - gUnknown_083DB694->unk1BC = (gUnknown_083DB694->unk1BA + gUnknown_083DB694->unk1C0 * 16) & 0x7F; - gUnknown_083DB694->unk1BF = (gUnknown_083DB694->unk1C0 < 0) ? -a : a; + gEasyChatStruct->unk1BC = (gEasyChatStruct->unk1BA + gEasyChatStruct->unk1C0 * 16) & 0x7F; + gEasyChatStruct->unk1BF = (gEasyChatStruct->unk1C0 < 0) ? -a : a; } bool8 sub_80E9E54(void) { - gUnknown_083DB694->unk1BA = (gUnknown_083DB694->unk1BA + gUnknown_083DB694->unk1BF) & 0x7F; - return (gUnknown_083DB694->unk1BA == gUnknown_083DB694->unk1BC); + gEasyChatStruct->unk1BA = (gEasyChatStruct->unk1BA + gEasyChatStruct->unk1BF) & 0x7F; + return (gEasyChatStruct->unk1BA == gEasyChatStruct->unk1BC); } void nullsub_23(void) @@ -1612,37 +1612,37 @@ void nullsub_23(void) void sub_80E9E98(void) { - gUnknown_083DB694->unkBE = 0; + gEasyChatStruct->unkBE = 0; } bool8 sub_80E9EA8(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: sub_80EA24C(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 1: if (sub_80EA1E0() != 0) { sub_80EA4A4(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; } break; case 2: if (sub_80EA1E0() != 0) { sub_80EA704(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; } break; case 3: if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 4: - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 5: return TRUE; @@ -1652,32 +1652,32 @@ bool8 sub_80E9EA8(void) bool8 sub_80E9F50(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: nullsub_23(); sub_80EA764(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 1: if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 2: sub_80EA5A0(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 3: if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 4: sub_80EA348(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 5: if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 6: return TRUE; @@ -1687,12 +1687,12 @@ bool8 sub_80E9F50(void) bool8 sub_80E9FD4(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: nullsub_23(); sub_80EA5A0(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 1: if (sub_80EA1E0() != 0) @@ -1704,11 +1704,11 @@ bool8 sub_80E9FD4(void) bool8 sub_80EA014(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: sub_80EA4A4(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 1: if (sub_80EA1E0() != 0) @@ -1720,18 +1720,18 @@ bool8 sub_80EA014(void) bool8 sub_80EA050(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: nullsub_23(); sub_80EA764(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 1: if (sub_80EA1E0() != 0) { sub_80EA7F4(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; } break; case 2: @@ -1739,13 +1739,13 @@ bool8 sub_80EA050(void) if (sub_80EA1E0() != 0) { sub_80EA8BC(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; } break; case 3: sub_80E9108(1); if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 4: return TRUE; @@ -1755,18 +1755,18 @@ bool8 sub_80EA050(void) bool8 sub_80EA0E4(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: sub_80EA948(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 1: sub_80E9108(-1); if (sub_80EA1E0() != 0) { sub_80EAA44(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; } break; case 2: @@ -1774,12 +1774,12 @@ bool8 sub_80EA0E4(void) if (sub_80EA1E0() != 0) { sub_80EA704(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; } break; case 3: if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 4: return TRUE; @@ -1789,15 +1789,15 @@ bool8 sub_80EA0E4(void) bool8 sub_80EA184(void) { - switch (gUnknown_083DB694->unkBE) + switch (gEasyChatStruct->unkBE) { case 0: sub_80EAAD4(); - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; // fall through case 1: if (sub_80EA1E0() != 0) - gUnknown_083DB694->unkBE++; + gEasyChatStruct->unkBE++; break; case 2: sub_80E9178(); @@ -1810,15 +1810,15 @@ bool8 sub_80EA1E0(void) { u16 i; - if (gUnknown_083DB694->unkC4 != 0) + if (gEasyChatStruct->unkC4 != 0) { - for (i = 0; i < gUnknown_083DB694->unkC2; i++) + for (i = 0; i < gEasyChatStruct->unkC2; i++) { - sub_80EAC0C(gUnknown_083DB694->unkC8[i]); - sub_80EAC48(&gUnknown_083DB694->unk148[i]); + sub_80EAC0C(gEasyChatStruct->unkC8[i]); + sub_80EAC48(&gEasyChatStruct->unk148[i]); } - gUnknown_083DB694->unkBC = 1; - gUnknown_083DB694->unkC4--; + gEasyChatStruct->unkBC = 1; + gEasyChatStruct->unkC4--; return FALSE; } return TRUE; @@ -1826,182 +1826,182 @@ bool8 sub_80EA1E0(void) void sub_80EA24C(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 13, 14, 13, 15, -2, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 13, 14, 13, 15, -2, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 14, 12, 15, 0, 0, 2, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 30, 0, -2, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 12, 14, 12, 15, 0, 0, 2, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 30, 0, -2, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 13, 15, 13, 16, -2, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 9, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 13, 15, 13, 16, -2, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[2], 0, 9, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 12, 16, 0, 0, 2, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[3], 30, 9, -2, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[3], 12, 15, 12, 16, 0, 0, 2, 0); + sub_80EAC30(&gEasyChatStruct->unk148[3], 30, 9, -2, 0, gEasyChatStruct->unk6C8); - gUnknown_083DB694->unkC2 = 4; - gUnknown_083DB694->unkC4 = 6; + gEasyChatStruct->unkC2 = 4; + gEasyChatStruct->unkC4 = 6; } void sub_80EA348(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 1, 14, 13, 15, 2, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 1, 14, 13, 15, 2, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 14, 24, 15, 0, 0, -2, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 18, 0, 2, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 12, 14, 24, 15, 0, 0, -2, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 18, 0, 2, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 15, 13, 16, 2, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 9, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 1, 15, 13, 16, 2, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[2], 0, 9, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 24, 16, 0, 0, -2, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[3], 18, 9, 2, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[3], 12, 15, 24, 16, 0, 0, -2, 0); + sub_80EAC30(&gEasyChatStruct->unk148[3], 18, 9, 2, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[4], 1, 14, 1, 16, 0, 0, 2, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[4], 1, 14, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[4], 1, 14, 1, 16, 0, 0, 2, 0); + sub_80EAC30(&gEasyChatStruct->unk148[4], 1, 14, 0, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[5], 24, 14, 24, 16, -2, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[5], 24, 14, -2, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[5], 24, 14, 24, 16, -2, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[5], 24, 14, -2, 0, gEasyChatStruct->unk1C8); - gUnknown_083DB694->unkC2 = 6; - gUnknown_083DB694->unkC4 = 6; + gEasyChatStruct->unkC2 = 6; + gEasyChatStruct->unkC4 = 6; } void sub_80EA4A4(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 1, 14, 13, 15, 0, -1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 1, 14, 13, 15, 0, -1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 14, 24, 15, 0, -1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 18, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 12, 14, 24, 15, 0, -1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 18, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 15, 13, 16, 0, 0, 0, 1); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 9, 0, -1, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 1, 15, 13, 16, 0, 0, 0, 1); + sub_80EAC30(&gEasyChatStruct->unk148[2], 0, 9, 0, -1, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 24, 16, 0, 0, 0, 1); - sub_80EAC30(&gUnknown_083DB694->unk148[3], 18, 9, 0, -1, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[3], 12, 15, 24, 16, 0, 0, 0, 1); + sub_80EAC30(&gEasyChatStruct->unk148[3], 18, 9, 0, -1, gEasyChatStruct->unk6C8); - gUnknown_083DB694->unkC2 = 4; - gUnknown_083DB694->unkC4 = 4; + gEasyChatStruct->unkC2 = 4; + gEasyChatStruct->unkC4 = 4; } void sub_80EA5A0(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 1, 10, 13, 15, 0, 1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 1, 10, 13, 15, 0, 1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 12, 10, 24, 15, 0, 1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 18, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 12, 10, 24, 15, 0, 1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 18, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 15, 13, 20, 0, 0, 0, -1); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 5, 0, 1, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 1, 15, 13, 20, 0, 0, 0, -1); + sub_80EAC30(&gEasyChatStruct->unk148[2], 0, 5, 0, 1, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[3], 12, 15, 24, 20, 0, 0, 0, -1); - sub_80EAC30(&gUnknown_083DB694->unk148[3], 18, 5, 0, 1, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[3], 12, 15, 24, 20, 0, 0, 0, -1); + sub_80EAC30(&gEasyChatStruct->unk148[3], 18, 5, 0, 1, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[4], 1, 10, 24, 10, 0, 0, 0, 1); - sub_80EAC30(&gUnknown_083DB694->unk148[4], 1, 10, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[4], 1, 10, 24, 10, 0, 0, 0, 1); + sub_80EAC30(&gEasyChatStruct->unk148[4], 1, 10, 0, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[5], 1, 20, 24, 20, 0, -1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[5], 1, 20, 0, -1, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[5], 1, 20, 24, 20, 0, -1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[5], 1, 20, 0, -1, gEasyChatStruct->unk1C8); - gUnknown_083DB694->unkC2 = 6; - gUnknown_083DB694->unkC4 = 4; + gEasyChatStruct->unkC2 = 6; + gEasyChatStruct->unkC4 = 4; } void sub_80EA704(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 24, 12, 25, 20, 0, 0, 1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 5, 10, -1, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 24, 12, 25, 20, 0, 0, 1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 5, 10, -1, 0, gEasyChatStruct->unk6C8); - gUnknown_083DB694->unkC2 = 1; - gUnknown_083DB694->unkC4 = 5; + gEasyChatStruct->unkC2 = 1; + gEasyChatStruct->unkC4 = 5; } void sub_80EA764(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 24, 12, 30, 20, 0, 0, -1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 10, 1, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 24, 12, 30, 20, 0, 0, -1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 10, 1, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 30, 12, 31, 20, -1, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 30, 12, -1, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 30, 12, 31, 20, -1, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 30, 12, -1, 0, gEasyChatStruct->unk1C8); - gUnknown_083DB694->unkC2 = 2; - gUnknown_083DB694->unkC4 = 6; + gEasyChatStruct->unkC2 = 2; + gEasyChatStruct->unkC4 = 6; } void sub_80EA7F4(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 20, 10, 25, 20, 0, 0, 1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 25, 0, -1, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 20, 10, 25, 20, 0, 0, 1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 25, 0, -1, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 0, 10, 1, 20, 0, 0, 1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 0, 10, 1, 20, 0, 0, 1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 0, 10, 0, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 1, 10, 4, 20, 1, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 1, 10, 4, 20, 1, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[2], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - gUnknown_083DB694->unkC2 = 3; - gUnknown_083DB694->unkC4 = 2; + gEasyChatStruct->unkC2 = 3; + gEasyChatStruct->unkC4 = 2; } void sub_80EA8BC(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 3, 10, 4, 20, 0, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 3, 10, 4, 20, 0, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 0, 10, 2, 20, 0, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 0, 10, 2, 20, 0, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 0, 10, 0, 0, gEasyChatStruct->unk1C8); - gUnknown_083DB694->unkC2 = 2; - gUnknown_083DB694->unkC4 = 1; + gEasyChatStruct->unkC2 = 2; + gEasyChatStruct->unkC4 = 1; } void sub_80EA948(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 0, 10, 2, 20, 0, 0, -1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 0, 10, 2, 20, 0, 0, -1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 10, 0, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 3, 10, 5, 20, -1, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 3, 10, 5, 20, -1, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 26, 10, 30, 20, -1, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 26, 10, -1, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 26, 10, 30, 20, -1, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[2], 26, 10, -1, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[3], 25, 10, 26, 20, -1, 0, -1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[3], 29, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[3], 25, 10, 26, 20, -1, 0, -1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[3], 29, 0, 0, 0, gEasyChatStruct->unk6C8); - gUnknown_083DB694->unkC2 = 4; - gUnknown_083DB694->unkC4 = 2; + gEasyChatStruct->unkC2 = 4; + gEasyChatStruct->unkC4 = 2; } void sub_80EAA44(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 24, 10, 30, 20, 0, 0, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 24, 10, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 24, 10, 30, 20, 0, 0, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 24, 10, 0, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 23, 10, 24, 20, 0, 0, -1, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 29, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 23, 10, 24, 20, 0, 0, -1, 0); + sub_80EAC30(&gEasyChatStruct->unk148[1], 29, 0, 0, 0, gEasyChatStruct->unk6C8); - gUnknown_083DB694->unkC2 = 2; - gUnknown_083DB694->unkC4 = 1; + gEasyChatStruct->unkC2 = 2; + gEasyChatStruct->unkC4 = 1; } void sub_80EAAD4(void) { - sub_80EABD4(gUnknown_083DB694->unkC8[0], 0, 10, 30, 15, 0, 1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[0], 0, 0, 0, 0, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[0], 0, 10, 30, 15, 0, 1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[0], 0, 0, 0, 0, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[1], 0, 15, 30, 20, 0, 0, 0, -1); - sub_80EAC30(&gUnknown_083DB694->unk148[1], 0, 5, 0, 1, gUnknown_083DB694->unk6C8); + sub_80EABD4(gEasyChatStruct->unkC8[1], 0, 15, 30, 20, 0, 0, 0, -1); + sub_80EAC30(&gEasyChatStruct->unk148[1], 0, 5, 0, 1, gEasyChatStruct->unk6C8); - sub_80EABD4(gUnknown_083DB694->unkC8[2], 0, 10, 30, 10, 0, 0, 0, 1); - sub_80EAC30(&gUnknown_083DB694->unk148[2], 0, 10, 0, 0, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[2], 0, 10, 30, 10, 0, 0, 0, 1); + sub_80EAC30(&gEasyChatStruct->unk148[2], 0, 10, 0, 0, gEasyChatStruct->unk1C8); - sub_80EABD4(gUnknown_083DB694->unkC8[3], 0, 20, 30, 20, 0, -1, 0, 0); - sub_80EAC30(&gUnknown_083DB694->unk148[3], 0, 20, 0, -1, gUnknown_083DB694->unk1C8); + sub_80EABD4(gEasyChatStruct->unkC8[3], 0, 20, 30, 20, 0, -1, 0, 0); + sub_80EAC30(&gEasyChatStruct->unk148[3], 0, 20, 0, -1, gEasyChatStruct->unk1C8); - gUnknown_083DB694->unkC2 = 4; - gUnknown_083DB694->unkC4 = 5; + gEasyChatStruct->unkC2 = 4; + gEasyChatStruct->unkC4 = 5; } void sub_80EABD4(u16 *a, u16 b, u16 c, u16 d, u16 e, u16 f, u16 g, u16 h, u16 i) @@ -2043,11 +2043,11 @@ void sub_80EAC5C(void) { u16 i; - if (gUnknown_083DB694->unkBC != 0) + if (gEasyChatStruct->unkBC != 0) { - for (i = 0; i < gUnknown_083DB694->unkC2; i++) - sub_80EACBC((void *)(VRAM + 0x6800), gUnknown_083DB694->unkC8[i], &gUnknown_083DB694->unk148[i]); - gUnknown_083DB694->unkBC = 0; + for (i = 0; i < gEasyChatStruct->unkC2; i++) + sub_80EACBC((void *)(VRAM + 0x6800), gEasyChatStruct->unkC8[i], &gEasyChatStruct->unk148[i]); + gEasyChatStruct->unkBC = 0; } } @@ -2069,11 +2069,11 @@ void sub_80EAD08(void) r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; r4 += 88; - r2 = (gUnknown_083DB694->unk1BA - 88) & 0xFF; + r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; for (i = 0; i < 64; i++) { - if (gUnknown_083DB694->unk1BA + i == 128) + if (gEasyChatStruct->unk1BA + i == 128) r2 = (-i - 88) & 0xFF; *r4++ = r2; } @@ -2084,9 +2084,9 @@ extern const u8 gEasyChatGroupSizes[]; extern const u16 gEasyChatWordsByLetter[]; extern const u16 gEasyChatWordsAlphabetized[]; -u8 *sub_80EAD64(u8 *a, u8 group, int unused) +u8 *CopyEasyChatGroupName(u8 *dest, u8 group, int unused) { - return StringCopy(a, gEasyChatGroupNames[group]); + return StringCopy(dest, gEasyChatGroupNames[group]); } bool8 sub_80EAD7C(u8 group) @@ -2111,15 +2111,15 @@ bool8 sub_80EADC0(u8 group, u16 word) switch (group) { case EC_GROUP_TRENDY_SAYING: - if (gUnknown_083DB694->unk40[2][11 + group] == 0) + if (gEasyChatStruct->unk40[2][11 + group] == 0) return FALSE; return sub_80EB868(word); - case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_1: return GetSetPokedexFlag(SpeciesToNationalPokedexNum(word), 0); case EC_GROUP_EVENTS: case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: - if (gUnknown_083DB694->unk40[2][11 + group] == 0) + if (gEasyChatStruct->unk40[2][11 + group] == 0) return FALSE; return TRUE; case EC_GROUP_POKEMON_2: @@ -2133,9 +2133,9 @@ u16 sub_80EAE88(u8 group) { switch (group) { - case 0: + case EC_GROUP_POKEMON_1: return GetHoennPokedexCount(0); - case 0x14: + case EC_GROUP_TRENDY_SAYING: return sub_80EB8C0(); default: if (sub_80EAD7C(group)) @@ -2156,7 +2156,7 @@ void sub_80EAECC(void) push {r5-r7}\n\ sub sp, 0x10\n\ movs r7, 0\n\ - ldr r1, _080EAF08 @ =gUnknown_083DB694\n\ + ldr r1, _080EAF08 @ =gEasyChatStruct\n\ ldr r0, [r1]\n\ ldr r3, _080EAF0C @ =0x0000446c\n\ adds r3, r0, r3\n\ @@ -2181,7 +2181,7 @@ _080EAEE4:\n\ str r3, [sp, 0x8]\n\ b _080EB00C\n\ .align 2, 0\n\ -_080EAF08: .4byte gUnknown_083DB694\n\ +_080EAF08: .4byte gEasyChatStruct\n\ _080EAF0C: .4byte 0x0000446c\n\ _080EAF10: .4byte gEasyChatWordsByLetter\n\ _080EAF14:\n\ @@ -2234,7 +2234,7 @@ _080EAF4A:\n\ beq _080EAF9E\n\ cmp r3, 0\n\ bne _080EAF9E\n\ - ldr r3, _080EAFBC @ =gUnknown_083DB694\n\ + ldr r3, _080EAFBC @ =gEasyChatStruct\n\ ldr r2, [r3]\n\ mov r1, r9\n\ adds r0, r1, 0x1\n\ @@ -2267,7 +2267,7 @@ _080EAFAC: .4byte gEasyChatWordsAlphabetized\n\ _080EAFB0: .4byte 0x0000feff\n\ _080EAFB4: .4byte 0x0000ffff\n\ _080EAFB8: .4byte 0x000001ff\n\ -_080EAFBC: .4byte gUnknown_083DB694\n\ +_080EAFBC: .4byte gEasyChatStruct\n\ _080EAFC0: .4byte 0x00000b78\n\ _080EAFC4: .4byte 0x0000446c\n\ _080EAFC8:\n\ @@ -2280,7 +2280,7 @@ _080EAFC8:\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _080EB00C\n\ - ldr r0, _080EB034 @ =gUnknown_083DB694\n\ + ldr r0, _080EB034 @ =gEasyChatStruct\n\ ldr r2, [r0]\n\ mov r1, r9\n\ adds r0, r1, 0x1\n\ @@ -2327,7 +2327,7 @@ _080EB020:\n\ bx r0\n\ .align 2, 0\n\ _080EB030: .4byte 0x000001ff\n\ -_080EB034: .4byte gUnknown_083DB694\n\ +_080EB034: .4byte gEasyChatStruct\n\ _080EB038: .4byte 0x00000b78\n\ _080EB03C: .4byte 0x0000446c\n\ .syntax divided\n"); @@ -2346,7 +2346,7 @@ void sub_80EAECC(void) u16 word = gEasyChatWordsByLetter[i]; u16 sp0 = gEasyChatWordsByLetter[i + 1]; - gUnknown_083DB694->unk4142[i] = 0; + gEasyChatStruct->unk4142[i] = 0; r9 = 0; r6 = word; while (r6 < sp0) @@ -2362,8 +2362,8 @@ void sub_80EAECC(void) word = gEasyChatWordsAlphabetized[r6++]; if (sub_80EADC0(EC_GROUP(word), EC_INDEX(word)) && !r7) { - gUnknown_083DB694->unkB78[i][r9++] = word; - gUnknown_083DB694->unk4142[i]++; + gEasyChatStruct->unkB78[i][r9++] = word; + gEasyChatStruct->unk4142[i]++; r7 = TRUE; } } @@ -2372,8 +2372,8 @@ void sub_80EAECC(void) { if (sub_80EADC0(EC_GROUP(word), EC_INDEX(word))) { - gUnknown_083DB694->unkB78[i][r9++] = word; - gUnknown_083DB694->unk4142[i]++; + gEasyChatStruct->unkB78[i][r9++] = word; + gEasyChatStruct->unk4142[i]++; } } } @@ -2386,14 +2386,14 @@ extern const u16 *const gEasyChatGroupOrders[]; extern const u8 gEasyChatGroupSizes[]; // loads strings of all easy chat words except for the species and move names. -void sub_80EB040(void) +void LoadEasyChatStrings(void) { u16 group; u16 index; for (group = 0; group <= EC_GROUP_POKEMON_2; group++) { - if (group != EC_GROUP_POKEMON + if (group != EC_GROUP_POKEMON_1 && group != EC_GROUP_POKEMON_2 && group != EC_GROUP_MOVE_1 && group != EC_GROUP_MOVE_2) @@ -2403,7 +2403,7 @@ void sub_80EB040(void) index = 0; while (*wordText != EOS) { - gUnknown_083DB694->unk41A4[group][index] = wordText; + gEasyChatStruct->ecWordStrings[group][index] = wordText; // Find the end of the current word while (*wordText != EOS) @@ -2424,20 +2424,20 @@ void sub_80EB0B0(void) u16 r9; u16 r8; - if (gUnknown_083DB694->unk26 == 0) + if (gEasyChatStruct->unk26 == 0) { - u16 r6 = gUnknown_083DB694->unk1B8; + u16 group = gEasyChatStruct->unk1B8; - gUnknown_083DB694->unk4178[r6] = 0; + gEasyChatStruct->unk4178[group] = 0; r7 = 0; r9 = 0; - sp0 = gEasyChatGroupOrders[r6]; - for (r8 = 0; r8 < gEasyChatGroupSizes[gUnknown_083DB694->unk1B8]; r8++) + sp0 = gEasyChatGroupOrders[group]; + for (r8 = 0; r8 < gEasyChatGroupSizes[gEasyChatStruct->unk1B8]; r8++) { - if (sub_80EADC0(r6, sp0[r8])) + if (sub_80EADC0(group, sp0[r8])) { - gUnknown_083DB694->unk9A2A[r9][r7] = ((r6 & 0x7F) << 9) | (sp0[r8] & 0x1FF); - gUnknown_083DB694->unk4178[r6]++; + gEasyChatStruct->unk9A2A[r9][r7] = ((group & 0x7F) << 9) | (sp0[r8] & 0x1FF); + gEasyChatStruct->unk4178[group]++; r7++; if (r7 > 1) { @@ -2449,14 +2449,14 @@ void sub_80EB0B0(void) } else { - u8 r2 = gUnknown_083DB694->unk1B8; + u8 r2 = gEasyChatStruct->unk1B8; u16 r3 = 0; u16 r6 = 0; u16 r5; - for (r5 = 0; r5 < gUnknown_083DB694->unk4142[r2]; r5++) + for (r5 = 0; r5 < gEasyChatStruct->unk4142[r2]; r5++) { - gUnknown_083DB694->unk9A2A[r6][r3] = gUnknown_083DB694->unkB78[r2][r5]; + gEasyChatStruct->unk9A2A[r6][r3] = gEasyChatStruct->unkB78[r2][r5]; r3++; if (r3 > 1) { @@ -2467,17 +2467,17 @@ void sub_80EB0B0(void) } } -u8 *sub_80EB218(u8 *a, u16 word, u16 c) +u8 *sub_80EB218(u8 *dest, u16 word, u16 c) { u8 *wordText; if (sub_80EB37C(word)) { - wordText = StringCopy(a, gOtherText_ThreeQuestions); + wordText = StringCopy(dest, gOtherText_ThreeQuestions); } else if (word == 0xFFFF) { - wordText = a; + wordText = dest; wordText[0] = EOS; // Why? It's going to get overwritten. } else @@ -2487,16 +2487,16 @@ u8 *sub_80EB218(u8 *a, u16 word, u16 c) switch (group) { - case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_1: case EC_GROUP_POKEMON_2: - wordText = StringCopy(a, gSpeciesNames[index]); + wordText = StringCopy(dest, gSpeciesNames[index]); break; case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: - wordText = StringCopy(a, gMoveNames[index]); + wordText = StringCopy(dest, gMoveNames[index]); break; default: - wordText = StringCopy(a, gUnknown_083DB694->unk41A4[group][index]); + wordText = StringCopy(dest, gEasyChatStruct->ecWordStrings[group][index]); break; } } @@ -2531,7 +2531,7 @@ u16 sub_80EB2D4(u16 word) switch (group) { - case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_1: case EC_GROUP_POKEMON_2: wordText = gSpeciesNames[index]; break; @@ -2540,7 +2540,7 @@ u16 sub_80EB2D4(u16 word) wordText = gMoveNames[index]; break; default: - wordText = gUnknown_083DB694->unk41A4[group][index]; + wordText = gEasyChatStruct->ecWordStrings[group][index]; break; } } @@ -2557,7 +2557,7 @@ u16 sub_80EB2D4(u16 word) bool8 sub_80EB37C(u16 word) { const u16 *r4; - u16 r3; + u16 i; if (word == 0xFFFF) { @@ -2572,14 +2572,14 @@ bool8 sub_80EB37C(u16 word) { switch (group) { - case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_1: case EC_GROUP_POKEMON_2: case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: r4 = (u16 *)gEasyChatGroupWords[group]; - for (r3 = 0; r3 < gEasyChatGroupSizes[group]; r3++) + for (i = 0; i < gEasyChatGroupSizes[group]; i++) { - if (index == r4[r3]) + if (index == r4[i]) return FALSE; } break; @@ -2602,7 +2602,7 @@ u32 de_sub_80EB748(s32 group, s32 index) switch (group) { - case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_1: case EC_GROUP_POKEMON_2: case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: @@ -2647,7 +2647,7 @@ u8 *EasyChat_GetWordText(u8 *dst, u16 word) wordIndex = EC_INDEX(word); switch (group) { - case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_1: // 0 case EC_GROUP_POKEMON_2: // 21 dst = StringCopy(dst, gSpeciesNames[wordIndex]); break; @@ -2763,7 +2763,7 @@ u16 unref_sub_80EB5E0(u16 arg0) word = EC_INDEX(arg0); switch (group) { - case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_1: // 0 case EC_GROUP_POKEMON_2: // 21 chars = gSpeciesNames[word]; break; @@ -2845,7 +2845,7 @@ u16 sub_80EB72C(u16 group) { u16 local1 = Random() % gEasyChatGroupSizes[group]; - if (group == EC_GROUP_POKEMON + if (group == EC_GROUP_POKEMON_1 || group == EC_GROUP_POKEMON_2 || group == EC_GROUP_MOVE_1 || group == EC_GROUP_MOVE_2) @@ -2861,7 +2861,7 @@ u16 sub_80EB784(u16 group) if (!sub_80EAD7C(group)) return -1; - if (group != EC_GROUP_POKEMON) + if (group != EC_GROUP_POKEMON_1) { if (group == EC_GROUP_TRENDY_SAYING) return sub_80EB960(); @@ -3030,8 +3030,8 @@ static u16 sub_80EB9D8(void) return -1; local1 = Random() % local1; - speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON]; - for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++) + speciesList = (u16 *)gEasyChatGroupWords[EC_GROUP_POKEMON_1]; + for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON_1]; i++) { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); const u8 local2 = GetSetPokedexFlag(dexNum, 0); -- cgit v1.2.3 From 8d035c81528d172570338ec82c07770e7ebcfe50 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Jan 2018 22:15:05 -0700 Subject: cable car util --- src/engine/cable_car_util.c | 46 +++++++++++++++++++++++++++++++++++++++++++ src/scene/cable_car.c | 48 ++++++++++++++++++++++----------------------- 2 files changed, 70 insertions(+), 24 deletions(-) create mode 100644 src/engine/cable_car_util.c (limited to 'src') diff --git a/src/engine/cable_car_util.c b/src/engine/cable_car_util.c new file mode 100644 index 000000000..27f703b42 --- /dev/null +++ b/src/engine/cable_car_util.c @@ -0,0 +1,46 @@ +#include "global.h" +#include "cable_car_util.h" + +// static types + +// static declarations + +// rodata + +// text + +void CableCarUtil_FillWrapped(void *dest, u16 value, u8 x, u8 y, u8 width, u8 height) +{ + u8 i; + u8 j; + u8 _x; + u8 _y; + + for (i = 0, _y = y; i < height; i++) + { + for (_x = x, j = 0; j < width; j++) + { + *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = value; + _x = (_x + 1) % 32; + } + _y = (_y + 1) % 32; + } +} +void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height) +{ + u8 i; + u8 j; + u8 _x; + u8 _y; + const u16 *_src; + + for (i = 0, _src = src, _y = y; i < height; i++) + { + for (_x = x, j = 0; j < width; j++) + { + *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = *_src++; + _x = (_x + 1) % 32; + } + _y = (_y + 1) % 32; + } +} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index f57233556..52a0aeebf 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -268,22 +268,22 @@ static void CableCarMainCallback_Setup(void) } break; case 5: - sub_8124F08((void *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); - sub_8124F08((void *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); - sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); + CableCarUtil_CopyWrapped((void *)BG_SCREEN_ADDR(29), eCableCar2->treeTilemap, 0, 17, 32, 15); + CableCarUtil_CopyWrapped((void *)BG_SCREEN_ADDR(30), eCableCar2->mountainTilemap, 0, 0, 30, 20); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 20); gMain.state++; break; case 6: sub_81248AC(gSpecialVar_0x8004); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x48, 0, 14, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x6C, 12, 17, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x90, 24, 20, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 0, 17, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0, 20, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 12, 20, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 12, 23, 12, 3); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x00, 24, 23, 12, 3); gMain.state++; break; case 7: @@ -435,17 +435,17 @@ static void sub_81239E4(u8 taskId) switch (sCableCarPtr->unk_0014) { case 175: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); break; case 40: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 3, 0, 2, 2); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 3, 0, 2, 2); break; case 32: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 1, 2); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 2, 0, 1, 2); break; case 16: - sub_8124F08(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); - sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, gCableCarPylonHookTilemapEntries, 0, 0, 5, 2); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); sCableCarPtr->unk_0015 = 64; break; } @@ -471,11 +471,11 @@ static void sub_8123AF8(u8 taskId) switch (sCableCarPtr->unk_0014) { case 176: - sub_8124F08(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_08fc, eCableCar2->pylonStemTilemap, 0, 2, 2, 30); break; case 16: - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 2, 0, 3, 2); - sub_8124E7C(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 2, 0, 3, 2); + CableCarUtil_FillWrapped(sCableCarPtr->unk_08fc, 0, 0, 22, 2, 10); sCableCarPtr->unk_0015 = 192; break; case 32: @@ -772,7 +772,7 @@ static void LoadSprites(void) sub_807C9B4(2); break; case 1: - sub_8124F08(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); + CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); spriteId = AddPseudoFieldObject(playerGraphicsIds[gSaveBlock2.playerGender], sub_8123D98, 0x80, 0x27, 0x66); if (spriteId != MAX_SPRITES) { @@ -914,14 +914,14 @@ static void sub_81245F4(void) sCableCarPtr->unk_00fc[gUnknown_02039279][gUnknown_02039278] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } gUnknown_02039278 = (sCableCarPtr->unk_0019 + 30) % 32; - sub_8124E7C(sCableCarPtr->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); + CableCarUtil_FillWrapped(sCableCarPtr->unk_00fc, 0, gUnknown_02039278, 0, 2, 32); if (sCableCarPtr->unk_0018 == 0) { sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 29) % 32; sCableCarPtr->unk_0018 = 12; sub_812446C(); gUnknown_02039278 = (sCableCarPtr->unk_001a + 1) % 32; - sub_8124E7C(sCableCarPtr->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); + CableCarUtil_FillWrapped(sCableCarPtr->unk_00fc, 0, 0, gUnknown_02039278, 32, 9); } } @@ -944,7 +944,7 @@ static void sub_812476C(void) sCableCarPtr->unk_00fc[gUnknown_0203927C][gUnknown_0203927B] = sCableCarPtr->unk_0022[i][sCableCarPtr->unk_0018 + 1]; } gUnknown_0203927C = (sCableCarPtr->unk_001a + 23) % 32; - sub_8124E7C(sCableCarPtr->unk_00fc, 0, sCableCarPtr->unk_0019, gUnknown_0203927C, 2, 9); + CableCarUtil_FillWrapped(sCableCarPtr->unk_00fc, 0, sCableCarPtr->unk_0019, gUnknown_0203927C, 2, 9); if (sCableCarPtr->unk_0018 == 10) { sCableCarPtr->unk_001a = (sCableCarPtr->unk_001a + 3) % 32; -- cgit v1.2.3 From e03aeeec0de589ce361eb37edb4fc091f0959a1a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 00:17:11 -0500 Subject: Rename vars in cable car util --- src/engine/cable_car_util.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/engine/cable_car_util.c b/src/engine/cable_car_util.c index 27f703b42..02bfbc195 100644 --- a/src/engine/cable_car_util.c +++ b/src/engine/cable_car_util.c @@ -9,38 +9,39 @@ // text -void CableCarUtil_FillWrapped(void *dest, u16 value, u8 x, u8 y, u8 width, u8 height) +void CableCarUtil_FillWrapped(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height) { u8 i; u8 j; - u8 _x; - u8 _y; + u8 x; + u8 y; - for (i = 0, _y = y; i < height; i++) + for (i = 0, y = top; i < height; i++) { - for (_x = x, j = 0; j < width; j++) + for (x = left, j = 0; j < width; j++) { - *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = value; - _x = (_x + 1) % 32; + *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = value; + x = (x + 1) % 32; } - _y = (_y + 1) % 32; + y = (y + 1) % 32; } } -void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 x, u8 y, u8 width, u8 height) + +void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height) { u8 i; u8 j; - u8 _x; - u8 _y; + u8 x; + u8 y; const u16 *_src; - for (i = 0, _src = src, _y = y; i < height; i++) + for (i = 0, _src = src, y = top; i < height; i++) { - for (_x = x, j = 0; j < width; j++) + for (x = left, j = 0; j < width; j++) { - *(u16 *)&((u8 *)dest)[_y * 64 + _x * 2] = *_src++; - _x = (_x + 1) % 32; + *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = *_src++; + x = (x + 1) % 32; } - _y = (_y + 1) % 32; + y = (y + 1) % 32; } } -- cgit v1.2.3 From 842ffa33b3964d43a896be4f9248c33200b7137a Mon Sep 17 00:00:00 2001 From: M Date: Sat, 6 Jan 2018 14:55:38 +0100 Subject: fix indents and build, remove diff.sh --- src/roulette.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 36c15bf23..1d612d071 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -1,8 +1,7 @@ #include "global.h" - #include "ewram.h" #include "field_fadetransition.h" -#include "game_stat.h" +#include "constants/game_stat.h" #include "m4a.h" #include "main.h" #include "menu.h" @@ -11,14 +10,13 @@ #include "overworld.h" #include "palette.h" #include "pokemon.h" -#include "rng.h" #include "roulette.h" #include "roulette_util.h" #include "rtc.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "script.h" -#include "species.h" +#include "constants/species.h" #include "sprite.h" #include "strings2.h" #include "string_util.h" @@ -29,14 +27,6 @@ asm(".include \"constants/gba_constants.inc\""); -struct OamMatrix -{ - s16 a; - s16 b; - s16 c; - s16 d; -}; - struct Roulette /* ewram + 0x19000 */ { u8 var00; -- cgit v1.2.3 From 95d687493b0b78d9cbee17a009a326e6879d67c8 Mon Sep 17 00:00:00 2001 From: M Date: Sat, 6 Jan 2018 16:24:56 +0100 Subject: match sub_8124DDC and sub_8124E2C --- src/roulette_util.c | 150 ++++++++-------------------------------------------- 1 file changed, 22 insertions(+), 128 deletions(-) (limited to 'src') diff --git a/src/roulette_util.c b/src/roulette_util.c index 53585714e..3d5b03a5c 100644 --- a/src/roulette_util.c +++ b/src/roulette_util.c @@ -244,143 +244,37 @@ void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) r0->var02 = r0->var02 & ~r1; } } -#ifdef NONMATCHING -void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5) +void sub_8124DDC(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height) { - u16 *rg0; - u8 c; - u8 i = 0; - u32 offset= r3 * 0x20 + r2; - rg0 = &r0[offset]; - for (i = 0; i < r5; i++) + + u16 *_dest; + u8 i; + u8 j; + i = 0x0; + dest = &dest[top * 32 + left]; + for (; i < height; i++) { - rg0 = &rg0[i * 0x20 ]; - c = 0; - for (c = 0; c < r4; c++) + _dest = dest + i * 32; + for (j = 0; j < width; j++) { - *rg0++ = r1; + *_dest++ = src; } } } -#else -__attribute__((naked)) -void sub_8124DDC(u16 *r0, u16 r1, u8 r2, u8 r3, u8 r4, u8 r5) +void sub_8124E2C(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r6, r0, 0\n\ - ldr r0, [sp, 0x14]\n\ - ldr r4, [sp, 0x18]\n\ - lsls r1, 16\n\ - lsrs r7, r1, 16\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - lsls r3, 24\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r1, 0\n\ - lsrs r3, 19\n\ - adds r3, r2\n\ - lsls r3, 1\n\ - adds r6, r3\n\ - cmp r1, r4\n\ - bcs _08124E26\n\ -_08124E04:\n\ - lsls r0, r1, 6\n\ - adds r2, r6, r0\n\ - movs r0, 0\n\ - adds r3, r1, 0x1\n\ - cmp r0, r5\n\ - bcs _08124E1E\n\ -_08124E10:\n\ - strh r7, [r2]\n\ - adds r2, 0x2\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, r5\n\ - bcc _08124E10\n\ -_08124E1E:\n\ - lsls r0, r3, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, r4\n\ - bcc _08124E04\n\ -_08124E26:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif -#ifdef NONMATCHING -void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5) -{ - u16 *rg0; - u8 c; - u8 i = 0; - u32 offset= r3 * 0x20 + r2; - //rg0 = &r0[offset]; - for (i = 0; i < r5; i++) + u16 *_dest; + u16 *_src = src; + u8 i; + u8 j; + i = 0x0; + dest = &dest[top * 32 + left]; + for (; i < height; i++) { - rg0 = &r0[offset + i * 0x20 ]; - c = 0; - for (c = 0; c < r4; c++) + _dest = dest + i * 32; + for (j = 0; j < width; j++) { - *(rg0++) = *(r1++); + *_dest++ = *_src++; } } } -#else -__attribute__((naked)) -void sub_8124E2C(u16 *r0, u16 *r1, u8 r2, u8 r3, u8 r4, u8 r5) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r7, r0, 0\n\ - ldr r0, [sp, 0x14]\n\ - ldr r4, [sp, 0x18]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - lsls r3, 24\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r4, 24\n\ - lsrs r6, r4, 24\n\ - movs r4, 0\n\ - lsrs r3, 19\n\ - adds r3, r2\n\ - lsls r3, 1\n\ - adds r7, r3\n\ - cmp r4, r6\n\ - bcs _08124E76\n\ - _08124E50:\n\ - lsls r0, r4, 6\n\ - adds r2, r7, r0\n\ - movs r3, 0\n\ - adds r4, 0x1\n\ - cmp r3, r5\n\ - bcs _08124E6E\n\ - _08124E5C:\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - adds r1, 0x2\n\ - adds r2, 0x2\n\ - adds r0, r3, 0x1\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - cmp r3, r5\n\ - bcc _08124E5C\n\ - _08124E6E:\n\ - lsls r0, r4, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, r6\n\ - bcc _08124E50\n\ - _08124E76:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif -- cgit v1.2.3 From e4a84faabf3f4e2f005e55a88babce7e8ae49c58 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 10:49:52 -0500 Subject: through unref_sub_8095C60 --- src/field/choose_party.c | 3 +- src/field/field_effect.c | 1 + src/pokemon/pokemon_storage_system.c | 88 ++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index d278eda4a..52763b911 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -1,5 +1,5 @@ #include "global.h" -#include "decoration.h" +#include "event_data.h" #include "field_fadetransition.h" #include "main.h" #include "menu.h" @@ -7,6 +7,7 @@ #include "palette.h" #include "party_menu.h" #include "pokemon_menu.h" +#include "field_weather.h" #include "pokemon.h" #include "pokemon_summary_screen.h" #include "overworld.h" diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 1e2aaa4ed..1fe238901 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -25,6 +25,7 @@ #include "field_map_obj.h" #include "util.h" #include "field_effect_helpers.h" +#include "pokemon_storage_system.h" #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 4a68b846a..2ea7161cf 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -2,6 +2,7 @@ #include "pokemon_storage_system.h" #include "menu.h" #include "string_util.h" +#include "event_data.h" #include "ewram.h" struct StorageAction { @@ -13,6 +14,93 @@ extern const struct StorageAction gUnknown_083B6DF4[]; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; +u8 sub_8095ADC(u8 boxId) +{ + u16 i; + u16 count; + + for (i = 0, count = 0; i < 30; i++) + { + if (GetBoxMonData(gPokemonStorage.boxes[boxId] + i, MON_DATA_SPECIES) != 0) + count++; + } + return count; +} + +s16 sub_8095B24(u8 boxId) +{ + u16 i; + + for (i = 0; i < 30; i++) + { + if (GetBoxMonData(gPokemonStorage.boxes[boxId] + i, MON_DATA_SPECIES) == 0) + return i; + } + return -1; +} + +u8 GetNumValidDaycarePartyMons(void) +{ + u16 i; + u16 count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + struct Pokemon *pokemon = gPlayerParty + i; + if (GetMonData(pokemon, MON_DATA_SPECIES) != 0 && !GetMonData(pokemon, MON_DATA_IS_EGG)) + count++; + } + return count; +} + +u8 CountAlivePartyMonsExceptOne(u8 toSkip) +{ + u16 i; + u16 count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (i != toSkip) + { + struct Pokemon *pokemon = gPlayerParty + i; + if (GetMonData(pokemon, MON_DATA_SPECIES) != 0 && !GetMonData(pokemon, MON_DATA_IS_EGG) && GetMonData(pokemon, MON_DATA_HP) != 0) + count++; + } + } + return count; +} + +u8 CountAlivePartyMonsExceptSelectedOne(void) +{ + return CountAlivePartyMonsExceptOne(gSpecialVar_0x8004); +} + +u8 StorageSystemGetPartySize(void) +{ + u16 i; + u16 count; + + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != 0) + count++; + } + return count; +} + +u8 *unref_sub_8095C60(u8 *dest, const u8 *src, u16 pad) +{ + u8 *_dest = StringCopy(dest, src); + while (_dest < dest + pad) + { + *_dest++ = CHAR_SPACE; + } + *_dest = EOS; + return _dest; +} + +asm(".section .text.8098898"); + void sub_8098898(u8 index) { u8 *ptr; -- cgit v1.2.3 From 6ce6e18fd50951ec784f5534f0bcb929aadd24d6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 11:05:39 -0500 Subject: sub_8095C8C --- src/pokemon/pokemon_storage_system.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 2ea7161cf..3c029b0aa 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -99,6 +99,21 @@ u8 *unref_sub_8095C60(u8 *dest, const u8 *src, u16 pad) return _dest; } +void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +{ + u16 i; + + dest_width *= 2; + dest += dest_top * 0x20 + dest_left; + src += src_top * src_width + src_left; + for (i = 0; i < dest_height; i++) + { + CpuCopy16(src, dest, dest_width); + dest += 0x20; + src += src_width; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 4db981200c1d011c370a45d123c31b397b7d62cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 11:54:46 -0500 Subject: nonmatching unref_sub_8095D08 --- src/pokemon/pokemon_storage_system.c | 138 ++++++++++++++++++++++++++++++++++- 1 file changed, 137 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 3c029b0aa..5cb61f365 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -99,7 +99,7 @@ u8 *unref_sub_8095C60(u8 *dest, const u8 *src, u16 pad) return _dest; } -void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) { u16 i; @@ -114,6 +114,142 @@ void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, u16 *src, u16 src_left, } } +#ifdef NONMATCHING +void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) +{ + u16 i; + + dest += dest_top * 0x20 + dest_left; + width *= 2; + for (i = 0; i < height; dest += 0x20, i++) + { + void *_dest = dest; + size_t _size = width; + if (_size <= 0x1000) + { + DmaFill16(3, 0, _dest, _size); + } + else + { + while (1) + { + DmaFill16(3, 0, _dest, 0x1000); + _dest += 0x1000; + _size -= 0x1000; + if (_size <= 0x1000) + { + DmaFill16(3, 0, _dest, _size); + break; + } + } + } + } +} +#else +__attribute__((naked)) void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tadds r4, r0, 0\n" + "\tldr r0, [sp, 0x28]\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tlsls r2, 16\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r10, r0\n" + "\tlsrs r2, 11\n" + "\tadds r2, r1\n" + "\tlsls r2, 1\n" + "\tadds r4, r2\n" + "\tlsls r3, 17\n" + "\tlsrs r0, r3, 16\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0\n" + "\tcmp r0, r10\n" + "\tbcs _08095DB2\n" + "\tmovs r6, 0x80\n" + "\tlsls r6, 5\n" + "\tmov r5, sp\n" + "\tldr r7, _08095D74 @ =0x040000d4\n" + "\tlsrs r3, 17\n" + "\tmov r9, r3\n" + "\tmov r1, r9\n" + "\tmovs r2, 0x81\n" + "\tlsls r2, 24\n" + "\torrs r1, r2\n" + "\tmov r9, r1\n" + "_08095D4E:\n" + "\tadds r3, r4, 0\n" + "\tldr r2, [sp, 0x4]\n" + "\tmovs r1, 0x40\n" + "\tadds r1, r4\n" + "\tmov r8, r1\n" + "\tadds r0, 0x1\n" + "\tmov r12, r0\n" + "\tcmp r2, r6\n" + "\tbhi _08095D78\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r5]\n" + "\tmov r2, sp\n" + "\tstr r2, [r7]\n" + "\tstr r4, [r7, 0x4]\n" + "\tmov r0, r9\n" + "\tstr r0, [r7, 0x8]\n" + "\tldr r0, [r7, 0x8]\n" + "\tb _08095DA6\n" + "\t.align 2, 0\n" + "_08095D74: .4byte 0x040000d4\n" + "_08095D78:\n" + "\tmovs r4, 0\n" + "\tstrh r4, [r5]\n" + "\tldr r1, _08095DC4 @ =0x040000d4\n" + "\tmov r0, sp\n" + "\tstr r0, [r1]\n" + "\tstr r3, [r1, 0x4]\n" + "\tldr r0, _08095DC8 @ =0x81000800\n" + "\tstr r0, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "\tadds r3, r6\n" + "\tsubs r2, r6\n" + "\tcmp r2, r6\n" + "\tbhi _08095D78\n" + "\tstrh r4, [r5]\n" + "\tmov r0, sp\n" + "\tstr r0, [r1]\n" + "\tstr r3, [r1, 0x4]\n" + "\tlsrs r0, r2, 1\n" + "\tmovs r2, 0x81\n" + "\tlsls r2, 24\n" + "\torrs r0, r2\n" + "\tstr r0, [r1, 0x8]\n" + "\tldr r0, [r1, 0x8]\n" + "_08095DA6:\n" + "\tmov r4, r8\n" + "\tmov r1, r12\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, r10\n" + "\tbcc _08095D4E\n" + "_08095DB2:\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08095DC4: .4byte 0x040000d4\n" + "_08095DC8: .4byte 0x81000800"); +} +#endif + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From a7e900e31b472385fda5fab48fc3c76212a0e0c2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 12:47:00 -0500 Subject: StorageSystemGetNextMonIndex --- src/pokemon/pokemon_storage_system.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 5cb61f365..745a27bf6 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -250,6 +250,37 @@ __attribute__((naked)) void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest } #endif +s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) +{ + s16 i; + s16 direction; + if (mode == 0 || mode == 2) + { + direction = 1; + } + else + { + direction = -1; + } + if (mode == 2 || mode == 3) + { + for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction) + { + if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0) + return i; + } + } + else + { + for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction) + { + if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0 && !GetBoxMonData(box + i, MON_DATA_IS_EGG)) + return i; + } + } + return -1; +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From b3551bc2f328c286c6ecc45ea288665d46b44260 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 6 Jan 2018 12:27:27 -0600 Subject: fix some code and formatting anomalies --- src/battle/battle_7.c | 9 +- src/battle/contest_link_80C857C.c | 39 +- src/contest.c | 209 +- src/de_rom_8040FE0.c | 74 +- src/easy_chat_1.c | 26 +- src/pokenav_after.c | 16 +- src/pokenav_before.c | 6402 +++++++++++++++++++------------------ src/rom_8077ABC.c | 1618 ++++++---- 8 files changed, 4302 insertions(+), 4091 deletions(-) (limited to 'src') diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index 7ca9ac3c4..e11971606 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -3,6 +3,7 @@ #include "battle_anim.h" #include "battle_interface.h" #include "blend_palette.h" +#include "contest.h" #include "data2.h" #include "decompress.h" #include "main.h" @@ -629,9 +630,9 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) if (IsContest()) { r10 = 0; - species = ewram19348.unk2; - personalityValue = ewram19348.unk8; - otId = ewram19348.unkC; + species = shared19348.unk2; + personalityValue = shared19348.unk8; + otId = shared19348.unkC; HandleLoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -639,7 +640,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) eVoidSharedArr2, gUnknown_081FAF4C[0], species, - ewram19348.unk10); + shared19348.unk10); } else { diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 0ae98af09..616a72d27 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -3,52 +3,33 @@ #if GERMAN -void de_sub_80C9274(bool32 arg0) { - if (deUnkValue2 != 1) - { - return; - } - - if (arg0) - { - deUnkValue2 = 3; - } - else +void de_sub_80C9274(bool32 arg0) +{ + if (deUnkValue2 == 1) { - deUnkValue2 = 2; + if (arg0) + deUnkValue2 = 3; + else + deUnkValue2 = 2; } } -void de_sub_80C9294(bool32 arg0) { +void de_sub_80C9294(bool32 arg0) +{ if (deUnkValue2 == 1) { if (arg0) - { deUnkValue2 = 3; - } else - { deUnkValue2 = 2; - } - - return; } - - - if (deUnkValue2 == 2) + else if (deUnkValue2 == 2) { SendBlock(0, sBlockRequestLookupTable[deUnkValue1].address, sBlockRequestLookupTable[deUnkValue1].size); - if (arg0) - { deUnkValue2 = 0; - } else - { deUnkValue2 = 1; - } - - return; } } diff --git a/src/contest.c b/src/contest.c index f5aab709d..365f92538 100644 --- a/src/contest.c +++ b/src/contest.c @@ -39,171 +39,6 @@ extern void sub_80C8C80(u8); extern void sub_81288F4(); extern u8 sub_8128944(void); -struct Shared18000 -{ - /*0x18000*/ u8 unk18000; - /*0x18001*/ u8 filler18001[3]; - /*0x18004*/ u16 unk18004[16][16]; - /*0x18204*/ u16 unk18204[0x200]; - /*0x18604*/ u16 unk18604[0x200]; - /*0x18A04*/ u8 unk18A04[0x800]; -}; - -struct Contest -{ - /*0x19204*/ u8 playerMoveChoice; - /*0x19205*/ u8 turnNumber; - /*0x19206*/ u8 unk19206[4]; // seems to only be used by an unref function - /*0x1920A*/ u16 unk1920A_0:1; // Task active flags? - u16 unk1920A_1:1; - u16 unk1920A_2:1; - u16 unk1920A_3:1; - u16 unk1920A_4:1; - u16 unk1920A_5:1; - u16 unk1920A_6:1; - u16 unk1920A_7:1; - /*0x1920B*/ u16 unk1920B_0:1; - u16 unk1920B_1:1; - u16 unk1920B_2:1; - /*0x1920C*/ u8 mainTaskId; - /*0x1920D*/ u8 unk1920D[4]; - /*0x19211*/ u8 unk19211; - /*0x19212*/ u8 unk19212; - /*0x19213*/ u8 filler19213; - /*0x19214*/ u8 unk19214; - /*0x19215*/ u8 unk19215; - /*0x19216*/ u8 unk19216; // sprite ID - /*0x19217*/ s8 applauseLevel; - /*0x19218*/ u8 unk19218[4]; - /*0x1921C*/ u32 unk1921C; // saved RNG value? - u16 unk19220[5][4]; // move history? - u8 unk19248[5][4]; // excitement history - u8 applauseMeterSpriteId; // sprite ID - /*0x1925D*/ u8 unk1925D; - /*0x1925E*/ u8 unk1925E; -}; - -struct ContestantStatus -{ - s16 appeal1; // move appeal? - s16 appeal2; // final appeal after end of turn, maybe? - s16 unk4; - u16 currMove; - u16 prevMove; - u8 moveCategory; - u8 unkB_0:2; - u8 unkB_2:2; - u8 moveRepeatCount:3; - u8 unkB_7:1; // used a one-time move? - u8 unkC_0:1; - u8 unkC_1:2; - s8 unkD; - u8 unkE; - u8 unkF; - u8 unk10_0:1; - u8 unk10_1:1; - u8 unk10_2:1; - u8 unk10_3:1; - u8 unk10_4:2; - u8 unk10_6:2; - u8 unk11_0:2; - u8 unk11_2:1; - u8 unk11_3:1; - u8 unk11_4:1; - u8 unk11_5:1; - u8 unk12; - u8 unk13; // status action? - u8 unk14; - u8 disappointedRepeat:1; - u8 unk15_1:1; - u8 unk15_2:1; - u8 unk15_3:1; - u8 unk15_4:1; - u8 unk15_5:1; - u8 unk15_6:1; - u8 unk16; - u8 unk17; - u8 unk18; - u8 unk19; // turn position - u8 attentionLevel; // How much the Pokemon "stood out" - u8 unk1B; -}; - -struct UnknownContestStruct3 -{ - u8 unk0; - u8 unk1; - //u8 unk2_0:1; - //u8 unk2_1:1; - u8 unk2; // maybe a bitfield - u8 filler3; -}; - -// possibly the same as UnknownContestStruct3? -struct UnknownContestStruct4 -{ - u8 unk0; // sprite ID - u8 unk1; // sprite ID - u8 unk2_0:1; - u8 unk2_1:1; - u8 unk2_2:1; - u8 filler3; -}; - -struct UnknownContestStruct5 -{ - s8 bits_0; // current move excitement? - u8 bits_8:1; - u8 bits_9:3; - u8 bits_C:4; - s8 unk2; - u8 filler3; -}; - -struct UnknownContestStruct7 -{ - u8 unk0[4]; - u16 unk4; - u16 unk6; - u8 filler8[0xD-8]; - u8 unkD[4]; - u8 unk11; - u8 filler12[2]; -}; - -struct UnknownContestStruct8 -{ - u16 unk0; - u16 unk2; - u8 unk4_0:1; - u8 unk5; - u8 filler6[2]; - u32 unk8; - u32 unkC; - u32 unk10; -}; - -struct UnknownContestStruct6 -{ - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; -}; - -#define shared15800 (gSharedMem + 0x15800) -#define shared15DE0 (*(struct ContestWinner *)(gSharedMem + 0x15DE0)) -#define shared16800 (gSharedMem + 0x16800) -#define shared18000 (*(struct Shared18000 *)(gSharedMem + 0x18000)) -#define shared18004 ((u16 *)(gSharedMem + 0x18004)) -#define sContest (*(struct Contest *)(gSharedMem + 0x19204)) -#define sContestantStatus ((struct ContestantStatus *)(gSharedMem + 0x19260)) -#define shared192D0_ (*(struct UnknownContestStruct7 *)(gSharedMem + 0x192D0)) -#define shared192E4 (gSharedMem + 0x192E4) -#define shared19328 (*(struct UnknownContestStruct5 *)(gSharedMem + 0x19328)) -#define shared19338 ((struct UnknownContestStruct4 *)(gSharedMem + 0x19338)) -#define shared19348_ (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) - extern struct MusicPlayerInfo gMPlay_SE1; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; @@ -555,7 +390,7 @@ void ClearContestVars(void) sContestantStatus[i].unk14 = 0xFF; } - memset(&shared192D0_, 0, sizeof(shared192D0_)); + memset(&shared192D0, 0, sizeof(shared192D0)); memset(shared192E4, 0, 0x44 * sizeof(*shared192E4)); memset(&shared19328, 0, sizeof(shared19328)); memset(shared19338, 0, 4 * sizeof(*shared19338)); @@ -1063,7 +898,7 @@ void sub_80AC2CC(u8 taskId) { case 0: sub_80B0D7C(); - for (i = 0; sContest.unk19214 != shared192D0_.unk0[i]; i++) + for (i = 0; sContest.unk19214 != shared192D0.unk0[i]; i++) ; sContest.unk19215 = i; r7 = sContest.unk19215; @@ -1106,7 +941,7 @@ void sub_80AC2CC(u8 taskId) case 3: for (i = 0; i < 4; i++) gBattleMonForms[i] = 0; - memset(&shared19348_, 0, sizeof(shared19348_)); + memset(&shared19348, 0, sizeof(shared19348)); sub_80B28F0(sContest.unk19215); spriteId = sub_80AE9FC( gContestMons[sContest.unk19215].species, @@ -4528,13 +4363,13 @@ void sub_80B114C(u8 contestant) } sContestantStatus[contestant].appeal1 = gContestEffects[effect].appeal; sContestantStatus[contestant].appeal2 = gContestEffects[effect].appeal; - shared192D0_.unk4 = gContestEffects[effect].jam; - shared192D0_.unk6 = gContestEffects[effect].jam; - shared192D0_.unk11 = contestant; + shared192D0.unk4 = gContestEffects[effect].jam; + shared192D0.unk6 = gContestEffects[effect].jam; + shared192D0.unk11 = contestant; for (i = 0; i < 4; i++) { sContestantStatus[i].unkE = 0; - shared192D0_.unkD[i] = 0; + shared192D0.unkD[i] = 0; } if (sContestantStatus[contestant].unk15_4 && AreMovesContestCombo(sContestantStatus[contestant].prevMove, sContestantStatus[contestant].currMove) == 0) sContestantStatus[contestant].unk15_4 = 0; @@ -4637,13 +4472,13 @@ void sub_80B146C(u8 a, u8 b) { StringCopy(gStringVar1, gContestMons[a].nickname); StringCopy(gStringVar2, gMoveNames[sContestantStatus[a].currMove]); - if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_COOL) + if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_COOL) StringCopy(gStringVar3, gText_Contest_Shyness); - else if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY) + else if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_BEAUTY) StringCopy(gStringVar3, gText_Contest_Anxiety); - else if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_CUTE) + else if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_CUTE) StringCopy(gStringVar3, gText_Contest_Laziness); - else if (gContestMoves[sContestantStatus[shared192D0_.unk11].currMove].contestCategory == CONTEST_CATEGORY_SMART) + else if (gContestMoves[sContestantStatus[shared192D0.unk11].currMove].contestCategory == CONTEST_CATEGORY_SMART) StringCopy(gStringVar3, gText_Contest_Hesitancy); else StringCopy(gStringVar3, gText_Contest_Fear); @@ -4708,7 +4543,7 @@ void sub_80B159C(void) for (i = 0; i < 4; i++) { - shared192D0_.unk0[i] = sp0[i]; + shared192D0.unk0[i] = sp0[i]; sContestantStatus[i].unk19 = 0xFF; sContestantStatus[i].unk10_6 = 0; gUnknown_02038696[i] = sp0[i]; @@ -5083,7 +4918,7 @@ void sub_80B20C4(void) for (i = 0; i < 4; i++) { - if (shared192D0_.unkD[i] != 0 && !Contest_IsMonsTurnDisabled(i)) + if (shared192D0.unkD[i] != 0 && !Contest_IsMonsTurnDisabled(i)) { u8 r4 = gUnknown_02038696[i] * 5 + 2; u16 r0 = sub_80AEFE8(i, 3); @@ -5339,7 +5174,7 @@ void sub_80B2790(u8 a) u16 species = SanitizeSpecies(gContestMons[a].species); u8 r5_2; - memset(&shared19348_, 0, sizeof(shared19348_)); + memset(&shared19348, 0, sizeof(shared19348)); ClearBattleAnimationVars(); for (i = 0; i < 4; i++) gBattleMonForms[i] = 0; @@ -5354,9 +5189,9 @@ void sub_80B2790(u8 a) case MOVE_TRANSFORM: case MOVE_ROLE_PLAY: r5_2 = sContestantStatus[a].unk1B; - shared19348_.unk2 = SanitizeSpecies(gContestMons[r5_2].species); - shared19348_.unk10 = gContestMons[r5_2].personality; - shared19348_.unk4_0 = 1; + shared19348.unk2 = SanitizeSpecies(gContestMons[r5_2].species); + shared19348.unk10 = gContestMons[r5_2].personality; + shared19348.unk4_0 = 1; break; case MOVE_RETURN: gAnimFriendship = 0xFF; @@ -5384,17 +5219,17 @@ void sub_80B2790(u8 a) void sub_80B28CC(int unused) { - memset(&shared19348_, 0, sizeof(shared19348_)); + memset(&shared19348, 0, sizeof(shared19348)); if (sContest.unk1925E != 0) sContest.unk1925E--; } void sub_80B28F0(u8 a) { - shared19348_.unk5 = a; - shared19348_.unk0 = SanitizeSpecies(gContestMons[a].species); - shared19348_.unk8 = gContestMons[a].personality; - shared19348_.unkC = gContestMons[a].otId; + shared19348.unk5 = a; + shared19348.unk0 = SanitizeSpecies(gContestMons[a].species); + shared19348.unk8 = gContestMons[a].personality; + shared19348.unkC = gContestMons[a].otId; } void sub_80B292C(void) diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index 53ad4a806..ad1cbf473 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -2,54 +2,33 @@ #include "battle.h" #include "battle_tower.h" #include "ewram.h" +#include "trainer.h" #if GERMAN -enum { - TRAINER_CLASS_NAME_LEADER = 25, - TRAINER_CLASS_NAME_SCHOOL_KID = 26, - TRAINER_CLASS_NAME_EXPERT = 30, - TRAINER_CLASS_NAME_POKEMON_TRAINER_3 = 46, -}; - -enum { - TRAINER_CLASS_LEADER_F = 26, - TRAINER_CLASS_ELITE_FOUR_F = 25, - TRAINER_CLASS_SCHOOL_KID_F = 30, - TRAINER_CLASS_BIRD_KEEPER = 46, - TRAINER_CLASS_MAY_1 = 61, - TRAINER_CLASS_MAY_2 = 62, - TRAINER_CLASS_MAY_3 = 63, -}; - extern u8 gTrainerClassNames[][13]; extern struct Trainer gTrainers[]; -u8 *de_sub_8040FE0(u8 gender) { +u8 *de_sub_8040FE0(u8 gender) +{ if (gender) - { gender++; - - } - gender = TRAINER_CLASS_NAME_SCHOOL_KID; return gTrainerClassNames[gender]; } -u8 *de_sub_8040FF4(u8 gender) { - if (gender) { +u8 *de_sub_8040FF4(u8 gender) +{ + if (gender) gender++; - } - gender = TRAINER_CLASS_NAME_POKEMON_TRAINER_3; return gTrainerClassNames[gender]; } -u8 *de_sub_804100C(u8 gender) { - if (gender) { +u8 *de_sub_804100C(u8 gender) +{ + if (gender) gender++; - } - gender = TRAINER_CLASS_NAME_LEADER; return gTrainerClassNames[gender]; } @@ -60,7 +39,8 @@ u8 de_sub_81364AC(void); u8 get_trainer_class_name_index(void); u8 de_sub_81364F8(void); -u8 *de_sub_8041024(s32 arg0, u32 arg1) { +u8 *de_sub_8041024(s32 arg0, u32 arg1) +{ u8 nameIndex, trainerClass, gender; struct Trainer *trainer; u8 local2; @@ -71,68 +51,39 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) { nameIndex = GetSecretBaseTrainerNameIndex(); gender = eSecretBaseRecord.gender; if (nameIndex == TRAINER_CLASS_NAME_SCHOOL_KID) - { return de_sub_8040FE0(gender); - } - return gTrainerClassNames[nameIndex]; - case 0x100: trainerClass = de_sub_81364AC(); nameIndex = get_trainer_class_name_index(); if (trainerClass == TRAINER_CLASS_SCHOOL_KID_F) - { return de_sub_8040FE0(FEMALE); - } if (trainerClass == TRAINER_CLASS_MAY_1 || trainerClass == TRAINER_CLASS_MAY_2 || trainerClass == TRAINER_CLASS_MAY_3) - { return de_sub_8040FF4(FEMALE); - } - return gTrainerClassNames[nameIndex]; - case 0x800: trainerClass = de_sub_81364F8(); nameIndex = GetEReaderTrainerClassNameIndex(); if (trainerClass == TRAINER_CLASS_SCHOOL_KID_F) - { return de_sub_8040FE0(FEMALE); - } if (trainerClass == TRAINER_CLASS_MAY_1 || trainerClass == TRAINER_CLASS_MAY_2 || trainerClass == TRAINER_CLASS_MAY_3) - { return de_sub_8040FF4(FEMALE); - } - return gTrainerClassNames[nameIndex]; - default: trainer = &gTrainers[arg1]; trainerClass = trainer->trainerClass; local2 = sub_803FC58(arg1); - if (trainerClass == TRAINER_CLASS_LEADER_F) - { return de_sub_8040FE0(local2); - } - if (trainerClass == TRAINER_CLASS_BIRD_KEEPER && local2 == FEMALE) - { return de_sub_8040FF4(FEMALE); - } - if (trainerClass == TRAINER_CLASS_ELITE_FOUR_F) { if (gTrainers[arg1].doubleBattle == TRUE) - { return de_sub_804100C(FEMALE); - } else - { return de_sub_804100C(MALE); - } } - - return gTrainerClassNames[trainerClass]; } } @@ -264,7 +215,8 @@ _08041108: .4byte gTrainerClassNames\n\ } #endif -u32 de_sub_804110C(u32 arg0, u32 arg1) { +u32 de_sub_804110C(u32 arg0, u32 arg1) +{ return arg1; } diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index a1a67152e..e5b6cf7c3 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -91,19 +91,19 @@ const struct EasyChatPrompt gUnknown_083DB6F4[] = const u8 gUnknown_083DB7C0[][2] = { - { 0, 6}, - { 1, 7}, - { 1, 8}, - { 1, 9}, - { 2, 10}, - {16, 13}, - { 4, 12}, - { 3, 13}, - { 3, 13}, - { 5, 14}, - { 3, 13}, - { 3, 13}, - { 3, 13}, + { 0, 6}, + { 1, 7}, + { 1, 8}, + { 1, 9}, + { 2, 10}, + {16, 13}, + { 4, 12}, + { 3, 13}, + { 3, 13}, + { 5, 14}, + { 3, 13}, + { 3, 13}, + { 3, 13}, {15, 13}, }; diff --git a/src/pokenav_after.c b/src/pokenav_after.c index 84ed7b14b..330305ea3 100644 --- a/src/pokenav_after.c +++ b/src/pokenav_after.c @@ -6,16 +6,10 @@ #include "de_rom_8040FE0.h" #include "string_util.h" -void sub_80F700C(u8 *arg0, u16 arg1) { - struct Trainer *trainer; - u8 *ptr; - -#if ENGLISH - trainer = (struct Trainer *) &gTrainers[gUnknown_083DFEC4->unkCEE8[arg1].unk0]; -#elif GERMAN - const u16 trainerIndex = gUnknown_083DFEC4->unkCEE8[arg1].unk0; - trainer = (struct Trainer *) &gTrainers[trainerIndex]; -#endif +void sub_80F700C(u8 *arg0, u16 arg1) +{ + const struct Trainer *trainer = &gTrainers[gUnknown_083DFEC4->unkCEE8[arg1].unk0]; + u8 *ptr = arg0; ptr = arg0; if (arg1 < gUnknown_083DFEC4->unkD158) @@ -23,7 +17,7 @@ void sub_80F700C(u8 *arg0, u16 arg1) { #if ENGLISH ptr = StringCopy(ptr, gTrainerClassNames[trainer->trainerClass]); #elif GERMAN - ptr = StringCopy(ptr, de_sub_8041024(0, trainerIndex)); + ptr = StringCopy(ptr, de_sub_8041024(0, gUnknown_083DFEC4->unkCEE8[arg1].unk0)); #endif ptr[0] = 0xFC; diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 7693cba7d..8a67390ad 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -22,69 +22,70 @@ extern u8 ewram[]; -struct UnknownPokenav0 { - /* 0x0000 */ u8 var0[0x0300]; - /* 0x0300 */ void (*var300)(void); - /* 0x0304 */ u16 var304; - /* 0x0306 */ u16 var306; - /* 0x0308 */ u32 var308; - /* 0x030C */ u8 fill030C[0x6a9f]; - /* 0x6dab */ u8 var6dab; - /* 0x6dac */ u8 var6dac; - /* 0x6dad */ u8 var6dad; - /* 0x6dae */ u8 var6dae; - /* 0x6daf */ u8 fill6daf[0x3]; - /* 0x6db2 */ u8 var6db2[5]; - /* 0x6db7 */ u8 fill6db7[0x25]; - /* 0x6ddc */ s8 var6ddc; - /* 0x6ddd */ u8 fill6ddd[0x13]; - /* 0x6df0 */ s8 var6df0; - /* 0x6df1 */ u8 fill6df1[0xB]; - /* 0x6dfc */ u8 var6dfc; - /* 0x6dfd */ u8 fill6dfd[0x17]; - /* 0x6e14 */ u8 var6e14; - /* 0x6e15 */ u8 var6e15; - /* 0x6e16 */ u8 var6e16; - /* 0x6e17 */ u8 var6e17; - /* 0x6e18 */ u8 fill6e18[0x78]; - /* 0x6e90 */ u8 var6e90; - /* 0x6e91 */ u8 fill6e91[0x4]; - /* 0x6e95 */ u8 var6e95; - /* 0x6e96 */ u8 var6e96[0x814]; - /* 0x76AA */ u8 var76aa; - /* 0x76AB */ u8 fill76AB[0x10BD]; - /* 0x8768 */ u32 var8768; - /* 0x876C */ u8 fill876C[0x2]; - /* 0x876E */ u8 var876E; - /* 0x876F */ u8 fill876F[0x5]; - /* 0x8774 */ s16 var8774; - /* 0x8776 */ u8 fill8776[0x55]; - /* 0x87CB */ u8 var87CB; - /* 0x87CC */ u8 fill87CC[0xC]; - /* 0x87D8 */ u8 var87D8; - /* 0x87D9 */ u8 fill87D9[0x1]; - /* 0x87DA */ s16 var87DA; - /* 0x87DC */ s16 var87DC; - /* 0x87DE */ u8 fill87DE[0x4a]; - /* 0x8828 */ u8 playerPartyCount; - /* 0x8829 */ u8 fill8829[0x07bf]; - /* 0x8FE8 */ s8 var8fe8; - /* 0x8FE9 */ u8 fill8FE9[0x16]; - /* 0x8FFF */ u8 var8fff[5]; - /* 0x9004 */ u8 fill9004[0x340]; - /* 0x9344 */ u8 var9344; - /* 0x9345 */ u8 fill9345[0x3b8b]; - /* 0xced0 */ u32 varCED0; - /* 0xced4 */ u8 fillCED4[0x284]; - /* 0xD158 */ u16 varD158; - /* 0xD15A */ u8 fillD15A[0x8]; - /* 0xD162 */ u8 varD162; +struct UnknownPokenav0 +{ + /* 0x0000 */ u8 var0[0x0300]; + /* 0x0300 */ void (*var300)(void); + /* 0x0304 */ u16 var304; + /* 0x0306 */ u16 var306; + /* 0x0308 */ u32 var308; + /* 0x030C */ u8 fill030C[0x6a9f]; + /* 0x6dab */ u8 var6dab; + /* 0x6dac */ u8 var6dac; + /* 0x6dad */ u8 var6dad; + /* 0x6dae */ u8 var6dae; + /* 0x6daf */ u8 fill6daf[0x3]; + /* 0x6db2 */ u8 var6db2[5]; + /* 0x6db7 */ u8 fill6db7[0x25]; + /* 0x6ddc */ s8 var6ddc; + /* 0x6ddd */ u8 fill6ddd[0x13]; + /* 0x6df0 */ s8 var6df0; + /* 0x6df1 */ u8 fill6df1[0xB]; + /* 0x6dfc */ u8 var6dfc; + /* 0x6dfd */ u8 fill6dfd[0x17]; + /* 0x6e14 */ u8 var6e14; + /* 0x6e15 */ u8 var6e15; + /* 0x6e16 */ u8 var6e16; + /* 0x6e17 */ u8 var6e17; + /* 0x6e18 */ u8 fill6e18[0x78]; + /* 0x6e90 */ u8 var6e90; + /* 0x6e91 */ u8 fill6e91[0x4]; + /* 0x6e95 */ u8 var6e95; + /* 0x6e96 */ u8 var6e96[0x814]; + /* 0x76AA */ u8 var76aa; + /* 0x76AB */ u8 fill76AB[0x10BD]; + /* 0x8768 */ u32 var8768; + /* 0x876C */ u8 fill876C[0x2]; + /* 0x876E */ u8 var876E; + /* 0x876F */ u8 fill876F[0x5]; + /* 0x8774 */ s16 var8774; + /* 0x8776 */ u8 fill8776[0x55]; + /* 0x87CB */ u8 var87CB; + /* 0x87CC */ u8 fill87CC[0xC]; + /* 0x87D8 */ u8 var87D8; + /* 0x87D9 */ u8 fill87D9[0x1]; + /* 0x87DA */ s16 var87DA; + /* 0x87DC */ s16 var87DC; + /* 0x87DE */ u8 fill87DE[0x4a]; + /* 0x8828 */ u8 playerPartyCount; + /* 0x8829 */ u8 fill8829[0x07bf]; + /* 0x8FE8 */ s8 var8fe8; + /* 0x8FE9 */ u8 fill8FE9[0x16]; + /* 0x8FFF */ u8 var8fff[5]; + /* 0x9004 */ u8 fill9004[0x340]; + /* 0x9344 */ u8 var9344; + /* 0x9345 */ u8 fill9345[0x3b8b]; + /* 0xced0 */ u32 varCED0; + /* 0xced4 */ u8 fillCED4[0x284]; + /* 0xD158 */ u16 varD158; + /* 0xD15A */ u8 fillD15A[0x8]; + /* 0xD162 */ u8 varD162; }; struct UnknownPokenav0_1 { - u8 fill6dad[0x6dad]; - s8 var6dad; - s8 var6dae; + u8 fill6dad[0x6dad]; + s8 var6dad; + s8 var6dae; }; IWRAM_DATA void (*gUnknown_03000744)(void); @@ -297,1140 +298,1280 @@ extern void sub_80F19FC(); extern u16 gKeyRepeatStartDelay; -void sub_80EBA5C() { - switch (gMain.state) { - default: - gMain.state = 0; - case 0: - ewram0_10.var6dac = is_c1_link_related_active(); - if (!ewram0_10.var6dac) { - ewram0_10.var6dab = 0; - gMain.state++; - SetMainCallback2(&sub_80EBBE8); - break; - } - break; - case 1: - SetVBlankCallback(NULL); - break; - case 2: - ResetPaletteFade(); - break; - case 3: - ResetSpriteData(); - break; - case 4: - FreeAllSpritePalettes(); - break; - case 5: - ResetTasks(); - break; - case 6: - remove_some_task(); - break; - case 7: - sub_80F1A90(); - gMain.state++; - case 8: - if (sub_80F1AC4()) return; - break; - case 9: - sub_80F2688(); - gMain.state++; - - case 10: - if (sub_80F26BC()) return; - break; - case 11: - sub_80F36F0(); - gMain.state++; - case 12: - if (sub_80F3724()) return; - break; - case 13: - sub_80EBC10(); - sub_80EBDBC(&sub_80EBDD8); - break; - case 14: - ewram0_10.var6dab = 1; - PlaySE(SE_PN_ON); - SetMainCallback2(&sub_80EBD90); - SetVBlankCallback(&sub_80EBD18); - sub_80F1A74(); - break; - } - - gMain.state++; +void sub_80EBA5C() +{ + switch (gMain.state) + { + default: + gMain.state = 0; + case 0: + ewram0_10.var6dac = is_c1_link_related_active(); + if (!ewram0_10.var6dac) + { + ewram0_10.var6dab = 0; + gMain.state++; + SetMainCallback2(&sub_80EBBE8); + } + break; + case 1: + SetVBlankCallback(NULL); + break; + case 2: + ResetPaletteFade(); + break; + case 3: + ResetSpriteData(); + break; + case 4: + FreeAllSpritePalettes(); + break; + case 5: + ResetTasks(); + break; + case 6: + remove_some_task(); + break; + case 7: + sub_80F1A90(); + gMain.state++; + case 8: + if (sub_80F1AC4()) + return; + break; + case 9: + sub_80F2688(); + gMain.state++; + // fall through + case 10: + if (sub_80F26BC()) + return; + break; + case 11: + sub_80F36F0(); + gMain.state++; + case 12: + if (sub_80F3724()) + return; + break; + case 13: + sub_80EBC10(); + sub_80EBDBC(&sub_80EBDD8); + break; + case 14: + ewram0_10.var6dab = 1; + PlaySE(SE_PN_ON); + SetMainCallback2(&sub_80EBD90); + SetVBlankCallback(&sub_80EBD18); + sub_80F1A74(); + break; + } + + gMain.state++; } -void sub_80EBBE8() { - u8 var1; - if (!ewram0_10.var6dab) { - var1 = ewram0_10.var6dab; - do { - sub_80EBA5C(); - var1 = ewram0_10.var6dab; - } while (!var1); - } +void sub_80EBBE8() +{ + while (!ewram0_10.var6dab) + sub_80EBA5C(); } -void sub_80EBC10() { - u16 i; - u16 *var1; - - gKeyRepeatStartDelay = 0x14; - ewram0_10.playerPartyCount = CalculatePlayerPartyCount(); - ewram0_10.var6ddc = 0; - ewram0_10.var9344 = 0; - ewram0_10.var8768 = 0; - ewram0_10.varCED0 = 0; - - for (i = 0; i < 5; ++i) { - ewram0_10.var8fff[i] = 0; - var1 = (u16 *)ewram0_10.var0; - var1[i*2 + 0x4820] = 0x9B; - var1[i*2 + 0x4821] = 0x5B; - } - - ewram0_10.var6e95 = 0; - sub_80EBCA8(); +void sub_80EBC10() +{ + u16 i; + u16 *var1; + + gKeyRepeatStartDelay = 0x14; + ewram0_10.playerPartyCount = CalculatePlayerPartyCount(); + ewram0_10.var6ddc = 0; + ewram0_10.var9344 = 0; + ewram0_10.var8768 = 0; + ewram0_10.varCED0 = 0; + + for (i = 0; i < 5; ++i) + { + ewram0_10.var8fff[i] = 0; + var1 = (u16 *)ewram0_10.var0; + var1[i*2 + 0x4820] = 0x9B; + var1[i*2 + 0x4821] = 0x5B; + } + + ewram0_10.var6e95 = 0; + sub_80EBCA8(); } -void sub_80EBCA8() { - ewram0_10.var6db2[0] = 1; - ewram0_10.var6db2[1] = 2; - ewram0_10.var6db2[2] = 3; +void sub_80EBCA8() +{ + ewram0_10.var6db2[0] = 1; + ewram0_10.var6db2[1] = 2; + ewram0_10.var6db2[2] = 3; - if (FlagGet(FLAG_SYS_RIBBON_GET)) { - ewram0_10.var6db2[3] = 4; - } - else { - ewram0_10.var6db2[3] = 0; - } + if (FlagGet(FLAG_SYS_RIBBON_GET)) + ewram0_10.var6db2[3] = 4; + else + ewram0_10.var6db2[3] = 0; - ewram0_10.var6db2[4] = 5; + ewram0_10.var6db2[4] = 5; } -void sub_80EBD18() { - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - sub_80F1FF0(); +void sub_80EBD18() +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F1FF0(); } -void sub_80EBD30() { - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - UpdateRegionMapVideoRegs(); - sub_80EFE7C(); +void sub_80EBD30() +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + UpdateRegionMapVideoRegs(); + sub_80EFE7C(); } -void sub_80EBD4C() { - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - sub_80F5BF0(); - sub_8089668(); +void sub_80EBD4C() +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F5BF0(); + sub_8089668(); } -void sub_80EBD68() { - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); - sub_80F6F64(); +void sub_80EBD68() +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F6F64(); } -void sub_80EBD80() { - LoadOam(); - ProcessSpriteCopyRequests(); +void sub_80EBD80() +{ + LoadOam(); + ProcessSpriteCopyRequests(); } -void sub_80EBD90() { - ewram0_10.var300(); - AnimateSprites(); - BuildOamBuffer(); - RunTasks(); - UpdatePaletteFade(); - sub_80F19FC(); +void sub_80EBD90() +{ + ewram0_10.var300(); + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); + sub_80F19FC(); } -void sub_80EBDBC(void (*func)(void)) { - ewram0_10.var300 = func; - ewram0_10.var304 = 0; +void sub_80EBDBC(void (*func)(void)) +{ + ewram0_10.var300 = func; + ewram0_10.var304 = 0; } -void sub_80EBDD8() { - switch (ewram0_10.var304) { - case 0: - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - ewram0_10.var6dad = ewram0_10.var6ddc; - ewram0_10.var6dae = 5; - ewram0_10.var304++; - break; - case 1: - sub_80F3FF0(); - ewram0_10.var304++; - case 2: - if (sub_80F4024()) return; - ewram0_10.var304++; - break; - case 3: - sub_80F2598(); - ewram0_10.var304++; - break; - case 4: - sub_80EEE20(); - ewram0_10.var304++; - case 5: - if (sub_80EEE54()) return; - sub_80EEE08(); - ewram0_10.var304++; - return; - case 6: - sub_80EF248(0); - ewram0_10.var304++; - case 7: - if (sub_80EF284(0)) return; - ewram0_10.var304++; - break; - case 8: - sub_80F1B8C(0); - ewram0_10.var304++; - case 9: - if (sub_80F1BC8(0)) return; - ewram0_10.var304++; - break; - case 10: - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 11: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - ewram0_10.var304++; - return; - case 12: - sub_80EED2C(0); - ewram0_10.var304++; - return; - case 13: - if (gPaletteFade.active) return; - ewram0_10.var304++; - return; - case 14: - sub_80F2C80(0); - ewram0_10.var304++; - case 15: - if (sub_80F2CBC(0)) return; - ewram0_10.var304++; - break; - case 16: - sub_80F1DF0(); - ewram0_10.var304++; - return; - case 17: - if (!sub_80F1E50()) { - sub_80EF428(0, 0); - sub_80EBDBC(&sub_80EC268); +void sub_80EBDD8() +{ + switch (ewram0_10.var304) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + ewram0_10.var6dad = ewram0_10.var6ddc; + ewram0_10.var6dae = 5; + ewram0_10.var304++; + break; + case 1: + sub_80F3FF0(); + ewram0_10.var304++; + // fall through + case 2: + if (!sub_80F4024()) + ewram0_10.var304++; + break; + case 3: + sub_80F2598(); + ewram0_10.var304++; + break; + case 4: + sub_80EEE20(); + ewram0_10.var304++; + // fall through + case 5: + if (!sub_80EEE54()) + { + sub_80EEE08(); + ewram0_10.var304++; } - return; - - } - + break; + case 6: + sub_80EF248(0); + ewram0_10.var304++; + // fall through + case 7: + if (!sub_80EF284(0)) + ewram0_10.var304++; + break; + case 8: + sub_80F1B8C(0); + ewram0_10.var304++; + // fall through + case 9: + if (!sub_80F1BC8(0)) + ewram0_10.var304++; + break; + case 10: + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 11: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + ewram0_10.var304++; + break; + case 12: + sub_80EED2C(0); + ewram0_10.var304++; + break; + case 13: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 14: + sub_80F2C80(0); + ewram0_10.var304++; + // fall through + case 15: + if (!sub_80F2CBC(0)) + ewram0_10.var304++; + break; + case 16: + sub_80F1DF0(); + ewram0_10.var304++; + break; + case 17: + if (!sub_80F1E50()) + { + sub_80EF428(0, 0); + sub_80EBDBC(&sub_80EC268); + } + break; + } } -void sub_80EC00C() { - switch (ewram0_10.var304) { - case 0: - if (!sub_80EEF78()) { - SetVBlankCallback(&sub_80EBD80); - sub_80EED1C(); - ewram0_10.var6dad = ewram0_10.var6ddc; - ewram0_10.var6dae = 5; - sub_80EEE08(); +void sub_80EC00C() +{ + switch (ewram0_10.var304) + { + case 0: + if (!sub_80EEF78()) + { + SetVBlankCallback(&sub_80EBD80); + sub_80EED1C(); + ewram0_10.var6dad = ewram0_10.var6ddc; + ewram0_10.var6dae = 5; + sub_80EEE08(); + ewram0_10.var304++; + } + break; + case 1: + sub_80EF248(0); + ewram0_10.var304++; + // fall through + case 2: + if (!sub_80EF284(0)) + ewram0_10.var304++; + break; + case 3: + sub_80F1B8C(0); + ewram0_10.var304++; + // fall through + case 4: + if (!sub_80F1BC8(0)) + ewram0_10.var304++; + break; + case 5: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 6: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 7: + sub_80EED2C(0); + ewram0_10.var304++; + break; + case 8: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 9: + sub_80F2598(); + ewram0_10.var304++; + break; + case 10: + sub_80F2C80(0); + ewram0_10.var304++; + // fall through + case 11: + if (!sub_80F2CBC(0)) ewram0_10.var304++; + break; + case 12: + sub_80F1DF0(); + ewram0_10.var304++; + break; + case 13: + if (!sub_80F1E50()) + { + sub_80EF428(0, ewram0_10.var6dad); + sub_80EBDBC(&sub_80EC268); } break; - case 1: - sub_80EF248(0); - ewram0_10.var304++; - case 2: - if (sub_80EF284(0)) return; - ewram0_10.var304++; - break; - case 3: - sub_80F1B8C(0); - ewram0_10.var304++; - case 4: - if (sub_80F1BC8(0)) return; - ewram0_10.var304++; - break; - case 5: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 6: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 7: - sub_80EED2C(0); - ewram0_10.var304++; - break; - case 8: - if (gPaletteFade.active) return; - ewram0_10.var304++; - return; - case 9: - sub_80F2598(); - ewram0_10.var304++; - break; - case 10: - sub_80F2C80(0); - ewram0_10.var304++; - case 11: - if (sub_80F2CBC(0)) return; - ewram0_10.var304++; - return; - case 12: - sub_80F1DF0(); - ewram0_10.var304++; - return; - case 13: - if (sub_80F1E50()) return; - sub_80EF428(0, ewram0_10.var6dad); - sub_80EBDBC(&sub_80EC268); - } + } } -void sub_80EC210() { - switch (ewram0_10.var304) { - case 0: - sub_80F2D04(1); - sub_80EE9C0(0, ewram0_10.var6ddc, 0); - ewram0_10.var304++; +void sub_80EC210() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F2D04(1); + sub_80EE9C0(0, ewram0_10.var6ddc, 0); + ewram0_10.var304++; + break; + case 1: + if (!sub_80EEA0C()) + sub_80EBDBC(&sub_80EC268); break; - case 1: - if (sub_80EEA0C()) return; - sub_80EBDBC(&sub_80EC268); - } + } } -void sub_80EC268() { - u8 var1; - switch (ewram0_10.var304) { - case 0: - if (sub_80EEC10() != 0) { - PlaySE(0x5); - sub_80EF428(0, ewram0_10.var6dad); - sub_80EED9C(); - break; - } - else { - if (gMain.newKeys & A_BUTTON) { - ewram0_10.var6ddc = ewram0_10.var6dad; - switch (ewram0_10.var6db2[ewram0_10.var6ddc] - 1) { - case 0: - PlaySE(5); - sub_80EBDBC(&sub_80EC4A0); - break; - case 1: - PlaySE(5); - sub_80EBDBC(&sub_80EC81C); - break; - case 4: - ewram0_10.var304 = 1; - break; - case 3: - ewram0_10.var304 = 2; - break; - case 2: - ewram0_10.var304 = 6; - break; - } +void sub_80EC268() +{ + u8 var1; + + switch (ewram0_10.var304) + { + case 0: + if (sub_80EEC10() != 0) + { + PlaySE(SE_SELECT); + sub_80EF428(0, ewram0_10.var6dad); + sub_80EED9C(); + } + else + { + if (gMain.newKeys & A_BUTTON) + { + ewram0_10.var6ddc = ewram0_10.var6dad; + switch (ewram0_10.var6db2[ewram0_10.var6ddc] - 1) + { + case 0: + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EC4A0); + break; + case 1: + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EC81C); + break; + case 4: + ewram0_10.var304 = 1; + break; + case 3: + ewram0_10.var304 = 2; + break; + case 2: + ewram0_10.var304 = 6; + break; + } + } + else if (gMain.newKeys & B_BUTTON) + { + ewram0_10.var304 = 1; + } + } + break; + case 1: + sub_80F208C(); + sub_80EBDBC(&sub_80EE96C); + break; + case 2: + sub_80F6208(); + ewram0_10.var304++; + // fall through + case 3: + if (!sub_80F6250()) + ewram0_10.var304++; + break; + case 4: + if (!sub_8055870()) + { + if (ewram0_10.var8fe8 != 0) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EDB88); } - else if (gMain.newKeys & B_BUTTON) { - ewram0_10.var304 = 1; + else + { + PlaySE(0x20); + sub_80EF428(0, 5); + ewram0_10.var304 = 0xFF; } - break; } - case 1: - sub_80F208C(); - sub_80EBDBC(&sub_80EE96C); - break; - case 2: - sub_80F6208(); - ewram0_10.var304++; - case 3: - if (sub_80F6250()) return; - ewram0_10.var304++; break; - case 4: - if (sub_8055870()) return; - if (ewram0_10.var8fe8 != 0) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EDB88); - break; - } - else { - PlaySE(0x20); - sub_80EF428(0, 5); - ewram0_10.var304 = 0xFF; - break; - } - case 6: - sub_80F6C20(); - if (ewram0_10.varD158 != 0) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EE3D8); - break; - } - else { - PlaySE(0x20); - sub_80EF428(0, 6); - ewram0_10.var304 = 0xFF; - break; - } - case 0xFF: - if ((var1 = sub_80EEC10()) != 0) { - PlaySE(0x5); - sub_80EF428(0, ewram0_10.var6dad); - ewram0_10.var304 = 0; - sub_80EED9C(); - } - else { - if (!(gMain.newKeys & (A_BUTTON | B_BUTTON))) return; + case 6: + sub_80F6C20(); + if (ewram0_10.varD158 != 0) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EE3D8); + } + else + { + PlaySE(0x20); + sub_80EF428(0, 6); + ewram0_10.var304 = 0xFF; + } + break; + case 0xFF: + if ((var1 = sub_80EEC10()) != 0) + { + PlaySE(SE_SELECT); + sub_80EF428(0, ewram0_10.var6dad); + ewram0_10.var304 = 0; + sub_80EED9C(); + } + else if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { sub_80EF428(0, ewram0_10.var6dad); ewram0_10.var304 = var1; - break; } - } + break; + } } -void sub_80EC4A0() { - u32 var1; - u32 var2; - switch (ewram0_10.var304) { - case 0: - sub_80F1E84(); - sub_80F2D04(0); - ewram0_10.var304++; - break; - case 1: - if (!sub_80F1F10()) { - if (gSaveBlock2.regionMapZoom) { - var1 = 0x7; - } - else var1 = 0x8; - sub_80EEFBC(var1); +void sub_80EC4A0() +{ + u32 var1; + + switch (ewram0_10.var304) + { + case 0: + sub_80F1E84(); + sub_80F2D04(0); + ewram0_10.var304++; + break; + case 1: + if (!sub_80F1F10()) + { + if (gSaveBlock2.regionMapZoom) + var1 = 0x7; + else + var1 = 0x8; + sub_80EEFBC(var1); + ewram0_10.var304++; + } + break; + case 2: + if (!sub_80EEF34()) + { + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0); + ewram0_10.var304++; + } + break; + case 3: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); ewram0_10.var304++; } - break; - case 2: - if (!(var2 = sub_80EEF34())) { - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var2); + break; + case 4: + sub_80F2620(); + ewram0_10.var304++; + break; + case 5: + sub_80EF814(); + ewram0_10.var304++; + break; + case 6: + sub_80EF840(); + ewram0_10.var304++; + // fall through + case 7: + if (!sub_80EF874()) ewram0_10.var304++; - } - break; - case 3: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - ewram0_10.var304++; - break; - case 4: - sub_80F2620(); - ewram0_10.var304++; - break; - case 5: - sub_80EF814(); - ewram0_10.var304++; - break; - case 6: - sub_80EF840(); - ewram0_10.var304++; - case 7: - if (sub_80EF874()) return; - ewram0_10.var304++; - break; - case 8: - sub_80F2C80(0x4); - ewram0_10.var304++; - case 9: - if (sub_80F2CBC(0x4)) return; - ewram0_10.var304++; - break; - case 0xA: - sub_80F2DD8(); - SetVBlankCallback(&sub_80EBD30); - ewram0_10.var304++; - break; - case 0xB: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 0xC: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - ewram0_10.var304++; - break; - case 0xD: - sub_80EED2C(0x1); - ewram0_10.var304++; + break; + case 8: + sub_80F2C80(0x4); + ewram0_10.var304++; + // fall through + case 9: + if (!sub_80F2CBC(0x4)) + ewram0_10.var304++; + break; + case 0xA: + sub_80F2DD8(); + SetVBlankCallback(&sub_80EBD30); + ewram0_10.var304++; + break; + case 0xB: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 0xC: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + ewram0_10.var304++; + break; + case 0xD: + sub_80EED2C(0x1); + ewram0_10.var304++; + break; + case 0xE: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80EC67C); break; - case 0xE: - if (gPaletteFade.active) return; - sub_80EBDBC(&sub_80EC67C); - } + } } -void sub_80EC67C() { - u32 var1; - u32 var2; - switch (ewram0_10.var304) { - case 0: - switch (sub_80FAB60()) { - case 1: - sub_80EED9C(); - break; - case 3: - sub_80EF9F8(); - break; - case 4: - PlaySE(0x5); - ewram0_10.var304 = 1; - break; - case 5: - PlaySE(0x5); - ewram0_10.var304 = 4; - break; - } - break; - case 1: - if (!ewram0_10.var6e90) { +void sub_80EC67C() +{ + switch (ewram0_10.var304) + { + case 0: + switch (sub_80FAB60()) + { + case 1: + sub_80EED9C(); + break; + case 3: + sub_80EF9F8(); + break; + case 4: + PlaySE(SE_SELECT); + ewram0_10.var304 = 1; + break; + case 5: + PlaySE(SE_SELECT); + ewram0_10.var304 = 4; + break; + } + break; + case 1: + if (!ewram0_10.var6e90) + { + sub_80FAEC4(); + ewram0_10.var304++; + } + else if (!sub_80EFBDC(1)) + { sub_80FAEC4(); ewram0_10.var304++; - break; } - if (sub_80EFBDC(1)) return; - sub_80FAEC4(); - ewram0_10.var304++; - break; - case 2: - if ((var2 = sub_80FAFC0())) return; - if (!ewram0_10.var6e90) { + break; + case 2: + if (!sub_80FAFC0()) + { + if (!ewram0_10.var6e90) + { + sub_80EFBB0(); + ewram0_10.var304 = 0; + } + else + { + ewram0_10.var304++; + } + } + break; + case 3: + if (!sub_80EFBDC(0)) + { sub_80EFBB0(); - ewram0_10.var304 = var2; - break; + ewram0_10.var304 = 0; + } + break; + case 4: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 5: + if (!gPaletteFade.active) + { + sub_80F2DF4(); + sub_80F2D04(0x4); + gSaveBlock2.regionMapZoom = (ewram0_10.var6e90 == 1) ? 1 : 0; + sub_80EBDBC(&sub_80EC00C); } - ewram0_10.var304++; - break; - case 3: - if ((var1 = sub_80EFBDC(0))) return; - sub_80EFBB0(); - ewram0_10.var304 = var1; - break; - case 4: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; break; - case 5: - if (gPaletteFade.active) return; - sub_80F2DF4(); - sub_80F2D04(0x4); - gSaveBlock2.regionMapZoom = (ewram0_10.var6e90 == 1) ? 1 : 0; - sub_80EBDBC(&sub_80EC00C); - } + } } -void sub_80EC81C() { - switch (ewram0_10.var304) { - case 0: - sub_80F2D04(0); - sub_80EE9C0(1, 0, 1); - ewram0_10.var304++; +void sub_80EC81C() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F2D04(0); + sub_80EE9C0(1, 0, 1); + ewram0_10.var304++; + break; + case 1: + if (!sub_80EEA0C()) + sub_80EBDBC(&sub_80EC86C); break; - case 1: - if (sub_80EEA0C()) return; - sub_80EBDBC(&sub_80EC86C); - } + } } -void sub_80EC86C() { - switch (ewram0_10.var304) { - case 0: - if (sub_80EEC90()) { - PlaySE(0x5); - sub_80EF428(1, ewram0_10.var6dad); - sub_80EED9C(); - break; - } - if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - ewram0_10.var6df0 = ewram0_10.var6dad; - switch (ewram0_10.var6df0) { - case 0: - sub_80EBDBC(&sub_80ED620); - break; - case 1: - sub_80EBDBC(&sub_80EC960); - break; - case 2: - sub_80EBDBC(&sub_80EC210); - break; - } - break; - } - else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - ewram0_10.var6df0 = 0x2; - ewram0_10.var6dad = 0x2; - ewram0_10.var304++; - break; - } +void sub_80EC86C() +{ + switch (ewram0_10.var304) + { + case 0: + if (sub_80EEC90()) + { + PlaySE(SE_SELECT); + sub_80EF428(1, ewram0_10.var6dad); + sub_80EED9C(); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + ewram0_10.var6df0 = ewram0_10.var6dad; + switch (ewram0_10.var6df0) + { + case 0: + sub_80EBDBC(&sub_80ED620); + break; + case 1: + sub_80EBDBC(&sub_80EC960); + break; + case 2: + sub_80EBDBC(&sub_80EC210); + break; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + ewram0_10.var6df0 = 0x2; + ewram0_10.var6dad = 0x2; + ewram0_10.var304++; + } + break; + case 1: + if (!sub_80F1E6C()) + sub_80EBDBC(&sub_80EC210); break; - case 1: - if (sub_80F1E6C()) return; - sub_80EBDBC(&sub_80EC210); - } + } } -void sub_80EC960() { - switch (ewram0_10.var304) { - case 0: - sub_80EE9C0(2, 0, 5); - ewram0_10.var304++; +void sub_80EC960() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80EE9C0(2, 0, 5); + ewram0_10.var304++; + break; + case 1: + if (!sub_80EEA0C()) + sub_80EBDBC(&sub_80ECC08); break; - case 1: - if (sub_80EEA0C()) return; - sub_80EBDBC(&sub_80ECC08); - } + } } -void sub_80EC9A8() { - switch (ewram0_10.var304) { - case 0: - sub_80F2D04(5); - sub_80EE9C0(1, ewram0_10.var6df0, 0xC); - ewram0_10.var304++; - break; - case 1: - if (sub_80EEA0C()) return; - sub_80EBDBC(&sub_80EC86C); - sub_80EF428(1, ewram0_10.var6dad); - } -} - -void sub_80ECA10() { - switch (ewram0_10.var304) { - case 0: - if (sub_80EEF78()) return; - SetVBlankCallback(&sub_80EBD80); - sub_80EED1C(); - ewram0_10.var6dad = ewram0_10.var6df0; - ewram0_10.var6dae = 0x3; - sub_80EEE08(); - ewram0_10.var304++; - break; - case 1: - sub_80EF248(0x1); - ewram0_10.var304++; - case 2: - if (sub_80EF284(0x1)) return; - ewram0_10.var304++; - break; - case 3: - sub_80F1B8C(0x1); - ewram0_10.var304++; - case 4: - if (sub_80F1BC8(0x1)) return; - ewram0_10.var304++; - break; - case 5: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 6: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 7: - sub_80EED2C(0); - ewram0_10.var304++; - break; - case 8: - sub_80F2598(); - ewram0_10.var304++; - break; - case 9: - if (gPaletteFade.active) return; - ewram0_10.var304++; +void sub_80EC9A8() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F2D04(5); + sub_80EE9C0(1, ewram0_10.var6df0, 0xC); + ewram0_10.var304++; + break; + case 1: + if (!sub_80EEA0C()) + { + sub_80EBDBC(&sub_80EC86C); + sub_80EF428(1, ewram0_10.var6dad); + } break; - case 0xA: - sub_80F2C80(0x1); - ewram0_10.var304++; + } +} - case 0xB: - if (sub_80F2CBC(0x1)) return; - ewram0_10.var304++; - break; - case 0xC: - sub_80F1DF0(); - ewram0_10.var304++; +void sub_80ECA10() +{ + switch (ewram0_10.var304) + { + case 0: + if (!sub_80EEF78()) + { + SetVBlankCallback(&sub_80EBD80); + sub_80EED1C(); + ewram0_10.var6dad = ewram0_10.var6df0; + ewram0_10.var6dae = 0x3; + sub_80EEE08(); + ewram0_10.var304++; + } + break; + case 1: + sub_80EF248(0x1); + ewram0_10.var304++; + case 2: + if (!sub_80EF284(0x1)) + ewram0_10.var304++; + break; + case 3: + sub_80F1B8C(0x1); + ewram0_10.var304++; + case 4: + if (!sub_80F1BC8(0x1)) + ewram0_10.var304++; + break; + case 5: + if (sub_8055870()) return; + ewram0_10.var304++; + break; + case 6: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 7: + sub_80EED2C(0); + ewram0_10.var304++; + break; + case 8: + sub_80F2598(); + ewram0_10.var304++; + break; + case 9: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 0xA: + sub_80F2C80(0x1); + ewram0_10.var304++; + // fall through + case 0xB: + if (!sub_80F2CBC(0x1)) + ewram0_10.var304++; + break; + case 0xC: + sub_80F1DF0(); + ewram0_10.var304++; + break; + case 0xD: + if (!sub_80F1E50()) + { + sub_80EF428(1, ewram0_10.var6dad); + sub_80EBDBC(&sub_80EC86C); + } break; - case 0xD: - if (sub_80F1E50()) return; - sub_80EF428(1, ewram0_10.var6dad); - sub_80EBDBC(&sub_80EC86C); - } + } } -void sub_80ECC08() { - switch (ewram0_10.var304) { - case 0: - if (sub_80EEC90()) { - PlaySE(0x5); - sub_80EF428(2, ewram0_10.var6dad); - sub_80EED9C(); - break; - } +void sub_80ECC08() +{ + switch (ewram0_10.var304) + { + case 0: + if (sub_80EEC90()) + { + PlaySE(SE_SELECT); + sub_80EF428(2, ewram0_10.var6dad); + sub_80EED9C(); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + switch ((s8)ewram0_10.var6dad) + { + case 0: + ewram0_10.var87D8 = 22; + break; + case 1: + ewram0_10.var87D8 = 23; + break; + case 2: + ewram0_10.var87D8 = 24; + break; + case 3: + ewram0_10.var87D8 = 33; + break; + case 4: + ewram0_10.var87D8 = 47; + break; + case 5: + sub_80EBDBC(&sub_80EC9A8); + return; + } - if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - switch ((s8)ewram0_10.var6dad) { - case 0: - ewram0_10.var87D8 = 22; - break; - case 1: - ewram0_10.var87D8 = 23; - break; - case 2: - ewram0_10.var87D8 = 24; - break; - case 3: - ewram0_10.var87D8 = 33; - break; - case 4: - ewram0_10.var87D8 = 47; - break; - case 5: - sub_80EBDBC(&sub_80EC9A8); - return; - } + ewram0_10.var6dfc = ewram0_10.var6dad; + ewram0_10.var76aa = 1; + sub_80EBDBC(&sub_80ED01C); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + ewram0_10.var6dad = 0x5; + ewram0_10.var304++; + } + break; + case 1: + if (!sub_80F1E6C()) + sub_80EBDBC(&sub_80EC9A8); + break; + } +} - ewram0_10.var6dfc = ewram0_10.var6dad; - ewram0_10.var76aa = 1; - sub_80EBDBC(&sub_80ED01C); +void sub_80ECD80() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 2: + if (!sub_80EEF78()) + { + SetVBlankCallback(&sub_80EBD80); + ewram0_10.var304++; } - else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - ewram0_10.var6dad = 0x5; + break; + case 3: + sub_80EED1C(); + sub_80F3130(); + ewram0_10.var304++; + break; + case 4: + sub_80F2D6C(0x1); + ewram0_10.var304++; + break; + case 5: + sub_80F2D6C(0x5); + ewram0_10.var304++; + break; + case 6: + ewram0_10.var6dad = ewram0_10.var6dfc; + ewram0_10.var6dae = 0x6; + sub_80EEE08(); + ewram0_10.var304++; + break; + case 7: + sub_80EF248(0x2); + ewram0_10.var304++; + // fall through + case 8: + if (!sub_80EF284(0x2)) + ewram0_10.var304++; + break; + case 9: + sub_80F1B8C(0x2); + ewram0_10.var304++; + // fall through + case 10: + if (!sub_80F1BC8(0x2)) + ewram0_10.var304++; + break; + case 11: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 12: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 13: + sub_80EED2C(0); + ewram0_10.var304++; + break; + case 14: + sub_80F2598(); + ewram0_10.var304++; + break; + case 15: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 16: + sub_80F2C80(0x1); + ewram0_10.var304++; + // fall through + case 17: + if (!sub_80F2CBC(0x1)) + { + ewram0_10.var306 = 0; ewram0_10.var304++; } + break; + case 18: + sub_80F2C80(0x5); + ewram0_10.var304++; + // fall through + case 19: + if (!sub_80F2CBC(0x5)) + { + sub_80F1DF0(); + ewram0_10.var304++; + } + break; + case 20: + if (!sub_80F1E50()) + { + sub_80EF428(2, ewram0_10.var6dad); + sub_80EBDBC(&sub_80ECC08); + } break; - case 1: - if (sub_80F1E6C()) return;; - sub_80EBDBC(&sub_80EC9A8); - break; - } -} - -void sub_80ECD80() { - u16 var1; - switch (ewram0_10.var304) { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (gPaletteFade.active) return; - ewram0_10.var304++; - break; - case 2: - if (sub_80EEF78()) return; - SetVBlankCallback(&sub_80EBD80); - ewram0_10.var304++; - break; - case 3: - sub_80EED1C(); - sub_80F3130(); - ewram0_10.var304++; - break; - case 4: - sub_80F2D6C(0x1); - ewram0_10.var304++; - break; - case 5: - sub_80F2D6C(0x5); - ewram0_10.var304++; - break; - case 6: - ewram0_10.var6dad = ewram0_10.var6dfc; - ewram0_10.var6dae = 0x6; - sub_80EEE08(); - ewram0_10.var304++; - break; - case 7: - sub_80EF248(0x2); - ewram0_10.var304++; - case 8: - if (sub_80EF284(0x2)) return; - ewram0_10.var304++; - break; - case 9: - sub_80F1B8C(0x2); - ewram0_10.var304++; - case 10: - if (sub_80F1BC8(0x2)) return; - ewram0_10.var304++; - break; - case 11: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 12: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 13: - sub_80EED2C(0); - ewram0_10.var304++; - break; - case 14: - sub_80F2598(); - ewram0_10.var304++; - break; - case 15: - if (gPaletteFade.active) return; - ewram0_10.var304++; - break; - case 16: - sub_80F2C80(0x1); - ewram0_10.var304++; - case 17: - if ((var1 = sub_80F2CBC(0x1))) return; - ewram0_10.var306 = var1; - ewram0_10.var304++; - break; - case 18: - sub_80F2C80(0x5); - ewram0_10.var304++; - case 19: - if (sub_80F2CBC(0x5)) return; - sub_80F1DF0(); - ewram0_10.var304++; - break; - case 20: - if (sub_80F1E50()) return; - sub_80EF428(2, ewram0_10.var6dad); - sub_80EBDBC(&sub_80ECC08); - } + } } -void sub_80ED01C() { - u16 var1; - u16 var3; - switch (ewram0_10.var304) { - case 0: - sub_80F1E84(); - sub_80F2D04(0x1); - sub_80F2D04(0x5); - ewram0_10.var304++; - break; - case 1: - if (sub_80F1F10()) return; - sub_80EEFBC(0); - ewram0_10.var304++; - break; - case 2: - if ((var1 = sub_80EEF34())) return; - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1); - ewram0_10.var304++; - break; - case 3: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80EF814(); - ewram0_10.var304++; - break; - case 4: - sub_80F2620(); - ewram0_10.var304++; - break; - case 5: - sub_80F4D44(); - ewram0_10.var304++; - case 6: - if (!sub_80F4D88()) { - ewram0_10.var304 += 2; - break; +void sub_80ED01C() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F1E84(); + sub_80F2D04(0x1); + sub_80F2D04(0x5); + ewram0_10.var304++; + break; + case 1: + if (!sub_80F1F10()) + { + sub_80EEFBC(0); + ewram0_10.var304++; } - ewram0_10.var304++; - break; - case 7: - if (sub_8055870()) return; - ewram0_10.var304--; - break; - case 8: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 9: - sub_80F0264(0); - ewram0_10.var304++; - case 10: - if (sub_80F02A0()) return; - ewram0_10.var304++; - break; - case 11: - sub_80F3008(0); - ewram0_10.var304++; - break; - case 12: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 13: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 14: - sub_80EED2C(0x4); - ewram0_10.var304++; - break; - case 15: - if (gPaletteFade.active) return; - ewram0_10.var306 = (u8)(gPaletteFade.active << 24); - ewram0_10.var304++; - break; - case 16: - sub_80F2C80(0x1); - ewram0_10.var304++; - case 17: - if ((var3 = sub_80F2CBC(0x1))) return; - ewram0_10.var306 = var3; - ewram0_10.var304++; - break; - case 18: - sub_80F2C80(ewram0_10.var6dfc + 7); - ewram0_10.var304++; - case 19: - if (sub_80F2CBC(ewram0_10.var6dfc + 7)) return; - sub_80EBDBC(&sub_80ED31C); - break; - } + break; + case 2: + if (!sub_80EEF34()) + { + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0); + ewram0_10.var304++; + } + break; + case 3: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80EF814(); + ewram0_10.var304++; + } + break; + case 4: + sub_80F2620(); + ewram0_10.var304++; + break; + case 5: + sub_80F4D44(); + ewram0_10.var304++; + // fall through + case 6: + if (!sub_80F4D88()) + ewram0_10.var304 += 2; + else + ewram0_10.var304 += 1; + break; + case 7: + if (!sub_8055870()) + ewram0_10.var304--; + break; + case 8: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 9: + sub_80F0264(0); + ewram0_10.var304++; + // fall through + case 10: + if (!sub_80F02A0()) + ewram0_10.var304++; + break; + case 11: + sub_80F3008(0); + ewram0_10.var304++; + break; + case 12: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 13: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 14: + sub_80EED2C(0x4); + ewram0_10.var304++; + break; + case 15: + if (!gPaletteFade.active) + { + ewram0_10.var306 = 0; + ewram0_10.var304++; + } + break; + case 16: + sub_80F2C80(0x1); + ewram0_10.var304++; + // fall through + case 17: + if (!sub_80F2CBC(0x1)) + { + ewram0_10.var306 = 0; + ewram0_10.var304++; + } + break; + case 18: + sub_80F2C80(ewram0_10.var6dfc + 7); + ewram0_10.var304++; + // fall through + case 19: + if (!sub_80F2CBC(ewram0_10.var6dfc + 7)) + sub_80EBDBC(&sub_80ED31C); + break; + } } -void sub_80ED31C() { - switch (ewram0_10.var304) { - case 0: - switch (sub_80F5DD4()) { - case 1: - PlaySE(0x5); +void sub_80ED31C() +{ + switch (ewram0_10.var304) + { + case 0: + switch (sub_80F5DD4()) + { + case 1: + PlaySE(SE_SELECT); + ShowMapNamePopUpWindow(); + break; + case 2: + PlaySE(SE_SELECT); + ewram0_10.var304++; + break; + default: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80ED4D8); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80ECD80); + } + break; + } + break; + case 1: + if (!sub_80F0718()) + { ShowMapNamePopUpWindow(); - break; - case 2: - PlaySE(0x5); + sub_80F3264(); ewram0_10.var304++; - break; - default: - if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80ED4D8); - } - else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80ECD80); - } - break; } - break; - case 1: - if (sub_80F0718()) return; - ShowMapNamePopUpWindow(); - sub_80F3264(); - ewram0_10.var304++; - break; - case 2: - if (sub_8055870()) return; - ewram0_10.var304 = 0; - break; - } + break; + case 2: + if (!sub_8055870()) + ewram0_10.var304 = 0; + break; + } } -void sub_80ED3D0() { - switch (ewram0_10.var304) { - case 0: - SetVBlankCallback(NULL); - ewram0_10.var304++; - break; - case 1: - sub_80EED0C(); - sub_80F6134(); - ewram0_10.var304++; - break; - case 2: - sub_80EEFBC(0); - ewram0_10.var304++; - break; - case 3: - sub_80F0264(0); - ewram0_10.var304++; - case 4: - if (sub_80F02A0()) return; - ewram0_10.var304++; - break; - case 5: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 6: - sub_80F3008(0); - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 7: - sub_80EED2C(0x4); - ewram0_10.var304++; +void sub_80ED3D0() +{ + switch (ewram0_10.var304) + { + case 0: + SetVBlankCallback(NULL); + ewram0_10.var304++; + break; + case 1: + sub_80EED0C(); + sub_80F6134(); + ewram0_10.var304++; + break; + case 2: + sub_80EEFBC(0); + ewram0_10.var304++; + break; + case 3: + sub_80F0264(0); + ewram0_10.var304++; + // fall through + case 4: + if (!sub_80F02A0()) + ewram0_10.var304++; + break; + case 5: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 6: + sub_80F3008(0); + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 7: + sub_80EED2C(0x4); + ewram0_10.var304++; + break; + case 8: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80ED31C); break; - case 8: - if (gPaletteFade.active) return; - sub_80EBDBC(&sub_80ED31C); - } + } } -void sub_80ED4D8() { - switch (ewram0_10.var304) { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80F3130(); - ewram0_10.var304++; - break; - case 2: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 3: - sub_80F4CF0(); - ewram0_10.var304++; - break; - case 4: - sub_80EFF34(); - ewram0_10.var304++; - case 5: - if (sub_80EFF68()) return; - ewram0_10.var304++; - break; - case 6: - sub_80F35B4(); - sub_80EEFBC(0x2); - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(sub_80EBD4C); - ewram0_10.var304++; - break; - case 7: - sub_80EED2C(0x2); - ewram0_10.var304++; - break; - case 8: - if (gPaletteFade.active) return; - sub_80EBDBC(&sub_80ED858); - break; - } +void sub_80ED4D8() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80F3130(); + ewram0_10.var304++; + } + break; + case 2: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 3: + sub_80F4CF0(); + ewram0_10.var304++; + break; + case 4: + sub_80EFF34(); + ewram0_10.var304++; + // fall through + case 5: + if (!sub_80EFF68()) + ewram0_10.var304++; + break; + case 6: + sub_80F35B4(); + sub_80EEFBC(0x2); + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(sub_80EBD4C); + ewram0_10.var304++; + break; + case 7: + sub_80EED2C(0x2); + ewram0_10.var304++; + break; + case 8: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80ED858); + break; + } } -void sub_80ED620() { - u8 var1; - switch (ewram0_10.var304) { - case 0: - sub_80F1E84(); - sub_80F2D04(0x1); - ewram0_10.var304++; - break; - case 1: - if (sub_80F1F10()) return; - sub_80EEFBC(0x1); - ewram0_10.var304++; - break; - case 2: - if (!(var1 = sub_80EEF34())) { - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1); +void sub_80ED620() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F1E84(); + sub_80F2D04(0x1); + ewram0_10.var304++; + break; + case 1: + if (!sub_80F1F10()) + { + sub_80EEFBC(0x1); ewram0_10.var304++; } - break; - case 3: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80EF814(); - ewram0_10.var76aa = (u8)(gPaletteFade.active << 24); - ewram0_10.var304++; - break; - case 4: - sub_80F2620(); - ewram0_10.var304++; - break; - case 5: - ewram0_10.varD162 = 0x2; - sub_80F4BD0(); - ewram0_10.var304++; - break; - case 6: - sub_80EFF34(); - ewram0_10.var304++; - case 7: - if (sub_80EFF68()) return; - ewram0_10.var304++; - break; - case 8: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 9: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 10: - sub_80F33A8(); - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD4C); - ewram0_10.var304++; - break; - case 11: - sub_80EED2C(0x2); - ewram0_10.var304++; - break; - case 12: - if (gPaletteFade.active) return; - ewram0_10.var304++; - break; - case 13: - sub_80F2C80(0x1); - ewram0_10.var304++; - case 14: - if (sub_80F2CBC(0x1)) return; - ewram0_10.var304++; - break; - case 15: - sub_80F2C80(0x6); - ewram0_10.var304++; - case 16: - if (sub_80F2CBC(0x6)) return; - sub_80EBDBC(&sub_80ED858); - break; - } + break; + case 2: + if (!sub_80EEF34()) + { + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0); + ewram0_10.var304++; + } + break; + case 3: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80EF814(); + ewram0_10.var76aa = 0; + ewram0_10.var304++; + } + break; + case 4: + sub_80F2620(); + ewram0_10.var304++; + break; + case 5: + ewram0_10.varD162 = 0x2; + sub_80F4BD0(); + ewram0_10.var304++; + break; + case 6: + sub_80EFF34(); + ewram0_10.var304++; + // fall through + case 7: + if (!sub_80EFF68()) + ewram0_10.var304++; + break; + case 8: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 9: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 10: + sub_80F33A8(); + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD4C); + ewram0_10.var304++; + break; + case 11: + sub_80EED2C(0x2); + ewram0_10.var304++; + break; + case 12: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 13: + sub_80F2C80(0x1); + ewram0_10.var304++; + case 14: + if (!sub_80F2CBC(0x1)) + ewram0_10.var304++; + break; + case 15: + sub_80F2C80(0x6); + ewram0_10.var304++; + // fall through + case 16: + if (!sub_80F2CBC(0x6)) + sub_80EBDBC(&sub_80ED858); + break; + } } #if 0 @@ -1448,1834 +1589,1869 @@ void sub_80F357C(); void sub_80F4FDC(); void sub_80ED858() { - u8 var1; - switch (ewram0_10.var304) { - case 0: - sub_80F4F78(); - sub_80F5B38(); - ewram0_10.var304 = 0x1; - break; - case 1: - if (sub_80F5B50()) return; - ewram0_10.var304 = 0x2; - break; - case 2: - sub_80F0174(0x1); - ewram0_10.var304 = 0x3; - break; - case 3: - if (sub_80F4FB4()) return; - sub_80F3C94(); - sub_80F3D00(); - ewram0_10.var304 = 0x4; - break; - case 4: - if ( (gMain.heldKeys & 0x40) && (ewram0_10.var87CB) && (!(ewram0_10.var76aa) || (ewram0_10.var87DC)) ) { - PlaySE(0x5); - sub_80F5060(0x1); - move_anim_execute(); - ewram0_10.var304 = 0x5; - } - else if ( (gMain.heldKeys & 0x80) && (ewram0_10.var87CB) && (!(ewram0_10.var76aa) || (ewram0_10.var76aa >= ewram0_10.var87DC)) ) { - PlaySE(0x5); - sub_80F5060(0); - move_anim_execute(); - ewram0_10.var304 = 0x5; - } - if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80F4FDC(); - move_anim_execute(); - ewram0_10.var304 = 0x9; - } - else if (gMain.newKeys & A_BUTTON) { - if (ewram0_10.var76aa) { - if (ewram0_10.var6dac) { - PlaySE(0x5); - ewram0_10.var304 = 0x7; - } - } - else if ((ewram0_10.var87DC == ewram0_10.var87DA - 1)) { - PlaySE(0x5); - ewram0_10.var304 = 0x9; - } - } + u8 var1; + switch (ewram0_10.var304) { + case 0: + sub_80F4F78(); + sub_80F5B38(); + ewram0_10.var304 = 0x1; + break; + case 1: + if (sub_80F5B50()) return; + ewram0_10.var304 = 0x2; + break; + case 2: + sub_80F0174(0x1); + ewram0_10.var304 = 0x3; + break; + case 3: + if (sub_80F4FB4()) return; + sub_80F3C94(); + sub_80F3D00(); + ewram0_10.var304 = 0x4; + break; + case 4: + if ( (gMain.heldKeys & 0x40) && (ewram0_10.var87CB) && (!(ewram0_10.var76aa) || (ewram0_10.var87DC)) ) { + PlaySE(SE_SELECT); + sub_80F5060(0x1); + move_anim_execute(); + ewram0_10.var304 = 0x5; + } + else if ( (gMain.heldKeys & 0x80) && (ewram0_10.var87CB) && (!(ewram0_10.var76aa) || (ewram0_10.var76aa >= ewram0_10.var87DC)) ) { + PlaySE(SE_SELECT); + sub_80F5060(0); + move_anim_execute(); + ewram0_10.var304 = 0x5; + } + if (gMain.newKeys & B_BUTTON) { + PlaySE(SE_SELECT); + sub_80F4FDC(); + move_anim_execute(); + ewram0_10.var304 = 0x9; + } + else if (gMain.newKeys & A_BUTTON) { + if (ewram0_10.var76aa) { + if (ewram0_10.var6dac) { + PlaySE(SE_SELECT); + ewram0_10.var304 = 0x7; + } + } + else if ((ewram0_10.var87DC == ewram0_10.var87DA - 1)) { + PlaySE(SE_SELECT); + ewram0_10.var304 = 0x9; + } + } /* - if (gMain.heldKeys & 0x40) { - if (ewram0_10.var87CB) { - if (ewram0_10.var76aa) { - if (!ewram0_10.var87DC) goto label1; - } - PlaySE(0x5); - sub_80F5060(0x1); - move_anim_execute(); - ewram0_10.var304 = 0x5; + if (gMain.heldKeys & 0x40) { + if (ewram0_10.var87CB) { + if (ewram0_10.var76aa) { + if (!ewram0_10.var87DC) goto label1; + } + PlaySE(SE_SELECT); + sub_80F5060(0x1); + move_anim_execute(); + ewram0_10.var304 = 0x5; - } - else goto label1; - } - else goto label1; - break; + } + else goto label1; + } + else goto label1; + break; label1: - if (gMain.heldKeys & 0x80) { - if (ewram0_10.var87CB) { - if (ewram0_10.var76aa) { - if (!(ewram0_10.var76aa < ewram0_10.var87DC)) goto label2; - } - PlaySE(0x5); - sub_80F5060(0x1); - move_anim_execute(); - ewram0_10.var304 = 0x5; - } - else goto label2; - } - else goto label2; - break; + if (gMain.heldKeys & 0x80) { + if (ewram0_10.var87CB) { + if (ewram0_10.var76aa) { + if (!(ewram0_10.var76aa < ewram0_10.var87DC)) goto label2; + } + PlaySE(SE_SELECT); + sub_80F5060(0x1); + move_anim_execute(); + ewram0_10.var304 = 0x5; + } + else goto label2; + } + else goto label2; + break; label2: - if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80F4FDC(); - move_anim_execute(); - ewram0_10.var304 = 0x9; - } - else if (gMain.newKeys & A_BUTTON) { - if (!ewram0_10.var76aa) { - if ((ewram0_10.var87DC == ewram0_10.var87DA - 1)) { - PlaySE(0x5); - ewram0_10.var304 = 0x9; - } - } - else { - PlaySE(0x5); - ewram0_10.var304 = 0x9; - } - } + if (gMain.newKeys & B_BUTTON) { + PlaySE(SE_SELECT); + sub_80F4FDC(); + move_anim_execute(); + ewram0_10.var304 = 0x9; + } + else if (gMain.newKeys & A_BUTTON) { + if (!ewram0_10.var76aa) { + if ((ewram0_10.var87DC == ewram0_10.var87DA - 1)) { + PlaySE(SE_SELECT); + ewram0_10.var304 = 0x9; + } + } + else { + PlaySE(SE_SELECT); + ewram0_10.var304 = 0x9; + } + } */ - break; + break; - case 5: - if (gpu_sync_bg_show()) return; - sub_80F3D00(); - ewram0_10.var304 = 0x6; - break; - case 6: - if (sub_8055870()) return; - ewram0_10.var304 = 0x4; - break; - case 7: - sub_80EEFBC(0x3); - sub_80F3668(); - ewram0_10.var304 = 0x8; - break; - case 8: - if (sub_80F7500()) return; - sub_80EEFBC(0x2); - sub_80F3698(); - ewram0_10.var304 = 0x4; - break; - case 9: - if (!(var1 = sub_80F5038())) { - sub_80F0174(0); - sub_80F2F48(); - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1); - ewram0_10.var304 = 0xB; - } - break; - case 0xA: - if (gPaletteFade.active) return; - sub_80F3CE8(); - sub_80F5BDC(); - if (!ewram0_10.var76aa) { - sub_80F357C(); - sub_80F2D6C(0x1); - sub_80F2D6C(0x6); - sub_80EBDBC(&sub_80ECA10); - } - else { - sub_80F3614(); - sub_80EBDBC(&sub_80ED3D0); - } - break; - } + case 5: + if (gpu_sync_bg_show()) return; + sub_80F3D00(); + ewram0_10.var304 = 0x6; + break; + case 6: + if (sub_8055870()) return; + ewram0_10.var304 = 0x4; + break; + case 7: + sub_80EEFBC(0x3); + sub_80F3668(); + ewram0_10.var304 = 0x8; + break; + case 8: + if (sub_80F7500()) return; + sub_80EEFBC(0x2); + sub_80F3698(); + ewram0_10.var304 = 0x4; + break; + case 9: + if (!(var1 = sub_80F5038())) { + sub_80F0174(0); + sub_80F2F48(); + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1); + ewram0_10.var304 = 0xB; + } + break; + case 0xA: + if (gPaletteFade.active) return; + sub_80F3CE8(); + sub_80F5BDC(); + if (!ewram0_10.var76aa) { + sub_80F357C(); + sub_80F2D6C(0x1); + sub_80F2D6C(0x6); + sub_80EBDBC(&sub_80ECA10); + } + else { + sub_80F3614(); + sub_80EBDBC(&sub_80ED3D0); + } + break; + } } #else __attribute__((naked)) void sub_80ED858() { - asm_unified("push {r4,r5,lr}\n\ - sub sp, 0x4\n\ - ldr r1, _080ED878 @ =gSharedMem\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r0, r1, r2\n\ - ldrh r0, [r0]\n\ - adds r5, r1, 0\n\ - cmp r0, 0xB\n\ - bls _080ED86E\n\ - b _080EDB7A\n\ + asm_unified("push {r4,r5,lr}\n\ + sub sp, 0x4\n\ + ldr r1, _080ED878 @ =gSharedMem\n\ + movs r2, 0xC1\n\ + lsls r2, 2\n\ + adds r0, r1, r2\n\ + ldrh r0, [r0]\n\ + adds r5, r1, 0\n\ + cmp r0, 0xB\n\ + bls _080ED86E\n\ + b _080EDB7A\n\ _080ED86E:\n\ - lsls r0, 2\n\ - ldr r1, _080ED87C @ =_080ED880\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + lsls r0, 2\n\ + ldr r1, _080ED87C @ =_080ED880\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _080ED878: .4byte gSharedMem\n\ _080ED87C: .4byte _080ED880\n\ - .align 2, 0\n\ + .align 2, 0\n\ _080ED880:\n\ - .4byte _080ED8B0\n\ - .4byte _080ED8CC\n\ - .4byte _080ED8EC\n\ - .4byte _080ED904\n\ - .4byte _080ED91A\n\ - .4byte _080EDA68\n\ - .4byte _080EDA8C\n\ - .4byte _080EDAA4\n\ - .4byte _080EDAC0\n\ - .4byte _080EDAE8\n\ - .4byte _080EDB7A\n\ - .4byte _080EDB28\n\ + .4byte _080ED8B0\n\ + .4byte _080ED8CC\n\ + .4byte _080ED8EC\n\ + .4byte _080ED904\n\ + .4byte _080ED91A\n\ + .4byte _080EDA68\n\ + .4byte _080EDA8C\n\ + .4byte _080EDAA4\n\ + .4byte _080EDAC0\n\ + .4byte _080EDAE8\n\ + .4byte _080EDB7A\n\ + .4byte _080EDB28\n\ _080ED8B0:\n\ - bl sub_80F4F78\n\ - bl sub_80F5B38\n\ - ldr r0, _080ED8C8 @ =gSharedMem\n\ - movs r4, 0xC1\n\ - lsls r4, 2\n\ - adds r0, r4\n\ - movs r1, 0x1\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + bl sub_80F4F78\n\ + bl sub_80F5B38\n\ + ldr r0, _080ED8C8 @ =gSharedMem\n\ + movs r4, 0xC1\n\ + lsls r4, 2\n\ + adds r0, r4\n\ + movs r1, 0x1\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080ED8C8: .4byte gSharedMem\n\ _080ED8CC:\n\ - bl sub_80F5B50\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ED8D8\n\ - b _080EDB7A\n\ + bl sub_80F5B50\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ED8D8\n\ + b _080EDB7A\n\ _080ED8D8:\n\ - ldr r0, _080ED8E8 @ =gSharedMem\n\ - movs r1, 0xC1\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - movs r1, 0x2\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + ldr r0, _080ED8E8 @ =gSharedMem\n\ + movs r1, 0xC1\n\ + lsls r1, 2\n\ + adds r0, r1\n\ + movs r1, 0x2\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080ED8E8: .4byte gSharedMem\n\ _080ED8EC:\n\ - movs r0, 0x1\n\ - bl sub_80F0174\n\ - ldr r0, _080ED900 @ =gSharedMem\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r0, r2\n\ - movs r1, 0x3\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + movs r0, 0x1\n\ + bl sub_80F0174\n\ + ldr r0, _080ED900 @ =gSharedMem\n\ + movs r2, 0xC1\n\ + lsls r2, 2\n\ + adds r0, r2\n\ + movs r1, 0x3\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080ED900: .4byte gSharedMem\n\ _080ED904:\n\ - bl sub_80F4FB4\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080ED910\n\ - b _080EDB7A\n\ + bl sub_80F4FB4\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080ED910\n\ + b _080EDB7A\n\ _080ED910:\n\ - bl sub_80F3C94\n\ - bl sub_80F3D00\n\ - b _080EDAD4\n\ + bl sub_80F3C94\n\ + bl sub_80F3D00\n\ + b _080EDAD4\n\ _080ED91A:\n\ - ldr r2, _080ED960 @ =gMain\n\ - ldrh r1, [r2, 0x2C]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - adds r3, r2, 0\n\ - cmp r0, 0\n\ - beq _080ED970\n\ - ldr r1, _080ED964 @ =0x000087cb\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED970\n\ - ldr r2, _080ED968 @ =0x000076aa\n\ - adds r0, r5, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED948\n\ - ldr r4, _080ED96C @ =0x000087dc\n\ - adds r0, r5, r4\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - beq _080ED970\n\ + ldr r2, _080ED960 @ =gMain\n\ + ldrh r1, [r2, 0x2C]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + adds r3, r2, 0\n\ + cmp r0, 0\n\ + beq _080ED970\n\ + ldr r1, _080ED964 @ =0x000087cb\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080ED970\n\ + ldr r2, _080ED968 @ =0x000076aa\n\ + adds r0, r5, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080ED948\n\ + ldr r4, _080ED96C @ =0x000087dc\n\ + adds r0, r5, r4\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + cmp r0, 0\n\ + beq _080ED970\n\ _080ED948:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - bl sub_80F5060\n\ - bl move_anim_execute\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r1, r5, r2\n\ - b _080ED9B8\n\ - .align 2, 0\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0x1\n\ + bl sub_80F5060\n\ + bl move_anim_execute\n\ + movs r2, 0xC1\n\ + lsls r2, 2\n\ + adds r1, r5, r2\n\ + b _080ED9B8\n\ + .align 2, 0\n\ _080ED960: .4byte gMain\n\ _080ED964: .4byte 0x000087cb\n\ _080ED968: .4byte 0x000076aa\n\ _080ED96C: .4byte 0x000087dc\n\ _080ED970:\n\ - ldrh r1, [r3, 0x2C]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080ED9CC\n\ - ldr r4, _080ED9C0 @ =0x000087cb\n\ - adds r0, r5, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED9CC\n\ - ldr r1, _080ED9C4 @ =0x000076aa\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080ED9A2\n\ - ldr r2, _080ED9C8 @ =0x000087dc\n\ - adds r0, r5, r2\n\ - subs r4, 0x57\n\ - adds r1, r5, r4\n\ - movs r4, 0\n\ - ldrsh r2, [r0, r4]\n\ - movs r4, 0\n\ - ldrsh r0, [r1, r4]\n\ - cmp r2, r0\n\ - bge _080ED9CC\n\ + ldrh r1, [r3, 0x2C]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080ED9CC\n\ + ldr r4, _080ED9C0 @ =0x000087cb\n\ + adds r0, r5, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080ED9CC\n\ + ldr r1, _080ED9C4 @ =0x000076aa\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080ED9A2\n\ + ldr r2, _080ED9C8 @ =0x000087dc\n\ + adds r0, r5, r2\n\ + subs r4, 0x57\n\ + adds r1, r5, r4\n\ + movs r4, 0\n\ + ldrsh r2, [r0, r4]\n\ + movs r4, 0\n\ + ldrsh r0, [r1, r4]\n\ + cmp r2, r0\n\ + bge _080ED9CC\n\ _080ED9A2:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0\n\ - bl sub_80F5060\n\ - bl move_anim_execute\n\ - movs r0, 0xC1\n\ - lsls r0, 2\n\ - adds r1, r5, r0\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0\n\ + bl sub_80F5060\n\ + bl move_anim_execute\n\ + movs r0, 0xC1\n\ + lsls r0, 2\n\ + adds r1, r5, r0\n\ _080ED9B8:\n\ - movs r0, 0x5\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + movs r0, 0x5\n\ + strh r0, [r1]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080ED9C0: .4byte 0x000087cb\n\ _080ED9C4: .4byte 0x000076aa\n\ _080ED9C8: .4byte 0x000087dc\n\ _080ED9CC:\n\ - ldrh r2, [r3, 0x2E]\n\ - movs r0, 0x2\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _080ED9F8\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - bl sub_80F4FDC\n\ - bl move_anim_execute\n\ - ldr r0, _080ED9F4 @ =gSharedMem\n\ - movs r1, 0xC1\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - movs r1, 0x9\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + ldrh r2, [r3, 0x2E]\n\ + movs r0, 0x2\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _080ED9F8\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + bl sub_80F4FDC\n\ + bl move_anim_execute\n\ + ldr r0, _080ED9F4 @ =gSharedMem\n\ + movs r1, 0xC1\n\ + lsls r1, 2\n\ + adds r0, r1\n\ + movs r1, 0x9\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080ED9F4: .4byte gSharedMem\n\ _080ED9F8:\n\ - movs r0, 0x1\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _080EDA02\n\ - b _080EDB7A\n\ + movs r0, 0x1\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + bne _080EDA02\n\ + b _080EDB7A\n\ _080EDA02:\n\ - adds r4, r5, 0\n\ - ldr r2, _080EDA38 @ =0x000076aa\n\ - adds r0, r4, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080EDA44\n\ - ldr r1, _080EDA3C @ =0x000087dc\n\ - adds r0, r4, r1\n\ - movs r2, 0\n\ - ldrsh r1, [r0, r2]\n\ - ldr r2, _080EDA40 @ =0x000087da\n\ - adds r0, r4, r2\n\ - movs r2, 0\n\ - ldrsh r0, [r0, r2]\n\ - subs r0, 0x1\n\ - cmp r1, r0\n\ - beq _080EDA26\n\ - b _080EDB7A\n\ + adds r4, r5, 0\n\ + ldr r2, _080EDA38 @ =0x000076aa\n\ + adds r0, r4, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080EDA44\n\ + ldr r1, _080EDA3C @ =0x000087dc\n\ + adds r0, r4, r1\n\ + movs r2, 0\n\ + ldrsh r1, [r0, r2]\n\ + ldr r2, _080EDA40 @ =0x000087da\n\ + adds r0, r4, r2\n\ + movs r2, 0\n\ + ldrsh r0, [r0, r2]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + beq _080EDA26\n\ + b _080EDB7A\n\ _080EDA26:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0xC1\n\ - lsls r0, 2\n\ - adds r1, r4, r0\n\ - movs r0, 0x9\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r0, 0xC1\n\ + lsls r0, 2\n\ + adds r1, r4, r0\n\ + movs r0, 0x9\n\ + strh r0, [r1]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDA38: .4byte 0x000076aa\n\ _080EDA3C: .4byte 0x000087dc\n\ _080EDA40: .4byte 0x000087da\n\ _080EDA44:\n\ - ldr r1, _080EDA64 @ =0x00006dac\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - beq _080EDA50\n\ - b _080EDB7A\n\ + ldr r1, _080EDA64 @ =0x00006dac\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _080EDA50\n\ + b _080EDB7A\n\ _080EDA50:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r1, r5, r2\n\ - movs r0, 0x7\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + movs r2, 0xC1\n\ + lsls r2, 2\n\ + adds r1, r5, r2\n\ + movs r0, 0x7\n\ + strh r0, [r1]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDA64: .4byte 0x00006dac\n\ _080EDA68:\n\ - bl gpu_sync_bg_show\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EDA74\n\ - b _080EDB7A\n\ + bl gpu_sync_bg_show\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080EDA74\n\ + b _080EDB7A\n\ _080EDA74:\n\ - bl sub_80F3D00\n\ - ldr r0, _080EDA88 @ =gSharedMem\n\ - movs r4, 0xC1\n\ - lsls r4, 2\n\ - adds r0, r4\n\ - movs r1, 0x6\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + bl sub_80F3D00\n\ + ldr r0, _080EDA88 @ =gSharedMem\n\ + movs r4, 0xC1\n\ + lsls r4, 2\n\ + adds r0, r4\n\ + movs r1, 0x6\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDA88: .4byte gSharedMem\n\ _080EDA8C:\n\ - bl sub_8055870\n\ - cmp r0, 0\n\ - bne _080EDB7A\n\ - ldr r0, _080EDAA0 @ =gSharedMem\n\ - movs r1, 0xC1\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - b _080EDADC\n\ - .align 2, 0\n\ + bl sub_8055870\n\ + cmp r0, 0\n\ + bne _080EDB7A\n\ + ldr r0, _080EDAA0 @ =gSharedMem\n\ + movs r1, 0xC1\n\ + lsls r1, 2\n\ + adds r0, r1\n\ + b _080EDADC\n\ + .align 2, 0\n\ _080EDAA0: .4byte gSharedMem\n\ _080EDAA4:\n\ - movs r0, 0x3\n\ - bl sub_80EEFBC\n\ - bl sub_80F3668\n\ - ldr r0, _080EDABC @ =gSharedMem\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r0, r2\n\ - movs r1, 0x8\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + movs r0, 0x3\n\ + bl sub_80EEFBC\n\ + bl sub_80F3668\n\ + ldr r0, _080EDABC @ =gSharedMem\n\ + movs r2, 0xC1\n\ + lsls r2, 2\n\ + adds r0, r2\n\ + movs r1, 0x8\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDABC: .4byte gSharedMem\n\ _080EDAC0:\n\ - bl sub_80F7500\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EDB7A\n\ - movs r0, 0x2\n\ - bl sub_80EEFBC\n\ - bl sub_80F3698\n\ + bl sub_80F7500\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080EDB7A\n\ + movs r0, 0x2\n\ + bl sub_80EEFBC\n\ + bl sub_80F3698\n\ _080EDAD4:\n\ - ldr r0, _080EDAE4 @ =gSharedMem\n\ - movs r4, 0xC1\n\ - lsls r4, 2\n\ - adds r0, r4\n\ + ldr r0, _080EDAE4 @ =gSharedMem\n\ + movs r4, 0xC1\n\ + lsls r4, 2\n\ + adds r0, r4\n\ _080EDADC:\n\ - movs r1, 0x4\n\ - strh r1, [r0]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + movs r1, 0x4\n\ + strh r1, [r0]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDAE4: .4byte gSharedMem\n\ _080EDAE8:\n\ - bl sub_80F5038\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0\n\ - bne _080EDB7A\n\ - movs r0, 0\n\ - bl sub_80F0174\n\ - bl sub_80F2F48\n\ - ldr r5, _080EDB24 @ =gSharedMem\n\ - movs r1, 0xC2\n\ - lsls r1, 2\n\ - adds r0, r5, r1\n\ - ldr r0, [r0]\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - str r4, [sp]\n\ - movs r2, 0\n\ - movs r3, 0x10\n\ - bl BeginNormalPaletteFade\n\ - movs r2, 0xC1\n\ - lsls r2, 2\n\ - adds r1, r5, r2\n\ - movs r0, 0xB\n\ - strh r0, [r1]\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + bl sub_80F5038\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + bne _080EDB7A\n\ + movs r0, 0\n\ + bl sub_80F0174\n\ + bl sub_80F2F48\n\ + ldr r5, _080EDB24 @ =gSharedMem\n\ + movs r1, 0xC2\n\ + lsls r1, 2\n\ + adds r0, r5, r1\n\ + ldr r0, [r0]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + str r4, [sp]\n\ + movs r2, 0\n\ + movs r3, 0x10\n\ + bl BeginNormalPaletteFade\n\ + movs r2, 0xC1\n\ + lsls r2, 2\n\ + adds r1, r5, r2\n\ + movs r0, 0xB\n\ + strh r0, [r1]\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDB24: .4byte gSharedMem\n\ _080EDB28:\n\ - ldr r0, _080EDB60 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080EDB7A\n\ - bl sub_80F3CE8\n\ - bl sub_80F5BDC\n\ - ldr r0, _080EDB64 @ =gSharedMem\n\ - ldr r4, _080EDB68 @ =0x000076aa\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080EDB70\n\ - bl sub_80F357C\n\ - movs r0, 0x1\n\ - bl sub_80F2D6C\n\ - movs r0, 0x6\n\ - bl sub_80F2D6C\n\ - ldr r0, _080EDB6C @ =sub_80ECA10\n\ - bl sub_80EBDBC\n\ - b _080EDB7A\n\ - .align 2, 0\n\ + ldr r0, _080EDB60 @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080EDB7A\n\ + bl sub_80F3CE8\n\ + bl sub_80F5BDC\n\ + ldr r0, _080EDB64 @ =gSharedMem\n\ + ldr r4, _080EDB68 @ =0x000076aa\n\ + adds r0, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _080EDB70\n\ + bl sub_80F357C\n\ + movs r0, 0x1\n\ + bl sub_80F2D6C\n\ + movs r0, 0x6\n\ + bl sub_80F2D6C\n\ + ldr r0, _080EDB6C @ =sub_80ECA10\n\ + bl sub_80EBDBC\n\ + b _080EDB7A\n\ + .align 2, 0\n\ _080EDB60: .4byte gPaletteFade\n\ _080EDB64: .4byte gSharedMem\n\ _080EDB68: .4byte 0x000076aa\n\ _080EDB6C: .4byte sub_80ECA10\n\ _080EDB70:\n\ - bl sub_80F3614\n\ - ldr r0, _080EDB84 @ =sub_80ED3D0\n\ - bl sub_80EBDBC\n\ + bl sub_80F3614\n\ + ldr r0, _080EDB84 @ =sub_80ED3D0\n\ + bl sub_80EBDBC\n\ _080EDB7A:\n\ - add sp, 0x4\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + add sp, 0x4\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080EDB84: .4byte sub_80ED3D0\n"); } #endif -void sub_80EDB88() { - u8 var1; - switch (ewram0_10.var304) { - case 0: - sub_80F1E84(); - sub_80F2D04(0); - ewram0_10.var304++; - break; - case 1: - if (sub_80F1F10()) return; - sub_80EEFBC(0x4); - ewram0_10.var304++; - break; - case 2: - if (!(var1 = sub_80EEF34())) { - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1); +void sub_80EDB88() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F1E84(); + sub_80F2D04(0); + ewram0_10.var304++; + break; + case 1: + if (!sub_80F1F10()) + { + sub_80EEFBC(0x4); ewram0_10.var304++; } - break; - case 3: - if (gPaletteFade.active) return; - SetVBlankCallback(0); - sub_80EED0C(); - sub_80EF814(); - ewram0_10.var304++; - break; - case 4: - sub_80F2620(); - ewram0_10.var304++; - break; - case 5: - sub_80F638C(); - ewram0_10.var304++; - case 6: - if (!sub_80F63D0()) { - ewram0_10.var304 += 0x2; - break; + break; + case 2: + if (!sub_80EEF34()) + { + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0); + ewram0_10.var304++; + } + break; + case 3: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80EF814(); + ewram0_10.var304++; } - ewram0_10.var304++; - break; - case 7: - if (sub_8055870()) return; - ewram0_10.var304--; - break; - case 8: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 9: - sub_80F0264(0x1); - ewram0_10.var304++; - case 10: - if (sub_80F02A0()) return; - ewram0_10.var304++; - break; - case 11: - sub_80F2C80(0x2); - ewram0_10.var304++; - case 12: - if (sub_80F2CBC(0x2)) return; - ewram0_10.var304++; - break; - case 13: - sub_80F3008(0x1); - ewram0_10.var304++; - break; - case 14: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 15: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 16: - sub_80EED2C(0x4); - ewram0_10.var304++; - break; - case 17: - if (gPaletteFade.active) return; - sub_80EBDBC(&sub_80EDDBC); - break; - } + break; + case 4: + sub_80F2620(); + ewram0_10.var304++; + break; + case 5: + sub_80F638C(); + ewram0_10.var304++; + case 6: + if (!sub_80F63D0()) + ewram0_10.var304 += 2; + else + ewram0_10.var304 += 1; + break; + case 7: + if (!sub_8055870()) + ewram0_10.var304--; + break; + case 8: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 9: + sub_80F0264(0x1); + ewram0_10.var304++; + case 10: + if (!sub_80F02A0()) + ewram0_10.var304++; + break; + case 11: + sub_80F2C80(0x2); + ewram0_10.var304++; + case 12: + if (!sub_80F2CBC(0x2)) + ewram0_10.var304++; + break; + case 13: + sub_80F3008(0x1); + ewram0_10.var304++; + break; + case 14: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 15: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 16: + sub_80EED2C(0x4); + ewram0_10.var304++; + break; + case 17: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80EDDBC); + break; + } } -void sub_80EDDBC() { - switch (ewram0_10.var304) { - case 0: - switch (sub_80F5DD4()) { - case 1: - PlaySE(0x5); +void sub_80EDDBC() +{ + switch (ewram0_10.var304) + { + case 0: + switch (sub_80F5DD4()) + { + case 1: + PlaySE(SE_SELECT); + ShowMapNamePopUpWindow(); + break; + case 2: + PlaySE(SE_SELECT); + ewram0_10.var304++; + break; + default: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EDEE4); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EDE70); + } + break; + } + break; + case 1: + if (!sub_80F0718()) + { ShowMapNamePopUpWindow(); - break; - case 2: - PlaySE(0x5); + sub_80F3264(); ewram0_10.var304++; - break; - default: - if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EDEE4); - } - else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EDE70); - } - break; } - break; - case 1: - if (sub_80F0718()) return; - ShowMapNamePopUpWindow(); - sub_80F3264(); - ewram0_10.var304++; - break; - case 2: - if (sub_8055870()) return; - ewram0_10.var304 = 0; - break; + break; + case 2: + if (!sub_8055870()) + ewram0_10.var304 = 0; + break; - } + } } -void sub_80EDE70() { - switch (ewram0_10.var304) { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (gPaletteFade.active) return; - sub_80F3130(); - sub_80F2D6C(0x2); - ewram0_10.var304++; - break; - case 2: - sub_80EBDBC(&sub_80EC00C); - break; - } +void sub_80EDE70() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + { + sub_80F3130(); + sub_80F2D6C(0x2); + ewram0_10.var304++; + } + break; + case 2: + sub_80EBDBC(&sub_80EC00C); + break; + } } -void sub_80EDEE4() { - switch (ewram0_10.var304) { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80F3130(); - ewram0_10.var304++; - break; - case 2: - sub_80F66E0(); - sub_80EEE08(); - ewram0_10.var304++; - break; - case 3: - if (sub_80F1080()) return; - ewram0_10.var304++; - break; - case 4: - sub_80EEFBC(0x5); - sub_80F38B8(); - ewram0_10.var304++; - case 5: - if (sub_80F38EC()) return; - ewram0_10.var304++; - break; - case 6: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 7: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 8: - sub_80EED2C(0x3); - ewram0_10.var304++; - break; - case 9: - if (gPaletteFade.active) return; - ewram0_10.var304++; - break; - case 10: - if (sub_80F170C()) return; - sub_80EBDBC(&sub_80EE06C); - break; - } +void sub_80EDEE4() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80F3130(); + ewram0_10.var304++; + } + break; + case 2: + sub_80F66E0(); + sub_80EEE08(); + ewram0_10.var304++; + break; + case 3: + if (!sub_80F1080()) + ewram0_10.var304++; + break; + case 4: + sub_80EEFBC(0x5); + sub_80F38B8(); + ewram0_10.var304++; + case 5: + if (!sub_80F38EC()) + ewram0_10.var304++; + break; + case 6: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 7: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 8: + sub_80EED2C(0x3); + ewram0_10.var304++; + break; + case 9: + if (!gPaletteFade.active) + ewram0_10.var304++; + break; + case 10: + if (!sub_80F170C()) + sub_80EBDBC(&sub_80EE06C); + break; + } } -void sub_80EE06C() { - u32 var1; - u16 var2; - switch (ewram0_10.var304) { - case 0: - sub_80F15A8(); - ewram0_10.var304++; - break; - case 1: - if (gMain.newAndRepeatedKeys & 0x40) { - if (ewram0_10.var87DC) { - PlaySE(0x5); - sub_80F6A4C(-1); - ewram0_10.var304++; - } - else goto label1; - } - else goto label1; - break; -label1: - if (gMain.newAndRepeatedKeys & 0x80) { - if (ewram0_10.var87DC < ewram0_10.var8774) { - PlaySE(0x5); - sub_80F6A4C(1); - ewram0_10.var304++; - } - else goto label2; +void sub_80EE06C() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F15A8(); + ewram0_10.var304++; + break; + case 1: + if ((gMain.newAndRepeatedKeys & 0x40) && (ewram0_10.var87DC)) + { + PlaySE(SE_SELECT); + sub_80F6A4C(-1); + ewram0_10.var304++; + } + else if ((gMain.newAndRepeatedKeys & 0x80) && ewram0_10.var87DC < ewram0_10.var8774) + { + PlaySE(SE_SELECT); + sub_80F6A4C(1); + ewram0_10.var304++; + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EEFBC(0xB); + ewram0_10.var304 = 0x4; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EE294); + } + break; + case 2: + if (!sub_80F6AF0()) + ewram0_10.var304++; + break; + case 3: + if (!sub_8055870()) + ewram0_10.var304 = 0; + break; + case 4: + sub_80F3B00(); + ewram0_10.var304++; + break; + case 5: + if (!sub_80F3B58()) + { + sub_80F1494(); + ewram0_10.var304++; + sub_80EED9C(); } - else goto label2; - break; -label2: - if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - sub_80EEFBC(0xB); + break; + case 6: + switch (sub_80F68E8()) + { + case 1: + PlaySE(SE_SELECT); + sub_80F3B94(); + ewram0_10.var304 = 0x7; + break; + default: + case 0: + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80F3B94(); + ewram0_10.var304 = 0x8; + } + break; + } + break; + case 7: + if (!sub_80F3BD4()) ewram0_10.var304 = 0x4; + break; + case 8: + if (!sub_80F3BD4()) + { + sub_80EEFBC(0x5); + ewram0_10.var304 = 0; } - else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EE294); - } - break; - case 2: - if (sub_80F6AF0()) return; - ewram0_10.var304++; - break; - case 3: - var1 = sub_8055870(); - if (var1) return; - ewram0_10.var304 = var1; - break; - case 4: - sub_80F3B00(); - ewram0_10.var304++; - break; - case 5: - if (sub_80F3B58()) return; - sub_80F1494(); - ewram0_10.var304++; - sub_80EED9C(); - break; - case 6: - switch (sub_80F68E8()) { - case 1: - PlaySE(0x5); - sub_80F3B94(); - ewram0_10.var304 = 0x7; - break; - default: - case 0: - if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80F3B94(); - ewram0_10.var304 = 0x8; - } - break; - } - break; - case 7: - if (sub_80F3BD4()) return; - ewram0_10.var304 = 0x4; - break; - case 8: - var2 = sub_80F3BD4(); - if (var2) return; - sub_80EEFBC(0x5); - ewram0_10.var304 = var2; - break; - } + break; + } } -void sub_80EE294() { - switch (ewram0_10.var304) { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80F3C2C(); - sub_80EEE08(); - ewram0_10.var304++; - break; - case 2: - sub_80F6134(); - sub_80F0264(0x1); - ewram0_10.var304++; - case 3: - if (sub_80F02A0()) return; - ewram0_10.var304++; - break; - case 4: - sub_80EEFBC(0x4); - sub_80F3008(0x1); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 5: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 6: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - ewram0_10.var304++; - break; - case 7: - sub_80EED2C(0x4); - ewram0_10.var304++; - break; - case 8: - if (gPaletteFade.active) return; - sub_80EBDBC(&sub_80EDDBC); - break; - } +void sub_80EE294() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80F3C2C(); + sub_80EEE08(); + ewram0_10.var304++; + } + break; + case 2: + sub_80F6134(); + sub_80F0264(0x1); + ewram0_10.var304++; + case 3: + if (!sub_80F02A0()) + ewram0_10.var304++; + break; + case 4: + sub_80EEFBC(0x4); + sub_80F3008(0x1); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 5: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 6: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + ewram0_10.var304++; + break; + case 7: + sub_80EED2C(0x4); + ewram0_10.var304++; + break; + case 8: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80EDDBC); + break; + } } -void sub_80EE3D8() { - u8 var1; - switch (ewram0_10.var304) { - case 0: - sub_80F1E84(); - sub_80F2D04(0); - ewram0_10.var304++; - break; - case 1: - if (sub_80F1F10()) return; - sub_80EEFBC(0x9); - ewram0_10.var304++; - break; - case 2: - if (!(var1 = sub_80EEF34())) { - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, var1); +void sub_80EE3D8() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F1E84(); + sub_80F2D04(0); + ewram0_10.var304++; + break; + case 1: + if (!sub_80F1F10()) + { + sub_80EEFBC(0x9); ewram0_10.var304++; } - break; - case 3: - if (gPaletteFade.active) return; - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80EF814(); - sub_80EEE08(); - ewram0_10.var304++; - break; - case 4: - sub_80F2620(); - ewram0_10.var304++; - break; - case 5: - sub_80F0264(0x2); - ewram0_10.var304++; - case 6: - if (sub_80F02A0()) return; - ewram0_10.var304++; - break; - case 7: - sub_80F2C80(0x3); - ewram0_10.var304++; - case 8: - if (sub_80F2CBC(0x3)) return; - ewram0_10.var304++; - break; - case 9: - sub_80F3008(0x2); - ewram0_10.var304++; - break; - case 10: - if (sub_8055870()) return; - ewram0_10.var304++; - break; - case 11: - sub_80F6F10(); - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - SetVBlankCallback(&sub_80EBD68); - ewram0_10.var304++; - break; - case 12: - sub_80EED2C(0x5); - ewram0_10.var304++; - break; - case 13: - if (gPaletteFade.active) return; - sub_80EBDBC(&sub_80EE58C); - break; - } + break; + case 2: + if (!sub_80EEF34()) + { + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x0, 0x10, 0); + ewram0_10.var304++; + } + break; + case 3: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80EF814(); + sub_80EEE08(); + ewram0_10.var304++; + } + break; + case 4: + sub_80F2620(); + ewram0_10.var304++; + break; + case 5: + sub_80F0264(0x2); + ewram0_10.var304++; + case 6: + if (!sub_80F02A0()) + ewram0_10.var304++; + break; + case 7: + sub_80F2C80(0x3); + ewram0_10.var304++; + case 8: + if (!sub_80F2CBC(0x3)) + ewram0_10.var304++; + break; + case 9: + sub_80F3008(0x2); + ewram0_10.var304++; + break; + case 10: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 11: + sub_80F6F10(); + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + SetVBlankCallback(&sub_80EBD68); + ewram0_10.var304++; + break; + case 12: + sub_80EED2C(0x5); + ewram0_10.var304++; + break; + case 13: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80EE58C); + break; + } } -void sub_80EE58C() { - switch (ewram0_10.var304) { - case 0: - switch (sub_80F5DD4()) { - case 1: - PlaySE(0x5); +void sub_80EE58C() +{ + switch (ewram0_10.var304) + { + case 0: + switch (sub_80F5DD4()) + { + case 1: + PlaySE(SE_SELECT); + sub_80F0FFC(ewram0_10.var876E); + break; + case 2: + PlaySE(SE_SELECT); + ewram0_10.var304++; + break; + default: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EE658); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80EBDBC(&sub_80EE8F4); + } + break; + } + break; + case 1: + if (!sub_80F0718()) + { sub_80F0FFC(ewram0_10.var876E); - break; - case 2: - PlaySE(0x5); + sub_80F3264(); ewram0_10.var304++; - break; - default: - if (gMain.newKeys & A_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EE658); - } - else if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80EBDBC(&sub_80EE8F4); - } - break; } - break; - case 1: - if (sub_80F0718()) return; - sub_80F0FFC(ewram0_10.var876E); - sub_80F3264(); - ewram0_10.var304++; - break; - case 2: - if (sub_8055870()) return; - ewram0_10.var304 = 0; - break; - } + break; + case 2: + if (!sub_8055870()) + ewram0_10.var304 = 0; + break; + } } -void sub_80EE658() { - switch (ewram0_10.var304) { - case 0: - sub_80F3294(0x1); - sub_80EEFBC(0xA); - sub_80F0B24(); - ewram0_10.var304++; - break; - case 1: - if (sub_80F0B44()) return; - ewram0_10.var304++; - break; - case 2: - sub_80F0F64(); - ewram0_10.var304++; - break; - case 3: - if (sub_80F0FEC()) return; - sub_80F6FB8(0x1); - ewram0_10.var304++; - break; - case 4: - sub_80F6DB8(); - ewram0_10.var304++; - break; - case 5: - sub_80F700C((u8 *)(gSharedMem + 0x8788), *(u16 *)(gSharedMem + 0x8788 - 0x1A)); - sub_80F42C4((u8 *)(gSharedMem + 0x8788)); - ewram0_10.var304++; - break; - case 6: - sub_80F0CD8(); - ewram0_10.var304++; - case 7: - if (sub_80F6E9C()) return; - if (sub_80F0D5C()) return; - ewram0_10.var304++; - break; - case 8: - if (gMain.heldKeys & 0x40) { - if (ewram0_10.var87DC) { - PlaySE(0x5); - sub_80F708C(-1); - ewram0_10.var304 = 0x10; - } - else goto label1; +void sub_80EE658() +{ + switch (ewram0_10.var304) + { + case 0: + sub_80F3294(0x1); + sub_80EEFBC(0xA); + sub_80F0B24(); + ewram0_10.var304++; + break; + case 1: + if (!sub_80F0B44()) + ewram0_10.var304++; + break; + case 2: + sub_80F0F64(); + ewram0_10.var304++; + break; + case 3: + if (!sub_80F0FEC()) + { + sub_80F6FB8(0x1); + ewram0_10.var304++; } - else goto label1; - break; -label1: - if (gMain.heldKeys & 0x80) { - if (ewram0_10.var87DC < ewram0_10.var8774) { - PlaySE(0x5); - sub_80F708C(1); - ewram0_10.var304 = 0x10; - } - else goto label2; + break; + case 4: + sub_80F6DB8(); + ewram0_10.var304++; + break; + case 5: + sub_80F700C((u8 *)(gSharedMem + 0x8788), *(u16 *)(gSharedMem + 0x8788 - 0x1A)); + sub_80F42C4((u8 *)(gSharedMem + 0x8788)); + ewram0_10.var304++; + break; + case 6: + sub_80F0CD8(); + ewram0_10.var304++; + case 7: + if (!sub_80F6E9C() && !sub_80F0D5C()) + ewram0_10.var304++; + break; + case 8: + if ((gMain.heldKeys & 0x40) && ewram0_10.var87DC) + { + PlaySE(SE_SELECT); + sub_80F708C(-1); + ewram0_10.var304 = 0x10; + } + else if ((gMain.heldKeys & 0x80) && ewram0_10.var87DC < ewram0_10.var8774) + { + PlaySE(SE_SELECT); + sub_80F708C(1); + ewram0_10.var304 = 0x10; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80F4394(); + sub_80F0EC0(); + ewram0_10.var304++; + } + break; + case 9: + if (!sub_80F6ED4() && !sub_80F0EF4()) + { + sub_80F6FB8(0); + sub_80F2FB0(); + ewram0_10.var304++; } - else goto label2; - break; -label2: - if (gMain.newKeys & B_BUTTON) { - PlaySE(0x5); - sub_80F4394(); - sub_80F0EC0(); + break; + case 10: + sub_80F6134(); + ewram0_10.var304++; + break; + case 11: + sub_80F0FA0(); + ewram0_10.var304++; + break; + case 12: + if (!sub_80F0FEC()) + ewram0_10.var304++; + break; + case 13: + sub_80F0C28(); + ewram0_10.var304++; + break; + case 14: + if (!sub_80F0C48()) ewram0_10.var304++; - } - break; - case 9: - if (sub_80F6ED4()) return; - if (sub_80F0EF4()) return; - sub_80F6FB8(0); - sub_80F2FB0(); - ewram0_10.var304++; - break; - case 10: - sub_80F6134(); - ewram0_10.var304++; - break; - case 11: - sub_80F0FA0(); - ewram0_10.var304++; - break; - case 12: - if (sub_80F0FEC()) return; - ewram0_10.var304++; - break; - case 13: - sub_80F0C28(); - ewram0_10.var304++; - break; - case 14: - if (sub_80F0C48()) return; - ewram0_10.var304++; - break; - case 15: - sub_80EEFBC(0x9); - sub_80F3294(0); - sub_80EBDBC(&sub_80EE58C); - sub_80EED9C(); - break; - case 16: - if (sub_80F70FC()) return; - ewram0_10.var304++; - break; - case 17: - if (sub_8055870()) return; - ewram0_10.var304 = 0x8; - break; - } + break; + case 15: + sub_80EEFBC(0x9); + sub_80F3294(0); + sub_80EBDBC(&sub_80EE58C); + sub_80EED9C(); + break; + case 16: + if (!sub_80F70FC()) + ewram0_10.var304++; + break; + case 17: + if (!sub_8055870()) + ewram0_10.var304 = 0x8; + break; + } } -void sub_80EE8F4() { - switch (ewram0_10.var304) { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (gPaletteFade.active) return; - sub_80F3130(); - sub_80F2D6C(0x2); - sub_80F6FFC(); - ewram0_10.var304++; - break; - case 2: - sub_80EBDBC(&sub_80EC00C); - break; - } +void sub_80EE8F4() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + { + sub_80F3130(); + sub_80F2D6C(0x2); + sub_80F6FFC(); + ewram0_10.var304++; + } + break; + case 2: + sub_80EBDBC(&sub_80EC00C); + break; + } } -void sub_80EE96C() { - u16 var1 = ewram0_10.var304; - if (!var1) { - PlaySE(0x6F); - BeginNormalPaletteFade(-1, 0, 0, 0x10, var1); - ewram0_10.var304++; - } - else { - if (gPaletteFade.active) return; - sub_80F5BDC(); - sub_805469C(); - } +void sub_80EE96C() +{ + if (!ewram0_10.var304) + { + PlaySE(0x6F); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + ewram0_10.var304++; + } + else + { + if (!gPaletteFade.active) + { + sub_80F5BDC(); + sub_805469C(); + } + } } -void sub_80EE9C0(u8 param1, u8 param2, u8 param3) { - sub_80F1E84(); - ewram0_10.var6e14 = param1; - ewram0_10.var6e15 = param2; - ewram0_10.var6e16 = 0; - ewram0_10.var6e17 = param3; +void sub_80EE9C0(u8 param1, u8 param2, u8 param3) +{ + sub_80F1E84(); + ewram0_10.var6e14 = param1; + ewram0_10.var6e15 = param2; + ewram0_10.var6e16 = 0; + ewram0_10.var6e17 = param3; } #if 0 bool8 sub_80EEA0C() { - switch (ewram0_10.var6e16) { - case 0: - if (sub_80F1F10()) return 1; - if (ewram0_10.var6e17 != 0xC) { - ewram0_10.var6e16 = 0x1; - return 1; - } - else { - ewram0_10.var6e16 = 0x3; - return 1; - } - case 1: - sub_80F2C80(ewram0_10.var6e17); - ewram0_10.var6e16++; - case 2: - if (sub_80F2CBC(ewram0_10.var6e17)) return 1; - ewram0_10.var6e16++; - case 3: - - } + switch (ewram0_10.var6e16) { + case 0: + if (sub_80F1F10()) return 1; + if (ewram0_10.var6e17 != 0xC) { + ewram0_10.var6e16 = 0x1; + return 1; + } + else { + ewram0_10.var6e16 = 0x3; + return 1; + } + case 1: + sub_80F2C80(ewram0_10.var6e17); + ewram0_10.var6e16++; + case 2: + if (sub_80F2CBC(ewram0_10.var6e17)) return 1; + ewram0_10.var6e16++; + case 3: + + } } #else __attribute__((naked)) bool8 sub_80EEA0C() { - asm_unified( - "push {r4,lr}\n\ - ldr r1, _080EEA28 @ =gSharedMem\n\ - ldr r2, _080EEA2C @ =0x00006e16\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r3, r1, 0\n\ - cmp r0, 0x8\n\ - bls _080EEA1E\n\ - b _080EEBFA\n\ + asm_unified( + "push {r4,lr}\n\ + ldr r1, _080EEA28 @ =gSharedMem\n\ + ldr r2, _080EEA2C @ =0x00006e16\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r3, r1, 0\n\ + cmp r0, 0x8\n\ + bls _080EEA1E\n\ + b _080EEBFA\n\ _080EEA1E:\n\ - lsls r0, 2\n\ - ldr r1, _080EEA30 @ =_080EEA34\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + lsls r0, 2\n\ + ldr r1, _080EEA30 @ =_080EEA34\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _080EEA28: .4byte gSharedMem\n\ _080EEA2C: .4byte 0x00006e16\n\ _080EEA30: .4byte _080EEA34\n\ - .align 2, 0\n\ + .align 2, 0\n\ _080EEA34:\n\ - .4byte _080EEA58\n\ - .4byte _080EEA98\n\ - .4byte _080EEAAE\n\ - .4byte _080EEAD4\n\ - .4byte _080EEB3E\n\ - .4byte _080EEB68\n\ - .4byte _080EEB88\n\ - .4byte _080EEBAC\n\ - .4byte _080EEBE4\n\ + .4byte _080EEA58\n\ + .4byte _080EEA98\n\ + .4byte _080EEAAE\n\ + .4byte _080EEAD4\n\ + .4byte _080EEB3E\n\ + .4byte _080EEB68\n\ + .4byte _080EEB88\n\ + .4byte _080EEBAC\n\ + .4byte _080EEBE4\n\ _080EEA58:\n\ - bl sub_80F1F10\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EEA64\n\ - b _080EEC08\n\ + bl sub_80F1F10\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080EEA64\n\ + b _080EEC08\n\ _080EEA64:\n\ - ldr r1, _080EEA7C @ =gSharedMem\n\ - ldr r4, _080EEA80 @ =0x00006e17\n\ - adds r0, r1, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xC\n\ - beq _080EEA88\n\ - ldr r0, _080EEA84 @ =0x00006e16\n\ - adds r1, r0\n\ - movs r0, 0x1\n\ - strb r0, [r1]\n\ - b _080EEC08\n\ - .align 2, 0\n\ + ldr r1, _080EEA7C @ =gSharedMem\n\ + ldr r4, _080EEA80 @ =0x00006e17\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xC\n\ + beq _080EEA88\n\ + ldr r0, _080EEA84 @ =0x00006e16\n\ + adds r1, r0\n\ + movs r0, 0x1\n\ + strb r0, [r1]\n\ + b _080EEC08\n\ + .align 2, 0\n\ _080EEA7C: .4byte gSharedMem\n\ _080EEA80: .4byte 0x00006e17\n\ _080EEA84: .4byte 0x00006e16\n\ _080EEA88:\n\ - ldr r2, _080EEA94 @ =0x00006e16\n\ - adds r1, r2\n\ - movs r0, 0x3\n\ - strb r0, [r1]\n\ - b _080EEC08\n\ - .align 2, 0\n\ + ldr r2, _080EEA94 @ =0x00006e16\n\ + adds r1, r2\n\ + movs r0, 0x3\n\ + strb r0, [r1]\n\ + b _080EEC08\n\ + .align 2, 0\n\ _080EEA94: .4byte 0x00006e16\n\ _080EEA98:\n\ - ldr r4, _080EEAC8 @ =gSharedMem\n\ - ldr r1, _080EEACC @ =0x00006e17\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F2C80\n\ - ldr r2, _080EEAD0 @ =0x00006e16\n\ - adds r4, r2\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ + ldr r4, _080EEAC8 @ =gSharedMem\n\ + ldr r1, _080EEACC @ =0x00006e17\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80F2C80\n\ + ldr r2, _080EEAD0 @ =0x00006e16\n\ + adds r4, r2\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ _080EEAAE:\n\ - ldr r4, _080EEAC8 @ =gSharedMem\n\ - ldr r1, _080EEACC @ =0x00006e17\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F2CBC\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080EEAC2\n\ - b _080EEC08\n\ + ldr r4, _080EEAC8 @ =gSharedMem\n\ + ldr r1, _080EEACC @ =0x00006e17\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80F2CBC\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080EEAC2\n\ + b _080EEC08\n\ _080EEAC2:\n\ - ldr r2, _080EEAD0 @ =0x00006e16\n\ - adds r1, r4, r2\n\ - b _080EEB76\n\ - .align 2, 0\n\ + ldr r2, _080EEAD0 @ =0x00006e16\n\ + adds r1, r4, r2\n\ + b _080EEB76\n\ + .align 2, 0\n\ _080EEAC8: .4byte gSharedMem\n\ _080EEACC: .4byte 0x00006e17\n\ _080EEAD0: .4byte 0x00006e16\n\ _080EEAD4:\n\ - adds r2, r3, 0\n\ - ldr r4, _080EEAF8 @ =0x00006e15\n\ - adds r0, r2, r4\n\ - ldrb r1, [r0]\n\ - subs r4, 0x68\n\ - adds r0, r2, r4\n\ - strb r1, [r0]\n\ - ldr r1, _080EEAFC @ =0x00006e14\n\ - adds r0, r2, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - beq _080EEB14\n\ - cmp r0, 0x1\n\ - bgt _080EEB00\n\ - cmp r0, 0\n\ - beq _080EEB06\n\ - b _080EEB28\n\ - .align 2, 0\n\ + adds r2, r3, 0\n\ + ldr r4, _080EEAF8 @ =0x00006e15\n\ + adds r0, r2, r4\n\ + ldrb r1, [r0]\n\ + subs r4, 0x68\n\ + adds r0, r2, r4\n\ + strb r1, [r0]\n\ + ldr r1, _080EEAFC @ =0x00006e14\n\ + adds r0, r2, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1\n\ + beq _080EEB14\n\ + cmp r0, 0x1\n\ + bgt _080EEB00\n\ + cmp r0, 0\n\ + beq _080EEB06\n\ + b _080EEB28\n\ + .align 2, 0\n\ _080EEAF8: .4byte 0x00006e15\n\ _080EEAFC: .4byte 0x00006e14\n\ _080EEB00:\n\ - cmp r0, 0x2\n\ - beq _080EEB20\n\ - b _080EEB28\n\ + cmp r0, 0x2\n\ + beq _080EEB20\n\ + b _080EEB28\n\ _080EEB06:\n\ - ldr r4, _080EEB10 @ =0x00006dae\n\ - adds r1, r2, r4\n\ - movs r0, 0x5\n\ - b _080EEB26\n\ - .align 2, 0\n\ + ldr r4, _080EEB10 @ =0x00006dae\n\ + adds r1, r2, r4\n\ + movs r0, 0x5\n\ + b _080EEB26\n\ + .align 2, 0\n\ _080EEB10: .4byte 0x00006dae\n\ _080EEB14:\n\ - ldr r0, _080EEB1C @ =0x00006dae\n\ - adds r1, r2, r0\n\ - movs r0, 0x3\n\ - b _080EEB26\n\ - .align 2, 0\n\ + ldr r0, _080EEB1C @ =0x00006dae\n\ + adds r1, r2, r0\n\ + movs r0, 0x3\n\ + b _080EEB26\n\ + .align 2, 0\n\ _080EEB1C: .4byte 0x00006dae\n\ _080EEB20:\n\ - ldr r2, _080EEB58 @ =0x00006dae\n\ - adds r1, r3, r2\n\ - movs r0, 0x6\n\ + ldr r2, _080EEB58 @ =0x00006dae\n\ + adds r1, r3, r2\n\ + movs r0, 0x6\n\ _080EEB26:\n\ - strb r0, [r1]\n\ + strb r0, [r1]\n\ _080EEB28:\n\ - ldr r4, _080EEB5C @ =gSharedMem\n\ - ldr r1, _080EEB60 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F1B8C\n\ - ldr r2, _080EEB64 @ =0x00006e16\n\ - adds r4, r2\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ + ldr r4, _080EEB5C @ =gSharedMem\n\ + ldr r1, _080EEB60 @ =0x00006e14\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80F1B8C\n\ + ldr r2, _080EEB64 @ =0x00006e16\n\ + adds r4, r2\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ _080EEB3E:\n\ - ldr r4, _080EEB5C @ =gSharedMem\n\ - ldr r1, _080EEB60 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F1BC8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r2, _080EEB64 @ =0x00006e16\n\ - adds r1, r4, r2\n\ - b _080EEB76\n\ - .align 2, 0\n\ + ldr r4, _080EEB5C @ =gSharedMem\n\ + ldr r1, _080EEB60 @ =0x00006e14\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80F1BC8\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080EEC08\n\ + ldr r2, _080EEB64 @ =0x00006e16\n\ + adds r1, r4, r2\n\ + b _080EEB76\n\ + .align 2, 0\n\ _080EEB58: .4byte 0x00006dae\n\ _080EEB5C: .4byte gSharedMem\n\ _080EEB60: .4byte 0x00006e14\n\ _080EEB64: .4byte 0x00006e16\n\ _080EEB68:\n\ - bl sub_8055870\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r1, _080EEB80 @ =gSharedMem\n\ - ldr r4, _080EEB84 @ =0x00006e16\n\ - adds r1, r4\n\ + bl sub_8055870\n\ + cmp r0, 0\n\ + bne _080EEC08\n\ + ldr r1, _080EEB80 @ =gSharedMem\n\ + ldr r4, _080EEB84 @ =0x00006e16\n\ + adds r1, r4\n\ _080EEB76:\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - b _080EEC08\n\ - .align 2, 0\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _080EEC08\n\ + .align 2, 0\n\ _080EEB80: .4byte gSharedMem\n\ _080EEB84: .4byte 0x00006e16\n\ _080EEB88:\n\ - bl sub_80F1DF0\n\ - ldr r4, _080EEBA0 @ =gSharedMem\n\ - ldr r1, _080EEBA4 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80EF490\n\ - ldr r2, _080EEBA8 @ =0x00006e16\n\ - adds r4, r2\n\ - b _080EEBCC\n\ - .align 2, 0\n\ + bl sub_80F1DF0\n\ + ldr r4, _080EEBA0 @ =gSharedMem\n\ + ldr r1, _080EEBA4 @ =0x00006e14\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80EF490\n\ + ldr r2, _080EEBA8 @ =0x00006e16\n\ + adds r4, r2\n\ + b _080EEBCC\n\ + .align 2, 0\n\ _080EEBA0: .4byte gSharedMem\n\ _080EEBA4: .4byte 0x00006e14\n\ _080EEBA8: .4byte 0x00006e16\n\ _080EEBAC:\n\ - bl sub_80F1E50\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r4, _080EEBD4 @ =gSharedMem\n\ - ldr r1, _080EEBD8 @ =0x00006e14\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - ldr r2, _080EEBDC @ =0x00006dad\n\ - adds r1, r4, r2\n\ - ldrb r1, [r1]\n\ - bl sub_80EF428\n\ - ldr r0, _080EEBE0 @ =0x00006e16\n\ - adds r4, r0\n\ + bl sub_80F1E50\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080EEC08\n\ + ldr r4, _080EEBD4 @ =gSharedMem\n\ + ldr r1, _080EEBD8 @ =0x00006e14\n\ + adds r0, r4, r1\n\ + ldrb r0, [r0]\n\ + ldr r2, _080EEBDC @ =0x00006dad\n\ + adds r1, r4, r2\n\ + ldrb r1, [r1]\n\ + bl sub_80EF428\n\ + ldr r0, _080EEBE0 @ =0x00006e16\n\ + adds r4, r0\n\ _080EEBCC:\n\ - ldrb r0, [r4]\n\ - adds r0, 0x1\n\ - strb r0, [r4]\n\ - b _080EEC08\n\ - .align 2, 0\n\ + ldrb r0, [r4]\n\ + adds r0, 0x1\n\ + strb r0, [r4]\n\ + b _080EEC08\n\ + .align 2, 0\n\ _080EEBD4: .4byte gSharedMem\n\ _080EEBD8: .4byte 0x00006e14\n\ _080EEBDC: .4byte 0x00006dad\n\ _080EEBE0: .4byte 0x00006e16\n\ _080EEBE4:\n\ - bl sub_80EF4F8\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080EEC08\n\ - ldr r1, _080EEC00 @ =gSharedMem\n\ - ldr r2, _080EEC04 @ =0x00006e16\n\ - adds r1, r2\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ + bl sub_80EF4F8\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080EEC08\n\ + ldr r1, _080EEC00 @ =gSharedMem\n\ + ldr r2, _080EEC04 @ =0x00006e16\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ _080EEBFA:\n\ - movs r0, 0\n\ - b _080EEC0A\n\ - .align 2, 0\n\ + movs r0, 0\n\ + b _080EEC0A\n\ + .align 2, 0\n\ _080EEC00: .4byte gSharedMem\n\ _080EEC04: .4byte 0x00006e16\n\ _080EEC08:\n\ - movs r0, 0x1\n\ + movs r0, 0x1\n\ _080EEC0A:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n" + pop {r4}\n\ + pop {r1}\n\ + bx r1\n" - ); + ); } #endif // var6dad and var6dae must be s8 in this func -bool8 sub_80EEC10() { - if (gMain.newKeys & 0x40) { - do { - if (--ewram0_11.var6dad < 0) { - ewram0_11.var6dad = ewram0_11.var6dae - 1; - } - - } while (!ewram0_10.var6db2[ewram0_11.var6dad]); - return 1; - } - if (gMain.newKeys & 0x80) { - do { - if (++ewram0_11.var6dad >= ewram0_11.var6dae) { - ewram0_11.var6dad = 0; - } - } while (!ewram0_10.var6db2[ewram0_11.var6dad]); - return 1; - } - return 0; +bool8 sub_80EEC10() +{ + if (gMain.newKeys & 0x40) + { + do + { + if (--ewram0_11.var6dad < 0) + ewram0_11.var6dad = ewram0_11.var6dae - 1; + } while (!ewram0_10.var6db2[ewram0_11.var6dad]); + return TRUE; + } + if (gMain.newKeys & 0x80) + { + do + { + if (++ewram0_11.var6dad >= ewram0_11.var6dae) + ewram0_11.var6dad = 0; + } while (!ewram0_10.var6db2[ewram0_11.var6dad]); + return TRUE; + } + return FALSE; } -bool8 sub_80EEC90() { - if (gMain.newKeys & 0x40) { - if (--ewram0_11.var6dad < 0) { - ewram0_11.var6dad = ewram0_11.var6dae - 1; - } - return 1; - } - if (gMain.newKeys & 0x80) { - if (++ewram0_11.var6dad >= ewram0_11.var6dae) { - ewram0_11.var6dad = 0; - } - return 1; - } - return 0; +bool8 sub_80EEC90() +{ + if (gMain.newKeys & 0x40) + { + if (--ewram0_11.var6dad < 0) + ewram0_11.var6dad = ewram0_11.var6dae - 1; + return TRUE; + } + if (gMain.newKeys & 0x80) + { + if (++ewram0_11.var6dad >= ewram0_11.var6dae) + ewram0_11.var6dad = 0; + return TRUE; + } + return FALSE; } -void sub_80EED0C() { - REG_DISPCNT = 512; +void sub_80EED0C() +{ + REG_DISPCNT = 512; } -void sub_80EED1C() { - REG_DISPCNT = 0x92 << 5; +void sub_80EED1C() +{ + REG_DISPCNT = 0x92 << 5; } -void sub_80EED2C(u8 param1) { - switch (param1) { - case 0: - REG_DISPCNT = 0xFA << 5; - break; - case 1: - REG_DISPCNT = 0x1741; - break; - case 3: - case 4: - REG_DISPCNT = 0xFA << 5; - break; - case 2: - REG_DISPCNT = 0x7b40; - break; - case 5: - REG_DISPCNT = 0xFD << 6; - break; - } +void sub_80EED2C(u8 param1) +{ + switch (param1) { + case 0: + REG_DISPCNT = 0xFA << 5; + break; + case 1: + REG_DISPCNT = 0x1741; + break; + case 3: + case 4: + REG_DISPCNT = 0xFA << 5; + break; + case 2: + REG_DISPCNT = 0x7b40; + break; + case 5: + REG_DISPCNT = 0xFD << 6; + break; + } } -void sub_80EED9C(void) { - gUnknown_03000744 = ewram0_10.var300; - ewram0_10.var300 = &sub_80EEDC4; - ewram0_10.var300(); +void sub_80EED9C(void) +{ + gUnknown_03000744 = ewram0_10.var300; + ewram0_10.var300 = &sub_80EEDC4; + ewram0_10.var300(); } -void sub_80EEDC4(void) { - if (sub_8055870() != 0x1) { - ewram0_10.var300 = gUnknown_03000744; - } +void sub_80EEDC4(void) +{ + if (sub_8055870() != 0x1) + ewram0_10.var300 = gUnknown_03000744; } -void sub_80EEDE8(void) { - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG2VOFS = 0; - REG_BG2HOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; +void sub_80EEDE8(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; } -void sub_80EEE08(void) { - gUnknown_083DFEC4->unkD160 = 0; +void sub_80EEE08(void) +{ + gUnknown_083DFEC4->unkD160 = 0; } -void sub_80EEE20(void) { - gUnknown_083DFEC4->unkD160 = 0; - if (!gUnknown_083DFEC4->unk6DAC) { - while (sub_80EEE54()); - } +void sub_80EEE20(void) +{ + gUnknown_083DFEC4->unkD160 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + { + while (sub_80EEE54()) + ; + } } -bool8 sub_80EEE54(void) { - switch (gUnknown_083DFEC4->unkD160) { - case 0: - LZ77UnCompVram(gPokenavHoennMapMisc_Gfx, (void *)VRAM + 0xC000); - break; - case 1: - LZ77UnCompVram(gUnknown_08E99FB0, (void *)VRAM + 0xD800); - break; - case 2: - LoadPalette(gPokenavHoennMap1_Pal, 0x10, 0x20); - break; - case 3: - sub_80EF58C(0); - sub_80EF58C(1); - sub_80EF58C(2); - break; - case 4: - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG1CNT = 0x1B0C; - gUnknown_083DFEC4->unkD160++; - default: - return 0; - } - gUnknown_083DFEC4->unkD160++; - return 1; +bool8 sub_80EEE54(void) +{ + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + LZ77UnCompVram(gPokenavHoennMapMisc_Gfx, (void *)VRAM + 0xC000); + break; + case 1: + LZ77UnCompVram(gUnknown_08E99FB0, (void *)VRAM + 0xD800); + break; + case 2: + LoadPalette(gPokenavHoennMap1_Pal, 0x10, 0x20); + break; + case 3: + sub_80EF58C(0); + sub_80EF58C(1); + sub_80EF58C(2); + break; + case 4: + gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG1CNT = 0x1B0C; + gUnknown_083DFEC4->unkD160++; + default: + return FALSE; + } + gUnknown_083DFEC4->unkD160++; + return TRUE; } -bool8 sub_80EEF34(void) { - bool8 retVal = TRUE; +bool8 sub_80EEF34(void) +{ + bool8 retVal = TRUE; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32) - { - return FALSE; - } + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32) + return FALSE; - gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31) - { - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32; - retVal = FALSE; - } + gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2; + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31) + { + gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32; + retVal = FALSE; + } - REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; - return retVal; + REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + return retVal; } bool8 sub_80EEF78(void) { - bool8 retVal = TRUE; - - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0) - { - return FALSE; - } - - gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0) - { - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; - retVal = FALSE; - } - - REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; - return retVal; + bool8 retVal = TRUE; + + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0) + return FALSE; + + gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2; + if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0) + { + gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + retVal = FALSE; + } + + REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + return retVal; } void sub_80EEFBC(u8 a) { - u8 var1; + u8 var1; - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 0, 17, 2); + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 0, 17, 2); - switch (a) - { - case 0: - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 17, 0, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 11: - sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 2: - var1 = gUnknown_083DFEC4->unk6DAC; - if (!var1) - { - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 2, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, var1, 6, 7, 2); - } - else - { - sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); - } - break; - case 3: - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 4, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 4: - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 2, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 7: - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 4, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 8: - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 4, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 5: - case 9: - sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 2, 10, 2); - sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - case 10: - sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2); - break; - } + switch (a) + { + case 0: + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 17, 0, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 11: + sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 2: + var1 = gUnknown_083DFEC4->unk6DAC; + if (!var1) + { + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 2, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, var1, 6, 7, 2); + } + else + { + sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); + } + break; + case 3: + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 4, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 4: + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 2, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 10, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 7: + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 10, 4, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 8: + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 20, 4, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 7, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 5: + case 9: + sub_809D104((void *)VRAM + 0xD800, 0, 22, gUnknown_08E9A100, 0, 2, 10, 2); + sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + case 10: + sub_809D104((void *)VRAM + 0xD800, 8, 22, gUnknown_08E9A100, 0, 6, 7, 2); + break; + } } void sub_80EF248(u8 a) { - gUnknown_083DFEC4->unkD160 = 0; + gUnknown_083DFEC4->unkD160 = 0; - if (!gUnknown_083DFEC4->unk6DAC) - { - while (sub_80EF284(a)); - } + if (!gUnknown_083DFEC4->unk6DAC) + { + while (sub_80EF284(a)) + ; + } } bool8 sub_80EF284(u8 a) { - switch (gUnknown_083DFEC4->unkD160) - { - case 0: - sub_80EEDE8(); - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); - break; - case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); - break; - case 3: - if (!MultistepInitMenuWindowContinue()) - { - return TRUE; - } - break; - case 4: - DmaCopy16Defvars(3, gUnknown_083DFEEC, (void *)VRAM + 0x5000, 0xA0); - break; - case 5: - LZ77UnCompVram(gUnknown_083DFF8C, (void *)VRAM + 0xF800); - break; - case 6: - DmaCopy16Defvars(3, gUnknown_083E005C, (void *)VRAM + 0x8000, 0x20); - break; - case 7: - LZ77UnCompVram(gUnknown_083E007C, (void *)VRAM + 0xE000); - break; - case 8: - LZ77UnCompVram(gPokenavOutlineTilemap, (void *)VRAM + 0xE800); - break; - case 9: - LZ77UnCompVram(gPokenavOutlineTiles, (void *)VRAM + 0x8020); - break; - case 10: - sub_80EF54C(a); - LoadPalette(gUnknown_083DFECC, 0xF0, 0x20); - LoadPalette(gPokenavOutlinePalette, 0x40, 0x20); - sub_80EF7D4(); - break; - case 11: - REG_BG0CNT = 0x1F01; - REG_BG2CNT = 0x1D0A; - REG_BG3CNT = 0x1C0B; - REG_BLDCNT = 0; - - gUnknown_083DFEC4->unkD160++; - return FALSE; - default: - return FALSE; - } - - gUnknown_083DFEC4->unkD160++; - return TRUE; + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E7224); + break; + case 2: + MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); + break; + case 3: + if (!MultistepInitMenuWindowContinue()) + return TRUE; + break; + case 4: + DmaCopy16Defvars(3, gUnknown_083DFEEC, (void *)VRAM + 0x5000, 0xA0); + break; + case 5: + LZ77UnCompVram(gUnknown_083DFF8C, (void *)VRAM + 0xF800); + break; + case 6: + DmaCopy16Defvars(3, gUnknown_083E005C, (void *)VRAM + 0x8000, 0x20); + break; + case 7: + LZ77UnCompVram(gUnknown_083E007C, (void *)VRAM + 0xE000); + break; + case 8: + LZ77UnCompVram(gPokenavOutlineTilemap, (void *)VRAM + 0xE800); + break; + case 9: + LZ77UnCompVram(gPokenavOutlineTiles, (void *)VRAM + 0x8020); + break; + case 10: + sub_80EF54C(a); + LoadPalette(gUnknown_083DFECC, 0xF0, 0x20); + LoadPalette(gPokenavOutlinePalette, 0x40, 0x20); + sub_80EF7D4(); + break; + case 11: + REG_BG0CNT = 0x1F01; + REG_BG2CNT = 0x1D0A; + REG_BG3CNT = 0x1C0B; + REG_BLDCNT = 0; + + gUnknown_083DFEC4->unkD160++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD160++; + return TRUE; } void sub_80EF428(u8 a, u8 b) { - u8 *tileBuffer; - const u8 *pcText = 0; + u8 *tileBuffer; + const u8 *pcText = 0; - switch (a) - { - case 0: - pcText = gUnknown_083E31B0[b]; - break; - case 1: - pcText = gUnknown_083E31CC[b]; - break; - case 2: - pcText = gUnknown_083E31D8[b]; - break; - } + switch (a) + { + case 0: + pcText = gUnknown_083E31B0[b]; + break; + case 1: + pcText = gUnknown_083E31CC[b]; + break; + case 2: + pcText = gUnknown_083E31D8[b]; + break; + } - tileBuffer = gUnknown_083DFEC8; - sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2); - MenuPrint(&tileBuffer[0x800], 3, 17); + tileBuffer = gUnknown_083DFEC8; + sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2); + MenuPrint(&tileBuffer[0x800], 3, 17); } void sub_80EF490(u8 a) { - u16 var1, var2; - - if (a == 2) - { - a = 1; - } - - gUnknown_083DFEC4->unkCE4E = a * 30; - var1 = gUnknown_083DFEC4->unkCE4C; - var2 = a * 30; - if (var1 < var2) - { - gUnknown_083DFEC4->unkCE50 = 2; - } - else if (var1 > var2) - { - gUnknown_083DFEC4->unkCE50 = -2; - } - else - { - gUnknown_083DFEC4->unkCE50 = 0; - } + u16 var1, var2; + + if (a == 2) + a = 1; + + gUnknown_083DFEC4->unkCE4E = a * 30; + var1 = gUnknown_083DFEC4->unkCE4C; + var2 = a * 30; + if (var1 < var2) + gUnknown_083DFEC4->unkCE50 = 2; + else if (var1 > var2) + gUnknown_083DFEC4->unkCE50 = -2; + else + gUnknown_083DFEC4->unkCE50 = 0; } bool8 sub_80EF4F8(void) { - u16 *palettes; + u16 *palettes; - if (gUnknown_083DFEC4->unkCE4C == gUnknown_083DFEC4->unkCE4E) - { - return FALSE; - } - else - { - gUnknown_083DFEC4->unkCE4C = gUnknown_083DFEC4->unkCE50 + gUnknown_083DFEC4->unkCE4C; + if (gUnknown_083DFEC4->unkCE4C == gUnknown_083DFEC4->unkCE4E) + { + return FALSE; + } + else + { + gUnknown_083DFEC4->unkCE4C = gUnknown_083DFEC4->unkCE50 + gUnknown_083DFEC4->unkCE4C; - palettes = gUnknown_083DFEC4->palettesCE52; - LoadPalette(&palettes[gUnknown_083DFEC4->unkCE4C], 0x31, 4); - return TRUE; - } + palettes = gUnknown_083DFEC4->palettesCE52; + LoadPalette(&palettes[gUnknown_083DFEC4->unkCE4C], 0x31, 4); + return TRUE; + } } void sub_80EF54C(u8 a) { - if (a == 2) - { - a = 1; - } + if (a == 2) + a = 1; - gUnknown_083DFEC4->unkCE4C = a * 30; - LoadPalette(&gUnknown_083DFEC4->palettesCE52[gUnknown_083DFEC4->unkCE4C], 0x31, 4); + gUnknown_083DFEC4->unkCE4C = a * 30; + LoadPalette(&gUnknown_083DFEC4->palettesCE52[gUnknown_083DFEC4->unkCE4C], 0x31, 4); } void sub_80EF58C(u8 a) { - u16 i; - u16 * palettes; - const u16 *var1; - - switch (a) - { - case 0: - for (i = 0; i < 62; i++) - { - gUnknown_083DFEC4->palettesCE52[i] = 0; - } - break; - case 1: - palettes = gUnknown_083DFEC4->palettesCE52; - var1 = gUnknown_083E003C; - sub_80EF624(&var1[1], &var1[3], 16, 2, palettes); - break; - case 2: - palettes = gUnknown_083DFEC4->palettesCE8E; - var1 = gUnknown_083E003C; - sub_80EF624(&var1[3], &var1[7], 16, 2, palettes); - break; - } + u16 i; + u16 * palettes; + const u16 *var1; + + switch (a) + { + case 0: + for (i = 0; i < 62; i++) + gUnknown_083DFEC4->palettesCE52[i] = 0; + break; + case 1: + palettes = gUnknown_083DFEC4->palettesCE52; + var1 = gUnknown_083E003C; + sub_80EF624(&var1[1], &var1[3], 16, 2, palettes); + break; + case 2: + palettes = gUnknown_083DFEC4->palettesCE8E; + var1 = gUnknown_083E003C; + sub_80EF624(&var1[3], &var1[7], 16, 2, palettes); + break; + } } #ifdef NONMATCHING void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) { - u16 red1, green1, blue1; - u16 red2, green2, blue2; - s32 redDiv, greenDiv, blueDiv; - u16 *palettes2; - u16 i, j; - - i = 0; - while (i < d) - { - red1 = (*a & 0x1F) << 8; - green1 = ((*a >> 5) & 0x1F) << 8; - blue1 = ((*a >> 10) & 0x1F) << 8; - - red2 = (*b & 0x1F) << 8; - green2 = ((*b >> 5) & 0x1F) << 8; - blue2 = ((*b >> 10) & 0x1F) << 8; - - redDiv = (red2 - red1) / c; - greenDiv = (green2 - green1) / c; - blueDiv = (blue2 - blue1) / c; - - palettes2 = palettes; - for (j = 0; j < c - 1; j++) - { - *palettes2 = (((blue1 << 8) >> 16) << 10) | (((green1 << 8) >> 16) << 5) | ((red1 << 8) >> 16); - palettes2 += d; - red1 += redDiv; - green1 += greenDiv; - blue1 += blueDiv; - } + u16 red1, green1, blue1; + u16 red2, green2, blue2; + s32 redDiv, greenDiv, blueDiv; + u16 *palettes2; + u16 i, j; + + i = 0; + while (i < d) + { + red1 = (*a & 0x1F) << 8; + green1 = ((*a >> 5) & 0x1F) << 8; + blue1 = ((*a >> 10) & 0x1F) << 8; - *palettes2 = (red2 >> 8) | (blue2 << 2) | (green2 >> 3); - palettes++; + red2 = (*b & 0x1F) << 8; + green2 = ((*b >> 5) & 0x1F) << 8; + blue2 = ((*b >> 10) & 0x1F) << 8; - a++; - b++; - i++; - } + redDiv = (red2 - red1) / c; + greenDiv = (green2 - green1) / c; + blueDiv = (blue2 - blue1) / c; + + palettes2 = palettes; + for (j = 0; j < c - 1; j++) + { + *palettes2 = (((blue1 << 8) >> 16) << 10) | (((green1 << 8) >> 16) << 5) | ((red1 << 8) >> 16); + palettes2 += d; + red1 += redDiv; + green1 += greenDiv; + blue1 += blueDiv; + } + + *palettes2 = (red2 >> 8) | (blue2 << 2) | (green2 >> 3); + palettes++; + + a++; + b++; + i++; + } } #else __attribute__((naked)) @@ -3430,151 +3606,142 @@ _080EF72E:\n\ void sub_80EF740(void) { - gUnknown_083DFEC4->unk6DA0 = (gUnknown_083DFEC4->unk6DA0 + 1) & 1; - if (gUnknown_083DFEC4->unk6DA0) - { - gUnknown_083DFEC4->unk6DA2++; - } + gUnknown_083DFEC4->unk6DA0 = (gUnknown_083DFEC4->unk6DA0 + 1) & 1; + if (gUnknown_083DFEC4->unk6DA0) + gUnknown_083DFEC4->unk6DA2++; - REG_BG3HOFS = gUnknown_083DFEC4->unk6DA2; + REG_BG3HOFS = gUnknown_083DFEC4->unk6DA2; } void sub_80EF780(u8 taskId) { - if (gTasks[taskId].data[0] == 0 || (gUnknown_083DFEC4->unk6DA2 & 0x7) != 0) - { - sub_80EF740(); - } - else - { - u16 value = gUnknown_083DFEC4->unk6DA2 & 0x7; - gUnknown_083DFEC4->unk6DA2 = value; - gUnknown_083DFEC4->unk6DA0 = value; - REG_BG3HOFS = value; - } + if (gTasks[taskId].data[0] == 0 || (gUnknown_083DFEC4->unk6DA2 & 0x7) != 0) + { + sub_80EF740(); + } + else + { + u16 value = gUnknown_083DFEC4->unk6DA2 & 0x7; + gUnknown_083DFEC4->unk6DA2 = value; + gUnknown_083DFEC4->unk6DA0 = value; + REG_BG3HOFS = value; + } } void sub_80EF7D4(void) { - gUnknown_083DFEC4->unk6DA2 = 0; - gUnknown_083DFEC4->unk6DA0 = 0; - gUnknown_083DFEC4->taskId6DA4 = CreateTask(sub_80EF780, 80); + gUnknown_083DFEC4->unk6DA2 = 0; + gUnknown_083DFEC4->unk6DA0 = 0; + gUnknown_083DFEC4->taskId6DA4 = CreateTask(sub_80EF780, 80); } void sub_80EF814(void) { - if (FuncIsActiveTask(sub_80EF780)) - { - DestroyTask(gUnknown_083DFEC4->taskId6DA4); - } + if (FuncIsActiveTask(sub_80EF780)) + DestroyTask(gUnknown_083DFEC4->taskId6DA4); } void sub_80EF840(void) { - gUnknown_083DFEC4->unkD160 = 0; + gUnknown_083DFEC4->unkD160 = 0; - if (gUnknown_083DFEC4->unk6DAC == 0) - { - while (sub_80EF874() != 0); - } + if (gUnknown_083DFEC4->unk6DAC == 0) + { + while (sub_80EF874() != 0) + ; + } } bool8 sub_80EF874(void) { - switch (gUnknown_083DFEC4->unkD160) - { - case 0: - sub_80EEDE8(); - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); - break; - case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); - break; - case 3: - if (!MultistepInitMenuWindowContinue()) - { - return TRUE; - } - break; - case 4: - MenuZeroFillScreen(); - break; - case 5: - sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE); - break; - case 6: - if (sub_80FA940()) - { - return TRUE; - } - break; - case 7: - LZ77UnCompVram(gPokenavHoennMapSquares_Gfx, (void *)VRAM + 0x5000); - break; - case 8: - LoadPalette(gPokenavHoennMapSquares_Pal, 0x30, 0x20); - sub_80EFC3C(); - break; - case 9: - if (sub_80EFC64()) - { - return TRUE; - } - break; - case 10: - MenuDrawTextWindow(13, 3, 29, 17); - sub_80EF9F8(); - break; - case 11: - if (!gUnknown_083DFEC4->regionMap.zoomed) - { - gUnknown_083DFEC4->unk7698 = 160; - REG_BG0VOFS = 160; - } - else - { - gUnknown_083DFEC4->unk7698 = 256; - REG_BG0VOFS = 0; - } + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E7224); + break; + case 2: + MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); + break; + case 3: + if (!MultistepInitMenuWindowContinue()) + return TRUE; + break; + case 4: + MenuZeroFillScreen(); + break; + case 5: + sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE); + break; + case 6: + if (sub_80FA940()) + return TRUE; + break; + case 7: + LZ77UnCompVram(gPokenavHoennMapSquares_Gfx, (void *)VRAM + 0x5000); + break; + case 8: + LoadPalette(gPokenavHoennMapSquares_Pal, 0x30, 0x20); + sub_80EFC3C(); + break; + case 9: + if (sub_80EFC64()) + return TRUE; + break; + case 10: + MenuDrawTextWindow(13, 3, 29, 17); + sub_80EF9F8(); + break; + case 11: + if (!gUnknown_083DFEC4->regionMap.zoomed) + { + gUnknown_083DFEC4->unk7698 = 160; + REG_BG0VOFS = 160; + } + else + { + gUnknown_083DFEC4->unk7698 = 256; + REG_BG0VOFS = 0; + } - REG_BG0CNT = REG_BG0CNT; - REG_BG0CNT |= 1; - REG_BLDCNT = 0; - break; - default: - return FALSE; - } + REG_BG0CNT = REG_BG0CNT; + REG_BG0CNT |= 1; + REG_BLDCNT = 0; + break; + default: + return FALSE; + } - gUnknown_083DFEC4->unkD160++; - return TRUE; + gUnknown_083DFEC4->unkD160++; + return TRUE; } asm(".include \"constants/gba_constants.inc\"\n"); void sub_80EF9F8(void) { - bool8 someBool = FALSE; + bool8 someBool = FALSE; u16 top = 4; - u16 mapSectionId; - u8 b; + u16 mapSectionId; + u8 b; - switch (gUnknown_083DFEC4->regionMap.unk16) - { + switch (gUnknown_083DFEC4->regionMap.unk16) + { case 0: break; - case 1: - case 4: - sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); - top += 2; - if (gLinkOpen == TRUE) - { - sub_80F1A80(); + case 1: + case 4: + sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); + top += 2; + if (gLinkOpen == TRUE) + { + sub_80F1A80(); someBool = TRUE; - } - else - { + } + else + { u16 i; for (i = 0; i < 4; i++) @@ -3589,99 +3756,95 @@ void sub_80EF9F8(void) sub_8072A18(secName, 0x70, top * 8, 0x78, 1); top += 2; } - } - break; - case 2: - sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); - top += 2; - mapSectionId = gUnknown_083DFEC4->regionMap.mapSectionId; + } + break; + case 2: + sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); + top += 2; + mapSectionId = gUnknown_083DFEC4->regionMap.mapSectionId; b = gUnknown_083DFEC4->regionMap.everGrandeCityArea; if (gUnknown_083DFEC4->unkCDCC[mapSectionId][b] != NULL) - { - MenuFillWindowRectWithBlankTile(14, top, 15, 15); - MenuFillWindowRectWithBlankTile(26, top, 28, 15); - sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10); - top += 11; - } - break; - case 3: - sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); - top += 2; - break; - } + { + MenuFillWindowRectWithBlankTile(14, top, 15, 15); + MenuFillWindowRectWithBlankTile(26, top, 28, 15); + sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10); + top += 11; + } + break; + case 3: + sub_8072A18(gUnknown_083DFEC4->regionMap.mapSectionName, 0x70, top * 8, 0x78, 1); + top += 2; + break; + } // Epic fail by the compiler at optimizing this. if (!someBool && top < 16) MenuFillWindowRectWithBlankTile(14, top, 28, 15); - if (gUnknown_083DFEC4->regionMap.unk16 == 2) - sub_80EFD74(); - else - sub_80EFDA0(); + if (gUnknown_083DFEC4->regionMap.unk16 == 2) + sub_80EFD74(); + else + sub_80EFDA0(); } void sub_80EFBB0(void) { - if (!gUnknown_083DFEC4->regionMap.zoomed) - { - sub_80EEFBC(8); - } - else - { - sub_80EEFBC(7); - } + if (!gUnknown_083DFEC4->regionMap.zoomed) + sub_80EEFBC(8); + else + sub_80EEFBC(7); } bool8 sub_80EFBDC(bool8 a) { - bool8 retVal = TRUE; - u16 var1 = gUnknown_083DFEC4->unk7698; + bool8 retVal = TRUE; + u16 var1 = gUnknown_083DFEC4->unk7698; - if (a) - { - if (var1 > 168) - { - var1 = var1 - 8; - } - else - { - var1 = 160; - retVal = FALSE; - } - } - else - { - if (var1 < 248) - { - var1 = var1 + 8; - } - else - { - var1 = 256; - retVal = FALSE; - } - } + if (a) + { + if (var1 > 168) + { + var1 = var1 - 8; + } + else + { + var1 = 160; + retVal = FALSE; + } + } + else + { + if (var1 < 248) + { + var1 = var1 + 8; + } + else + { + var1 = 256; + retVal = FALSE; + } + } - gUnknown_083DFEC4->unk7698 = var1; - REG_BG0VOFS = var1 & 0xFF; + gUnknown_083DFEC4->unk7698 = var1; + REG_BG0VOFS = var1 & 0xFF; - return retVal; + return retVal; } void sub_80EFC3C(void) { - gUnknown_083DFEC4->unkBC9A = 0; - gUnknown_083DFEC4->unkBC9B = 0; - sub_80EFD3C(); + gUnknown_083DFEC4->unkBC9A = 0; + gUnknown_083DFEC4->unkBC9B = 0; + sub_80EFD3C(); } bool8 sub_80EFC64(void) { - u16 i; - u8 var1; - u16 var2; + u16 i; + u8 var1; + u16 var2; - if (gUnknown_083DFEC4->unkBC9A >= 16) + if (gUnknown_083DFEC4->unkBC9A >= 16) return FALSE; var1 = gUnknown_083DFEC4->unkBC9A; @@ -3709,345 +3872,330 @@ bool8 sub_80EFC64(void) void sub_80EFD3C(void) { - gUnknown_083DFEC4->unk769E = 0; - gUnknown_083DFEC4->unk769C = 47; - gUnknown_083DFEC4->unk769D = 0; - gUnknown_083DFEC4->unk769A = 0; + gUnknown_083DFEC4->unk769E = 0; + gUnknown_083DFEC4->unk769C = 47; + gUnknown_083DFEC4->unk769D = 0; + gUnknown_083DFEC4->unk769A = 0; } void sub_80EFD74(void) { - gUnknown_083DFEC4->unk769E = 1; - - if (gUnknown_083DFEC4->unk769D == 1) - { - gUnknown_083DFEC4->unk769D = 2; - } + gUnknown_083DFEC4->unk769E = 1; + if (gUnknown_083DFEC4->unk769D == 1) + gUnknown_083DFEC4->unk769D = 2; } void sub_80EFDA0(void) { - sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9AC2C, 0, 0, 15, 1, 15); - gUnknown_083DFEC4->unk769E = 0; + sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9AC2C, 0, 0, 15, 1, 15); + gUnknown_083DFEC4->unk769E = 0; } void sub_80EFDE4(u8 param0) { - u16 var1 = 60 - gUnknown_083DFEC4->unk769C; + u16 var1 = 60 - gUnknown_083DFEC4->unk769C; - if (var1 > 15) - { - var1 = 15; - } + if (var1 > 15) + var1 = 15; - if (gUnknown_083DFEC4->unk769E != 0) - { - sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9ABB4, gUnknown_083DFEC4->unk769C, 0, var1, 1, 60); + if (gUnknown_083DFEC4->unk769E != 0) + { + sub_8095C8C((void *)VRAM + 0xF800, 14, 16, gUnknown_08E9ABB4, gUnknown_083DFEC4->unk769C, 0, var1, 1, 60); - if (var1 < 15) - { - u16 var2 = var1 + 14; + if (var1 < 15) + { + u16 var2 = var1 + 14; - sub_8095C8C((void *)VRAM + 0xF800, var2, 16, gUnknown_08E9ABB4, 0, 0, (u16)(15 - var1), 1, 60); - } - } + sub_8095C8C((void *)VRAM + 0xF800, var2, 16, gUnknown_08E9ABB4, 0, 0, (u16)(15 - var1), 1, 60); + } + } } void sub_80EFE7C(void) { - u16 var1; - u8 var2 = gUnknown_083DFEC4->unk769D; + u16 var1; + u8 var2 = gUnknown_083DFEC4->unk769D; - switch (var2) - { - case 0: - var1 = ++gUnknown_083DFEC4->unk769C; + switch (var2) + { + case 0: + var1 = ++gUnknown_083DFEC4->unk769C; - if (var1 > 59) - { - gUnknown_083DFEC4->unk769C = var2; - } + if (var1 > 59) + gUnknown_083DFEC4->unk769C = var2; - sub_80EFDE4(gUnknown_083DFEC4->unk769E); + sub_80EFDE4(gUnknown_083DFEC4->unk769E); - switch (gUnknown_083DFEC4->unk769C) - { - case 0: - case 15: - case 30: - case 45: - gUnknown_083DFEC4->unk769D = 1; - gUnknown_083DFEC4->unk769A = 0; - break; - } - break; - case 1: - var1 = ++gUnknown_083DFEC4->unk769A; - if (var1 > 120) - { - gUnknown_083DFEC4->unk769A = 0; - gUnknown_083DFEC4->unk769D = 0; - } - break; - case 2: - sub_80EFDE4(1); - gUnknown_083DFEC4->unk769D = 1; - break; - } + switch (gUnknown_083DFEC4->unk769C) + { + case 0: + case 15: + case 30: + case 45: + gUnknown_083DFEC4->unk769D = 1; + gUnknown_083DFEC4->unk769A = 0; + break; + } + break; + case 1: + var1 = ++gUnknown_083DFEC4->unk769A; + if (var1 > 120) + { + gUnknown_083DFEC4->unk769A = 0; + gUnknown_083DFEC4->unk769D = 0; + } + break; + case 2: + sub_80EFDE4(1); + gUnknown_083DFEC4->unk769D = 1; + break; + } } void sub_80EFF34(void) { - gUnknown_083DFEC4->unkD160 = 0; + gUnknown_083DFEC4->unkD160 = 0; - if (gUnknown_083DFEC4->unk6DAC == 0) - { - while (sub_80EFF68()); - } + if (gUnknown_083DFEC4->unk6DAC == 0) + { + while (sub_80EFF68()) + ; + } } bool8 sub_80EFF68(void) { - switch (gUnknown_083DFEC4->unkD160) - { - case 0: - sub_80EEDE8(); - gUnknown_083DFEC4->unkD162[0] = 11; - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E7080); - break; - case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); - break; - case 3: - if (!MultistepInitMenuWindowContinue()) - { - return TRUE; - } - break; - case 4: - MenuZeroFillScreen(); - break; - case 5: - sub_80F1614(); - break; - case 6: - if (sub_80F162C(0)) - { - return TRUE; - } - break; - case 7: - LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)VRAM + 0x5000); - break; - case 8: - LZ77UnCompVram(gUnknown_08E9AC4C, (void *)VRAM + 0xF000); - LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20); - break; - case 9: - if (gUnknown_083DFEC4->unk76AA == 1) - { - sub_8095C8C((void *)VRAM + 0xF000, 0, 5, gUnknown_083E01AC, 0, 0, 9, 4, 9); - } - break; - case 10: - LZ77UnCompVram(gUnknown_08E9FEB4, (void *)VRAM + 0xB800); - break; - case 11: - LoadPalette(gUnknown_083E0254, 0x30, 0x20); - LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); - LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2); - LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2); - LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2); - sub_80F01A4(); - break; - case 12: - sub_80F01E0((u16)gUnknown_083DFEC4->unk8fe9); - break; - case 13: - REG_BG3CNT = 0x1E03; - REG_BG2CNT = 0x1702; - REG_BLDCNT = 0x844; - REG_BLDALPHA = 0x40B; - break; - default: - return FALSE; - } + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + gUnknown_083DFEC4->unkD162[0] = 11; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E7080); + break; + case 2: + MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); + break; + case 3: + if (!MultistepInitMenuWindowContinue()) + return TRUE; + break; + case 4: + MenuZeroFillScreen(); + break; + case 5: + sub_80F1614(); + break; + case 6: + if (sub_80F162C(0)) + return TRUE; + break; + case 7: + LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)VRAM + 0x5000); + break; + case 8: + LZ77UnCompVram(gUnknown_08E9AC4C, (void *)VRAM + 0xF000); + LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20); + break; + case 9: + if (gUnknown_083DFEC4->unk76AA == 1) + sub_8095C8C((void *)VRAM + 0xF000, 0, 5, gUnknown_083E01AC, 0, 0, 9, 4, 9); + break; + case 10: + LZ77UnCompVram(gUnknown_08E9FEB4, (void *)VRAM + 0xB800); + break; + case 11: + LoadPalette(gUnknown_083E0254, 0x30, 0x20); + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2); + LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2); + LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2); + sub_80F01A4(); + break; + case 12: + sub_80F01E0((u16)gUnknown_083DFEC4->unk8fe9); + break; + case 13: + REG_BG3CNT = 0x1E03; + REG_BG2CNT = 0x1702; + REG_BLDCNT = 0x844; + REG_BLDALPHA = 0x40B; + break; + default: + return FALSE; + } - gUnknown_083DFEC4->unkD160++; - return TRUE; + gUnknown_083DFEC4->unkD160++; + return TRUE; } -void sub_80F0174(bool8 a) +void sub_80F0174(bool8 bg2on) { - if (a) - { - REG_DISPCNT |= DISPCNT_BG2_ON; - } - else - { - REG_DISPCNT &= ~DISPCNT_BG2_ON; - } + if (bg2on) + REG_DISPCNT |= DISPCNT_BG2_ON; + else + REG_DISPCNT &= ~DISPCNT_BG2_ON; } void sub_80F01A4(void) { - REG_WIN0H = WIN_RANGE(0, 240); - REG_WIN1H = WIN_RANGE(0, 155); - REG_WIN0V = WIN_RANGE(56, 121); - REG_WIN1V = WIN_RANGE(56, 121); - REG_WININ = 0x3F3F; - REG_WINOUT = 0x001B; + REG_WIN0H = WIN_RANGE(0, 240); + REG_WIN1H = WIN_RANGE(0, 155); + REG_WIN0V = WIN_RANGE(56, 121); + REG_WIN1V = WIN_RANGE(56, 121); + REG_WININ = 0x3F3F; + REG_WINOUT = 0x001B; } void sub_80F01E0(u16 a) { - MenuPrint(gUnknown_083DFEC4->unk8829[a], 13, 1); - - if (gUnknown_083DFEC4->unk76AA == 1) - { - MenuPrint(gUnknown_083DFEC4->unk88E9[a], 13, 3); - sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk2); - MenuPrint(gUnknown_083DFEC4->unk8788, 1, 6); - } + MenuPrint(gUnknown_083DFEC4->unk8829[a], 13, 1); + + if (gUnknown_083DFEC4->unk76AA == 1) + { + MenuPrint(gUnknown_083DFEC4->unk88E9[a], 13, 3); + sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk2); + MenuPrint(gUnknown_083DFEC4->unk8788, 1, 6); + } } void sub_80F0264(u8 a) { - gUnknown_083DFEC4->unk306 = 0; - gUnknown_083DFEC4->unk87CA = a; + gUnknown_083DFEC4->unk306 = 0; + gUnknown_083DFEC4->unk87CA = a; - if (gUnknown_083DFEC4->unk6DAC == 0) - { - while (sub_80F02A0()); - } + if (gUnknown_083DFEC4->unk6DAC == 0) + { + while (sub_80F02A0()) + ; + } } #ifdef NONMATCHING // small nonmatching part is in the third else clause in case 7. bool8 sub_80F02A0(void) { - const u16 *pointer; + const u16 *pointer; - switch (gUnknown_083DFEC4->unk306) - { - case 0: - sub_80EEDE8(); + switch (gUnknown_083DFEC4->unk306) + { + case 0: + sub_80EEDE8(); - gUnknown_083DFEC4->unk87C8 = gUnknown_083DFEC4->unk87CA == 1; - gUnknown_083DFEC4->unkD162[0] = 11; - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E70D4); - break; - case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E70D4); - break; - case 3: - if (!MultistepInitMenuWindowContinue()) - { - return TRUE; - } - break; - case 4: - MenuZeroFillScreen(); - break; - case 5: - LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800); - break; - case 6: - LZ77UnCompVram(gPokenavConditionSearch2_Gfx, (void *)VRAM + 0x8000); - break; - case 7: - LoadPalette(gUnknown_083E02B4, 0xB0, 0x20); - LoadPalette(gUnknown_083E02B4, 0xF0, 0x20); - LoadPalette(gUnknown_083E0334, 0x40, 0x20); + gUnknown_083DFEC4->unk87C8 = gUnknown_083DFEC4->unk87CA == 1; + gUnknown_083DFEC4->unkD162[0] = 11; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E70D4); + break; + case 2: + MultistepInitMenuWindowBegin(&gWindowConfig_81E70D4); + break; + case 3: + if (!MultistepInitMenuWindowContinue()) + { + return TRUE; + } + break; + case 4: + MenuZeroFillScreen(); + break; + case 5: + LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800); + break; + case 6: + LZ77UnCompVram(gPokenavConditionSearch2_Gfx, (void *)VRAM + 0x8000); + break; + case 7: + LoadPalette(gUnknown_083E02B4, 0xB0, 0x20); + LoadPalette(gUnknown_083E02B4, 0xF0, 0x20); + LoadPalette(gUnknown_083E0334, 0x40, 0x20); - if (gUnknown_083DFEC4->unk87CA == 0) - { - LoadPalette(gPokenavConditionSearch2_Pal, 0x30, 0x20); - gPlttBufferUnfaded[0] = gPokenavConditionSearch2_Pal[5]; - LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); - LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); - LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); - LoadPalette(&gPokenavConditionSearch2_Pal[5], 0xBF, 0x2); - } - else if (gUnknown_083DFEC4->unk87CA == 1) - { - LoadPalette(gUnknown_083E0274, 0x30, 0x20); - gPlttBufferUnfaded[0] = gUnknown_083E0274[5]; - LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); - LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); - LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); - LoadPalette(&gUnknown_083E0274[5], 0xBF, 0x2); - } - else - { - LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20); - pointer = &gUnknown_08E9F9E8[5]; - gPlttBufferUnfaded[0] = gUnknown_08E9F9E8[5]; - LoadPalette(gUnknown_083E0314, 0x50, 0x20); - LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); - LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); - LoadPalette(pointer, 0xBF, 0x2); - LoadPalette(pointer, 0x5F, 0x2); - } - break; - case 8: - if (gUnknown_083DFEC4->unk87CA != 2) - { - sub_8095C8C((void *)VRAM + 0xE800, 0, 5, gUnknown_08E9FD1C, 0, 0, 9, 4, 9); - } - else - { - sub_8095C8C((void *)VRAM + 0xE800, 0, 4, gUnknown_08E9FE54, 0, 0, 12, 10, 12); - sub_8095C8C((void *)VRAM + 0xE800, 0, 8, gUnknown_08E9FD64, 0, 0, 12, 10, 12); - } - break; - case 9: - LZ77UnCompVram(gUnknown_083E0354, (void *)VRAM + 0x5000); - break; - case 10: - DmaClear16(3, (void *)VRAM + 0xF800, 0x800); - break; - case 11: - sub_80F0900(); - break; - case 12: - if (sub_80F0944()) - { - return TRUE; - } - break; - case 13: - if (gUnknown_083DFEC4->unk87CA != 2) - { - ShowMapNamePopUpWindow(); - } - else - { - sub_80F081C(0); - sub_80F0FFC(gUnknown_083DFEC4->unk876E); - } - break; - case 14: - REG_BG2CNT = 0x1D0A; - REG_BG3CNT = 0x1E03; - REG_BG0CNT = 0x1F01; - REG_BG3VOFS = 0xF8; - - gUnknown_083DFEC4->unk8776 = 0xF8; - gUnknown_083DFEC4->unk8778 = 0; - - REG_BLDCNT = 0; - gUnknown_083DFEC4->unkD160++; - return FALSE; - default: - return FALSE; - } - - gUnknown_083DFEC4->unk306++; - return TRUE; + if (gUnknown_083DFEC4->unk87CA == 0) + { + LoadPalette(gPokenavConditionSearch2_Pal, 0x30, 0x20); + gPlttBufferUnfaded[0] = gPokenavConditionSearch2_Pal[5]; + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); + LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); + LoadPalette(&gPokenavConditionSearch2_Pal[5], 0xBF, 0x2); + } + else if (gUnknown_083DFEC4->unk87CA == 1) + { + LoadPalette(gUnknown_083E0274, 0x30, 0x20); + gPlttBufferUnfaded[0] = gUnknown_083E0274[5]; + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); + LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); + LoadPalette(&gUnknown_083E0274[5], 0xBF, 0x2); + } + else + { + LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20); + pointer = &gUnknown_08E9F9E8[5]; + gPlttBufferUnfaded[0] = gUnknown_08E9F9E8[5]; + LoadPalette(gUnknown_083E0314, 0x50, 0x20); + LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); + LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); + LoadPalette(pointer, 0xBF, 0x2); + LoadPalette(pointer, 0x5F, 0x2); + } + break; + case 8: + if (gUnknown_083DFEC4->unk87CA != 2) + { + sub_8095C8C((void *)VRAM + 0xE800, 0, 5, gUnknown_08E9FD1C, 0, 0, 9, 4, 9); + } + else + { + sub_8095C8C((void *)VRAM + 0xE800, 0, 4, gUnknown_08E9FE54, 0, 0, 12, 10, 12); + sub_8095C8C((void *)VRAM + 0xE800, 0, 8, gUnknown_08E9FD64, 0, 0, 12, 10, 12); + } + break; + case 9: + LZ77UnCompVram(gUnknown_083E0354, (void *)VRAM + 0x5000); + break; + case 10: + DmaClear16(3, (void *)VRAM + 0xF800, 0x800); + break; + case 11: + sub_80F0900(); + break; + case 12: + if (sub_80F0944()) + { + return TRUE; + } + break; + case 13: + if (gUnknown_083DFEC4->unk87CA != 2) + { + ShowMapNamePopUpWindow(); + } + else + { + sub_80F081C(0); + sub_80F0FFC(gUnknown_083DFEC4->unk876E); + } + break; + case 14: + REG_BG2CNT = 0x1D0A; + REG_BG3CNT = 0x1E03; + REG_BG0CNT = 0x1F01; + REG_BG3VOFS = 0xF8; + + gUnknown_083DFEC4->unk8776 = 0xF8; + gUnknown_083DFEC4->unk8778 = 0; + + REG_BLDCNT = 0; + gUnknown_083DFEC4->unkD160++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; } #else __attribute__((naked)) diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 9cf28a111..001cd85f6 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1,13 +1,14 @@ #include "global.h" +#include "constants/species.h" #include "rom_8077ABC.h" #include "battle.h" #include "battle_anim.h" #include "blend_palette.h" +#include "contest.h" #include "data2.h" #include "decompress.h" #include "palette.h" #include "pokemon_icon.h" -#include "constants/species.h" #include "sprite.h" #include "task.h" #include "trig.h" @@ -31,52 +32,28 @@ #define gTransformPersonalities gTransformedPersonalities #define gBattleMonSprites gObjectBankIDs - -struct Struct_unk_2019348 { - u16 field_0; - u16 field_2; - u8 field_4; - u32 field_8; - u32 field_c; - u32 field_10; -}; - -struct TransformStatus { +struct TransformStatus +{ u16 unknown; u16 species; }; -struct Struct_gUnknown_0837F578 { +struct Struct_gUnknown_0837F578 +{ u8 field_0; u8 field_1; }; -struct Struct_2017810 { +struct Struct_2017810 +{ u8 filler_0[6]; u8 field_6; u8 filler_7[5]; }; -struct Color { - u16 r:5; - u16 g:5; - u16 b:5; -}; - -struct BGCnt { - u16 priority:2; - u16 charBase:2; - u16 unused:2; - u16 mosaic:1; - u16 colorMode:1; - u16 screenBase:5; - u16 overflow:1; - u16 size:2; -}; - -#define BG1CNT (*(volatile struct BGCnt*)REG_ADDR_BG1CNT) -#define BG2CNT (*(volatile struct BGCnt*)REG_ADDR_BG2CNT) -#define BG3CNT (*(volatile struct BGCnt*)REG_ADDR_BG3CNT) +#define BG1CNT (*(vBgCnt *)REG_ADDR_BG1CNT) +#define BG2CNT (*(vBgCnt *)REG_ADDR_BG2CNT) +#define BG3CNT (*(vBgCnt *)REG_ADDR_BG3CNT) extern struct OamData gOamData_837DF9C[]; extern const union AnimCmd *const gDummySpriteAnimTable[]; @@ -102,7 +79,8 @@ extern u8 UpdateMonIconFrame(struct Sprite *sprite); EWRAM_DATA union AffineAnimCmd *gUnknown_0202F7D4 = NULL; EWRAM_DATA u32 filler_0202F7D8[3] = {0}; -const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = { +const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = +{ { { 72, 80 }, { 176, 40 }, @@ -120,14 +98,16 @@ const struct Struct_gUnknown_0837F578 gUnknown_0837F578[][4] = { // One entry for each of the four Castform forms. // Coords are probably front pic coords or back pic coords, but this data does not seem to be // used during battle, party summary, or pokedex screens. -const struct MonCoords gCastformFrontSpriteCoords[] = { +const struct MonCoords gCastformFrontSpriteCoords[] = +{ { 0x44, 17 }, // NORMAL { 0x66, 9 }, // SUN { 0x46, 9 }, // RAIN { 0x86, 8 }, // HAIL }; -const u8 gCastformElevations[] = { +const u8 gCastformElevations[] = +{ 13, // NORMAL 14, // SUN 13, // RAIN @@ -135,14 +115,16 @@ const u8 gCastformElevations[] = { }; // Y position of the backsprite for each of the four Castform forms. -const u8 gCastformBackSpriteYCoords[] = { +const u8 gCastformBackSpriteYCoords[] = +{ 0, // NORMAL 0, // SUN 0, // RAIN 0, // HAIL }; -const struct SpriteTemplate gSpriteTemplate_837F5B0[] = { +const struct SpriteTemplate gSpriteTemplate_837F5B0[] = +{ { .tileTag = 55125, .paletteTag = 55125, @@ -151,7 +133,8 @@ const struct SpriteTemplate gSpriteTemplate_837F5B0[] = { .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, - }, { + }, + { .tileTag = 55126, .paletteTag = 55126, .oam = gOamData_837DF9C, @@ -162,23 +145,26 @@ const struct SpriteTemplate gSpriteTemplate_837F5B0[] = { } }; -const struct SpriteSheet gUnknown_0837F5E0[] = { +const struct SpriteSheet gUnknown_0837F5E0[] = +{ { gMiscBlank_Gfx, 0x800, 55125, }, { gMiscBlank_Gfx, 0x800, 55126, }, }; -u8 GetBankPosition(u8 slot, u8 a2) { +u8 GetBankPosition(u8 slot, u8 a2) +{ u8 var; u16 species; struct TransformStatus *transform; - if (IsContest()) { - if (a2 == 3 && slot == 3) { + if (IsContest()) + { + if (a2 == 3 && slot == 3) a2 = 1; - } } - switch (a2) { + switch (a2) + { case 0: case 2: var = gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_0; @@ -189,339 +175,402 @@ u8 GetBankPosition(u8 slot, u8 a2) { case 3: case 4: default: - if (IsContest()) { - if (ewram19348.unk4 & 1) { - species = ewram19348.unk2; - } else { - species = ewram19348.unk0; - } - } else { - if (GetBankSide(slot)) { + if (IsContest()) + { + if (shared19348.unk4_0) + species = shared19348.unk2; + else + species = shared19348.unk0; + } + else + { + if (GetBankSide(slot)) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } } } - if (a2 == 3) { + if (a2 == 3) var = sub_8077E44(slot, species, 1); - } else { + else var = sub_8077E44(slot, species, 0); - } break; } return var; } -u8 sub_8077BFC(u8 slot, u16 species) { +u8 sub_8077BFC(u8 slot, u16 species) +{ u16 letter; u32 personality; struct TransformStatus *transform; u8 ret; u16 var; - if (!GetBankSide(slot) || IsContest()) { - if (species == SPECIES_UNOWN) { - if (IsContest()) { - if (ewram19348.unk4 & 1) { - personality = ewram19348.unk10; - } else { - personality = ewram19348.unk8; - } - } else { + if (GetBankSide(slot) == 0 || IsContest()) + { + if (species == SPECIES_UNOWN) + { + if (IsContest()) + { + if (shared19348.unk4_0) + personality = shared19348.unk10; + else + personality = shared19348.unk8; + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) personality = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + else personality = gTransformPersonalities[slot]; - } } letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = species; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } ret = gMonBackPicCoords[var].y_offset; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { ret = gCastformBackSpriteYCoords[gBattleMonForms[slot]]; - } else if (species > NUM_SPECIES) { + } + else if (species > NUM_SPECIES) + { ret = gMonBackPicCoords[0].y_offset; - } else { + } + else + { ret = gMonBackPicCoords[species].y_offset; } - } else { - if (species == SPECIES_UNOWN) { + } + else + { + if (species == SPECIES_UNOWN) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) personality = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + else personality = gTransformPersonalities[slot]; - } letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = species; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } ret = gMonFrontPicCoords[var].y_offset; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { ret = gCastformFrontSpriteCoords[gBattleMonForms[slot]].y_offset; - } else if (species > NUM_SPECIES) { + } + else if (species > NUM_SPECIES) + { ret = gMonFrontPicCoords[0].y_offset; - } else { + } + else + { ret = gMonFrontPicCoords[species].y_offset; } } return ret; } -u8 sub_8077DD8(u8 slot, u16 species) { +u8 sub_8077DD8(u8 slot, u16 species) +{ u8 ret = 0; - if (GetBankSide(slot) == 1) { - if (!IsContest()) { - if (species == SPECIES_CASTFORM) { + if (GetBankSide(slot) == 1) + { + if (!IsContest()) + { + if (species == SPECIES_CASTFORM) ret = gCastformElevations[gBattleMonForms[slot]]; - } else if (species > NUM_SPECIES) { + else if (species > NUM_SPECIES) ret = gEnemyMonElevation[0]; - } else { + else ret = gEnemyMonElevation[species]; - } } } return ret; } -u8 sub_8077E44(u8 slot, u16 species, u8 a3) { +u8 sub_8077E44(u8 slot, u16 species, u8 a3) +{ u16 offset; u8 y; - if (GetBankSide(slot) == 0 || IsContest()) { + + if (GetBankSide(slot) == 0 || IsContest()) + { offset = sub_8077BFC(slot, species); - } else { + } + else + { offset = sub_8077BFC(slot, species); offset -= sub_8077DD8(slot, species); } y = offset + gUnknown_0837F578[IS_DOUBLE_BATTLE()][GetBankIdentity(slot)].field_1; - if (a3) { - if (GetBankSide(slot) == 0) { + if (a3) + { + if (GetBankSide(slot) == 0) y += 8; - } - if (y > 104) y = 104; + if (y > 104) + y = 104; } return y; } -u8 sub_8077EE4(u8 slot, u8 a2) { +u8 sub_8077EE4(u8 slot, u8 a2) +{ u16 species; struct TransformStatus *transform; - if (a2 == 3 || a2 == 4) { - if (IsContest()) { - if (ewram19348.unk4 & 1) { - species = ewram19348.unk2; - } else { - species = ewram19348.unk0; - } - } else { + if (a2 == 3 || a2 == 4) + { + if (IsContest()) + { + if (shared19348.unk4_0) + species = shared19348.unk2; + else + species = shared19348.unk0; + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = gAnimSpeciesByBanks[slot]; - } else { + else species = transform->species; - } } - if (a2 == 3) { + if (a2 == 3) return sub_8077E44(slot, species, 1); - } else { + else return sub_8077E44(slot, species, 0); - } - } else { + } + else + { return GetBankPosition(slot, a2); } } -u8 sub_8077F68(u8 slot) { +u8 sub_8077F68(u8 slot) +{ return GetBankPosition(slot, 4); } -u8 sub_8077F7C(u8 slot) { +u8 sub_8077F7C(u8 slot) +{ u16 var; - if (GetBankSide(slot)) { + if (GetBankSide(slot) != 0) var = GetBankPosition(slot, 1) + 16; - } else { + else var = GetBankPosition(slot, 1) + 17; - } return var; } -u8 sub_8077FC0(u8 slot) { +u8 sub_8077FC0(u8 slot) +{ u16 var; u8 r6; struct TransformStatus *transform; + r6 = GetBankPosition(slot, 1); - if (!IsContest()) { - if (GetBankSide(slot)) { + if (!IsContest()) + { + if (GetBankSide(slot) != 0) + { transform = &eTransformStatuses[slot]; if (!transform->species) { var = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); } else { var = transform->species; } - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) var = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); - } else { + else var = transform->species; - } } - if (GetBankSide(slot)) { + if (GetBankSide(slot) != 0) r6 -= sub_8077DD8(slot, var); - } } return r6; } -u8 GetAnimBankSpriteId(u8 whichBank) { +u8 GetAnimBankSpriteId(u8 whichBank) +{ u8 *sprites; - if (whichBank == ANIM_BANK_ATTACKER) { - if (IsBankSpritePresent(gAnimBankAttacker)) { + + if (whichBank == ANIM_BANK_ATTACKER) + { + if (IsBankSpritePresent(gAnimBankAttacker)) + { sprites = gBattleMonSprites; return sprites[gAnimBankAttacker]; - } else { + } + else + { return 0xff; } - } else if (whichBank == ANIM_BANK_TARGET) { - if (IsBankSpritePresent(gAnimBankTarget)) { + } + else if (whichBank == ANIM_BANK_TARGET) + { + if (IsBankSpritePresent(gAnimBankTarget)) + { sprites = gBattleMonSprites; return sprites[gAnimBankTarget]; - } else { + } + else + { return 0xff; } - } else if (whichBank == ANIM_BANK_ATK_PARTNER) { - if (!IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { + } + else if (whichBank == ANIM_BANK_ATK_PARTNER) + { + if (!IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) return 0xff; - } else { + else return gBattleMonSprites[gAnimBankAttacker ^ 2]; - } - } else { - if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { + } + else + { + if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) return gBattleMonSprites[gAnimBankTarget ^ 2]; - } else { + else return 0xff; - } } } -void StoreSpriteCallbackInData(struct Sprite *sprite, void (*callback)(struct Sprite*)) { +void StoreSpriteCallbackInData(struct Sprite *sprite, void (*callback)(struct Sprite*)) +{ sprite->data[6] = (u32)(callback) & 0xffff; sprite->data[7] = (u32)(callback) >> 16; } -void SetCallbackToStoredInData(struct Sprite *sprite) { +void SetCallbackToStoredInData(struct Sprite *sprite) +{ u32 callback = (u16)sprite->data[6] | (sprite->data[7] << 16); sprite->callback = (void (*)(struct Sprite *))callback; } -void sub_8078114(struct Sprite *sprite) { - if (sprite->data[3]) { +void sub_8078114(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078174(struct Sprite *sprite) { - if (sprite->data[3]) { +void sub_8078174(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); sprite->data[0] += sprite->data[2]; sprite->data[5] += sprite->data[4]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void unref_sub_80781F0(struct Sprite *sprite) { - if (sprite->data[3]) { +void unref_sub_80781F0(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[4], sprite->data[1]); sprite->data[0] += sprite->data[2]; sprite->data[4] += sprite->data[5]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } - if (sprite->data[4] >= 0x100) { + if (sprite->data[4] >= 0x100) sprite->data[4] -= 0x100; - } else if (sprite->data[4] < 0) { + else if (sprite->data[4] < 0) sprite->data[4] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078278(struct Sprite *sprite) { - if (sprite->data[3]) { +void sub_8078278(struct Sprite *sprite) +{ + if (sprite->data[3]) + { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], sprite->data[4]); sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) { + if (sprite->data[0] >= 0x100) sprite->data[0] -= 0x100; - } else if (sprite->data[0] < 0) { + else if (sprite->data[0] < 0) sprite->data[0] += 0x100; - } sprite->data[3]--; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_80782D8(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_80782D8(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) sprite->data[0]--; - } else { + else SetCallbackToStoredInData(sprite); - } } -void sub_80782F8(struct Sprite *sprite) { +void sub_80782F8(struct Sprite *sprite) +{ sub_8078314(sprite); sprite->callback = sub_8078364; sprite->callback(sprite); } -void sub_8078314(struct Sprite *sprite) { +void sub_8078314(struct Sprite *sprite) +{ s16 old; int v1; - if (sprite->data[1] > sprite->data[2]) { + + if (sprite->data[1] > sprite->data[2]) sprite->data[0] = -sprite->data[0]; - } v1 = sprite->data[2] - sprite->data[1]; old = sprite->data[0]; sprite->data[0] = abs(v1 / sprite->data[0]); @@ -529,42 +578,55 @@ void sub_8078314(struct Sprite *sprite) { sprite->data[1] = old; } -void sub_8078364(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078364(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->pos2.x += sprite->data[1]; sprite->pos2.y += sprite->data[2]; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078394(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078394(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; sprite->pos2.x = sprite->data[3] >> 8; sprite->pos2.y = sprite->data[4] >> 8; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_80783D0(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_80783D0(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; sprite->pos2.x = sprite->data[3] >> 8; sprite->pos2.y = sprite->data[4] >> 8; - } else { + } + else + { SetCallbackToStoredInData(sprite); } UpdateMonIconFrame(sprite); } -void unref_sub_8078414(struct Sprite *sprite) { +void unref_sub_8078414(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x + sprite->pos2.x; sprite->data[3] = sprite->pos1.y + sprite->pos2.y; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); @@ -572,51 +634,65 @@ void unref_sub_8078414(struct Sprite *sprite) { sprite->callback = sub_80782F8; } -void sub_8078458(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078458(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; gSprites[sprite->data[3]].pos2.x += sprite->data[1]; gSprites[sprite->data[3]].pos2.y += sprite->data[2]; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_80784A8(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_80784A8(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; gSprites[sprite->data[5]].pos2.x = sprite->data[3] >> 8; gSprites[sprite->data[5]].pos2.y = sprite->data[4] >> 8; - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void sub_8078504(struct Sprite *sprite) { - if (sprite->data[0] > 0) { +void sub_8078504(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { sprite->data[0]--; sprite->pos2.x = sprite->data[2] >> 8; sprite->data[2] += sprite->data[1]; sprite->pos2.y = sprite->data[4] >> 8; sprite->data[4] += sprite->data[3]; - if (sprite->data[0] % sprite->data[5] == 0) { - if (sprite->data[5]) { + if (sprite->data[0] % sprite->data[5] == 0) + { + if (sprite->data[5]) sprite->invisible ^= 1; - } } - } else { + } + else + { SetCallbackToStoredInData(sprite); } } -void move_anim_8074EE0(struct Sprite *sprite) { +void move_anim_8074EE0(struct Sprite *sprite) +{ FreeSpriteOamMatrix(sprite); DestroyAnimSprite(sprite); } -void unref_sub_8078588(struct Sprite *sprite) { +void unref_sub_8078588(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x + sprite->pos2.x; sprite->data[3] = sprite->pos1.y + sprite->pos2.y; sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); @@ -624,57 +700,68 @@ void unref_sub_8078588(struct Sprite *sprite) { sprite->callback = sub_80782F8; } -void unref_sub_80785CC(struct Sprite *sprite) { +void unref_sub_80785CC(struct Sprite *sprite) +{ ResetPaletteStructByUid(sprite->data[5]); move_anim_8074EE0(sprite); } -void sub_80785E4(struct Sprite *sprite) { - if (sprite->affineAnimEnded) { +void sub_80785E4(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) SetCallbackToStoredInData(sprite); - } } -void sub_8078600(struct Sprite *sprite) { - if (sprite->animEnded) { +void sub_8078600(struct Sprite *sprite) +{ + if (sprite->animEnded) SetCallbackToStoredInData(sprite); - } } -void sub_807861C(struct Sprite *sprite) { +void sub_807861C(struct Sprite *sprite) +{ REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroyAnimSprite(sprite); } -void sub_8078634(u8 task) { +void sub_8078634(u8 task) +{ REG_BLDCNT = 0; REG_BLDALPHA = 0; DestroyAnimVisualTask(task); } -void sub_8078650(struct Sprite *sprite) { +void sub_8078650(struct Sprite *sprite) +{ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); } -void sub_807867C(struct Sprite *sprite, s16 a2) { +void sub_807867C(struct Sprite *sprite, s16 a2) +{ u16 v1 = GetBankPosition(gAnimBankAttacker, 0); u16 v2 = GetBankPosition(gAnimBankTarget, 0); - if (v1 > v2) { + + if (v1 > v2) + { sprite->pos1.x -= a2; - } else if (v1 < v2) { + } + else if (v1 < v2) + { sprite->pos1.x += a2; - } else { - if (GetBankSide(gAnimBankAttacker)) { + } + else + { + if (GetBankSide(gAnimBankAttacker) != 0) sprite->pos1.x -= a2; - } else { + else sprite->pos1.x += a2; - } } } -void sub_80786EC(struct Sprite *sprite) { +void sub_80786EC(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; obj_translate_based_on_private_1_2_3_4(sprite); @@ -682,24 +769,27 @@ void sub_80786EC(struct Sprite *sprite) { sprite->data[7] = 0; } -bool8 sub_8078718(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) { +bool8 sub_8078718(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) return TRUE; - } sprite->data[7] += sprite->data[6]; sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]); return FALSE; } -void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { +void oamt_add_pos2_onto_pos1(struct Sprite *sprite) +{ sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.x = 0; sprite->pos2.y = 0; } -void sub_8078764(struct Sprite *sprite, u8 a2) { - if (!a2) { +void sub_8078764(struct Sprite *sprite, u8 a2) +{ + if (!a2) + { sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 0); sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 1); } @@ -707,11 +797,15 @@ void sub_8078764(struct Sprite *sprite, u8 a2) { sprite->pos1.y += gBattleAnimArgs[1]; } -void sub_80787B0(struct Sprite *sprite, u8 a2) { - if (!a2) { +void sub_80787B0(struct Sprite *sprite, u8 a2) +{ + if (!a2) + { sprite->pos1.x = sub_8077EE4(gAnimBankAttacker, 0); sprite->pos1.y = sub_8077EE4(gAnimBankAttacker, 1); - } else { + } + else + { sprite->pos1.x = sub_8077EE4(gAnimBankAttacker, 2); sprite->pos1.y = sub_8077EE4(gAnimBankAttacker, 3); } @@ -719,103 +813,127 @@ void sub_80787B0(struct Sprite *sprite, u8 a2) { sprite->pos1.y += gBattleAnimArgs[1]; } -u8 GetBankSide(u8 slot) { +u8 GetBankSide(u8 slot) +{ return gBanksBySide[slot] & 1; } -u8 GetBankIdentity(u8 slot) { +u8 GetBankIdentity(u8 slot) +{ return gBanksBySide[slot]; } -u8 GetBankByPlayerAI(u8 slot) { +u8 GetBankByPlayerAI(u8 slot) +{ u8 i; - for (i = 0; i < gNoOfAllBanks; i++) { - if (gBanksBySide[i] == slot) { + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBanksBySide[i] == slot) break; - } } return i; } -bool8 IsBankSpritePresent(u8 slot) { - if (IsContest()) { - if (gAnimBankAttacker == slot) { +bool8 IsBankSpritePresent(u8 slot) +{ + if (IsContest()) + { + if (gAnimBankAttacker == slot) return TRUE; - } - if (gAnimBankTarget == slot) { + if (gAnimBankTarget == slot) return TRUE; - } return FALSE; - } else { - if (gBanksBySide[slot] == 0xff) { + } + else + { + if (gBanksBySide[slot] == 0xff) return FALSE; - } - if (GetBankSide(slot)) { - if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) { + if (GetBankSide(slot)) + { + if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) return TRUE; - } - } else { - if (GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) { + } + else + { + if (GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0) return TRUE; - } } return FALSE; } } -bool8 IsDoubleBattle() { +bool8 IsDoubleBattle() +{ return IS_DOUBLE_BATTLE(); } -void sub_8078914(struct Struct_sub_8078914 *unk) { - if (IsContest()) { - unk->field_0 = (u8 *)0x6008000; - unk->field_4 = (u8 *)0x600f000; +void sub_8078914(struct Struct_sub_8078914 *unk) +{ + if (IsContest()) + { + unk->field_0 = (u8 *)(VRAM + 0x8000); + unk->field_4 = (u8 *)(VRAM + 0xf000); unk->field_8 = 0xe; - } else { - unk->field_0 = (u8 *)0x6004000; - unk->field_4 = (u8 *)0x600e000; + } + else + { + unk->field_0 = (u8 *)(VRAM + 0x4000); + unk->field_4 = (u8 *)(VRAM + 0xe000); unk->field_8 = 0x8; } } -void sub_8078954(struct Struct_sub_8078914 *unk) { - if (IsContest()) { - unk->field_0 = (u8 *)0x6008000; - unk->field_4 = (u8 *)0x600f000; +void sub_8078954(struct Struct_sub_8078914 *unk) +{ + if (IsContest()) + { + unk->field_0 = (u8 *)(VRAM + 0x8000); + unk->field_4 = (u8 *)(VRAM + 0xf000); unk->field_8 = 0xe; - } else if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) { - unk->field_0 = (u8 *)0x6004000; - unk->field_4 = (u8 *)0x600e000; + } + else if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) + { + unk->field_0 = (u8 *)(VRAM + 0x4000); + unk->field_4 = (u8 *)(VRAM + 0xe000); unk->field_8 = 0x8; - } else { - unk->field_0 = (u8 *)0x6006000; - unk->field_4 = (u8 *)0x600f000; + } + else + { + unk->field_0 = (u8 *)(VRAM + 0x6000); + unk->field_4 = (u8 *)(VRAM + 0xf000); unk->field_8 = 0x9; } } -u8 sub_80789BC() { - if (IsContest()) { +u8 sub_80789BC() +{ + if (IsContest()) return 1; - } return 2; } -void sub_80789D4(bool8 a1) { - if (!a1) { - BG3CNT.size = 0; - BG3CNT.overflow = 1; - } else if (IsContest()) { - BG3CNT.size = 0; - BG3CNT.overflow = 1; - } else { - BG3CNT.size = 1; - BG3CNT.overflow = 0; +void sub_80789D4(bool8 a1) +{ + if (!a1) + { + BG3CNT.screenSize = 0; + BG3CNT.areaOverflowMode = 1; + } + else if (IsContest()) + { + BG3CNT.screenSize = 0; + BG3CNT.areaOverflowMode = 1; + } + else + { + BG3CNT.screenSize = 1; + BG3CNT.areaOverflowMode = 0; } } -void sub_8078A34(struct Sprite *sprite) { +void sub_8078A34(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078A5C(sprite); @@ -823,7 +941,8 @@ void sub_8078A34(struct Sprite *sprite) { sprite->callback(sprite); } -void sub_8078A5C(struct Sprite *sprite) { +void sub_8078A5C(struct Sprite *sprite) +{ s16 x = (sprite->data[2] - sprite->data[1]) << 8; s16 y = (sprite->data[4] - sprite->data[3]) << 8; sprite->data[1] = x / sprite->data[0]; @@ -832,32 +951,36 @@ void sub_8078A5C(struct Sprite *sprite) { sprite->data[3] = 0; } -void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite) { +void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite) +{ int x = sprite->data[2] - sprite->data[1]; int y = sprite->data[4] - sprite->data[3]; bool8 r8 = x < 0; bool8 r9 = y < 0; u16 x2 = abs(x) << 8; u16 y2 = abs(y) << 8; + x2 = x2 / sprite->data[0]; y2 = y2 / sprite->data[0]; - if (r8) { + + if (r8) x2 |= 1; - } else { + else x2 &= ~1; - } - if (r9) { + + if (r9) y2 |= 1; - } else { + else y2 &= ~1; - } + sprite->data[1] = x2; sprite->data[2] = y2; sprite->data[4] = 0; sprite->data[3] = 0; } -void sub_8078B34(struct Sprite *sprite) { +void sub_8078B34(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; obj_translate_based_on_private_1_2_3_4(sprite); @@ -865,46 +988,51 @@ void sub_8078B34(struct Sprite *sprite) { sprite->callback(sprite); } -bool8 sub_8078B5C(struct Sprite *sprite) { +bool8 sub_8078B5C(struct Sprite *sprite) +{ u16 v1, v2, x, y; - if (!sprite->data[0]) { + + if (!sprite->data[0]) return TRUE; - } + v1 = sprite->data[1]; v2 = sprite->data[2]; x = sprite->data[3]; y = sprite->data[4]; x += v1; y += v2; - if (v1 & 1) { + + if (v1 & 1) sprite->pos2.x = -(x >> 8); - } else { + else sprite->pos2.x = x >> 8; - } - if (v2 & 1) { + + if (v2 & 1) sprite->pos2.y = -(y >> 8); - } else { + else sprite->pos2.y = y >> 8; - } + sprite->data[3] = x; sprite->data[4] = y; sprite->data[0]--; return FALSE; } -void sub_8078BB8(struct Sprite *sprite) { - if (sub_8078B5C(sprite)) { +void sub_8078BB8(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) SetCallbackToStoredInData(sprite); - } } -void sub_8078BD4(struct Sprite *sprite) { +void sub_8078BD4(struct Sprite *sprite) +{ int v1 = abs(sprite->data[2] - sprite->data[1]) << 8; sprite->data[0] = v1 / sprite->data[0]; obj_translate_based_on_private_1_2_3_4(sprite); } -void sub_8078C00(struct Sprite *sprite) { +void sub_8078C00(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078BD4(sprite); @@ -912,32 +1040,36 @@ void sub_8078C00(struct Sprite *sprite) { sprite->callback(sprite); } -void sub_8078C28(struct Sprite *sprite) { +void sub_8078C28(struct Sprite *sprite) +{ int x = sprite->data[2] - sprite->data[1]; int y = sprite->data[4] - sprite->data[3]; bool8 x_sign = x < 0; bool8 y_sign = y < 0; u16 x2 = abs(x) << 4; u16 y2 = abs(y) << 4; + x2 /= sprite->data[0]; y2 /= sprite->data[0]; - if (x_sign) { + + if (x_sign) x2 |= 1; - } else { + else x2 &= ~1; - } - if (y_sign) { + + if (y_sign) y2 |= 1; - } else { + else y2 &= ~1; - } + sprite->data[1] = x2; sprite->data[2] = y2; sprite->data[4] = 0; sprite->data[3] = 0; } -void sub_8078CC0(struct Sprite *sprite) { +void sub_8078CC0(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078C28(sprite); @@ -945,46 +1077,51 @@ void sub_8078CC0(struct Sprite *sprite) { sprite->callback(sprite); } -bool8 sub_8078CE8(struct Sprite *sprite) { +bool8 sub_8078CE8(struct Sprite *sprite) +{ u16 v1, v2, x, y; - if (!sprite->data[0]) { + + if (!sprite->data[0]) return TRUE; - } + v1 = sprite->data[1]; v2 = sprite->data[2]; x = sprite->data[3]; y = sprite->data[4]; x += v1; y += v2; - if (v1 & 1) { + + if (v1 & 1) sprite->pos2.x = -(x >> 4); - } else { + else sprite->pos2.x = x >> 4; - } - if (v2 & 1) { + + if (v2 & 1) sprite->pos2.y = -(y >> 4); - } else { + else sprite->pos2.y = y >> 4; - } + sprite->data[3] = x; sprite->data[4] = y; sprite->data[0]--; return FALSE; } -void sub_8078D44(struct Sprite *sprite) { - if (sub_8078CE8(sprite)) { +void sub_8078D44(struct Sprite *sprite) +{ + if (sub_8078CE8(sprite)) SetCallbackToStoredInData(sprite); - } } -void sub_8078D60(struct Sprite *sprite) { +void sub_8078D60(struct Sprite *sprite) +{ int v1 = abs(sprite->data[2] - sprite->data[1]) << 4; sprite->data[0] = v1 / sprite->data[0]; sub_8078C28(sprite); } -void sub_8078D8C(struct Sprite *sprite) { +void sub_8078D8C(struct Sprite *sprite) +{ sprite->data[1] = sprite->pos1.x; sprite->data[3] = sprite->pos1.y; sub_8078D60(sprite); @@ -992,16 +1129,17 @@ void sub_8078D8C(struct Sprite *sprite) { sprite->callback(sprite); } -void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { +void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) +{ int i; struct ObjAffineSrcData src; struct OamMatrix matrix; + src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (sub_8078E38()) { + if (sub_8078E38()) src.xScale = -src.xScale; - } i = gSprites[sprite].oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); gOamMatrices[i].a = matrix.a; @@ -1010,31 +1148,33 @@ void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { gOamMatrices[i].d = matrix.d; } -bool8 sub_8078E38() { - if (IsContest()) { - if (gSprites[GetAnimBankSpriteId(0)].data[2] == 0xc9 /* XXX SPECIES_UNOWN? */) { +bool8 sub_8078E38() +{ + if (IsContest()) + { + if (gSprites[GetAnimBankSpriteId(0)].data[2] == 0xc9 /* XXX SPECIES_UNOWN? */) return FALSE; - } return TRUE; } return FALSE; } -void sub_8078E70(u8 sprite, u8 a2) { +void sub_8078E70(u8 sprite, u8 a2) +{ u8 r7 = gSprites[sprite].data[0]; - if (IsContest() || IsAnimBankSpriteVisible(r7)) { + + if (IsContest() || IsAnimBankSpriteVisible(r7)) gSprites[sprite].invisible = FALSE; - } gSprites[sprite].oam.objMode = a2; gSprites[sprite].affineAnimPaused = TRUE; - if (!IsContest() && !gSprites[sprite].oam.affineMode) { + if (!IsContest() && !gSprites[sprite].oam.affineMode) gSprites[sprite].oam.matrixNum = ewram17810[r7].unk6; - } gSprites[sprite].oam.affineMode = 3; CalcCenterToCornerVec(&gSprites[sprite], gSprites[sprite].oam.shape, gSprites[sprite].oam.size, gSprites[sprite].oam.affineMode); } -void sub_8078F40(u8 sprite) { +void sub_8078F40(u8 sprite) +{ obj_id_set_rotscale(sprite, 0x100, 0x100, 0); gSprites[sprite].oam.affineMode = 1; gSprites[sprite].oam.objMode = 0; @@ -1042,31 +1182,33 @@ void sub_8078F40(u8 sprite) { CalcCenterToCornerVec(&gSprites[sprite], gSprites[sprite].oam.shape, gSprites[sprite].oam.size, gSprites[sprite].oam.affineMode); } -void sub_8078F9C(u8 sprite) { +void sub_8078F9C(u8 sprite) +{ u16 matrix = gSprites[sprite].oam.matrixNum; s16 c = gOamMatrices[matrix].c; - if (c < 0) { + + if (c < 0) c = -c; - } gSprites[sprite].pos2.y = c >> 3; } // related to obj_id_set_rotscale -void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation) { +void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation) +{ int i; struct ObjAffineSrcData src; struct OamMatrix matrix; - if (sprite->oam.affineMode & 1) { + + if (sprite->oam.affineMode & 1) + { sprite->affineAnimPaused = TRUE; - if (a2) { + if (a2) CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); - } src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (sub_8078E38()) { + if (sub_8078E38()) src.xScale = -src.xScale; - } i = sprite->oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); gOamMatrices[i].a = matrix.a; @@ -1076,56 +1218,67 @@ void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 ro } } -void sub_8079098(struct Sprite *sprite) { +void sub_8079098(struct Sprite *sprite) +{ sub_8078FDC(sprite, TRUE, 0x100, 0x100, 0); sprite->affineAnimPaused = FALSE; CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -static u16 ArcTan2_(s16 a, s16 b) { +static u16 ArcTan2_(s16 a, s16 b) +{ return ArcTan2(a, b); } -u16 sub_80790F0(s16 a, s16 b) { +u16 sub_80790F0(s16 a, s16 b) +{ u16 var = ArcTan2_(a, b); return -var; } -void sub_8079108(u16 a1, bool8 a2) { +void sub_8079108(u16 a1, bool8 a2) +{ int i; - struct Color *c; - struct Color *c2; + struct PlttData *c; + struct PlttData *c2; u16 average; a1 *= 0x10; - if (!a2) { - for (i = 0; i < 0x10; i++) { - c = (struct Color *)&gPlttBufferUnfaded[a1 + i]; + if (!a2) + { + for (i = 0; i < 0x10; i++) + { + c = (struct PlttData *)&gPlttBufferUnfaded[a1 + i]; average = c->r + c->g + c->b; average /= 3; - c2 = (struct Color *)&gPlttBufferFaded[a1 + i]; + c2 = (struct PlttData *)&gPlttBufferFaded[a1 + i]; c2->r = average; c2->g = average; c2->b = average; } - } else { + } + else + { CpuCopy32(&gPlttBufferUnfaded[a1], &gPlttBufferFaded[a1], 0x20); } } -u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { +u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ u32 var = 0; u32 shift; - if (a1) { - if (!IsContest()) { + + if (a1) + { + if (!IsContest()) var = 0xe; - } else { + else var = 1 << sub_80789BC(); - } } - if (a2) { + if (a2) + { shift = gAnimBankAttacker + 16; var |= 1 << shift; } @@ -1133,61 +1286,77 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { shift = gAnimBankTarget + 16; var |= 1 << shift; } - if (a4) { - if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { + if (a4) + { + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) + { shift = (gAnimBankAttacker ^ 2) + 16; var |= 1 << shift; } } - if (a5) { - if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { + if (a5) + { + if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) + { shift = (gAnimBankTarget ^ 2) + 16; var |= 1 << shift; } } - if (a6) { - if (!IsContest()) { + if (a6) + { + if (!IsContest()) var |= 0x100; - } else { + else var |= 0x4000; - } } - if (a7) { - if (!IsContest()) { + if (a7) + { + if (!IsContest()) var |= 0x200; - } } return var; } -u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { +u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) +{ u32 var = 0; u32 shift; - if (IsContest()) { - if (a1) { + + if (IsContest()) + { + if (a1) + { var |= 1 << 18; return var; } - } else { - if (a1) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) { + } + else + { + if (a1) + { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) var |= 1 << (GetBankByPlayerAI(0) + 16); - } } - if (a2) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) { + if (a2) + { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) + { shift = GetBankByPlayerAI(2) + 16; var |= 1 << shift; } } - if (a3) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) { + if (a3) + { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) + { shift = GetBankByPlayerAI(1) + 16; var |= 1 << shift; } } - if (a4) { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) { + if (a4) + { + if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) + { shift = GetBankByPlayerAI(3) + 16; var |= 1 << shift; } @@ -1196,51 +1365,57 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { return var; } -u8 sub_80793A8(u8 a1) { +u8 sub_80793A8(u8 a1) +{ return a1; } -u8 unref_sub_80793B0(u8 a1) { +u8 unref_sub_80793B0(u8 a1) +{ return GetBankByPlayerAI(a1); } -void sub_80793C4(struct Sprite *sprite) { +void sub_80793C4(struct Sprite *sprite) +{ bool8 var; - if (!sprite->data[0]) { - if (!gBattleAnimArgs[3]) { + + if (!sprite->data[0]) + { + if (!gBattleAnimArgs[3]) var = TRUE; - } else { + else var = FALSE; - } - if (!gBattleAnimArgs[2]) { + if (!gBattleAnimArgs[2]) sub_80787B0(sprite, var); - } else { + else sub_8078764(sprite, var); - } sprite->data[0]++; - } else if (sprite->animEnded || sprite->affineAnimEnded) { + } + else if (sprite->animEnded || sprite->affineAnimEnded) + { move_anim_8074EE0(sprite); } } -void sub_807941C(struct Sprite *sprite) { +void sub_807941C(struct Sprite *sprite) +{ bool8 v1; u8 v2; - if (!(gBattleAnimArgs[5] & 0xff00)) { + + if (!(gBattleAnimArgs[5] & 0xff00)) v1 = TRUE; - } else { + else v1 = FALSE; - } - if (!(gBattleAnimArgs[5] & 0xff)) { + + if (!(gBattleAnimArgs[5] & 0xff)) v2 = 3; - } else { + else v2 = 1; - } + sub_80787B0(sprite, v1); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, v2) + gBattleAnimArgs[3]; @@ -1248,11 +1423,11 @@ void sub_807941C(struct Sprite *sprite) { StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80794A8(struct Sprite *sprite) { +void sub_80794A8(struct Sprite *sprite) +{ sub_80787B0(sprite, 1); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; @@ -1261,31 +1436,38 @@ void sub_80794A8(struct Sprite *sprite) { sprite->callback = sub_8079518; } -void sub_8079518(struct Sprite *sprite) { - if (sub_8078718(sprite)) { +void sub_8079518(struct Sprite *sprite) +{ + if (sub_8078718(sprite)) DestroyAnimSprite(sprite); - } } -void sub_8079534(struct Sprite *sprite) { +void sub_8079534(struct Sprite *sprite) +{ u8 r4, slot, r7; - if (!gBattleAnimArgs[6]) { + + if (!gBattleAnimArgs[6]) + { r4 = 1; r7 = 3; - } else { + } + else + { r4 = 0; r7 = 1; } - if (!gBattleAnimArgs[5]) { + if (!gBattleAnimArgs[5]) + { sub_80787B0(sprite, r4); slot = gAnimBankAttacker; - } else { + } + else + { sub_8078764(sprite, r4); slot = gAnimBankTarget; } - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - } sub_8078764(sprite, r4); sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = GetBankPosition(slot, 2) + gBattleAnimArgs[2]; @@ -1294,43 +1476,47 @@ void sub_8079534(struct Sprite *sprite) { StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) { +s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1) +{ u16 i; u8 sprite = GetAnimBankSpriteId(a1); - if (sprite != 0xff) { - for (i = 0; i < 0x40; i++) { - if (gSprites[i].inUse) { - continue; + + if (sprite != 0xff) + { + for (i = 0; i < 0x40; i++) + { + if (!gSprites[i].inUse) + { + gSprites[i] = gSprites[sprite]; + gSprites[i].oam.objMode = 1; + gSprites[i].invisible = FALSE; + return i; } - gSprites[i] = gSprites[sprite]; - gSprites[i].oam.objMode = 1; - gSprites[i].invisible = FALSE; - return i; } } return -1; } -void obj_delete_but_dont_free_vram(struct Sprite *sprite) { +void obj_delete_but_dont_free_vram(struct Sprite *sprite) +{ sprite->usingSheet = TRUE; DestroySprite(sprite); } -void sub_8079670(u8 task) { +void sub_8079670(u8 task) +{ s16 v1 = 0; s16 v2 = 0; - if (gBattleAnimArgs[2] > gBattleAnimArgs[0]) { + + if (gBattleAnimArgs[2] > gBattleAnimArgs[0]) v2 = 1; - } - if (gBattleAnimArgs[2] < gBattleAnimArgs[0]) { + if (gBattleAnimArgs[2] < gBattleAnimArgs[0]) v2 = -1; - } - if (gBattleAnimArgs[3] > gBattleAnimArgs[1]) { + if (gBattleAnimArgs[3] > gBattleAnimArgs[1]) v1 = 1; - } - if (gBattleAnimArgs[3] < gBattleAnimArgs[1]) { + if (gBattleAnimArgs[3] < gBattleAnimArgs[1]) v1 = -1; - } + gTasks[task].data[0] = 0; gTasks[task].data[1] = gBattleAnimArgs[4]; gTasks[task].data[2] = 0; @@ -1344,30 +1530,38 @@ void sub_8079670(u8 task) { gTasks[task].func = sub_80796F8; } -void sub_80796F8(u8 taskId) { +void sub_80796F8(u8 taskId) +{ struct Task *task = &gTasks[taskId]; - if (++task->data[0] > task->data[1]) { + + if (++task->data[0] > task->data[1]) + { task->data[0] = 0; - if (++task->data[2] & 1) { - if (task->data[3] != task->data[7]) { + if (++task->data[2] & 1) + { + if (task->data[3] != task->data[7]) task->data[3] += task->data[5]; - } - } else { - if (task->data[4] != task->data[8]) { + } + else + { + if (task->data[4] != task->data[8]) task->data[4] += task->data[6]; - } } REG_BLDALPHA = (task->data[4] << 8) | task->data[3]; - if (task->data[3] == task->data[7] && task->data[4] == task->data[8]) { + if (task->data[3] == task->data[7] && task->data[4] == task->data[8]) + { DestroyAnimVisualTask(taskId); return; } } } -void sub_8079790(u8 task) { +void sub_8079790(u8 task) +{ u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]); - if (sprite == 0xff) { + + if (sprite == 0xff) + { DestroyAnimVisualTask(task); return; } @@ -1375,7 +1569,8 @@ void sub_8079790(u8 task) { sub_80797EC(&gTasks[task]); } -void sub_80797EC(struct Task *task) { +void sub_80797EC(struct Task *task) +{ task->data[1] = gBattleAnimArgs[1]; task->data[2] = 0; task->data[3] = gBattleAnimArgs[2]; @@ -1386,24 +1581,33 @@ void sub_80797EC(struct Task *task) { task->func = sub_8079814; } -void sub_8079814(u8 taskId) { +void sub_8079814(u8 taskId) +{ struct Task *task = &gTasks[taskId]; - if (++task->data[4] >= task->data[5]) { + + if (++task->data[4] >= task->data[5]) + { task->data[4] = 0; - if (!task->data[6]) { + if (!task->data[6]) + { task->data[2]++; BlendPalette(task->data[0], 0xf, task->data[2], task->data[1]); - if (task->data[2] == task->data[3]) { + if (task->data[2] == task->data[3]) task->data[6] = 1; - } - } else { + } + else + { task->data[2]--; BlendPalette(task->data[0], 0xf, task->data[2], task->data[1]); - if (!task->data[2]) { - if (--task->data[7]) { + if (!task->data[2]) + { + if (--task->data[7]) + { task->data[4] = 0; task->data[6] = 0; - } else { + } + else + { DestroyAnimVisualTask(taskId); return; } @@ -1412,9 +1616,12 @@ void sub_8079814(u8 taskId) { } } -void sub_80798AC(u8 task) { +void sub_80798AC(u8 task) +{ u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); - if (palette == 0xff) { + + if (palette == 0xff) + { DestroyAnimVisualTask(task); return; } @@ -1422,7 +1629,8 @@ void sub_80798AC(u8 task) { sub_80797EC(&gTasks[task]); } -void sub_80798F4(struct Task *task, u8 a2, const void *a3) { +void sub_80798F4(struct Task *task, u8 a2, const void *a3) +{ task->data[7] = 0; task->data[8] = 0; task->data[9] = 0; @@ -1434,11 +1642,14 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3) { sub_8078E70(a2, 0); } -bool8 sub_807992C(struct Task *task) { +bool8 sub_807992C(struct Task *task) +{ gUnknown_0202F7D4 = sub_8079BFC(task->data[13], task->data[14]) + (task->data[7] << 3); - switch (gUnknown_0202F7D4->type) { + switch (gUnknown_0202F7D4->type) + { default: - if (!gUnknown_0202F7D4->frame.duration) { + if (!gUnknown_0202F7D4->frame.duration) + { task->data[10] = gUnknown_0202F7D4->frame.xScale; task->data[11] = gUnknown_0202F7D4->frame.yScale; task->data[12] = gUnknown_0202F7D4->frame.rotation; @@ -1450,44 +1661,49 @@ bool8 sub_807992C(struct Task *task) { task->data[12] += gUnknown_0202F7D4->frame.rotation; obj_id_set_rotscale(task->data[15], task->data[10], task->data[11], task->data[12]); sub_8079A64(task->data[15]); - if (++task->data[8] >= gUnknown_0202F7D4->frame.duration) { + if (++task->data[8] >= gUnknown_0202F7D4->frame.duration) + { task->data[8] = 0; task->data[7]++; } break; - case AFFINEANIMCMDTYPE_JUMP: task->data[7] = gUnknown_0202F7D4->jump.target; break; - case AFFINEANIMCMDTYPE_LOOP: - if (gUnknown_0202F7D4->loop.count) { - if (task->data[9]) { - if (!--task->data[9]) { + if (gUnknown_0202F7D4->loop.count) + { + if (task->data[9]) + { + if (!--task->data[9]) + { task->data[7]++; break; } - } else { + } + else + { task->data[9] = gUnknown_0202F7D4->loop.count; } - if (!task->data[7]) { + if (!task->data[7]) + { break; } - for (;;) { + for (;;) + { task->data[7]--; gUnknown_0202F7D4--; - if (gUnknown_0202F7D4->type == AFFINEANIMCMDTYPE_LOOP) { + if (gUnknown_0202F7D4->type == AFFINEANIMCMDTYPE_LOOP) + { task->data[7]++; return TRUE; } - if (!task->data[7]) { + if (!task->data[7]) return TRUE; - } } } task->data[7]++; break; - case 0x7fff: gSprites[task->data[15]].pos2.y = 0; sub_8078F40(task->data[15]); @@ -1497,52 +1713,62 @@ bool8 sub_807992C(struct Task *task) { return TRUE; } -void sub_8079A64(u8 sprite) { +void sub_8079A64(u8 sprite) +{ int var = 0x40 - sub_8079B10(sprite) * 2; u16 matrix = gSprites[sprite].oam.matrixNum; int var2 = (var << 8) / gOamMatrices[matrix].d; - if (var2 > 0x80) { + + if (var2 > 0x80) var2 = 0x80; - } gSprites[sprite].pos2.y = (var - var2) / 2; } -void sub_8079AB8(u8 sprite, u8 sprite2) { +void sub_8079AB8(u8 sprite, u8 sprite2) +{ int var = 0x40 - sub_8079B10(sprite2) * 2; u16 matrix = gSprites[sprite].oam.matrixNum; int var2 = (var << 8) / gOamMatrices[matrix].d; - if (var2 > 0x80) { + + if (var2 > 0x80) var2 = 0x80; - } gSprites[sprite].pos2.y = (var - var2) / 2; } -u16 sub_8079B10(u8 sprite) { +u16 sub_8079B10(u8 sprite) +{ struct TransformStatus *transform; u8 slot = gSprites[sprite].data[0]; u16 species; u16 i; - for (i = 0; i < (sizeof(gBattleMonSprites) / sizeof(u8)); i++) { - if (gBattleMonSprites[i] == sprite) { - if (IsContest()) { - species = ewram19348.unk0; + + for (i = 0; i < (sizeof(gBattleMonSprites) / sizeof(u8)); i++) + { + if (gBattleMonSprites[i] == sprite) + { + if (IsContest()) + { + species = shared19348.unk0; return gMonBackPicCoords[species].y_offset; - } else { - if (!GetBankSide(i)) { + } + else + { + if (!GetBankSide(i)) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[i]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } return gMonBackPicCoords[species].y_offset; - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[i]], MON_DATA_SPECIES); - } else { + else species = transform->species; - } return gMonFrontPicCoords[species].y_offset; } } @@ -1551,19 +1777,22 @@ u16 sub_8079B10(u8 sprite) { return 0x40; } -void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr) { +void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr) +{ *bottom = ((intptr_t) ptr) & 0xffff; *top = (((intptr_t) ptr) >> 16) & 0xffff; } -void *sub_8079BFC(s16 bottom, s16 top) { +void *sub_8079BFC(s16 bottom, s16 top) +{ return (void *)((u16)bottom | ((u16)top << 16)); } // possible new file -void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) { +void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7) +{ task->data[8] = a7; task->data[15] = a2; // spriteId task->data[9] = a3; @@ -1574,124 +1803,133 @@ void sub_8079C08(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a task->data[12] = (a6 - a4) / a7; } -u8 sub_8079C74(struct Task *task) { - if (!task->data[8]) { +u8 sub_8079C74(struct Task *task) +{ + if (!task->data[8]) return 0; - } - if (--task->data[8]) { + + if (--task->data[8] != 0) + { task->data[9] += task->data[11]; task->data[10] += task->data[12]; - } else { + } + else + { task->data[9] = task->data[13]; task->data[10] = task->data[14]; } obj_id_set_rotscale(task->data[15], task->data[9], task->data[10], 0); - if (task->data[8]) { + if (task->data[8]) sub_8079A64(task->data[15]); - } else { + else gSprites[task->data[15]].pos2.y = 0; - } return task->data[8]; } -void sub_8079CEC(u8 task) { +void sub_8079CEC(u8 task) +{ u16 v1; - if (gAnimFriendship <= 30) { + + if (gAnimFriendship <= 30) v1 = 0; - } else if (gAnimFriendship <= 100) { + else if (gAnimFriendship <= 100) v1 = 1; - } else if (gAnimFriendship <= 200) { + else if (gAnimFriendship <= 200) v1 = 2; - } else { + else v1 = 3; - } gBattleAnimArgs[7] = v1; DestroyAnimVisualTask(task); } -void unref_sub_8079D20(u8 priority) { - if (IsAnimBankSpriteVisible(gAnimBankTarget)) { +void unref_sub_8079D20(u8 priority) +{ + if (IsAnimBankSpriteVisible(gAnimBankTarget)) gSprites[gBattleMonSprites[gAnimBankTarget]].oam.priority = priority; - } - if (IsAnimBankSpriteVisible(gAnimBankAttacker)) { + if (IsAnimBankSpriteVisible(gAnimBankAttacker)) gSprites[gBattleMonSprites[gAnimBankAttacker]].oam.priority = priority; - } - if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) { + if (IsAnimBankSpriteVisible(gAnimBankTarget ^ 2)) gSprites[gBattleMonSprites[gAnimBankTarget ^ 2]].oam.priority = priority; - } - if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) gSprites[gBattleMonSprites[gAnimBankAttacker ^ 2]].oam.priority = priority; - } } -void sub_8079E24() { +void sub_8079E24() +{ int i; - for (i = 0; i < gNoOfAllBanks; i++) { - if (IsAnimBankSpriteVisible(i)) { + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (IsAnimBankSpriteVisible(i)) + { gSprites[gBattleMonSprites[i]].subpriority = sub_8079E90(i); gSprites[gBattleMonSprites[i]].oam.priority = 2; } } } -u8 sub_8079E90(u8 slot) { +u8 sub_8079E90(u8 slot) +{ u8 status; u8 ret; - if (IsContest()) { - if (slot == 2) { + + if (IsContest()) + { + if (slot == 2) return 30; - } else { + else return 40; - } - } else { + } + else + { status = GetBankIdentity(slot); - if (status == 0) { + if (status == 0) ret = 30; - } else if (status == 2) { + else if (status == 2) ret = 20; - } else if (status == 1) { + else if (status == 1) ret = 40; - } else { + else ret = 50; - } } return ret; } -u8 sub_8079ED4(u8 slot) { +u8 sub_8079ED4(u8 slot) +{ u8 status = GetBankIdentity(slot); - if (IsContest()) { + + if (IsContest()) return 2; - } - if (status == 0 || status == 3) { + if (status == 0 || status == 3) return BG2CNT.priority; - } else { + else return BG1CNT.priority; - } } -u8 GetBankIdentity_permutated(u8 slot) { +u8 GetBankIdentity_permutated(u8 slot) +{ u8 status; - if (!IsContest()) { + + if (!IsContest()) + { status = GetBankIdentity(slot); - if (status == 0 || status == 3) { + if (status == 0 || status == 3) return 2; - } else { + else return 1; - } } return 1; } -u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8) { - void *src; - void *dest; - int size; - +u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, u32 a8) +{ u8 sprite; u16 sheet = LoadSpriteSheet(&gUnknown_0837F5E0[a3]); u16 palette = AllocSpritePalette(gSpriteTemplate_837F5B0[a3].paletteTag); - if (!isBackpic) { + + if (!isBackpic) + { LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonFrontPicTable[species], @@ -1703,9 +1941,10 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, a7, 1 ); - } else { - LoadCompressedPalette( - GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); + } + else + { + LoadCompressedPalette(GetMonSpritePalFromOtIdPersonality(species, a8, a7), (palette * 0x10) + 0x100, 0x20); LoadSpecialPokePic( &gMonBackPicTable[species], gMonBackPicCoords[species].coords, @@ -1718,28 +1957,28 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, ); } - src = (void *)0x2000000; - dest = (void *)(0x6010000 + (sheet * 0x20)); - size = 0x800; - DmaCopy32(3, src, dest, size); + DmaCopy32Defvars(3, (void *)0x2000000, (void *)(VRAM + 0x10000 + (sheet * 0x20)), 0x800); - if (!isBackpic) { + if (!isBackpic) sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonFrontPicCoords[species].y_offset, a6); - } else { + else sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonBackPicCoords[species].y_offset, a6); - } - if (IsContest()) { + + if (IsContest()) + { gSprites[sprite].affineAnims = gSpriteAffineAnimTable_81E7C18; StartSpriteAffineAnim(&gSprites[sprite], 0); } return sprite; } -void sub_807A0F4(struct Sprite *sprite) { +void sub_807A0F4(struct Sprite *sprite) +{ DestroySpriteAndFreeResources(sprite); } -int sub_807A100(u8 slot, u8 a2) { +int sub_807A100(u8 slot, u8 a2) +{ u16 species; u32 personality; u16 letter; @@ -1747,80 +1986,113 @@ int sub_807A100(u8 slot, u8 a2) { int ret; const struct MonCoords *coords; struct TransformStatus *transform; - if (IsContest()) { - if (ewram19348.unk4 & 1) { - species = ewram19348.unk2; - personality = ewram19348.unk10; - } else { - species = ewram19348.unk0; - personality = ewram19348.unk8; + + if (IsContest()) + { + if (shared19348.unk4_0) + { + species = shared19348.unk2; + personality = shared19348.unk10; + } + else + { + species = shared19348.unk0; + personality = shared19348.unk8; } - if (species == SPECIES_UNOWN) { + if (species == SPECIES_UNOWN) + { letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = SPECIES_UNOWN; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } coords = &gMonBackPicCoords[var]; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { coords = &gCastformFrontSpriteCoords[gBattleMonForms[slot]]; - } else if (species <= SPECIES_EGG) { + } + else if (species <= SPECIES_EGG) + { coords = &gMonBackPicCoords[species]; - } else { + } + else + { coords = &gMonBackPicCoords[0]; } - } else { - if (!GetBankSide(slot)) { + } + else + { + if (!GetBankSide(slot)) + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) + { species = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); personality = GetMonData(&gPlayerParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + } + else + { species = transform->species; personality = gTransformPersonalities[slot]; } - if (species == SPECIES_UNOWN) { + if (species == SPECIES_UNOWN) + { letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = SPECIES_UNOWN; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } coords = &gMonBackPicCoords[var]; - } else if (species > SPECIES_EGG) { + } + else if (species > SPECIES_EGG) + { coords = &gMonBackPicCoords[0]; - } else { + } + else + { coords = &gMonBackPicCoords[species]; } - } else { + } + else + { transform = &eTransformStatuses[slot]; - if (!transform->species) { + if (!transform->species) + { species = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_SPECIES); personality = GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_PERSONALITY); - } else { + } + else + { species = transform->species; personality = gTransformPersonalities[slot]; } - if (species == SPECIES_UNOWN) { + if (species == SPECIES_UNOWN) + { letter = GET_UNOWN_LETTER(personality); - if (!letter) { + if (!letter) var = SPECIES_UNOWN; - } else { + else var = letter + SPECIES_UNOWN_B - 1; - } coords = &gMonFrontPicCoords[var]; - } else if (species == SPECIES_CASTFORM) { + } + else if (species == SPECIES_CASTFORM) + { coords = &gCastformFrontSpriteCoords[gBattleMonForms[slot]]; - } else if (species > SPECIES_EGG) { + } + else if (species > SPECIES_EGG) + { coords = &gMonFrontPicCoords[0]; - } else { + } + else + { coords = &gMonFrontPicCoords[species]; } } } - switch (a2) { + switch (a2) + { case 0: return (coords->coords & 0xf) * 8; case 1: @@ -1841,23 +2113,31 @@ int sub_807A100(u8 slot, u8 a2) { } } -void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { +void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) +{ u8 v1, v2; s16 v3, v4; s16 v5, v6; - if (!a2) { + + if (!a2) + { v1 = 0; v2 = 1; - } else { + } + else + { v1 = 2; v2 = 3; } v3 = GetBankPosition(slot, v1); v4 = GetBankPosition(slot, v2); - if (IsDoubleBattle() && !IsContest()) { + if (IsDoubleBattle() && !IsContest()) + { v5 = GetBankPosition(slot ^ 2, v1); v6 = GetBankPosition(slot ^ 2, v2); - } else { + } + else + { v5 = v3; v6 = v4; } @@ -1865,7 +2145,8 @@ void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { *a4 = (v4 + v6) / 2; } -u8 sub_807A4A0(int a1, u8 sprite, int a3) { +u8 sub_807A4A0(int a1, u8 sprite, int a3) +{ u8 new_sprite = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); gSprites[new_sprite] = gSprites[sprite]; gSprites[new_sprite].usingSheet = TRUE; @@ -1876,13 +2157,17 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) { return new_sprite; } -void sub_807A544(struct Sprite *sprite) { +void sub_807A544(struct Sprite *sprite) +{ sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; sprite->hFlip = TRUE; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; @@ -1894,11 +2179,15 @@ void sub_807A544(struct Sprite *sprite) { sprite->callback = sub_8078504; } -void sub_807A5C4(struct Sprite *sprite) { - if (GetBankSide(gAnimBankAttacker)) { +void sub_807A5C4(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker)) + { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; - } else { + } + else + { sprite->pos1.x += gBattleAnimArgs[0]; } sprite->pos1.y += gBattleAnimArgs[1]; @@ -1911,19 +2200,20 @@ void sub_807A5C4(struct Sprite *sprite) { sprite->callback = sub_8078504; } -void sub_807A63C(struct Sprite *sprite) { +void sub_807A63C(struct Sprite *sprite) +{ sub_8078650(sprite); - if (GetBankSide(gAnimBankAttacker)) { + if (GetBankSide(gAnimBankAttacker)) sprite->pos1.x -= gBattleAnimArgs[0]; - } else { + else sprite->pos1.x += gBattleAnimArgs[0]; - } sprite->pos1.y += gBattleAnimArgs[1]; sprite->callback = sub_8078600; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_807A69C(u8 taskId) { +void sub_807A69C(u8 taskId) +{ u16 src; u16 dest; struct Task *task = &gTasks[taskId]; @@ -1938,23 +2228,25 @@ void sub_807A69C(u8 taskId) { dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; task->data[6] = sub_8079E90(gAnimBankAttacker); - if (task->data[6] == 20 || task->data[6] == 40) { + if (task->data[6] == 20 || task->data[6] == 40) task->data[6] = 2; - } else { + else task->data[6] = 3; - } CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); BlendPalette(dest, 0x10, gBattleAnimArgs[1], gBattleAnimArgs[0]); task->func = sub_807A784; } -void sub_807A784(u8 taskId) { +void sub_807A784(u8 taskId) +{ struct Task *task = &gTasks[taskId]; - switch (task->data[2]) { + switch (task->data[2]) + { case 0: sub_807A850(task, taskId); gSprites[task->data[0]].pos2.x += task->data[1]; - if (++task->data[3] == 5) { + if (++task->data[3] == 5) + { task->data[3]--; task->data[2]++; } @@ -1962,13 +2254,15 @@ void sub_807A784(u8 taskId) { case 1: sub_807A850(task, taskId); gSprites[task->data[0]].pos2.x -= task->data[1]; - if (--task->data[3] == 0) { + if (--task->data[3] == 0) + { gSprites[task->data[0]].pos2.x = 0; task->data[2]++; } break; case 2: - if (!task->data[5]) { + if (!task->data[5]) + { FreeSpritePaletteByTag(10097); DestroyAnimVisualTask(taskId); } @@ -1976,9 +2270,11 @@ void sub_807A784(u8 taskId) { } } -void sub_807A850(struct Task *task, u8 taskId) { +void sub_807A850(struct Task *task, u8 taskId) +{ s16 sprite = duplicate_obj_of_side_rel2move_in_transparent_mode(0); - if (sprite >= 0) { + if (sprite >= 0) + { gSprites[sprite].oam.priority = task->data[6]; gSprites[sprite].oam.paletteNum = task->data[4]; gSprites[sprite].data[0] = 8; @@ -1990,8 +2286,10 @@ void sub_807A850(struct Task *task, u8 taskId) { } } -void sub_807A8D4(struct Sprite *sprite) { - if (--sprite->data[0] == 0) { +void sub_807A8D4(struct Sprite *sprite) +{ + if (--sprite->data[0] == 0) + { gTasks[sprite->data[1]].data[5]--; obj_delete_but_dont_free_vram(sprite); } @@ -2000,38 +2298,40 @@ void sub_807A8D4(struct Sprite *sprite) { void sub_807A908(struct Sprite *sprite) { sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); - if (!GetBankSide(gAnimBankAttacker)) { + if (!GetBankSide(gAnimBankAttacker)) sprite->data[0] = 5; - } else { + else sprite->data[0] = -10; - } sprite->data[1] = -40; sprite->callback = sub_807A960; } -void sub_807A960(struct Sprite *sprite) { +void sub_807A960(struct Sprite *sprite) +{ sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; sprite->pos2.x = sprite->data[2] / 10; sprite->pos2.y = sprite->data[3] / 10; - if (sprite->data[1] < -20) { + if (sprite->data[1] < -20) sprite->data[1]++; - } - if ((sprite->pos1.y + sprite->pos2.y) < -32) { + if (sprite->pos1.y + sprite->pos2.y < -32) DestroyAnimSprite(sprite); - } } -void sub_807A9BC(struct Sprite *sprite) { +void sub_807A9BC(struct Sprite *sprite) +{ int x; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[4]; sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[5]; - if (!GetBankSide(gAnimBankTarget)) { + if (!GetBankSide(gAnimBankTarget)) + { x = (u16)gBattleAnimArgs[4] + 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 20; - } else { + } + else + { x = (u16)gBattleAnimArgs[4] - 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 80; -- cgit v1.2.3 From d19de32aba198ac2e5691cab088b3d84cd390b39 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 15:16:51 -0500 Subject: through Task_PokemonStorageSystem --- src/pokemon/pokemon_storage_system.c | 124 ++++++++++++++++++++++++++++++++++- 1 file changed, 123 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 745a27bf6..a5a3bdcd8 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -1,17 +1,32 @@ #include "global.h" -#include "pokemon_storage_system.h" +#include "palette.h" +#include "field_weather.h" #include "menu.h" +#include "main.h" +#include "strings.h" #include "string_util.h" #include "event_data.h" #include "ewram.h" +#include "script.h" +#include "pokemon_storage_system.h" struct StorageAction { u8 *text; u8 format; }; +struct ReverseMenuAction { + u32 unk0; + u8 *text; +}; + +void StorageSystemCreatePrimaryMenu(u8 whichMenu); +void task_intro_29(u8 whichMenu); + extern const struct StorageAction gUnknown_083B6DF4[]; +extern const struct ReverseMenuAction gUnknown_083B600C[]; + EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; u8 sub_8095ADC(u8 boxId) @@ -281,6 +296,113 @@ s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx return -1; } +void StorageSystemClearMessageWindow(void) +{ + MenuFillWindowRectWithBlankTile(2, 15, 27, 18); +} + +void Task_PokemonStorageSystem(u8 taskId) +{ + struct Task *task = gTasks + taskId; + switch (task->data[0]) + { + case 0: + StorageSystemCreatePrimaryMenu(task->data[1]); + MenuDisplayMessageBox(); + MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + task->data[0]++; + break; + case 1: + if (sub_807D770()) + { + task->data[0]++; + } + break; + case 2: + task->data[2] = ProcessMenuInput(); + switch(task->data[2]) + { + case -2: + task->data[3] = task->data[1]; + if (gMain.newKeys & DPAD_UP && --task->data[3] < 0) + task->data[3] = 3; + + if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 3) + task->data[3] = 0; + if (task->data[1] != task->data[3]) + { + task->data[1] = task->data[3]; + StorageSystemClearMessageWindow(); + MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + } + break; + case -1: + case 3: + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 13, 9); + ScriptContext2_Disable(); + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + default: + if (task->data[2] == 0 && StorageSystemGetPartySize() == PARTY_SIZE) + { + StorageSystemClearMessageWindow(); + MenuPrint(gPCText_PartyFull2, 2, 15); + task->data[0] = 3; + } + else if (task->data[2] == 1 && StorageSystemGetPartySize() == 1) + { + StorageSystemClearMessageWindow(); + MenuPrint(gPCText_OnlyOne, 2, 15); + task->data[0] = 3; + } + else + { + fade_screen(1, 0); + task->data[0] = 4; + } + break; + } + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + StorageSystemClearMessageWindow(); + MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + task->data[0] = 2; + } + else if (gMain.newKeys & DPAD_UP) + { + if (--task->data[1] < 0) + task->data[1] = 3; + MoveMenuCursor(-1); + task->data[1] = GetMenuCursorPos(); + StorageSystemClearMessageWindow(); + MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + task->data[0] = 2; + } + else if (gMain.newKeys & DPAD_DOWN) + { + if (++task->data[1] > 3) + task->data[1] = 0; + MoveMenuCursor(1); + task->data[1] = GetMenuCursorPos(); + StorageSystemClearMessageWindow(); + MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + task->data[0] = 2; + } + break; + case 4: + if (!gPaletteFade.active) + { + task_intro_29(task->data[2]); + DestroyTask(taskId); + } + break; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 666654ff6dcec5916a7eac8425a5ddaae3be1a0e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 16:04:53 -0500 Subject: through ResetPokemonStorageSystem --- src/pokemon/pokemon_storage_system.c | 65 +++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index a5a3bdcd8..8f0753a2d 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -1,6 +1,8 @@ #include "global.h" #include "palette.h" #include "field_weather.h" +#include "overworld.h" +#include "field_fadetransition.h" #include "menu.h" #include "main.h" #include "strings.h" @@ -20,14 +22,21 @@ struct ReverseMenuAction { u8 *text; }; +struct PokemonStorageSystemData { + u8 filler_0000[5]; + u8 unk_0005; +}; + +const struct PokemonStorageSystemData *gUnknown_083B6DB4; + void StorageSystemCreatePrimaryMenu(u8 whichMenu); void task_intro_29(u8 whichMenu); extern const struct StorageAction gUnknown_083B6DF4[]; - extern const struct ReverseMenuAction gUnknown_083B600C[]; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; +EWRAM_DATA u8 gUnknown_02038474; u8 sub_8095ADC(u8 boxId) { @@ -403,6 +412,60 @@ void Task_PokemonStorageSystem(u8 taskId) } } +void ShowPokemonStorageSystem(void) +{ + u8 taskId = CreateTask(Task_PokemonStorageSystem, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + ScriptContext2_Enable(); +} + +void sub_8096130(void) +{ + u8 taskId = CreateTask(Task_PokemonStorageSystem, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = gUnknown_02038474; + pal_fill_black(); +} + +void StorageSystemCreatePrimaryMenu(u8 a0) +{ + MenuDrawTextWindow(0, 0, 13, 9); + PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083B600C); + InitMenu(0, 1, 1, 4, a0, 12); +} + +void sub_80961A8(void) +{ + gUnknown_02038474 = gUnknown_083B6DB4->unk_0005; + gFieldCallback = sub_8096130; + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +void ResetPokemonStorageSystem(void) +{ + u16 boxId; + u16 boxMon; + + gPokemonStorage.currentBox = 0; + for (boxId = 0; boxId < 14; boxId++) + { + for (boxMon = 0; boxMon < 30; boxMon++) + { + ZeroBoxMonData(gPokemonStorage.boxes[boxId] + boxMon); + } + } + for (boxId = 0; boxId < 14; boxId++) + { + u8 *dest = StringCopy(gPokemonStorage.boxNames[boxId], gPCText_BOX); + ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2); + } + for (boxId = 0; boxId < 14; boxId++) + { + gPokemonStorage.wallpaper[boxId] = boxId & 0x03; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 92577647185e885298bfe3e4159f702730bdf310 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 16:40:49 -0500 Subject: sub_8096264 --- src/pokemon/pokemon_storage_system.c | 97 +++++++++++++++++++++++++++++++----- 1 file changed, 85 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 8f0753a2d..bc43616a9 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -17,9 +17,9 @@ struct StorageAction { u8 format; }; -struct ReverseMenuAction { - u32 unk0; - u8 *text; +struct PSS_MenuStringPtrs { + const u8 *text; + const u8 *desc; }; struct PokemonStorageSystemData { @@ -27,16 +27,71 @@ struct PokemonStorageSystemData { u8 unk_0005; }; -const struct PokemonStorageSystemData *gUnknown_083B6DB4; +struct UnkPSSStruct_2002370 { + u8 filler_0000[0x23e]; + u8 unk_023e; + u16 unk_0240; + u16 unk_0242; +}; void StorageSystemCreatePrimaryMenu(u8 whichMenu); void task_intro_29(u8 whichMenu); +const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { + {PCText_WithdrawPoke, PCText_MovePokeToParty}, + {PCText_DepositPoke, PCText_StorePokeInBox}, + {PCText_MovePoke, PCText_OrganizeBoxesParty}, + {PCText_SeeYa, PCText_ReturnToPrevMenu} +}; + +const union AnimCmd gSpriteAnim_83B602C[] = { + ANIMCMD_FRAME( 0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83B6034[] = { + ANIMCMD_FRAME( 4, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83B603C[] = { + ANIMCMD_FRAME( 6, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83B6044[] = { + ANIMCMD_FRAME(10, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83B604C[] = { + gSpriteAnim_83B602C, + gSpriteAnim_83B6034, + gSpriteAnim_83B603C, + gSpriteAnim_83B6044 +}; + +const union AffineAnimCmd gSpriteAffineAnim_83B605C[] = { + AFFINEANIMCMD_FRAME(0xe0, 0xe0, 0, 0), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83B606C[] = { + gSpriteAffineAnim_83B605C +}; + +const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal"); + +const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp"); + +const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); + extern const struct StorageAction gUnknown_083B6DF4[]; -extern const struct ReverseMenuAction gUnknown_083B600C[]; +extern const struct PokemonStorageSystemData *gUnknown_083B6DB4; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; EWRAM_DATA u8 gUnknown_02038474; +EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478; u8 sub_8095ADC(u8 boxId) { @@ -318,7 +373,7 @@ void Task_PokemonStorageSystem(u8 taskId) case 0: StorageSystemCreatePrimaryMenu(task->data[1]); MenuDisplayMessageBox(); - MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + MenuPrint(gUnknown_083B600C[task->data[1]].desc, 2, 15); task->data[0]++; break; case 1: @@ -342,7 +397,7 @@ void Task_PokemonStorageSystem(u8 taskId) { task->data[1] = task->data[3]; StorageSystemClearMessageWindow(); - MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + MenuPrint(gUnknown_083B600C[task->data[1]].desc, 2, 15); } break; case -1: @@ -378,7 +433,7 @@ void Task_PokemonStorageSystem(u8 taskId) if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { StorageSystemClearMessageWindow(); - MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + MenuPrint(gUnknown_083B600C[task->data[1]].desc, 2, 15); task->data[0] = 2; } else if (gMain.newKeys & DPAD_UP) @@ -388,7 +443,7 @@ void Task_PokemonStorageSystem(u8 taskId) MoveMenuCursor(-1); task->data[1] = GetMenuCursorPos(); StorageSystemClearMessageWindow(); - MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + MenuPrint(gUnknown_083B600C[task->data[1]].desc, 2, 15); task->data[0] = 2; } else if (gMain.newKeys & DPAD_DOWN) @@ -398,7 +453,7 @@ void Task_PokemonStorageSystem(u8 taskId) MoveMenuCursor(1); task->data[1] = GetMenuCursorPos(); StorageSystemClearMessageWindow(); - MenuPrint(gUnknown_083B600C[task->data[1]].text, 2, 15); + MenuPrint(gUnknown_083B600C[task->data[1]].desc, 2, 15); task->data[0] = 2; } break; @@ -428,11 +483,11 @@ void sub_8096130(void) pal_fill_black(); } -void StorageSystemCreatePrimaryMenu(u8 a0) +void StorageSystemCreatePrimaryMenu(u8 whichMenu) { MenuDrawTextWindow(0, 0, 13, 9); PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083B600C); - InitMenu(0, 1, 1, 4, a0, 12); + InitMenu(0, 1, 1, 4, whichMenu, 12); } void sub_80961A8(void) @@ -466,6 +521,24 @@ void ResetPokemonStorageSystem(void) } } +void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3) +{ + struct SpritePalette palette = { + gBoxSelectionPopupPalette, palTag + }; + struct SpriteSheet sheets[] = { + {gBoxSelectionPopupCenterTiles, 0x800, tileTag}, + {gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1}, + {} + }; + LoadSpritePalette(&palette); + LoadSpriteSheets(sheets); + gUnknown_02038478 = a0; + a0->unk_0240 = tileTag; + a0->unk_0242 = palTag; + a0->unk_023e = a3; +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 344b8bffbb969cca8b1c23ddf994c0c8ec6fe1f8 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sat, 6 Jan 2018 22:41:38 +0100 Subject: Finished decompiling wisp_fire --- src/battle/anim/wisp_fire.c | 160 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 154 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c index e31c15d9c..348ce6426 100644 --- a/src/battle/anim/wisp_fire.c +++ b/src/battle/anim/wisp_fire.c @@ -1,12 +1,20 @@ #include "global.h" #include "battle_anim.h" +#include "blend_palette.h" #include "main.h" #include "rom_8077ABC.h" +#include "task.h" #include "trig.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankTarget; -// extern u8 gAnimBankAttacker; +extern u8 gAnimBankAttacker; + +extern u8 gObjectBankIDs[]; +extern s8 gUnknown_083D9794[16]; +extern s8 gUnknown_083D97A4[16]; + +void sub_80D5E4C(u8 taskId); void sub_80D5CC0(struct Sprite *sprite) { @@ -25,15 +33,19 @@ void sub_80D5CC0(struct Sprite *sprite) sprite->data[1] = (sprite->data[1] + 7) & 0xFF; if (gMain.inBattle) - if ((u16) (sprite->data[1] - 0x40) > 0x83) + { + if (sprite->data[1] < 64 || sprite->data[1] > 195) sprite->oam.priority = sub_8079ED4(gAnimBankTarget); else sprite->oam.priority = sub_8079ED4(gAnimBankTarget) + 1; + } else - if ((u16) (sprite->data[1] - 0x40) > 0x83) + { + if (sprite->data[1] < 64 || sprite->data[1] > 195) sprite->subpriority = 0x1D; else sprite->subpriority = 0x1F; + } if (++sprite->data[2] > 0x14) sprite->invisible ^= 1; @@ -42,7 +54,143 @@ void sub_80D5CC0(struct Sprite *sprite) DestroyAnimSprite(sprite); } -// void sub_80D5DDC(struct Sprite *sprite) -// { +void sub_80D5DDC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[12] = !GetBankSide(gAnimBankAttacker) ? 1 : -1; + task->data[13] = IsAnimBankSpriteVisible(gAnimBankTarget ^ 2) + 1; + task->data[14] = GetAnimBankSpriteId(1); + task->data[15] = GetAnimBankSpriteId(3); + + task->func = sub_80D5E4C; +} + +void sub_80D5E4C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[10] += task->data[12] * 2; + if (++task->data[1] >= 2) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + task->data[11] = 2; + else + task->data[11] = -2; + } + + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11]; + } + + if (++task->data[9] == 16) + { + task->data[9] = 0; + task->data[0]++; + } + break; + case 1: + if (++task->data[1] >= 5) + { + task->data[1] = 0; + task->data[2]++; + + if (task->data[2] & 1) + task->data[11] = 2; + else + task->data[11] = -2; + } + + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11]; + } + + if (++task->data[9] == 96) + { + task->data[9] = 0; + task->data[0]++; + } + break; + case 2: + task->data[10] -= task->data[12] * 2; + + if (++task->data[1] >= 2) + { + task->data[1] = 0; + task->data[2]++; + + if (task->data[2] & 1) + task->data[11] = 2; + else + task->data[11] = -2; + } -// } \ No newline at end of file + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = task->data[10] + task->data[11]; + } + + if (++task->data[9] == 16) + { + task->data[0]++; + } + break; + case 3: + for (task->data[3] = 0; task->data[3] < task->data[13]; task->data[3]++) + { + gSprites[task->data[task->data[3] + 14]].pos2.x = 0; + } + + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80D6080(u8 taskId) +{ + struct Struct_sub_8078914 unk; + sub_8078914(&unk); + BlendPalette(unk.field_8 << 4, 16, gBattleAnimArgs[0], gBattleAnimArgs[1]); // u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor + DestroyAnimVisualTask(taskId); +} + +void sub_80D60B4(u8 taskId) +{ + s8 unk; + u8 spriteId; + + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + gTasks[taskId].data[4] = gBattleAnimArgs[3]; + } + gTasks[taskId].data[0]++; + + spriteId = gObjectBankIDs[gAnimBankTarget]; + + if (!gTasks[taskId].data[4]) + unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10]; + else + unk = gUnknown_083D97A4[gTasks[taskId].data[0] % 10]; + + if (gTasks[taskId].data[3] == 1) + gSprites[spriteId].pos2.y = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk; + else + gSprites[spriteId].pos2.x = gBattleAnimArgs[1] * unk; + + if (gTasks[taskId].data[0] == gTasks[taskId].data[1]) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + DestroyAnimVisualTask(taskId); + } +} \ No newline at end of file -- cgit v1.2.3 From dbcd5075b036cdd700cdff2b863e9884037ddfca Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 01:47:42 +0100 Subject: Split battle_anim_81258BC.s and decompile unused --- src/battle/anim/sfx.c | 2 + src/unused/unused_8124F94.c | 126 ++++++++++++++++++++++++++++++++++++++++++++ src/unused/unused_81258BC.c | 36 +++++++++++++ src/unused_8124F94.c | 126 -------------------------------------------- 4 files changed, 164 insertions(+), 126 deletions(-) create mode 100644 src/battle/anim/sfx.c create mode 100644 src/unused/unused_8124F94.c create mode 100644 src/unused/unused_81258BC.c delete mode 100644 src/unused_8124F94.c (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c new file mode 100644 index 000000000..265271ac5 --- /dev/null +++ b/src/battle/anim/sfx.c @@ -0,0 +1,2 @@ +#include "global.h" + diff --git a/src/unused/unused_8124F94.c b/src/unused/unused_8124F94.c new file mode 100644 index 000000000..5f76fa92e --- /dev/null +++ b/src/unused/unused_8124F94.c @@ -0,0 +1,126 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" + +struct UnknownStruct2 +{ + void *src; + u8 unk4; + u8 unk5; + u8 unk6; + u16 unk8; +}; + +struct UnknownStruct3 +{ + u16 *paletteSrc; + u8 unk4; + u8 paletteCount; +}; + +struct UnknownStruct1 +{ + u8 paletteNum; + u8 unk1; + u16 unk2; + u8 *dest; + struct UnknownStruct3 unk8[16]; + struct UnknownStruct2 unk88[32]; +}; + +void unref_sub_8124F94(struct UnknownStruct1 *a) +{ + a->unk1 = 0; + a->paletteNum = 0; + a->unk2 = 0; + a->dest = (void *)VRAM; + DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); + DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); +} + +u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) +{ + while (1) + { + s32 r6; + s32 temp; + + // Couldn't get it to match any other way + if (a->unk1 < 32 && b->src == NULL) + return 0; + if (a->unk1 >= 32) + break; + + a->unk88[a->unk1].src = b->src; + a->unk88[a->unk1].unk6 = b->unk6; + a->unk88[a->unk1].unk4 = b->unk4; + a->unk88[a->unk1].unk5 = b->unk5; + r6 = b->unk4 * b->unk5; + if (a->unk2 + r6 > 0x400) + return 2; + if (b->unk8 == 0) + { + DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); + } + else + { + LZDecompressWram(b->src, a->dest + a->unk2 * 64); + } + a->unk88[a->unk1].unk8 = a->unk2; + temp = r6 + a->unk2; + a->unk2 = temp; + a->unk1++; + b++; + } + return 1; +} + +u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + while (1) + { + // Couldn't get it to match any other way + if (a->paletteNum < 16 && b->paletteSrc == NULL) + return 0; + if (a->paletteNum >= 16) + break; + + a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; + a->unk8[a->paletteNum].unk4 = b->unk4; + if (b->paletteCount == 0) + { + LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); + } + else + { + u16 palette[16]; + + LZDecompressWram(b->paletteSrc, palette); + LoadPalette(palette, a->paletteNum * 16, 32); + } + a->unk8[a->paletteNum].paletteCount = a->paletteNum; + a->paletteNum = a->paletteNum + 1; + b++; + } + return 1; +} + +u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + u16 palettes[16][16] = {0}; + u8 r7 = b->paletteCount; + u8 i; + + LZDecompressWram(b->paletteSrc, palettes); + for (i = a->paletteNum; i < r7; i++) + { + if (a->paletteNum + i >= 16) + return 1; + a->unk8[i].paletteSrc = b->paletteSrc; + a->unk8[i].unk4 = b->unk4 + i; + a->unk8[i].paletteCount = a->paletteNum; + LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); + a->paletteNum++; + } + return 0; +} diff --git a/src/unused/unused_81258BC.c b/src/unused/unused_81258BC.c new file mode 100644 index 000000000..c509ea4c9 --- /dev/null +++ b/src/unused/unused_81258BC.c @@ -0,0 +1,36 @@ +#include "constants/songs.h" +#include "global.h" +#include "menu.h" +#include "mystery_event_script.h" +#include "sound.h" +#include "text.h" + +void sub_812AF10(void); + +bool8 unref_sub_812AECC(u8 *script) +{ + u8 result = RunMysteryEventScript(script); + switch (result) + { + case 0: + return FALSE; + case 1: + PlaySE(SE_BOO); + return TRUE; + case 2: + sub_812AF10(); + return FALSE; + case 3: + PlaySE(SE_BOO); + sub_812AF10(); + return TRUE; + default: + return FALSE; + } +} + +void sub_812AF10(void) +{ + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gStringVar4, 3, 15); +} \ No newline at end of file diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c deleted file mode 100644 index 5f76fa92e..000000000 --- a/src/unused_8124F94.c +++ /dev/null @@ -1,126 +0,0 @@ -#include "global.h" -#include "decompress.h" -#include "palette.h" - -struct UnknownStruct2 -{ - void *src; - u8 unk4; - u8 unk5; - u8 unk6; - u16 unk8; -}; - -struct UnknownStruct3 -{ - u16 *paletteSrc; - u8 unk4; - u8 paletteCount; -}; - -struct UnknownStruct1 -{ - u8 paletteNum; - u8 unk1; - u16 unk2; - u8 *dest; - struct UnknownStruct3 unk8[16]; - struct UnknownStruct2 unk88[32]; -}; - -void unref_sub_8124F94(struct UnknownStruct1 *a) -{ - a->unk1 = 0; - a->paletteNum = 0; - a->unk2 = 0; - a->dest = (void *)VRAM; - DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); - DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); -} - -u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) -{ - while (1) - { - s32 r6; - s32 temp; - - // Couldn't get it to match any other way - if (a->unk1 < 32 && b->src == NULL) - return 0; - if (a->unk1 >= 32) - break; - - a->unk88[a->unk1].src = b->src; - a->unk88[a->unk1].unk6 = b->unk6; - a->unk88[a->unk1].unk4 = b->unk4; - a->unk88[a->unk1].unk5 = b->unk5; - r6 = b->unk4 * b->unk5; - if (a->unk2 + r6 > 0x400) - return 2; - if (b->unk8 == 0) - { - DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); - } - else - { - LZDecompressWram(b->src, a->dest + a->unk2 * 64); - } - a->unk88[a->unk1].unk8 = a->unk2; - temp = r6 + a->unk2; - a->unk2 = temp; - a->unk1++; - b++; - } - return 1; -} - -u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - while (1) - { - // Couldn't get it to match any other way - if (a->paletteNum < 16 && b->paletteSrc == NULL) - return 0; - if (a->paletteNum >= 16) - break; - - a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; - a->unk8[a->paletteNum].unk4 = b->unk4; - if (b->paletteCount == 0) - { - LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); - } - else - { - u16 palette[16]; - - LZDecompressWram(b->paletteSrc, palette); - LoadPalette(palette, a->paletteNum * 16, 32); - } - a->unk8[a->paletteNum].paletteCount = a->paletteNum; - a->paletteNum = a->paletteNum + 1; - b++; - } - return 1; -} - -u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - u16 palettes[16][16] = {0}; - u8 r7 = b->paletteCount; - u8 i; - - LZDecompressWram(b->paletteSrc, palettes); - for (i = a->paletteNum; i < r7; i++) - { - if (a->paletteNum + i >= 16) - return 1; - a->unk8[i].paletteSrc = b->paletteSrc; - a->unk8[i].unk4 = b->unk4 + i; - a->unk8[i].paletteCount = a->paletteNum; - LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); - a->paletteNum++; - } - return 0; -} -- cgit v1.2.3 From d4df8046d45e50e19d2305bd4388e47087949960 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 6 Jan 2018 21:52:05 -0500 Subject: use firered isagbprint.h and NDEBUG --- src/engine/main.c | 4 ++-- src/libs/libisagbprn.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/engine/main.c b/src/engine/main.c index e52551f72..92b81d475 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -83,7 +83,7 @@ static void WaitForVBlank(void); #define B_START_SELECT (B_BUTTON | START_BUTTON | SELECT_BUTTON) -#ifndef NOAGBPRN +#ifndef NDEBUG #include // don't include if not needed. #endif @@ -105,7 +105,7 @@ void AgbMain() // In Fire Red, AGBPrintInit is called at this spot. For user convenience, I // opt to initialize the print area here. It is up to the user where they choose // to print stuff from, as anything else declared is NOT authoritative. -#ifndef NOAGBPRN +#ifndef NDEBUG AGBPrintInit(); __mb_cur_max = 1; // fix for AGBPrintf #endif diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 867044217..eccc31f48 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -25,7 +25,7 @@ struct AGBPrintStruct typedef void (*LPFN_PRINT_FLUSH)(void); -#ifndef NOAGBPRN +#ifndef NDEBUG void AGBPrintFlush1Block(void); void AGBPrintInit(void) -- cgit v1.2.3 From aa023a5cb52c7b7a4cb2e23aadcd7db4bf0b3483 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 6 Jan 2018 22:21:05 -0500 Subject: through sub_80963D0 --- src/pokemon/pokemon_storage_system.c | 113 ++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index bc43616a9..37414f32b 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -1,5 +1,7 @@ #include "global.h" #include "palette.h" +#include "constants/songs.h" +#include "sound.h" #include "field_weather.h" #include "overworld.h" #include "field_fadetransition.h" @@ -28,7 +30,13 @@ struct PokemonStorageSystemData { }; struct UnkPSSStruct_2002370 { - u8 filler_0000[0x23e]; + struct Sprite *unk_0000; + struct Sprite *unk_0004[4]; + u32 unk_0014[3]; + struct Sprite *unk_0020[2]; + u8 filler_0028[0x214]; + u8 unk_023c; + u8 unk_023d; u8 unk_023e; u16 unk_0240; u16 unk_0242; @@ -36,6 +44,13 @@ struct UnkPSSStruct_2002370 { void StorageSystemCreatePrimaryMenu(u8 whichMenu); void task_intro_29(u8 whichMenu); +void sub_80963D0(u8 a0); +void sub_809658C(void); +void sub_80965F8(void); +void sub_809662C(void); +void sub_809665C(void); +void sub_8096784(struct Sprite *sprite); +struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { {PCText_WithdrawPoke, PCText_MovePokeToParty}, @@ -539,6 +554,102 @@ void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3 a0->unk_023e = a3; } +void sub_8096310(void) +{ + FreeSpritePaletteByTag(gUnknown_02038478->unk_0242); + FreeSpriteTilesByTag(gUnknown_02038478->unk_0240); + FreeSpriteTilesByTag(gUnknown_02038478->unk_0240 + 1); +} + +void sub_809634C(u8 a0) +{ + sub_80963D0(a0); +} + +void sub_809635C(void) +{ + sub_809658C(); +} + +u8 sub_8096368(void) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + return 201; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gUnknown_02038478->unk_023c; + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + sub_809662C(); + } + else if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + sub_80965F8(); + } + return 200; +} + +void sub_80963D0(u8 a0) +{ + u16 i; + u8 spriteId; + struct SpriteTemplate template; + struct OamData oamData = {}; + oamData.size = 3; + oamData.paletteNum = 1; + template = (struct SpriteTemplate){ + 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + }; + + gUnknown_02038478->unk_023c = a0; + template.tileTag = gUnknown_02038478->unk_0240; + template.paletteTag = gUnknown_02038478->unk_0242; + + spriteId = CreateSprite(&template, 0xa0, 0x60, 0); + gUnknown_02038478->unk_0000 = gSprites + spriteId; + + oamData.shape = ST_OAM_V_RECTANGLE; + oamData.size = 1; + template.tileTag = gUnknown_02038478->unk_0240 + 1; + template.anims = gSpriteAnimTable_83B604C; + for (i = 0; i < 4; i++) + { + u16 r5; + spriteId = CreateSprite(&template, 0x7c, 0x50, gUnknown_02038478->unk_023e); + gUnknown_02038478->unk_0004[i] = gSprites + spriteId; + r5 = 0; + if (i & 2) + { + gUnknown_02038478->unk_0004[i]->pos1.x = 0xc4; + r5 = 2; + } + if (i & 1) + { + gUnknown_02038478->unk_0004[i]->pos1.y = 0x70; + gUnknown_02038478->unk_0004[i]->oam.size = 0; + r5++; + } + StartSpriteAnim(gUnknown_02038478->unk_0004[i], r5); + } + for (i = 0; i < 2; i++) + { + gUnknown_02038478->unk_0020[i] = sub_809A9A0(72 * i + 0x7c, 0x58, i, 0, gUnknown_02038478->unk_023e); + if (gUnknown_02038478->unk_0020[i]) + { + gUnknown_02038478->unk_0020[i]->data[0] = (i == 0 ? -1 : 1); + gUnknown_02038478->unk_0020[i]->callback = sub_8096784; + } + } + sub_809665C(); +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 39810d713630fbadbd16f00862deca1f12d3a91d Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 15:05:49 +0100 Subject: Started decompiling move animation sfx --- src/battle/anim/sfx.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 265271ac5..a66a15371 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -1,2 +1,115 @@ #include "global.h" +#include "battle_anim.h" +#include "sound.h" +#include "task.h" + +extern s16 gBattleAnimArgs[]; + +void sub_812AF98(u8 taskId); +void sub_812B004(u8 taskId); +void sub_812B004(u8 taskId); + +void sub_812AF30(u8 taskId) +{ + s8 sourcePan, targetPan, incrementPan; + + TASK.data[0] = gBattleAnimArgs[0]; + TASK.data[1] = gBattleAnimArgs[1]; + + sourcePan = BattleAnimAdjustPanning(-64); + targetPan = BattleAnimAdjustPanning(63); + incrementPan = CalculatePanIncrement(sourcePan, targetPan, 2); + + TASK.data[2] = sourcePan; + TASK.data[3] = targetPan; + TASK.data[4] = incrementPan; + TASK.data[10] = 10; + + TASK.func = sub_812AF98; +} + +#ifdef NONMATCHING +void sub_812AF98(u8 taskId) // r4 := TASK +{ + s16 pan = TASK.data[2]; // r5 + s8 var0 = TASK.data[4]; // r6 + + if (++TASK.data[11] == 111) + { + TASK.data[10] = 5; + TASK.data[11] = 0; + TASK.func = sub_812B004; + } + else + { + if (++TASK.data[10] == 11) + { + TASK.data[10] = 0; + PlaySE12WithPanning(TASK.data[0], pan); + } + TASK.data[2] = sub_8077104(var0 + pan); + } +} +#else +__attribute__((naked)) +void sub_812AF98(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r2, _0812AFC8 @ =gTasks\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + adds r4, r1, r2\n\ + ldrh r5, [r4, 0xC]\n\ + ldrb r6, [r4, 0x10]\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r0, 0x1\n\ + movs r1, 0\n\ + strh r0, [r4, 0x1E]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x6F\n\ + bne _0812AFD0\n\ + movs r0, 0x5\n\ + strh r0, [r4, 0x1C]\n\ + strh r1, [r4, 0x1E]\n\ + ldr r0, _0812AFCC @ =sub_812B004\n\ + str r0, [r4]\n\ + b _0812AFFE\n\ + .align 2, 0\n\ +_0812AFC8: .4byte gTasks\n\ +_0812AFCC: .4byte sub_812B004\n\ +_0812AFD0:\n\ + ldrh r0, [r4, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xB\n\ + bne _0812AFEA\n\ + strh r1, [r4, 0x1C]\n\ + ldrh r0, [r4, 0x8]\n\ + lsls r1, r5, 24\n\ + asrs r1, 24\n\ + bl PlaySE12WithPanning\n\ +_0812AFEA:\n\ + lsls r1, r6, 24\n\ + asrs r1, 24\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + bl sub_8077104\n\ + strh r0, [r4, 0xC]\n\ +_0812AFFE:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif // NONMATCHING -- cgit v1.2.3 From 589df520baf710078abf2756d35662bda944861c Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 16:20:21 +0100 Subject: sub_812B004 - sub_812B058 --- src/battle/anim/sfx.c | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index a66a15371..e7e3c867e 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -8,6 +8,7 @@ extern s16 gBattleAnimArgs[]; void sub_812AF98(u8 taskId); void sub_812B004(u8 taskId); void sub_812B004(u8 taskId); +void sub_812B108(u8 taskId); void sub_812AF30(u8 taskId) { @@ -113,3 +114,140 @@ _0812AFFE:\n\ } #endif // NONMATCHING +void sub_812B004(u8 taskId) +{ + s8 pan; + + if (++TASK.data[10] == 6) + { + TASK.data[10] = 0; + + pan = BattleAnimAdjustPanning(0x3f); + PlaySE12WithPanning(TASK.data[1], pan); + + if (++TASK.data[11] == 2) + { + DestroyAnimSoundTask(taskId); + } + } +} + +#ifdef NONMATCHING +void sub_812B058(u8 taskId) +{ + s16 sp, r10, r7, r9; + s8 r5, r6, r4, r0; + + sp = gBattleAnimArgs[0]; + r5 = gBattleAnimArgs[2]; + r6 = gBattleAnimArgs[3]; + r10 = gBattleAnimArgs[4]; + r7 = gBattleAnimArgs[5]; + r9 = gBattleAnimArgs[6]; + r4 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + r5 = BattleAnimAdjustPanning(r5); + r0 = CalculatePanIncrement(r4, r5, r6); + + TASK.data[0] = sp; + TASK.data[1] = r4; + TASK.data[2] = r5; + TASK.data[3] = r0; + TASK.data[4] = r10; + TASK.data[5] = r7; + TASK.data[6] = r9; + TASK.data[10] = 0; + TASK.data[11] = r4; + TASK.data[12] = r9; + + TASK.func = sub_812B108; + sub_812B108(taskId); +} +#else +__attribute__((naked)) +void sub_812B058(u8 taskId) +{ + 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, 0x4\n\ + mov r8, r0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r0, _0812B0FC @ =gBattleAnimArgs\n\ + ldrh r1, [r0]\n\ + str r1, [sp]\n\ + ldrb r5, [r0, 0x4]\n\ + ldrb r6, [r0, 0x6]\n\ + ldrb r3, [r0, 0x8]\n\ + mov r10, r3\n\ + ldrb r7, [r0, 0xA]\n\ + ldrb r1, [r0, 0xC]\n\ + mov r9, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + bl BattleAnimAdjustPanning\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + lsls r5, 24\n\ + asrs r5, 24\n\ + adds r0, r5, 0\n\ + bl BattleAnimAdjustPanning\n\ + adds r5, r0, 0\n\ + lsls r4, 24\n\ + asrs r4, 24\n\ + lsls r5, 24\n\ + asrs r5, 24\n\ + lsls r6, 24\n\ + asrs r6, 24\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + bl CalculatePanIncrement\n\ + ldr r2, _0812B100 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r2\n\ + movs r2, 0\n\ + mov r6, sp\n\ + ldrh r6, [r6]\n\ + strh r6, [r1, 0x8]\n\ + strh r4, [r1, 0xA]\n\ + strh r5, [r1, 0xC]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + strh r0, [r1, 0xE]\n\ + mov r0, r10\n\ + strh r0, [r1, 0x10]\n\ + strh r7, [r1, 0x12]\n\ + mov r3, r9\n\ + strh r3, [r1, 0x14]\n\ + strh r2, [r1, 0x1C]\n\ + strh r4, [r1, 0x1E]\n\ + strh r3, [r1, 0x20]\n\ + ldr r2, _0812B104 @ =sub_812B108\n\ + str r2, [r1]\n\ + mov r0, r8\n\ + bl _call_via_r2\n\ + add sp, 0x4\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\ + .align 2, 0\n\ +_0812B0FC: .4byte gBattleAnimArgs\n\ +_0812B100: .4byte gTasks\n\ +_0812B104: .4byte sub_812B108\n\ + .syntax divided\n"); +} +#endif // NONMATCHING -- cgit v1.2.3 From e99816d2082d009457105a5e74524f97b80661c0 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 23:12:28 +0100 Subject: Decompiled sub_812B108 --- src/battle/anim/sfx.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index e7e3c867e..981022f1e 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -251,3 +251,25 @@ _0812B104: .4byte sub_812B108\n\ .syntax divided\n"); } #endif // NONMATCHING + +void sub_812B108(u8 taskId) +{ + if (TASK.data[12]++ == TASK.data[6]) + { + TASK.data[12] = 0; + PlaySE12WithPanning(TASK.data[0], TASK.data[11]); + + if (--TASK.data[4] == 0) + { + DestroyAnimSoundTask(taskId); + return; + } + } + + if (TASK.data[10]++ == TASK.data[5]) + { + TASK.data[10] = 0; + TASK.data[11] += TASK.data[3]; + TASK.data[11] = sub_8077104(TASK.data[11]); + } +} -- cgit v1.2.3 From 92fa7570b99d216f75becbd362a124a12cc1dcde Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 18:44:14 -0500 Subject: through task_intro_29 --- src/pokemon/pokemon_storage_system.c | 125 ++++++++++++++++++++++++++++++++--- 1 file changed, 114 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 37414f32b..30c0f2b67 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -35,7 +35,7 @@ struct UnkPSSStruct_2002370 { u32 unk_0014[3]; struct Sprite *unk_0020[2]; u8 filler_0028[0x214]; - u8 unk_023c; + u8 curBox; u8 unk_023d; u8 unk_023e; u16 unk_0240; @@ -43,13 +43,15 @@ struct UnkPSSStruct_2002370 { }; void StorageSystemCreatePrimaryMenu(u8 whichMenu); -void task_intro_29(u8 whichMenu); -void sub_80963D0(u8 a0); +void sub_80963D0(u8 curBox); void sub_809658C(void); void sub_80965F8(void); void sub_809662C(void); void sub_809665C(void); +void sub_80966F4(const u8 *sourceString, u16 x, u16 y); void sub_8096784(struct Sprite *sprite); +void task_intro_29(u8 whichMenu); +void sub_8096884(void); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { @@ -103,12 +105,15 @@ const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/bo extern const struct StorageAction gUnknown_083B6DF4[]; extern const struct PokemonStorageSystemData *gUnknown_083B6DB4; +extern u8 *const gUnknown_083B6DB8; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; EWRAM_DATA u8 gUnknown_02038474; EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478; +EWRAM_DATA u8 gUnknown_0203847C; +EWRAM_DATA u8 gUnknown_0203847D; -u8 sub_8095ADC(u8 boxId) +static u8 CountPokemonInBoxN(u8 boxId) { u16 i; u16 count; @@ -121,7 +126,7 @@ u8 sub_8095ADC(u8 boxId) return count; } -s16 sub_8095B24(u8 boxId) +s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId) { u16 i; @@ -561,9 +566,9 @@ void sub_8096310(void) FreeSpriteTilesByTag(gUnknown_02038478->unk_0240 + 1); } -void sub_809634C(u8 a0) +void sub_809634C(u8 curBox) { - sub_80963D0(a0); + sub_80963D0(curBox); } void sub_809635C(void) @@ -581,7 +586,7 @@ u8 sub_8096368(void) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - return gUnknown_02038478->unk_023c; + return gUnknown_02038478->curBox; } if (gMain.newKeys & DPAD_LEFT) { @@ -596,7 +601,7 @@ u8 sub_8096368(void) return 200; } -void sub_80963D0(u8 a0) +void sub_80963D0(u8 curBox) { u16 i; u8 spriteId; @@ -608,11 +613,11 @@ void sub_80963D0(u8 a0) 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; - gUnknown_02038478->unk_023c = a0; + gUnknown_02038478->curBox = curBox; template.tileTag = gUnknown_02038478->unk_0240; template.paletteTag = gUnknown_02038478->unk_0242; - spriteId = CreateSprite(&template, 0xa0, 0x60, 0); + spriteId = CreateSprite(&template, 0xA0, 0x60, 0); gUnknown_02038478->unk_0000 = gSprites + spriteId; oamData.shape = ST_OAM_V_RECTANGLE; @@ -650,6 +655,104 @@ void sub_80963D0(u8 a0) sub_809665C(); } +void sub_809658C(void) +{ + u16 i; + if (gUnknown_02038478->unk_0000) + { + DestroySprite(gUnknown_02038478->unk_0000); + gUnknown_02038478->unk_0000 = NULL; + } + for (i = 0; i < 4; i++) + { + if (gUnknown_02038478->unk_0004[i]) + { + DestroySprite(gUnknown_02038478->unk_0004[i]); + gUnknown_02038478->unk_0004[i] = NULL; + } + } + for (i = 0; i < 2; i++) + { + if (gUnknown_02038478->unk_0020[i]) + DestroySprite(gUnknown_02038478->unk_0020[i]); + } +} + +void sub_80965F8(void) +{ + if (++gUnknown_02038478->curBox > 13) + gUnknown_02038478->curBox = 0; + sub_809665C(); +} + +void sub_809662C(void) +{ + gUnknown_02038478->curBox = (gUnknown_02038478->curBox == 0 ? 13 : gUnknown_02038478->curBox - 1); + sub_809665C(); +} + +void sub_809665C(void) +{ + u8 nPokemonInBox = CountPokemonInBoxN(gUnknown_02038478->curBox); + u8 *stringVar = gStringVar1; + + stringVar[0] = EXT_CTRL_CODE_BEGIN; + stringVar[1] = 0x04; // EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW + stringVar[2] = 0x0F; // TEXT_COLOR_WHITE2 + stringVar[3] = 0x01; // TEXT_COLOR_DARK_GREY + stringVar[4] = 0x0E; // TEXT_COLOR_LIGHT_BLUE + stringVar += 5; + + stringVar = StringCopy(stringVar, gPokemonStorage.boxNames[gUnknown_02038478->curBox]); + + stringVar[0] = CHAR_NEWLINE; + stringVar[1] = EXT_CTRL_CODE_BEGIN; + stringVar[2] = 0x11; // EXT_CTRL_CODE_CLEAR + if (nPokemonInBox < 10) + stringVar[3] = 0x28; + else + stringVar[3] = 0x22; + stringVar += 4; + + stringVar = ConvertIntToDecimalString(stringVar, nPokemonInBox); + + stringVar[0] = CHAR_SLASH; + stringVar[1] = CHAR_0 + 3; + stringVar[2] = CHAR_0 + 0; + stringVar[3] = EOS; + sub_80966F4(gStringVar1, 0, 1); +} + +void sub_80966F4(const u8 *sourceString, u16 x, u16 y) +{ + u16 *vdest = (u16 *)(BG_CHAR_ADDR(4) + (GetSpriteTileStartByTag(gUnknown_02038478->unk_0240) * 32) + y * 256 + x * 32); + u8 *tileBuff = gUnknown_083B6DB8; + DmaFill16(3, 0x1111, tileBuff, 0x400); + sub_8004E3C(&gWindowConfig_81E6D38, tileBuff, sourceString); + DmaCopy16(3, tileBuff, vdest, 0x400); +} + +void sub_8096784(struct Sprite *sprite) +{ + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[0]; + if (++sprite->data[2] > 5) + { + sprite->data[2] = 0; + sprite->pos2.x = 0; + } + } +} + +void task_intro_29(u8 whichMenu) +{ + gUnknown_0203847D = whichMenu; + ePokemonStorageSystem.unk_0005 = whichMenu; + SetMainCallback2(sub_8096884); +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 47acecb873695944a230820e57c6c8fd4658eaff Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 7 Jan 2018 18:11:16 -0600 Subject: match SaveCurrentWinStreak --- src/field/battle_tower.c | 113 +++++++---------------------------------------- 1 file changed, 15 insertions(+), 98 deletions(-) (limited to 'src') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index caebc6a7b..24726a325 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -132,7 +132,7 @@ static const u8 sMaleTrainerClasses[] = { TRAINER_CLASS_POKEMON_BREEDER_M, TRAINER_CLASS_POKEMON_RANGER_M, TRAINER_CLASS_BUG_CATCHER, - TRAINER_CLASS_HIKER, + TRAINER_CLASS_HIKER, }; static const u8 sFemaleTrainerClasses[] = { @@ -255,7 +255,7 @@ static void ResetBattleTowerStreak(u8 levelType); static void ValidateBattleTowerRecordChecksums(void); static void PrintEReaderTrainerFarewellMessage(void); extern void SetBattleTowerTrainerGfxId(u8); -extern void sub_8135A3C(void); +static void SaveCurrentWinStreak(void); static void sub_8135CFC(void); static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *); static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *); @@ -1538,7 +1538,7 @@ void CheckPartyBattleTowerBanlist(void) StringAppend(gStringVar1, BattleText_Format8); return; } - + if (1 & counter) StringAppend(gStringVar1, BattleText_Format6); else @@ -1699,7 +1699,7 @@ void SetBattleTowerProperty(void) } gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; - sub_8135A3C(); + SaveCurrentWinStreak(); gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; @@ -1711,7 +1711,7 @@ void SetBattleTowerProperty(void) gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++; } - sub_8135A3C(); + SaveCurrentWinStreak(); gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; break; case 8: @@ -1801,118 +1801,35 @@ void SetBattleTowerParty(void) ReducePlayerPartyToThree(); } -#ifdef NONMATCHING -void sub_8135A3C(void) +static void SaveCurrentWinStreak(void) { - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - u16 winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + u8 levelType = gSaveBlock2.battleTower.battleTowerLevelType; + u16 streak = GetCurrentBattleTowerWinStreak(levelType); - if (gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] < winStreak) - { - gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] = winStreak; - } + if (gSaveBlock2.battleTower.recordWinStreaks[levelType] < streak) + gSaveBlock2.battleTower.recordWinStreaks[levelType] = streak; if (gSaveBlock2.battleTower.recordWinStreaks[0] > gSaveBlock2.battleTower.recordWinStreaks[1]) { - u16 streak = gSaveBlock2.battleTower.recordWinStreaks[0]; + streak = gSaveBlock2.battleTower.recordWinStreaks[0]; SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); + if (streak > 9999) - { gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; - } else - { gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; - } } else { - u16 streak = gSaveBlock2.battleTower.recordWinStreaks[1]; + streak = gSaveBlock2.battleTower.recordWinStreaks[1]; SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); + if (streak > 9999) - { gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; - } else - { gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; - } } } -#else -__attribute__((naked)) -void sub_8135A3C(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r6, _08135A84 @ =gSaveBlock2\n\ - ldr r1, _08135A88 @ =0x00000554\n\ - adds r0, r6, r1\n\ - ldrb r4, [r0]\n\ - lsls r4, 31\n\ - lsrs r4, 31\n\ - adds r0, r4, 0\n\ - bl GetCurrentBattleTowerWinStreak\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - lsls r4, 1\n\ - movs r3, 0xAC\n\ - lsls r3, 3\n\ - adds r2, r6, r3\n\ - adds r4, r2\n\ - ldrh r0, [r4]\n\ - cmp r0, r5\n\ - bcs _08135A66\n\ - strh r5, [r4]\n\ -_08135A66:\n\ - ldr r0, _08135A8C @ =0x00000562\n\ - adds r1, r6, r0\n\ - ldrh r0, [r2]\n\ - ldrh r3, [r1]\n\ - cmp r0, r3\n\ - bls _08135A94\n\ - adds r5, r0, 0\n\ - movs r0, 0x20\n\ - adds r1, r5, 0\n\ - bl SetGameStat\n\ - ldr r1, _08135A90 @ =0x0000270f\n\ - cmp r5, r1\n\ - bhi _08135AA4\n\ - b _08135AB4\n\ - .align 2, 0\n\ -_08135A84: .4byte gSaveBlock2\n\ -_08135A88: .4byte 0x00000554\n\ -_08135A8C: .4byte 0x00000562\n\ -_08135A90: .4byte 0x0000270f\n\ -_08135A94:\n\ - ldrh r5, [r1]\n\ - movs r0, 0x20\n\ - adds r1, r5, 0\n\ - bl SetGameStat\n\ - ldr r1, _08135AAC @ =0x0000270f\n\ - cmp r5, r1\n\ - bls _08135AB4\n\ -_08135AA4:\n\ - ldr r2, _08135AB0 @ =0x00000572\n\ - adds r0, r6, r2\n\ - strh r1, [r0]\n\ - b _08135ABA\n\ - .align 2, 0\n\ -_08135AAC: .4byte 0x0000270f\n\ -_08135AB0: .4byte 0x00000572\n\ -_08135AB4:\n\ - ldr r3, _08135AC0 @ =0x00000572\n\ - adds r0, r6, r3\n\ - strh r5, [r0]\n\ -_08135ABA:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08135AC0: .4byte 0x00000572\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_8135AC4(void) { @@ -1951,7 +1868,7 @@ void sub_8135AC4(void) } SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord); - sub_8135A3C(); + SaveCurrentWinStreak(); } void SaveBattleTowerProgress(void) -- cgit v1.2.3 From bbb65b40f9e6e68b0412ce47755d61200727fbf7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 7 Jan 2018 18:18:57 -0600 Subject: match DetermineBattleTowerPrize --- src/field/battle_tower.c | 72 +++--------------------------------------------- 1 file changed, 4 insertions(+), 68 deletions(-) (limited to 'src') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 24726a325..88115d28a 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -1985,79 +1985,15 @@ u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType) return winStreak; } -#ifdef NONMATCHING void DetermineBattleTowerPrize(void) { - u16 prizeItem; - struct SaveBlock2 *saveBlock = &gSaveBlock2; - u8 battleTowerLevelType = saveBlock->battleTower.battleTowerLevelType; + u8 levelType = gSaveBlock2.battleTower.battleTowerLevelType; - if (saveBlock->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1 > 5) - { - prizeItem = sLongStreakPrizes[Random() % ARRAY_COUNT(sLongStreakPrizes)]; - } + if (gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1 > 5) + gSaveBlock2.battleTower.prizeItem = sLongStreakPrizes[Random() % ARRAY_COUNT(sLongStreakPrizes)]; else - { - prizeItem = sShortStreakPrizes[Random() % ARRAY_COUNT(sShortStreakPrizes)]; - } - - saveBlock->battleTower.prizeItem = prizeItem; -} -#else -__attribute__((naked)) -void DetermineBattleTowerPrize(void) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - ldr r5, _08135DB0 @ =gSaveBlock2\n\ - ldr r1, _08135DB4 @ =0x00000554\n\ - adds r0, r5, r1\n\ - ldrb r0, [r0]\n\ - lsls r0, 31\n\ - lsrs r0, 31\n\ - lsls r0, 1\n\ - ldr r2, _08135DB8 @ =0x0000055c\n\ - adds r1, r5, r2\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - subs r0, 0x1\n\ - cmp r0, 0x5\n\ - ble _08135DC0\n\ - bl Random\n\ - ldr r4, _08135DBC @ =sLongStreakPrizes\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x9\n\ - b _08135DCC\n\ - .align 2, 0\n\ -_08135DB0: .4byte gSaveBlock2\n\ -_08135DB4: .4byte 0x00000554\n\ -_08135DB8: .4byte 0x0000055c\n\ -_08135DBC: .4byte sLongStreakPrizes\n\ -_08135DC0:\n\ - bl Random\n\ - ldr r4, _08135DE8 @ =sShortStreakPrizes\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x6\n\ -_08135DCC:\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r0, 15\n\ - adds r0, r4\n\ - ldrh r1, [r0]\n\ - movs r2, 0xAD\n\ - lsls r2, 3\n\ - adds r0, r5, r2\n\ - strh r1, [r0]\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08135DE8: .4byte sShortStreakPrizes\n\ - .syntax divided\n"); + gSaveBlock2.battleTower.prizeItem = sShortStreakPrizes[Random() % ARRAY_COUNT(sShortStreakPrizes)]; } -#endif // NONMATCHING void GiveBattleTowerPrize(void) { -- cgit v1.2.3 From b9ad9b3ad547b200e66b293169acbbfe4f50f76d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 19:20:15 -0500 Subject: through sub_8096874 --- src/engine/naming_screen.c | 2 -- src/field/use_pokeblock.c | 1 - src/pokemon/pokemon_storage_system.c | 47 ++++++++++++++++++++++++++++++++++++ src/pokenav_before.c | 5 +--- 4 files changed, 48 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 440504d5a..6f34fd678 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -26,8 +26,6 @@ #define COLUMN_COUNT 10 #endif -extern u16 gKeyRepeatStartDelay; - extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality); const u8 gSpriteImage_83CE094[] = INCBIN_U8("graphics/naming_screen/pc_icon/0.4bpp"); diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 7253ac901..354193c14 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -104,7 +104,6 @@ static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL; EWRAM_DATA u8 gPokeblockMonID = 0; EWRAM_DATA s16 gPokeblockGain = 0; -extern u16 gKeyRepeatStartDelay; extern u16 gSpecialVar_ItemId; // FIXME: remove after merge of #349 Pokeblock static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 30c0f2b67..9e559354b 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -24,9 +24,17 @@ struct PSS_MenuStringPtrs { const u8 *desc; }; +struct UnkStruct_2000020 { + struct UnkStruct_2000020 *unk_00; + u8 unk_04; + u8 unk_05; +}; + struct PokemonStorageSystemData { u8 filler_0000[5]; u8 unk_0005; + u8 filler_0006[26]; + struct UnkStruct_2000020 unk_0020[100]; // refine size later }; struct UnkPSSStruct_2002370 { @@ -53,6 +61,8 @@ void sub_8096784(struct Sprite *sprite); void task_intro_29(u8 whichMenu); void sub_8096884(void); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); +void sub_809B0D4(void); +void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 * a1, u8 a2); const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { {PCText_WithdrawPoke, PCText_MovePokeToParty}, @@ -112,6 +122,7 @@ EWRAM_DATA u8 gUnknown_02038474; EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478; EWRAM_DATA u8 gUnknown_0203847C; EWRAM_DATA u8 gUnknown_0203847D; +EWRAM_DATA u8 gUnknown_0203847E; static u8 CountPokemonInBoxN(u8 boxId) { @@ -753,6 +764,42 @@ void task_intro_29(u8 whichMenu) SetMainCallback2(sub_8096884); } +void sub_80967DC(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; +} + +void sub_8096804(void) +{ + ResetPaletteFade(); + ResetSpriteData(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + ResetTasks(); + gReservedSpriteTileCount = 0x280; + sub_809CFDC(ePokemonStorageSystem.unk_0020, ePokemonStorageSystem.unk_0020 + 1, 8); + gKeyRepeatStartDelay = 20; +} + +void sub_8096848(void) +{ + sub_809B0D4(); + gUnknown_0203847C = (ePokemonStorageSystem.unk_0005 == 1 ? 1 : 0); + gUnknown_0203847E = 0; +} + +void sub_8096874(void) +{ + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 7693cba7d..53f17b211 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -294,9 +294,6 @@ extern void sub_80F5BF0(); extern void sub_80F6F64(); extern void sub_80F19FC(); -extern u16 gKeyRepeatStartDelay; - - void sub_80EBA5C() { switch (gMain.state) { default: @@ -378,7 +375,7 @@ void sub_80EBC10() { u16 i; u16 *var1; - gKeyRepeatStartDelay = 0x14; + gKeyRepeatStartDelay = 20; ewram0_10.playerPartyCount = CalculatePlayerPartyCount(); ewram0_10.var6ddc = 0; ewram0_10.var9344 = 0; -- cgit v1.2.3 From bfeaa80fcd9409645325c2f7ae94850f970fbb58 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 19:47:59 -0500 Subject: through sub_8096884 --- src/pokemon/mon_markings.c | 20 +--------- src/pokemon/pokemon_storage_system.c | 74 +++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index b4144ea34..d27719c4a 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -5,6 +5,7 @@ #include "constants/songs.h" #include "sound.h" #include "sprite.h" +#include "mon_markings.h" #ifdef GERMAN #define MENU_TEXT_SPRITE_X_OFFSET 24 @@ -12,25 +13,6 @@ #define MENU_TEXT_SPRITE_X_OFFSET 32 #endif -struct PokemonMarkMenu -{ - /*0x0000*/ u16 baseTileTag; - /*0x0002*/ u16 basePaletteTag; - /*0x0004*/ u8 markings; // bit flags - /*0x0005*/ s8 cursorPos; - /*0x0006*/ bool8 markingsArray[4]; - /*0x000A*/ u8 cursorBaseY; - /*0x000B*/ bool8 spriteSheetLoadRequired; - /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window - /*0x0014*/ struct Sprite *menuMarkingSprites[4]; - /*0x0024*/ struct Sprite *menuTextSprite; - /*0x0028*/ const u8 *frameTiles; - /*0x002C*/ const u16 *framePalette; - /*0x0030*/ u8 menuWindowSpriteTiles[0x1000]; - /*0x1030*/ u8 filler1030[0x80]; - /*0x10B0*/ u8 tileLoadState; -}; - extern u8 gPokenavConditionMenuMisc_Gfx[]; extern u16 gUnknown_08E966B8[]; diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 9e559354b..91d56a4b9 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -3,6 +3,7 @@ #include "constants/songs.h" #include "sound.h" #include "field_weather.h" +#include "mon_markings.h" #include "overworld.h" #include "field_fadetransition.h" #include "menu.h" @@ -34,7 +35,9 @@ struct PokemonStorageSystemData { u8 filler_0000[5]; u8 unk_0005; u8 filler_0006[26]; - struct UnkStruct_2000020 unk_0020[100]; // refine size later + struct UnkStruct_2000020 unk_0020[595]; // refine size later + u8 filler_12b8[4]; + struct PokemonMarkMenu unk_12bc; }; struct UnkPSSStruct_2002370 { @@ -60,6 +63,16 @@ void sub_80966F4(const u8 *sourceString, u16 x, u16 y); void sub_8096784(struct Sprite *sprite); void task_intro_29(u8 whichMenu); void sub_8096884(void); +void sub_8096AFC(void); +void sub_8096B38(void); +void sub_8096BE0(void (*func)(void)); +void sub_8096BF0(void); +void sub_8097DE0(void); +void sub_8097E70(void); +void sub_8098400(void); +void sub_8099BF8(u8 a0); +void sub_8098B48(void); +void sub_809AA24(void); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); void sub_809B0D4(void); void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 * a1, u8 a2); @@ -800,6 +813,65 @@ void sub_8096874(void) REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; } +void sub_8096884(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + sub_8096804(); + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6D00); + gMain.state++; + break; + case 2: + InitMenuWindow(&gWindowConfig_81E6D00); + MenuZeroFillScreen(); + gMain.state++; + break; + case 3: + sub_80967DC(); + sub_8096848(); + gMain.state++; + break; + case 4: + sub_8098B48(); + sub_809AA24(); + gMain.state++; + break; + case 5: + sub_8097DE0(); + gMain.state++; + break; + case 6: + sub_8097E70(); + gMain.state++; + break; + case 7: + sub_8098400(); + gMain.state++; + break; + case 8: + sub_8099BF8(gPokemonStorage.currentBox); + ePokemonStorageSystem.unk_12bc.baseTileTag = 0x000a; + ePokemonStorageSystem.unk_12bc.basePaletteTag = 0xdacb; + sub_80F727C(&ePokemonStorageSystem.unk_12bc); + sub_80F7404(); + gMain.state++; + break; + case 9: + sub_8096874(); + sub_8096BE0(sub_8096BF0); + SetMainCallback2(sub_8096B38); + SetVBlankCallback(sub_8096AFC); + gMain.state++; + break; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 376e2470e9e4f5a0a7cc94b9d7677ea6f7601dfa Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 8 Jan 2018 01:49:16 +0100 Subject: Matched sub_812AF98 --- src/battle/anim/sfx.c | 72 ++++----------------------------------------------- 1 file changed, 5 insertions(+), 67 deletions(-) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 981022f1e..99f050dcb 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -29,11 +29,10 @@ void sub_812AF30(u8 taskId) TASK.func = sub_812AF98; } -#ifdef NONMATCHING -void sub_812AF98(u8 taskId) // r4 := TASK +void sub_812AF98(u8 taskId) { - s16 pan = TASK.data[2]; // r5 - s8 var0 = TASK.data[4]; // r6 + s16 pan = TASK.data[2]; + s8 var0 = TASK.data[4]; if (++TASK.data[11] == 111) { @@ -48,71 +47,10 @@ void sub_812AF98(u8 taskId) // r4 := TASK TASK.data[10] = 0; PlaySE12WithPanning(TASK.data[0], pan); } - TASK.data[2] = sub_8077104(var0 + pan); + pan += var0; + TASK.data[2] = sub_8077104(pan); } } -#else -__attribute__((naked)) -void sub_812AF98(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r2, _0812AFC8 @ =gTasks\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r4, r1, r2\n\ - ldrh r5, [r4, 0xC]\n\ - ldrb r6, [r4, 0x10]\n\ - ldrh r0, [r4, 0x1E]\n\ - adds r0, 0x1\n\ - movs r1, 0\n\ - strh r0, [r4, 0x1E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x6F\n\ - bne _0812AFD0\n\ - movs r0, 0x5\n\ - strh r0, [r4, 0x1C]\n\ - strh r1, [r4, 0x1E]\n\ - ldr r0, _0812AFCC @ =sub_812B004\n\ - str r0, [r4]\n\ - b _0812AFFE\n\ - .align 2, 0\n\ -_0812AFC8: .4byte gTasks\n\ -_0812AFCC: .4byte sub_812B004\n\ -_0812AFD0:\n\ - ldrh r0, [r4, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xB\n\ - bne _0812AFEA\n\ - strh r1, [r4, 0x1C]\n\ - ldrh r0, [r4, 0x8]\n\ - lsls r1, r5, 24\n\ - asrs r1, 24\n\ - bl PlaySE12WithPanning\n\ -_0812AFEA:\n\ - lsls r1, r6, 24\n\ - asrs r1, 24\n\ - lsls r0, r5, 16\n\ - asrs r0, 16\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - bl sub_8077104\n\ - strh r0, [r4, 0xC]\n\ -_0812AFFE:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_812B004(u8 taskId) { -- cgit v1.2.3 From 3f9ca66670d59f8fad77c5a8952f1d43f13da1ea Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 7 Jan 2018 18:52:34 -0600 Subject: match CB2_PartyMenuMain --- src/field/party_menu.c | 56 ++++---------------------------------------------- 1 file changed, 4 insertions(+), 52 deletions(-) (limited to 'src') diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 9c1150515..7160da93b 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -490,9 +490,6 @@ extern const u8 gStatusPal_Icons[]; #define WINDOW_RIGHT (29) #endif - -#ifdef NONMATCHING -// Main handler for the party menu. void CB2_PartyMenuMain(void) { const struct PartyMonTextSettingsStruct *textSettings; @@ -506,62 +503,17 @@ void CB2_PartyMenuMain(void) { // Draw mon name, level, and hp sprites DrawPartyMenuMonText( - textSettings[i].xOffset * 8, - textSettings[i].yOffset * 8, - textSettings[i].oamSettings, + textSettings->xOffset * 8, + textSettings->yOffset * 8, + textSettings->oamSettings, 0, (i << 5) | 0x200); + textSettings++; } RunTasks(); UpdatePaletteFade(); } -#else -__attribute__((naked)) -void CB2_PartyMenuMain(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - bl AnimateSprites\n\ - bl BuildOamBuffer\n\ - ldr r0, _0806AF2C @ =gPartyMenuType\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 4\n\ - ldr r1, _0806AF30 @ =PartyMonTextSettings\n\ - adds r5, r0, r1\n\ - movs r6, 0\n\ -_0806AEF8:\n\ - ldrb r0, [r5]\n\ - lsls r0, 3\n\ - ldrb r1, [r5, 0x1]\n\ - lsls r1, 3\n\ - ldr r2, [r5, 0x4]\n\ - lsls r3, r6, 5\n\ - movs r4, 0x80\n\ - lsls r4, 2\n\ - orrs r3, r4\n\ - str r3, [sp]\n\ - movs r3, 0\n\ - bl DrawPartyMenuMonText\n\ - adds r5, 0x8\n\ - adds r6, 0x1\n\ - cmp r6, 0x5\n\ - ble _0806AEF8\n\ - bl RunTasks\n\ - bl UpdatePaletteFade\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0806AF2C: .4byte gPartyMenuType\n\ -_0806AF30: .4byte PartyMonTextSettings\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void VBlankCB_PartyMenu(void) { -- cgit v1.2.3 From 0947fdf167bff7fe67e1344fea8b287fc59a6cd2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 21:27:40 -0500 Subject: sub_80969A0 --- src/pokemon/pokemon_storage_system.c | 97 +++++++++++++++++++++++++++++++++--- 1 file changed, 90 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 91d56a4b9..2b36f5d71 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -67,15 +67,19 @@ void sub_8096AFC(void); void sub_8096B38(void); void sub_8096BE0(void (*func)(void)); void sub_8096BF0(void); +void sub_8096C68(void); void sub_8097DE0(void); void sub_8097E70(void); void sub_8098400(void); void sub_8099BF8(u8 a0); void sub_8098B48(void); -void sub_809AA24(void); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); +void sub_809AA24(void); +void sub_809AA98(void); void sub_809B0D4(void); -void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 * a1, u8 a2); +void sub_809BBC0(void); +void sub_809BD14(void); +void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { {PCText_WithdrawPoke, PCText_MovePokeToParty}, @@ -131,11 +135,23 @@ extern const struct PokemonStorageSystemData *gUnknown_083B6DB4; extern u8 *const gUnknown_083B6DB8; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; -EWRAM_DATA u8 gUnknown_02038474; -EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478; -EWRAM_DATA u8 gUnknown_0203847C; -EWRAM_DATA u8 gUnknown_0203847D; -EWRAM_DATA u8 gUnknown_0203847E; +EWRAM_DATA u8 gUnknown_02038470[3] = {}; +EWRAM_DATA u8 gUnknown_02038473 = 0; +EWRAM_DATA u8 gUnknown_02038474 = 0; +EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL; +EWRAM_DATA u8 gUnknown_0203847C = 0; +EWRAM_DATA u8 gUnknown_0203847D = 0; +EWRAM_DATA u8 gUnknown_0203847E = 0; +EWRAM_DATA u8 gUnknown_0203847F = 0; +EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; +EWRAM_DATA u8 gUnknown_020384E4 = 0; +EWRAM_DATA u8 gUnknown_020384E5 = 0; +EWRAM_DATA u8 gUnknown_020384E6 = 0; +EWRAM_DATA u8 gUnknown_020384E7 = 0; +EWRAM_DATA u8 gUnknown_020384E8 = 0; +EWRAM_DATA u8 gUnknown_020384E9 = 0; +EWRAM_DATA u16 gUnknown_020384EA = 0; +EWRAM_DATA u32 gUnknown_020384EC = 0; static u8 CountPokemonInBoxN(u8 boxId) { @@ -872,6 +888,73 @@ void sub_8096884(void) } } +void sub_80969A0(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0x0000; + ePokemonStorageSystem.unk_0005 = gUnknown_0203847D; + sub_8096804(); + if (gUnknown_0203847F == 1) + sub_809BBC0(); + if (gUnknown_0203847F == 0) + sub_809BD14(); + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6D00); + gMain.state++; + break; + case 2: + InitMenuWindow(&gWindowConfig_81E6D00); + MenuZeroFillScreen(); + gMain.state++; + break; + case 3: + sub_80967DC(); + gMain.state++; + break; + case 4: + sub_8098B48(); + sub_809AA98(); + gMain.state++; + break; + case 5: + sub_8097DE0(); + gMain.state++; + break; + case 6: + sub_8097E70(); + gMain.state++; + break; + case 7: + sub_8098400(); + gMain.state++; + break; + case 8: + sub_8099BF8(gPokemonStorage.currentBox); + ePokemonStorageSystem.unk_12bc.baseTileTag = 0x000a; + ePokemonStorageSystem.unk_12bc.basePaletteTag = 0xdacb; + sub_80F727C(&ePokemonStorageSystem.unk_12bc); + sub_80F7404(); + gMain.state++; + break; + case 9: + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); + SetVBlankCallback(sub_8096AFC); + gMain.state++; + break; + case 10: + sub_8096874(); + sub_8096BE0(sub_8096C68); + SetMainCallback2(sub_8096B38); + gMain.state++; + break; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From ceebbe19918520c65ed9bdcd79d4ae5fbb669d88 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 22:03:21 -0500 Subject: through sub_8096BE0 --- src/pokemon/pokemon_storage_system.c | 74 +++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 2b36f5d71..f09d9b302 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -13,6 +13,8 @@ #include "event_data.h" #include "ewram.h" #include "script.h" +#include "pokemon_summary_screen.h" +#include "naming_screen.h" #include "pokemon_storage_system.h" struct StorageAction { @@ -31,15 +33,6 @@ struct UnkStruct_2000020 { u8 unk_05; }; -struct PokemonStorageSystemData { - u8 filler_0000[5]; - u8 unk_0005; - u8 filler_0006[26]; - struct UnkStruct_2000020 unk_0020[595]; // refine size later - u8 filler_12b8[4]; - struct PokemonMarkMenu unk_12bc; -}; - struct UnkPSSStruct_2002370 { struct Sprite *unk_0000; struct Sprite *unk_0004[4]; @@ -51,6 +44,27 @@ struct UnkPSSStruct_2002370 { u8 unk_023e; u16 unk_0240; u16 unk_0242; +}; // 0244 + +struct PokemonStorageSystemData { + void (*unk_0000)(void); + u8 unk_0004; + u8 unk_0005; + u8 unk_0006; + u16 unk_0008; + u16 unk_000a; + u8 filler_000c[20]; + struct UnkStruct_2000020 unk_0020[274]; // refine size later + u8 filler_08b0[4]; + u16 unk_08b4; + u8 filler_08b6[0xa06]; + struct PokemonMarkMenu unk_12bc; + struct UnkPSSStruct_2002370 unk_2370; + u8 filler_25b4[0xd8]; + u8 unk_268c; + u8 unk_268d; + u8 unk_268e; + struct Pokemon *unk_2690; }; void StorageSystemCreatePrimaryMenu(u8 whichMenu); @@ -69,8 +83,10 @@ void sub_8096BE0(void (*func)(void)); void sub_8096BF0(void); void sub_8096C68(void); void sub_8097DE0(void); +void sub_8097E44(void); void sub_8097E70(void); void sub_8098400(void); +void sub_8098734(void); void sub_8099BF8(u8 a0); void sub_8098B48(void); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); @@ -80,6 +96,7 @@ void sub_809B0D4(void); void sub_809BBC0(void); void sub_809BD14(void); void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); +void sub_809CFF0(void); const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { {PCText_WithdrawPoke, PCText_MovePokeToParty}, @@ -955,6 +972,45 @@ void sub_80969A0(void) } } +void sub_8096AFC(void) +{ + REG_BG2HOFS = ePokemonStorageSystem.unk_08b4; + REG_BG3HOFS = ePokemonStorageSystem.unk_000a; + REG_BG3VOFS = ePokemonStorageSystem.unk_0008; + LoadOam(); + ProcessSpriteCopyRequests(); + sub_809CFF0(); + TransferPlttBuffer(); +} + +void sub_8096B38(void) +{ + ePokemonStorageSystem.unk_0000(); + sub_8097E44(); + sub_8098734(); + AnimateSprites(); + BuildOamBuffer(); +} + +void sub_8096B5C(void) +{ + switch (ePokemonStorageSystem.unk_0006) + { + case 0: + ShowPokemonSummaryScreen(ePokemonStorageSystem.unk_2690, ePokemonStorageSystem.unk_268d, ePokemonStorageSystem.unk_268c, sub_80969A0, ePokemonStorageSystem.unk_268e); + break; + case 1: + DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0); + break; + } +} + +void sub_8096BE0(void (*func)(void)) +{ + ePokemonStorageSystem.unk_0000 = func; + ePokemonStorageSystem.unk_0004 = 0; +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 02fea36a2e43523c9e9401897ac2fdbeb37ed3d4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 22:25:16 -0500 Subject: through sub_8096C68 --- src/field/pc_screen_effect.c | 17 +++-------------- src/pokemon/pokemon_storage_system.c | 35 ++++++++++++++++++++++++++++++++++- src/scene/hall_of_fame.c | 4 ++-- 3 files changed, 39 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/field/pc_screen_effect.c b/src/field/pc_screen_effect.c index 364fca0aa..dda569ea4 100644 --- a/src/field/pc_screen_effect.c +++ b/src/field/pc_screen_effect.c @@ -2,18 +2,7 @@ #include "main.h" #include "palette.h" #include "sprite.h" - -struct UnkStruct -{ - /*0x00*/ u16 tileTag; - /*0x02*/ u16 paletteTag; - /*0x04*/ u16 unk04; - /*0x06*/ u16 unk06; - /*0x08*/ u16 unk08; - /*0x0A*/ u16 unk0A; - /*0x0C*/ s16 unk0C; - /*0x10*/ u32 selectedPalettes; -}; +#include "pc_screen_effect.h" void sub_80C603C(void); void sub_80C6078(void); @@ -30,7 +19,7 @@ extern const u16 gUnknownPal_083D18EC[16]; extern const u8 gUnknownGfx_083D190C[128]; -extern struct UnkStruct *gUnknown_020387EC; +extern struct PCScreenEffectStruct *gUnknown_020387EC; const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 }; @@ -58,7 +47,7 @@ const struct SpriteTemplate gSpriteTemplate_83D18C0 = sub_80C6130, }; -void sub_80C5CD4(struct UnkStruct *unkStruct) +void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct) { u16 i; diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index f09d9b302..d6119476c 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -14,6 +14,7 @@ #include "ewram.h" #include "script.h" #include "pokemon_summary_screen.h" +#include "pc_screen_effect.h" #include "naming_screen.h" #include "pokemon_storage_system.h" @@ -53,7 +54,7 @@ struct PokemonStorageSystemData { u8 unk_0006; u16 unk_0008; u16 unk_000a; - u8 filler_000c[20]; + struct PCScreenEffectStruct unk_000c; struct UnkStruct_2000020 unk_0020[274]; // refine size later u8 filler_08b0[4]; u16 unk_08b4; @@ -82,6 +83,7 @@ void sub_8096B38(void); void sub_8096BE0(void (*func)(void)); void sub_8096BF0(void); void sub_8096C68(void); +void sub_8096C84(void); void sub_8097DE0(void); void sub_8097E44(void); void sub_8097E70(void); @@ -1011,6 +1013,37 @@ void sub_8096BE0(void (*func)(void)) ePokemonStorageSystem.unk_0004 = 0; } +void sub_8096BF0(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + BlendPalettes(0xffffffff, 16, 0); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + PlaySE(SE_PC_LOGON); + ePokemonStorageSystem.unk_000c.tileTag = 14; + ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0; + ePokemonStorageSystem.unk_000c.unk04 = 0; + ePokemonStorageSystem.unk_000c.unk06 = 0; + sub_80C5CD4(&ePokemonStorageSystem.unk_000c); + BlendPalettes(0xffffffff, 0, 0); + ePokemonStorageSystem.unk_0004++; + break; + case 2: + if (sub_80C5DCC()) + sub_8096BE0(sub_8096C84); + break; + } +} + +void sub_8096C68(void) +{ + if (!UpdatePaletteFade()) + sub_8096BE0(sub_8096C84); +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 1751ee99c..812c28137 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -17,6 +17,7 @@ #include "decompress.h" #include "random.h" #include "trig.h" +#include "pc_screen_effect.h" #include "ewram.h" static EWRAM_DATA u32 sUnknown_0203931C = 0; @@ -89,7 +90,6 @@ static bool8 sub_81438C4(void); // functions from different files void sub_81439D0(void); -void sub_80C5CD4(void*); // ? void sub_80C5E38(void*); // ? bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); @@ -811,7 +811,7 @@ void sub_81428CC(void) fameMons = eHallOfFameMons1; fameMons->mons[0] = sDummyFameMon; - sub_80C5CD4(fameMons); + sub_80C5CD4((struct PCScreenEffectStruct *)fameMons); gMain.state++; } break; -- cgit v1.2.3 From 17d5ba39acb897e07e6842cbff5b1172cc6f7951 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 7 Jan 2018 19:36:27 -0800 Subject: Match sub_806BC3C --- src/field/party_menu.c | 72 +++----------------------------------------------- 1 file changed, 3 insertions(+), 69 deletions(-) (limited to 'src') diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7160da93b..790aede60 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -1178,8 +1178,6 @@ void sub_806BBEC(u8 a) } } -#ifdef NONMATCHING -// The original THUMB is preserving r8 for seemingly no reason. Unsure how to match. void sub_806BC3C(u8 monIndex, u8 b) { u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex]; @@ -1192,74 +1190,10 @@ void sub_806BC3C(u8 monIndex, u8 b) vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C; vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C; } + + // Some dead code was likely optimized out, but the compiler still think r8 was used. + asm("":::"r8"); } -#else -__attribute__((naked)) -void sub_806BC3C(u8 monIndex, u8 b) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - adds r4, r0, 0\n\ - adds r5, r1, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r5, 24\n\ - lsrs r5, 24\n\ - ldr r6, _0806BCB0 @ =gUnknown_08376918\n\ - bl IsDoubleBattle\n\ - lsls r4, 2\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r1, r0, 1\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r4, r1\n\ - adds r4, r6\n\ - ldr r7, [r4]\n\ - movs r6, 0\n\ - adds r0, r5, 0\n\ - movs r1, 0x7\n\ - bl __udivsi3\n\ - lsls r0, 24\n\ - lsrs r4, r0, 19\n\ - ldr r5, _0806BCB4 @ =gUnknown_08E9A300\n\ - movs r0, 0x86\n\ - lsls r0, 1\n\ - adds r3, r0, 0\n\ -_0806BC7C:\n\ - adds r1, r6, r4\n\ - lsls r2, r6, 1\n\ - adds r2, r7\n\ - lsls r0, r1, 1\n\ - adds r0, r5\n\ - ldrh r0, [r0]\n\ - adds r0, r3, r0\n\ - strh r0, [r2]\n\ - adds r2, 0x40\n\ - adds r1, 0x20\n\ - lsls r1, 1\n\ - adds r1, r5\n\ - ldrh r1, [r1]\n\ - adds r0, r3, r1\n\ - strh r0, [r2]\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r6, 0x6\n\ - bls _0806BC7C\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0806BCB0: .4byte gUnknown_08376918\n\ -_0806BCB4: .4byte gUnknown_08E9A300\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void unref_sub_806BCB8(u8 a) { -- cgit v1.2.3 From 36841a8498134931be3d1c73927f6fec4482fb30 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 6 Jan 2018 13:56:53 -0800 Subject: Decompile more battle_2 functions --- src/battle/battle_2.c | 1645 +++++++++++++++++++++++++++++++++++++++++++++++- src/battle/battle_ai.c | 4 +- 2 files changed, 1646 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index b0654950b..90d0d40e3 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -4,6 +4,7 @@ #include "battle_interface.h" #include "battle_setup.h" #include "data2.h" +#include "event_data.h" #include "item.h" #include "link.h" #include "main.h" @@ -26,9 +27,10 @@ #include "trig.h" #include "unknown_task.h" #include "util.h" +#include "constants/battle_move_effects.h" #include "constants/items.h" #include "constants/hold_effects.h" -#include "constants/battle_move_effects.h" +#include "constants/moves.h" #include "ewram.h" struct UnknownStruct7 @@ -56,6 +58,8 @@ struct UnknownStruct12 extern const u16 gUnknown_08D004E0[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; +extern u8 gStatStageRatios[][2]; +extern u8 gUnknown_02024A76[4]; extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; extern u8 gBattleBufferB[][0x200]; extern u8 gActiveBank; @@ -2352,3 +2356,1642 @@ void sub_8012324(void) } } */ +__attribute__((naked)) +void sub_8012324(void) +{ + 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, 0x1C\n\ + ldr r0, _08012340 @ =gBattleCommunication\n\ + movs r1, 0\n\ + strb r1, [r0, 0x4]\n\ + ldr r0, _08012344 @ =gActiveBank\n\ + strb r1, [r0]\n\ + ldr r0, _08012348 @ =gNoOfAllBanks\n\ + bl _08012F74\n\ + .align 2, 0\n\ +_08012340: .4byte gBattleCommunication\n\ +_08012344: .4byte gActiveBank\n\ +_08012348: .4byte gNoOfAllBanks\n\ +_0801234C:\n\ + ldr r4, _08012374 @ =gActiveBank\n\ + ldrb r0, [r4]\n\ + bl GetBankIdentity\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + ldr r1, _08012378 @ =gBattleCommunication\n\ + ldrb r0, [r4]\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x6\n\ + bls _08012368\n\ + bl _08012F66\n\ +_08012368:\n\ + lsls r0, 2\n\ + ldr r1, _0801237C @ =_08012380\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08012374: .4byte gActiveBank\n\ +_08012378: .4byte gBattleCommunication\n\ +_0801237C: .4byte _08012380\n\ + .align 2, 0\n\ +_08012380:\n\ + .4byte _0801239C\n\ + .4byte _080124C8\n\ + .4byte _08012A28\n\ + .4byte _08012DA8\n\ + .4byte _08012E50\n\ + .4byte _08012E94\n\ + .4byte _08012F38\n\ +_0801239C:\n\ + ldr r4, _08012434 @ =gSharedMem\n\ + ldr r0, _08012438 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + ldr r1, _0801243C @ =0x00016068\n\ + adds r0, r1\n\ + adds r0, r4\n\ + movs r1, 0x6\n\ + strb r1, [r0]\n\ + ldr r0, _08012440 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080123F8\n\ + movs r1, 0x2\n\ + movs r0, 0x2\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + beq _080123F8\n\ + eors r5, r1\n\ + adds r0, r5, 0\n\ + bl GetBankByPlayerAI\n\ + ldr r2, _08012444 @ =0x000160a6\n\ + adds r1, r4, r2\n\ + ldrb r1, [r1]\n\ + ldr r2, _08012448 @ =gBitTable\n\ + lsls r0, 24\n\ + lsrs r0, 22\n\ + adds r0, r2\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + bne _080123F8\n\ + ldr r4, _0801244C @ =gBattleCommunication\n\ + adds r0, r5, 0\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r0, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x4\n\ + beq _080123F8\n\ + bl _08012F66\n\ +_080123F8:\n\ + ldr r0, _08012434 @ =gSharedMem\n\ + ldr r3, _08012444 @ =0x000160a6\n\ + adds r0, r3\n\ + ldrb r3, [r0]\n\ + ldr r1, _08012448 @ =gBitTable\n\ + ldr r4, _08012438 @ =gActiveBank\n\ + ldrb r2, [r4]\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ands r3, r0\n\ + cmp r3, 0\n\ + beq _08012468\n\ + ldr r0, _08012450 @ =gActionForBanks\n\ + adds r0, r2, r0\n\ + movs r1, 0xD\n\ + strb r1, [r0]\n\ + ldr r0, _08012440 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08012454\n\ + ldr r0, _0801244C @ =gBattleCommunication\n\ + ldrb r1, [r4]\n\ + adds r1, r0\n\ + movs r0, 0x4\n\ + strb r0, [r1]\n\ + bl _08012F66\n\ + .align 2, 0\n\ +_08012434: .4byte gSharedMem\n\ +_08012438: .4byte gActiveBank\n\ +_0801243C: .4byte 0x00016068\n\ +_08012440: .4byte gBattleTypeFlags\n\ +_08012444: .4byte 0x000160a6\n\ +_08012448: .4byte gBitTable\n\ +_0801244C: .4byte gBattleCommunication\n\ +_08012450: .4byte gActionForBanks\n\ +_08012454:\n\ + ldr r0, _08012464 @ =gBattleCommunication\n\ + ldrb r1, [r4]\n\ + adds r1, r0\n\ + movs r0, 0x3\n\ + strb r0, [r1]\n\ + bl _08012F66\n\ + .align 2, 0\n\ +_08012464: .4byte gBattleCommunication\n\ +_08012468:\n\ + ldr r1, _0801249C @ =gBattleMons\n\ + movs r0, 0x58\n\ + muls r0, r2\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ + movs r0, 0x80\n\ + lsls r0, 5\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08012488\n\ + movs r0, 0x80\n\ + lsls r0, 15\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _080124A8\n\ +_08012488:\n\ + ldr r0, _080124A0 @ =gActionForBanks\n\ + adds r0, r2, r0\n\ + strb r3, [r0]\n\ + ldr r1, _080124A4 @ =gBattleCommunication\n\ + ldrb r0, [r4]\n\ + adds r0, r1\n\ + movs r1, 0x3\n\ + strb r1, [r0]\n\ + bl _08012F66\n\ + .align 2, 0\n\ +_0801249C: .4byte gBattleMons\n\ +_080124A0: .4byte gActionForBanks\n\ +_080124A4: .4byte gBattleCommunication\n\ +_080124A8:\n\ + ldr r0, _080124C0 @ =gActionForBanks\n\ + ldrb r1, [r0]\n\ + ldr r0, _080124C4 @ =gBattleBufferB\n\ + ldrb r2, [r0, 0x1]\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 8\n\ + orrs r2, r0\n\ + movs r0, 0\n\ + bl Emitcmd18\n\ + bl _08012E32\n\ + .align 2, 0\n\ +_080124C0: .4byte gActionForBanks\n\ +_080124C4: .4byte gBattleBufferB\n\ +_080124C8:\n\ + ldr r4, _08012520 @ =gBattleExecBuffer\n\ + ldr r1, _08012524 @ =gBitTable\n\ + ldr r3, _08012528 @ =gActiveBank\n\ + ldrb r5, [r3]\n\ + lsls r0, r5, 2\n\ + adds r0, r1\n\ + ldr r2, [r0]\n\ + lsls r0, r2, 4\n\ + movs r1, 0xF0\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + orrs r0, r2\n\ + lsls r1, r2, 8\n\ + orrs r0, r1\n\ + lsls r2, 12\n\ + orrs r0, r2\n\ + ldr r1, [r4]\n\ + ands r1, r0\n\ + mov r8, r3\n\ + cmp r1, 0\n\ + beq _080124F6\n\ + bl _08012F66\n\ +_080124F6:\n\ + ldr r2, _0801252C @ =gActionForBanks\n\ + adds r2, r5, r2\n\ + ldr r1, _08012530 @ =gBattleBufferB\n\ + lsls r0, r5, 9\n\ + adds r1, 0x1\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + ldrb r0, [r3]\n\ + lsls r0, 9\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0xC\n\ + bls _08012514\n\ + b _08012968\n\ +_08012514:\n\ + lsls r0, 2\n\ + ldr r1, _08012534 @ =_08012538\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08012520: .4byte gBattleExecBuffer\n\ +_08012524: .4byte gBitTable\n\ +_08012528: .4byte gActiveBank\n\ +_0801252C: .4byte gActionForBanks\n\ +_08012530: .4byte gBattleBufferB\n\ +_08012534: .4byte _08012538\n\ + .align 2, 0\n\ +_08012538:\n\ + .4byte _0801256C\n\ + .4byte _080126B4\n\ + .4byte _080126E0\n\ + .4byte _08012968\n\ + .4byte _08012968\n\ + .4byte _080128B0\n\ + .4byte _08012908\n\ + .4byte _08012968\n\ + .4byte _08012968\n\ + .4byte _08012968\n\ + .4byte _08012968\n\ + .4byte _08012968\n\ + .4byte _0801292C\n\ +_0801256C:\n\ + bl AreAllMovesUnusable\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080125D0\n\ + ldr r0, _080125B4 @ =gBattleCommunication\n\ + ldr r2, _080125B8 @ =gActiveBank\n\ + ldrb r1, [r2]\n\ + adds r1, r0\n\ + movs r4, 0\n\ + movs r0, 0x5\n\ + strb r0, [r1]\n\ + ldr r3, _080125BC @ =gSharedMem\n\ + ldrb r0, [r2]\n\ + ldr r1, _080125C0 @ =0x00016060\n\ + adds r0, r1\n\ + adds r0, r3\n\ + strb r4, [r0]\n\ + ldrb r0, [r2]\n\ + ldr r4, _080125C4 @ =0x00016094\n\ + adds r0, r4\n\ + adds r0, r3\n\ + movs r1, 0x3\n\ + strb r1, [r0]\n\ + ldrb r1, [r2]\n\ + ldr r0, _080125C8 @ =0x00016010\n\ + adds r2, r1, r0\n\ + adds r2, r3\n\ + ldr r0, _080125CC @ =gBattleBufferB\n\ + lsls r1, 9\n\ + adds r0, 0x3\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + strb r0, [r2]\n\ + bl _08012F90\n\ + .align 2, 0\n\ +_080125B4: .4byte gBattleCommunication\n\ +_080125B8: .4byte gActiveBank\n\ +_080125BC: .4byte gSharedMem\n\ +_080125C0: .4byte 0x00016060\n\ +_080125C4: .4byte 0x00016094\n\ +_080125C8: .4byte 0x00016010\n\ +_080125CC: .4byte gBattleBufferB\n\ +_080125D0:\n\ + ldr r1, _080125FC @ =gDisableStructs\n\ + ldr r5, _08012600 @ =gActiveBank\n\ + ldrb r4, [r5]\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrh r2, [r0, 0x6]\n\ + cmp r2, 0\n\ + beq _0801260C\n\ + ldr r1, _08012604 @ =gChosenMovesByBanks\n\ + lsls r0, r4, 1\n\ + adds r0, r1\n\ + strh r2, [r0]\n\ + ldr r1, _08012608 @ =gBattleCommunication\n\ + ldrb r0, [r5]\n\ + adds r0, r1\n\ + movs r1, 0x3\n\ + strb r1, [r0]\n\ + bl _08012F90\n\ + .align 2, 0\n\ +_080125FC: .4byte gDisableStructs\n\ +_08012600: .4byte gActiveBank\n\ +_08012604: .4byte gChosenMovesByBanks\n\ +_08012608: .4byte gBattleCommunication\n\ +_0801260C:\n\ + add r2, sp, 0x4\n\ + ldr r3, _080126AC @ =gBattleMons\n\ + movs r1, 0x58\n\ + adds r0, r4, 0\n\ + muls r0, r1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + strh r0, [r2, 0x10]\n\ + ldrb r0, [r5]\n\ + muls r0, r1\n\ + adds r0, r3\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + strb r0, [r2, 0x12]\n\ + ldrb r0, [r5]\n\ + muls r0, r1\n\ + adds r0, r3\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + strb r0, [r2, 0x13]\n\ + movs r4, 0\n\ + mov r1, sp\n\ + adds r1, 0xC\n\ + str r1, [sp, 0x18]\n\ + add r2, sp, 0x10\n\ + mov r10, r2\n\ + mov r8, r3\n\ + adds r7, r5, 0\n\ + movs r6, 0x58\n\ + movs r3, 0xC\n\ + add r3, r8\n\ + mov r9, r3\n\ + add r5, sp, 0x4\n\ +_0801264E:\n\ + lsls r2, r4, 1\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r2, r0\n\ + add r0, r9\n\ + ldrh r0, [r0]\n\ + strh r0, [r5]\n\ + ldr r0, [sp, 0x18]\n\ + adds r3, r0, r4\n\ + ldrb r0, [r7]\n\ + muls r0, r6\n\ + adds r0, r4, r0\n\ + mov r1, r8\n\ + adds r1, 0x24\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + strb r0, [r3]\n\ + ldrb r0, [r7]\n\ + adds r1, r0, 0\n\ + muls r1, r6\n\ + adds r2, r1\n\ + add r2, r9\n\ + ldrh r0, [r2]\n\ + add r1, r8\n\ + adds r1, 0x3B\n\ + ldrb r1, [r1]\n\ + lsls r2, r4, 24\n\ + lsrs r2, 24\n\ + bl CalculatePPWithBonus\n\ + mov r2, r10\n\ + adds r1, r2, r4\n\ + strb r0, [r1]\n\ + adds r5, 0x2\n\ + adds r4, 0x1\n\ + cmp r4, 0x3\n\ + ble _0801264E\n\ + ldr r0, _080126B0 @ =gBattleTypeFlags\n\ + ldrb r0, [r0]\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + movs r0, 0\n\ + movs r2, 0\n\ + add r3, sp, 0x4\n\ + bl Emitcmd20\n\ + b _0801289E\n\ + .align 2, 0\n\ +_080126AC: .4byte gBattleMons\n\ +_080126B0: .4byte gBattleTypeFlags\n\ +_080126B4:\n\ + ldr r0, _080126D0 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + ldr r0, _080126D4 @ =0x00000902\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080126C2\n\ + b _08012908\n\ +_080126C2:\n\ + ldr r1, _080126D8 @ =gUnknown_02024C1C\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r1, _080126DC @ =BattleScript_ActionSelectionItemsCantBeUsed\n\ + b _080129CC\n\ + .align 2, 0\n\ +_080126D0: .4byte gBattleTypeFlags\n\ +_080126D4: .4byte 0x00000902\n\ +_080126D8: .4byte gUnknown_02024C1C\n\ +_080126DC: .4byte BattleScript_ActionSelectionItemsCantBeUsed\n\ +_080126E0:\n\ + ldr r3, _08012738 @ =gSharedMem\n\ + ldr r5, _0801273C @ =gActiveBank\n\ + ldrb r0, [r5]\n\ + ldr r4, _08012740 @ =0x00016064\n\ + adds r1, r0, r4\n\ + adds r1, r3\n\ + ldr r2, _08012744 @ =gBattlePartyID\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldrh r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r7, _08012748 @ =gBattleMons\n\ + ldrb r2, [r5]\n\ + movs r6, 0x58\n\ + adds r0, r2, 0\n\ + muls r0, r6\n\ + adds r1, r7, 0\n\ + adds r1, 0x50\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, _0801274C @ =0x0400e000\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08012722\n\ + ldr r0, _08012750 @ =gStatuses3\n\ + lsls r1, r2, 2\n\ + adds r1, r0\n\ + ldr r1, [r1]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08012758\n\ +_08012722:\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + ldr r2, _08012754 @ =0x0001606c\n\ + adds r1, r3, r2\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0x2\n\ + movs r2, 0x6\n\ + b _0801286C\n\ + .align 2, 0\n\ +_08012738: .4byte gSharedMem\n\ +_0801273C: .4byte gActiveBank\n\ +_08012740: .4byte 0x00016064\n\ +_08012744: .4byte gBattlePartyID\n\ +_08012748: .4byte gBattleMons\n\ +_0801274C: .4byte 0x0400e000\n\ +_08012750: .4byte gStatuses3\n\ +_08012754: .4byte 0x0001606c\n\ +_08012758:\n\ + str r1, [sp]\n\ + movs r0, 0xC\n\ + adds r1, r2, 0\n\ + movs r2, 0x17\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + bne _080127E0\n\ + ldrb r1, [r5]\n\ + str r4, [sp]\n\ + movs r0, 0xC\n\ + movs r2, 0x47\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + beq _080127A8\n\ + ldrb r0, [r5]\n\ + muls r0, r6\n\ + adds r1, r0, r7\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x2\n\ + beq _080127A8\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x2\n\ + beq _080127A8\n\ + adds r0, r1, 0\n\ + adds r0, 0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x1A\n\ + bne _080127E0\n\ +_080127A8:\n\ + ldr r5, _08012808 @ =gActiveBank\n\ + ldrb r1, [r5]\n\ + movs r0, 0\n\ + str r0, [sp]\n\ + movs r0, 0xF\n\ + movs r2, 0x2A\n\ + movs r3, 0\n\ + bl AbilityBattleEffects\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + beq _08012818\n\ + ldr r2, _0801280C @ =gBattleMons\n\ + ldrb r1, [r5]\n\ + movs r0, 0x58\n\ + muls r0, r1\n\ + adds r1, r0, r2\n\ + adds r0, r1, 0\n\ + adds r0, 0x21\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x8\n\ + beq _080127E0\n\ + adds r0, r1, 0\n\ + adds r0, 0x22\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x8\n\ + bne _08012818\n\ +_080127E0:\n\ + subs r1, r4, 0x1\n\ + lsls r1, 4\n\ + movs r0, 0x4\n\ + orrs r1, r0\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + ldr r0, _08012810 @ =gLastUsedAbility\n\ + ldrb r3, [r0]\n\ + ldr r0, _08012808 @ =gActiveBank\n\ + ldrb r2, [r0]\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + ldr r2, _08012814 @ =gSharedMem + 0x1606C\n\ + adds r0, r2\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r2, 0x6\n\ + bl EmitChoosePokemon\n\ + b _0801289E\n\ + .align 2, 0\n\ +_08012808: .4byte gActiveBank\n\ +_0801280C: .4byte gBattleMons\n\ +_08012810: .4byte gLastUsedAbility\n\ +_08012814: .4byte gSharedMem + 0x1606C\n\ +_08012818:\n\ + ldr r0, _08012830 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + mov r8, r0\n\ + cmp r1, 0x2\n\ + bne _08012840\n\ + ldr r0, _08012834 @ =gActionForBanks\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x2\n\ + bne _08012840\n\ + ldr r3, _08012838 @ =gSharedMem\n\ + ldr r4, _0801283C @ =0x00016068\n\ + b _08012854\n\ + .align 2, 0\n\ +_08012830: .4byte gActiveBank\n\ +_08012834: .4byte gActionForBanks\n\ +_08012838: .4byte gSharedMem\n\ +_0801283C: .4byte 0x00016068\n\ +_08012840:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + cmp r0, 0x3\n\ + bne _08012884\n\ + ldr r0, _08012874 @ =gActionForBanks\n\ + ldrb r0, [r0, 0x1]\n\ + cmp r0, 0x2\n\ + bne _08012884\n\ + ldr r3, _08012878 @ =gSharedMem\n\ + ldr r4, _0801287C @ =0x00016069\n\ +_08012854:\n\ + adds r0, r3, r4\n\ + ldrb r2, [r0]\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + ldr r1, _08012880 @ =0x0001606c\n\ + adds r3, r1\n\ + adds r0, r3\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0\n\ +_0801286C:\n\ + movs r3, 0\n\ + bl EmitChoosePokemon\n\ + b _0801289E\n\ + .align 2, 0\n\ +_08012874: .4byte gActionForBanks\n\ +_08012878: .4byte gSharedMem\n\ +_0801287C: .4byte 0x00016069\n\ +_08012880: .4byte 0x0001606c\n\ +_08012884:\n\ + ldr r0, _080128A8 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 1\n\ + adds r0, r1\n\ + ldr r1, _080128AC @ =gSharedMem + 0x1606C\n\ + adds r0, r1\n\ + str r0, [sp]\n\ + movs r0, 0\n\ + movs r1, 0\n\ + movs r2, 0x6\n\ + movs r3, 0\n\ + bl EmitChoosePokemon\n\ +_0801289E:\n\ + ldr r0, _080128A8 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + bl MarkBufferBankForExecution\n\ + b _08012968\n\ + .align 2, 0\n\ +_080128A8: .4byte gActiveBank\n\ +_080128AC: .4byte gSharedMem + 0x1606C\n\ +_080128B0:\n\ + bl PlayerPartyAndPokemonStorageFull\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08012968\n\ + ldr r1, _080128EC @ =gUnknown_02024C1C\n\ + ldr r2, _080128F0 @ =gActiveBank\n\ + ldrb r0, [r2]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r1, _080128F4 @ =BattleScript_PrintFullBox\n\ + str r1, [r0]\n\ + ldr r0, _080128F8 @ =gBattleCommunication\n\ + ldrb r1, [r2]\n\ + adds r1, r0\n\ + movs r3, 0\n\ + movs r0, 0x5\n\ + strb r0, [r1]\n\ + ldr r1, _080128FC @ =gSharedMem\n\ + ldrb r0, [r2]\n\ + ldr r4, _08012900 @ =0x00016060\n\ + adds r0, r4\n\ + adds r0, r1\n\ + strb r3, [r0]\n\ + ldrb r0, [r2]\n\ + ldr r2, _08012904 @ =0x00016094\n\ + adds r0, r2\n\ + adds r0, r1\n\ + strb r3, [r0]\n\ + b _08012F90\n\ + .align 2, 0\n\ +_080128EC: .4byte gUnknown_02024C1C\n\ +_080128F0: .4byte gActiveBank\n\ +_080128F4: .4byte BattleScript_PrintFullBox\n\ +_080128F8: .4byte gBattleCommunication\n\ +_080128FC: .4byte gSharedMem\n\ +_08012900: .4byte 0x00016060\n\ +_08012904: .4byte 0x00016094\n\ +_08012908:\n\ + ldr r4, _08012924 @ =gActiveBank\n\ + ldrb r0, [r4]\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + ldr r0, _08012928 @ =gSharedMem + 0x1606C\n\ + adds r1, r0\n\ + movs r0, 0\n\ + bl EmitOpenBag\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08012968\n\ + .align 2, 0\n\ +_08012924: .4byte gActiveBank\n\ +_08012928: .4byte gSharedMem + 0x1606C\n\ +_0801292C:\n\ + ldr r4, _08012964 @ =gBattleCommunication\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + adds r1, r4\n\ + movs r5, 0\n\ + movs r0, 0x6\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + bl GetBankIdentity\n\ + movs r1, 0x2\n\ + eors r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + bl GetBankByPlayerAI\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r0, r4\n\ + strb r5, [r0]\n\ + movs r0, 0\n\ + bl Emitcmd50\n\ + mov r4, r8\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + b _08012F90\n\ + .align 2, 0\n\ +_08012964: .4byte gBattleCommunication\n\ +_08012968:\n\ + ldr r0, _08012994 @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0xA\n\ + ands r0, r1\n\ + cmp r0, 0x8\n\ + bne _080129A8\n\ + ldr r0, _08012998 @ =gBattleBufferB\n\ + ldr r4, _0801299C @ =gActiveBank\n\ + ldrb r1, [r4]\n\ + lsls r1, 9\n\ + adds r0, 0x1\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x3\n\ + bne _080129A8\n\ + ldr r0, _080129A0 @ =BattleScript_PrintCantRunFromTrainer\n\ + bl b_call_bc_move_exec\n\ + ldr r1, _080129A4 @ =gBattleCommunication\n\ + ldrb r0, [r4]\n\ + adds r0, r1\n\ + b _08012BFE\n\ + .align 2, 0\n\ +_08012994: .4byte gBattleTypeFlags\n\ +_08012998: .4byte gBattleBufferB\n\ +_0801299C: .4byte gActiveBank\n\ +_080129A0: .4byte BattleScript_PrintCantRunFromTrainer\n\ +_080129A4: .4byte gBattleCommunication\n\ +_080129A8:\n\ + bl CanRunFromBattle\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08012A14\n\ + ldr r0, _080129F4 @ =gBattleBufferB\n\ + ldr r3, _080129F8 @ =gActiveBank\n\ + ldrb r2, [r3]\n\ + lsls r1, r2, 9\n\ + adds r0, 0x1\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x3\n\ + bne _08012A14\n\ + ldr r1, _080129FC @ =gUnknown_02024C1C\n\ + lsls r0, r2, 2\n\ + adds r0, r1\n\ + ldr r1, _08012A00 @ =BattleScript_PrintCantEscapeFromBattle\n\ +_080129CC:\n\ + str r1, [r0]\n\ + ldr r0, _08012A04 @ =gBattleCommunication\n\ + ldrb r1, [r3]\n\ + adds r1, r0\n\ + movs r2, 0\n\ + movs r0, 0x5\n\ + strb r0, [r1]\n\ + ldr r1, _08012A08 @ =gSharedMem\n\ + ldrb r0, [r3]\n\ + ldr r4, _08012A0C @ =0x00016060\n\ + adds r0, r4\n\ + adds r0, r1\n\ + strb r2, [r0]\n\ + ldrb r0, [r3]\n\ + ldr r3, _08012A10 @ =0x00016094\n\ + adds r0, r3\n\ + adds r0, r1\n\ + strb r2, [r0]\n\ + b _08012F90\n\ + .align 2, 0\n\ +_080129F4: .4byte gBattleBufferB\n\ +_080129F8: .4byte gActiveBank\n\ +_080129FC: .4byte gUnknown_02024C1C\n\ +_08012A00: .4byte BattleScript_PrintCantEscapeFromBattle\n\ +_08012A04: .4byte gBattleCommunication\n\ +_08012A08: .4byte gSharedMem\n\ +_08012A0C: .4byte 0x00016060\n\ +_08012A10: .4byte 0x00016094\n\ +_08012A14:\n\ + ldr r2, _08012A20 @ =gBattleCommunication\n\ + ldr r0, _08012A24 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012A20: .4byte gBattleCommunication\n\ +_08012A24: .4byte gActiveBank\n\ +_08012A28:\n\ + ldr r4, _08012A6C @ =gBattleExecBuffer\n\ + ldr r1, _08012A70 @ =gBitTable\n\ + ldr r3, _08012A74 @ =gActiveBank\n\ + ldrb r5, [r3]\n\ + lsls r0, r5, 2\n\ + adds r0, r1\n\ + ldr r2, [r0]\n\ + lsls r0, r2, 4\n\ + movs r1, 0xF0\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + orrs r0, r2\n\ + lsls r1, r2, 8\n\ + orrs r0, r1\n\ + lsls r2, 12\n\ + orrs r0, r2\n\ + ldr r1, [r4]\n\ + ands r1, r0\n\ + mov r8, r3\n\ + cmp r1, 0\n\ + beq _08012A54\n\ + b _08012F66\n\ +_08012A54:\n\ + ldr r1, _08012A78 @ =gActionForBanks\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + adds r3, r1, 0\n\ + cmp r0, 0x9\n\ + bls _08012A62\n\ + b _08012F66\n\ +_08012A62:\n\ + lsls r0, 2\n\ + ldr r1, _08012A7C @ =_08012A80\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08012A6C: .4byte gBattleExecBuffer\n\ +_08012A70: .4byte gBitTable\n\ +_08012A74: .4byte gActiveBank\n\ +_08012A78: .4byte gActionForBanks\n\ +_08012A7C: .4byte _08012A80\n\ + .align 2, 0\n\ +_08012A80:\n\ + .4byte _08012AA8\n\ + .4byte _08012BB0\n\ + .4byte _08012BE8\n\ + .4byte _08012CE0\n\ + .4byte _08012D04\n\ + .4byte _08012D18\n\ + .4byte _08012D2C\n\ + .4byte _08012D5C\n\ + .4byte _08012D70\n\ + .4byte _08012D94\n\ +_08012AA8:\n\ + ldr r0, _08012AC8 @ =gBattleBufferB\n\ + mov r1, r8\n\ + ldrb r4, [r1]\n\ + lsls r1, r4, 9\n\ + adds r2, r0, 0x1\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + adds r6, r0, 0\n\ + cmp r1, 0x9\n\ + bgt _08012ACC\n\ + cmp r1, 0x3\n\ + blt _08012ACC\n\ + adds r0, r4, r3\n\ + strb r1, [r0]\n\ + b _08012F90\n\ + .align 2, 0\n\ +_08012AC8: .4byte gBattleBufferB\n\ +_08012ACC:\n\ + adds r3, r6, 0\n\ + mov r5, r8\n\ + ldrb r4, [r5]\n\ + lsls r1, r4, 9\n\ + adds r7, r3, 0x2\n\ + adds r0, r1, r7\n\ + ldrb r2, [r0]\n\ + adds r3, 0x3\n\ + mov r9, r3\n\ + add r1, r9\n\ + ldrb r0, [r1]\n\ + lsls r0, 8\n\ + orrs r2, r0\n\ + ldr r0, _08012AF4 @ =0x0000ffff\n\ + cmp r2, r0\n\ + bne _08012AFC\n\ + ldr r0, _08012AF8 @ =gBattleCommunication\n\ + adds r0, r4, r0\n\ + b _08012BFE\n\ + .align 2, 0\n\ +_08012AF4: .4byte 0x0000ffff\n\ +_08012AF8: .4byte gBattleCommunication\n\ +_08012AFC:\n\ + bl sub_8015894\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08012B48\n\ + ldr r0, _08012B38 @ =gBattleCommunication\n\ + ldrb r1, [r5]\n\ + adds r1, r0\n\ + movs r2, 0\n\ + movs r0, 0x5\n\ + strb r0, [r1]\n\ + ldr r3, _08012B3C @ =gSharedMem\n\ + ldrb r0, [r5]\n\ + ldr r4, _08012B40 @ =0x00016060\n\ + adds r0, r4\n\ + adds r0, r3\n\ + strb r2, [r0]\n\ + ldrb r0, [r5]\n\ + lsls r0, 9\n\ + adds r1, r6, 0x1\n\ + adds r0, r1\n\ + strb r2, [r0]\n\ + ldrb r0, [r5]\n\ + ldr r1, _08012B44 @ =0x00016094\n\ + adds r0, r1\n\ + adds r0, r3\n\ + movs r1, 0x1\n\ + strb r1, [r0]\n\ + b _08012F90\n\ + .align 2, 0\n\ +_08012B38: .4byte gBattleCommunication\n\ +_08012B3C: .4byte gSharedMem\n\ +_08012B40: .4byte 0x00016060\n\ +_08012B44: .4byte 0x00016094\n\ +_08012B48:\n\ + ldr r6, _08012B98 @ =gSharedMem\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + ldr r2, _08012B9C @ =0x0001608c\n\ + adds r1, r0, r2\n\ + adds r1, r6\n\ + lsls r0, 9\n\ + adds r0, r7\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r0, _08012BA0 @ =gChosenMovesByBanks\n\ + mov r4, r8\n\ + ldrb r3, [r4]\n\ + lsls r5, r3, 1\n\ + adds r5, r0\n\ + ldr r4, _08012BA4 @ =gBattleMons\n\ + adds r2, r3, r2\n\ + adds r2, r6\n\ + ldrb r0, [r2]\n\ + lsls r0, 1\n\ + movs r1, 0x58\n\ + muls r1, r3\n\ + adds r0, r1\n\ + adds r4, 0xC\n\ + adds r0, r4\n\ + ldrh r0, [r0]\n\ + strh r0, [r5]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + ldr r2, _08012BA8 @ =0x00016010\n\ + adds r1, r0, r2\n\ + adds r1, r6\n\ + lsls r0, 9\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldr r0, _08012BAC @ =gBattleCommunication\n\ + mov r3, r8\n\ + ldrb r1, [r3]\n\ + b _08012E3C\n\ + .align 2, 0\n\ +_08012B98: .4byte gSharedMem\n\ +_08012B9C: .4byte 0x0001608c\n\ +_08012BA0: .4byte gChosenMovesByBanks\n\ +_08012BA4: .4byte gBattleMons\n\ +_08012BA8: .4byte 0x00016010\n\ +_08012BAC: .4byte gBattleCommunication\n\ +_08012BB0:\n\ + ldr r2, _08012BD8 @ =gBattleBufferB\n\ + ldr r5, _08012BDC @ =gActiveBank\n\ + ldrb r4, [r5]\n\ + lsls r1, r4, 9\n\ + adds r0, r2, 0x1\n\ + adds r0, r1, r0\n\ + ldrb r3, [r0]\n\ + adds r2, 0x2\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + cmp r3, 0\n\ + bne _08012BCE\n\ + b _08012F60\n\ +_08012BCE:\n\ + ldr r0, _08012BE0 @ =gLastUsedItem\n\ + strh r3, [r0]\n\ + ldr r0, _08012BE4 @ =gBattleCommunication\n\ + ldrb r1, [r5]\n\ + b _08012E3C\n\ + .align 2, 0\n\ +_08012BD8: .4byte gBattleBufferB\n\ +_08012BDC: .4byte gActiveBank\n\ +_08012BE0: .4byte gLastUsedItem\n\ +_08012BE4: .4byte gBattleCommunication\n\ +_08012BE8:\n\ + ldr r4, _08012C04 @ =gBattleBufferB\n\ + ldr r7, _08012C08 @ =gActiveBank\n\ + ldrb r2, [r7]\n\ + lsls r0, r2, 9\n\ + adds r1, r4, 0x1\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + cmp r1, 0x6\n\ + bne _08012C10\n\ + ldr r0, _08012C0C @ =gBattleCommunication\n\ + adds r0, r2, r0\n\ +_08012BFE:\n\ + movs r1, 0\n\ + strb r1, [r0]\n\ + b _08012F66\n\ + .align 2, 0\n\ +_08012C04: .4byte gBattleBufferB\n\ +_08012C08: .4byte gActiveBank\n\ +_08012C0C: .4byte gBattleCommunication\n\ +_08012C10:\n\ + ldr r0, _08012CC4 @ =gSharedMem\n\ + mov r12, r0\n\ + ldr r3, _08012CC8 @ =0x00016068\n\ + adds r0, r2, r3\n\ + add r0, r12\n\ + strb r1, [r0]\n\ + ldr r0, _08012CCC @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08012CBE\n\ + ldrb r0, [r7]\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + ldr r5, _08012CD0 @ =0x0001606c\n\ + adds r1, r5\n\ + add r1, r12\n\ + ldrb r2, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r2\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + lsls r2, r0, 1\n\ + adds r2, r0\n\ + adds r2, r5\n\ + add r2, r12\n\ + lsls r0, 9\n\ + adds r6, r4, 0x2\n\ + adds r0, r6\n\ + ldrb r1, [r0]\n\ + movs r3, 0xF0\n\ + adds r0, r3, 0\n\ + ands r0, r1\n\ + ldrb r1, [r2]\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + ldrb r0, [r7]\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + ldr r2, _08012CD4 @ =0x0001606d\n\ + adds r1, r2\n\ + add r1, r12\n\ + lsls r0, 9\n\ + adds r4, 0x3\n\ + mov r8, r4\n\ + add r0, r8\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + movs r4, 0x2\n\ + eors r0, r4\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + adds r1, r5\n\ + add r1, r12\n\ + ldrb r2, [r1]\n\ + adds r0, r3, 0\n\ + ands r0, r2\n\ + strb r0, [r1]\n\ + ldrb r0, [r7]\n\ + eors r0, r4\n\ + lsls r1, r0, 1\n\ + adds r1, r0\n\ + adds r1, r5\n\ + add r1, r12\n\ + ldrb r0, [r7]\n\ + lsls r0, 9\n\ + adds r0, r6\n\ + ldrb r0, [r0]\n\ + ands r3, r0\n\ + lsrs r3, 4\n\ + ldrb r0, [r1]\n\ + orrs r3, r0\n\ + strb r3, [r1]\n\ + ldrb r0, [r7]\n\ + eors r4, r0\n\ + lsls r1, r4, 1\n\ + adds r1, r4\n\ + ldr r3, _08012CD8 @ =0x0001606e\n\ + adds r1, r3\n\ + add r1, r12\n\ + ldrb r0, [r7]\n\ + lsls r0, 9\n\ + add r0, r8\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ +_08012CBE:\n\ + ldr r0, _08012CDC @ =gBattleCommunication\n\ + ldrb r1, [r7]\n\ + b _08012E3C\n\ + .align 2, 0\n\ +_08012CC4: .4byte gSharedMem\n\ +_08012CC8: .4byte 0x00016068\n\ +_08012CCC: .4byte gBattleTypeFlags\n\ +_08012CD0: .4byte 0x0001606c\n\ +_08012CD4: .4byte 0x0001606d\n\ +_08012CD8: .4byte 0x0001606e\n\ +_08012CDC: .4byte gBattleCommunication\n\ +_08012CE0:\n\ + ldr r2, _08012CF8 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 8\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _08012CFC @ =gBattleCommunication\n\ + ldr r0, _08012D00 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012CF8: .4byte gHitMarker\n\ +_08012CFC: .4byte gBattleCommunication\n\ +_08012D00: .4byte gActiveBank\n\ +_08012D04:\n\ + ldr r2, _08012D10 @ =gBattleCommunication\n\ + ldr r0, _08012D14 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012D10: .4byte gBattleCommunication\n\ +_08012D14: .4byte gActiveBank\n\ +_08012D18:\n\ + ldr r2, _08012D24 @ =gBattleCommunication\n\ + ldr r0, _08012D28 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012D24: .4byte gBattleCommunication\n\ +_08012D28: .4byte gActiveBank\n\ +_08012D2C:\n\ + ldr r2, _08012D50 @ =gBattleBufferB\n\ + ldr r0, _08012D54 @ =gActiveBank\n\ + ldrb r4, [r0]\n\ + lsls r1, r4, 9\n\ + adds r0, r2, 0x1\n\ + adds r0, r1, r0\n\ + ldrb r3, [r0]\n\ + adds r2, 0x2\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + cmp r3, 0\n\ + bne _08012D4A\n\ + b _08012F60\n\ +_08012D4A:\n\ + ldr r1, _08012D58 @ =gBattleCommunication\n\ + adds r1, r4, r1\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012D50: .4byte gBattleBufferB\n\ +_08012D54: .4byte gActiveBank\n\ +_08012D58: .4byte gBattleCommunication\n\ +_08012D5C:\n\ + ldr r2, _08012D68 @ =gBattleCommunication\n\ + ldr r0, _08012D6C @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012D68: .4byte gBattleCommunication\n\ +_08012D6C: .4byte gActiveBank\n\ +_08012D70:\n\ + ldr r2, _08012D88 @ =gHitMarker\n\ + ldr r0, [r2]\n\ + movs r1, 0x80\n\ + lsls r1, 8\n\ + orrs r0, r1\n\ + str r0, [r2]\n\ + ldr r2, _08012D8C @ =gBattleCommunication\n\ + ldr r0, _08012D90 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012D88: .4byte gHitMarker\n\ +_08012D8C: .4byte gBattleCommunication\n\ +_08012D90: .4byte gActiveBank\n\ +_08012D94:\n\ + ldr r2, _08012DA0 @ =gBattleCommunication\n\ + ldr r0, _08012DA4 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, r2\n\ + b _08012E3E\n\ + .align 2, 0\n\ +_08012DA0: .4byte gBattleCommunication\n\ +_08012DA4: .4byte gActiveBank\n\ +_08012DA8:\n\ + ldr r3, _08012E10 @ =gBattleExecBuffer\n\ + ldr r4, _08012E14 @ =gBitTable\n\ + ldr r0, _08012E18 @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r4\n\ + ldr r2, [r0]\n\ + lsls r1, r2, 4\n\ + movs r0, 0xF0\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + orrs r1, r2\n\ + lsls r0, r2, 8\n\ + orrs r1, r0\n\ + lsls r2, 12\n\ + orrs r1, r2\n\ + ldr r0, [r3]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08012DD2\n\ + b _08012F66\n\ +_08012DD2:\n\ + ldr r0, _08012E1C @ =gBattleTypeFlags\n\ + ldrh r1, [r0]\n\ + movs r0, 0x41\n\ + ands r0, r1\n\ + cmp r0, 0x1\n\ + bne _08012E06\n\ + movs r1, 0x2\n\ + movs r0, 0x2\n\ + ands r0, r5\n\ + cmp r0, 0\n\ + bne _08012E06\n\ + adds r0, r5, 0\n\ + eors r0, r1\n\ + bl GetBankByPlayerAI\n\ + ldr r1, _08012E20 @ =gSharedMem\n\ + ldr r2, _08012E24 @ =0x000160a6\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 22\n\ + adds r0, r4\n\ + ldr r0, [r0]\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08012E28\n\ +_08012E06:\n\ + movs r0, 0\n\ + movs r1, 0\n\ + bl EmitLinkStandbyMsg\n\ + b _08012E30\n\ + .align 2, 0\n\ +_08012E10: .4byte gBattleExecBuffer\n\ +_08012E14: .4byte gBitTable\n\ +_08012E18: .4byte gActiveBank\n\ +_08012E1C: .4byte gBattleTypeFlags\n\ +_08012E20: .4byte gSharedMem\n\ +_08012E24: .4byte 0x000160a6\n\ +_08012E28:\n\ + movs r0, 0\n\ + movs r1, 0x1\n\ + bl EmitLinkStandbyMsg\n\ +_08012E30:\n\ + ldr r4, _08012E48 @ =gActiveBank\n\ +_08012E32:\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + ldr r0, _08012E4C @ =gBattleCommunication\n\ + ldrb r1, [r4]\n\ +_08012E3C:\n\ + adds r1, r0\n\ +_08012E3E:\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + b _08012F66\n\ + .align 2, 0\n\ +_08012E48: .4byte gActiveBank\n\ +_08012E4C: .4byte gBattleCommunication\n\ +_08012E50:\n\ + ldr r3, _08012E84 @ =gBattleExecBuffer\n\ + ldr r1, _08012E88 @ =gBitTable\n\ + ldr r0, _08012E8C @ =gActiveBank\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r2, [r0]\n\ + lsls r1, r2, 4\n\ + movs r0, 0xF0\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + orrs r1, r2\n\ + lsls r0, r2, 8\n\ + orrs r1, r0\n\ + lsls r2, 12\n\ + orrs r1, r2\n\ + ldr r0, [r3]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08012F66\n\ + ldr r1, _08012E90 @ =gBattleCommunication\n\ + ldrb r0, [r1, 0x4]\n\ + adds r0, 0x1\n\ + strb r0, [r1, 0x4]\n\ + b _08012F66\n\ + .align 2, 0\n\ +_08012E84: .4byte gBattleExecBuffer\n\ +_08012E88: .4byte gBitTable\n\ +_08012E8C: .4byte gActiveBank\n\ +_08012E90: .4byte gBattleCommunication\n\ +_08012E94:\n\ + ldr r2, _08012EB8 @ =gSharedMem\n\ + ldr r5, _08012EBC @ =gActiveBank\n\ + ldrb r1, [r5]\n\ + ldr r3, _08012EC0 @ =0x00016060\n\ + adds r0, r1, r3\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + beq _08012ECC\n\ + ldr r0, _08012EC4 @ =gBattleCommunication\n\ + adds r0, r1, r0\n\ + ldr r4, _08012EC8 @ =0x00016094\n\ + adds r1, r4\n\ + adds r1, r2\n\ + ldrb r1, [r1]\n\ + strb r1, [r0]\n\ + b _08012F66\n\ + .align 2, 0\n\ +_08012EB8: .4byte gSharedMem\n\ +_08012EBC: .4byte gActiveBank\n\ +_08012EC0: .4byte 0x00016060\n\ +_08012EC4: .4byte gBattleCommunication\n\ +_08012EC8: .4byte 0x00016094\n\ +_08012ECC:\n\ + ldr r0, _08012F20 @ =gBankAttacker\n\ + strb r1, [r0]\n\ + ldr r7, _08012F24 @ =gBattlescriptCurrInstr\n\ + ldr r6, _08012F28 @ =gUnknown_02024C1C\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r4, [r0]\n\ + str r4, [r7]\n\ + ldr r3, _08012F2C @ =gBattleExecBuffer\n\ + ldr r1, _08012F30 @ =gBitTable\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r2, [r0]\n\ + lsls r1, r2, 4\n\ + movs r0, 0xF0\n\ + lsls r0, 24\n\ + orrs r1, r0\n\ + orrs r1, r2\n\ + lsls r0, r2, 8\n\ + orrs r1, r0\n\ + lsls r2, 12\n\ + orrs r1, r2\n\ + ldr r0, [r3]\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08012F12\n\ + ldr r0, _08012F34 @ =gBattleScriptingCommandsTable\n\ + ldrb r1, [r4]\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r0, [r1]\n\ + bl _call_via_r0\n\ +_08012F12:\n\ + ldrb r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldr r1, [r7]\n\ + str r1, [r0]\n\ + b _08012F66\n\ + .align 2, 0\n\ +_08012F20: .4byte gBankAttacker\n\ +_08012F24: .4byte gBattlescriptCurrInstr\n\ +_08012F28: .4byte gUnknown_02024C1C\n\ +_08012F2C: .4byte gBattleExecBuffer\n\ +_08012F30: .4byte gBitTable\n\ +_08012F34: .4byte gBattleScriptingCommandsTable\n\ +_08012F38:\n\ + ldr r3, _08012FA0 @ =gBattleExecBuffer\n\ + ldr r1, _08012FA4 @ =gBitTable\n\ + ldr r0, _08012FA8 @ =gActiveBank\n\ + ldrb r4, [r0]\n\ + lsls r0, r4, 2\n\ + adds r0, r1\n\ + ldr r2, [r0]\n\ + lsls r0, r2, 4\n\ + movs r1, 0xF0\n\ + lsls r1, 24\n\ + orrs r0, r1\n\ + orrs r0, r2\n\ + lsls r1, r2, 8\n\ + orrs r0, r1\n\ + lsls r2, 12\n\ + orrs r0, r2\n\ + ldr r3, [r3]\n\ + ands r3, r0\n\ + cmp r3, 0\n\ + bne _08012F66\n\ +_08012F60:\n\ + ldr r0, _08012FAC @ =gBattleCommunication\n\ + adds r0, r4, r0\n\ + strb r3, [r0]\n\ +_08012F66:\n\ + ldr r0, _08012FA8 @ =gActiveBank\n\ + ldrb r1, [r0]\n\ + adds r1, 0x1\n\ + strb r1, [r0]\n\ + ldr r0, _08012FB0 @ =gNoOfAllBanks\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ +_08012F74:\n\ + adds r2, r0, 0\n\ + ldrb r0, [r2]\n\ + cmp r1, r0\n\ + bcs _08012F80\n\ + bl _0801234C\n\ +_08012F80:\n\ + ldr r0, _08012FAC @ =gBattleCommunication\n\ + ldrb r0, [r0, 0x4]\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + bne _08012F90\n\ + ldr r1, _08012FB4 @ =gBattleMainFunc\n\ + ldr r0, _08012FB8 @ =sub_80133C8\n\ + str r0, [r1]\n\ +_08012F90:\n\ + add sp, 0x1C\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\ + .align 2, 0\n\ +_08012FA0: .4byte gBattleExecBuffer\n\ +_08012FA4: .4byte gBitTable\n\ +_08012FA8: .4byte gActiveBank\n\ +_08012FAC: .4byte gBattleCommunication\n\ +_08012FB0: .4byte gNoOfAllBanks\n\ +_08012FB4: .4byte gBattleMainFunc\n\ +_08012FB8: .4byte sub_80133C8\n\ + .syntax divided\n"); +} + +void sub_8012FBC(u8 a, u8 b) +{ + int temp; + + temp = gUnknown_02024A76[a]; + gUnknown_02024A76[a] = gUnknown_02024A76[b]; + gUnknown_02024A76[b] = temp; + + temp = gTurnOrder[a]; + gTurnOrder[a] = gTurnOrder[b]; + gTurnOrder[b] = temp; +} + +// Determines which of the two given mons will strike first in a battle. +// Returns: +// 0 = first mon moves first +// 1 = second mon moves first +// 2 = second mon moves first because it won a 50/50 roll +u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) +{ + int bank1SpeedMultiplier, bank2SpeedMultiplier; + u32 bank1AdjustedSpeed, bank2AdjustedSpeed; + u8 heldItemEffect; + u8 heldItemEffectParam; + u16 bank1Move; + u16 bank2Move; + u8 strikesFirst = 0; + + // Check for abilities that boost speed in weather. + if (WEATHER_HAS_EFFECT) + { + if ((gBattleMons[bank1].ability == ABILITY_SWIFT_SWIM && (gBattleWeather & WEATHER_RAIN_ANY)) + || (gBattleMons[bank1].ability == ABILITY_CHLOROPHYLL && (gBattleWeather & WEATHER_SUN_ANY))) + bank1SpeedMultiplier = 2; + else + bank1SpeedMultiplier = 1; + + if ((gBattleMons[bank2].ability == ABILITY_SWIFT_SWIM && (gBattleWeather & WEATHER_RAIN_ANY)) + || (gBattleMons[bank2].ability == ABILITY_CHLOROPHYLL && (gBattleWeather & WEATHER_SUN_ANY))) + bank2SpeedMultiplier = 2; + else + bank2SpeedMultiplier = 1; + } + else + { + bank1SpeedMultiplier = 1; + bank2SpeedMultiplier = 1; + } + + // Calculate adjusted speed for first mon. + bank1AdjustedSpeed = (gBattleMons[bank1].speed * bank1SpeedMultiplier) + * gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][0] / gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][1]; + + if (gBattleMons[bank1].item == ITEM_ENIGMA_BERRY) + { + heldItemEffect = gEnigmaBerries[bank1].holdEffect; + heldItemEffectParam = gEnigmaBerries[bank1].holdEffectParam; + } + else + { + heldItemEffect = ItemId_GetHoldEffect(gBattleMons[bank1].item); + heldItemEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank1].item); + } + + // Only give badge speed boost to the player's mon. + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBankSide(bank1) == 0) + bank1AdjustedSpeed = (bank1AdjustedSpeed * 110) / 100; + + if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE) + bank1AdjustedSpeed /= 2; + + if (gBattleMons[bank1].status1 & STATUS_PARALYSIS) + bank1AdjustedSpeed /= 4; + + if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100) + bank1AdjustedSpeed = UINT_MAX; + + // Calculate adjusted speed for second mon. + bank2AdjustedSpeed = gBattleMons[bank2].speed * bank2SpeedMultiplier + * gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][0] / gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][1]; + + if (gBattleMons[bank2].item == ITEM_ENIGMA_BERRY) + { + heldItemEffect = gEnigmaBerries[bank2].holdEffect; + heldItemEffectParam = gEnigmaBerries[bank2].holdEffectParam; + } + else + { + heldItemEffect = ItemId_GetHoldEffect(gBattleMons[bank2].item); + heldItemEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank2].item); + } + + // Only give badge speed boost to the player's mon. + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && FlagGet(FLAG_BADGE03_GET) && GetBankSide(bank2) == 0) + { + bank2AdjustedSpeed = (bank2AdjustedSpeed * 110) / 100; + } + + if (heldItemEffect == HOLD_EFFECT_MACHO_BRACE) + bank2AdjustedSpeed /= 2; + + if (gBattleMons[bank2].status1 & STATUS_PARALYSIS) + bank2AdjustedSpeed /= 4; + + if (heldItemEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (heldItemEffectParam * 0xFFFF) / 100) + bank2AdjustedSpeed = UINT_MAX; + + if (ignoreMovePriorities) + { + bank1Move = MOVE_NONE; + bank2Move = MOVE_NONE; + } + else + { + if (gActionForBanks[bank1] == 0) + { + if (gProtectStructs[bank1].onlyStruggle) + bank1Move = MOVE_STRUGGLE; + else + bank1Move = gBattleMons[bank1].moves[ewram1608Carr(bank1)]; + } + else + bank1Move = MOVE_NONE; + + if (gActionForBanks[bank2] == 0) + { + if (gProtectStructs[bank2].onlyStruggle) + bank2Move = MOVE_STRUGGLE; + else + bank2Move = gBattleMons[bank2].moves[ewram1608Carr(bank2)]; + } + else + bank2Move = MOVE_NONE; + } + + if (gBattleMoves[bank1Move].priority != 0 || gBattleMoves[bank2Move].priority != 0) + { + if (gBattleMoves[bank1Move].priority == gBattleMoves[bank2Move].priority) + { + if (bank1AdjustedSpeed == bank2AdjustedSpeed && (Random() & 1)) + strikesFirst = 2; + else if (bank1AdjustedSpeed < bank2AdjustedSpeed) + strikesFirst = 1; + } + else if (gBattleMoves[bank1Move].priority < gBattleMoves[bank2Move].priority) + strikesFirst = 1; + } + else + { + if (bank1AdjustedSpeed == bank2AdjustedSpeed && (Random() & 1)) + strikesFirst = 2; + else if (bank1AdjustedSpeed < bank2AdjustedSpeed) + strikesFirst = 1; + } + + return strikesFirst; +} diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 1fa7a2ed2..6b892ea7a 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1275,7 +1275,7 @@ static void BattleAICmd_if_arg_not_equal(void) static void BattleAICmd_if_would_go_first(void) { - if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) == gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, TRUE) == gAIScriptPtr[1]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1283,7 +1283,7 @@ static void BattleAICmd_if_would_go_first(void) static void BattleAICmd_if_would_not_go_first(void) { - if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, 1) != gAIScriptPtr[1]) + if (GetWhoStrikesFirst(gBankAttacker, gBankTarget, TRUE) != gAIScriptPtr[1]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; -- cgit v1.2.3 From c0e0004ffabfcb9bc9827bdce28e3c18a6e52922 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 7 Jan 2018 10:59:12 -0800 Subject: Decompile through HandleEndTurn_BattleWon, and update trainer class constant names --- src/battle/anim/fire_2.c | 4 +- src/battle/battle_2.c | 313 +++++++++++++++++++++++++++++-- src/battle/battle_3.c | 62 +++--- src/battle/battle_4.c | 124 ++++++------ src/battle/battle_7.c | 10 +- src/battle/battle_ai.c | 2 +- src/battle/battle_anim_80A7E7C.c | 8 +- src/battle/battle_controller_opponent.c | 24 +-- src/battle/battle_controller_player.c | 22 +-- src/battle/battle_controller_safari.c | 6 +- src/battle/battle_controller_wally.c | 6 +- src/battle/battle_message.c | 16 +- src/battle/battle_party_menu.c | 14 +- src/battle/pokeball.c | 10 +- src/battle/reshow_battle_screen.c | 4 +- src/data/battle_tower/trainers.h | 200 ++++++++++---------- src/data/battle_tower/trainers_de.h | 200 ++++++++++---------- src/data/pokemon/trainer_class_lookups.h | 160 ++++++++-------- src/de_rom_8040FE0.c | 22 +-- src/field/battle_tower.c | 100 +++++----- src/pokemon/pokemon_2.c | 8 +- src/pokemon/pokemon_data.c | 4 +- src/rom_8077ABC.c | 40 ++-- 23 files changed, 812 insertions(+), 547 deletions(-) (limited to 'src') diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c index 6dc304232..4d577a765 100644 --- a/src/battle/anim/fire_2.c +++ b/src/battle/anim/fire_2.c @@ -23,8 +23,8 @@ void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3); void sub_80D51A8(struct Sprite *sprite) { if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget) - && (gAnimBankAttacker == GetBankByPlayerAI(2) - || gAnimBankAttacker == GetBankByPlayerAI(3))) + && (gAnimBankAttacker == GetBankByIdentity(2) + || gAnimBankAttacker == GetBankByIdentity(3))) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->callback = sub_8079534; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 90d0d40e3..92e9e3e1d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -24,6 +24,7 @@ #include "sprite.h" #include "task.h" #include "text.h" +#include "trainer.h" #include "trig.h" #include "unknown_task.h" #include "util.h" @@ -66,7 +67,7 @@ extern u8 gActiveBank; extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; -extern u8 gFightStateTracker; +extern u8 gCurrentActionFuncId; extern u8 gTurnOrder[]; extern struct UnknownStruct12 gUnknown_02024AD0[]; extern u8 gObjectBankIDs[]; @@ -133,8 +134,26 @@ extern u16 gBattleWeather; extern u32 gBattleMoveDamage; extern struct BattlePokemon gBattleMons[]; extern u8 gBattleMoveFlags; +extern const u8 BattleScript_FocusPunchSetUp[]; +extern u16 gDynamicBasePower; +extern u8 gCurrentTurnActionNumber; +extern void (* const gUnknown_081FA640[])(void); +extern void (* const gUnknown_081FA678[])(void); +extern u8* gBattlescriptCurrInstr; +extern u8 gUnknown_081D8E02[]; +extern u8 BattleScript_PayDayMoneyAndPickUpItems[]; +extern u8 gUnknown_081D8E0D[]; +extern u8 BattleScript_LocalTrainerBattleWon[]; + +void b_call_bc_move_exec(const u8* BS_ptr); static void BattlePrepIntroSlide(void); +void CheckFocusPunch_ClearVarsBeforeTurnStarts(void); +void SetActionsAndBanksTurnOrder(void); +static void TurnValuesCleanUp(u8); +void SpecialStatusesClear(void); +static void RunTurnActionsFunctions(void); +void sub_8013C9C(); void sub_800E7C4(void) { @@ -1538,7 +1557,7 @@ void sub_8010874(void) for (i = 0; i < 2; i++) { gSideAffecting[i] = 0; - MEMSET_ALT(&gSideTimer[i], 0, 12, j, r4); + MEMSET_ALT(&gSideTimers[i], 0, 12, j, r4); } gBankAttacker = 0; @@ -1791,7 +1810,7 @@ static void BattlePrepIntroSlide(void) { if (gBattleExecBuffer == 0) { - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); EmitIntroSlide(0, gBattleTerrain); MarkBufferBankForExecution(gActiveBank); gBattleMainFunc = sub_8011384; @@ -1895,7 +1914,7 @@ void bc_801333C(void) hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); } } - gActiveBank = GetBankByPlayerAI(1); + gActiveBank = GetBankByIdentity(1); EmitDrawPartyStatusSummary(0, hpStatus, 0x80); MarkBufferBankForExecution(gActiveBank); @@ -1913,7 +1932,7 @@ void bc_801333C(void) hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); } } - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); EmitDrawPartyStatusSummary(0, hpStatus, 0x80); MarkBufferBankForExecution(gActiveBank); @@ -1948,7 +1967,7 @@ void bc_battle_begin_message(void) { if (gBattleExecBuffer == 0) { - gActiveBank = GetBankByPlayerAI(1); + gActiveBank = GetBankByIdentity(1); PrepareStringBattle(0, gActiveBank); gBattleMainFunc = sub_8011800; } @@ -1967,7 +1986,7 @@ void sub_8011800(void) { if (gBattleExecBuffer == 0) { - PrepareStringBattle(1, GetBankByPlayerAI(1)); + PrepareStringBattle(1, GetBankByIdentity(1)); gBattleMainFunc = sub_8011834; } } @@ -2019,7 +2038,7 @@ void sub_8011970(void) if (gBattleExecBuffer == 0) { if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) - PrepareStringBattle(1, GetBankByPlayerAI(0)); + PrepareStringBattle(1, GetBankByIdentity(0)); gBattleMainFunc = sub_80119B4; } } @@ -2085,7 +2104,7 @@ void BattleBeginFirstTurn(void) for (j = i + 1; j < gNoOfAllBanks; j++) { if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 1) != 0) - sub_8012FBC(i, j); + SwapTurnOrder(i, j); } } } @@ -2199,8 +2218,8 @@ void BattleTurnPassed(void) gBattleCommunication[i] = 0; if (gBattleOutcome != 0) { - gFightStateTracker = 12; - gBattleMainFunc = sub_80138F0; + gCurrentActionFuncId = 12; + gBattleMainFunc = RunTurnActionsFunctions; return; } if (gBattleResults.battleTurnCounter < 0xFF) @@ -2323,8 +2342,8 @@ void sub_8012324(void) ewram16068arr(gActiveBank) = 6; if (!(gBattleTypeFlags & 0x40) && (r5 & 2) - && !(ewram160A6 & gBitTable[GetBankByPlayerAI(r5 ^ 2)]) - && gBattleCommunication[GetBankByPlayerAI(r5)] != 4) + && !(ewram160A6 & gBitTable[GetBankByIdentity(r5 ^ 2)]) + && gBattleCommunication[GetBankByIdentity(r5)] != 4) break; //_080123F8 if (ewram160A6 & gBitTable[gActiveBank]) @@ -2431,7 +2450,7 @@ _0801239C:\n\ beq _080123F8\n\ eors r5, r1\n\ adds r0, r5, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ ldr r2, _08012444 @ =0x000160a6\n\ adds r1, r4, r2\n\ ldrb r1, [r1]\n\ @@ -2445,7 +2464,7 @@ _0801239C:\n\ bne _080123F8\n\ ldr r4, _0801244C @ =gBattleCommunication\n\ adds r0, r5, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ lsls r0, 24\n\ lsrs r0, 24\n\ adds r0, r4\n\ @@ -3071,7 +3090,7 @@ _0801292C:\n\ eors r0, r1\n\ lsls r0, 24\n\ lsrs r0, 24\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ lsls r0, 24\n\ lsrs r0, 24\n\ adds r0, r4\n\ @@ -3621,7 +3640,7 @@ _08012DD2:\n\ bne _08012E06\n\ adds r0, r5, 0\n\ eors r0, r1\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ ldr r1, _08012E20 @ =gSharedMem\n\ ldr r2, _08012E24 @ =0x000160a6\n\ adds r1, r2\n\ @@ -3816,7 +3835,7 @@ _08012F80:\n\ cmp r0, r2\n\ bne _08012F90\n\ ldr r1, _08012FB4 @ =gBattleMainFunc\n\ - ldr r0, _08012FB8 @ =sub_80133C8\n\ + ldr r0, _08012FB8 @ =SetActionsAndBanksTurnOrder\n\ str r0, [r1]\n\ _08012F90:\n\ add sp, 0x1C\n\ @@ -3834,11 +3853,11 @@ _08012FA8: .4byte gActiveBank\n\ _08012FAC: .4byte gBattleCommunication\n\ _08012FB0: .4byte gNoOfAllBanks\n\ _08012FB4: .4byte gBattleMainFunc\n\ -_08012FB8: .4byte sub_80133C8\n\ +_08012FB8: .4byte SetActionsAndBanksTurnOrder\n\ .syntax divided\n"); } -void sub_8012FBC(u8 a, u8 b) +void SwapTurnOrder(u8 a, u8 b) { int temp; @@ -3995,3 +4014,257 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) return strikesFirst; } + +void SetActionsAndBanksTurnOrder(void) +{ + s32 var = 0; + s32 i, j; + + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + gUnknown_02024A76[var] = gActionForBanks[gActiveBank]; + gTurnOrder[var] = gActiveBank; + var++; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActionForBanks[gActiveBank] == ACTION_RUN) + { + var = 5; + break; + } + } + } + else + { + if (gActionForBanks[0] == ACTION_RUN) + { + gActiveBank = 0; + var = 5; + } + } + + if (var == 5) + { + gUnknown_02024A76[0] = gActionForBanks[gActiveBank]; + gTurnOrder[0] = gActiveBank; + var = 1; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (i != gActiveBank) + { + gUnknown_02024A76[var] = gActionForBanks[i]; + gTurnOrder[var] = i; + var++; + } + } + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; + eFocusPunchBank = 0; + return; + } + else + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH) + { + gUnknown_02024A76[var] = gActionForBanks[gActiveBank]; + gTurnOrder[var] = gActiveBank; + var++; + } + } + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH) + { + gUnknown_02024A76[var] = gActionForBanks[gActiveBank]; + gTurnOrder[var] = gActiveBank; + var++; + } + } + for (i = 0; i < gNoOfAllBanks - 1; i++) + { + for (j = i + 1; j < gNoOfAllBanks; j++) + { + u8 bank1 = gTurnOrder[i]; + u8 bank2 = gTurnOrder[j]; + if (gUnknown_02024A76[i] != ACTION_USE_ITEM + && gUnknown_02024A76[j] != ACTION_USE_ITEM + && gUnknown_02024A76[i] != ACTION_SWITCH + && gUnknown_02024A76[j] != ACTION_SWITCH) + { + if (GetWhoStrikesFirst(bank1, bank2, FALSE)) + SwapTurnOrder(i, j); + } + } + } + } + } + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; + eFocusPunchBank = 0; +} + +static void TurnValuesCleanUp(bool8 var0) +{ + s32 i; + u8 *dataPtr; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (var0) + { + gProtectStructs[gActiveBank].protected = 0; + gProtectStructs[gActiveBank].endured = 0; + } + else + { + dataPtr = (u8*)(&gProtectStructs[gActiveBank]); + for (i = 0; i < sizeof(struct ProtectStruct); i++) + dataPtr[i] = 0; + + if (gDisableStructs[gActiveBank].isFirstTurn) + gDisableStructs[gActiveBank].isFirstTurn--; + + if (gDisableStructs[gActiveBank].rechargeCounter) + { + gDisableStructs[gActiveBank].rechargeCounter--; + if (gDisableStructs[gActiveBank].rechargeCounter == 0) + gBattleMons[gActiveBank].status2 &= ~(STATUS2_RECHARGE); + } + } + + if (gDisableStructs[gActiveBank].substituteHP == 0) + gBattleMons[gActiveBank].status2 &= ~(STATUS2_SUBSTITUTE); + } + + gSideTimers[0].followmeTimer = 0; + gSideTimers[1].followmeTimer = 0; +} + +void SpecialStatusesClear(void) +{ + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + s32 i; + u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBank]); + + for (i = 0; i < sizeof(struct SpecialStatus); i++) + dataPtr[i] = 0; + } +} + +void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) +{ + if (!(gHitMarker & HITMARKER_RUN)) + { + while (eFocusPunchBank < gNoOfAllBanks) + { + gActiveBank = gBankAttacker = eFocusPunchBank; + eFocusPunchBank++; + if (gChosenMovesByBanks[gActiveBank] == MOVE_FOCUS_PUNCH + && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP) + && !(gDisableStructs[gBankAttacker].truantCounter) + && !(gProtectStructs[gActiveBank].onlyStruggle)) + { + b_call_bc_move_exec(BattleScript_FocusPunchSetUp); + return; + } + } + } + + b_clear_atk_up_if_hit_flag_unless_enraged(); + gCurrentTurnActionNumber = 0; + { + // something stupid needed to match + u8 zero; + gCurrentActionFuncId = gUnknown_02024A76[(zero = 0)]; + } + + gDynamicBasePower = 0; + BATTLE_STRUCT->dynamicMoveType = 0; + gBattleMainFunc = RunTurnActionsFunctions; + gBattleCommunication[3] = 0; + gBattleCommunication[4] = 0; + eMultihitMoveEffect = 0; + ewram17130 = 0; +} + +static void RunTurnActionsFunctions(void) +{ + if (gBattleOutcome != 0) + gCurrentActionFuncId = 12; + + BATTLE_STRUCT->unk16057 = gCurrentTurnActionNumber; + gUnknown_081FA640[gCurrentActionFuncId](); + + if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished + { + gHitMarker &= ~(HITMARKER_x100000); + gBattleMainFunc = gUnknown_081FA678[gBattleOutcome & 0x7F]; + } + else + { + if (BATTLE_STRUCT->unk16057 != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank + { + gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); + gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); + } + } +} + +void HandleEndTurn_BattleWon(void) +{ + gCurrentActionFuncId = 0; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTextBuff1[0] = gBattleOutcome; + gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); + gBattlescriptCurrInstr = gUnknown_081D8E02; + gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); + } + else if (gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) + { + gBattlescriptCurrInstr = gUnknown_081D8E0D; + } + else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + BattleMusicStop(); + gBattlescriptCurrInstr = BattleScript_LocalTrainerBattleWon; + + switch (gTrainers[gTrainerBattleOpponent].trainerClass) + { + case TRAINER_CLASS_ELITE_FOUR: + case TRAINER_CLASS_CHAMPION: + PlayBGM(BGM_KACHI5); + break; + case TRAINER_CLASS_TEAM_AQUA: + case TRAINER_CLASS_TEAM_MAGMA: + case TRAINER_CLASS_AQUA_ADMIN: + case TRAINER_CLASS_AQUA_LEADER: + case TRAINER_CLASS_MAGMA_ADMIN: + case TRAINER_CLASS_MAGMA_LEADER: + PlayBGM(BGM_KACHI4); + break; + case TRAINER_CLASS_LEADER: + PlayBGM(BGM_KACHI3); + break; + default: + PlayBGM(BGM_KACHI1); + break; + } + } + else + { + gBattlescriptCurrInstr = BattleScript_PayDayMoneyAndPickUpItems; + } + + gBattleMainFunc = sub_8013C9C; +} diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c index e5a730598..cfa188fa4 100644 --- a/src/battle/battle_3.c +++ b/src/battle/battle_3.c @@ -50,7 +50,7 @@ extern u8 gTakenDmgBanks[4]; extern u8 gBattleMoveFlags; extern u8 gLastUsedAbility; extern u8 gBattleTextBuff2[]; -extern u8 gFightStateTracker; +extern u8 gCurrentActionFuncId; extern struct BattleEnigmaBerry gEnigmaBerries[4]; extern u8 gUnknown_02024BE5; extern u8 gCurrMovePos; @@ -69,7 +69,7 @@ extern const u8 gStatusConditionString_LoveJpn[]; extern const BattleCmdFunc gBattleScriptingCommandsTable[]; u8 IsImprisoned(u8 bank, u16 move); -u8 GetBankByPlayerAI(u8 ID); +u8 GetBankByIdentity(u8 ID); u8 GetBankIdentity(u8 bank); u8 GetBankSide(u8 bank); void b_call_bc_move_exec(u8* BS_ptr); @@ -320,9 +320,9 @@ bool8 AreAllMovesUnusable(void) gProtectStructs[gActiveBank].onlyStruggle = 1; gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2)); + gBattleBufferB[gActiveBank][3] = GetBankByIdentity((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2)); else - gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI(GetBankIdentity(gActiveBank) ^ 1); + gBattleBufferB[gActiveBank][3] = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ 1); } else gProtectStructs[gActiveBank].onlyStruggle = 0; @@ -380,7 +380,7 @@ u8 UpdateTurnCounters(void) for (j = i + 1; j < gNoOfAllBanks; j++) { if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) - sub_8012FBC(i, j); + SwapTurnOrder(i, j); } } BATTLE_STRUCT->turncountersTracker++; @@ -392,7 +392,7 @@ u8 UpdateTurnCounters(void) if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) { - if (--gSideTimer[sideBank].reflectTimer == 0) + if (--gSideTimers[sideBank].reflectTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; @@ -421,7 +421,7 @@ u8 UpdateTurnCounters(void) gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) { - if (--gSideTimer[sideBank].lightscreenTimer == 0) + if (--gSideTimers[sideBank].lightscreenTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; b_call_bc_move_exec(BattleScript_SideStatusWoreOff); @@ -448,7 +448,7 @@ u8 UpdateTurnCounters(void) while (BATTLE_STRUCT->turnSideTracker < 2) { gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; - if (gSideTimer[sideBank].mistTimer && --gSideTimer[sideBank].mistTimer == 0) + if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; b_call_bc_move_exec(BattleScript_SideStatusWoreOff); @@ -476,7 +476,7 @@ u8 UpdateTurnCounters(void) gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) { - if (--gSideTimer[sideBank].safeguardTimer == 0) + if (--gSideTimers[sideBank].safeguardTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; b_call_bc_move_exec(BattleScript_SafeguardEnds); @@ -1363,14 +1363,14 @@ bool8 sub_8018018(u8 bank, u8 r1, u8 r2) { if (GetBankSide(bank) == 1) { - r7 = GetBankByPlayerAI(1); - r6 = GetBankByPlayerAI(3); + r7 = GetBankByIdentity(1); + r6 = GetBankByIdentity(3); party = gEnemyParty; } else { - r7 = GetBankByPlayerAI(0); - r6 = GetBankByPlayerAI(2); + r7 = GetBankByIdentity(0); + r6 = GetBankByIdentity(2); party = gPlayerParty; } if (r1 == 6) @@ -2053,15 +2053,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { u8 target2; side = (GetBankIdentity(i) ^ 1) & 1; - target1 = GetBankByPlayerAI(side); - target2 = GetBankByPlayerAI(side + 2); + target1 = GetBankByIdentity(side); + target2 = GetBankByIdentity(side + 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) { //_080199AE - gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | side); + gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side); gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; effect++; @@ -2256,7 +2256,7 @@ void b_call_bc_move_exec(u8* BS_ptr) gBattlescriptCurrInstr = BS_ptr; B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; gBattleMainFunc = sub_8013F54; - gFightStateTracker = 0; + gCurrentActionFuncId = 0; } void b_push_move_exec(u8* BS_ptr) @@ -3028,14 +3028,14 @@ void unref_sub_801B40C(void) { if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2]) { - gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4); - gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4); + gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; } if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) { - gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4); - gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4); + gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; } bank++; @@ -3067,8 +3067,8 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target { case 0: side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) - targetBank = gSideTimer[side].followmeTarget; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + targetBank = gSideTimers[side].followmeTarget; else { side = GetBankSide(gBankAttacker); @@ -3090,35 +3090,35 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target case 8: case 32: case 64: - targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); if (gAbsentBankFlags & gBitTable[targetBank]) targetBank ^= 2; break; case 4: side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) - targetBank = gSideTimer[side].followmeTarget; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + targetBank = gSideTimers[side].followmeTarget; else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4) { if (GetBankSide(gBankAttacker) == 0) { if (Random() & 1) - targetBank = GetBankByPlayerAI(1); + targetBank = GetBankByIdentity(1); else - targetBank = GetBankByPlayerAI(3); + targetBank = GetBankByIdentity(3); } else { if (Random() & 1) - targetBank = GetBankByPlayerAI(0); + targetBank = GetBankByIdentity(0); else - targetBank = GetBankByPlayerAI(2); + targetBank = GetBankByIdentity(2); } if (gAbsentBankFlags & gBitTable[targetBank]) targetBank ^= 2; } else - targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); break; case 2: case 16: diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 0c147e471..d9789f76d 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -58,7 +58,7 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8* gBattlescriptCurrInstr; extern u8 gCurrMovePos; -extern u8 gFightStateTracker; +extern u8 gCurrentActionFuncId; extern u32 gHitMarker; extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; @@ -94,7 +94,7 @@ extern u8 gActionForBanks[4]; extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch extern u16 gUnknown_030041B0; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one -extern u8 gCurrentMoveTurn; +extern u8 gCurrentTurnActionNumber; extern u16 gTrappingMoves[]; //extern functions @@ -129,7 +129,7 @@ u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); u16 SpeciesToNationalPokedexNum(u16 species); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); -u8 GetBankByPlayerAI(u8 ID); +u8 GetBankByIdentity(u8 ID); void sub_8012258(u8); void sub_80157C4(u8 bank); //update sent pokes in battle //MonTryLearningNewMove teach poke a move @@ -1028,7 +1028,7 @@ static void atk00_attackcanceler(void) int i; if (gBattleOutcome) { - gFightStateTracker = 0xC; + gCurrentActionFuncId = 0xC; return; } if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) @@ -2518,7 +2518,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } else { - if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn) + if (BankGetTurnOrder(gEffectBank) > gCurrentTurnActionNumber) gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr++; return; } @@ -3861,7 +3861,7 @@ _0801ED14: .4byte BattleScript_FlinchPrevention\n\ _0801ED18:\n\ adds r0, r2, 0\n\ bl BankGetTurnOrder\n\ - ldr r1, _0801ED54 @ =gCurrentMoveTurn\n\ + ldr r1, _0801ED54 @ =gCurrentTurnActionNumber\n\ lsls r0, 24\n\ lsrs r0, 24\n\ ldrb r1, [r1]\n\ @@ -3887,7 +3887,7 @@ _0801ED2E:\n\ str r1, [r2]\n\ bl _0801F5DC\n\ .align 2, 0\n\ -_0801ED54: .4byte gCurrentMoveTurn\n\ +_0801ED54: .4byte gCurrentTurnActionNumber\n\ _0801ED58: .4byte gStatusFlagsForMoveEffects\n\ _0801ED5C: .4byte gBattleCommunication\n\ _0801ED60:\n\ @@ -7290,14 +7290,14 @@ static void atk3D_end(void) { gBattleMoveFlags = 0; gActiveBank = 0; - gFightStateTracker = 0xB; + gCurrentActionFuncId = 0xB; } static void atk3E_end2(void) { //not much difference between this and 3D. It's more apparent in Emerald gActiveBank = 0; - gFightStateTracker = 0xB; + gCurrentActionFuncId = 0xB; } static void atk3F_end3(void) //pops the main function stack @@ -7467,7 +7467,7 @@ static void atk48_playstatchangeanimation(void) if (!(T2_READ_8(gBattlescriptCurrInstr + 3))) { u8 ability; - if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer) + if (gSideTimers[GetBankIdentity(gActiveBank) & 1].mistTimer) continue; ability = gBattleMons[gActiveBank].ability; if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1)) @@ -7602,7 +7602,7 @@ _0802167C:\n\ lsls r0, r1, 1\n\ adds r0, r1\n\ lsls r0, 2\n\ - ldr r1, _08021704 @ =gSideTimer\n\ + ldr r1, _08021704 @ =gSideTimers\n\ adds r0, r1\n\ ldrb r0, [r0, 0x2]\n\ ldr r3, [sp]\n\ @@ -7665,7 +7665,7 @@ _080216E4:\n\ b _08021770\n\ .align 2, 0\n\ _08021700: .4byte gActiveBank\n\ -_08021704: .4byte gSideTimer\n\ +_08021704: .4byte gSideTimers\n\ _08021708: .4byte gBattleMons\n\ _0802170C: .4byte gBattlescriptCurrInstr\n\ _08021710:\n\ @@ -9154,7 +9154,7 @@ _080221C0:\n\ eors r0, r1\n\ lsls r0, 24\n\ lsrs r0, 24\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ lsls r0, 24\n\ lsrs r2, r0, 24\n\ ldr r1, _080222CC @ =gBattleMons\n\ @@ -9457,18 +9457,18 @@ static void atk4F_jumpifcantswitch(void) { if (GetBankSide(gActiveBank) == 1) { - r7 = GetBankByPlayerAI(1); + r7 = GetBankByIdentity(1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - to_cmp = GetBankByPlayerAI(3); + to_cmp = GetBankByIdentity(3); else to_cmp = r7; party = gEnemyParty; } else { - r7 = GetBankByPlayerAI(0); + r7 = GetBankByIdentity(0); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - to_cmp = GetBankByPlayerAI(2); + to_cmp = GetBankByIdentity(2); else to_cmp = r7; party = gPlayerParty; @@ -10528,7 +10528,7 @@ _080232C4:\n\ eors r0, r1\n\ lsls r0, 24\n\ lsrs r0, 24\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ ldr r4, _08023310 @ =gActiveBank\n\ strb r0, [r4]\n\ ldr r0, _08023314 @ =gAbsentBankFlags\n\ @@ -10632,7 +10632,7 @@ static void atk52_switchineffects(void) gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED; - spikesDmg = (5 - gSideTimer[GetBankSide(gActiveBank)].spikesAmount) * 2; + spikesDmg = (5 - gSideTimers[GetBankSide(gActiveBank)].spikesAmount) * 2; gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg); if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -10690,9 +10690,9 @@ static void atk52_switchineffects(void) static void atk53_trainerslidein(void) { if (!T2_READ_8(gBattlescriptCurrInstr + 1)) - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); else - gActiveBank = GetBankByPlayerAI(1); + gActiveBank = GetBankByIdentity(1); EmitTrainerSlide(0); MarkBufferBankForExecution(gActiveBank); @@ -10725,7 +10725,7 @@ static void atk56_playfaintcry(void) static void atk57(void) { - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); Emitcmd55(0, gBattleOutcome); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 1; @@ -10758,12 +10758,12 @@ void atk59_handlelearnnewmove(void) } else { - gActiveBank = GetBankByPlayerAI(0); + gActiveBank = GetBankByIdentity(0); if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if { - gActiveBank = GetBankByPlayerAI(2); + gActiveBank = GetBankByIdentity(2); if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); } @@ -11907,7 +11907,7 @@ static void atk6D_resetsentmonsvalue(void) static void atk6E_setatktoplayer0(void) { - gBankAttacker = GetBankByPlayerAI(0); + gBankAttacker = GetBankByIdentity(0); gBattlescriptCurrInstr++; } @@ -12020,8 +12020,8 @@ static void atk76_various(void) u8 side; gBankAttacker = gBankTarget; side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp) - gBankTarget = gSideTimer[side].followmeTarget; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + gBankTarget = gSideTimers[side].followmeTarget; else gBankTarget = gActiveBank; } @@ -12080,7 +12080,7 @@ static void atk77_setprotectlike(void) //protect and endure if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE) gDisableStructs[gBankAttacker].protectUses = 0; - if (gCurrentMoveTurn == (gNoOfAllBanks - 1)) + if (gCurrentTurnActionNumber == (gNoOfAllBanks - 1)) not_last_turn = 0; if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] > Random() && not_last_turn) @@ -12266,7 +12266,7 @@ static void atk7E_setreflect(void) else { gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT; - gSideTimer[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5; + gSideTimers[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = 2; else @@ -12502,7 +12502,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) if ((statchanger << 0x18) < 0) //stat decrease { - if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE) + if (gSideTimers[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE) { if (flags == 1) { @@ -12728,7 +12728,7 @@ _08025E88:\n\ blt _08025EAC\n\ b _080261B0\n\ _08025EAC:\n\ - ldr r4, _08025F04 @ =gSideTimer\n\ + ldr r4, _08025F04 @ =gSideTimers\n\ ldr r1, _08025EF8 @ =gActiveBank\n\ ldrb r0, [r1]\n\ bl GetBankIdentity\n\ @@ -12769,7 +12769,7 @@ _08025EAC:\n\ _08025EF8: .4byte gActiveBank\n\ _08025EFC: .4byte gBankTarget\n\ _08025F00: .4byte gBattleTextBuff1\n\ -_08025F04: .4byte gSideTimer\n\ +_08025F04: .4byte gSideTimers\n\ _08025F08: .4byte gCurrentMove\n\ _08025F0C: .4byte gSpecialStatuses\n\ _08025F10: .4byte gBattlescriptCurrInstr\n\ @@ -13488,7 +13488,7 @@ static void atk92_setlightscreen(void) else { gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN; - gSideTimer[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5; + gSideTimers[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2) gBattleCommunication[MULTISTRING_CHOOSER] = 4; else @@ -14034,7 +14034,7 @@ static void atk98_updatestatusicon(void) } if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (!(gAbsentBankFlags & gBitTable[gActiveBank])) { EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2); @@ -14047,14 +14047,14 @@ static void atk98_updatestatusicon(void) static void atk99_setmist(void) { - if (gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer) + if (gSideTimers[GetBankIdentity(gBankAttacker) & 1].mistTimer) { gBattleMoveFlags |= MOVESTATUS_FAILED; gBattleCommunication[MULTISTRING_CHOOSER] = 1; } else { - gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5; + gSideTimers[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5; gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_MIST; gBattleCommunication[MULTISTRING_CHOOSER] = 0; } @@ -14315,8 +14315,8 @@ static void atkA1_counterdamagecalculator(void) if (gProtectStructs[gBankAttacker].physicalDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp) { gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2; - if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp) - gBankTarget = gSideTimer[def_side].followmeTarget; + if (gSideTimers[def_side].followmeTimer && gBattleMons[gSideTimers[def_side].followmeTarget].hp) + gBankTarget = gSideTimers[def_side].followmeTarget; else gBankTarget = gProtectStructs[gBankAttacker].physicalBank; gBattlescriptCurrInstr += 5; @@ -14335,8 +14335,8 @@ static void atkA2_mirrorcoatdamagecalculator(void) //a copy of atkA1 with the ph if (gProtectStructs[gBankAttacker].specialDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp) { gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2; - if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp) - gBankTarget = gSideTimer[def_side].followmeTarget; + if (gSideTimers[def_side].followmeTimer && gBattleMons[gSideTimers[def_side].followmeTarget].hp) + gBankTarget = gSideTimers[def_side].followmeTarget; else gBankTarget = gProtectStructs[gBankAttacker].specialBank; gBattlescriptCurrInstr += 5; @@ -14948,7 +14948,7 @@ static void atkAE_healpartystatus(void) gBattleCommunication[MULTISTRING_CHOOSER] |= 1; } - gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) { if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF) @@ -14986,7 +14986,7 @@ static void atkAE_healpartystatus(void) to_heal = 0x3F; gBattleMons[gBankAttacker].status1 = zero2; - gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) gBattleMons[gActiveBank].status1 = 0; @@ -15018,7 +15018,7 @@ static void atkAF_cursetarget(void) static void atkB0_trysetspikes(void) { u8 side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimer[side].spikesAmount == 3) + if (gSideTimers[side].spikesAmount == 3) { gSpecialStatuses[gBankAttacker].flag20 = 1; gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); @@ -15026,7 +15026,7 @@ static void atkB0_trysetspikes(void) else { gSideAffecting[side] |= SIDE_STATUS_SPIKES; - gSideTimer[side].spikesAmount++; + gSideTimers[side].spikesAmount++; gBattlescriptCurrInstr += 5; } } @@ -15167,7 +15167,7 @@ static void atkB8_setsafeguard(void) else { gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD; - gSideTimer[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5; + gSideTimers[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5; gBattleCommunication[MULTISTRING_CHOOSER] = 5; } gBattlescriptCurrInstr++; @@ -15234,16 +15234,16 @@ static void atkBA_jumpifnopursuitswitchdmg(void) if (gMultiHitCounter == 1) { if (GetBankSide(gBankAttacker) == 0) - gBankTarget = GetBankByPlayerAI(1); + gBankTarget = GetBankByIdentity(1); else - gBankTarget = GetBankByPlayerAI(0); + gBankTarget = GetBankByIdentity(0); } else { if (GetBankSide(gBankAttacker) == 0) - gBankTarget = GetBankByPlayerAI(3); + gBankTarget = GetBankByIdentity(3); else - gBankTarget = GetBankByPlayerAI(2); + gBankTarget = GetBankByIdentity(2); } if (gActionForBanks[gBankTarget] == 0 && gBankAttacker == ewram16010arr(gBankTarget) && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE)) @@ -15334,7 +15334,7 @@ static void atkBE_rapidspinfree(void) //rapid spin else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES) { gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES); - gSideTimer[GetBankSide(gBankAttacker)].spikesAmount = 0; + gSideTimers[GetBankSide(gBankAttacker)].spikesAmount = 0; b_movescr_stack_push_cursor(); gBattlescriptCurrInstr = BattleScript_SpikesFree; } @@ -15935,8 +15935,8 @@ static void atkC9_jumpifattackandspecialattackcannotfall(void) //memento static void atkCA_setforcedtarget(void) //follow me { - gSideTimer[GetBankSide(gBankAttacker)].followmeTimer = 1; - gSideTimer[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker; + gSideTimers[GetBankSide(gBankAttacker)].followmeTimer = 1; + gSideTimers[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker; gBattlescriptCurrInstr++; } @@ -16004,7 +16004,7 @@ static void atkD0_settaunt(void) static void atkD1_trysethelpinghand(void) { - gBankTarget = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gBankTarget]) && !gProtectStructs[gBankAttacker].helpingHand && !gProtectStructs[gBankTarget].helpingHand) { @@ -16774,7 +16774,7 @@ static void atkDF_trysetmagiccoat(void) { gBankTarget = gBankAttacker; gSpecialStatuses[gBankAttacker].flag20 = 1; - if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn + if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) //last turn gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); else { @@ -16786,7 +16786,7 @@ static void atkDF_trysetmagiccoat(void) static void atkE0_trysetsnatch(void) { gSpecialStatuses[gBankAttacker].flag20 = 1; - if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn + if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) //last turn gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); else { @@ -17011,7 +17011,7 @@ static void atkEB_settypetoterrain(void) static void atkEC_pursuitrelated(void) { - gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT) { gUnknown_02024A76[gActiveBank] = 11; @@ -17039,12 +17039,12 @@ static void atkED_snatchsetbanks(void) static void atkEE_removelightscreenreflect(void) //brick break { u8 side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimer[side].reflectTimer || gSideTimer[side].lightscreenTimer) + if (gSideTimers[side].reflectTimer || gSideTimers[side].lightscreenTimer) { gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT); gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN); - gSideTimer[side].reflectTimer = 0; - gSideTimer[side].lightscreenTimer = 0; + gSideTimers[side].reflectTimer = 0; + gSideTimers[side].lightscreenTimer = 0; BATTLE_STRUCT->animTurn = 1; BATTLE_STRUCT->animTargetsHit = 1; } @@ -17428,11 +17428,11 @@ static void atkF5_removeattackerstatus1(void) static void atkF6_finishaction(void) { - gFightStateTracker = 0xC; + gCurrentActionFuncId = 0xC; } static void atkF7_finishturn(void) { - gFightStateTracker = 0xC; - gCurrentMoveTurn = gNoOfAllBanks; + gCurrentActionFuncId = 0xC; + gCurrentTurnActionNumber = gNoOfAllBanks; } diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index e11971606..1c79d7ebf 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -795,7 +795,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b) void BattleMusicStop(void) { - u8 r4 = GetBankByPlayerAI(0); + u8 r4 = GetBankByIdentity(0); ewram17800[r4].unk0_1 = 0; if (IsDoubleBattle()) @@ -815,8 +815,8 @@ void sub_8032638(void) { if (gMain.inBattle) { - u8 r8 = GetBankByPlayerAI(0); - u8 r9 = GetBankByPlayerAI(2); + u8 r8 = GetBankByIdentity(0); + u8 r9 = GetBankByIdentity(2); u8 r4 = pokemon_order_func(gBattlePartyID[r8]); u8 r5 = pokemon_order_func(gBattlePartyID[r9]); @@ -857,12 +857,12 @@ void sub_80327CC(void) u8 r5; LoadCompressedObjectPic(&gUnknown_081FAF24); - r5 = GetBankByPlayerAI(1); + r5 = GetBankByIdentity(1); ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBankPosition(r5, 0), GetBankPosition(r5, 1) + 32, 0xC8); gSprites[ewram17810[r5].unk7].data[0] = r5; if (IsDoubleBattle()) { - r5 = GetBankByPlayerAI(3); + r5 = GetBankByIdentity(3); ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, GetBankPosition(r5, 0), GetBankPosition(r5, 1) + 32, 0xC8); gSprites[ewram17810[r5].unk7].data[0] = r5; } diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 6b892ea7a..977e91f5c 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1321,7 +1321,7 @@ static void BattleAICmd_count_alive_pokemon(void) u32 status; var = gBattlePartyID[index]; status = GetBankIdentity(index) ^ 2; - var2 = gBattlePartyID[GetBankByPlayerAI(status)]; + var2 = gBattlePartyID[GetBankByIdentity(status)]; } else { diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index 3097f1a0e..c35434df0 100644 --- a/src/battle/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -108,17 +108,17 @@ void sub_80A7FA0(u8 taskId) switch (gBattleAnimArgs[0]) { case 4: - side = GetBankByPlayerAI(0); + side = GetBankByIdentity(0); break; case 5: - side = GetBankByPlayerAI(2); + side = GetBankByIdentity(2); break; case 6: - side = GetBankByPlayerAI(1); + side = GetBankByIdentity(1); break; case 7: default: - side = GetBankByPlayerAI(3); + side = GetBankByIdentity(3); break; } if (IsAnimBankSpriteVisible(side) == FALSE) diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 54bb9d7f9..477b600ac 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -98,7 +98,7 @@ extern void sub_80324BC(); extern void BufferStringBattle(); extern void sub_80331D0(void); extern void sub_8036B0C(void); -extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankByIdentity(u8); extern u8 sub_8036CD4(void); extern void sub_80330C8(void); extern void sub_8043D84(); @@ -1451,9 +1451,9 @@ void OpponentHandlecmd20(void) gBankTarget = gActiveBank; if (gBattleMoves[r5->moves[r4]].target & 8) { - gBankTarget = GetBankByPlayerAI(0); + gBankTarget = GetBankByIdentity(0); if (gAbsentBankFlags & gBitTable[gBankTarget]) - gBankTarget = GetBankByPlayerAI(2); + gBankTarget = GetBankByIdentity(2); } r4 |= gBankTarget << 8; Emitcmd33(1, 10, r4); @@ -1479,13 +1479,13 @@ void OpponentHandlecmd20(void) } else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - u16 r2 = GetBankByPlayerAI(Random() & 2) << 8; + u16 r2 = GetBankByIdentity(Random() & 2) << 8; Emitcmd33(1, 10, r4 | r2); } else { - u16 r2 = GetBankByPlayerAI(0) << 8; + u16 r2 = GetBankByIdentity(0) << 8; Emitcmd33(1, 10, r4 | r2); } @@ -1561,7 +1561,7 @@ _08035494:\n\ cmp r0, 0\n\ beq _080354CE\n\ movs r0, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ ldr r5, _080354EC @ =gBankTarget\n\ strb r0, [r5]\n\ ldr r0, _080354F0 @ =gAbsentBankFlags\n\ @@ -1575,7 +1575,7 @@ _08035494:\n\ cmp r1, 0\n\ beq _080354CE\n\ movs r0, 0x2\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ strb r0, [r5]\n\ _080354CE:\n\ ldr r0, _080354EC @ =gBankTarget\n\ @@ -1640,7 +1640,7 @@ _0803553C:\n\ lsls r1, 24\n\ lsrs r1, 24\n\ adds r0, r1, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ adds r2, r0, 0\n\ lsls r2, 24\n\ lsrs r2, 16\n\ @@ -1653,7 +1653,7 @@ _0803553C:\n\ _0803556C: .4byte gBattleTypeFlags\n\ _08035570:\n\ movs r0, 0\n\ - bl GetBankByPlayerAI\n\ + bl GetBankByIdentity\n\ adds r2, r0, 0\n\ lsls r2, 24\n\ lsrs r2, 16\n\ @@ -1692,13 +1692,13 @@ void OpponentHandlecmd22(void) { if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - r5 = GetBankByPlayerAI(1); + r5 = GetBankByIdentity(1); r6 = r5; } else { - r6 = GetBankByPlayerAI(1); - r5 = GetBankByPlayerAI(3); + r6 = GetBankByIdentity(1); + r5 = GetBankByIdentity(3); } for (r4 = 0; r4 < 6; r4++) { diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 70773473d..62a38311a 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -118,7 +118,7 @@ extern void sub_8031F24(void); extern void sub_80324BC(); extern u8 sub_8031720(); extern void bx_wait_t1(void); -extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankByIdentity(u8); extern void sub_802DE10(void); extern void sub_80105EC(struct Sprite *); extern void sub_802D274(void); @@ -167,7 +167,7 @@ extern const u8 BattleText_LinkStandby[]; extern void dp11b_obj_instanciate(u8, u8, s8, s8); extern u8 GetBankIdentity(u8); -extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankByIdentity(u8); extern void dp11b_obj_free(u8, u8); extern void sub_8010520(struct Sprite *); extern void sub_8010574(struct Sprite *); @@ -445,7 +445,7 @@ void sub_802C098(void) { if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && GetBankIdentity(gActiveBank) == 2 - && !(gAbsentBankFlags & gBitTable[GetBankByPlayerAI(0)]) + && !(gAbsentBankFlags & gBitTable[GetBankByIdentity(0)]) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { if (gBattleBufferA[gActiveBank][1] == 1) @@ -529,7 +529,7 @@ void sub_802C2EC(void) i--; if (i < 0) i = 3; - gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + gUnknown_03004344 = GetBankByIdentity(arr[i]); } while(gUnknown_03004344 == gNoOfAllBanks); i = 0; switch (GetBankIdentity(gUnknown_03004344)) @@ -576,7 +576,7 @@ void sub_802C2EC(void) i++; if (i > 3) i = 0; - gUnknown_03004344 = GetBankByPlayerAI(arr[i]); + gUnknown_03004344 = GetBankByIdentity(arr[i]); } while (gUnknown_03004344 == gNoOfAllBanks); i = 0; switch (GetBankIdentity(gUnknown_03004344)) @@ -636,7 +636,7 @@ void sub_802C68C(void) if (r4 & 0x10) gUnknown_03004344 = gActiveBank; else - gUnknown_03004344 = GetBankByPlayerAI((GetBankIdentity(gActiveBank) & 1) ^ 1); + gUnknown_03004344 = GetBankByIdentity((GetBankIdentity(gActiveBank) & 1) ^ 1); if (gBattleBufferA[gActiveBank][1] == 0) { @@ -668,10 +668,10 @@ void sub_802C68C(void) gBattleBankFunc[gActiveBank] = sub_802C2EC; if (r4 & 0x12) gUnknown_03004344 = gActiveBank; - else if (gAbsentBankFlags & gBitTable[GetBankByPlayerAI(1)]) - gUnknown_03004344 = GetBankByPlayerAI(3); + else if (gAbsentBankFlags & gBitTable[GetBankByIdentity(1)]) + gUnknown_03004344 = GetBankByIdentity(3); else - gUnknown_03004344 = GetBankByPlayerAI(1); + gUnknown_03004344 = GetBankByIdentity(1); gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520; } } @@ -2458,7 +2458,7 @@ void PlayerHandlecmd12(void) { ewram17840.unk8 = 4; gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 3); gBattleBankFunc[gActiveBank] = bx_wait_t1; } @@ -2468,7 +2468,7 @@ void PlayerHandleBallThrow(void) ewram17840.unk8 = var; gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 3); gBattleBankFunc[gActiveBank] = bx_wait_t1; } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 6f6286945..37c58f951 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -40,7 +40,7 @@ extern u16 gUnknown_02024DE8; extern u8 gBattleOutcome; extern u8 GetBankSide(u8); -extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankByIdentity(u8); extern u8 GetBankIdentity(u8); extern void LoadPlayerTrainerBankSprite(); extern u8 sub_8079E90(); @@ -423,7 +423,7 @@ void SafariHandlecmd12(void) { ewram17840.unk8 = 4; gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4); gBattleBankFunc[gActiveBank] = bx_wait_t6; } @@ -433,7 +433,7 @@ void SafariHandleBallThrow(void) ewram17840.unk8 = var; gDoingBattleAnim = 1; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4); gBattleBankFunc[gActiveBank] = bx_wait_t6; } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 8ace11fc1..be40f968c 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -75,7 +75,7 @@ extern void PlayerHandlecmd1(void); extern void LoadPlayerTrainerBankSprite(); extern u8 GetBankIdentity(u8); extern void sub_80313A0(struct Sprite *); -extern u8 GetBankByPlayerAI(u8); +extern u8 GetBankByIdentity(u8); extern u8 sub_8031720(); extern void DoMoveAnim(); extern void sub_80326EC(); @@ -1149,7 +1149,7 @@ void WallyHandlecmd12(void) { ewram17840.unk8 = 4; gDoingBattleAnim = TRUE; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4); gBattleBankFunc[gActiveBank] = bx_wait_t5; } @@ -1159,7 +1159,7 @@ void WallyHandleBallThrow(void) ewram17840.unk8 = val; gDoingBattleAnim = TRUE; - move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4); + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByIdentity(1), 4); gBattleBankFunc[gActiveBank] = bx_wait_t5; } diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c index 4ac8c7a6f..d8efc09c5 100644 --- a/src/battle/battle_message.c +++ b/src/battle/battle_message.c @@ -199,7 +199,7 @@ s32 sub_803FC34(u16); void get_trainer_name(u8* dst); u8 get_trainer_class_name_index(void); u8 GetMultiplayerId(void); -u8 GetBankByPlayerAI(u8 ID); +u8 GetBankByIdentity(u8 ID); u8 GetBankSide(u8 bank); u8 GetBankIdentity(u8 bank); #ifdef GERMAN @@ -572,22 +572,22 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = gBattleTextBuff3; break; case 2: // first player poke name - GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text); + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(0)]], MON_DATA_NICKNAME, text); StringGetEnd10(text); toCpy = text; break; case 3: // first enemy poke name - GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text); + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(1)]], MON_DATA_NICKNAME, text); StringGetEnd10(text); toCpy = text; break; case 4: // second player poke name - GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text); + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(2)]], MON_DATA_NICKNAME, text); StringGetEnd10(text); toCpy = text; break; case 5: // second enemy poke name - GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text); + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(3)]], MON_DATA_NICKNAME, text); StringGetEnd10(text); toCpy = text; break; @@ -612,13 +612,13 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = text; break; case 10: // attacker name with prefix, only bank 0/1 - HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)]) + HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByIdentity(GetBankIdentity(gBankAttacker) & 1)]) break; case 11: // attacker partner name, only bank 0/1 if (GetBankSide(gBankAttacker) == 0) - GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); else - GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); + GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text); StringGetEnd10(text); toCpy = text; diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index d4dcae0ca..7bce00d82 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -122,7 +122,7 @@ static void sub_8094998(u8 arg[3], u8 player_number) if (!IsDoubleBattle()) { pos = 1; - *temp = gBattlePartyID[GetBankByPlayerAI(0)]; + *temp = gBattlePartyID[GetBankByIdentity(0)]; for (i = 0; i <= 5; i++) if (i != *temp) temp[pos++] = i; @@ -130,8 +130,8 @@ static void sub_8094998(u8 arg[3], u8 player_number) else { pos = 2; - *temp = gBattlePartyID[GetBankByPlayerAI(0)]; - temp[1] = gBattlePartyID[GetBankByPlayerAI(2)]; + *temp = gBattlePartyID[GetBankByIdentity(0)]; + temp[1] = gBattlePartyID[GetBankByIdentity(2)]; for (i = 0; i <= 5; i++) if ((i != *temp) && (i != temp[1])) temp[pos++] = i; @@ -147,13 +147,13 @@ static void sub_8094A74(u8 arg[3], u8 player_number, u32 arg3) u8 temp[6]; if (!GetBankSide(arg3)) { - i = GetBankByPlayerAI(0); - j = GetBankByPlayerAI(2); + i = GetBankByIdentity(0); + j = GetBankByIdentity(2); } else { - i = GetBankByPlayerAI(1); - j = GetBankByPlayerAI(3); + i = GetBankByIdentity(1); + j = GetBankByIdentity(3); } if (IsLinkDoubleBattle() == TRUE) { diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c index bcaaebcda..6f27469ce 100644 --- a/src/battle/pokeball.c +++ b/src/battle/pokeball.c @@ -383,7 +383,7 @@ static void sub_8046464(u8 taskId) gSprites[spriteId].callback = sub_8047254; break; default: - gBankTarget = GetBankByPlayerAI(1); + gBankTarget = GetBankByIdentity(1); sp0 = TRUE; break; } @@ -722,7 +722,7 @@ static void sub_8046C78(struct Sprite *sprite) r8 = -25; } species = GetMonData(pkmn, MON_DATA_SPECIES); - if ((r5 == GetBankByPlayerAI(0) || r5 == GetBankByPlayerAI(1)) + if ((r5 == GetBankByIdentity(0) || r5 == GetBankByIdentity(1)) && IsDoubleBattle() && ewram17840.unk9_0) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) @@ -737,7 +737,7 @@ static void sub_8046C78(struct Sprite *sprite) } if (!IsDoubleBattle() || !ewram17840.unk9_0) r4_2 = 0; - else if (r5 == GetBankByPlayerAI(0) || r5 == GetBankByPlayerAI(1)) + else if (r5 == GetBankByIdentity(0) || r5 == GetBankByIdentity(1)) r4_2 = 1; else r4_2 = 2; @@ -885,7 +885,7 @@ static void sub_80470C4(struct Sprite *sprite) sprite->data[6] = sprite->oam.affineParam & 0xFF; sprite->data[0] = 0; if (IsDoubleBattle() && ewram17840.unk9_0 - && sprite->data[6] == GetBankByPlayerAI(2)) + && sprite->data[6] == GetBankByIdentity(2)) sprite->callback = sub_8047230; else sprite->callback = sub_8046C78; @@ -910,7 +910,7 @@ static void sub_8047254(struct Sprite *sprite) { sprite->data[0] = 0; if (IsDoubleBattle() && ewram17840.unk9_0 - && sprite->data[6] == GetBankByPlayerAI(3)) + && sprite->data[6] == GetBankByIdentity(3)) sprite->callback = sub_8047230; else sprite->callback = sub_8046C78; diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 49b0854cc..a7646e78b 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -171,13 +171,13 @@ static void CB2_ReshowBattleScreenAfterMenu(void) sub_80327CC(); - opponentBank = GetBankByPlayerAI(1); + opponentBank = GetBankByIdentity(1); species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); sub_8032984(opponentBank, species); if (IsDoubleBattle()) { - opponentBank = GetBankByPlayerAI(3); + opponentBank = GetBankByIdentity(3); species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES); sub_8032984(opponentBank, species); } diff --git a/src/data/battle_tower/trainers.h b/src/data/battle_tower/trainers.h index b5eb3da7a..ae204f8ea 100644 --- a/src/data/battle_tower/trainers.h +++ b/src/data/battle_tower/trainers.h @@ -1,7 +1,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = { { - .trainerClass = TRAINER_CLASS_YOUNGSTER, + .trainerClass = FACILITY_CLASS_YOUNGSTER, .name = _("ALVIN"), .teamFlags = 0x01, .greeting = { @@ -16,7 +16,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, .name = _("DIRK"), .teamFlags = 0x01, .greeting = { @@ -31,7 +31,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LADY, + .trainerClass = FACILITY_CLASS_LADY, .name = _("CYBIL"), .teamFlags = 0x02, .greeting = { @@ -46,7 +46,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BLACK_BELT, + .trainerClass = FACILITY_CLASS_BLACK_BELT, .name = _("CHEN"), .teamFlags = 0x05, .greeting = { @@ -61,7 +61,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_NINJA_BOY, + .trainerClass = FACILITY_CLASS_NINJA_BOY, .name = _("YOSHI"), .teamFlags = 0x05, .greeting = { @@ -76,7 +76,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SCHOOL_KID_F, + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, .name = _("TINA"), .teamFlags = 0x0A, .greeting = { @@ -91,7 +91,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, + .trainerClass = FACILITY_CLASS_BUG_MANIAC, .name = _("COREY"), .teamFlags = 0x41, .greeting = { @@ -106,7 +106,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_FISHERMAN, + .trainerClass = FACILITY_CLASS_FISHERMAN, .name = _("GORDON"), .teamFlags = 0x01, .greeting = { @@ -121,7 +121,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_TUBER_F, + .trainerClass = FACILITY_CLASS_TUBER_F, .name = _("ANN"), .teamFlags = 0x02, .greeting = { @@ -136,7 +136,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_F, + .trainerClass = FACILITY_CLASS_POKEFAN_F, .name = _("JULIA"), .teamFlags = 0x42, .greeting = { @@ -151,7 +151,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GENTLEMAN, + .trainerClass = FACILITY_CLASS_GENTLEMAN, .name = _("GREGORY"), .teamFlags = 0x01, .greeting = { @@ -166,7 +166,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CAMPER, + .trainerClass = FACILITY_CLASS_CAMPER, .name = _("KEITH"), .teamFlags = 0x01, .greeting = { @@ -181,7 +181,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .name = _("KENDRA"), .teamFlags = 0x0A, .greeting = { @@ -196,7 +196,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HIKER, + .trainerClass = FACILITY_CLASS_HIKER, .name = _("DEV"), .teamFlags = 0x01, .greeting = { @@ -211,7 +211,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, .name = _("CASSIE"), .teamFlags = 0x0A, .greeting = { @@ -226,7 +226,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_M, + .trainerClass = FACILITY_CLASS_PSYCHIC_M, .name = _("JULIAN"), .teamFlags = 0x05, .greeting = { @@ -241,7 +241,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LASS, + .trainerClass = FACILITY_CLASS_LASS, .name = _("JOYCE"), .teamFlags = 0x02, .greeting = { @@ -256,7 +256,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GUITARIST, + .trainerClass = FACILITY_CLASS_GUITARIST, .name = _("LES"), .teamFlags = 0x01, .greeting = { @@ -271,7 +271,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RICH_BOY, + .trainerClass = FACILITY_CLASS_RICH_BOY, .name = _("CLINTON"), .teamFlags = 0x01, .greeting = { @@ -286,7 +286,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, + .trainerClass = FACILITY_CLASS_BUG_CATCHER, .name = _("LEWIS"), .teamFlags = 0x01, .greeting = { @@ -301,7 +301,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PICNICKER, + .trainerClass = FACILITY_CLASS_PICNICKER, .name = _("RACHAEL"), .teamFlags = 0x02, .greeting = { @@ -316,7 +316,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COLLECTOR, + .trainerClass = FACILITY_CLASS_COLLECTOR, .name = _("HAROLD"), .teamFlags = 0x09, .greeting = { @@ -331,7 +331,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_TUBER_M, + .trainerClass = FACILITY_CLASS_TUBER_M, .name = _("KIPP"), .teamFlags = 0x01, .greeting = { @@ -346,7 +346,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_KINDLER, + .trainerClass = FACILITY_CLASS_KINDLER, .name = _("IRWIN"), .teamFlags = 0x05, .greeting = { @@ -361,7 +361,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_F, + .trainerClass = FACILITY_CLASS_PSYCHIC_F, .name = _("EILEEN"), .teamFlags = 0x0A, .greeting = { @@ -376,7 +376,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_F, + .trainerClass = FACILITY_CLASS_SWIMMER_F, .name = _("ANNE"), .teamFlags = 0x02, .greeting = { @@ -391,7 +391,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .name = _("RUTH"), .teamFlags = 0x06, .greeting = { @@ -406,7 +406,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMANIAC, + .trainerClass = FACILITY_CLASS_POKEMANIAC, .name = _("JEREMY"), .teamFlags = 0x40, .greeting = { @@ -421,7 +421,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SAILOR, + .trainerClass = FACILITY_CLASS_SAILOR, .name = _("TREVOR"), .teamFlags = 0x09, .greeting = { @@ -436,7 +436,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_F, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, .name = _("COLETTE"), .teamFlags = 0x06, .greeting = { @@ -451,7 +451,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, + .trainerClass = FACILITY_CLASS_HEX_MANIAC, .name = _("PAULA"), .teamFlags = 0x42, .greeting = { @@ -466,7 +466,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, .name = _("STANLY"), .teamFlags = 0x41, .greeting = { @@ -481,7 +481,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .name = _("TROY"), .teamFlags = 0x09, .greeting = { @@ -496,7 +496,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SCHOOL_KID_M, + .trainerClass = FACILITY_CLASS_SCHOOL_KID_M, .name = _("ED"), .teamFlags = 0x08, .greeting = { @@ -511,7 +511,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_F, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, .name = _("ELLEN"), .teamFlags = 0x04, .greeting = { @@ -526,7 +526,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_M, + .trainerClass = FACILITY_CLASS_SWIMMER_M, .name = _("ARNIE"), .teamFlags = 0x09, .greeting = { @@ -541,7 +541,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .name = _("HAL"), .teamFlags = 0x09, .greeting = { @@ -556,7 +556,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BEAUTY, + .trainerClass = FACILITY_CLASS_BEAUTY, .name = _("LAUREN"), .teamFlags = 0x06, .greeting = { @@ -571,7 +571,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_AROMA_LADY, + .trainerClass = FACILITY_CLASS_AROMA_LADY, .name = _("STACY"), .teamFlags = 0x06, .greeting = { @@ -586,7 +586,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COLLECTOR, + .trainerClass = FACILITY_CLASS_COLLECTOR, .name = _("DARYL"), .teamFlags = 0x81, .greeting = { @@ -601,7 +601,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .name = _("KATHY"), .teamFlags = 0x04, .greeting = { @@ -616,7 +616,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_M, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, .name = _("HARRIS"), .teamFlags = 0x0C, .greeting = { @@ -631,7 +631,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_M, + .trainerClass = FACILITY_CLASS_POKEFAN_M, .name = _("GLENN"), .teamFlags = 0x80, .greeting = { @@ -646,7 +646,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .name = _("NICO"), .teamFlags = 0x04, .greeting = { @@ -661,7 +661,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_M, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, .name = _("BAILEY"), .teamFlags = 0x41, .greeting = { @@ -676,7 +676,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, + .trainerClass = FACILITY_CLASS_PARASOL_LADY, .name = _("ABBIE"), .teamFlags = 0x08, .greeting = { @@ -691,7 +691,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CAMPER, + .trainerClass = FACILITY_CLASS_CAMPER, .name = _("AL"), .teamFlags = 0x0C, .greeting = { @@ -706,7 +706,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SCHOOL_KID_F, + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, .name = _("PEGGY"), .teamFlags = 0x42, .greeting = { @@ -721,7 +721,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BEAUTY, + .trainerClass = FACILITY_CLASS_BEAUTY, .name = _("NAOMI"), .teamFlags = 0x04, .greeting = { @@ -736,7 +736,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_NINJA_BOY, + .trainerClass = FACILITY_CLASS_NINJA_BOY, .name = _("KENJI"), .teamFlags = 0x0C, .greeting = { @@ -751,7 +751,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .name = _("ROSS"), .teamFlags = 0x01, .greeting = { @@ -766,7 +766,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_F, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, .name = _("EDNA"), .teamFlags = 0x02, .greeting = { @@ -781,7 +781,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, .name = _("ANTON"), .teamFlags = 0x41, .greeting = { @@ -796,7 +796,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_M, + .trainerClass = FACILITY_CLASS_SWIMMER_M, .name = _("MITCH"), .teamFlags = 0x81, .greeting = { @@ -811,7 +811,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, + .trainerClass = FACILITY_CLASS_HEX_MANIAC, .name = _("ROD"), .teamFlags = 0x42, .greeting = { @@ -826,7 +826,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .name = _("RICH"), .teamFlags = 0x01, .greeting = { @@ -841,7 +841,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_M, + .trainerClass = FACILITY_CLASS_POKEFAN_M, .name = _("DANIEL"), .teamFlags = 0x80, .greeting = { @@ -856,7 +856,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_F, + .trainerClass = FACILITY_CLASS_PSYCHIC_F, .name = _("GLORIA"), .teamFlags = 0x82, .greeting = { @@ -871,7 +871,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GUITARIST, + .trainerClass = FACILITY_CLASS_GUITARIST, .name = _("NELSON"), .teamFlags = 0x01, .greeting = { @@ -886,7 +886,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_KINDLER, + .trainerClass = FACILITY_CLASS_KINDLER, .name = _("FERRIS"), .teamFlags = 0x41, .greeting = { @@ -901,7 +901,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_AROMA_LADY, + .trainerClass = FACILITY_CLASS_AROMA_LADY, .name = _("AMANDA"), .teamFlags = 0x82, .greeting = { @@ -916,7 +916,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .name = _("MASON"), .teamFlags = 0x10, .greeting = { @@ -931,7 +931,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, .name = _("NATE"), .teamFlags = 0x10, .greeting = { @@ -946,7 +946,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LASS, + .trainerClass = FACILITY_CLASS_LASS, .name = _("MIRIAM"), .teamFlags = 0x82, .greeting = { @@ -961,7 +961,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMANIAC, + .trainerClass = FACILITY_CLASS_POKEMANIAC, .name = _("THEO"), .teamFlags = 0x40, .greeting = { @@ -976,7 +976,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .name = _("PAMELA"), .teamFlags = 0x10, .greeting = { @@ -991,7 +991,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_F, + .trainerClass = FACILITY_CLASS_POKEFAN_F, .name = _("ALISSA"), .teamFlags = 0x20, .greeting = { @@ -1006,7 +1006,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GENTLEMAN, + .trainerClass = FACILITY_CLASS_GENTLEMAN, .name = _("ARTHUR"), .teamFlags = 0x20, .greeting = { @@ -1021,7 +1021,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_F, + .trainerClass = FACILITY_CLASS_SWIMMER_F, .name = _("MARCY"), .teamFlags = 0x82, .greeting = { @@ -1036,7 +1036,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_M, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, .name = _("MILLER"), .teamFlags = 0x10, .greeting = { @@ -1051,7 +1051,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, .name = _("OLIVER"), .teamFlags = 0x11, .greeting = { @@ -1066,7 +1066,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .name = _("MOLLY"), .teamFlags = 0x12, .greeting = { @@ -1081,7 +1081,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, + .trainerClass = FACILITY_CLASS_BUG_MANIAC, .name = _("JASON"), .teamFlags = 0x40, .greeting = { @@ -1096,7 +1096,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, .name = _("AVA"), .teamFlags = 0x20, .greeting = { @@ -1111,7 +1111,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_FISHERMAN, + .trainerClass = FACILITY_CLASS_FISHERMAN, .name = _("HANK"), .teamFlags = 0x10, .greeting = { @@ -1126,7 +1126,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SAILOR, + .trainerClass = FACILITY_CLASS_SAILOR, .name = _("PETER"), .teamFlags = 0x20, .greeting = { @@ -1141,7 +1141,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_F, + .trainerClass = FACILITY_CLASS_EXPERT_F, .name = _("MINDY"), .teamFlags = 0x20, .greeting = { @@ -1156,7 +1156,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, + .trainerClass = FACILITY_CLASS_BUG_MANIAC, .name = _("DWIGHT"), .teamFlags = 0x11, .greeting = { @@ -1171,7 +1171,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_F, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, .name = _("REENA"), .teamFlags = 0x12, .greeting = { @@ -1186,7 +1186,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, + .trainerClass = FACILITY_CLASS_PARASOL_LADY, .name = _("MEGAN"), .teamFlags = 0x10, .greeting = { @@ -1201,7 +1201,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .name = _("SIERRA"), .teamFlags = 0x04, .greeting = { @@ -1216,7 +1216,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_M, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, .name = _("ARNOLD"), .teamFlags = 0x08, .greeting = { @@ -1231,7 +1231,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BLACK_BELT, + .trainerClass = FACILITY_CLASS_BLACK_BELT, .name = _("XIN"), .teamFlags = 0x04, .greeting = { @@ -1246,7 +1246,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_F, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, .name = _("KELLY"), .teamFlags = 0x02, .greeting = { @@ -1261,7 +1261,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COLLECTOR, + .trainerClass = FACILITY_CLASS_COLLECTOR, .name = _("VANCE"), .teamFlags = 0x80, .greeting = { @@ -1276,7 +1276,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .name = _("TOBY"), .teamFlags = 0x01, .greeting = { @@ -1291,7 +1291,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GENTLEMAN, + .trainerClass = FACILITY_CLASS_GENTLEMAN, .name = _("NORTON"), .teamFlags = 0x20, .greeting = { @@ -1306,7 +1306,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, .name = _("ZOE"), .teamFlags = 0x02, .greeting = { @@ -1321,7 +1321,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BEAUTY, + .trainerClass = FACILITY_CLASS_BEAUTY, .name = _("EMMA"), .teamFlags = 0x20, .greeting = { @@ -1336,7 +1336,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HIKER, + .trainerClass = FACILITY_CLASS_HIKER, .name = _("VINCE"), .teamFlags = 0x04, .greeting = { @@ -1351,7 +1351,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_M, + .trainerClass = FACILITY_CLASS_EXPERT_M, .name = _("MARV"), .teamFlags = 0x10, .greeting = { @@ -1366,7 +1366,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_M, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, .name = _("TODD"), .teamFlags = 0x40, .greeting = { @@ -1381,7 +1381,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GUITARIST, + .trainerClass = FACILITY_CLASS_GUITARIST, .name = _("GAVIN"), .teamFlags = 0x01, .greeting = { @@ -1396,7 +1396,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_M, + .trainerClass = FACILITY_CLASS_PSYCHIC_M, .name = _("QUINN"), .teamFlags = 0x08, .greeting = { @@ -1411,7 +1411,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_F, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, .name = _("JENN"), .teamFlags = 0x02, .greeting = { @@ -1426,7 +1426,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_M, + .trainerClass = FACILITY_CLASS_EXPERT_M, .name = _("JOEL"), .teamFlags = 0x10, .greeting = { @@ -1441,7 +1441,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, .name = _("KYLE"), .teamFlags = 0x0C, .greeting = { @@ -1456,7 +1456,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_M, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, .name = _("BRET"), .teamFlags = 0x01, .greeting = { @@ -1471,7 +1471,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_F, + .trainerClass = FACILITY_CLASS_EXPERT_F, .name = _("CARRIE"), .teamFlags = 0x10, .greeting = { @@ -1486,7 +1486,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LADY, + .trainerClass = FACILITY_CLASS_LADY, .name = _("GILLIAN"), .teamFlags = 0x02, .greeting = { diff --git a/src/data/battle_tower/trainers_de.h b/src/data/battle_tower/trainers_de.h index 86182da9d..db226c6a6 100644 --- a/src/data/battle_tower/trainers_de.h +++ b/src/data/battle_tower/trainers_de.h @@ -1,7 +1,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = { { - .trainerClass = TRAINER_CLASS_YOUNGSTER, + .trainerClass = FACILITY_CLASS_YOUNGSTER, .name = _("ALWIN"), .teamFlags = 0x01, .greeting = { @@ -16,7 +16,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, .name = _("DIRK"), .teamFlags = 0x01, .greeting = { @@ -31,7 +31,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LADY, + .trainerClass = FACILITY_CLASS_LADY, .name = _("SIBILLE"), .teamFlags = 0x02, .greeting = { @@ -46,7 +46,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BLACK_BELT, + .trainerClass = FACILITY_CLASS_BLACK_BELT, .name = _("OLAF"), .teamFlags = 0x05, .greeting = { @@ -61,7 +61,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_NINJA_BOY, + .trainerClass = FACILITY_CLASS_NINJA_BOY, .name = _("JOST"), .teamFlags = 0x05, .greeting = { @@ -76,7 +76,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SCHOOL_KID_F, + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, .name = _("TINA"), .teamFlags = 0x0A, .greeting = { @@ -91,7 +91,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, + .trainerClass = FACILITY_CLASS_BUG_MANIAC, .name = _("HAJO"), .teamFlags = 0x41, .greeting = { @@ -106,7 +106,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_FISHERMAN, + .trainerClass = FACILITY_CLASS_FISHERMAN, .name = _("GEORG"), .teamFlags = 0x01, .greeting = { @@ -121,7 +121,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_TUBER_F, + .trainerClass = FACILITY_CLASS_TUBER_F, .name = _("ANNE"), .teamFlags = 0x02, .greeting = { @@ -136,7 +136,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_F, + .trainerClass = FACILITY_CLASS_POKEFAN_F, .name = _("JULIA"), .teamFlags = 0x42, .greeting = { @@ -151,7 +151,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GENTLEMAN, + .trainerClass = FACILITY_CLASS_GENTLEMAN, .name = _("JOHANN"), .teamFlags = 0x01, .greeting = { @@ -166,7 +166,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CAMPER, + .trainerClass = FACILITY_CLASS_CAMPER, .name = _("KARL"), .teamFlags = 0x01, .greeting = { @@ -181,7 +181,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .name = _("KENDRA"), .teamFlags = 0x0A, .greeting = { @@ -196,7 +196,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HIKER, + .trainerClass = FACILITY_CLASS_HIKER, .name = _("DAVID"), .teamFlags = 0x01, .greeting = { @@ -211,7 +211,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, .name = _("KEA"), .teamFlags = 0x0A, .greeting = { @@ -226,7 +226,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_M, + .trainerClass = FACILITY_CLASS_PSYCHIC_M, .name = _("JULIAN"), .teamFlags = 0x05, .greeting = { @@ -241,7 +241,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LASS, + .trainerClass = FACILITY_CLASS_LASS, .name = _("JOSI"), .teamFlags = 0x02, .greeting = { @@ -256,7 +256,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GUITARIST, + .trainerClass = FACILITY_CLASS_GUITARIST, .name = _("LEIF"), .teamFlags = 0x01, .greeting = { @@ -271,7 +271,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RICH_BOY, + .trainerClass = FACILITY_CLASS_RICH_BOY, .name = _("INGO"), .teamFlags = 0x01, .greeting = { @@ -286,7 +286,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_CATCHER, + .trainerClass = FACILITY_CLASS_BUG_CATCHER, .name = _("LUDWIG"), .teamFlags = 0x01, .greeting = { @@ -301,7 +301,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PICNICKER, + .trainerClass = FACILITY_CLASS_PICNICKER, .name = _("RAJA"), .teamFlags = 0x02, .greeting = { @@ -316,7 +316,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COLLECTOR, + .trainerClass = FACILITY_CLASS_COLLECTOR, .name = _("HARALD"), .teamFlags = 0x09, .greeting = { @@ -331,7 +331,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_TUBER_M, + .trainerClass = FACILITY_CLASS_TUBER_M, .name = _("KIM"), .teamFlags = 0x01, .greeting = { @@ -346,7 +346,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_KINDLER, + .trainerClass = FACILITY_CLASS_KINDLER, .name = _("ERWIN"), .teamFlags = 0x05, .greeting = { @@ -361,7 +361,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_F, + .trainerClass = FACILITY_CLASS_PSYCHIC_F, .name = _("EIKA"), .teamFlags = 0x0A, .greeting = { @@ -376,7 +376,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_F, + .trainerClass = FACILITY_CLASS_SWIMMER_F, .name = _("ANNINA"), .teamFlags = 0x02, .greeting = { @@ -391,7 +391,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .name = _("RUTH"), .teamFlags = 0x06, .greeting = { @@ -406,7 +406,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMANIAC, + .trainerClass = FACILITY_CLASS_POKEMANIAC, .name = _("JENS"), .teamFlags = 0x40, .greeting = { @@ -421,7 +421,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SAILOR, + .trainerClass = FACILITY_CLASS_SAILOR, .name = _("TITUS"), .teamFlags = 0x09, .greeting = { @@ -436,7 +436,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_F, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, .name = _("NICOLA"), .teamFlags = 0x06, .greeting = { @@ -451,7 +451,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, + .trainerClass = FACILITY_CLASS_HEX_MANIAC, .name = _("PAULA"), .teamFlags = 0x42, .greeting = { @@ -466,7 +466,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, .name = _("SÖREN"), .teamFlags = 0x41, .greeting = { @@ -481,7 +481,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .name = _("RAINER"), .teamFlags = 0x09, .greeting = { @@ -496,7 +496,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SCHOOL_KID_M, + .trainerClass = FACILITY_CLASS_SCHOOL_KID_M, .name = _("FABIAN"), .teamFlags = 0x08, .greeting = { @@ -511,7 +511,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_F, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, .name = _("ELLEN"), .teamFlags = 0x04, .greeting = { @@ -526,7 +526,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_M, + .trainerClass = FACILITY_CLASS_SWIMMER_M, .name = _("ARNIE"), .teamFlags = 0x09, .greeting = { @@ -541,7 +541,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .name = _("HARDI"), .teamFlags = 0x09, .greeting = { @@ -556,7 +556,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BEAUTY, + .trainerClass = FACILITY_CLASS_BEAUTY, .name = _("LINA"), .teamFlags = 0x06, .greeting = { @@ -571,7 +571,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_AROMA_LADY, + .trainerClass = FACILITY_CLASS_AROMA_LADY, .name = _("SELINA"), .teamFlags = 0x06, .greeting = { @@ -586,7 +586,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COLLECTOR, + .trainerClass = FACILITY_CLASS_COLLECTOR, .name = _("DANTE"), .teamFlags = 0x81, .greeting = { @@ -601,7 +601,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .name = _("KATJA"), .teamFlags = 0x04, .greeting = { @@ -616,7 +616,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_M, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, .name = _("HORST"), .teamFlags = 0x0C, .greeting = { @@ -631,7 +631,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_M, + .trainerClass = FACILITY_CLASS_POKEFAN_M, .name = _("GERRIT"), .teamFlags = 0x80, .greeting = { @@ -646,7 +646,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .name = _("NIKO"), .teamFlags = 0x04, .greeting = { @@ -661,7 +661,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_M, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, .name = _("BALDO"), .teamFlags = 0x41, .greeting = { @@ -676,7 +676,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, + .trainerClass = FACILITY_CLASS_PARASOL_LADY, .name = _("ALMA"), .teamFlags = 0x08, .greeting = { @@ -691,7 +691,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CAMPER, + .trainerClass = FACILITY_CLASS_CAMPER, .name = _("ADAM"), .teamFlags = 0x0C, .greeting = { @@ -706,7 +706,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SCHOOL_KID_F, + .trainerClass = FACILITY_CLASS_SCHOOL_KID_F, .name = _("GRETE"), .teamFlags = 0x42, .greeting = { @@ -721,7 +721,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BEAUTY, + .trainerClass = FACILITY_CLASS_BEAUTY, .name = _("NAOMI"), .teamFlags = 0x04, .greeting = { @@ -736,7 +736,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_NINJA_BOY, + .trainerClass = FACILITY_CLASS_NINJA_BOY, .name = _("KENO"), .teamFlags = 0x0C, .greeting = { @@ -751,7 +751,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M, .name = _("REMUS"), .teamFlags = 0x01, .greeting = { @@ -766,7 +766,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_F, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F, .name = _("EDITH"), .teamFlags = 0x02, .greeting = { @@ -781,7 +781,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUIN_MANIAC, + .trainerClass = FACILITY_CLASS_RUIN_MANIAC, .name = _("ANTON"), .teamFlags = 0x41, .greeting = { @@ -796,7 +796,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_M, + .trainerClass = FACILITY_CLASS_SWIMMER_M, .name = _("MALTE"), .teamFlags = 0x81, .greeting = { @@ -811,7 +811,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HEX_MANIAC, + .trainerClass = FACILITY_CLASS_HEX_MANIAC, .name = _("RAOUL"), .teamFlags = 0x42, .greeting = { @@ -826,7 +826,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M, .name = _("RICK"), .teamFlags = 0x01, .greeting = { @@ -841,7 +841,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_M, + .trainerClass = FACILITY_CLASS_POKEFAN_M, .name = _("DENNIS"), .teamFlags = 0x80, .greeting = { @@ -856,7 +856,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_F, + .trainerClass = FACILITY_CLASS_PSYCHIC_F, .name = _("GLORIA"), .teamFlags = 0x82, .greeting = { @@ -871,7 +871,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GUITARIST, + .trainerClass = FACILITY_CLASS_GUITARIST, .name = _("NINO"), .teamFlags = 0x01, .greeting = { @@ -886,7 +886,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_KINDLER, + .trainerClass = FACILITY_CLASS_KINDLER, .name = _("FIETE"), .teamFlags = 0x41, .greeting = { @@ -901,7 +901,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_AROMA_LADY, + .trainerClass = FACILITY_CLASS_AROMA_LADY, .name = _("AMANDA"), .teamFlags = 0x82, .greeting = { @@ -916,7 +916,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .name = _("MAREK"), .teamFlags = 0x10, .greeting = { @@ -931,7 +931,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, .name = _("NATHAN"), .teamFlags = 0x10, .greeting = { @@ -946,7 +946,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LASS, + .trainerClass = FACILITY_CLASS_LASS, .name = _("MIRIAM"), .teamFlags = 0x82, .greeting = { @@ -961,7 +961,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMANIAC, + .trainerClass = FACILITY_CLASS_POKEMANIAC, .name = _("THEO"), .teamFlags = 0x40, .greeting = { @@ -976,7 +976,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F, .name = _("PIA"), .teamFlags = 0x10, .greeting = { @@ -991,7 +991,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEFAN_F, + .trainerClass = FACILITY_CLASS_POKEFAN_F, .name = _("ALISSA"), .teamFlags = 0x20, .greeting = { @@ -1006,7 +1006,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GENTLEMAN, + .trainerClass = FACILITY_CLASS_GENTLEMAN, .name = _("ARTUR"), .teamFlags = 0x20, .greeting = { @@ -1021,7 +1021,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMER_F, + .trainerClass = FACILITY_CLASS_SWIMMER_F, .name = _("MAJA"), .teamFlags = 0x82, .greeting = { @@ -1036,7 +1036,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_M, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, .name = _("MARIUS"), .teamFlags = 0x10, .greeting = { @@ -1051,7 +1051,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BIRD_KEEPER, + .trainerClass = FACILITY_CLASS_BIRD_KEEPER, .name = _("OLIVER"), .teamFlags = 0x11, .greeting = { @@ -1066,7 +1066,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_CYCLING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F, .name = _("MOLLY"), .teamFlags = 0x12, .greeting = { @@ -1081,7 +1081,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, + .trainerClass = FACILITY_CLASS_BUG_MANIAC, .name = _("JÖRG"), .teamFlags = 0x40, .greeting = { @@ -1096,7 +1096,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, .name = _("ANKE"), .teamFlags = 0x20, .greeting = { @@ -1111,7 +1111,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_FISHERMAN, + .trainerClass = FACILITY_CLASS_FISHERMAN, .name = _("HANS"), .teamFlags = 0x10, .greeting = { @@ -1126,7 +1126,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SAILOR, + .trainerClass = FACILITY_CLASS_SAILOR, .name = _("PETER"), .teamFlags = 0x20, .greeting = { @@ -1141,7 +1141,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_F, + .trainerClass = FACILITY_CLASS_EXPERT_F, .name = _("MARA"), .teamFlags = 0x20, .greeting = { @@ -1156,7 +1156,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BUG_MANIAC, + .trainerClass = FACILITY_CLASS_BUG_MANIAC, .name = _("DARIUS"), .teamFlags = 0x11, .greeting = { @@ -1171,7 +1171,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_F, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F, .name = _("REGINA"), .teamFlags = 0x12, .greeting = { @@ -1186,7 +1186,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PARASOL_LADY, + .trainerClass = FACILITY_CLASS_PARASOL_LADY, .name = _("MAIKE"), .teamFlags = 0x10, .greeting = { @@ -1201,7 +1201,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_RUNNING_TRIATHLETE_F, + .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F, .name = _("SANDRA"), .teamFlags = 0x04, .greeting = { @@ -1216,7 +1216,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_RANGER_M, + .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M, .name = _("ARNOLD"), .teamFlags = 0x08, .greeting = { @@ -1231,7 +1231,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BLACK_BELT, + .trainerClass = FACILITY_CLASS_BLACK_BELT, .name = _("XENO"), .teamFlags = 0x04, .greeting = { @@ -1246,7 +1246,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_F, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, .name = _("KARLA"), .teamFlags = 0x02, .greeting = { @@ -1261,7 +1261,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COLLECTOR, + .trainerClass = FACILITY_CLASS_COLLECTOR, .name = _("VOLKER"), .teamFlags = 0x80, .greeting = { @@ -1276,7 +1276,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M, .name = _("TOBIAS"), .teamFlags = 0x01, .greeting = { @@ -1291,7 +1291,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GENTLEMAN, + .trainerClass = FACILITY_CLASS_GENTLEMAN, .name = _("NORBERT"), .teamFlags = 0x20, .greeting = { @@ -1306,7 +1306,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BATTLE_GIRL, + .trainerClass = FACILITY_CLASS_BATTLE_GIRL, .name = _("ZITA"), .teamFlags = 0x02, .greeting = { @@ -1321,7 +1321,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_BEAUTY, + .trainerClass = FACILITY_CLASS_BEAUTY, .name = _("ELKE"), .teamFlags = 0x20, .greeting = { @@ -1336,7 +1336,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_HIKER, + .trainerClass = FACILITY_CLASS_HIKER, .name = _("VITUS"), .teamFlags = 0x04, .greeting = { @@ -1351,7 +1351,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_M, + .trainerClass = FACILITY_CLASS_EXPERT_M, .name = _("MALTE"), .teamFlags = 0x10, .greeting = { @@ -1366,7 +1366,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_POKEMON_BREEDER_M, + .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M, .name = _("TIM"), .teamFlags = 0x40, .greeting = { @@ -1381,7 +1381,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_GUITARIST, + .trainerClass = FACILITY_CLASS_GUITARIST, .name = _("GAVIN"), .teamFlags = 0x01, .greeting = { @@ -1396,7 +1396,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_PSYCHIC_M, + .trainerClass = FACILITY_CLASS_PSYCHIC_M, .name = _("RALF"), .teamFlags = 0x08, .greeting = { @@ -1411,7 +1411,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_F, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_F, .name = _("JENNY"), .teamFlags = 0x02, .greeting = { @@ -1426,7 +1426,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_M, + .trainerClass = FACILITY_CLASS_EXPERT_M, .name = _("JOEL"), .teamFlags = 0x10, .greeting = { @@ -1441,7 +1441,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_DRAGON_TAMER, + .trainerClass = FACILITY_CLASS_DRAGON_TAMER, .name = _("KOLJA"), .teamFlags = 0x0C, .greeting = { @@ -1456,7 +1456,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_COOL_TRAINER_M, + .trainerClass = FACILITY_CLASS_COOL_TRAINER_M, .name = _("BILL"), .teamFlags = 0x01, .greeting = { @@ -1471,7 +1471,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_EXPERT_F, + .trainerClass = FACILITY_CLASS_EXPERT_F, .name = _("CALLA"), .teamFlags = 0x10, .greeting = { @@ -1486,7 +1486,7 @@ const struct BattleTowerTrainer gBattleTowerTrainers[] = }, }, { - .trainerClass = TRAINER_CLASS_LADY, + .trainerClass = FACILITY_CLASS_LADY, .name = _("GESA"), .teamFlags = 0x02, .greeting = { diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h index c86e795c4..d03038674 100644 --- a/src/data/pokemon/trainer_class_lookups.h +++ b/src/data/pokemon/trainer_class_lookups.h @@ -2,8 +2,8 @@ // -#ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H -#define POKERUBY_TRAINER_CLASS_LOOKUPS_H +#ifndef POKERUBY_FACILITY_CLASS_LOOKUPS_H +#define POKERUBY_FACILITY_CLASS_LOOKUPS_H const u8 gTrainerClassToPicIndex[] = { TRAINER_PIC_ARCHIE, // AQUA_LEADER @@ -86,83 +86,83 @@ const u8 gTrainerClassToPicIndex[] = { }; const u8 gTrainerClassToNameIndex[] = { - TRAINER_CLASS_NAME_AQUA_LEADER, // AQUA_LEADER - TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_M - TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_F - TRAINER_CLASS_NAME_AROMA_LADY, // AROMA_LADY - TRAINER_CLASS_NAME_RUIN_MANIAC, // RUIN_MANIAC - TRAINER_CLASS_NAME_INTERVIEWER, // INTERVIEWER - TRAINER_CLASS_NAME_TUBER_F, // TUBER_F - TRAINER_CLASS_NAME_TUBER_M, // TUBER_M - TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_M - TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_F - TRAINER_CLASS_NAME_HEX_MANIAC, // HEX_MANIAC - TRAINER_CLASS_NAME_LADY, // LADY - TRAINER_CLASS_NAME_BEAUTY, // BEAUTY - TRAINER_CLASS_NAME_RICH_BOY, // RICH_BOY - TRAINER_CLASS_NAME_POKEMANIAC, // POKEMANIAC - TRAINER_CLASS_NAME_SWIMMER_M, // SWIMMER_M - TRAINER_CLASS_NAME_BLACK_BELT, // BLACK_BELT - TRAINER_CLASS_NAME_GUITARIST, // GUITARIST - TRAINER_CLASS_NAME_KINDLER, // KINDLER - TRAINER_CLASS_NAME_CAMPER, // CAMPER - TRAINER_CLASS_NAME_BUG_MANIAC, // BUG_MANIAC - TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_M - TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_F - TRAINER_CLASS_NAME_GENTLEMAN, // GENTLEMAN - TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_M - TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_F - TRAINER_CLASS_NAME_LEADER, // LEADER_F - TRAINER_CLASS_NAME_LEADER, // LEADER_M - TRAINER_CLASS_NAME_LEADER, // LEADER_MF - TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_M - TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_F - TRAINER_CLASS_NAME_SR_AND_JR, // SR_AND_JR - TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_M - TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_F - TRAINER_CLASS_NAME_EXPERT, // EXPERT_M - TRAINER_CLASS_NAME_EXPERT, // EXPERT_F - TRAINER_CLASS_NAME_YOUNGSTER, // YOUNGSTER - TRAINER_CLASS_NAME_CHAMPION, // CHAMPION - TRAINER_CLASS_NAME_FISHERMAN, // FISHERMAN - TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_M - TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_F - TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_M - TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_F - TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_M - TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_F - TRAINER_CLASS_NAME_DRAGON_TAMER, // DRAGON_TAMER - TRAINER_CLASS_NAME_BIRD_KEEPER, // BIRD_KEEPER - TRAINER_CLASS_NAME_NINJA_BOY, // NINJA_BOY - TRAINER_CLASS_NAME_BATTLE_GIRL, // BATTLE_GIRL - TRAINER_CLASS_NAME_PARASOL_LADY, // PARASOL_LADY - TRAINER_CLASS_NAME_SWIMMER_F, // SWIMMER_F - TRAINER_CLASS_NAME_PICNICKER, // PICNICKER - TRAINER_CLASS_NAME_TWINS, // TWINS - TRAINER_CLASS_NAME_SAILOR, // SAILOR - TRAINER_CLASS_NAME_BOARDER, // BOARDER_1 - TRAINER_CLASS_NAME_BOARDER, // BOARDER_2 - TRAINER_CLASS_NAME_COLLECTOR, // COLLECTOR - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // WALLY - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_1 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_2 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_3 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_1 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_2 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_3 - TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_M - TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_F - TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_M - TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_F - TRAINER_CLASS_NAME_MAGMA_LEADER, // MAGMA_LEADER - TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_M - TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_F - TRAINER_CLASS_NAME_LASS, // LASS - TRAINER_CLASS_NAME_BUG_CATCHER, // BUG_CATCHER - TRAINER_CLASS_NAME_HIKER, // HIKER - TRAINER_CLASS_NAME_YOUNG_COUPLE, // YOUNG_COUPLE - TRAINER_CLASS_NAME_OLD_COUPLE, // OLD_COUPLE - TRAINER_CLASS_NAME_SIS_AND_BRO // SIS_AND_BRO + TRAINER_CLASS_AQUA_LEADER, // AQUA_LEADER + TRAINER_CLASS_TEAM_AQUA, // TEAM_AQUA_M + TRAINER_CLASS_TEAM_AQUA, // TEAM_AQUA_F + TRAINER_CLASS_AROMA_LADY, // AROMA_LADY + TRAINER_CLASS_RUIN_MANIAC, // RUIN_MANIAC + TRAINER_CLASS_INTERVIEWER, // INTERVIEWER + TRAINER_CLASS_TUBER_F, // TUBER_F + TRAINER_CLASS_TUBER_M, // TUBER_M + TRAINER_CLASS_COOL_TRAINER, // COOL_TRAINER_M + TRAINER_CLASS_COOL_TRAINER, // COOL_TRAINER_F + TRAINER_CLASS_HEX_MANIAC, // HEX_MANIAC + TRAINER_CLASS_LADY, // LADY + TRAINER_CLASS_BEAUTY, // BEAUTY + TRAINER_CLASS_RICH_BOY, // RICH_BOY + TRAINER_CLASS_POKEMANIAC, // POKEMANIAC + TRAINER_CLASS_SWIMMER_M, // SWIMMER_M + TRAINER_CLASS_BLACK_BELT, // BLACK_BELT + TRAINER_CLASS_GUITARIST, // GUITARIST + TRAINER_CLASS_KINDLER, // KINDLER + TRAINER_CLASS_CAMPER, // CAMPER + TRAINER_CLASS_BUG_MANIAC, // BUG_MANIAC + TRAINER_CLASS_PSYCHIC, // PSYCHIC_M + TRAINER_CLASS_PSYCHIC, // PSYCHIC_F + TRAINER_CLASS_GENTLEMAN, // GENTLEMAN + TRAINER_CLASS_ELITE_FOUR, // ELITE_FOUR_M + TRAINER_CLASS_ELITE_FOUR, // ELITE_FOUR_F + TRAINER_CLASS_LEADER, // LEADER_F + TRAINER_CLASS_LEADER, // LEADER_M + TRAINER_CLASS_LEADER, // LEADER_MF + TRAINER_CLASS_SCHOOL_KID, // SCHOOL_KID_M + TRAINER_CLASS_SCHOOL_KID, // SCHOOL_KID_F + TRAINER_CLASS_SR_AND_JR, // SR_AND_JR + TRAINER_CLASS_POKEFAN, // POKEFAN_M + TRAINER_CLASS_POKEFAN, // POKEFAN_F + TRAINER_CLASS_EXPERT, // EXPERT_M + TRAINER_CLASS_EXPERT, // EXPERT_F + TRAINER_CLASS_YOUNGSTER, // YOUNGSTER + TRAINER_CLASS_CHAMPION, // CHAMPION + TRAINER_CLASS_FISHERMAN, // FISHERMAN + TRAINER_CLASS_TRIATHLETE, // CYCLING_TRIATHLETE_M + TRAINER_CLASS_TRIATHLETE, // CYCLING_TRIATHLETE_F + TRAINER_CLASS_TRIATHLETE, // RUNNING_TRIATHLETE_M + TRAINER_CLASS_TRIATHLETE, // RUNNING_TRIATHLETE_F + TRAINER_CLASS_TRIATHLETE, // SWIMMING_TRIATHLETE_M + TRAINER_CLASS_TRIATHLETE, // SWIMMING_TRIATHLETE_F + TRAINER_CLASS_DRAGON_TAMER, // DRAGON_TAMER + TRAINER_CLASS_BIRD_KEEPER, // BIRD_KEEPER + TRAINER_CLASS_NINJA_BOY, // NINJA_BOY + TRAINER_CLASS_BATTLE_GIRL, // BATTLE_GIRL + TRAINER_CLASS_PARASOL_LADY, // PARASOL_LADY + TRAINER_CLASS_SWIMMER_F, // SWIMMER_F + TRAINER_CLASS_PICNICKER, // PICNICKER + TRAINER_CLASS_TWINS, // TWINS + TRAINER_CLASS_SAILOR, // SAILOR + TRAINER_CLASS_BOARDER, // BOARDER_1 + TRAINER_CLASS_BOARDER, // BOARDER_2 + TRAINER_CLASS_COLLECTOR, // COLLECTOR + TRAINER_CLASS_POKEMON_TRAINER_3, // WALLY + TRAINER_CLASS_POKEMON_TRAINER_3, // BRENDAN_1 + TRAINER_CLASS_POKEMON_TRAINER_3, // BRENDAN_2 + TRAINER_CLASS_POKEMON_TRAINER_3, // BRENDAN_3 + TRAINER_CLASS_POKEMON_TRAINER_3, // MAY_1 + TRAINER_CLASS_POKEMON_TRAINER_3, // MAY_2 + TRAINER_CLASS_POKEMON_TRAINER_3, // MAY_3 + TRAINER_CLASS_POKEMON_BREEDER, // POKEMON_BREEDER_M + TRAINER_CLASS_POKEMON_BREEDER, // POKEMON_BREEDER_F + TRAINER_CLASS_POKEMON_RANGER, // POKEMON_RANGER_M + TRAINER_CLASS_POKEMON_RANGER, // POKEMON_RANGER_F + TRAINER_CLASS_MAGMA_LEADER, // MAGMA_LEADER + TRAINER_CLASS_TEAM_MAGMA, // TEAM_MAGMA_M + TRAINER_CLASS_TEAM_MAGMA, // TEAM_MAGMA_F + TRAINER_CLASS_LASS, // LASS + TRAINER_CLASS_BUG_CATCHER, // BUG_CATCHER + TRAINER_CLASS_HIKER, // HIKER + TRAINER_CLASS_YOUNG_COUPLE, // YOUNG_COUPLE + TRAINER_CLASS_OLD_COUPLE, // OLD_COUPLE + TRAINER_CLASS_SIS_AND_BRO // SIS_AND_BRO }; -#endif //POKERUBY_TRAINER_CLASS_LOOKUPS_H +#endif //POKERUBY_FACILITY_CLASS_LOOKUPS_H diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index ad1cbf473..c93ef74cd 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -13,7 +13,7 @@ u8 *de_sub_8040FE0(u8 gender) { if (gender) gender++; - gender = TRAINER_CLASS_NAME_SCHOOL_KID; + gender = TRAINER_CLASS_SCHOOL_KID; return gTrainerClassNames[gender]; } @@ -21,7 +21,7 @@ u8 *de_sub_8040FF4(u8 gender) { if (gender) gender++; - gender = TRAINER_CLASS_NAME_POKEMON_TRAINER_3; + gender = TRAINER_CLASS_POKEMON_TRAINER_3; return gTrainerClassNames[gender]; } @@ -29,7 +29,7 @@ u8 *de_sub_804100C(u8 gender) { if (gender) gender++; - gender = TRAINER_CLASS_NAME_LEADER; + gender = TRAINER_CLASS_LEADER; return gTrainerClassNames[gender]; } @@ -50,34 +50,34 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) case 0x400: nameIndex = GetSecretBaseTrainerNameIndex(); gender = eSecretBaseRecord.gender; - if (nameIndex == TRAINER_CLASS_NAME_SCHOOL_KID) + if (nameIndex == TRAINER_CLASS_SCHOOL_KID) return de_sub_8040FE0(gender); return gTrainerClassNames[nameIndex]; case 0x100: trainerClass = de_sub_81364AC(); nameIndex = get_trainer_class_name_index(); - if (trainerClass == TRAINER_CLASS_SCHOOL_KID_F) + if (trainerClass == FACILITY_CLASS_SCHOOL_KID_F) return de_sub_8040FE0(FEMALE); - if (trainerClass == TRAINER_CLASS_MAY_1 || trainerClass == TRAINER_CLASS_MAY_2 || trainerClass == TRAINER_CLASS_MAY_3) + if (trainerClass == FACILITY_CLASS_MAY_1 || trainerClass == FACILITY_CLASS_MAY_2 || trainerClass == FACILITY_CLASS_MAY_3) return de_sub_8040FF4(FEMALE); return gTrainerClassNames[nameIndex]; case 0x800: trainerClass = de_sub_81364F8(); nameIndex = GetEReaderTrainerClassNameIndex(); - if (trainerClass == TRAINER_CLASS_SCHOOL_KID_F) + if (trainerClass == FACILITY_CLASS_SCHOOL_KID_F) return de_sub_8040FE0(FEMALE); - if (trainerClass == TRAINER_CLASS_MAY_1 || trainerClass == TRAINER_CLASS_MAY_2 || trainerClass == TRAINER_CLASS_MAY_3) + if (trainerClass == FACILITY_CLASS_MAY_1 || trainerClass == FACILITY_CLASS_MAY_2 || trainerClass == FACILITY_CLASS_MAY_3) return de_sub_8040FF4(FEMALE); return gTrainerClassNames[nameIndex]; default: trainer = &gTrainers[arg1]; trainerClass = trainer->trainerClass; local2 = sub_803FC58(arg1); - if (trainerClass == TRAINER_CLASS_LEADER_F) + if (trainerClass == FACILITY_CLASS_LEADER_F) return de_sub_8040FE0(local2); - if (trainerClass == TRAINER_CLASS_BIRD_KEEPER && local2 == FEMALE) + if (trainerClass == FACILITY_CLASS_BIRD_KEEPER && local2 == FEMALE) return de_sub_8040FF4(FEMALE); - if (trainerClass == TRAINER_CLASS_ELITE_FOUR_F) + if (trainerClass == FACILITY_CLASS_ELITE_FOUR_F) { if (gTrainers[arg1].doubleBattle == TRUE) return de_sub_804100C(FEMALE); diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 88115d28a..11c05e478 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -103,59 +103,59 @@ static const u16 sBattleTowerHeldItems[] = { #include "../data/battle_tower/level_100_mons.h" static const u8 sMaleTrainerClasses[] = { - TRAINER_CLASS_RUIN_MANIAC, - TRAINER_CLASS_TUBER_M, - TRAINER_CLASS_COOL_TRAINER_M, - TRAINER_CLASS_RICH_BOY, - TRAINER_CLASS_POKEMANIAC, - TRAINER_CLASS_SWIMMER_M, - TRAINER_CLASS_BLACK_BELT, - TRAINER_CLASS_GUITARIST, - TRAINER_CLASS_KINDLER, - TRAINER_CLASS_CAMPER, - TRAINER_CLASS_BUG_MANIAC, - TRAINER_CLASS_PSYCHIC_M, - TRAINER_CLASS_GENTLEMAN, - TRAINER_CLASS_SCHOOL_KID_M, - TRAINER_CLASS_POKEFAN_M, - TRAINER_CLASS_EXPERT_M, - TRAINER_CLASS_YOUNGSTER, - TRAINER_CLASS_FISHERMAN, - TRAINER_CLASS_CYCLING_TRIATHLETE_M, - TRAINER_CLASS_RUNNING_TRIATHLETE_M, - TRAINER_CLASS_SWIMMING_TRIATHLETE_M, - TRAINER_CLASS_DRAGON_TAMER, - TRAINER_CLASS_BIRD_KEEPER, - TRAINER_CLASS_NINJA_BOY, - TRAINER_CLASS_SAILOR, - TRAINER_CLASS_COLLECTOR, - TRAINER_CLASS_POKEMON_BREEDER_M, - TRAINER_CLASS_POKEMON_RANGER_M, - TRAINER_CLASS_BUG_CATCHER, - TRAINER_CLASS_HIKER, + FACILITY_CLASS_RUIN_MANIAC, + FACILITY_CLASS_TUBER_M, + FACILITY_CLASS_COOL_TRAINER_M, + FACILITY_CLASS_RICH_BOY, + FACILITY_CLASS_POKEMANIAC, + FACILITY_CLASS_SWIMMER_M, + FACILITY_CLASS_BLACK_BELT, + FACILITY_CLASS_GUITARIST, + FACILITY_CLASS_KINDLER, + FACILITY_CLASS_CAMPER, + FACILITY_CLASS_BUG_MANIAC, + FACILITY_CLASS_PSYCHIC_M, + FACILITY_CLASS_GENTLEMAN, + FACILITY_CLASS_SCHOOL_KID_M, + FACILITY_CLASS_POKEFAN_M, + FACILITY_CLASS_EXPERT_M, + FACILITY_CLASS_YOUNGSTER, + FACILITY_CLASS_FISHERMAN, + FACILITY_CLASS_CYCLING_TRIATHLETE_M, + FACILITY_CLASS_RUNNING_TRIATHLETE_M, + FACILITY_CLASS_SWIMMING_TRIATHLETE_M, + FACILITY_CLASS_DRAGON_TAMER, + FACILITY_CLASS_BIRD_KEEPER, + FACILITY_CLASS_NINJA_BOY, + FACILITY_CLASS_SAILOR, + FACILITY_CLASS_COLLECTOR, + FACILITY_CLASS_POKEMON_BREEDER_M, + FACILITY_CLASS_POKEMON_RANGER_M, + FACILITY_CLASS_BUG_CATCHER, + FACILITY_CLASS_HIKER, }; static const u8 sFemaleTrainerClasses[] = { - TRAINER_CLASS_AROMA_LADY, - TRAINER_CLASS_TUBER_F, - TRAINER_CLASS_COOL_TRAINER_F, - TRAINER_CLASS_HEX_MANIAC, - TRAINER_CLASS_LADY, - TRAINER_CLASS_BEAUTY, - TRAINER_CLASS_PSYCHIC_F, - TRAINER_CLASS_SCHOOL_KID_F, - TRAINER_CLASS_POKEFAN_F, - TRAINER_CLASS_EXPERT_F, - TRAINER_CLASS_CYCLING_TRIATHLETE_F, - TRAINER_CLASS_RUNNING_TRIATHLETE_F, - TRAINER_CLASS_SWIMMING_TRIATHLETE_F, - TRAINER_CLASS_BATTLE_GIRL, - TRAINER_CLASS_PARASOL_LADY, - TRAINER_CLASS_SWIMMER_F, - TRAINER_CLASS_PICNICKER, - TRAINER_CLASS_POKEMON_BREEDER_F, - TRAINER_CLASS_POKEMON_RANGER_F, - TRAINER_CLASS_LASS, + FACILITY_CLASS_AROMA_LADY, + FACILITY_CLASS_TUBER_F, + FACILITY_CLASS_COOL_TRAINER_F, + FACILITY_CLASS_HEX_MANIAC, + FACILITY_CLASS_LADY, + FACILITY_CLASS_BEAUTY, + FACILITY_CLASS_PSYCHIC_F, + FACILITY_CLASS_SCHOOL_KID_F, + FACILITY_CLASS_POKEFAN_F, + FACILITY_CLASS_EXPERT_F, + FACILITY_CLASS_CYCLING_TRIATHLETE_F, + FACILITY_CLASS_RUNNING_TRIATHLETE_F, + FACILITY_CLASS_SWIMMING_TRIATHLETE_F, + FACILITY_CLASS_BATTLE_GIRL, + FACILITY_CLASS_PARASOL_LADY, + FACILITY_CLASS_SWIMMER_F, + FACILITY_CLASS_PICNICKER, + FACILITY_CLASS_POKEMON_BREEDER_F, + FACILITY_CLASS_POKEMON_RANGER_F, + FACILITY_CLASS_LASS, }; static const u8 sMaleTrainerGfxIds[] = { diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c index 37bc2e0ad..1b00ad96e 100644 --- a/src/pokemon/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -84,7 +84,7 @@ u8 sub_803C434(u8 a1) status ^= 1; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) - return GetBankByPlayerAI(status); + return GetBankByIdentity(status); if (CountAliveMons(0) > 1) { u8 val; @@ -93,14 +93,14 @@ u8 sub_803C434(u8 a1) val = status ^ 2; else val = status; - return GetBankByPlayerAI(val); + return GetBankByIdentity(val); } else { if ((gAbsentBankFlags & gBitTable[status])) - return GetBankByPlayerAI(status ^ 2); + return GetBankByIdentity(status ^ 2); else - return GetBankByPlayerAI(status); + return GetBankByIdentity(status); } } diff --git a/src/pokemon/pokemon_data.c b/src/pokemon/pokemon_data.c index 82e452158..031f2ea24 100644 --- a/src/pokemon/pokemon_data.c +++ b/src/pokemon/pokemon_data.c @@ -84,9 +84,9 @@ const struct SpriteTemplate gSpriteTemplate_8208288[] = { const u8 gSecretBaseTrainerClasses[][5] = { // male - {TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOL_TRAINER_M}, + {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M}, // female - {TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_F, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOL_TRAINER_F} + {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F} }; const u8 gUnknown_082082F2[] = { diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 001cd85f6..2691da859 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -823,7 +823,7 @@ u8 GetBankIdentity(u8 slot) return gBanksBySide[slot]; } -u8 GetBankByPlayerAI(u8 slot) +u8 GetBankByIdentity(u8 slot) { u8 i; @@ -1329,35 +1329,27 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) var |= 1 << 18; return var; } - } - else - { - if (a1) - { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(0))) - var |= 1 << (GetBankByPlayerAI(0) + 16); + } else { + if (a1) { + if (IsAnimBankSpriteVisible(GetBankByIdentity(0))) { + var |= 1 << (GetBankByIdentity(0) + 16); + } } - if (a2) - { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(2))) - { - shift = GetBankByPlayerAI(2) + 16; + if (a2) { + if (IsAnimBankSpriteVisible(GetBankByIdentity(2))) { + shift = GetBankByIdentity(2) + 16; var |= 1 << shift; } } - if (a3) - { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(1))) - { - shift = GetBankByPlayerAI(1) + 16; + if (a3) { + if (IsAnimBankSpriteVisible(GetBankByIdentity(1))) { + shift = GetBankByIdentity(1) + 16; var |= 1 << shift; } } - if (a4) - { - if (IsAnimBankSpriteVisible(GetBankByPlayerAI(3))) - { - shift = GetBankByPlayerAI(3) + 16; + if (a4) { + if (IsAnimBankSpriteVisible(GetBankByIdentity(3))) { + shift = GetBankByIdentity(3) + 16; var |= 1 << shift; } } @@ -1372,7 +1364,7 @@ u8 sub_80793A8(u8 a1) u8 unref_sub_80793B0(u8 a1) { - return GetBankByPlayerAI(a1); + return GetBankByIdentity(a1); } void sub_80793C4(struct Sprite *sprite) -- cgit v1.2.3 From 82ab732d673946af609f896dc51639030eb1bd19 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 7 Jan 2018 14:59:16 -0800 Subject: Finish decompiling battle_2 --- src/battle/battle_2.c | 1214 +++++++++++++++++++++++++-- src/battle/battle_3.c | 24 +- src/battle/battle_4.c | 69 +- src/battle/battle_controller_linkopponent.c | 8 +- src/battle/battle_controller_linkpartner.c | 8 +- src/battle/battle_controller_opponent.c | 8 +- src/battle/battle_controller_player.c | 34 +- src/battle/battle_controller_safari.c | 14 +- src/battle/battle_controller_wally.c | 14 +- src/battle/reshow_battle_screen.c | 10 +- src/contest.c | 24 +- src/debug/matsuda_debug_menu.c | 12 +- src/field/tv.c | 2 +- src/scene/evolution_scene.c | 24 +- src/unknown_task.c | 8 +- 15 files changed, 1295 insertions(+), 178 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 92e9e3e1d..a30245081 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1,13 +1,17 @@ #include "global.h" #include "constants/abilities.h" #include "battle.h" +#include "battle_ai.h" #include "battle_interface.h" +#include "battle_message.h" #include "battle_setup.h" #include "data2.h" #include "event_data.h" +#include "evolution_scene.h" #include "item.h" #include "link.h" #include "main.h" +#include "m4a.h" #include "name_string_util.h" #include "palette.h" #include "party_menu.h" @@ -15,6 +19,7 @@ #include "pokedex.h" #include "pokemon.h" #include "random.h" +#include "roamer.h" #include "rom3.h" #include "rom_8077ABC.h" #include "rom_8094928.h" @@ -22,10 +27,12 @@ #include "sound.h" #include "constants/species.h" #include "sprite.h" +#include "string_util.h" #include "task.h" #include "text.h" #include "trainer.h" #include "trig.h" +#include "tv.h" #include "unknown_task.h" #include "util.h" #include "constants/battle_move_effects.h" @@ -60,7 +67,7 @@ extern const u16 gUnknown_08D004E0[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; extern u8 gStatStageRatios[][2]; -extern u8 gUnknown_02024A76[4]; +extern u8 gActionsByTurnOrder[4]; extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; extern u8 gBattleBufferB[][0x200]; extern u8 gActiveBank; @@ -68,7 +75,7 @@ extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; extern u8 gCurrentActionFuncId; -extern u8 gTurnOrder[]; +extern u8 gBanksByTurnOrder[]; extern struct UnknownStruct12 gUnknown_02024AD0[]; extern u8 gObjectBankIDs[]; extern u16 gCurrentMove; @@ -82,7 +89,7 @@ extern u16 gLastUsedMove[]; extern u16 gMoveHitWith[]; extern u16 gUnknown_02024C44[]; extern u16 gUnknown_02024C4C[]; -extern u16 gLockedMove[]; +extern u16 gLockedMoves[]; extern u8 gUnknown_02024C5C[]; extern u16 gChosenMovesByBanks[]; extern u32 gHitMarker; @@ -112,8 +119,8 @@ extern u16 gBattle_WIN0V; extern u16 gBattle_BG2_Y; extern u32 gUnknown_03004284; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u16 gBattle_WIN0H; extern MainCallback gPreBattleCallback1; @@ -140,10 +147,33 @@ extern u8 gCurrentTurnActionNumber; extern void (* const gUnknown_081FA640[])(void); extern void (* const gUnknown_081FA678[])(void); extern u8* gBattlescriptCurrInstr; -extern u8 gUnknown_081D8E02[]; +extern u8 BattleScript_LinkBattleWonOrLost[]; extern u8 BattleScript_PayDayMoneyAndPickUpItems[]; extern u8 gUnknown_081D8E0D[]; extern u8 BattleScript_LocalTrainerBattleWon[]; +extern u8 BattleScript_LocalBattleLost[]; +extern u8 BattleScript_GotAwaySafely[]; +extern u8 BattleScript_SmokeBallEscape[]; +extern u8 BattleScript_RanAwayUsingMonAbility[]; +extern u8 BattleScript_WildMonFled[]; +extern u8 BattleScript_ActionSwitch[]; +extern u8 BattleScript_PrintFailedToRunString[]; +extern const BattleCmdFunc gBattleScriptingCommandsTable[]; +extern u8 gCritMultiplier; +extern u8 gCurrMovePos; +extern u8 gUnknown_02024BE5; +extern u16 gChosenMove; +extern u8* gBattleScriptsForMoveEffects[]; +extern u16 gLastUsedItem; +extern u8 * const gBattlescriptsForBallThrow[]; +extern u8 * const gBattlescriptsForRunningByItem[]; +extern u8 * const gBattlescriptsForUsingItem[]; +extern u8 * const gBattlescriptsForSafariActions[]; +extern u8 gBattleTextBuff2[]; +extern u8 gNumSafariBalls; +extern u8 gUnknown_081FA70C[][3]; +extern u8 gUnknown_081FA71B[]; +extern u8 gUnknown_081FA71F[]; void b_call_bc_move_exec(const u8* BS_ptr); @@ -153,7 +183,11 @@ void SetActionsAndBanksTurnOrder(void); static void TurnValuesCleanUp(u8); void SpecialStatusesClear(void); static void RunTurnActionsFunctions(void); -void sub_8013C9C(); +void HandleEndTurn_FinishBattle(); +static void FreeResetData_ReturnToOvOrDoEvolutions(void); +void TryEvolvePokemon(void); +static void ReturnFromBattleToOverworld(void); +static void WaitForEvoSceneToFinish(void); void sub_800E7C4(void) { @@ -202,8 +236,8 @@ void InitBattle(void) sub_80895F8(gUnknown_081F9674); SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -491,7 +525,7 @@ void sub_800EC9C(void) { gPreBattleCallback1 = gMain.callback1; gMain.callback1 = sub_8010824; - SetMainCallback2(sub_800F808); + SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { gTrainerBattleOpponent = 0x800; @@ -849,7 +883,7 @@ void sub_800F298(void) { gPreBattleCallback1 = gMain.callback1; gMain.callback1 = sub_8010824; - SetMainCallback2(sub_800F808); + SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { gTrainerBattleOpponent = 0x800; @@ -860,7 +894,7 @@ void sub_800F298(void) } } -void sub_800F808(void) +void BattleMainCB2(void) { AnimateSprites(); BuildOamBuffer(); @@ -1024,8 +1058,8 @@ void sub_800FCD4(void) void sub_800FCFC(void) { Random(); // unused return value - REG_BG0HOFS = gUnknown_030042A4; - REG_BG0VOFS = gUnknown_030042A0; + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; @@ -1178,8 +1212,8 @@ void c2_8011A1C(void) } SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -1549,7 +1583,7 @@ void sub_8010874(void) gUnknown_02024C44[i] = 0; gUnknown_02024C4C[i] = 0; gUnknown_02024C5C[i] = 0xFF; - gLockedMove[i] = 0; + gLockedMoves[i] = 0; gUnknown_02024C2C[i] = 0; eFlashFireArr.arr[i] = 0; } @@ -2098,12 +2132,12 @@ void BattleBeginFirstTurn(void) if (ewram16058 == 0) { for (i = 0; i < gNoOfAllBanks; i++) - gTurnOrder[i] = i; + gBanksByTurnOrder[i] = i; for (i = 0; i < gNoOfAllBanks - 1; i++) { for (j = i + 1; j < gNoOfAllBanks; j++) { - if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 1) != 0) + if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 1) != 0) SwapTurnOrder(i, j); } } @@ -2115,7 +2149,7 @@ void BattleBeginFirstTurn(void) } while (ewram16058 < gNoOfAllBanks) { - if (AbilityBattleEffects(0, gTurnOrder[ewram16058], 0, 0, 0) != 0) + if (AbilityBattleEffects(0, gBanksByTurnOrder[ewram16058], 0, 0, 0) != 0) r9++; ewram16058++; if (r9 != 0) @@ -2127,7 +2161,7 @@ void BattleBeginFirstTurn(void) return; while (ewram160F9 < gNoOfAllBanks) { - if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0) + if (ItemBattleEffects(0, gBanksByTurnOrder[ewram160F9], 0) != 0) r9++; ewram160F9++; if (r9 != 0) @@ -2199,7 +2233,7 @@ void BattleTurnPassed(void) if (TurnBasedEffects() != 0) return; } - if (sub_80173A4() != 0) + if (HandleFaintedMonActions() != 0) return; ewram16059 = 0; if (sub_80170DC() != 0) @@ -3861,13 +3895,13 @@ void SwapTurnOrder(u8 a, u8 b) { int temp; - temp = gUnknown_02024A76[a]; - gUnknown_02024A76[a] = gUnknown_02024A76[b]; - gUnknown_02024A76[b] = temp; + temp = gActionsByTurnOrder[a]; + gActionsByTurnOrder[a] = gActionsByTurnOrder[b]; + gActionsByTurnOrder[b] = temp; - temp = gTurnOrder[a]; - gTurnOrder[a] = gTurnOrder[b]; - gTurnOrder[b] = temp; + temp = gBanksByTurnOrder[a]; + gBanksByTurnOrder[a] = gBanksByTurnOrder[b]; + gBanksByTurnOrder[b] = temp; } // Determines which of the two given mons will strike first in a battle. @@ -4024,8 +4058,8 @@ void SetActionsAndBanksTurnOrder(void) { for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { - gUnknown_02024A76[var] = gActionForBanks[gActiveBank]; - gTurnOrder[var] = gActiveBank; + gActionsByTurnOrder[var] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[var] = gActiveBank; var++; } } @@ -4053,15 +4087,15 @@ void SetActionsAndBanksTurnOrder(void) if (var == 5) { - gUnknown_02024A76[0] = gActionForBanks[gActiveBank]; - gTurnOrder[0] = gActiveBank; + gActionsByTurnOrder[0] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[0] = gActiveBank; var = 1; for (i = 0; i < gNoOfAllBanks; i++) { if (i != gActiveBank) { - gUnknown_02024A76[var] = gActionForBanks[i]; - gTurnOrder[var] = i; + gActionsByTurnOrder[var] = gActionForBanks[i]; + gBanksByTurnOrder[var] = i; var++; } } @@ -4075,8 +4109,8 @@ void SetActionsAndBanksTurnOrder(void) { if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH) { - gUnknown_02024A76[var] = gActionForBanks[gActiveBank]; - gTurnOrder[var] = gActiveBank; + gActionsByTurnOrder[var] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[var] = gActiveBank; var++; } } @@ -4084,8 +4118,8 @@ void SetActionsAndBanksTurnOrder(void) { if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH) { - gUnknown_02024A76[var] = gActionForBanks[gActiveBank]; - gTurnOrder[var] = gActiveBank; + gActionsByTurnOrder[var] = gActionForBanks[gActiveBank]; + gBanksByTurnOrder[var] = gActiveBank; var++; } } @@ -4093,12 +4127,12 @@ void SetActionsAndBanksTurnOrder(void) { for (j = i + 1; j < gNoOfAllBanks; j++) { - u8 bank1 = gTurnOrder[i]; - u8 bank2 = gTurnOrder[j]; - if (gUnknown_02024A76[i] != ACTION_USE_ITEM - && gUnknown_02024A76[j] != ACTION_USE_ITEM - && gUnknown_02024A76[i] != ACTION_SWITCH - && gUnknown_02024A76[j] != ACTION_SWITCH) + u8 bank1 = gBanksByTurnOrder[i]; + u8 bank2 = gBanksByTurnOrder[j]; + if (gActionsByTurnOrder[i] != ACTION_USE_ITEM + && gActionsByTurnOrder[j] != ACTION_USE_ITEM + && gActionsByTurnOrder[i] != ACTION_SWITCH + && gActionsByTurnOrder[j] != ACTION_SWITCH) { if (GetWhoStrikesFirst(bank1, bank2, FALSE)) SwapTurnOrder(i, j); @@ -4184,7 +4218,7 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) { // something stupid needed to match u8 zero; - gCurrentActionFuncId = gUnknown_02024A76[(zero = 0)]; + gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)]; } gDynamicBasePower = 0; @@ -4227,7 +4261,7 @@ void HandleEndTurn_BattleWon(void) { gBattleTextBuff1[0] = gBattleOutcome; gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); - gBattlescriptCurrInstr = gUnknown_081D8E02; + gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); } else if (gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) @@ -4266,5 +4300,1091 @@ void HandleEndTurn_BattleWon(void) gBattlescriptCurrInstr = BattleScript_PayDayMoneyAndPickUpItems; } - gBattleMainFunc = sub_8013C9C; + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_BattleLost(void) +{ + gCurrentActionFuncId = 0; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleTextBuff1[0] = gBattleOutcome; + gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); + gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost; + gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN); + } + else + { + gBattlescriptCurrInstr = BattleScript_LocalBattleLost; + } + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_RanFromBattle(void) +{ + gCurrentActionFuncId = 0; + + switch (gProtectStructs[gBankAttacker].fleeFlag) + { + default: + gBattlescriptCurrInstr = BattleScript_GotAwaySafely; + break; + case 1: + gBattlescriptCurrInstr = BattleScript_SmokeBallEscape; + break; + case 2: + gBattlescriptCurrInstr = BattleScript_RanAwayUsingMonAbility; + break; + } + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_MonFled(void) +{ + gCurrentActionFuncId = 0; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]); + gBattlescriptCurrInstr = BattleScript_WildMonFled; + + gBattleMainFunc = HandleEndTurn_FinishBattle; +} + +void HandleEndTurn_FinishBattle(void) +{ + if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC) + { + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK + | BATTLE_TYPE_FIRST_BATTLE + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_WALLY_TUTORIAL + | BATTLE_TYPE_BATTLE_TOWER))) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + if (gBattleResults.poke1Species == SPECIES_NONE) + { + gBattleResults.poke1Species = gBattleMons[gActiveBank].species; + StringCopy(gBattleResults.pokeString1, gBattleMons[gActiveBank].nickname); + } + else + { + gBattleResults.opponentSpecies = gBattleMons[gActiveBank].species; + StringCopy(gBattleResults.pokeString2, gBattleMons[gActiveBank].nickname); + } + } + } + PutPokemonTodayCaughtOnAir(); + } + + BeginFastPaletteFade(3); + FadeOutMapMusic(5); + gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions; + gCB2_AfterEvolution = BattleMainCB2; + } + else + { + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } +} + +static void FreeResetData_ReturnToOvOrDoEvolutions(void) +{ + if (!gPaletteFade.active) + { + ResetSpriteData(); + if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON) + { + gBattleMainFunc = ReturnFromBattleToOverworld; + return; + } + else + { + gBattleMainFunc = TryEvolvePokemon; + } + } +} + +void TryEvolvePokemon(void) +{ + s32 i; + + while (gLeveledUpInBattle != 0) + { + for (i = 0; i < 6; i++) + { + if (gLeveledUpInBattle & gBitTable[i]) + { + u16 species; + u8 levelUpBits = gLeveledUpInBattle; + + levelUpBits &= ~(gBitTable[i]); + gLeveledUpInBattle = levelUpBits; + + species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits); + if (species != SPECIES_NONE) + { + gBattleMainFunc = WaitForEvoSceneToFinish; + EvolutionScene(&gPlayerParty[i], species, 0x81, i); + return; + } + } + } + } + + gBattleMainFunc = ReturnFromBattleToOverworld; +} + +static void WaitForEvoSceneToFinish(void) +{ + if (gMain.callback2 == BattleMainCB2) + gBattleMainFunc = TryEvolvePokemon; +} + +static void ReturnFromBattleToOverworld(void) +{ + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + RandomlyGivePartyPokerus(gPlayerParty); + PartySpreadPokerus(gPlayerParty); + } + + if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0) + return; + + gSpecialVar_Result = gBattleOutcome; + gMain.inBattle = 0; + gMain.callback1 = gPreBattleCallback1; + + if (gBattleTypeFlags & BATTLE_TYPE_ROAMER) + { + UpdateRoamerHPStatus(&gEnemyParty[0]); + if (gBattleOutcome == BATTLE_WON || gBattleOutcome == BATTLE_CAUGHT) + SetRoamerInactive(); + } + + m4aSongNumStop(0x5A); + SetMainCallback2(gMain.savedCallback); +} + +void RunBattleScriptCommands_PopCallbacksStack(void) +{ + if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC) + { + if (B_FUNCTION_STACK->size != 0) + B_FUNCTION_STACK->size--; + gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size]; + } + else + { + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); + } +} + +void RunBattleScriptCommands(void) +{ + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); +} + +void HandleAction_UseMove(void) +{ + u8 side; + u8 var = 4; + + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + + if (ewram160A6 & gBitTable[gBankAttacker]) + { + gCurrentActionFuncId = ACTION_FINISHED; + return; + } + + gCritMultiplier = 1; + eDmgMultiplier = 1; + ewram160E7 = 0; + gBattleMoveFlags = 0; + gMultiHitCounter = 0; + gBattleCommunication[6] = 0; + gCurrMovePos = gUnknown_02024BE5 = ewram1608Carr(gBankAttacker); + + // choose move + if (gProtectStructs[gBankAttacker].onlyStruggle) + { + gProtectStructs[gBankAttacker].onlyStruggle = 0; + gCurrentMove = gChosenMove = MOVE_STRUGGLE; + gHitMarker |= HITMARKER_NO_PPDEDUCT; + ewram16010arr(gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); + } + else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) + { + gCurrentMove = gChosenMove = gLockedMoves[gBankAttacker]; + } + // encore forces you to use the same move + else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE + && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) + { + gCurrentMove = gChosenMove = gDisableStructs[gBankAttacker].encoredMove; + gCurrMovePos = gUnknown_02024BE5 = gDisableStructs[gBankAttacker].encoredMovePos; + ewram16010arr(gBankAttacker) = GetMoveTarget(gCurrentMove, 0); + } + // check if the encored move wasn't overwritten + else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE + && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) + { + gCurrMovePos = gUnknown_02024BE5 = gDisableStructs[gBankAttacker].encoredMovePos; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE; + gDisableStructs[gBankAttacker].encoredMovePos = 0; + gDisableStructs[gBankAttacker].encoreTimer1 = 0; + ewram16010arr(gBankAttacker) = GetMoveTarget(gCurrentMove, 0); + } + else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker]) + { + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + ewram16010arr(gBankAttacker) = GetMoveTarget(gCurrentMove, 0); + } + else + { + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + } + + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + gBattleResults.lastUsedMove = gCurrentMove; + else + gBattleResults.opponentMove = gCurrentMove; + + // choose target + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; + if (gSideTimers[side].followmeTimer != 0 + && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED + && GetBankSide(gBankAttacker) != GetBankSide(gSideTimers[side].followmeTarget) + && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) + { + gBankTarget = gSideTimers[side].followmeTarget; + } + else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && gSideTimers[side].followmeTimer == 0 + && (gBattleMoves[gCurrentMove].power != 0 + || gBattleMoves[gCurrentMove].target != MOVE_TARGET_x10) + && gBattleMons[ewram16010arr(gBankAttacker)].ability != ABILITY_LIGHTNING_ROD + && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) + { + side = GetBankSide(gBankAttacker); + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (side != GetBankSide(gActiveBank) + && ewram16010arr(gBankAttacker) != gActiveBank + && gBattleMons[gActiveBank].ability == ABILITY_LIGHTNING_ROD + && BankGetTurnOrder(gActiveBank) < var) + { + var = BankGetTurnOrder(gActiveBank); + } + } + if (var == 4) + { + if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + } + else + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + } + else + { + gBankTarget = ewram16010arr(gBankAttacker); + } + + if (gAbsentBankFlags & gBitTable[gBankTarget]) + { + if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)) + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + else + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + } + } + else + { + gActiveBank = gBanksByTurnOrder[var]; + RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability); + gSpecialStatuses[gActiveBank].lightningRodRedirected = 1; + gBankTarget = gActiveBank; + } + } + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE + && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2); + } + else + { + if (Random() & 1) + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1); + else + gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2); + } + + if (gAbsentBankFlags & gBitTable[gBankTarget] + && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)) + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + } + else + { + gBankTarget = ewram16010arr(gBankAttacker); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + { + if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)) + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + else + { + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE); + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON); + } + } + } + + gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_Switch(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gActionSelectionCursor[gBankAttacker] = 0; + gMoveSelectionCursor[gBankAttacker] = 0; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, ewram16064arr(gBankAttacker)) + + ewram16003 = gBankAttacker; + gBattlescriptCurrInstr = BattleScript_ActionSwitch; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + + if (gBattleResults.unk2 < 255) + gBattleResults.unk2++; +} + +#ifdef NONMATCHING +void HandleAction_UseItem(void) +{ + gBankAttacker = gBankTarget = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gDisableStructs[gBankAttacker].furyCutterCounter = 0; + gLastUsedItem = gBattleBufferB[gBankAttacker][1] | (gBattleBufferB[gBankAttacker][2] << 8); + + if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball + { + gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem]; + } + else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL) + { + gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0]; + } + else if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0]; + } + else + { + ewram16003 = gBankAttacker; + + switch (ewram160D8(gBankAttacker)) + { + case AI_ITEM_FULL_RESTORE: + case AI_ITEM_HEAL_HP: + break; + case AI_ITEM_CURE_CONDITION: + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (ewram160DA(gBankAttacker) & 1) + { + if (ewram160DA(gBankAttacker) & 0x3E) + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + else + { + while (!(ewram160DA(gBankAttacker) & 1)) + { + ewram160DA(gBankAttacker) /= 2; + gBattleCommunication[MULTISTRING_CHOOSER]++; + } + } + break; + case AI_ITEM_X_STAT: + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + if (ewram160DA(gBankAttacker) & 0x80) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 5; + } + else + { + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK) + PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2) + + while (!(ewram160DA(gBankAttacker) & 1)) + { + ewram160DA(gBankAttacker) /= 2; + gBattleTextBuff1[2]++; + } + + ewram160A4 = gBattleTextBuff1[2] + 14; + ewram160A5 = 0; + } + break; + case AI_ITEM_GUARD_SPECS: + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + break; + } + + gBattlescriptCurrInstr = gBattlescriptsForUsingItem[ewram160D8(gBankAttacker)]; + } + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} +#else +__attribute__((naked)) +void HandleAction_UseItem(void) +{ + 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\ + ldr r4, _08014804 @ =gBankAttacker\n\ + ldr r2, _08014808 @ =gBankTarget\n\ + ldr r1, _0801480C @ =gBanksByTurnOrder\n\ + ldr r0, _08014810 @ =gCurrentTurnActionNumber\n\ + ldrb r0, [r0]\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + strb r0, [r4]\n\ + ldr r0, _08014814 @ =gBattle_BG0_X\n\ + movs r2, 0\n\ + strh r2, [r0]\n\ + ldr r0, _08014818 @ =gBattle_BG0_Y\n\ + strh r2, [r0]\n\ + ldr r3, _0801481C @ =gDisableStructs\n\ + ldrb r1, [r4]\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + lsls r0, 2\n\ + adds r0, r3\n\ + strb r2, [r0, 0x10]\n\ + ldr r5, _08014820 @ =gLastUsedItem\n\ + ldr r2, _08014824 @ =gBattleBufferB\n\ + ldrb r1, [r4]\n\ + lsls r1, 9\n\ + adds r0, r2, 0x1\n\ + adds r0, r1, r0\n\ + ldrb r3, [r0]\n\ + adds r2, 0x2\n\ + adds r1, r2\n\ + ldrb r0, [r1]\n\ + lsls r0, 8\n\ + orrs r3, r0\n\ + strh r3, [r5]\n\ + cmp r3, 0xC\n\ + bhi _08014830\n\ + ldr r2, _08014828 @ =gBattlescriptCurrInstr\n\ + ldr r1, _0801482C @ =gBattlescriptsForBallThrow\n\ + ldrh r0, [r5]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + str r0, [r2]\n\ + b _08014A8C\n\ + .align 2, 0\n\ +_08014804: .4byte gBankAttacker\n\ +_08014808: .4byte gBankTarget\n\ +_0801480C: .4byte gBanksByTurnOrder\n\ +_08014810: .4byte gCurrentTurnActionNumber\n\ +_08014814: .4byte gBattle_BG0_X\n\ +_08014818: .4byte gBattle_BG0_Y\n\ +_0801481C: .4byte gDisableStructs\n\ +_08014820: .4byte gLastUsedItem\n\ +_08014824: .4byte gBattleBufferB\n\ +_08014828: .4byte gBattlescriptCurrInstr\n\ +_0801482C: .4byte gBattlescriptsForBallThrow\n\ +_08014830:\n\ + adds r0, r3, 0\n\ + subs r0, 0x50\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _0801484C\n\ + ldr r0, _08014844 @ =gBattlescriptCurrInstr\n\ + ldr r1, _08014848 @ =gBattlescriptsForRunningByItem\n\ + b _0801485C\n\ + .align 2, 0\n\ +_08014844: .4byte gBattlescriptCurrInstr\n\ +_08014848: .4byte gBattlescriptsForRunningByItem\n\ +_0801484C:\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0801486C\n\ + ldr r0, _08014864 @ =gBattlescriptCurrInstr\n\ + ldr r1, _08014868 @ =gBattlescriptsForUsingItem\n\ +_0801485C:\n\ + ldr r1, [r1]\n\ + str r1, [r0]\n\ + b _08014A8C\n\ + .align 2, 0\n\ +_08014864: .4byte gBattlescriptCurrInstr\n\ +_08014868: .4byte gBattlescriptsForUsingItem\n\ +_0801486C:\n\ + ldr r2, _080148A0 @ =gSharedMem\n\ + ldrb r0, [r4]\n\ + ldr r3, _080148A4 @ =0x00016003\n\ + adds r1, r2, r3\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 25\n\ + ldr r1, _080148A8 @ =0x000160d8\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + subs r0, 0x1\n\ + mov r8, r4\n\ + ldr r3, _080148AC @ =gBattlescriptCurrInstr\n\ + mov r9, r3\n\ + ldr r1, _080148B0 @ =gBattlescriptsForUsingItem\n\ + mov r10, r1\n\ + adds r7, r2, 0\n\ + cmp r0, 0x4\n\ + bls _08014896\n\ + b _08014A74\n\ +_08014896:\n\ + lsls r0, 2\n\ + ldr r1, _080148B4 @ =_080148B8\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080148A0: .4byte gSharedMem\n\ +_080148A4: .4byte 0x00016003\n\ +_080148A8: .4byte 0x000160d8\n\ +_080148AC: .4byte gBattlescriptCurrInstr\n\ +_080148B0: .4byte gBattlescriptsForUsingItem\n\ +_080148B4: .4byte _080148B8\n\ + .align 2, 0\n\ +_080148B8:\n\ + .4byte _08014A74\n\ + .4byte _08014A74\n\ + .4byte _080148CC\n\ + .4byte _08014958\n\ + .4byte _08014A30\n\ +_080148CC:\n\ + ldr r2, _08014904 @ =gBattleCommunication\n\ + movs r0, 0\n\ + strb r0, [r2, 0x5]\n\ + ldr r1, _08014908 @ =gBankAttacker\n\ + ldrb r0, [r1]\n\ + lsrs r0, 1\n\ + ldr r6, _0801490C @ =0x000160da\n\ + adds r0, r6\n\ + adds r0, r7\n\ + ldrb r3, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r3\n\ + mov r8, r1\n\ + cmp r0, 0\n\ + beq _08014918\n\ + movs r0, 0x3E\n\ + ands r0, r3\n\ + ldr r3, _08014910 @ =gBattlescriptCurrInstr\n\ + mov r9, r3\n\ + ldr r1, _08014914 @ =gBattlescriptsForUsingItem\n\ + mov r10, r1\n\ + cmp r0, 0\n\ + bne _080148FC\n\ + b _08014A74\n\ +_080148FC:\n\ + movs r0, 0x5\n\ + strb r0, [r2, 0x5]\n\ + b _08014A74\n\ + .align 2, 0\n\ +_08014904: .4byte gBattleCommunication\n\ +_08014908: .4byte gBankAttacker\n\ +_0801490C: .4byte 0x000160da\n\ +_08014910: .4byte gBattlescriptCurrInstr\n\ +_08014914: .4byte gBattlescriptsForUsingItem\n\ +_08014918:\n\ + ldr r3, _08014950 @ =gBattlescriptCurrInstr\n\ + mov r9, r3\n\ + ldr r0, _08014954 @ =gBattlescriptsForUsingItem\n\ + mov r10, r0\n\ + adds r5, r7, 0\n\ + mov r4, r8\n\ + adds r3, r6, 0\n\ +_08014926:\n\ + ldrb r0, [r4]\n\ + lsrs r0, 1\n\ + adds r0, r3\n\ + adds r0, r5\n\ + ldrb r1, [r0]\n\ + lsrs r1, 1\n\ + strb r1, [r0]\n\ + ldrb r0, [r2, 0x5]\n\ + adds r0, 0x1\n\ + strb r0, [r2, 0x5]\n\ + ldrb r0, [r4]\n\ + lsrs r0, 1\n\ + adds r0, r3\n\ + adds r0, r5\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08014926\n\ + b _08014A74\n\ + .align 2, 0\n\ +_08014950: .4byte gBattlescriptCurrInstr\n\ +_08014954: .4byte gBattlescriptsForUsingItem\n\ +_08014958:\n\ + ldr r3, _0801498C @ =gBattleCommunication\n\ + movs r0, 0x4\n\ + strb r0, [r3, 0x5]\n\ + ldr r2, _08014990 @ =gBankAttacker\n\ + ldrb r0, [r2]\n\ + lsrs r0, 1\n\ + ldr r1, _08014994 @ =0x000160da\n\ + mov r12, r1\n\ + add r0, r12\n\ + adds r6, r0, r7\n\ + ldrb r1, [r6]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + mov r8, r2\n\ + cmp r5, 0\n\ + beq _080149A0\n\ + movs r0, 0x5\n\ + strb r0, [r3, 0x5]\n\ + ldr r2, _08014998 @ =gBattlescriptCurrInstr\n\ + mov r9, r2\n\ + ldr r3, _0801499C @ =gBattlescriptsForUsingItem\n\ + mov r10, r3\n\ + b _08014A74\n\ + .align 2, 0\n\ +_0801498C: .4byte gBattleCommunication\n\ +_08014990: .4byte gBankAttacker\n\ +_08014994: .4byte 0x000160da\n\ +_08014998: .4byte gBattlescriptCurrInstr\n\ +_0801499C: .4byte gBattlescriptsForUsingItem\n\ +_080149A0:\n\ + ldr r3, _08014A18 @ =gBattleTextBuff1\n\ + movs r4, 0xFD\n\ + strb r4, [r3]\n\ + movs r0, 0x5\n\ + strb r0, [r3, 0x1]\n\ + movs r2, 0x1\n\ + strb r2, [r3, 0x2]\n\ + movs r0, 0xFF\n\ + strb r0, [r3, 0x3]\n\ + ldr r1, _08014A1C @ =gBattleTextBuff2\n\ + strb r4, [r1]\n\ + strb r5, [r1, 0x1]\n\ + movs r0, 0xD2\n\ + strb r0, [r1, 0x2]\n\ + strb r5, [r1, 0x3]\n\ + subs r0, 0xD3\n\ + strb r0, [r1, 0x4]\n\ + ldrb r0, [r6]\n\ + ands r2, r0\n\ + ldr r0, _08014A20 @ =gBattlescriptCurrInstr\n\ + mov r9, r0\n\ + ldr r1, _08014A24 @ =gBattlescriptsForUsingItem\n\ + mov r10, r1\n\ + adds r6, r3, 0\n\ + cmp r2, 0\n\ + bne _08014A02\n\ + adds r3, r7, 0\n\ + mov r5, r8\n\ + mov r4, r12\n\ + adds r2, r6, 0\n\ +_080149DC:\n\ + ldrb r0, [r5]\n\ + lsrs r0, 1\n\ + adds r0, r4\n\ + adds r0, r3\n\ + ldrb r1, [r0]\n\ + lsrs r1, 1\n\ + strb r1, [r0]\n\ + ldrb r0, [r2, 0x2]\n\ + adds r0, 0x1\n\ + strb r0, [r2, 0x2]\n\ + ldrb r0, [r5]\n\ + lsrs r0, 1\n\ + adds r0, r4\n\ + adds r0, r3\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080149DC\n\ +_08014A02:\n\ + ldrb r0, [r6, 0x2]\n\ + adds r0, 0xE\n\ + ldr r2, _08014A28 @ =0x000160a4\n\ + adds r1, r7, r2\n\ + movs r2, 0\n\ + strb r0, [r1]\n\ + ldr r3, _08014A2C @ =0x000160a5\n\ + adds r0, r7, r3\n\ + strb r2, [r0]\n\ + b _08014A74\n\ + .align 2, 0\n\ +_08014A18: .4byte gBattleTextBuff1\n\ +_08014A1C: .4byte gBattleTextBuff2\n\ +_08014A20: .4byte gBattlescriptCurrInstr\n\ +_08014A24: .4byte gBattlescriptsForUsingItem\n\ +_08014A28: .4byte 0x000160a4\n\ +_08014A2C: .4byte 0x000160a5\n\ +_08014A30:\n\ + ldr r0, _08014A50 @ =gBattleTypeFlags\n\ + ldrh r0, [r0]\n\ + movs r1, 0x1\n\ + ands r1, r0\n\ + cmp r1, 0\n\ + beq _08014A64\n\ + ldr r1, _08014A54 @ =gBattleCommunication\n\ + movs r0, 0x2\n\ + strb r0, [r1, 0x5]\n\ + ldr r0, _08014A58 @ =gBankAttacker\n\ + mov r8, r0\n\ + ldr r1, _08014A5C @ =gBattlescriptCurrInstr\n\ + mov r9, r1\n\ + ldr r2, _08014A60 @ =gBattlescriptsForUsingItem\n\ + mov r10, r2\n\ + b _08014A74\n\ + .align 2, 0\n\ +_08014A50: .4byte gBattleTypeFlags\n\ +_08014A54: .4byte gBattleCommunication\n\ +_08014A58: .4byte gBankAttacker\n\ +_08014A5C: .4byte gBattlescriptCurrInstr\n\ +_08014A60: .4byte gBattlescriptsForUsingItem\n\ +_08014A64:\n\ + ldr r0, _08014AA0 @ =gBattleCommunication\n\ + strb r1, [r0, 0x5]\n\ + ldr r3, _08014AA4 @ =gBankAttacker\n\ + mov r8, r3\n\ + ldr r0, _08014AA8 @ =gBattlescriptCurrInstr\n\ + mov r9, r0\n\ + ldr r1, _08014AAC @ =gBattlescriptsForUsingItem\n\ + mov r10, r1\n\ +_08014A74:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + lsrs r0, 1\n\ + ldr r3, _08014AB0 @ =0x000160d8\n\ + adds r0, r3\n\ + adds r0, r7\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + add r0, r10\n\ + ldr r0, [r0]\n\ + mov r1, r9\n\ + str r0, [r1]\n\ +_08014A8C:\n\ + movs r0, 0xA\n\ + ldr r2, _08014AB4 @ =gCurrentActionFuncId\n\ + strb r0, [r2]\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\ + .align 2, 0\n\ +_08014AA0: .4byte gBattleCommunication\n\ +_08014AA4: .4byte gBankAttacker\n\ +_08014AA8: .4byte gBattlescriptCurrInstr\n\ +_08014AAC: .4byte gBattlescriptsForUsingItem\n\ +_08014AB0: .4byte 0x000160d8\n\ +_08014AB4: .4byte gCurrentActionFuncId\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +bool8 TryRunFromBattle(u8 bank) +{ + bool8 effect = FALSE; + u8 holdEffect; + u8 speedVar; + + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[bank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); + + gStringBank = bank; + + if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) + { + gLastUsedItem = gBattleMons[bank].item ; + gProtectStructs[bank].fleeFlag = 1; + effect++; + } + else if (gBattleMons[bank].ability == ABILITY_RUN_AWAY) + { + gLastUsedAbility = ABILITY_RUN_AWAY; + gProtectStructs[bank].fleeFlag = 2; + effect++; + } + else + { + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + { + if (gBattleMons[bank].speed < gBattleMons[bank ^ BIT_SIDE].speed) + { + speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (ewram16078 * 30); + if (speedVar > (Random() & 0xFF)) + effect++; + } + else // same speed or faster + { + effect++; + } + } + + ewram16078++; + } + + if (effect) + { + gCurrentTurnActionNumber = gNoOfAllBanks; + gBattleOutcome = BATTLE_RAN; + } + + return effect; +} + +void HandleAction_Run(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gCurrentTurnActionNumber = gNoOfAllBanks; + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + { + if (GetBankSide(gActiveBank) == SIDE_PLAYER) + { + if (gActionForBanks[gActiveBank] == ACTION_RUN) + gBattleOutcome |= BATTLE_LOST; + } + else + { + if (gActionForBanks[gActiveBank] == ACTION_RUN) + gBattleOutcome |= BATTLE_WON; + } + } + + gBattleOutcome |= OUTCOME_LINK_BATTLE_RUN; + } + else + { + if (GetBankSide(gBankAttacker) == SIDE_PLAYER) + { + if (!TryRunFromBattle(gBankAttacker)) // failed to run away + { + gBattleMons[gBankAttacker].status2 &= ~STATUS2_DESTINY_BOND; + gBattleCommunication[MULTISTRING_CHOOSER] = 3; + gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + } + } + else + { + if (gBattleMons[gBankAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 4; + gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + } + else + { + gCurrentTurnActionNumber = gNoOfAllBanks; + gBattleOutcome = BATTLE_POKE_FLED; + } + } + } +} + +void HandleAction_WatchesCarefully(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_SafariZoneBallThrow(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gNumSafariBalls--; + gLastUsedItem = ITEM_SAFARI_BALL; + gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_ThrowPokeblock(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBankAttacker][1] - 1; + gLastUsedItem = gBattleBufferB[gBankAttacker][2]; + + if (ewram16087 < 3) + ewram16087++; + if (ewram16088 > 1) + { + if (ewram16088 < gUnknown_081FA70C[ewram16087][gBattleCommunication[MULTISTRING_CHOOSER]]) + ewram16088 = 1; + else + ewram16088 -= gUnknown_081FA70C[ewram16087][gBattleCommunication[MULTISTRING_CHOOSER]]; + } + + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_GoNear(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + + ewram16089 += gUnknown_081FA71B[ewram16086]; + if (ewram16089 > 20) + ewram16089 = 20; + + ewram16088 += gUnknown_081FA71F[ewram16086]; + if (ewram16088 > 20) + ewram16088 = 20; + + if (ewram16086 < 3) + { + ewram16086++; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; +} + +void HandleAction_SafriZoneRun(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + PlaySE(SE_NIGERU); + gCurrentTurnActionNumber = gNoOfAllBanks; + gBattleOutcome = BATTLE_RAN; +} + +void HandleAction_Action9(void) +{ + gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber]; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]) + + gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3]; + gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; + gActionsByTurnOrder[1] = ACTION_FINISHED; +} + +void HandleAction_Action11(void) +{ + if (!HandleFaintedMonActions()) + { + ewram16059 = 0; + gCurrentActionFuncId = ACTION_FINISHED; + } +} + +void HandleAction_NothingIsFainted(void) +{ + gCurrentTurnActionNumber++; + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; + gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED + | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR + | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 + | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_x8000000 | HITMARKER_x4000000); +} + +void HandleAction_ActionFinished(void) +{ + gCurrentTurnActionNumber++; + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; + SpecialStatusesClear(); + gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED + | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR + | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000 + | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT + | HITMARKER_x8000000 | HITMARKER_x4000000); + + gBattleMoveDamage = 0; + ewram16002 = 0; + ewram160A1 = 0; + gMoveHitWith[gBankAttacker] = 0; + gUnknown_02024C44[gBankAttacker] = 0; + eDynamicMoveType = 0; + gDynamicBasePower = 0; + ewram1600C = 0; + gBattleCommunication[3] = 0; + gBattleCommunication[4] = 0; + eMultihitMoveEffect = 0; + ewram17130 = 0; } diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c index cfa188fa4..92e0404cc 100644 --- a/src/battle/battle_3.c +++ b/src/battle/battle_3.c @@ -33,7 +33,7 @@ extern u8 gNoOfAllBanks; extern u32 gStatuses3[4]; extern u8 gBankAttacker; extern u8 gBankTarget; -extern u8 gTurnOrder[4]; +extern u8 gBanksByTurnOrder[4]; extern u16 gSideAffecting[2]; extern u16 gBattleWeather; extern void (*gBattleMainFunc)(void); @@ -87,8 +87,6 @@ u8 weather_get_current(void); void b_push_move_exec(u8* BS_ptr); void RecordAbilityBattle(u8 bank, u8 ability); void RecordItemBattle(u8 bank, u8 holdEffect); -void sub_8013F54(void); -void sub_8013FBC(void); s8 GetPokeFlavourRelation(u32 pid, u8 flavor); extern u8 BattleScript_MoveSelectionDisabledMove[]; @@ -372,14 +370,14 @@ u8 UpdateTurnCounters(void) case 0: for (i = 0; i < gNoOfAllBanks; i++) { - gTurnOrder[i] = i; + gBanksByTurnOrder[i] = i; } for (i = 0; i < gNoOfAllBanks - 1; i++) { s32 j; for (j = i + 1; j < gNoOfAllBanks; j++) { - if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0)) + if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0)) SwapTurnOrder(i, j); } } @@ -496,7 +494,7 @@ u8 UpdateTurnCounters(void) case 5: while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks) { - gActiveBank = gTurnOrder[BATTLE_STRUCT->turnSideTracker]; + gActiveBank = gBanksByTurnOrder[BATTLE_STRUCT->turnSideTracker]; if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) { gBankTarget = gActiveBank; @@ -606,7 +604,7 @@ u8 TurnBasedEffects(void) gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE) { - gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->turnEffectsBank]; + gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->turnEffectsBank]; if (gAbsentBankFlags & gBitTable[gActiveBank]) { BATTLE_STRUCT->turnEffectsBank++; @@ -948,7 +946,7 @@ bool8 sub_80170DC(void) // handle future sight and perish song case 1: // perish song while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) { - gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; + gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; if (gAbsentBankFlags & gBitTable[gActiveBank]) BATTLE_STRUCT->sub80170DC_Bank++; else @@ -984,9 +982,9 @@ bool8 sub_80170DC(void) // handle future sight and perish song return 0; } -#define sub_80173A4_MAX_CASE 7 +#define HandleFaintedMonActions_MAX_CASE 7 -bool8 sub_80173A4(void) +bool8 HandleFaintedMonActions(void) { if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) return 0; @@ -1053,7 +1051,7 @@ bool8 sub_80173A4(void) case 7: break; } - } while (BATTLE_STRUCT->sub80173A4_Tracker != sub_80173A4_MAX_CASE); + } while (BATTLE_STRUCT->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE); return 0; } @@ -2255,7 +2253,7 @@ void b_call_bc_move_exec(u8* BS_ptr) { gBattlescriptCurrInstr = BS_ptr; B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; - gBattleMainFunc = sub_8013F54; + gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack; gCurrentActionFuncId = 0; } @@ -2264,7 +2262,7 @@ void b_push_move_exec(u8* BS_ptr) b_movescr_stack_push_cursor(); gBattlescriptCurrInstr = BS_ptr; B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; - gBattleMainFunc = sub_8013FBC; + gBattleMainFunc = RunBattleScriptCommands; } enum diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index d9789f76d..3b1092e45 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -35,8 +35,8 @@ extern u8 gActiveBank; extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[4]; -extern u8 gTurnOrder[4]; -extern u8 gUnknown_02024A76[4]; +extern u8 gBanksByTurnOrder[4]; +extern u8 gActionsByTurnOrder[4]; extern u16 gCurrentMove; extern u8 gLastUsedAbility; extern u16 gBattleWeather; @@ -45,7 +45,7 @@ extern u8 gEffectBank; extern u8 gAbsentBankFlags; extern u8 gMultiHitCounter; extern u16 gLastUsedMove[4]; -extern u16 gLockedMove[4]; +extern u16 gLockedMoves[4]; extern u16 gChosenMovesByBanks[4]; extern u16 gSideAffecting[2]; extern u16 gPauseCounterBattle; @@ -145,10 +145,9 @@ bool32 IsHMMove2(u16 move); void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0); void nullsub_6(void); void ReshowBattleScreenAfterMenu(void); -void sub_800F808(void); +void BattleMainCB2(void); void AddMoney(u32* moneySaveblock, u32 to_give); void sub_80156DC(void); //set sentpokes value -bool8 sub_8014AB8(u8 bank); //can run from battle u8 CountAliveMons(u8 caseID); void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); u8 CanRunFromBattle(void); @@ -1074,11 +1073,11 @@ static void atk00_attackcanceler(void) } for (i = 0; i < gNoOfAllBanks; i++) { - if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) + if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) { - PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH); - gProtectStructs[gTurnOrder[i]].stealMove = 0; - BATTLE_STRUCT->scriptingActive = gTurnOrder[i]; + PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH); + gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0; + BATTLE_STRUCT->scriptingActive = gBanksByTurnOrder[i]; b_movescr_stack_push_cursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; @@ -2253,7 +2252,7 @@ u8 BankGetTurnOrder(u8 bank) int i; for (i = 0; i < gNoOfAllBanks; i++) { - if (gTurnOrder[i] == bank) + if (gBanksByTurnOrder[i] == bank) break; } return i; @@ -2527,7 +2526,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; - gLockedMove[gEffectBank] = gCurrentMove; + gLockedMoves[gEffectBank] = gCurrentMove; gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; b_movescr_stack_push(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; @@ -2551,7 +2550,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) break; case 12: //charging move gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; - gLockedMove[gEffectBank] = gCurrentMove; + gLockedMoves[gEffectBank] = gCurrentMove; gProtectStructs[gEffectBank].chargingTurn = 1; gBattlescriptCurrInstr++; break; @@ -2619,7 +2618,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) case 29: //recharge gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE; gDisableStructs[gEffectBank].rechargeCounter = 2; - gLockedMove[gEffectBank] = gCurrentMove; + gLockedMoves[gEffectBank] = gCurrentMove; gBattlescriptCurrInstr++; break; case 30: //rage @@ -2711,7 +2710,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)) { gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; - gLockedMove[gEffectBank] = gCurrentMove; + gLockedMoves[gEffectBank] = gCurrentMove; gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA); } else @@ -3909,7 +3908,7 @@ _0801ED7C:\n\ lsls r0, 5\n\ orrs r1, r0\n\ str r1, [r2]\n\ - ldr r1, _0801EDC8 @ =gLockedMove\n\ + ldr r1, _0801EDC8 @ =gLockedMoves\n\ ldrb r0, [r3]\n\ lsls r0, 1\n\ adds r0, r1\n\ @@ -3941,7 +3940,7 @@ _0801ED7C:\n\ ldr r0, [r0]\n\ bl _0801F5F8\n\ .align 2, 0\n\ -_0801EDC8: .4byte gLockedMove\n\ +_0801EDC8: .4byte gLockedMoves\n\ _0801EDCC: .4byte gCurrentMove\n\ _0801EDD0: .4byte gBattlescriptCurrInstr\n\ _0801EDD4: .4byte gMoveEffectBS_Ptrs\n\ @@ -4035,7 +4034,7 @@ _0801EE84:\n\ lsls r1, 5\n\ orrs r0, r1\n\ str r0, [r2]\n\ - ldr r1, _0801EEC0 @ =gLockedMove\n\ + ldr r1, _0801EEC0 @ =gLockedMoves\n\ mov r2, r8\n\ ldrb r0, [r2]\n\ lsls r0, 1\n\ @@ -4053,7 +4052,7 @@ _0801EE84:\n\ strb r0, [r1, 0x1]\n\ b _0801F5DC\n\ .align 2, 0\n\ -_0801EEC0: .4byte gLockedMove\n\ +_0801EEC0: .4byte gLockedMoves\n\ _0801EEC4: .4byte gCurrentMove\n\ _0801EEC8: .4byte gProtectStructs\n\ _0801EECC:\n\ @@ -4365,7 +4364,7 @@ _0801F13C:\n\ adds r0, r2\n\ movs r1, 0x2\n\ strb r1, [r0, 0x19]\n\ - ldr r1, _0801F17C @ =gLockedMove\n\ + ldr r1, _0801F17C @ =gLockedMoves\n\ ldrb r0, [r3]\n\ lsls r0, 1\n\ adds r0, r1\n\ @@ -4375,7 +4374,7 @@ _0801F13C:\n\ b _0801F5DC\n\ .align 2, 0\n\ _0801F178: .4byte gDisableStructs\n\ -_0801F17C: .4byte gLockedMove\n\ +_0801F17C: .4byte gLockedMoves\n\ _0801F180: .4byte gCurrentMove\n\ _0801F184:\n\ ldr r0, _0801F1A0 @ =gBankAttacker\n\ @@ -4764,7 +4763,7 @@ _0801F4C4:\n\ lsls r0, 5\n\ orrs r1, r0\n\ str r1, [r2]\n\ - ldr r1, _0801F4F8 @ =gLockedMove\n\ + ldr r1, _0801F4F8 @ =gLockedMoves\n\ ldrb r0, [r3]\n\ lsls r0, 1\n\ adds r0, r1\n\ @@ -4787,7 +4786,7 @@ _0801F4F2:\n\ str r0, [r2]\n\ b _0801F5FA\n\ .align 2, 0\n\ -_0801F4F8: .4byte gLockedMove\n\ +_0801F4F8: .4byte gLockedMoves\n\ _0801F4FC: .4byte gCurrentMove\n\ _0801F500:\n\ mov r5, r8\n\ @@ -10660,8 +10659,8 @@ static void atk52_switchineffects(void) for (i = 0; i < gNoOfAllBanks; i++) { - if (gTurnOrder[i] == gActiveBank) - gUnknown_02024A76[i] = 0xC; + if (gBanksByTurnOrder[i] == gActiveBank) + gActionsByTurnOrder[i] = 0xC; } for (i = 0; i < gNoOfAllBanks; i++) @@ -10838,7 +10837,7 @@ static void atk5A_yesnoboxlearnmove(void) } break; case 3: - if (!gPaletteFade.active && gMain.callback2 == sub_800F808) + if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2) { u8 move_pos = sub_809FA30(); if (move_pos == 4) @@ -11404,7 +11403,7 @@ static void atk68_cancelallactions(void) int i; for (i = 0; i < gNoOfAllBanks; i++) { - gUnknown_02024A76[i] = 0xC; + gActionsByTurnOrder[i] = 0xC; } gBattlescriptCurrInstr++; } @@ -11943,7 +11942,7 @@ static void atk71_buffermovetolearn(void) static void atk72_jumpifplayerran(void) { - if (sub_8014AB8(gBank1)) + if (TryRunFromBattle(gBank1)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); else gBattlescriptCurrInstr += 5; @@ -13251,7 +13250,7 @@ static void atk8A_normalisebuffs(void) //haze static void atk8B_setbide(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; - gLockedMove[gBankAttacker] = gCurrentMove; + gLockedMoves[gBankAttacker] = gCurrentMove; gTakenDmg[gBankAttacker] = 0; gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); //2 turns gBattlescriptCurrInstr++; @@ -15075,7 +15074,7 @@ static void atkB3_rolloutdamagecalculation(void) gDisableStructs[gBankAttacker].rolloutTimer1 = 5; gDisableStructs[gBankAttacker].rolloutTimer2 = 5; gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS; - gLockedMove[gBankAttacker] = gCurrentMove; + gLockedMoves[gBankAttacker] = gCurrentMove; } if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0) gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); @@ -15252,8 +15251,8 @@ static void atkBA_jumpifnopursuitswitchdmg(void) int i; for (i = 0; i < gNoOfAllBanks; i++) { - if (gTurnOrder[i] == gBankTarget) - gUnknown_02024A76[i] = 11; + if (gBanksByTurnOrder[i] == gBankTarget) + gActionsByTurnOrder[i] = 11; } gCurrentMove = MOVE_PURSUIT; gBattlescriptCurrInstr += 5; @@ -17014,7 +17013,7 @@ static void atkEC_pursuitrelated(void) gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT) { - gUnknown_02024A76[gActiveBank] = 11; + gActionsByTurnOrder[gActiveBank] = 11; gCurrentMove = MOVE_PURSUIT; gBattlescriptCurrInstr += 5; BATTLE_STRUCT->animTurn = 1; @@ -17230,7 +17229,7 @@ static void atkF2_displaydexinfo(void) } break; case 2: - if (!gPaletteFade.active && gMain.callback2 == sub_800F808 && !gTasks[gBattleCommunication[1]].isActive) + if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2 && !gTasks[gBattleCommunication[1]].isActive) { LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000)); LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000)); @@ -17394,12 +17393,12 @@ static void atkF3_trygivecaughtmonnick(void) if (!gPaletteFade.active) { GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); - DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), sub_800F808); + DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), BattleMainCB2); gBattleCommunication[0]++; } break; case 3: - if (gMain.callback2 == sub_800F808 && !gPaletteFade.active ) + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active ) { SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 35d8f33c8..54181bc21 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -48,8 +48,8 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern struct Window gUnknown_03004210; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u8 gUnknown_0300434C[]; extern u32 gBattleExecBuffer; extern MainCallback gPreBattleCallback1; @@ -1410,8 +1410,8 @@ void sub_8039B64(void) void LinkOpponentHandlePrintString(void) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_8037C2C; diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index adc3c1c85..2c78d4a82 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -48,8 +48,8 @@ extern u8 gAnimFriendship; extern u16 gWeatherMoveAnim; extern u8 gAnimMoveTurn; extern struct Window gUnknown_03004210; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern MainCallback gPreBattleCallback1; extern void (*gBattleBankFunc[])(void); extern u8 gHealthboxIDs[]; @@ -1355,8 +1355,8 @@ void sub_811FF30(void) void LinkPartnerHandlePrintString(void) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_811DFA0; diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 477b600ac..ab7b6944b 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -50,8 +50,8 @@ extern u8 gAnimMoveTurn; extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern struct Window gUnknown_03004210; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u8 gDisplayedStringBattle[]; extern u8 gBankTarget; extern u8 gAbsentBankFlags; @@ -1404,8 +1404,8 @@ void sub_8035238(void) void OpponentHandlePrintString(void) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_80331D0; diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 62a38311a..f992e3e51 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -35,8 +35,8 @@ struct MovePpInfo #define SUB_803037C_TILE_DATA_OFFSET 444 #endif -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042A0; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; extern struct Window gUnknown_03004210; @@ -72,7 +72,7 @@ extern u16 gBattle_BG1_Y; extern u16 gUnknown_030041B8; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u8 gUnknown_03004344; extern u8 gUnknown_0300434C[]; @@ -148,8 +148,8 @@ extern u8 gAbsentBankFlags; extern u8 gUnknown_03004344; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern struct Window gUnknown_03004210; extern const u8 BattleText_SwitchWhich[]; extern u8 gUnknown_03004348; @@ -679,8 +679,8 @@ void sub_802C68C(void) { DestroyMenuCursor(); PlaySE(SE_SELECT); - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 320; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 320; Emitcmd33(1, 10, 0xFFFF); PlayerBufferExecCompleted(); } @@ -1495,7 +1495,7 @@ void sub_802DF30(void) void sub_802DF88(void) { - if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { if (gUnknown_0202E8F4 == 1) Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470); @@ -1519,7 +1519,7 @@ void sub_802E004(void) void sub_802E03C(void) { - if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { Emitcmd35(1, gSpecialVar_ItemId); PlayerBufferExecCompleted(); @@ -1695,8 +1695,8 @@ void b_link_standby_message(void) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; sub_8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15); } } @@ -2559,8 +2559,8 @@ void sub_8030190(void) void PlayerHandlePrintString(void) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); gBattleBankFunc[gActiveBank] = sub_802DF18; @@ -2578,8 +2578,8 @@ void PlayerHandlecmd18(void) { int r4; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); @@ -2612,8 +2612,8 @@ void PlayerHandlecmd20(void) void sub_80304A8(void) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 320; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 320; sub_802E1B0(); gUnknown_03004344 = 0xFF; sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 37c58f951..0a629ba4d 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -23,8 +23,8 @@ extern u8 gActiveBank; extern const u8 BattleText_MenuOptionsSafari[]; extern void *gBattleBankFunc[]; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u8 gBattleBufferA[][0x200]; extern bool8 gDoingBattleAnim; extern u8 gObjectBankIDs[]; @@ -313,7 +313,7 @@ void sub_812B724(void) void sub_812B758(void) { - if (gMain.callback2 == sub_800F808 && !gPaletteFade.active) + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { Emitcmd35(1, gSpecialVar_ItemId); SafariBufferExecCompleted(); @@ -450,8 +450,8 @@ void SafariHandleMoveAnimation(void) void SafariHandlePrintString(void) { - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_812B694; @@ -469,8 +469,8 @@ void SafariHandlecmd18(void) { int i; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; gUnknown_03004210.paletteNum = 0; FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index be40f968c..bd2b4a45b 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -53,8 +53,8 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern struct Window gUnknown_03004210; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u8 gUnknown_0300434C[]; extern const u8 BattleText_WallyMenu[]; extern const u8 BattleText_MenuOptions[]; @@ -363,7 +363,7 @@ void sub_81374C4(void) void sub_81374FC(void) { - if (gMain.callback2 == sub_800F808 + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { Emitcmd35(1, gSpecialVar_ItemId); @@ -1240,8 +1240,8 @@ void WallyHandlePrintString(void) { u16 *ptr; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; ptr = (u16 *)&gBattleBufferA[gActiveBank][2]; if (*ptr == 2) DestroyMenuCursor(); @@ -1262,8 +1262,8 @@ void WallyHandlecmd18(void) { s32 i; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 160; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; gUnknown_03004210.paletteNum = 0; FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index a7646e78b..6a6d7a137 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -13,12 +13,12 @@ extern struct SpriteTemplate gUnknown_02024E8C; extern struct Window gUnknown_03004210; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u16 gUnknown_030041B0; extern u16 gBattle_BG1_Y; extern u16 gUnknown_030041B8; -extern u16 gUnknown_030042A0; +extern u16 gBattle_BG0_Y; extern u8 gReservedSpritePaletteCount; extern u8 gActionSelectionCursor[4]; extern u8 gBankInMenu; @@ -81,8 +81,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void) SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -190,7 +190,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) sub_807B06C(); BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1); gPaletteFade.bufferTransferDisabled = 0; - SetMainCallback2(sub_800F808); + SetMainCallback2(BattleMainCB2); break; } gReshowState++; diff --git a/src/contest.c b/src/contest.c index 365f92538..c32719648 100644 --- a/src/contest.c +++ b/src/contest.c @@ -60,8 +60,8 @@ extern u16 gBattle_WIN0V; extern u16 gBattle_WIN1V; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u16 gBattle_WIN0H; extern u32 gUnknown_03005D28; // saved RNG value @@ -324,8 +324,8 @@ void ResetContestGpuRegs(void) REG_WINOUT = 0x3F3F; REG_DISPCNT |= 0x7F00; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -620,8 +620,8 @@ void ContestMainCallback2(void) void ContestVBlankCallback(void) { - REG_BG0HOFS = gUnknown_030042A4; - REG_BG0VOFS = gUnknown_030042A0; + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; @@ -640,7 +640,7 @@ void ContestVBlankCallback(void) void sub_80ABB70(u8 taskId) { - gUnknown_030042A0 = 0; + gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; sub_80B0D7C(); DmaCopy32Defvars(3, gPlttBufferUnfaded, shared18000.unk18204, 0x400); @@ -684,7 +684,7 @@ void sub_80ABCDC(u8 taskId) u8 i; u8 sp8[32]; - gUnknown_030042A0 = 0xA0; + gBattle_BG0_Y = 0xA0; gBattle_BG2_Y = 0xA0; FillWindowRect_DefaultPalette( &gUnknown_03004210, @@ -772,7 +772,7 @@ void sub_80ABEA0(u8 taskId) sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15); - gUnknown_030042A0 = 0; + gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; gTasks[taskId].func = sub_80ABC70; break; @@ -846,7 +846,7 @@ void sub_80AC15C(u8 taskId) void sub_80AC188(u8 taskId) { sub_80AF138(); - gUnknown_030042A0 = 0; + gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; sub_80AFFE0(FALSE); DmaCopy32Defvars(3, gPlttBufferFaded, shared18000.unk18604, 0x400); @@ -1804,7 +1804,7 @@ void sub_80ADDA4(u8 taskId) { s32 i; - gUnknown_030042A0 = 0; + gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; for (i = 0; i < 4; i++) gUnknown_02038680[i] = sContestantStatus[i].unk4; @@ -2950,7 +2950,7 @@ bool8 sub_80AF828(s32 a, s32 b, struct UnknownContestStruct6 *c) void sub_80AF860(void) { - gUnknown_030042A0 = 0; + gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; sub_80AF138(); sub_8003460(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index bb80de6fe..49fe6864b 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -29,8 +29,8 @@ extern u8 gContestPlayerMonIndex; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042A0; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; @@ -457,8 +457,8 @@ static void sub_80A9F50(void) REG_BLDY = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -505,8 +505,8 @@ static void sub_80AA064(void) static void sub_80AA090(void) { - REG_BG0HOFS = gUnknown_030042A4; - REG_BG0VOFS = gUnknown_030042A0; + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; diff --git a/src/field/tv.c b/src/field/tv.c index d7a75a709..e88e3c72b 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -811,7 +811,7 @@ u8 sub_80BDEAC(u8 *a0) return lang; } -void sub_80BDEC8(void) +void PutPokemonTodayCaughtOnAir(void) { u8 i; u16 total; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index f307f5979..4ee601360 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -65,8 +65,8 @@ void nullsub_6(void); bool32 IsHMMove2(u16 move); extern struct Window gUnknown_03004210; -extern u16 gUnknown_030042A4; -extern u16 gUnknown_030042A0; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG0_Y; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; @@ -200,8 +200,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -308,8 +308,8 @@ static void CB2_EvolutionSceneLoadGraphics(void) REG_WINOUT = 0; SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -362,8 +362,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) ResetSpriteData(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 4; - gUnknown_030042A4 = 0; - gUnknown_030042A0 = 0; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; @@ -3923,8 +3923,8 @@ static void EvoDummyFunc(void) static void VBlankCB_EvolutionScene(void) { REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803 - REG_BG0HOFS = gUnknown_030042A4; - REG_BG0VOFS = gUnknown_030042A0; + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; @@ -3939,8 +3939,8 @@ static void VBlankCB_EvolutionScene(void) static void VBlankCB_TradeEvolutionScene(void) { - REG_BG0HOFS = gUnknown_030042A4; - REG_BG0VOFS = gUnknown_030042A0; + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; diff --git a/src/unknown_task.c b/src/unknown_task.c index 62245502a..2c71bfb08 100644 --- a/src/unknown_task.c +++ b/src/unknown_task.c @@ -12,8 +12,8 @@ extern u16 gBattle_BG1_Y; extern u16 gUnknown_030041B8; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030042A0; -extern u16 gUnknown_030042A4; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u8 gUnknown_0202FFA4; @@ -120,10 +120,10 @@ static void task00_for_dp12(u8 taskId) switch (gTasks[taskId].data[6]) { case 0x0: - value = gUnknown_030042A4; + value = gBattle_BG0_X; break; case 0x2: - value = gUnknown_030042A0; + value = gBattle_BG0_Y; break; case 0x4: value = gBattle_BG1_X; -- cgit v1.2.3 From be36c506387648a11afe51b0f4209386947feb37 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 7 Jan 2018 17:57:46 -0800 Subject: Finish battle_2.c and battle_util.c decompilation --- src/battle/battle_2.c | 16 +- src/battle/battle_3.c | 3229 --------------------------- src/battle/battle_4.c | 258 ++- src/battle/battle_util.c | 3479 ++++++++++++++++++++++++++++++ src/data/pokemon/trainer_class_lookups.h | 10 +- src/pokemon/pokemon_2.c | 1 + src/rom3.c | 3 +- 7 files changed, 3619 insertions(+), 3377 deletions(-) delete mode 100644 src/battle/battle_3.c create mode 100644 src/battle/battle_util.c (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index a30245081..ae84e5585 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -5,6 +5,7 @@ #include "battle_interface.h" #include "battle_message.h" #include "battle_setup.h" +#include "battle_util.h" #include "data2.h" #include "event_data.h" #include "evolution_scene.h" @@ -141,7 +142,7 @@ extern u16 gBattleWeather; extern u32 gBattleMoveDamage; extern struct BattlePokemon gBattleMons[]; extern u8 gBattleMoveFlags; -extern const u8 BattleScript_FocusPunchSetUp[]; +extern u8 BattleScript_FocusPunchSetUp[]; extern u16 gDynamicBasePower; extern u8 gCurrentTurnActionNumber; extern void (* const gUnknown_081FA640[])(void); @@ -175,7 +176,6 @@ extern u8 gUnknown_081FA70C[][3]; extern u8 gUnknown_081FA71B[]; extern u8 gUnknown_081FA71F[]; -void b_call_bc_move_exec(const u8* BS_ptr); static void BattlePrepIntroSlide(void); void CheckFocusPunch_ClearVarsBeforeTurnStarts(void); @@ -2180,7 +2180,7 @@ void BattleBeginFirstTurn(void) SpecialStatusesClear(); ewram160A6 = gAbsentBankFlags; gBattleMainFunc = sub_8012324; - sub_80156DC(); + ResetSentPokesToOpponentValue(); for (i = 0; i < 8; i++) gBattleCommunication[i] = 0; for (i = 0; i < gNoOfAllBanks; i++) @@ -2236,7 +2236,7 @@ void BattleTurnPassed(void) if (HandleFaintedMonActions() != 0) return; ewram16059 = 0; - if (sub_80170DC() != 0) + if (HandleWishPerishSongOnTurnEnd() != 0) return; TurnValuesCleanUp(0); gHitMarker &= ~HITMARKER_NO_ATTACKSTRING; @@ -3154,7 +3154,7 @@ _08012968:\n\ cmp r0, 0x3\n\ bne _080129A8\n\ ldr r0, _080129A0 @ =BattleScript_PrintCantRunFromTrainer\n\ - bl b_call_bc_move_exec\n\ + bl BattleScriptExecute\n\ ldr r1, _080129A4 @ =gBattleCommunication\n\ ldrb r0, [r4]\n\ adds r0, r1\n\ @@ -3318,7 +3318,7 @@ _08012ACC:\n\ _08012AF4: .4byte 0x0000ffff\n\ _08012AF8: .4byte gBattleCommunication\n\ _08012AFC:\n\ - bl sub_8015894\n\ + bl TrySetCantSelectMoveBattleScript\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08012B48\n\ @@ -4207,13 +4207,13 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) && !(gDisableStructs[gBankAttacker].truantCounter) && !(gProtectStructs[gActiveBank].onlyStruggle)) { - b_call_bc_move_exec(BattleScript_FocusPunchSetUp); + BattleScriptExecute(BattleScript_FocusPunchSetUp); return; } } } - b_clear_atk_up_if_hit_flag_unless_enraged(); + TryClearRageStatuses(); gCurrentTurnActionNumber = 0; { // something stupid needed to match diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c deleted file mode 100644 index 92e0404cc..000000000 --- a/src/battle/battle_3.c +++ /dev/null @@ -1,3229 +0,0 @@ -#include "global.h" -#include "constants/abilities.h" -#include "battle.h" -#include "constants/moves.h" -#include "item.h" -#include "constants/items.h" -#include "event_data.h" -#include "constants/hold_effects.h" -#include "constants/species.h" -#include "constants/weather.h" -#include "pokemon.h" -#include "data2.h" -#include "random.h" -#include "text.h" -#include "constants/battle_move_effects.h" -#include "string_util.h" -#include "constants/flags.h" -#include "ewram.h" - -extern u8* gBattlescriptCurrInstr; -extern u8 gActiveBank; -extern u8 gBattleBufferB[4][0x200]; -extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to -extern u16 gLastUsedMove[4]; -extern struct BattlePokemon gBattleMons[4]; -extern struct BattleEnigmaBerry gEnigmaBerries[4]; -extern u8 gStringBank; -extern u16 gLastUsedItem; -extern u16 gCurrentMove; -extern const u32 gBitTable[]; -extern u16 gBattleTypeFlags; -extern u8 gNoOfAllBanks; -extern u32 gStatuses3[4]; -extern u8 gBankAttacker; -extern u8 gBankTarget; -extern u8 gBanksByTurnOrder[4]; -extern u16 gSideAffecting[2]; -extern u16 gBattleWeather; -extern void (*gBattleMainFunc)(void); -extern u8 gAbsentBankFlags; -extern u8 gBattleCommunication[]; -extern u32 gHitMarker; -extern u8 gEffectBank; -extern u8 gBank1; -extern s32 gBattleMoveDamage; -extern u16 gBattlePartyID[4]; -extern u16 gChosenMovesByBanks[4]; -extern s32 gTakenDmg[4]; -extern u8 gTakenDmgBanks[4]; -extern u8 gBattleMoveFlags; -extern u8 gLastUsedAbility; -extern u8 gBattleTextBuff2[]; -extern u8 gCurrentActionFuncId; -extern struct BattleEnigmaBerry gEnigmaBerries[4]; -extern u8 gUnknown_02024BE5; -extern u8 gCurrMovePos; -extern u16 gRandomMove; -extern s32 gBattleMoveDamage; -extern u16 gDynamicBasePower; -extern u32 gBattleExecBuffer; -extern const u16 gSoundMovesTable[]; -extern const u8 gStatusConditionString_PoisonJpn[]; -extern const u8 gStatusConditionString_SleepJpn[]; -extern const u8 gStatusConditionString_ParalysisJpn[]; -extern const u8 gStatusConditionString_BurnJpn[]; -extern const u8 gStatusConditionString_IceJpn[]; -extern const u8 gStatusConditionString_ConfusionJpn[]; -extern const u8 gStatusConditionString_LoveJpn[]; -extern const BattleCmdFunc gBattleScriptingCommandsTable[]; - -u8 IsImprisoned(u8 bank, u16 move); -u8 GetBankByIdentity(u8 ID); -u8 GetBankIdentity(u8 bank); -u8 GetBankSide(u8 bank); -void b_call_bc_move_exec(u8* BS_ptr); -bool8 sub_8015660(u8 bank); //check if a move failed -void SetMoveEffect(bool8 primary, u8 certainArg); -bool8 UproarWakeUpCheck(u8 bank); -bool8 sub_8018018(u8 bank, u8, u8); -void sub_8015740(u8 bank); -s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); -u8 CountTrailingZeroBits(u32 a); -u8 GetMoveTarget(u16 move, u8 useMoveTarget); -u8 sub_803FC34(u8 bank); -u16 sub_803FBFC(u8 a); -u8 weather_get_current(void); -void b_push_move_exec(u8* BS_ptr); -void RecordAbilityBattle(u8 bank, u8 ability); -void RecordItemBattle(u8 bank, u8 holdEffect); -s8 GetPokeFlavourRelation(u32 pid, u8 flavor); - -extern u8 BattleScript_MoveSelectionDisabledMove[]; -extern u8 BattleScript_MoveSelectionTormented[]; -extern u8 BattleScript_MoveSelectionTaunted[]; -extern u8 BattleScript_MoveSelectionImprisoned[]; -extern u8 BattleScript_MoveSelectionChoiceBanded[]; -extern u8 BattleScript_MoveSelectionNoPP[]; -extern u8 BattleScript_NoMovesLeft[]; -extern u8 BattleScript_WishComesTrue[]; -extern u8 BattleScript_IngrainTurnHeal[]; -extern u8 BattleScript_LeechSeedTurnDrain[]; -extern u8 BattleScript_PoisonTurnDmg[]; -extern u8 BattleScript_BurnTurnDmg[]; -extern u8 BattleScript_NightmareTurnDmg[]; -extern u8 BattleScript_CurseTurnDmg[]; -extern u8 BattleScript_WrapTurnDmg[]; -extern u8 BattleScript_WrapEnds[]; -extern u8 BattleScript_DisabledNoMore[]; -extern u8 BattleScript_EncoredNoMore[]; - -extern u8 BattleScript_SideStatusWoreOff[]; -extern u8 BattleScript_RainContinuesOrEnds[]; -extern u8 BattleScript_SandStormHailEnds[]; -extern u8 BattleScript_DamagingWeatherContinues[]; -extern u8 BattleScript_SunlightFaded[]; -extern u8 BattleScript_SunlightContinues[]; -extern u8 BattleScript_SafeguardEnds[]; -extern u8 BattleScript_MonWokeUpInUproar[]; //uproar wakeup BS -extern u8 BattleScript_PrintUproarOverTurns[]; //uproar BS -extern u8 BattleScript_ThrashConfuses[]; -extern u8 BattleScript_YawnMakesAsleep[]; -extern u8 BattleScript_MonTookFutureAttack[]; -extern u8 BattleScript_PerishSongHits[]; -extern u8 BattleScript_PerishSongTimerGoesDown[]; -extern u8 BattleScript_GiveExp[]; -extern u8 BattleScript_HandleFaintedMon[]; - -extern u8 BattleScript_MoveUsedIsAsleep[]; -extern u8 BattleScript_MoveUsedWokeUp[]; -extern u8 BattleScript_MoveUsedIsFrozen[]; -extern u8 BattleScript_MoveUsedUnfroze[]; -extern u8 BattleScript_MoveUsedLoafingAround[]; -extern u8 BattleScript_MoveUsedMustRecharge[]; -extern u8 BattleScript_MoveUsedFlinched[]; -extern u8 BattleScript_MoveUsedIsDisabled[]; -extern u8 BattleScript_MoveUsedIsTaunted[]; -extern u8 BattleScript_MoveUsedIsImprisoned[]; -extern u8 BattleScript_MoveUsedIsConfused[]; -extern u8 BattleScript_MoveUsedIsConfusedNoMore[]; -extern u8 BattleScript_MoveUsedIsParalyzed[]; -extern u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; -extern u8 BattleScript_MoveUsedIsInLove[]; -extern u8 BattleScript_BideStoringEnergy[]; -extern u8 BattleScript_BideAttack[]; -extern u8 BattleScript_BideNoEnergyToAttack[]; - -extern u8 BattleScript_OverworldWeatherStarts[]; //load weather from overworld -extern u8 BattleScript_DrizzleActivates[]; -extern u8 BattleScript_SandstreamActivates[]; -extern u8 BattleScript_DroughtActivates[]; -extern u8 BattleScript_CastformChange[]; -extern u8 BattleScript_RainDishActivates[]; -extern u8 BattleScript_ShedSkinActivates[]; -extern u8 BattleScript_SpeedBoostActivates[]; -extern u8 BattleScript_SoundproofProtected[]; -extern u8 BattleScript_MoveHPDrain[]; -extern u8 BattleScript_MoveHPDrain_PPLoss[]; -extern u8 BattleScript_FlashFireBoost[]; -extern u8 BattleScript_FlashFireBoost_PPLoss[]; -extern u8 BattleScript_MoveHPDrain_FullHP[]; -extern u8 BattleScript_MoveHPDrain_FullHP_PPLoss[]; -extern u8 BattleScript_ColorChangeActivates[]; -extern u8 BattleScript_RoughSkinActivates[]; -extern u8 BattleScript_ApplySecondaryEffect[]; -extern u8 BattleScript_CuteCharmActivates[]; -extern u8 BattleScript_AbilityCuredStatus[]; //ability status clear -extern u8 BattleScript_SynchronizeActivates[]; -extern u8 gUnknown_081D978C[]; //intimidate1 -extern u8 gUnknown_081D9795[]; //intimidate2 -extern u8 BattleScript_TraceActivates[]; - -extern u8 BattleScript_WhiteHerbEnd2[]; -extern u8 BattleScript_WhiteHerbRet[]; -extern u8 BattleScript_ItemHealHP_RemoveItem[]; -extern u8 BattleScript_BerryPPHealEnd2[]; -extern u8 BattleScript_ItemHealHP_End2[]; -extern u8 BattleScript_BerryConfuseHealEnd2[]; -extern u8 BattleScript_BerryStatRaiseEnd2[]; -extern u8 BattleScript_BerryFocusEnergyEnd2[]; -extern u8 BattleScript_BerryCurePrlzEnd2[]; -extern u8 BattleScript_BerryCurePsnEnd2[]; -extern u8 BattleScript_BerryCureBrnEnd2[]; -extern u8 BattleScript_BerryCureFrzEnd2[]; -extern u8 BattleScript_BerryCureSlpEnd2[]; -extern u8 BattleScript_BerryCureConfusionEnd2[]; -extern u8 BattleScript_BerryCureChosenStatusEnd2[]; //berry cure any status end2 -extern u8 BattleScript_BerryCureParRet[]; -extern u8 BattleScript_BerryCurePsnRet[]; -extern u8 BattleScript_BerryCureBrnRet[]; -extern u8 BattleScript_BerryCureFrzRet[]; -extern u8 BattleScript_BerryCureSlpRet[]; -extern u8 BattleScript_BerryCureConfusionRet[]; -extern u8 BattleScript_BerryCureChosenStatusRet[]; //berry cure any status return - -extern u8 BattleScript_ItemHealHP_Ret[]; - -extern u8 gUnknown_081D995F[]; //disobedient while asleep -extern u8 BattleScript_IgnoresAndUsesRandomMove[]; //disobedient, uses a random move -extern u8 BattleScript_IgnoresAndFallsAsleep[]; //disobedient, went to sleep -extern u8 gUnknown_081D99A0[]; //disobedient, hits itself - -//array entries for battle communication -#define MOVE_EFFECT_BYTE 0x3 -#define MULTISTRING_CHOOSER 0x5 -#define MSG_DISPLAY 0x7 - -void b_movescr_stack_push(u8* BS_ptr) -{ - B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = BS_ptr; -} - -void b_movescr_stack_push_cursor(void) -{ - B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr; -} - -void b_movescr_stack_pop_cursor(void) -{ - gBattlescriptCurrInstr = B_BATTLESCRIPTS_STACK->ptr[--B_BATTLESCRIPTS_STACK->size]; -} - -u8 sub_8015894(void) //msg can't select a move -{ - u8 limitations = 0; - u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]]; - u8 holdEffect; - u16* choicedMove = CHOICED_MOVE(gActiveBank); - if (gDisableStructs[gActiveBank].disabledMove == move && move) - { - BATTLE_STRUCT->scriptingActive = gActiveBank; - gCurrentMove = move; - gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove; - limitations++; - } - if (move == gLastUsedMove[gActiveBank] && move != MOVE_STRUGGLE && gBattleMons[gActiveBank].status2 & STATUS2_TORMENT) - { - CancelMultiTurnMoves(gActiveBank); - gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTormented; - limitations++; - } - if (gDisableStructs[gActiveBank].tauntTimer1 && gBattleMoves[move].power == 0) - { - gCurrentMove = move; - gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTaunted; - limitations++; - } - if (IsImprisoned(gActiveBank, move)) - { - gCurrentMove = move; - gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionImprisoned; - limitations++; - } - if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY) - holdEffect = gEnigmaBerries[gActiveBank].holdEffect; - else - holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); - gStringBank = gActiveBank; - if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move) - { - gCurrentMove = *choicedMove; - gLastUsedItem = gBattleMons[gActiveBank].item; - gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionChoiceBanded; - limitations++; - } - if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0) - { - gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionNoPP; - limitations++; - } - return limitations; -} - -#define MOVE_LIMITATION_ZEROMOVE (1 << 0) -#define MOVE_LIMITATION_PP (1 << 1) -#define MOVE_LIMITATION_DISABLED (1 << 2) -#define MOVE_LIMITATION_TORMENTED (1 << 3) -#define MOVE_LIMITATION_TAUNT (1 << 4) -#define MOVE_LIMITATION_IMPRISION (1 << 5) - -u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) -{ - u8 holdEffect; - u16* choicedMove = CHOICED_MOVE(bank); - s32 i; - if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) - holdEffect = gEnigmaBerries[bank].holdEffect; - else - holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); - gStringBank = bank; - for (i = 0; i < 4; i++) - { - if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) - unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP) - unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) - unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) - unusableMoves |= gBitTable[i]; - if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) - unusableMoves |= gBitTable[i]; - if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) - unusableMoves |= gBitTable[i]; - if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) - unusableMoves |= gBitTable[i]; - if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i]) - unusableMoves |= gBitTable[i]; - } - return unusableMoves; -} - -bool8 AreAllMovesUnusable(void) -{ - u8 unusable; - unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF); - if (unusable == 0xF) //all moves are unusable - { - gProtectStructs[gActiveBank].onlyStruggle = 1; - gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - gBattleBufferB[gActiveBank][3] = GetBankByIdentity((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2)); - else - gBattleBufferB[gActiveBank][3] = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ 1); - } - else - gProtectStructs[gActiveBank].onlyStruggle = 0; - return (unusable == 0xF); -} - -u8 IsImprisoned(u8 bank, u16 move) -{ - u8 imprisionedMoves = 0; - u8 bankSide = GetBankSide(bank); - s32 i; - for (i = 0; i < gNoOfAllBanks; i++) - { - if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) - { - s32 j; - for (j = 0; j < 4; j++) - { - if (move == gBattleMons[i].moves[j]) - break; - } - if (j < 4) - imprisionedMoves++; - } - } - return imprisionedMoves; -} - -u8 UpdateTurnCounters(void) -{ - u8 effect = 0; - s32 i; - - for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++) - { - } - for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++) - { - } - - do - { - u8 sideBank; - - switch (BATTLE_STRUCT->turncountersTracker) - { - case 0: - for (i = 0; i < gNoOfAllBanks; i++) - { - gBanksByTurnOrder[i] = i; - } - for (i = 0; i < gNoOfAllBanks - 1; i++) - { - s32 j; - for (j = i + 1; j < gNoOfAllBanks; j++) - { - if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0)) - SwapTurnOrder(i, j); - } - } - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; - case 1: - while (BATTLE_STRUCT->turnSideTracker < 2) - { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; - - if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) - { - if (--gSideTimers[sideBank].reflectTimer == 0) - { - - gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; - b_call_bc_move_exec(BattleScript_SideStatusWoreOff); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_REFLECT; - gBattleTextBuff1[3] = MOVE_REFLECT >> 8; - gBattleTextBuff1[4] = EOS; - effect++; - } - } - BATTLE_STRUCT->turnSideTracker++; - if (effect) - break; - } - if (!effect) - { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; - } - break; - case 2: - while (BATTLE_STRUCT->turnSideTracker < 2) - { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) - { - if (--gSideTimers[sideBank].lightscreenTimer == 0) - { - gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; - b_call_bc_move_exec(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; - gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; - gBattleTextBuff1[4] = EOS; - effect++; - } - } - BATTLE_STRUCT->turnSideTracker++; - if (effect) - break; - } - if (!effect) - { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; - } - break; - case 3: - while (BATTLE_STRUCT->turnSideTracker < 2) - { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; - if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) - { - gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; - b_call_bc_move_exec(BattleScript_SideStatusWoreOff); - gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_MIST; - gBattleTextBuff1[3] = MOVE_MIST >> 8; - gBattleTextBuff1[4] = EOS; - effect++; - } - BATTLE_STRUCT->turnSideTracker++; - if (effect) - break; - } - if (!effect) - { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; - } - break; - case 4: - while (BATTLE_STRUCT->turnSideTracker < 2) - { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; - if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) - { - if (--gSideTimers[sideBank].safeguardTimer == 0) - { - gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; - b_call_bc_move_exec(BattleScript_SafeguardEnds); - effect++; - } - } - BATTLE_STRUCT->turnSideTracker++; - if (effect) - break; - } - if (!effect) - { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; - } - break; - case 5: - while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks) - { - gActiveBank = gBanksByTurnOrder[BATTLE_STRUCT->turnSideTracker]; - if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) - { - gBankTarget = gActiveBank; - b_call_bc_move_exec(BattleScript_WishComesTrue); - effect++; - } - BATTLE_STRUCT->turnSideTracker++; - if (effect) - break; - } - if (!effect) - { - BATTLE_STRUCT->turncountersTracker++; - } - break; - case 6: - if (gBattleWeather & WEATHER_RAIN_ANY) - { - if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) - { - if (--gWishFutureKnock.weatherDuration == 0) - { - gBattleWeather &= ~WEATHER_RAIN_TEMPORARY; - gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR; - gBattleCommunication[MULTISTRING_CHOOSER] = 2; - } - else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - else - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - } - else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - else - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - b_call_bc_move_exec(BattleScript_RainContinuesOrEnds); - effect++; - } - BATTLE_STRUCT->turncountersTracker++; - break; - case 7: - if (gBattleWeather & WEATHER_SANDSTORM_ANY) - { - if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) - { - gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; - } - else - gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; - - BATTLE_STRUCT->animArg1 = B_ANIM_SANDSTORM_CONTINUES; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - b_call_bc_move_exec(gBattlescriptCurrInstr); - effect++; - } - BATTLE_STRUCT->turncountersTracker++; - break; - case 8: - if (gBattleWeather & WEATHER_SUN_ANY) - { - if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) - { - gBattleWeather &= ~WEATHER_SUN_TEMPORARY; - gBattlescriptCurrInstr = BattleScript_SunlightFaded; - } - else - gBattlescriptCurrInstr = BattleScript_SunlightContinues; - - b_call_bc_move_exec(gBattlescriptCurrInstr); - effect++; - } - BATTLE_STRUCT->turncountersTracker++; - break; - case 9: - if (gBattleWeather & WEATHER_HAIL) - { - if (--gWishFutureKnock.weatherDuration == 0) - { - gBattleWeather &= ~WEATHER_HAIL; - gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; - } - else - gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; - - BATTLE_STRUCT->animArg1 = B_ANIM_HAIL_CONTINUES; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - b_call_bc_move_exec(gBattlescriptCurrInstr); - effect++; - } - BATTLE_STRUCT->turncountersTracker++; - break; - case 10: - effect++; - break; - } - } while (effect == 0); - return (gBattleMainFunc != BattleTurnPassed); -} - -#define TURNBASED_MAX_CASE 19 - -u8 TurnBasedEffects(void) -{ - u8 effect = 0; - - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE) - { - gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->turnEffectsBank]; - if (gAbsentBankFlags & gBitTable[gActiveBank]) - { - BATTLE_STRUCT->turnEffectsBank++; - } - else - { - switch (BATTLE_STRUCT->turnEffectsTracker) - { - case 0: // ingrain - if ((gStatuses3[gActiveBank] & STATUS3_ROOTED) - && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP - && gBattleMons[gActiveBank].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - b_call_bc_move_exec(BattleScript_IngrainTurnHeal); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 1: // end turn abilities - if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0)) - effect++; - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 2: // item effects - if (ItemBattleEffects(1, gActiveBank, 0)) - effect++; - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 18: // item effects again - if (ItemBattleEffects(1, gActiveBank, 1)) - effect++; - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 3: // leech seed - if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0) - { - gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - BATTLE_STRUCT->animArg1 = gBankTarget; - BATTLE_STRUCT->animArg2 = gBankAttacker; - b_call_bc_move_exec(BattleScript_LeechSeedTurnDrain); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 4: // poison - if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_PoisonTurnDmg); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 5: // toxic poison - if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns - gBattleMons[gActiveBank].status1 += 0x100; - gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; - b_call_bc_move_exec(BattleScript_PoisonTurnDmg); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 6: // burn - if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_BurnTurnDmg); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 7: // spooky nightmares - if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0) - { - // missing sleep check - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_NightmareTurnDmg); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 8: // curse - if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0) - { - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - b_call_bc_move_exec(BattleScript_CurseTurnDmg); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 9: // wrap - if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0) - { - gBattleMons[gActiveBank].status2 -= 0x2000; - if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap - { - BATTLE_STRUCT->animArg1 = ewram16004arr(0, gActiveBank); - BATTLE_STRUCT->animArg2 = ewram16004arr(1, gActiveBank); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank); - gBattleTextBuff1[3] = ewram16004arr(1, gActiveBank); - gBattleTextBuff1[4] = EOS; - gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; - gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - } - else // broke free - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank); - gBattleTextBuff1[3] = ewram16004arr(1, gActiveBank); - gBattleTextBuff1[4] = EOS; - gBattlescriptCurrInstr = BattleScript_WrapEnds; - } - b_call_bc_move_exec(gBattlescriptCurrInstr); - effect++; - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 10: // uproar - if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) - { - for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++) - { - if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) - && gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) - { - gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - b_call_bc_move_exec(BattleScript_MonWokeUpInUproar); - gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - break; - } - } - if (gBankAttacker != gNoOfAllBanks) - { - effect = 2; // a pokemon was awaken - break; - } - else - { - gBankAttacker = gActiveBank; - gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down - if (sub_8015660(gActiveBank)) - { - CancelMultiTurnMoves(gActiveBank); - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - } - else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) - { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - CancelMultiTurnMoves(gActiveBank); - } - b_call_bc_move_exec(BattleScript_PrintUproarOverTurns); - effect = 1; - } - } - if (effect != 2) - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 11: // thrash - if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) - { - gBattleMons[gActiveBank].status2 -= 0x400; - if (sub_8015660(gActiveBank)) - CancelMultiTurnMoves(gActiveBank); - else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) - && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS)) - { - gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS); - if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; - SetMoveEffect(1, 0); - if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) - b_call_bc_move_exec(BattleScript_ThrashConfuses); - effect++; - } - } - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 12: // disable - if (gDisableStructs[gActiveBank].disableTimer1 != 0) - { - int i; - for (i = 0; i < 4; i++) - { - if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i]) - break; - } - if (i == 4) // pokemon does not have the disabled move anymore - { - gDisableStructs[gActiveBank].disabledMove = 0; - gDisableStructs[gActiveBank].disableTimer1 = 0; - } - else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends - { - gDisableStructs[gActiveBank].disabledMove = 0; - b_call_bc_move_exec(BattleScript_DisabledNoMore); - effect++; - } - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 13: // encore - if (gDisableStructs[gActiveBank].encoreTimer1 != 0) - { - if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore - { - gDisableStructs[gActiveBank].encoredMove = 0; - gDisableStructs[gActiveBank].encoreTimer1 = 0; - } - else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0 - || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0) - { - gDisableStructs[gActiveBank].encoredMove = 0; - gDisableStructs[gActiveBank].encoreTimer1 = 0; - b_call_bc_move_exec(BattleScript_EncoredNoMore); - effect++; - } - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 14: // lock-on decrement - if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS) - gStatuses3[gActiveBank] -= 0x8; - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 15: // charge - if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0) - gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP; - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 16: // taunt - if (gDisableStructs[gActiveBank].tauntTimer1) - gDisableStructs[gActiveBank].tauntTimer1--; - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 17: // yawn - if (gStatuses3[gActiveBank] & STATUS3_YAWN) - { - gStatuses3[gActiveBank] -= 0x800; - if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY) - && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT - && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank)) - { - CancelMultiTurnMoves(gActiveBank); - gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - gEffectBank = gActiveBank; - b_call_bc_move_exec(BattleScript_YawnMakesAsleep); - effect++; - } - } - BATTLE_STRUCT->turnEffectsTracker++; - break; - case 19: // done - BATTLE_STRUCT->turnEffectsTracker = 0; - BATTLE_STRUCT->turnEffectsBank++; - break; - } - if (effect != 0) - return effect; - } - } - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); - return 0; -} - -bool8 sub_80170DC(void) // handle future sight and perish song -{ - gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - switch (BATTLE_STRUCT->sub80170DC_Tracker) - { - case 0: // future sight - while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) - { - gActiveBank = BATTLE_STRUCT->sub80170DC_Bank; - if (gAbsentBankFlags & gBitTable[gActiveBank]) - BATTLE_STRUCT->sub80170DC_Bank++; - else - { - BATTLE_STRUCT->sub80170DC_Bank++; - if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) - { - if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT) - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - else //Doom Desire - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank]; - gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8; - gBattleTextBuff1[4] = 0xFF; - gBankTarget = gActiveBank; - gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; - gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; - gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; - b_call_bc_move_exec(BattleScript_MonTookFutureAttack); - return 1; - } - } - } - BATTLE_STRUCT->sub80170DC_Tracker = 1; - BATTLE_STRUCT->sub80170DC_Bank = 0; - case 1: // perish song - while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) - { - gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; - if (gAbsentBankFlags & gBitTable[gActiveBank]) - BATTLE_STRUCT->sub80170DC_Bank++; - else - { - BATTLE_STRUCT->sub80170DC_Bank++; - if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 1; - gBattleTextBuff1[2] = 1; - gBattleTextBuff1[3] = 1; - gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1; - gBattleTextBuff1[5] = 0xFF; - if (gDisableStructs[gActiveBank].perishSong1 == 0) - { - gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG); - gBattleMoveDamage = gBattleMons[gActiveBank].hp; - gBattlescriptCurrInstr = BattleScript_PerishSongHits; - } - else - { - gDisableStructs[gActiveBank].perishSong1--; - gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown; - } - b_call_bc_move_exec(gBattlescriptCurrInstr); - return 1; - } - } - } - break; - } - gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); - return 0; -} - -#define HandleFaintedMonActions_MAX_CASE 7 - -bool8 HandleFaintedMonActions(void) -{ - if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) - return 0; - do - { - int i; - switch (BATTLE_STRUCT->sub80173A4_Tracker) - { - case 0: - BATTLE_STRUCT->unk1605A = 0; - BATTLE_STRUCT->sub80173A4_Tracker++; - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6)) - gAbsentBankFlags &= ~(gBitTable[i]); - } - case 1: - do - { - gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; - if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(BATTLE_STRUCT->unk16113 & gBitTable[gBattlePartyID[BATTLE_STRUCT->unk1605A]]) && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) - { - b_call_bc_move_exec(BattleScript_GiveExp); - BATTLE_STRUCT->sub80173A4_Tracker = 2; - return 1; - } - } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); - BATTLE_STRUCT->sub80173A4_Tracker = 3; - break; - case 2: - sub_8015740(gBank1); - if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) - BATTLE_STRUCT->sub80173A4_Tracker = 3; - else - BATTLE_STRUCT->sub80173A4_Tracker = 1; - break; - case 3: - BATTLE_STRUCT->unk1605A = 0; - BATTLE_STRUCT->sub80173A4_Tracker++; - case 4: - do - { - gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; //or should banks be switched? - if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) - { - b_call_bc_move_exec(BattleScript_HandleFaintedMon); - BATTLE_STRUCT->sub80173A4_Tracker = 5; - return 1; - } - } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); - BATTLE_STRUCT->sub80173A4_Tracker = 6; - break; - case 5: - if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) - BATTLE_STRUCT->sub80173A4_Tracker = 6; - else - BATTLE_STRUCT->sub80173A4_Tracker = 4; - break; - case 6: - if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0)) - return 1; - BATTLE_STRUCT->sub80173A4_Tracker++; - break; - case 7: - break; - } - } while (BATTLE_STRUCT->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE); - return 0; -} - -void b_clear_atk_up_if_hit_flag_unless_enraged(void) -{ - int i; - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].status2 & STATUS2_RAGE && gChosenMovesByBanks[i] != MOVE_RAGE) - gBattleMons[i].status2 &= ~(STATUS2_RAGE); - } -} - -#define ATKCANCELLER_MAX_CASE 14 - -u8 AtkCanceller_UnableToUseMove(void) -{ - u8 effect = 0; - s32* bideDmg = &BATTLE_STRUCT->bideDmg; - do - { - switch (BATTLE_STRUCT->atkCancellerTracker) - { - case 0: // flags clear - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND); - gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE); - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 1: // check being asleep - if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) - { - if (UproarWakeUpCheck(gBankAttacker)) - { - gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - b_movescr_stack_push_cursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; - effect = 2; - } - else - { - u8 toSub; - if (gBattleMons[gBankAttacker].ability == ABILITY_EARLY_BIRD) - toSub = 2; - else - toSub = 1; - if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) < toSub) - gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); - else - gBattleMons[gBankAttacker].status1 -= toSub; - if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) - { - if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) - { - gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 2; - } - } - else - { - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - b_movescr_stack_push_cursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; - effect = 2; - } - } - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 2: // check being frozen - if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) - { - if (Random() % 5) - { - if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13 - { - gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; - gHitMarker |= HITMARKER_NO_ATTACKSTRING; - } - else - { - BATTLE_STRUCT->atkCancellerTracker++; - break; - } - } - else // unfreeze - { - gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - } - effect = 2; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 3: // truant - if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter) - { - CancelMultiTurnMoves(gBankAttacker); - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; - gBattleMoveFlags |= MOVESTATUS_MISSED; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 4: // recharge - if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) - { - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE); - gDisableStructs[gBankAttacker].rechargeCounter = 0; - CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 5: // flinch - if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED) - { - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED); - gProtectStructs[gBankAttacker].flinchImmobility = 1; - CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 6: // disabled move - if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0) - { - gProtectStructs[gBankAttacker].usedDisabledMove = 1; - BATTLE_STRUCT->scriptingActive = gBankAttacker; - CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 7: // taunt - if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0) - { - gProtectStructs[gBankAttacker].usedTauntedMove = 1; - CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 8: // imprisoned - if (IsImprisoned(gBankAttacker, gCurrentMove)) - { - gProtectStructs[gBankAttacker].usedImprisionedMove = 1; - CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 9: // confusion - if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) - { - gBattleMons[gBankAttacker].status2--; - if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) - { - if (Random() & 1) - { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - b_movescr_stack_push_cursor(); - } - else // confusion dmg - { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBankTarget = gBankAttacker; - gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); - gProtectStructs[gBankAttacker].confusionSelfDmg = 1; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - } - gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; - } - else // snapped out of confusion - { - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; - } - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 10: // paralysis - if (gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) - { - gProtectStructs[gBankAttacker].prlzImmobility = 1; - CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 11: // infatuation - if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) - { - BATTLE_STRUCT->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); - if (Random() & 1) - b_movescr_stack_push_cursor(); - else - { - b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack); - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - gProtectStructs[gBankAttacker].loveImmobility = 1; - CancelMultiTurnMoves(gBankAttacker); - } - gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 12: // bide - if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) - { - gBattleMons[gBankAttacker].status2 -= 0x100; - if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) - gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; - else - { - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); - if (gTakenDmg[gBankAttacker]) - { - gCurrentMove = MOVE_BIDE; - *bideDmg = gTakenDmg[gBankAttacker] * 2; - gBankTarget = gTakenDmgBanks[gBankAttacker]; - if (gAbsentBankFlags & gBitTable[gBankTarget]) - gBankTarget = GetMoveTarget(MOVE_BIDE, 1); - gBattlescriptCurrInstr = BattleScript_BideAttack; - } - else - gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack; - } - effect = 1; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 13: // move thawing - if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) - { - if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) - { - gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - } - effect = 2; - } - BATTLE_STRUCT->atkCancellerTracker++; - break; - case 14: // last case - break; - } - - } while (BATTLE_STRUCT->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0); - - if (effect == 2) - { - gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - } - return effect; -} - -bool8 sub_8018018(u8 bank, u8 r1, u8 r2) -{ - struct Pokemon* party; - u8 r7; - u8 r6; - s32 i; - if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) - return 0; - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) - { - r7 = sub_803FC34(bank); - if (GetBankSide(bank) == 0) - party = gPlayerParty; - else - party = gEnemyParty; - r6 = sub_803FBFC(r7); - for (i = r6 * 3; i < r6 * 3 + 3; i++) - { - if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) - break; - } - return (i == r6 * 3 + 3); - } - else - { - if (GetBankSide(bank) == 1) - { - r7 = GetBankByIdentity(1); - r6 = GetBankByIdentity(3); - party = gEnemyParty; - } - else - { - r7 = GetBankByIdentity(0); - r6 = GetBankByIdentity(2); - party = gPlayerParty; - } - if (r1 == 6) - r1 = gBattlePartyID[r7]; - if (r2 == 6) - r2 = gBattlePartyID[r6]; - for (i = 0; i < 6; i++) - { - if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram16068arr(r7) && i != ewram16068arr(r6)) - break; - } - return (i == 6); - } -} - -enum -{ - CASTFORM_NO_CHANGE, //0 - CASTFORM_TO_NORMAL, //1 - CASTFORM_TO_FIRE, //2 - CASTFORM_TO_WATER, //3 - CASTFORM_TO_ICE, //4 -}; - -u8 CastformDataTypeChange(u8 bank) -{ - u8 formChange = 0; - if (gBattleMons[bank].species != SPECIES_CASTFORM || gBattleMons[bank].ability != ABILITY_FORECAST || gBattleMons[bank].hp == 0) - return CASTFORM_NO_CHANGE; - if (!WEATHER_HAS_EFFECT && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) - { - gBattleMons[bank].type1 = TYPE_NORMAL; - gBattleMons[bank].type2 = TYPE_NORMAL; - return CASTFORM_TO_NORMAL; - } - if (!WEATHER_HAS_EFFECT) - return CASTFORM_NO_CHANGE; - if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) - { - gBattleMons[bank].type1 = TYPE_NORMAL; - gBattleMons[bank].type2 = TYPE_NORMAL; - formChange = CASTFORM_TO_NORMAL; - } - if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[bank].type1 != TYPE_FIRE && gBattleMons[bank].type2 != TYPE_FIRE) - { - gBattleMons[bank].type1 = TYPE_FIRE; - gBattleMons[bank].type2 = TYPE_FIRE; - formChange = CASTFORM_TO_FIRE; - } - if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[bank].type1 != TYPE_WATER && gBattleMons[bank].type2 != TYPE_WATER) - { - gBattleMons[bank].type1 = TYPE_WATER; - gBattleMons[bank].type2 = TYPE_WATER; - formChange = CASTFORM_TO_WATER; - } - if (gBattleWeather & WEATHER_HAIL && gBattleMons[bank].type1 != TYPE_ICE && gBattleMons[bank].type2 != TYPE_ICE) - { - gBattleMons[bank].type1 = TYPE_ICE; - gBattleMons[bank].type2 = TYPE_ICE; - formChange = CASTFORM_TO_ICE; - } - return formChange; -} - -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) -{ - u8 effect = 0; - struct Pokemon* pokeAtk; - struct Pokemon* pokeDef; - u16 speciesAtk; - u16 speciesDef; - u32 pidAtk; - u32 pidDef; - - if (gBankAttacker >= gNoOfAllBanks) - gBankAttacker = bank; - if (GetBankSide(gBankAttacker) == 0) - pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]]; - else - pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]]; - - if (gBankTarget >= gNoOfAllBanks) - gBankTarget = bank; - if (GetBankSide(gBankTarget) == 0) - pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]]; - else - pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]]; - - speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES); - pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY); - - speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES); - pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY); - - if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning? - { - u8 moveType; - s32 i; - u16 move; - u8 side; - u8 target1; - - if (special) - gLastUsedAbility = special; - else - gLastUsedAbility = gBattleMons[bank].ability; - - if (moveArg) - move = moveArg; - else - move = gCurrentMove; - - if (BATTLE_STRUCT->dynamicMoveType) - moveType = BATTLE_STRUCT->dynamicMoveType & 0x3F; - else - moveType = gBattleMoves[move].type; - - //_080184AC - switch (caseID) - { - case ABILITYEFFECT_ON_SWITCHIN: // 0 - //_08018518 - if (gBankAttacker >= gNoOfAllBanks) - gBankAttacker = bank; - switch (gLastUsedAbility) - { - case 0xFF: //weather from overworld - //_08018586 - switch (weather_get_current()) - { - case WEATHER_RAIN_LIGHT: - case WEATHER_RAIN_MED: - case WEATHER_RAIN_HEAVY: - if (!(gBattleWeather & WEATHER_RAIN_ANY)) - { - gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); - BATTLE_STRUCT->animArg1 = B_ANIM_RAIN_CONTINUES; - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - case WEATHER_SANDSTORM: - if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) - { - gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); - BATTLE_STRUCT->animArg1 = B_ANIM_SANDSTORM_CONTINUES; - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - case WEATHER_DROUGHT: - if (!(gBattleWeather & WEATHER_SUN_ANY)) - { - gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); - BATTLE_STRUCT->animArg1 = B_ANIM_SUN_CONTINUES; - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - } - if (effect) - { - gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); - b_push_move_exec(BattleScript_OverworldWeatherStarts); - } - break; - case ABILITY_DRIZZLE: - //_08018680 - if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) - { - gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); - b_push_move_exec(BattleScript_DrizzleActivates); - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - case ABILITY_SAND_STREAM: - //_080186B8 - if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) - { - gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); - b_push_move_exec(BattleScript_SandstreamActivates); - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - case ABILITY_DROUGHT: - //_080186F0 - if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) - { - gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); - b_push_move_exec(BattleScript_DroughtActivates); - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - case ABILITY_INTIMIDATE: - //_08018728 - if (!(gSpecialStatuses[bank].intimidatedPoke)) - { - gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES; - gSpecialStatuses[bank].intimidatedPoke = 1; - } - break; - case ABILITY_FORECAST: - //_0801875C - effect = CastformDataTypeChange(bank); - if (effect != 0) - { - b_push_move_exec(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = bank; - BATTLE_STRUCT->castformToChangeInto = effect - 1; - } - break; - case ABILITY_TRACE: - //_080187A0 - if (!(gSpecialStatuses[bank].traced)) - { - gStatuses3[bank] |= STATUS3_TRACE; - gSpecialStatuses[bank].traced = 1; - } - break; - case ABILITY_CLOUD_NINE: - case ABILITY_AIR_LOCK: - //_080187DC - { - // that's a weird choice for a variable, why not use i or bank? - for (target1 = 0; target1 < gNoOfAllBanks; target1++) - { - effect = CastformDataTypeChange(target1); - if (effect != 0) - { - b_push_move_exec(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = target1; - BATTLE_STRUCT->castformToChangeInto = effect - 1; - break; - } - } - } - break; - } - break; - case ABILITYEFFECT_ENDTURN: // 1 - //_08018814 - if (gBattleMons[bank].hp != 0) - { - gBankAttacker = bank; - switch (gLastUsedAbility) - { - case ABILITY_RAIN_DISH: - if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) - && gBattleMons[bank].maxHP > gBattleMons[bank].hp) - { - gLastUsedAbility = ABILITY_RAIN_DISH; // why - b_push_move_exec(BattleScript_RainDishActivates); - gBattleMoveDamage = gBattleMons[bank].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - effect++; - } - break; - case ABILITY_SHED_SKIN: - if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) - { - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) - StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - if (gBattleMons[bank].status1 & STATUS_SLEEP) - StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - if (gBattleMons[bank].status1 & STATUS_BURN) - StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - if (gBattleMons[bank].status1 & STATUS_FREEZE) - StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - gBattleMons[bank].status1 = 0; - // BUG: The nightmare status does not get cleared here. This was fixed in Emerald. - //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - BATTLE_STRUCT->scriptingActive = gActiveBank = bank; - b_push_move_exec(BattleScript_ShedSkinActivates); - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); - MarkBufferBankForExecution(gActiveBank); - effect++; - } - break; - case ABILITY_SPEED_BOOST: - if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2) - { - gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; - BATTLE_STRUCT->animArg1 = 0x11; - BATTLE_STRUCT->animArg2 = 0; - b_push_move_exec(BattleScript_SpeedBoostActivates); - BATTLE_STRUCT->scriptingActive = bank; - effect++; - } - break; - case ABILITY_TRUANT: - gDisableStructs[gBankAttacker].truantCounter ^= 1; - break; - } - } - break; - case ABILITYEFFECT_MOVES_BLOCK: // 2 - //_08018A40 - if (gLastUsedAbility == ABILITY_SOUNDPROOF) - { - for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) - { - if (gSoundMovesTable[i] == move) - break; - } - if (gSoundMovesTable[i] != 0xFFFF) - { - if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS) - gHitMarker |= HITMARKER_NO_PPDEDUCT; - gBattlescriptCurrInstr = BattleScript_SoundproofProtected; - effect = 1; - } - } - break; - case ABILITYEFFECT_ABSORBING: // 3 - //_08018AD8 - if (move) - { - switch (gLastUsedAbility) - { - case ABILITY_VOLT_ABSORB: - if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0) - { - if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = BattleScript_MoveHPDrain; - else - gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; - effect = 1; - } - break; - case ABILITY_WATER_ABSORB: - if (moveType == TYPE_WATER && gBattleMoves[move].power != 0) - { - if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = BattleScript_MoveHPDrain; - else - gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; - effect = 1; - } - break; - case ABILITY_FLASH_FIRE: - if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) - { - if (!(eFlashFireArr.arr[bank] & 1)) - { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = BattleScript_FlashFireBoost; - else - gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; - eFlashFireArr.arr[bank] |= 1; - effect = 2; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - if (gProtectStructs[gBankAttacker].notFirstStrike) - gBattlescriptCurrInstr = BattleScript_FlashFireBoost; - else - gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; - effect = 2; - } - } - break; - } - if (effect == 1) - { - if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) - { - if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = BattleScript_MoveHPDrain_FullHP; - else - gBattlescriptCurrInstr = BattleScript_MoveHPDrain_FullHP_PPLoss; - } - else - { - gBattleMoveDamage = gBattleMons[bank].maxHP / 4; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - gBattleMoveDamage *= -1; - } - } - } - break; - case ABILITYEFFECT_CONTACT: // 4 - //_08018CF0 - switch (gLastUsedAbility) - { - case ABILITY_COLOR_CHANGE: - //_08018DCC - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && move != MOVE_STRUGGLE - && gBattleMoves[move].power != 0 - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && gBattleMons[bank].type1 != moveType - && gBattleMons[bank].type2 != moveType - && gBattleMons[bank].hp != 0) - { - gBattleMons[bank].type1 = moveType; - gBattleMons[bank].type2 = moveType; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 3; - gBattleTextBuff1[2] = moveType; - gBattleTextBuff1[3] = 0xFF; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; - effect++; - } - break; - case ABILITY_ROUGH_SKIN: - //_08018E94 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) - { - gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; - effect++; - } - break; - case ABILITY_EFFECT_SPORE: - //_08018F54 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (Random() % 10) == 0) - { - do - { - gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; - } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); - if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) - gBattleCommunication[MOVE_EFFECT_BYTE] += 2; - gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } - break; - case ABILITY_POISON_POINT: - //_0801904C - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (Random() % 3) == 0) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } - break; - case ABILITY_STATIC: - //_08019128 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (Random() % 3) == 0) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } - break; - case ABILITY_FLAME_BODY: - //_08019204 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (Random() % 3) == 0) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } - break; - case ABILITY_CUTE_CHARM: - //_080192E0 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && gBattleMons[gBankTarget].hp != 0 - && (Random() % 3) == 0 - && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) - && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF - && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) - { - gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; - effect++; - } - break; - } - break; - case ABILITYEFFECT_IMMUNITY: // 5 - //_08019448 - { - for (bank = 0; bank < gNoOfAllBanks; bank++) - { - switch (gBattleMons[bank].ability) - { - case ABILITY_IMMUNITY: - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? - { - StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - effect = 1; - } - break; - case ABILITY_OWN_TEMPO: - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - effect = 2; - } - break; - case ABILITY_LIMBER: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - effect = 1; - } - break; - case ABILITY_INSOMNIA: - case ABILITY_VITAL_SPIRIT: - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - effect = 1; - } - break; - case ABILITY_WATER_VEIL: - if (gBattleMons[bank].status1 & STATUS_BURN) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - effect = 1; - } - break; - case ABILITY_MAGMA_ARMOR: - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - effect = 1; - } - break; - case ABILITY_OBLIVIOUS: - if (gBattleMons[bank].status2 & STATUS2_INFATUATION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - effect = 3; - } - break; - } - if (effect) - { - switch (effect) - { - case 1: // status cleared - gBattleMons[bank].status1 = 0; - break; - case 2: // get rid of confusion - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - break; - case 3: // get rid of infatuation - gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); - break; - } - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; - BATTLE_STRUCT->scriptingActive = bank; - gActiveBank = bank; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - return effect; - } - } - } - break; - case ABILITYEFFECT_FORECAST: // 6 - //_080197B4 - { - for (bank = 0; bank < gNoOfAllBanks; bank++) - { - if (gBattleMons[bank].ability == ABILITY_FORECAST) - { - effect = CastformDataTypeChange(bank); - if (effect) - { - b_push_move_exec(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = bank; - BATTLE_STRUCT->castformToChangeInto = effect - 1; - return effect; - } - } - } - } - break; - case ABILITYEFFECT_SYNCHRONIZE: // 7 - //_08019804 - if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) - { - gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); - BATTLE_STRUCT->synchroniseEffect &= 0x3F; - if (BATTLE_STRUCT->synchroniseEffect == 6) - BATTLE_STRUCT->synchroniseEffect = 2; - gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40; - BATTLE_STRUCT->scriptingActive = gBankTarget; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } - break; - case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 - //_08019880 - if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) - { - gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); - BATTLE_STRUCT->synchroniseEffect &= 0x3F; - if (BATTLE_STRUCT->synchroniseEffect == 6) - BATTLE_STRUCT->synchroniseEffect = 2; - gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect; - BATTLE_STRUCT->scriptingActive = gBankAttacker; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } - break; - case ABILITYEFFECT_INTIMIDATE1: // 9 - //_080198FC - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) - { - gLastUsedAbility = ABILITY_INTIMIDATE; - gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - b_push_move_exec(gUnknown_081D978C); - BATTLE_STRUCT->intimidateBank = i; - effect++; - break; - } - } - break; - case ABILITYEFFECT_TRACE: // 11 - //_08019940 - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) - { - u8 target2; - side = (GetBankIdentity(i) ^ 1) & 1; - target1 = GetBankByIdentity(side); - target2 = GetBankByIdentity(side + 2); - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 - && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) - { - //_080199AE - gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side); - gBattleMons[i].ability = gBattleMons[gActiveBank].ability; - gLastUsedAbility = gBattleMons[gActiveBank].ability; - effect++; - } - else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) - { - //_08019A34 - gActiveBank = target1; - gBattleMons[i].ability = gBattleMons[gActiveBank].ability; - gLastUsedAbility = gBattleMons[gActiveBank].ability; - effect++; - } - else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) - { - //_08019A78 - gActiveBank = target2; - gBattleMons[i].ability = gBattleMons[gActiveBank].ability; - gLastUsedAbility = gBattleMons[gActiveBank].ability; - effect++; - } - } - else - //_08019ABC - { - gActiveBank = target1; - if (gBattleMons[target1].ability && gBattleMons[target1].hp) - { - gBattleMons[i].ability = gBattleMons[target1].ability; - gLastUsedAbility = gBattleMons[target1].ability; - effect++; - } - } - if (effect) - { - b_push_move_exec(BattleScript_TraceActivates); - gStatuses3[i] &= ~(STATUS3_TRACE); - BATTLE_STRUCT->scriptingActive = i; - - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = gActiveBank; - gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; - gBattleTextBuff1[4] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 9; - gBattleTextBuff2[2] = gLastUsedAbility; - gBattleTextBuff2[3] = EOS; - break; - } - } - } - break; - case ABILITYEFFECT_INTIMIDATE2: // 10 - //_08019B1C - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) - { - gLastUsedAbility = ABILITY_INTIMIDATE; - gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = gUnknown_081D9795; - BATTLE_STRUCT->intimidateBank = i; - effect++; - break; - } - } - break; - case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 - //_08019B60 - side = GetBankSide(bank); - for (i = 0; i < gNoOfAllBanks; i++) - { - if (GetBankSide(i) != side && gBattleMons[i].ability == ability) - { - gLastUsedAbility = ability; - effect = i + 1; - } - } - break; - case ABILITYEFFECT_CHECK_BANK_SIDE: // 13 - //_08019BBC - side = GetBankSide(bank); - for (i = 0; i < gNoOfAllBanks; i++) - { - if (GetBankSide(i) == side && gBattleMons[i].ability == ability) - { - gLastUsedAbility = ability; - effect = i + 1; - } - } - break; - case ABILITYEFFECT_FIELD_SPORT: // 14 - //_08019C18 - switch (gLastUsedAbility) - { - case 0xFD: - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gStatuses3[i] & STATUS3_MUDSPORT) - effect = i + 1; - } - break; - case 0xFE: - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gStatuses3[i] & STATUS3_WATERSPORT) - effect = i + 1; - } - break; - default: - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ability) - { - gLastUsedAbility = ability; - effect = i + 1; - } - } - break; - } - break; - case ABILITYEFFECT_CHECK_ON_FIELD: // 19 - //_08019CD4 - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) - { - gLastUsedAbility = ability; - effect = i + 1; - } - } - break; - case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15 - //_08019D18 - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ability && i != bank) - { - gLastUsedAbility = ability; - effect = i + 1; - } - } - break; - case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16 - //_08019D5C - side = GetBankSide(bank); - for (i = 0; i < gNoOfAllBanks; i++) - { - if (GetBankSide(i) != side && gBattleMons[i].ability == ability) - { - gLastUsedAbility = ability; - effect++; - } - } - break; - case ABILITYEFFECT_COUNT_BANK_SIDE: // 17 - //_08019DB8 - side = GetBankSide(bank); - for (i = 0; i < gNoOfAllBanks; i++) - { - if (GetBankSide(i) == side && gBattleMons[i].ability == ability) - { - gLastUsedAbility = ability; - effect++; - } - } - break; - case ABILITYEFFECT_COUNT_ON_FIELD: // 18 - //_08019F44 - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].ability == ability && i != bank) - { - gLastUsedAbility = ability; - effect++; - } - } - break; - } - //_08019F76 - if (effect && caseID < 0xC && gLastUsedAbility != 0xFF) - RecordAbilityBattle(bank, gLastUsedAbility); - } - - return effect; -} - -void b_call_bc_move_exec(u8* BS_ptr) -{ - gBattlescriptCurrInstr = BS_ptr; - B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; - gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack; - gCurrentActionFuncId = 0; -} - -void b_push_move_exec(u8* BS_ptr) -{ - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BS_ptr; - B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; - gBattleMainFunc = RunBattleScriptCommands; -} - -enum -{ - ITEM_NO_EFFECT, // 0 - ITEM_STATUS_CHANGE, // 1 - ITEM_EFFECT_OTHER, // 2 - ITEM_PP_CHANGE, // 3 - ITEM_HP_CHANGE, // 4 - ITEM_STATS_CHANGE, // 5 -}; - -enum -{ - FLAVOR_SPICY, // 0 - FLAVOR_DRY, // 1 - FLAVOR_SWEET, // 2 - FLAVOR_BITTER, // 3 - FLAVOR_SOUR, // 4 -}; - -u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) -{ - int i = 0; - u8 effect = ITEM_NO_EFFECT; - u8 changedPP = 0; - u8 bankHoldEffect, atkHoldEffect, defHoldEffect; - u8 bankQuality, atkQuality, defQuality; - u16 atkItem, defItem; - - gLastUsedItem = gBattleMons[bank].item; - if (gLastUsedItem == ITEM_ENIGMA_BERRY) - { - bankHoldEffect = gEnigmaBerries[bank].holdEffect; - bankQuality = gEnigmaBerries[bank].holdEffectParam; - } - else - { - bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); - bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); - } - - atkItem = gBattleMons[gBankAttacker].item; - if (atkItem == ITEM_ENIGMA_BERRY) - { - atkHoldEffect = gEnigmaBerries[gBankAttacker].holdEffect; - atkQuality = gEnigmaBerries[gBankAttacker].holdEffectParam; - } - else - { - atkHoldEffect = ItemId_GetHoldEffect(atkItem); - atkQuality = ItemId_GetHoldEffectParam(atkItem); - } - - // def variables are unused - defItem = gBattleMons[gBankTarget].item; - if (defItem == ITEM_ENIGMA_BERRY) - { - defHoldEffect = gEnigmaBerries[gBankTarget].holdEffect; - defQuality = gEnigmaBerries[gBankTarget].holdEffectParam; - } - else - { - defHoldEffect = ItemId_GetHoldEffect(defItem); - defQuality = ItemId_GetHoldEffectParam(defItem); - } - - switch (caseID) - { - case 0: - switch (bankHoldEffect) - { - case HOLD_EFFECT_DOUBLE_PRIZE: - BATTLE_STRUCT->moneyMultiplier = 2; - break; - case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) - { - if (gBattleMons[bank].statStages[i] < 6) - { - gBattleMons[bank].statStages[i] = 6; - effect = ITEM_STATS_CHANGE; - } - } - if (effect) - { - BATTLE_STRUCT->scriptingActive = bank; - gStringBank = bank; - gActiveBank = gBankAttacker = bank; - b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); - } - break; - } - break; - case 1: - if (gBattleMons[bank].hp) - { - switch (bankHoldEffect) - { - case HOLD_EFFECT_RESTORE_HP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) - { - gBattleMoveDamage = bankQuality; - if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); - effect = 4; - } - break; - case HOLD_EFFECT_RESTORE_PP: - if (!moveTurn) - { - struct Pokemon* poke; - u8 ppBonuses; - u16 move; - - if (GetBankSide(bank) == 0) - poke = &gPlayerParty[gBattlePartyID[bank]]; - else - poke = &gEnemyParty[gBattlePartyID[bank]]; - for (i = 0; i < 4; i++) - { - move = GetMonData(poke, MON_DATA_MOVE1 + i); - changedPP = GetMonData(poke, MON_DATA_PP1 + i); - ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); - if (move && changedPP == 0) - break; - } - if (i != 4) - { - u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i); - if (changedPP + bankQuality > maxPP) - changedPP = maxPP; - else - changedPP = changedPP + bankQuality; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = move; - gBattleTextBuff1[3] = move >> 8; - gBattleTextBuff1[4] = 0xFF; - b_call_bc_move_exec(BattleScript_BerryPPHealEnd2); - EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); - MarkBufferBankForExecution(gActiveBank); - effect = ITEM_PP_CHANGE; - } - } - break; - case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) - { - if (gBattleMons[bank].statStages[i] < 6) - { - gBattleMons[bank].statStages[i] = 6; - effect = ITEM_STATS_CHANGE; - } - } - if (effect) - { - BATTLE_STRUCT->scriptingActive = bank; - gStringBank = bank; - gActiveBank = gBankAttacker = bank; - b_call_bc_move_exec(BattleScript_WhiteHerbEnd2); - } - break; - case HOLD_EFFECT_LEFTOVERS: - if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn) - { - gBattleMoveDamage = gBattleMons[bank].maxHP / 16; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - b_call_bc_move_exec(BattleScript_ItemHealHP_End2); - effect = ITEM_HP_CHANGE; - RecordItemBattle(bank, bankHoldEffect); - } - break; - // nice copy/paste there gamefreak, making a function for confuse berries was too much eh? - case HOLD_EFFECT_CONFUSE_SPICY: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SPICY; - gBattleTextBuff1[3] = EOS; - gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); - else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } - break; - case HOLD_EFFECT_CONFUSE_DRY: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_DRY; - gBattleTextBuff1[3] = EOS; - gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_DRY) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); - else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } - break; - case HOLD_EFFECT_CONFUSE_SWEET: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SWEET; - gBattleTextBuff1[3] = EOS; - gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); - else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } - break; - case HOLD_EFFECT_CONFUSE_BITTER: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_BITTER; - gBattleTextBuff1[3] = EOS; - gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); - else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } - break; - case HOLD_EFFECT_CONFUSE_SOUR: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SOUR; - gBattleTextBuff1[3] = EOS; - gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) - gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; - gBattleMoveDamage *= -1; - if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) - b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2); - else - b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } - break; - // copy/paste again, smh - case HOLD_EFFECT_ATTACK_UP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_ATK; - gBattleTextBuff1[3] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD2; - gBattleTextBuff2[3] = 0xD2 >> 8; - gBattleTextBuff2[4] = EOS; - - gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK; - BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } - break; - case HOLD_EFFECT_DEFENSE_UP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_DEF; - gBattleTextBuff1[3] = EOS; - - gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF; - BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } - break; - case HOLD_EFFECT_SPEED_UP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPEED; - gBattleTextBuff1[3] = EOS; - - gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED; - BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } - break; - case HOLD_EFFECT_SP_ATTACK_UP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPATK; - gBattleTextBuff1[3] = EOS; - - gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK; - BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } - break; - case HOLD_EFFECT_SP_DEFENSE_UP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) - { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPDEF; - gBattleTextBuff1[3] = EOS; - - gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF; - BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } - break; - case HOLD_EFFECT_CRITICAL_UP: - if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY)) - { - gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY; - b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2); - effect = ITEM_EFFECT_OTHER; - } - break; - case HOLD_EFFECT_RANDOM_STAT_UP: - if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality) - { - for (i = 0; i < 5; i++) - { - if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC) - break; - } - if (i != 5) - { - do - { - i = Random() % 5; - } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); - - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = i + 1; - gBattleTextBuff1[3] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD1; - gBattleTextBuff2[3] = 0xD1 >> 8; - gBattleTextBuff2[4] = 0; - gBattleTextBuff2[5] = 0xD2; - gBattleTextBuff2[6] = 0xD2 >> 8; - gBattleTextBuff2[7] = EOS; - - gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x21 + i; - BATTLE_STRUCT->animArg1 = 0x21 + i + 6; - BATTLE_STRUCT->animArg2 = 0; - b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } - } - break; - case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); - b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2); - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) - { - gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); - b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2); - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[bank].status1 & STATUS_BURN) - { - gBattleMons[bank].status1 &= ~(STATUS_BURN); - b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2); - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - gBattleMons[bank].status1 &= ~(STATUS_FREEZE); - b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2); - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status1 &= ~(STATUS_SLEEP); - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2); - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_CONFUSION: - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2); - effect = ITEM_EFFECT_OTHER; - } - break; - case HOLD_EFFECT_CURE_STATUS: - if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - i = 0; - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - i++; - } - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - i++; - } - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - i++; - } - if (gBattleMons[bank].status1 & STATUS_BURN) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - i++; - } - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - i++; - } - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - i++; - } - if (!(i > 1)) - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - else - gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattleMons[bank].status1 = 0; - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_call_bc_move_exec(BattleScript_BerryCureChosenStatusEnd2); - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_ATTRACT: - if (gBattleMons[bank].status2 & STATUS2_INFATUATION) - { - gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); - StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - b_call_bc_move_exec(BattleScript_BerryCureChosenStatusEnd2); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - effect = ITEM_EFFECT_OTHER; - } - break; - } - if (effect) - { - BATTLE_STRUCT->scriptingActive = bank; - gStringBank = bank; - gActiveBank = gBankAttacker = bank; - switch (effect) - { - case ITEM_STATUS_CHANGE: - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); - MarkBufferBankForExecution(gActiveBank); - break; - case ITEM_PP_CHANGE: - if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i])) - gBattleMons[bank].pp[i] = changedPP; - break; - } - } - } - break; - case 2: - break; - case 3: - for (bank = 0; bank < gNoOfAllBanks; bank++) - { - gLastUsedItem = gBattleMons[bank].item; - if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) - { - bankHoldEffect = gEnigmaBerries[bank].holdEffect; - bankQuality = gEnigmaBerries[bank].holdEffectParam; - } - else - { - bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); - bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); - } - switch (bankHoldEffect) - { - case HOLD_EFFECT_CURE_PAR: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureParRet; - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_PSN: - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) - { - gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_BRN: - if (gBattleMons[bank].status1 & STATUS_BURN) - { - gBattleMons[bank].status1 &= ~(STATUS_BURN); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_FRZ: - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - gBattleMons[bank].status1 &= ~(STATUS_FREEZE); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_SLP: - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status1 &= ~(STATUS_SLEEP); - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_CURE_CONFUSION: - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; - effect = ITEM_EFFECT_OTHER; - } - break; - case HOLD_EFFECT_CURE_ATTRACT: - if (gBattleMons[bank].status2 & STATUS2_INFATUATION) - { - gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); - StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - b_movescr_stack_push_cursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; - effect = ITEM_EFFECT_OTHER; - } - break; - case HOLD_EFFECT_CURE_STATUS: - if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - if (gBattleMons[bank].status1 & STATUS_PSN_ANY) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - } - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - } - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - } - if (gBattleMons[bank].status1 & STATUS_BURN) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - } - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - } - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - } - gBattleMons[bank].status1 = 0; - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - b_movescr_stack_push_cursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; - gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; - effect = ITEM_STATUS_CHANGE; - } - break; - case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) - { - if (gBattleMons[bank].statStages[i] < 6) - { - gBattleMons[bank].statStages[i] = 6; - effect = ITEM_STATS_CHANGE; - } - } - if (effect) - { - BATTLE_STRUCT->scriptingActive = bank; - gStringBank = bank; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; - return effect; // unnecessary return - } - break; - } - if (effect) - { - BATTLE_STRUCT->scriptingActive = bank; - gStringBank = bank; - gActiveBank = bank; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - break; - } - } - break; - case 4: - if (gBattleMoveDamage) - { - switch (atkHoldEffect) - { - case HOLD_EFFECT_FLINCH: - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (Random() % 100) < bankQuality - && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED - && gBattleMons[gBankTarget].hp) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 8; - b_movescr_stack_push_cursor(); - SetMoveEffect(0, 0); - b_movescr_stack_pop_cursor(); - } - break; - case HOLD_EFFECT_SHELL_BELL: - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gSpecialStatuses[gBankTarget].moveturnLostHP != 0 - && gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF - && gBankAttacker != gBankTarget - && gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP - && gBattleMons[gBankAttacker].hp != 0) - { - gLastUsedItem = atkItem; - gStringBank = gBankAttacker; - BATTLE_STRUCT->scriptingActive = gBankAttacker; - gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = -1; - gSpecialStatuses[gBankTarget].moveturnLostHP = 0; - b_movescr_stack_push_cursor(); - gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; - effect++; - } - break; - } - } - break; - } - - return effect; -} - -struct CombinedMove -{ - u16 move1; - u16 move2; - u16 newMove; -}; - -static const struct CombinedMove sCombinedMoves[2] = -{ - {MOVE_EMBER, MOVE_GUST, MOVE_HEAT_WAVE}, - {0xFFFF, 0xFFFF, 0xFFFF} -}; - -void unref_sub_801B40C(void) -{ - int i = 0; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - { - do - { - u8 bank = 0; - do - { - u8 absent = gAbsentBankFlags; - if (gBitTable[bank] & absent || absent & gBitTable[bank + 2]) - bank++; - else - { - if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2]) - { - gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4); - gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; - gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; - } - if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) - { - gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4); - gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; - gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; - } - bank++; - } - } while (bank < 2); - i++; - } while (sCombinedMoves[i].move1 != 0xFFFF); - } -} - -void sub_801B594(void) -{ - if (gBattleExecBuffer == 0) - gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); -} - -u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target -{ - u8 targetBank = 0; - u8 moveTarget; - u8 side; - - if (useMoveTarget) - moveTarget = useMoveTarget - 1; - else - moveTarget = gBattleMoves[move].target; - - switch (moveTarget) - { - case 0: - side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) - targetBank = gSideTimers[side].followmeTarget; - else - { - side = GetBankSide(gBankAttacker); - do - { - targetBank = Random() % gNoOfAllBanks; - } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]); - if (gBattleMoves[move].type == TYPE_ELECTRIC - && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) - && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) - { - targetBank ^= 2; - RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability); - gSpecialStatuses[targetBank].lightningRodRedirected = 1; - } - } - break; - case 1: - case 8: - case 32: - case 64: - targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); - if (gAbsentBankFlags & gBitTable[targetBank]) - targetBank ^= 2; - break; - case 4: - side = GetBankSide(gBankAttacker) ^ 1; - if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) - targetBank = gSideTimers[side].followmeTarget; - else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4) - { - if (GetBankSide(gBankAttacker) == 0) - { - if (Random() & 1) - targetBank = GetBankByIdentity(1); - else - targetBank = GetBankByIdentity(3); - } - else - { - if (Random() & 1) - targetBank = GetBankByIdentity(0); - else - targetBank = GetBankByIdentity(2); - } - if (gAbsentBankFlags & gBitTable[targetBank]) - targetBank ^= 2; - } - else - targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); - break; - case 2: - case 16: - targetBank = gBankAttacker; - break; - } - ewram16010arr(gBankAttacker) = targetBank; - return targetBank; -} - -u8 IsPokeDisobedient(void) -{ - u8 obedienceLevel; - s32 rnd; - s32 calc; - - if (gBattleTypeFlags & BATTLE_TYPE_LINK - || GetBankSide(gBankAttacker) == 1 - || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) - || FlagGet(FLAG_BADGE08_GET)) - return 0; - - obedienceLevel = 10; - if (FlagGet(FLAG_BADGE02_GET)) - obedienceLevel = 30; - if (FlagGet(FLAG_BADGE04_GET)) - obedienceLevel = 50; - if (FlagGet(FLAG_BADGE06_GET)) - obedienceLevel = 70; - - if (gBattleMons[gBankAttacker].level <= obedienceLevel) - return 0; - rnd = (Random() & 255); - calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; - if (calc < obedienceLevel) - return 0; - - // is not obedient - if (gCurrentMove == MOVE_RAGE) - gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE); - if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) - { - gBattlescriptCurrInstr = gUnknown_081D995F; - return 1; - } - - rnd = (Random() & 255); - calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; - if (calc < obedienceLevel) - { - calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF); - if (calc == 0xF) // all moves cannot be used - { - gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; - gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; - return 1; - } - else // use a random move - { - do - { - gCurrMovePos = gUnknown_02024BE5 = Random() & 3; - } while (gBitTable[gCurrMovePos] & calc); - gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; - gBattleCommunication[3] = 0; - gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; - gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; - gBankTarget = GetMoveTarget(gRandomMove, 0); - gHitMarker |= HITMARKER_x200000; - return 2; - } - } - else - { - obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel; - - calc = (Random() & 255); - if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA) - { - // try putting asleep - int i; - for (i = 0; i < gNoOfAllBanks; i++) - { - if (gBattleMons[i].status2 & STATUS2_UPROAR) - break; - } - if (i == gNoOfAllBanks) - { - gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep; - return 1; - } - } - calc -= obedienceLevel; - if (calc < obedienceLevel) - { - gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); - gBankTarget = gBankAttacker; - gBattlescriptCurrInstr = gUnknown_081D99A0; - gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - return 2; - } - else - { - gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; - gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; - return 1; - } - } -} diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 3b1092e45..5a20a8324 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "battle_util.h" #include "constants/battle_move_effects.h" #include "constants/moves.h" #include "constants/abilities.h" @@ -101,11 +102,10 @@ extern u16 gTrappingMoves[]; u8 AtkCanceller_UnableToUseMove(void); void PressurePPLose(u8 bank_atk, u8 bank_def, u16 move); void CancelMultiTurnMoves(u8 bank); -void b_movescr_stack_push(u8* BS_ptr); -void b_movescr_stack_push_cursor(void); +void BattleScriptPush(u8* BS_ptr); +void BattleScriptPushCursor(void); void RecordAbilityBattle(u8 bank, u8 ability); void RecordItemBattle(u8 bank, u8 holdEffect); -int IsPokeDisobedient(void); static bool8 IsTwoTurnsMove(u16 move); static void DestinyBondFlagUpdate(void); static void b_wonderguard_and_levitate(void); @@ -122,7 +122,7 @@ extern u8 gBattleBufferB[4][0x200]; void sub_80324F8(struct Pokemon*, u8 bank); void AdjustFriendship(struct Pokemon*, u8 value); bool8 IsTradedMon(struct Pokemon*); -void b_movescr_stack_pop_cursor(void); +void BattleScriptPop(void); void SwitchInClearStructs(void); u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8); u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); @@ -131,7 +131,6 @@ u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); u8 GetBankByIdentity(u8 ID); void sub_8012258(u8); -void sub_80157C4(u8 bank); //update sent pokes in battle //MonTryLearningNewMove teach poke a move u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); void IncrementGameStat(u8 index); @@ -147,21 +146,17 @@ void nullsub_6(void); void ReshowBattleScreenAfterMenu(void); void BattleMainCB2(void); void AddMoney(u32* moneySaveblock, u32 to_give); -void sub_80156DC(void); //set sentpokes value u8 CountAliveMons(u8 caseID); void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); u8 CanRunFromBattle(void); u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move -void sub_80153D0(u8 atk); //pressure perish song pp decrement u8 CastformDataTypeChange(u8 bank); -void b_push_move_exec(u8* bs_ptr); u8 Overworld_GetMapTypeOfSaveblockLocation(void); u8 CalculatePlayerPartyCount(void); u16 Sqrt(u32 num); u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display void sub_814A880(u8 a1, u8 a2); u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags); -void sub_801529C(u8 bank); bool8 IsLinkDoubleBattle(void); void sub_8094B6C(u8 bank, u8 partyID, u8 r2); @@ -1050,7 +1045,7 @@ static void atk00_attackcanceler(void) gHitMarker &= ~(HITMARKER_x800000); if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) { - u8 disobedient = IsPokeDisobedient(); + u8 disobedient = IsMonDisobedient(); asm("":::"r0"); //It's impossible to match asm("":::"r1"); if ((disobedient)) @@ -1067,7 +1062,7 @@ static void atk00_attackcanceler(void) { PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT); gProtectStructs[gBankTarget].bounceMove = 0; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; return; } @@ -1078,7 +1073,7 @@ static void atk00_attackcanceler(void) PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0; BATTLE_STRUCT->scriptingActive = gBanksByTurnOrder[i]; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; } @@ -1087,7 +1082,7 @@ static void atk00_attackcanceler(void) { gSpecialStatuses[gBankTarget].lightningRodRedirected = 0; gLastUsedAbility = ABILITY_LIGHTNING_ROD; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_TookAttack; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1325,7 +1320,7 @@ static void atk03_ppreduce(void) && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos])) { gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]); MarkBufferBankForExecution(gBankAttacker); } } @@ -1844,7 +1839,7 @@ static void atk09_attackanimation(void) if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; BATTLE_STRUCT->animTurn += 1; BATTLE_STRUCT->animTargetsHit += 1; @@ -1868,7 +1863,7 @@ static void atk09_attackanimation(void) } else { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; } } @@ -1947,7 +1942,7 @@ static void atk0C_datahpupdate(void) if (gDisableStructs[gActiveBank].substituteHP == 0) { gBattlescriptCurrInstr += 2; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SubstituteFade; return; } @@ -2023,7 +2018,7 @@ static void atk0C_datahpupdate(void) } } gHitMarker &= ~(HITMARKER_x100000); - EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); MarkBufferBankForExecution(gActiveBank); } } @@ -2132,7 +2127,7 @@ static void atk0F_resultmessage(void) gLastUsedItem = gBattleMons[gBankTarget].item; gStringBank = gBankTarget; gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_HangedOnMsg; return; default: @@ -2144,14 +2139,14 @@ static void atk0F_resultmessage(void) gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO); gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE); gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_OneHitKOMsg; return; } else if (gBattleMoveFlags & MOVESTATUS_ENDURED) { gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_EnduredMsg; return; } @@ -2160,7 +2155,7 @@ static void atk0F_resultmessage(void) gLastUsedItem = gBattleMons[gBankTarget].item; gStringBank = gBankTarget; gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_HangedOnMsg; return; } @@ -2321,7 +2316,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { gLastUsedAbility = ABILITY_IMMUNITY; RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); //_0801E664: gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2336,7 +2331,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; @@ -2355,7 +2350,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { gLastUsedAbility = ABILITY_WATER_VEIL; RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); //_0801E664: gBattlescriptCurrInstr = BattleScript_BRNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2370,7 +2365,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_BRNPrevention; gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; @@ -2399,7 +2394,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { gLastUsedAbility = ABILITY_LIMBER; RecordAbilityBattle(gEffectBank, ABILITY_LIMBER); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); //_0801E664: gBattlescriptCurrInstr = BattleScript_PRLZPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2421,7 +2416,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { gLastUsedAbility = ABILITY_IMMUNITY; RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); //_0801E664: gBattlescriptCurrInstr = BattleScript_PSNPrevention; if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) @@ -2436,7 +2431,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL) && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80)) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PSNPrevention; gBattleCommunication[MULTISTRING_CHOOSER] = 2; return; @@ -2458,14 +2453,14 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } if (StatusChanged == 1) { - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); else gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gActiveBank = gEffectBank; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); MarkBufferBankForExecution(gActiveBank); if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD) { @@ -2499,7 +2494,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 8: //flinch @@ -2528,7 +2523,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS; gLockedMoves[gEffectBank] = gCurrentMove; gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 11: //pay day @@ -2539,7 +2534,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (PayDay > gPaydayMoney) gPaydayMoney = 0xFFFF; } - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 9: //tri attack @@ -2561,7 +2556,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) BATTLE_STRUCT->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; (1 + BATTLE_STRUCT->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. BATTLE_STRUCT->wrappedBy[gEffectBank] = gBankAttacker; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattleCommunication[MULTISTRING_CHOOSER] = 0; while (gBattleCommunication[MULTISTRING_CHOOSER] <= 4 @@ -2572,7 +2567,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleMoveDamage = (gHP_dealt) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 15 ... 21: //stat + 1 @@ -2581,7 +2576,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one BATTLE_STRUCT->animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatUp; } break; @@ -2591,7 +2586,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatDown; } break; @@ -2601,7 +2596,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatUp; } break; @@ -2611,7 +2606,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; BATTLE_STRUCT->animArg2 = 0; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatDown; } break; @@ -2634,7 +2629,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) {gBattlescriptCurrInstr++; return;} if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD) { - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_NoItemSteal; gLastUsedAbility = gBattleMons[gBankTarget].ability; RecordAbilityBattle(gBankTarget, gLastUsedAbility); @@ -2652,14 +2647,14 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleMons[gBankTarget].item = 0; gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem); MarkBufferBankForExecution(gBankAttacker); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item); MarkBufferBankForExecution(gBankTarget); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_ItemSteal; CHOICED_MOVE(gBankTarget) = 0; @@ -2675,11 +2670,11 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattlescriptCurrInstr++; break; case 34: //ancientpower - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_AllStatsUp; return; case 35: //break free rapidspin - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_RapidSpinAway; return; case 36: //paralysis removal @@ -2687,23 +2682,23 @@ void SetMoveEffect(bool8 primary, u8 certainArg) { gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); MarkBufferBankForExecution(gActiveBank); - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal; } else {gBattlescriptCurrInstr++; return;} break; case 37: //superpower - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_AtkDefDown; return; case 38: //33% recoil gBattleMoveDamage = gHP_dealt / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; break; case 53: //thrash @@ -2734,14 +2729,14 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gLastUsedItem = gBattleMons[gEffectBank].item; gBattleMons[gEffectBank].item = 0; gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]]; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_KnockedOff; CHOICED_MOVE(gEffectBank) = 0; } break; case 59: //overheat - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_SAtkDown2; return; } @@ -3065,7 +3060,7 @@ _0801E64A:\n\ ldr r4, _0801E67C @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801E680 @ =BattleScript_PSNPrevention\n\ _0801E664:\n\ str r0, [r4]\n\ @@ -3188,7 +3183,7 @@ _0801E72E:\n\ ldr r4, _0801E750 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801E754 @ =BattleScript_BRNPrevention\n\ b _0801E664\n\ .align 2, 0\n\ @@ -3228,7 +3223,7 @@ _0801E78E:\n\ ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention\n\ b _0801E998\n\ .align 2, 0\n\ @@ -3379,7 +3374,7 @@ _0801E8A6:\n\ ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention\n\ b _0801E664\n\ .align 2, 0\n\ @@ -3422,7 +3417,7 @@ _0801E8FE:\n\ ldr r4, _0801E93C @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801E940 @ =BattleScript_PSNPrevention\n\ str r0, [r4]\n\ ldr r2, _0801E944 @ =gHitMarker\n\ @@ -3483,7 +3478,7 @@ _0801E98C:\n\ ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801E9AC @ =BattleScript_PSNPrevention\n\ _0801E998:\n\ str r0, [r4]\n\ @@ -3556,7 +3551,7 @@ _0801EA1C:\n\ ldr r0, _0801EA5C @ =gBattlescriptCurrInstr\n\ ldr r0, [r0]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects\n\ ldr r0, _0801EA64 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ @@ -3621,7 +3616,7 @@ _0801EA84:\n\ movs r1, 0x28\n\ movs r2, 0\n\ movs r3, 0x4\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r4]\n\ bl MarkBufferBankForExecution\n\ ldr r2, _0801EAF0 @ =gHitMarker\n\ @@ -3814,7 +3809,7 @@ _0801EC8E:\n\ ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs\n\ ldr r0, _0801ECD0 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ @@ -3931,7 +3926,7 @@ _0801ED7C:\n\ ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs\n\ ldr r0, _0801EDD8 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ @@ -3977,7 +3972,7 @@ _0801EE14:\n\ ldr r4, _0801EE40 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs\n\ ldr r0, _0801EE48 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ @@ -4112,7 +4107,7 @@ _0801EEE8:\n\ ldr r4, _0801EF98 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs\n\ ldr r2, _0801EFA0 @ =gBattleCommunication\n\ ldrb r0, [r2, 0x3]\n\ @@ -4177,7 +4172,7 @@ _0801EFC0:\n\ ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs\n\ ldr r0, _0801EFE8 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ @@ -4219,7 +4214,7 @@ _0801F008:\n\ ldr r4, _0801F038 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F03C @ =BattleScript_StatUp\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4257,7 +4252,7 @@ _0801F05E:\n\ ldr r4, _0801F08C @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F090 @ =BattleScript_StatDown\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4294,7 +4289,7 @@ _0801F0B0:\n\ ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F0E4 @ =BattleScript_StatUp\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4332,7 +4327,7 @@ _0801F106:\n\ ldr r4, _0801F134 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F138 @ =BattleScript_StatDown\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4545,7 +4540,7 @@ _0801F2B6:\n\ movs r1, 0x2\n\ movs r2, 0\n\ movs r3, 0x2\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ mov r3, r10\n\ ldrb r0, [r3]\n\ bl MarkBufferBankForExecution\n\ @@ -4563,13 +4558,13 @@ _0801F2B6:\n\ movs r1, 0x2\n\ movs r2, 0\n\ movs r3, 0x2\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r7]\n\ bl MarkBufferBankForExecution\n\ ldr r4, _0801F350 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F354 @ =BattleScript_ItemSteal\n\ str r0, [r4]\n\ ldr r0, _0801F358 @ =0xfffe9f10\n\ @@ -4644,7 +4639,7 @@ _0801F3BC:\n\ ldr r4, _0801F3CC @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4654,7 +4649,7 @@ _0801F3D4:\n\ ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4690,13 +4685,13 @@ _0801F406:\n\ movs r1, 0x28\n\ movs r2, 0\n\ movs r3, 0x4\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r4]\n\ bl MarkBufferBankForExecution\n\ ldr r4, _0801F444 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4708,7 +4703,7 @@ _0801F44C:\n\ ldr r4, _0801F45C @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\ b _0801F5F8\n\ .align 2, 0\n\ @@ -4729,7 +4724,7 @@ _0801F47A:\n\ ldr r4, _0801F49C @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs\n\ ldr r0, _0801F4A4 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ @@ -4857,7 +4852,7 @@ _0801F540:\n\ ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F5CC @ =BattleScript_KnockedOff\n\ str r0, [r4]\n\ ldr r1, _0801F5D0 @ =gSharedMem\n\ @@ -4897,7 +4892,7 @@ _0801F5EC:\n\ ldr r4, _0801F60C @ =gBattlescriptCurrInstr\n\ ldr r0, [r4]\n\ adds r0, 0x1\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\ _0801F5F8:\n\ str r0, [r4]\n\ @@ -4977,7 +4972,7 @@ static void atk19_tryfaintmon(void) { r4 = T1_READ_PTR(gBattlescriptCurrInstr + 3); - b_movescr_stack_pop_cursor(); + BattleScriptPop(); gBattlescriptCurrInstr = r4; gSideAffecting[GetBankSide(gActiveBank)] &= ~SIDE_STATUS_SPIKES_DAMAGED; } @@ -5013,7 +5008,7 @@ static void atk19_tryfaintmon(void) ewram16100arr2(3, bank) = 0; gHitMarker |= HITMARKER_FAINTED(gActiveBank); - b_movescr_stack_push(gBattlescriptCurrInstr + 7); + BattleScriptPush(gBattlescriptCurrInstr + 7); gBattlescriptCurrInstr = r4; if (GetBankSide(gActiveBank) == 0) { @@ -5036,7 +5031,7 @@ static void atk19_tryfaintmon(void) } if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0) { - b_movescr_stack_push(gBattlescriptCurrInstr); + BattleScriptPush(gBattlescriptCurrInstr); gBattleMoveDamage = gBattleMons[bank].hp; gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife; } @@ -5049,10 +5044,10 @@ static void atk19_tryfaintmon(void) u8 moveIndex = ewram1608Carr(gBankAttacker); gBattleMons[gBankAttacker].pp[moveIndex] = 0; - b_movescr_stack_push(gBattlescriptCurrInstr); + BattleScriptPush(gBattlescriptCurrInstr); gBattlescriptCurrInstr = BattleScript_SelectingImprisionedMoveInPalace; gActiveBank = gBankAttacker; - EmitSetAttributes(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); + EmitSetMonData(0, moveIndex + 9, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]); MarkBufferBankForExecution(gActiveBank); gBattleTextBuff1[0] = 0xFD; @@ -5087,7 +5082,7 @@ static void atk1B_cleareffectsonfaint(void) { gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); gBattleMons[gActiveBank].status1 = 0; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); UndoEffectsAfterFainting(); gBattlescriptCurrInstr += 2; @@ -5476,7 +5471,7 @@ static void atk23_getexp(void) gBattleTextBuff2[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); gBattleTextBuff2[5] = 0xFF; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gLeveledUpInBattle |= gBitTable[BATTLE_STRUCT->expGetterID]; gBattlescriptCurrInstr = BattleScript_LevelUp; gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)); @@ -6353,7 +6348,7 @@ _080206A8:\n\ movs r0, 0x1\n\ negs r0, r0\n\ strb r0, [r4, 0x5]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r2, _080208D8 @ =gLeveledUpInBattle\n\ ldr r1, _080208DC @ =gBitTable\n\ ldrb r0, [r6]\n\ @@ -7282,7 +7277,7 @@ static void atk3B_healthbar_update(void) static void atk3C_return(void) { - b_movescr_stack_pop_cursor(); + BattleScriptPop(); } static void atk3D_end(void) @@ -7301,7 +7296,7 @@ static void atk3E_end2(void) static void atk3F_end3(void) //pops the main function stack { - b_movescr_stack_pop_cursor(); + BattleScriptPop(); if (B_FUNCTION_STACK->size) B_FUNCTION_STACK->size--; gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size]; @@ -7309,7 +7304,7 @@ static void atk3F_end3(void) //pops the main function stack static void atk41_call(void) { - b_movescr_stack_push(gBattlescriptCurrInstr + 5); + BattleScriptPush(gBattlescriptCurrInstr + 5); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } @@ -7353,7 +7348,7 @@ static void atk45_playanimation(void) } else if (gHitMarker & HITMARKER_NO_ANIMATIONS) { - b_movescr_stack_push(gBattlescriptCurrInstr + 7); + BattleScriptPush(gBattlescriptCurrInstr + 7); gBattlescriptCurrInstr = BattleScript_Pausex20; } else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES @@ -7829,7 +7824,7 @@ static void atk49_moveend(void) && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB) { gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_RageIsBuilding; effect = 1; } @@ -7843,9 +7838,9 @@ static void atk49_moveend(void) { gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE); gActiveBank = gBankTarget; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1); MarkBufferBankForExecution(gActiveBank); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; effect = 1; } @@ -7903,10 +7898,9 @@ static void atk49_moveend(void) } BATTLE_STRUCT->cmd49StateTracker++; break; - //sub_8015660 CheckIfMoveFailed case 9: //semi-invlurneable attacker make visible if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - || sub_8015660(gBankAttacker)) + || WasUnableToUseMove(gBankAttacker)) { gActiveBank = gBankAttacker; EmitSpriteInvisibility(0, 0); @@ -7918,7 +7912,7 @@ static void atk49_moveend(void) break; case 10: //semi-invlurneable target make visible if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) - || sub_8015660(gBankTarget)) + || WasUnableToUseMove(gBankTarget)) { gActiveBank = gBankTarget; EmitSpriteInvisibility(0, 0); @@ -8018,7 +8012,7 @@ _08021874:\n\ lsls r0, 2\n\ adds r0, r2\n\ ldr r0, [r0]\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r1, _080218B8 @ =gBattlescriptCurrInstr\n\ ldr r0, _080218BC @ =gUnknown_081D9B2D\n\ bl _0802229C\n\ @@ -8163,7 +8157,7 @@ _080219C8:\n\ bgt _080219FE\n\ adds r0, r2, 0x1\n\ strb r0, [r1, 0x19]\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, _08021A24 @ =gBattlescriptCurrInstr\n\ ldr r0, _08021A28 @ =BattleScript_RageIsBuilding\n\ str r0, [r1]\n\ @@ -8258,10 +8252,10 @@ _08021A92:\n\ movs r1, 0x28\n\ movs r2, 0\n\ movs r3, 0x4\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r4]\n\ bl MarkBufferBankForExecution\n\ - bl b_movescr_stack_push_cursor\n\ + bl BattleScriptPushCursor\n\ ldr r1, _08021AE8 @ =gBattlescriptCurrInstr\n\ ldr r0, _08021AEC @ =BattleScript_DefrostedViaFireMove\n\ str r0, [r1]\n\ @@ -8571,7 +8565,7 @@ _08021D18:\n\ cmp r0, 0\n\ beq _08021D44\n\ adds r0, r2, 0\n\ - bl sub_8015660\n\ + bl WasUnableToUseMove\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08021D7E\n\ @@ -10637,7 +10631,7 @@ static void atk52_switchineffects(void) gBattleMoveDamage = 1; BATTLE_STRUCT->scriptingActive = gActiveBank; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); if (T2_READ_8(gBattlescriptCurrInstr + 1) == 0) gBattlescriptCurrInstr = BattleScript_SpikesOnTarget; @@ -11457,7 +11451,7 @@ void atk6A_removeitem(void) USED_HELD_ITEMS(gActiveBank) = gBattleMons[gActiveBank].item; gBattleMons[gActiveBank].item = 0; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 2; } @@ -11900,7 +11894,7 @@ _08024C48: .4byte gBattlescriptCurrInstr\n\ static void atk6D_resetsentmonsvalue(void) { - sub_80156DC(); + ResetSentPokesToOpponentValue(); gBattlescriptCurrInstr++; } @@ -12148,7 +12142,7 @@ static void atk79_setatkhptozero(void) gActiveBank = gBankAttacker; gBattleMons[gActiveBank].hp = 0; - EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); + EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr++; @@ -12333,7 +12327,7 @@ static void atk81_trysetrest(void) gBattleCommunication[MULTISTRING_CHOOSER] = 0; gBattleMons[gBankTarget].status1 = 3; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 5; } @@ -12509,7 +12503,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) gBattlescriptCurrInstr = bs_ptr; else { - b_movescr_stack_push(bs_ptr); + BattleScriptPush(bs_ptr); BATTLE_STRUCT->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_MistProtected; gSpecialStatuses[gActiveBank].statloweringflag = 1; @@ -12530,7 +12524,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) gBattlescriptCurrInstr = bs_ptr; else { - b_movescr_stack_push(bs_ptr); + BattleScriptPush(bs_ptr); BATTLE_STRUCT->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; @@ -12544,7 +12538,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) { if (flags == 1) { - b_movescr_stack_push(bs_ptr); + BattleScriptPush(bs_ptr); BATTLE_STRUCT->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; @@ -12556,7 +12550,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) { if (flags == 1) { - b_movescr_stack_push(bs_ptr); + BattleScriptPush(bs_ptr); BATTLE_STRUCT->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; @@ -12774,7 +12768,7 @@ _08025F0C: .4byte gSpecialStatuses\n\ _08025F10: .4byte gBattlescriptCurrInstr\n\ _08025F14:\n\ mov r0, r8\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _08025F40 @ =gSharedMem\n\ ldr r6, _08025F44 @ =gActiveBank\n\ ldrb r1, [r6]\n\ @@ -12869,7 +12863,7 @@ _08025FD8: .4byte gSpecialStatuses\n\ _08025FDC: .4byte gBattlescriptCurrInstr\n\ _08025FE0:\n\ mov r0, r8\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _08026028 @ =gSharedMem\n\ ldr r2, _0802602C @ =gActiveBank\n\ ldrb r1, [r2]\n\ @@ -12926,7 +12920,7 @@ _08026040:\n\ cmp r5, 0x1\n\ bne _08025F74\n\ mov r0, r8\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _08026094 @ =gSharedMem\n\ ldr r3, _08026090 @ =gActiveBank\n\ ldrb r1, [r3]\n\ @@ -12974,7 +12968,7 @@ _080260A8:\n\ b _08025F74\n\ _080260CA:\n\ mov r0, r8\n\ - bl b_movescr_stack_push\n\ + bl BattleScriptPush\n\ ldr r0, _08026100 @ =gSharedMem\n\ ldr r3, _080260FC @ =gActiveBank\n\ ldrb r1, [r3]\n\ @@ -13470,7 +13464,7 @@ static void atk91_givepaydaymoney(void) gBattleTextBuff1[4] = gPaydayMoney; gBattleTextBuff1[5] = uBYTE1_16(gPaydayMoney); gBattleTextBuff1[6] = 0xFF; - b_movescr_stack_push(gBattlescriptCurrInstr + 1); + BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_PrintPayDayMoneyString; } else @@ -14766,7 +14760,7 @@ static void atkA8_copymovepermanently(void) moves_data.pp[i] = gBattleMons[gBankAttacker].pp[i]; } moves_data.ppBonuses = gBattleMons[gBankAttacker].ppBonuses; - EmitSetAttributes(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data); + EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data); MarkBufferBankForExecution(gActiveBank); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; @@ -14909,7 +14903,7 @@ static void atkAD_tryspiteppreduce(void) if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i]) && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) { - EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); MarkBufferBankForExecution(gActiveBank); } gBattlescriptCurrInstr += 5; @@ -14992,7 +14986,7 @@ static void atkAE_healpartystatus(void) } //missing check? gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr++; @@ -15052,7 +15046,7 @@ static void atkB2_trysetperishsong(void) } } - sub_80153D0(gBankAttacker); + PressurePPLoseOnUsingPerishSong(gBankAttacker); if (not_affected_pokes == gNoOfAllBanks) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); else @@ -15320,21 +15314,21 @@ static void atkBE_rapidspinfree(void) //rapid spin gBattleTextBuff1[2] = ewram16004arr(0, gBankAttacker); gBattleTextBuff1[3] = ewram16004arr(1, gBankAttacker); gBattleTextBuff1[4] = 0xFF; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_WrapFree; } else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED) { gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED); gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK); - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_LeechSeedFree; } else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES) { gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES); gSideTimers[GetBankSide(gBankAttacker)].spikesAmount = 0; - b_movescr_stack_push_cursor(); + BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SpikesFree; } else @@ -15952,7 +15946,7 @@ static void atkCC_callterrainattack(void) //nature power gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gCurrentMove = sNaturePowerMoves[gBattleTerrain]; gBankTarget = GetMoveTarget(gCurrentMove, 0); - b_movescr_stack_push(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); + BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); gBattlescriptCurrInstr++; } @@ -15963,7 +15957,7 @@ static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh gBattleMons[gBankAttacker].status1 = 0; gBattlescriptCurrInstr += 5; gActiveBank = gBankAttacker; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); } else @@ -16222,7 +16216,7 @@ _0802A36C:\n\ movs r1, 0x2\n\ movs r2, 0\n\ movs r3, 0x2\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldr r2, _0802A45C @ =gBankAttacker\n\ ldrb r0, [r2]\n\ bl MarkBufferBankForExecution\n\ @@ -16240,7 +16234,7 @@ _0802A36C:\n\ movs r1, 0x2\n\ movs r2, 0\n\ movs r3, 0x2\n\ - bl EmitSetAttributes\n\ + bl EmitSetMonData\n\ ldrb r0, [r7]\n\ bl MarkBufferBankForExecution\n\ ldr r0, _0802A464 @ =0xfffe9f10\n\ @@ -16471,7 +16465,7 @@ static void atkDB_tryimprision(void) else { u8 bank; - sub_801529C(gBankAttacker); + PressurePPLoseOnUsingImprision(gBankAttacker); for (bank = 0; bank < gNoOfAllBanks; bank++) { if (r8 != GetBankSide(bank)) @@ -16826,7 +16820,7 @@ static void atkE2_switchoutabilities(void) { case ABILITY_NATURAL_CURE: gBattleMons[gActiveBank].status1 = 0; - EmitSetAttributes(0, REQUEST_STATUS_BATTLE, gBitTable[ewram16064arr(gActiveBank)], 4, &gBattleMons[gActiveBank].status1); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[ewram16064arr(gActiveBank)], 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); break; } @@ -16922,7 +16916,7 @@ static void atkE7_trycastformdatachange(void) form = CastformDataTypeChange(BATTLE_STRUCT->scriptingActive); if (form) { - b_push_move_exec(BattleScript_CastformChange); + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); BATTLE_STRUCT->castformToChangeInto = form - 1; } } @@ -16984,7 +16978,7 @@ static void atkEA_tryrecycleitem(void) gLastUsedItem = *used_item; *used_item = 0; gBattleMons[gActiveBank].item = gLastUsedItem; - EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); + EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 5; } diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c new file mode 100644 index 000000000..9dc030a1a --- /dev/null +++ b/src/battle/battle_util.c @@ -0,0 +1,3479 @@ +#include "global.h" +#include "battle.h" +#include "battle_util.h" +#include "data2.h" +#include "event_data.h" +#include "ewram.h" +#include "item.h" +#include "link.h" +#include "pokemon.h" +#include "random.h" +#include "rom_8077ABC.h" +#include "string_util.h" +#include "text.h" +#include "util.h" +#include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/flags.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" +#include "constants/weather.h" + +extern u8* gBattlescriptCurrInstr; +extern u8 gActiveBank; +extern u8 gBattleBufferB[4][0x200]; +extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to +extern u16 gLastUsedMove[4]; +extern struct BattlePokemon gBattleMons[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gStringBank; +extern u16 gLastUsedItem; +extern u16 gCurrentMove; +extern const u32 gBitTable[]; +extern u16 gBattleTypeFlags; +extern u8 gNoOfAllBanks; +extern u32 gStatuses3[4]; +extern u8 gBankAttacker; +extern u8 gBankTarget; +extern u8 gBanksByTurnOrder[4]; +extern u16 gSideAffecting[2]; +extern u16 gBattleWeather; +extern void (*gBattleMainFunc)(void); +extern u8 gAbsentBankFlags; +extern u8 gBattleCommunication[]; +extern u32 gHitMarker; +extern u8 gEffectBank; +extern u8 gBank1; +extern s32 gBattleMoveDamage; +extern u16 gBattlePartyID[4]; +extern u16 gChosenMovesByBanks[4]; +extern s32 gTakenDmg[4]; +extern u8 gTakenDmgBanks[4]; +extern u8 gBattleMoveFlags; +extern u8 gLastUsedAbility; +extern u8 gBattleTextBuff2[]; +extern u8 gCurrentActionFuncId; +extern struct BattleEnigmaBerry gEnigmaBerries[4]; +extern u8 gUnknown_02024BE5; +extern u8 gCurrMovePos; +extern u16 gRandomMove; +extern s32 gBattleMoveDamage; +extern u16 gDynamicBasePower; +extern u32 gBattleExecBuffer; +extern u8 gSentPokesToOpponent[2]; +extern const u16 gSoundMovesTable[]; +extern const u8 gStatusConditionString_PoisonJpn[]; +extern const u8 gStatusConditionString_SleepJpn[]; +extern const u8 gStatusConditionString_ParalysisJpn[]; +extern const u8 gStatusConditionString_BurnJpn[]; +extern const u8 gStatusConditionString_IceJpn[]; +extern const u8 gStatusConditionString_ConfusionJpn[]; +extern const u8 gStatusConditionString_LoveJpn[]; +extern const BattleCmdFunc gBattleScriptingCommandsTable[]; + +u8 IsImprisoned(u8 bank, u16 move); +u8 GetBankByIdentity(u8 ID); +u8 GetBankIdentity(u8 bank); +u8 GetBankSide(u8 bank); +void SetMoveEffect(bool8 primary, u8 certainArg); +bool8 UproarWakeUpCheck(u8 bank); +bool8 sub_8018018(u8 bank, u8, u8); +s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); +u8 CountTrailingZeroBits(u32 a); +u8 GetMoveTarget(u16 move, u8 useMoveTarget); +u8 sub_803FC34(u8 bank); +u16 sub_803FBFC(u8 a); +u8 weather_get_current(void); +void RecordAbilityBattle(u8 bank, u8 ability); +void RecordItemBattle(u8 bank, u8 holdEffect); +s8 GetPokeFlavourRelation(u32 pid, u8 flavor); + +extern u8 BattleScript_MoveSelectionDisabledMove[]; +extern u8 BattleScript_MoveSelectionTormented[]; +extern u8 BattleScript_MoveSelectionTaunted[]; +extern u8 BattleScript_MoveSelectionImprisoned[]; +extern u8 BattleScript_MoveSelectionChoiceBanded[]; +extern u8 BattleScript_MoveSelectionNoPP[]; +extern u8 BattleScript_NoMovesLeft[]; +extern u8 BattleScript_WishComesTrue[]; +extern u8 BattleScript_IngrainTurnHeal[]; +extern u8 BattleScript_LeechSeedTurnDrain[]; +extern u8 BattleScript_PoisonTurnDmg[]; +extern u8 BattleScript_BurnTurnDmg[]; +extern u8 BattleScript_NightmareTurnDmg[]; +extern u8 BattleScript_CurseTurnDmg[]; +extern u8 BattleScript_WrapTurnDmg[]; +extern u8 BattleScript_WrapEnds[]; +extern u8 BattleScript_DisabledNoMore[]; +extern u8 BattleScript_EncoredNoMore[]; + +extern u8 BattleScript_SideStatusWoreOff[]; +extern u8 BattleScript_RainContinuesOrEnds[]; +extern u8 BattleScript_SandStormHailEnds[]; +extern u8 BattleScript_DamagingWeatherContinues[]; +extern u8 BattleScript_SunlightFaded[]; +extern u8 BattleScript_SunlightContinues[]; +extern u8 BattleScript_SafeguardEnds[]; +extern u8 BattleScript_MonWokeUpInUproar[]; //uproar wakeup BS +extern u8 BattleScript_PrintUproarOverTurns[]; //uproar BS +extern u8 BattleScript_ThrashConfuses[]; +extern u8 BattleScript_YawnMakesAsleep[]; +extern u8 BattleScript_MonTookFutureAttack[]; +extern u8 BattleScript_PerishSongHits[]; +extern u8 BattleScript_PerishSongTimerGoesDown[]; +extern u8 BattleScript_GiveExp[]; +extern u8 BattleScript_HandleFaintedMon[]; + +extern u8 BattleScript_MoveUsedIsAsleep[]; +extern u8 BattleScript_MoveUsedWokeUp[]; +extern u8 BattleScript_MoveUsedIsFrozen[]; +extern u8 BattleScript_MoveUsedUnfroze[]; +extern u8 BattleScript_MoveUsedLoafingAround[]; +extern u8 BattleScript_MoveUsedMustRecharge[]; +extern u8 BattleScript_MoveUsedFlinched[]; +extern u8 BattleScript_MoveUsedIsDisabled[]; +extern u8 BattleScript_MoveUsedIsTaunted[]; +extern u8 BattleScript_MoveUsedIsImprisoned[]; +extern u8 BattleScript_MoveUsedIsConfused[]; +extern u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern u8 BattleScript_MoveUsedIsParalyzed[]; +extern u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern u8 BattleScript_MoveUsedIsInLove[]; +extern u8 BattleScript_BideStoringEnergy[]; +extern u8 BattleScript_BideAttack[]; +extern u8 BattleScript_BideNoEnergyToAttack[]; + +extern u8 BattleScript_OverworldWeatherStarts[]; //load weather from overworld +extern u8 BattleScript_DrizzleActivates[]; +extern u8 BattleScript_SandstreamActivates[]; +extern u8 BattleScript_DroughtActivates[]; +extern u8 BattleScript_CastformChange[]; +extern u8 BattleScript_RainDishActivates[]; +extern u8 BattleScript_ShedSkinActivates[]; +extern u8 BattleScript_SpeedBoostActivates[]; +extern u8 BattleScript_SoundproofProtected[]; +extern u8 BattleScript_MoveHPDrain[]; +extern u8 BattleScript_MoveHPDrain_PPLoss[]; +extern u8 BattleScript_FlashFireBoost[]; +extern u8 BattleScript_FlashFireBoost_PPLoss[]; +extern u8 BattleScript_MoveHPDrain_FullHP[]; +extern u8 BattleScript_MoveHPDrain_FullHP_PPLoss[]; +extern u8 BattleScript_ColorChangeActivates[]; +extern u8 BattleScript_RoughSkinActivates[]; +extern u8 BattleScript_ApplySecondaryEffect[]; +extern u8 BattleScript_CuteCharmActivates[]; +extern u8 BattleScript_AbilityCuredStatus[]; //ability status clear +extern u8 BattleScript_SynchronizeActivates[]; +extern u8 gUnknown_081D978C[]; //intimidate1 +extern u8 gUnknown_081D9795[]; //intimidate2 +extern u8 BattleScript_TraceActivates[]; + +extern u8 BattleScript_WhiteHerbEnd2[]; +extern u8 BattleScript_WhiteHerbRet[]; +extern u8 BattleScript_ItemHealHP_RemoveItem[]; +extern u8 BattleScript_BerryPPHealEnd2[]; +extern u8 BattleScript_ItemHealHP_End2[]; +extern u8 BattleScript_BerryConfuseHealEnd2[]; +extern u8 BattleScript_BerryStatRaiseEnd2[]; +extern u8 BattleScript_BerryFocusEnergyEnd2[]; +extern u8 BattleScript_BerryCurePrlzEnd2[]; +extern u8 BattleScript_BerryCurePsnEnd2[]; +extern u8 BattleScript_BerryCureBrnEnd2[]; +extern u8 BattleScript_BerryCureFrzEnd2[]; +extern u8 BattleScript_BerryCureSlpEnd2[]; +extern u8 BattleScript_BerryCureConfusionEnd2[]; +extern u8 BattleScript_BerryCureChosenStatusEnd2[]; //berry cure any status end2 +extern u8 BattleScript_BerryCureParRet[]; +extern u8 BattleScript_BerryCurePsnRet[]; +extern u8 BattleScript_BerryCureBrnRet[]; +extern u8 BattleScript_BerryCureFrzRet[]; +extern u8 BattleScript_BerryCureSlpRet[]; +extern u8 BattleScript_BerryCureConfusionRet[]; +extern u8 BattleScript_BerryCureChosenStatusRet[]; //berry cure any status return + +extern u8 BattleScript_ItemHealHP_Ret[]; + +extern u8 gUnknown_081D995F[]; //disobedient while asleep +extern u8 BattleScript_IgnoresAndUsesRandomMove[]; //disobedient, uses a random move +extern u8 BattleScript_IgnoresAndFallsAsleep[]; //disobedient, went to sleep +extern u8 gUnknown_081D99A0[]; //disobedient, hits itself + +//array entries for battle communication +#define MOVE_EFFECT_BYTE 0x3 +#define MULTISTRING_CHOOSER 0x5 +#define MSG_DISPLAY 0x7 + +u8 GetBattleBank(u8 caseId) +{ + u8 ret = 0; + switch (caseId) + { + case BS_GET_TARGET: + ret = gBankTarget; + break; + case BS_GET_ATTACKER: + ret = gBankAttacker; + break; + case BS_GET_EFFECT_BANK: + ret = gEffectBank; + break; + case BS_GET_BANK_0: + ret = 0; + break; + case BS_GET_SCRIPTING_BANK: + ret = ewram16003; + break; + case BS_GET_gBank1: + ret = gBank1; + break; + case 5: + ret = gBank1; + break; + } + return ret; +} + +void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move) +{ + s32 i; + + if (gBattleMons[bankDef].ability != ABILITY_PRESSURE) + return; + + for (i = 0; i < 4; i++) + { + if (gBattleMons[bankAtk].moves[i] == move) + break; + } + + if (i == 4) // mons don't share any moves + return; + + if (gBattleMons[bankAtk].pp[i] != 0) + gBattleMons[bankAtk].pp[i]--; + + if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[bankAtk].unk18_b & gBitTable[i])) + { + gActiveBank = bankAtk; + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]); + MarkBufferBankForExecution(gActiveBank); + } +} + +void PressurePPLoseOnUsingImprision(u8 bankAtk) +{ + s32 i, j; + s32 imprisionPos = 4; + u8 atkSide = GetBankSide(bankAtk); + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (atkSide != GetBankSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE) + { + for (j = 0; j < 4; j++) + { + if (gBattleMons[bankAtk].moves[j] == MOVE_IMPRISON) + break; + } + if (j != 4) + { + imprisionPos = j; + if (gBattleMons[bankAtk].pp[j] != 0) + gBattleMons[bankAtk].pp[j]--; + } + } + } + + if (imprisionPos != 4 + && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos])) + { + gActiveBank = bankAtk; + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBank].pp[imprisionPos]); + MarkBufferBankForExecution(gActiveBank); + } +} + +void PressurePPLoseOnUsingPerishSong(u8 bankAtk) +{ + s32 i, j; + s32 perishSongPos = 4; + + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_PRESSURE && i != bankAtk) + { + for (j = 0; j < 4; j++) + { + if (gBattleMons[bankAtk].moves[j] == MOVE_PERISH_SONG) + break; + } + if (j != 4) + { + perishSongPos = j; + if (gBattleMons[bankAtk].pp[j] != 0) + gBattleMons[bankAtk].pp[j]--; + } + } + } + + if (perishSongPos != 4 + && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED) + && !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos])) + { + gActiveBank = bankAtk; + EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBank].pp[perishSongPos]); + MarkBufferBankForExecution(gActiveBank); + } +} + + +void MarkAllBufferBanksForExecution(void) // unused +{ + s32 i; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + for (i = 0; i < gNoOfAllBanks; i++) + gBattleExecBuffer |= gBitTable[i] << 0x1C; + } + else + { + for (i = 0; i < gNoOfAllBanks; i++) + gBattleExecBuffer |= gBitTable[i]; + } +} + +void MarkBufferBankForExecution(u8 bank) +{ + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gBattleExecBuffer |= gBitTable[bank] << 0x1C; + } + else + { + gBattleExecBuffer |= gBitTable[bank]; + } +} + +void sub_80155A4(u8 arg0) +{ + s32 i; + + for (i = 0; i < GetLinkPlayerCount(); i++) + gBattleExecBuffer |= gBitTable[arg0] << (i << 2); + + gBattleExecBuffer &= ~(0x10000000 << arg0); +} + +void CancelMultiTurnMoves(u8 bank) +{ + gBattleMons[bank].status2 &= ~(STATUS2_MULTIPLETURNS); + gBattleMons[bank].status2 &= ~(STATUS2_LOCK_CONFUSE); + gBattleMons[bank].status2 &= ~(STATUS2_UPROAR); + gBattleMons[bank].status2 &= ~(STATUS2_BIDE); + + gStatuses3[bank] &= ~(STATUS3_SEMI_INVULNERABLE); + + gDisableStructs[bank].rolloutTimer1 = 0; + gDisableStructs[bank].furyCutterCounter = 0; +} + +bool8 WasUnableToUseMove(u8 bank) +{ + if (gProtectStructs[bank].prlzImmobility + || gProtectStructs[bank].notEffective + || gProtectStructs[bank].usedImprisionedMove + || gProtectStructs[bank].loveImmobility + || gProtectStructs[bank].usedDisabledMove + || gProtectStructs[bank].usedTauntedMove + || gProtectStructs[bank].flag2Unknown + || gProtectStructs[bank].flinchImmobility + || gProtectStructs[bank].confusionSelfDmg) + return TRUE; + else + return FALSE; +} + +void PrepareStringBattle(u16 stringId, u8 bank) +{ + gActiveBank = bank; + EmitPrintString(0, stringId); + MarkBufferBankForExecution(gActiveBank); +} + +void ResetSentPokesToOpponentValue(void) +{ + s32 i; + u32 bits = 0; + + gSentPokesToOpponent[0] = 0; + gSentPokesToOpponent[1] = 0; + + for (i = 0; i < gNoOfAllBanks; i += 2) + bits |= gBitTable[gBattlePartyID[i]]; + + for (i = 1; i < gNoOfAllBanks; i += 2) + gSentPokesToOpponent[(i & BIT_MON) >> 1] = bits; +} + +void sub_8015740(u8 bank) +{ + s32 i = 0; + u32 bits = 0; + + if (GetBankSide(bank) == SIDE_OPPONENT) + { + u8 id = ((bank & BIT_MON) >> 1); + gSentPokesToOpponent[id] = 0; + + for (i = 0; i < gNoOfAllBanks; i += 2) + { + if (!(gAbsentBankFlags & gBitTable[i])) + bits |= gBitTable[gBattlePartyID[i]]; + } + + gSentPokesToOpponent[id] = bits; + } +} + +void sub_80157C4(u8 bank) +{ + if (GetBankSide(bank) == SIDE_OPPONENT) + { + sub_8015740(bank); + } + else + { + s32 i; + for (i = 1; i < gNoOfAllBanks; i++) + gSentPokesToOpponent[(i & BIT_MON) >> 1] |= gBitTable[gBattlePartyID[bank]]; + } +} + +void BattleScriptPush(u8* BS_ptr) +{ + B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = BS_ptr; +} + +void BattleScriptPushCursor(void) +{ + B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr; +} + +void BattleScriptPop(void) +{ + gBattlescriptCurrInstr = B_BATTLESCRIPTS_STACK->ptr[--B_BATTLESCRIPTS_STACK->size]; +} + +u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move +{ + u8 limitations = 0; + u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]]; + u8 holdEffect; + u16* choicedMove = CHOICED_MOVE(gActiveBank); + if (gDisableStructs[gActiveBank].disabledMove == move && move) + { + BATTLE_STRUCT->scriptingActive = gActiveBank; + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove; + limitations++; + } + if (move == gLastUsedMove[gActiveBank] && move != MOVE_STRUGGLE && gBattleMons[gActiveBank].status2 & STATUS2_TORMENT) + { + CancelMultiTurnMoves(gActiveBank); + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTormented; + limitations++; + } + if (gDisableStructs[gActiveBank].tauntTimer1 && gBattleMoves[move].power == 0) + { + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTaunted; + limitations++; + } + if (IsImprisoned(gActiveBank, move)) + { + gCurrentMove = move; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionImprisoned; + limitations++; + } + if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[gActiveBank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); + gStringBank = gActiveBank; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move) + { + gCurrentMove = *choicedMove; + gLastUsedItem = gBattleMons[gActiveBank].item; + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionChoiceBanded; + limitations++; + } + if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0) + { + gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionNoPP; + limitations++; + } + return limitations; +} + +#define MOVE_LIMITATION_ZEROMOVE (1 << 0) +#define MOVE_LIMITATION_PP (1 << 1) +#define MOVE_LIMITATION_DISABLED (1 << 2) +#define MOVE_LIMITATION_TORMENTED (1 << 3) +#define MOVE_LIMITATION_TAUNT (1 << 4) +#define MOVE_LIMITATION_IMPRISION (1 << 5) + +u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) +{ + u8 holdEffect; + u16* choicedMove = CHOICED_MOVE(bank); + s32 i; + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + holdEffect = gEnigmaBerries[bank].holdEffect; + else + holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item); + gStringBank = bank; + for (i = 0; i < 4; i++) + { + if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) + unusableMoves |= gBitTable[i]; + if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) + unusableMoves |= gBitTable[i]; + if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + unusableMoves |= gBitTable[i]; + if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i]) + unusableMoves |= gBitTable[i]; + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i]) + unusableMoves |= gBitTable[i]; + } + return unusableMoves; +} + +bool8 AreAllMovesUnusable(void) +{ + u8 unusable; + unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF); + if (unusable == 0xF) //all moves are unusable + { + gProtectStructs[gActiveBank].onlyStruggle = 1; + gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleBufferB[gActiveBank][3] = GetBankByIdentity((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2)); + else + gBattleBufferB[gActiveBank][3] = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ 1); + } + else + gProtectStructs[gActiveBank].onlyStruggle = 0; + return (unusable == 0xF); +} + +u8 IsImprisoned(u8 bank, u16 move) +{ + u8 imprisionedMoves = 0; + u8 bankSide = GetBankSide(bank); + s32 i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED) + { + s32 j; + for (j = 0; j < 4; j++) + { + if (move == gBattleMons[i].moves[j]) + break; + } + if (j < 4) + imprisionedMoves++; + } + } + return imprisionedMoves; +} + +u8 UpdateTurnCounters(void) +{ + u8 effect = 0; + s32 i; + + for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++) + { + } + for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++) + { + } + + do + { + u8 sideBank; + + switch (BATTLE_STRUCT->turncountersTracker) + { + case 0: + for (i = 0; i < gNoOfAllBanks; i++) + { + gBanksByTurnOrder[i] = i; + } + for (i = 0; i < gNoOfAllBanks - 1; i++) + { + s32 j; + for (j = i + 1; j < gNoOfAllBanks; j++) + { + if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0)) + SwapTurnOrder(i, j); + } + } + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + case 1: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + + if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) + { + if (--gSideTimers[sideBank].reflectTimer == 0) + { + + gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_REFLECT; + gBattleTextBuff1[3] = MOVE_REFLECT >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 2: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) + { + if (--gSideTimers[sideBank].lightscreenTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; + gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 3: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = MOVE_MIST; + gBattleTextBuff1[3] = MOVE_MIST >> 8; + gBattleTextBuff1[4] = EOS; + effect++; + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 4: + while (BATTLE_STRUCT->turnSideTracker < 2) + { + gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) + { + if (--gSideTimers[sideBank].safeguardTimer == 0) + { + gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; + BattleScriptExecute(BattleScript_SafeguardEnds); + effect++; + } + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + BATTLE_STRUCT->turnSideTracker = 0; + } + break; + case 5: + while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks) + { + gActiveBank = gBanksByTurnOrder[BATTLE_STRUCT->turnSideTracker]; + if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) + { + gBankTarget = gActiveBank; + BattleScriptExecute(BattleScript_WishComesTrue); + effect++; + } + BATTLE_STRUCT->turnSideTracker++; + if (effect) + break; + } + if (!effect) + { + BATTLE_STRUCT->turncountersTracker++; + } + break; + case 6: + if (gBattleWeather & WEATHER_RAIN_ANY) + { + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_RAIN_TEMPORARY; + gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR; + gBattleCommunication[MULTISTRING_CHOOSER] = 2; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + BattleScriptExecute(BattleScript_RainContinuesOrEnds); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 7: + if (gBattleWeather & WEATHER_SANDSTORM_ANY) + { + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + } + else + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + + BATTLE_STRUCT->animArg1 = B_ANIM_SANDSTORM_CONTINUES; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 8: + if (gBattleWeather & WEATHER_SUN_ANY) + { + if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_SUN_TEMPORARY; + gBattlescriptCurrInstr = BattleScript_SunlightFaded; + } + else + gBattlescriptCurrInstr = BattleScript_SunlightContinues; + + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 9: + if (gBattleWeather & WEATHER_HAIL) + { + if (--gWishFutureKnock.weatherDuration == 0) + { + gBattleWeather &= ~WEATHER_HAIL; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; + } + else + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + + BATTLE_STRUCT->animArg1 = B_ANIM_HAIL_CONTINUES; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turncountersTracker++; + break; + case 10: + effect++; + break; + } + } while (effect == 0); + return (gBattleMainFunc != BattleTurnPassed); +} + +#define TURNBASED_MAX_CASE 19 + +u8 TurnBasedEffects(void) +{ + u8 effect = 0; + + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE) + { + gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->turnEffectsBank]; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + { + BATTLE_STRUCT->turnEffectsBank++; + } + else + { + switch (BATTLE_STRUCT->turnEffectsTracker) + { + case 0: // ingrain + if ((gStatuses3[gActiveBank] & STATUS3_ROOTED) + && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP + && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_IngrainTurnHeal); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 1: // end turn abilities + if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 2: // item effects + if (ItemBattleEffects(1, gActiveBank, 0)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 18: // item effects again + if (ItemBattleEffects(1, gActiveBank, 1)) + effect++; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 3: // leech seed + if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0) + { + gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BATTLE_STRUCT->animArg1 = gBankTarget; + BATTLE_STRUCT->animArg2 = gBankAttacker; + BattleScriptExecute(BattleScript_LeechSeedTurnDrain); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 4: // poison + if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 5: // toxic poison + if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns + gBattleMons[gActiveBank].status1 += 0x100; + gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; + BattleScriptExecute(BattleScript_PoisonTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 6: // burn + if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_BurnTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 7: // spooky nightmares + if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0) + { + // missing sleep check + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_NightmareTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 8: // curse + if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptExecute(BattleScript_CurseTurnDmg); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 9: // wrap + if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0) + { + gBattleMons[gActiveBank].status2 -= 0x2000; + if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap + { + BATTLE_STRUCT->animArg1 = ewram16004arr(0, gActiveBank); + BATTLE_STRUCT->animArg2 = ewram16004arr(1, gActiveBank); + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank); + gBattleTextBuff1[3] = ewram16004arr(1, gActiveBank); + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapTurnDmg; + gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + } + else // broke free + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank); + gBattleTextBuff1[3] = ewram16004arr(1, gActiveBank); + gBattleTextBuff1[4] = EOS; + gBattlescriptCurrInstr = BattleScript_WrapEnds; + } + BattleScriptExecute(gBattlescriptCurrInstr); + effect++; + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 10: // uproar + if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) + { + for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++) + { + if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + && gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + BattleScriptExecute(BattleScript_MonWokeUpInUproar); + gActiveBank = gBankAttacker; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + } + if (gBankAttacker != gNoOfAllBanks) + { + effect = 2; // a pokemon was awaken + break; + } + else + { + gBankAttacker = gActiveBank; + gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down + if (WasUnableToUseMove(gActiveBank)) + { + CancelMultiTurnMoves(gActiveBank); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + CancelMultiTurnMoves(gActiveBank); + } + BattleScriptExecute(BattleScript_PrintUproarOverTurns); + effect = 1; + } + } + if (effect != 2) + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 11: // thrash + if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) + { + gBattleMons[gActiveBank].status2 -= 0x400; + if (WasUnableToUseMove(gActiveBank)) + CancelMultiTurnMoves(gActiveBank); + else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) + && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS)) + { + gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS); + if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; + SetMoveEffect(1, 0); + if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) + BattleScriptExecute(BattleScript_ThrashConfuses); + effect++; + } + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 12: // disable + if (gDisableStructs[gActiveBank].disableTimer1 != 0) + { + int i; + for (i = 0; i < 4; i++) + { + if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i]) + break; + } + if (i == 4) // pokemon does not have the disabled move anymore + { + gDisableStructs[gActiveBank].disabledMove = 0; + gDisableStructs[gActiveBank].disableTimer1 = 0; + } + else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends + { + gDisableStructs[gActiveBank].disabledMove = 0; + BattleScriptExecute(BattleScript_DisabledNoMore); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 13: // encore + if (gDisableStructs[gActiveBank].encoreTimer1 != 0) + { + if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore + { + gDisableStructs[gActiveBank].encoredMove = 0; + gDisableStructs[gActiveBank].encoreTimer1 = 0; + } + else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0 + || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0) + { + gDisableStructs[gActiveBank].encoredMove = 0; + gDisableStructs[gActiveBank].encoreTimer1 = 0; + BattleScriptExecute(BattleScript_EncoredNoMore); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 14: // lock-on decrement + if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS) + gStatuses3[gActiveBank] -= 0x8; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 15: // charge + if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0) + gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 16: // taunt + if (gDisableStructs[gActiveBank].tauntTimer1) + gDisableStructs[gActiveBank].tauntTimer1--; + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 17: // yawn + if (gStatuses3[gActiveBank] & STATUS3_YAWN) + { + gStatuses3[gActiveBank] -= 0x800; + if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY) + && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT + && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank)) + { + CancelMultiTurnMoves(gActiveBank); + gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + gEffectBank = gActiveBank; + BattleScriptExecute(BattleScript_YawnMakesAsleep); + effect++; + } + } + BATTLE_STRUCT->turnEffectsTracker++; + break; + case 19: // done + BATTLE_STRUCT->turnEffectsTracker = 0; + BATTLE_STRUCT->turnEffectsBank++; + break; + } + if (effect != 0) + return effect; + } + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +bool8 HandleWishPerishSongOnTurnEnd(void) +{ + gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); + switch (BATTLE_STRUCT->sub80170DC_Tracker) + { + case 0: // future sight + while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + { + gActiveBank = BATTLE_STRUCT->sub80170DC_Bank; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + BATTLE_STRUCT->sub80170DC_Bank++; + else + { + BATTLE_STRUCT->sub80170DC_Bank++; + if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) + { + if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else //Doom Desire + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank]; + gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8; + gBattleTextBuff1[4] = 0xFF; + gBankTarget = gActiveBank; + gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; + gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; + BattleScriptExecute(BattleScript_MonTookFutureAttack); + return 1; + } + } + } + BATTLE_STRUCT->sub80170DC_Tracker = 1; + BATTLE_STRUCT->sub80170DC_Bank = 0; + case 1: // perish song + while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + { + gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; + if (gAbsentBankFlags & gBitTable[gActiveBank]) + BATTLE_STRUCT->sub80170DC_Bank++; + else + { + BATTLE_STRUCT->sub80170DC_Bank++; + if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 1; + gBattleTextBuff1[2] = 1; + gBattleTextBuff1[3] = 1; + gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1; + gBattleTextBuff1[5] = 0xFF; + if (gDisableStructs[gActiveBank].perishSong1 == 0) + { + gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG); + gBattleMoveDamage = gBattleMons[gActiveBank].hp; + gBattlescriptCurrInstr = BattleScript_PerishSongHits; + } + else + { + gDisableStructs[gActiveBank].perishSong1--; + gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown; + } + BattleScriptExecute(gBattlescriptCurrInstr); + return 1; + } + } + } + break; + } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); + return 0; +} + +#define HandleFaintedMonActions_MAX_CASE 7 + +bool8 HandleFaintedMonActions(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) + return 0; + do + { + int i; + switch (BATTLE_STRUCT->sub80173A4_Tracker) + { + case 0: + BATTLE_STRUCT->unk1605A = 0; + BATTLE_STRUCT->sub80173A4_Tracker++; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6)) + gAbsentBankFlags &= ~(gBitTable[i]); + } + case 1: + do + { + gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; + if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(BATTLE_STRUCT->unk16113 & gBitTable[gBattlePartyID[BATTLE_STRUCT->unk1605A]]) && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + { + BattleScriptExecute(BattleScript_GiveExp); + BATTLE_STRUCT->sub80173A4_Tracker = 2; + return 1; + } + } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); + BATTLE_STRUCT->sub80173A4_Tracker = 3; + break; + case 2: + sub_8015740(gBank1); + if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) + BATTLE_STRUCT->sub80173A4_Tracker = 3; + else + BATTLE_STRUCT->sub80173A4_Tracker = 1; + break; + case 3: + BATTLE_STRUCT->unk1605A = 0; + BATTLE_STRUCT->sub80173A4_Tracker++; + case 4: + do + { + gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; //or should banks be switched? + if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + { + BattleScriptExecute(BattleScript_HandleFaintedMon); + BATTLE_STRUCT->sub80173A4_Tracker = 5; + return 1; + } + } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); + BATTLE_STRUCT->sub80173A4_Tracker = 6; + break; + case 5: + if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) + BATTLE_STRUCT->sub80173A4_Tracker = 6; + else + BATTLE_STRUCT->sub80173A4_Tracker = 4; + break; + case 6: + if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0)) + return 1; + BATTLE_STRUCT->sub80173A4_Tracker++; + break; + case 7: + break; + } + } while (BATTLE_STRUCT->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE); + return 0; +} + +void TryClearRageStatuses(void) +{ + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_RAGE && gChosenMovesByBanks[i] != MOVE_RAGE) + gBattleMons[i].status2 &= ~(STATUS2_RAGE); + } +} + +#define ATKCANCELLER_MAX_CASE 14 + +u8 AtkCanceller_UnableToUseMove(void) +{ + u8 effect = 0; + s32* bideDmg = &BATTLE_STRUCT->bideDmg; + do + { + switch (BATTLE_STRUCT->atkCancellerTracker) + { + case 0: // flags clear + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND); + gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE); + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 1: // check being asleep + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + { + if (UproarWakeUpCheck(gBankAttacker)) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + else + { + u8 toSub; + if (gBattleMons[gBankAttacker].ability == ABILITY_EARLY_BIRD) + toSub = 2; + else + toSub = 1; + if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) < toSub) + gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); + else + gBattleMons[gBankAttacker].status1 -= toSub; + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) + { + if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK) + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 2; + } + } + else + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; + effect = 2; + } + } + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 2: // check being frozen + if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) + { + if (Random() % 5) + { + if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13 + { + gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen; + gHitMarker |= HITMARKER_NO_ATTACKSTRING; + } + else + { + BATTLE_STRUCT->atkCancellerTracker++; + break; + } + } + else // unfreeze + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + } + effect = 2; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 3: // truant + if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter) + { + CancelMultiTurnMoves(gBankAttacker); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + gBattleMoveFlags |= MOVESTATUS_MISSED; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 4: // recharge + if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE); + gDisableStructs[gBankAttacker].rechargeCounter = 0; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 5: // flinch + if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED) + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED); + gProtectStructs[gBankAttacker].flinchImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 6: // disabled move + if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0) + { + gProtectStructs[gBankAttacker].usedDisabledMove = 1; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 7: // taunt + if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0) + { + gProtectStructs[gBankAttacker].usedTauntedMove = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 8: // imprisoned + if (IsImprisoned(gBankAttacker, gCurrentMove)) + { + gProtectStructs[gBankAttacker].usedImprisionedMove = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 9: // confusion + if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) + { + gBattleMons[gBankAttacker].status2--; + if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) + { + if (Random() & 1) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + BattleScriptPushCursor(); + } + else // confusion dmg + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBankTarget = gBankAttacker; + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); + gProtectStructs[gBankAttacker].confusionSelfDmg = 1; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused; + } + else // snapped out of confusion + { + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore; + } + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 10: // paralysis + if (gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) + { + gProtectStructs[gBankAttacker].prlzImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 11: // infatuation + if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + { + BATTLE_STRUCT->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); + if (Random() & 1) + BattleScriptPushCursor(); + else + { + BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack); + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + gProtectStructs[gBankAttacker].loveImmobility = 1; + CancelMultiTurnMoves(gBankAttacker); + } + gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 12: // bide + if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) + { + gBattleMons[gBankAttacker].status2 -= 0x100; + if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) + gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; + else + { + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS); + if (gTakenDmg[gBankAttacker]) + { + gCurrentMove = MOVE_BIDE; + *bideDmg = gTakenDmg[gBankAttacker] * 2; + gBankTarget = gTakenDmgBanks[gBankAttacker]; + if (gAbsentBankFlags & gBitTable[gBankTarget]) + gBankTarget = GetMoveTarget(MOVE_BIDE, 1); + gBattlescriptCurrInstr = BattleScript_BideAttack; + } + else + gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack; + } + effect = 1; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 13: // move thawing + if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) + { + if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) + { + gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } + effect = 2; + } + BATTLE_STRUCT->atkCancellerTracker++; + break; + case 14: // last case + break; + } + + } while (BATTLE_STRUCT->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0); + + if (effect == 2) + { + gActiveBank = gBankAttacker; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + } + return effect; +} + +bool8 sub_8018018(u8 bank, u8 r1, u8 r2) +{ + struct Pokemon* party; + u8 r7; + u8 r6; + s32 i; + if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + return 0; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + r7 = sub_803FC34(bank); + if (GetBankSide(bank) == 0) + party = gPlayerParty; + else + party = gEnemyParty; + r6 = sub_803FBFC(r7); + for (i = r6 * 3; i < r6 * 3 + 3; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + break; + } + return (i == r6 * 3 + 3); + } + else + { + if (GetBankSide(bank) == 1) + { + r7 = GetBankByIdentity(1); + r6 = GetBankByIdentity(3); + party = gEnemyParty; + } + else + { + r7 = GetBankByIdentity(0); + r6 = GetBankByIdentity(2); + party = gPlayerParty; + } + if (r1 == 6) + r1 = gBattlePartyID[r7]; + if (r2 == 6) + r2 = gBattlePartyID[r6]; + for (i = 0; i < 6; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram16068arr(r7) && i != ewram16068arr(r6)) + break; + } + return (i == 6); + } +} + +enum +{ + CASTFORM_NO_CHANGE, //0 + CASTFORM_TO_NORMAL, //1 + CASTFORM_TO_FIRE, //2 + CASTFORM_TO_WATER, //3 + CASTFORM_TO_ICE, //4 +}; + +u8 CastformDataTypeChange(u8 bank) +{ + u8 formChange = 0; + if (gBattleMons[bank].species != SPECIES_CASTFORM || gBattleMons[bank].ability != ABILITY_FORECAST || gBattleMons[bank].hp == 0) + return CASTFORM_NO_CHANGE; + if (!WEATHER_HAS_EFFECT && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) + { + gBattleMons[bank].type1 = TYPE_NORMAL; + gBattleMons[bank].type2 = TYPE_NORMAL; + return CASTFORM_TO_NORMAL; + } + if (!WEATHER_HAS_EFFECT) + return CASTFORM_NO_CHANGE; + if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL) + { + gBattleMons[bank].type1 = TYPE_NORMAL; + gBattleMons[bank].type2 = TYPE_NORMAL; + formChange = CASTFORM_TO_NORMAL; + } + if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[bank].type1 != TYPE_FIRE && gBattleMons[bank].type2 != TYPE_FIRE) + { + gBattleMons[bank].type1 = TYPE_FIRE; + gBattleMons[bank].type2 = TYPE_FIRE; + formChange = CASTFORM_TO_FIRE; + } + if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[bank].type1 != TYPE_WATER && gBattleMons[bank].type2 != TYPE_WATER) + { + gBattleMons[bank].type1 = TYPE_WATER; + gBattleMons[bank].type2 = TYPE_WATER; + formChange = CASTFORM_TO_WATER; + } + if (gBattleWeather & WEATHER_HAIL && gBattleMons[bank].type1 != TYPE_ICE && gBattleMons[bank].type2 != TYPE_ICE) + { + gBattleMons[bank].type1 = TYPE_ICE; + gBattleMons[bank].type2 = TYPE_ICE; + formChange = CASTFORM_TO_ICE; + } + return formChange; +} + +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) +{ + u8 effect = 0; + struct Pokemon* pokeAtk; + struct Pokemon* pokeDef; + u16 speciesAtk; + u16 speciesDef; + u32 pidAtk; + u32 pidDef; + + if (gBankAttacker >= gNoOfAllBanks) + gBankAttacker = bank; + if (GetBankSide(gBankAttacker) == 0) + pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]]; + else + pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]]; + + if (gBankTarget >= gNoOfAllBanks) + gBankTarget = bank; + if (GetBankSide(gBankTarget) == 0) + pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]]; + else + pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]]; + + speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES); + pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY); + + speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES); + pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY); + + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning? + { + u8 moveType; + s32 i; + u16 move; + u8 side; + u8 target1; + + if (special) + gLastUsedAbility = special; + else + gLastUsedAbility = gBattleMons[bank].ability; + + if (moveArg) + move = moveArg; + else + move = gCurrentMove; + + if (BATTLE_STRUCT->dynamicMoveType) + moveType = BATTLE_STRUCT->dynamicMoveType & 0x3F; + else + moveType = gBattleMoves[move].type; + + //_080184AC + switch (caseID) + { + case ABILITYEFFECT_ON_SWITCHIN: // 0 + //_08018518 + if (gBankAttacker >= gNoOfAllBanks) + gBankAttacker = bank; + switch (gLastUsedAbility) + { + case 0xFF: //weather from overworld + //_08018586 + switch (weather_get_current()) + { + case WEATHER_RAIN_LIGHT: + case WEATHER_RAIN_MED: + case WEATHER_RAIN_HEAVY: + if (!(gBattleWeather & WEATHER_RAIN_ANY)) + { + gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); + BATTLE_STRUCT->animArg1 = B_ANIM_RAIN_CONTINUES; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case WEATHER_SANDSTORM: + if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + BATTLE_STRUCT->animArg1 = B_ANIM_SANDSTORM_CONTINUES; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case WEATHER_DROUGHT: + if (!(gBattleWeather & WEATHER_SUN_ANY)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + BATTLE_STRUCT->animArg1 = B_ANIM_SUN_CONTINUES; + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + } + if (effect) + { + gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); + BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); + } + break; + case ABILITY_DRIZZLE: + //_08018680 + if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) + { + gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); + BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_SAND_STREAM: + //_080186B8 + if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) + { + gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); + BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_DROUGHT: + //_080186F0 + if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) + { + gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); + BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_INTIMIDATE: + //_08018728 + if (!(gSpecialStatuses[bank].intimidatedPoke)) + { + gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES; + gSpecialStatuses[bank].intimidatedPoke = 1; + } + break; + case ABILITY_FORECAST: + //_0801875C + effect = CastformDataTypeChange(bank); + if (effect != 0) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = bank; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + } + break; + case ABILITY_TRACE: + //_080187A0 + if (!(gSpecialStatuses[bank].traced)) + { + gStatuses3[bank] |= STATUS3_TRACE; + gSpecialStatuses[bank].traced = 1; + } + break; + case ABILITY_CLOUD_NINE: + case ABILITY_AIR_LOCK: + //_080187DC + { + // that's a weird choice for a variable, why not use i or bank? + for (target1 = 0; target1 < gNoOfAllBanks; target1++) + { + effect = CastformDataTypeChange(target1); + if (effect != 0) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = target1; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + break; + } + } + } + break; + } + break; + case ABILITYEFFECT_ENDTURN: // 1 + //_08018814 + if (gBattleMons[bank].hp != 0) + { + gBankAttacker = bank; + switch (gLastUsedAbility) + { + case ABILITY_RAIN_DISH: + if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) + && gBattleMons[bank].maxHP > gBattleMons[bank].hp) + { + gLastUsedAbility = ABILITY_RAIN_DISH; // why + BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates); + gBattleMoveDamage = gBattleMons[bank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + effect++; + } + break; + case ABILITY_SHED_SKIN: + if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0) + { + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON)) + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + if (gBattleMons[bank].status1 & STATUS_SLEEP) + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + if (gBattleMons[bank].status1 & STATUS_BURN) + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + if (gBattleMons[bank].status1 & STATUS_FREEZE) + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + gBattleMons[bank].status1 = 0; + // BUG: The nightmare status does not get cleared here. This was fixed in Emerald. + //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + BATTLE_STRUCT->scriptingActive = gActiveBank = bank; + BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates); + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + MarkBufferBankForExecution(gActiveBank); + effect++; + } + break; + case ABILITY_SPEED_BOOST: + if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2) + { + gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; + BATTLE_STRUCT->animArg1 = 0x11; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates); + BATTLE_STRUCT->scriptingActive = bank; + effect++; + } + break; + case ABILITY_TRUANT: + gDisableStructs[gBankAttacker].truantCounter ^= 1; + break; + } + } + break; + case ABILITYEFFECT_MOVES_BLOCK: // 2 + //_08018A40 + if (gLastUsedAbility == ABILITY_SOUNDPROOF) + { + for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) + { + if (gSoundMovesTable[i] == move) + break; + } + if (gSoundMovesTable[i] != 0xFFFF) + { + if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS) + gHitMarker |= HITMARKER_NO_PPDEDUCT; + gBattlescriptCurrInstr = BattleScript_SoundproofProtected; + effect = 1; + } + } + break; + case ABILITYEFFECT_ABSORBING: // 3 + //_08018AD8 + if (move) + { + switch (gLastUsedAbility) + { + case ABILITY_VOLT_ABSORB: + if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0) + { + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_WATER_ABSORB: + if (moveType == TYPE_WATER && gBattleMoves[move].power != 0) + { + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; + } + break; + case ABILITY_FLASH_FIRE: + if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE)) + { + if (!(eFlashFireArr.arr[bank] & 1)) + { + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + eFlashFireArr.arr[bank] |= 1; + effect = 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + if (gProtectStructs[gBankAttacker].notFirstStrike) + gBattlescriptCurrInstr = BattleScript_FlashFireBoost; + else + gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + effect = 2; + } + } + break; + } + if (effect == 1) + { + if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) + { + if ((gProtectStructs[gBankAttacker].notFirstStrike)) + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_FullHP; + else + gBattlescriptCurrInstr = BattleScript_MoveHPDrain_FullHP_PPLoss; + } + else + { + gBattleMoveDamage = gBattleMons[bank].maxHP / 4; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + gBattleMoveDamage *= -1; + } + } + } + break; + case ABILITYEFFECT_CONTACT: // 4 + //_08018CF0 + switch (gLastUsedAbility) + { + case ABILITY_COLOR_CHANGE: + //_08018DCC + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && move != MOVE_STRUGGLE + && gBattleMoves[move].power != 0 + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[bank].type1 != moveType + && gBattleMons[bank].type2 != moveType + && gBattleMons[bank].hp != 0) + { + gBattleMons[bank].type1 = moveType; + gBattleMons[bank].type2 = moveType; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 3; + gBattleTextBuff1[2] = moveType; + gBattleTextBuff1[3] = 0xFF; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; + effect++; + } + break; + case ABILITY_ROUGH_SKIN: + //_08018E94 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + { + gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; + effect++; + } + break; + case ABILITY_EFFECT_SPORE: + //_08018F54 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 10) == 0) + { + do + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; + } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; + gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_POISON_POINT: + //_0801904C + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_STATIC: + //_08019128 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_FLAME_BODY: + //_08019204 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITY_CUTE_CHARM: + //_080192E0 + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[gBankTarget].hp != 0 + && (Random() % 3) == 0 + && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) + { + gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + effect++; + } + break; + } + break; + case ABILITYEFFECT_IMMUNITY: // 5 + //_08019448 + { + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + switch (gBattleMons[bank].ability) + { + case ABILITY_IMMUNITY: + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00? + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + effect = 1; + } + break; + case ABILITY_OWN_TEMPO: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + effect = 2; + } + break; + case ABILITY_LIMBER: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + effect = 1; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + effect = 1; + } + break; + case ABILITY_WATER_VEIL: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + effect = 1; + } + break; + case ABILITY_MAGMA_ARMOR: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + effect = 1; + } + break; + case ABILITY_OBLIVIOUS: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + effect = 3; + } + break; + } + if (effect) + { + switch (effect) + { + case 1: // status cleared + gBattleMons[bank].status1 = 0; + break; + case 2: // get rid of confusion + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + break; + case 3: // get rid of infatuation + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + break; + } + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; + BATTLE_STRUCT->scriptingActive = bank; + gActiveBank = bank; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + return effect; + } + } + } + break; + case ABILITYEFFECT_FORECAST: // 6 + //_080197B4 + { + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + if (gBattleMons[bank].ability == ABILITY_FORECAST) + { + effect = CastformDataTypeChange(bank); + if (effect) + { + BattleScriptPushCursorAndCallback(BattleScript_CastformChange); + BATTLE_STRUCT->scriptingActive = bank; + BATTLE_STRUCT->castformToChangeInto = effect - 1; + return effect; + } + } + } + } + break; + case ABILITYEFFECT_SYNCHRONIZE: // 7 + //_08019804 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + BATTLE_STRUCT->synchroniseEffect &= 0x3F; + if (BATTLE_STRUCT->synchroniseEffect == 6) + BATTLE_STRUCT->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40; + BATTLE_STRUCT->scriptingActive = gBankTarget; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 + //_08019880 + if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) + { + gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + BATTLE_STRUCT->synchroniseEffect &= 0x3F; + if (BATTLE_STRUCT->synchroniseEffect == 6) + BATTLE_STRUCT->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + break; + case ABILITYEFFECT_INTIMIDATE1: // 9 + //_080198FC + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + BattleScriptPushCursorAndCallback(gUnknown_081D978C); + BATTLE_STRUCT->intimidateBank = i; + effect++; + break; + } + } + break; + case ABILITYEFFECT_TRACE: // 11 + //_08019940 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) + { + u8 target2; + side = (GetBankIdentity(i) ^ 1) & 1; + target1 = GetBankByIdentity(side); + target2 = GetBankByIdentity(side + 2); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 + && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + //_080199AE + gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side); + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) + { + //_08019A34 + gActiveBank = target1; + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + { + //_08019A78 + gActiveBank = target2; + gBattleMons[i].ability = gBattleMons[gActiveBank].ability; + gLastUsedAbility = gBattleMons[gActiveBank].ability; + effect++; + } + } + else + //_08019ABC + { + gActiveBank = target1; + if (gBattleMons[target1].ability && gBattleMons[target1].hp) + { + gBattleMons[i].ability = gBattleMons[target1].ability; + gLastUsedAbility = gBattleMons[target1].ability; + effect++; + } + } + if (effect) + { + BattleScriptPushCursorAndCallback(BattleScript_TraceActivates); + gStatuses3[i] &= ~(STATUS3_TRACE); + BATTLE_STRUCT->scriptingActive = i; + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 4; + gBattleTextBuff1[2] = gActiveBank; + gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; + gBattleTextBuff1[4] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 9; + gBattleTextBuff2[2] = gLastUsedAbility; + gBattleTextBuff2[3] = EOS; + break; + } + } + } + break; + case ABILITYEFFECT_INTIMIDATE2: // 10 + //_08019B1C + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) + { + gLastUsedAbility = ABILITY_INTIMIDATE; + gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = gUnknown_081D9795; + BATTLE_STRUCT->intimidateBank = i; + effect++; + break; + } + } + break; + case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 + //_08019B60 + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_BANK_SIDE: // 13 + //_08019BBC + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_FIELD_SPORT: // 14 + //_08019C18 + switch (gLastUsedAbility) + { + case 0xFD: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_MUDSPORT) + effect = i + 1; + } + break; + case 0xFE: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gStatuses3[i] & STATUS3_WATERSPORT) + effect = i + 1; + } + break; + default: + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + } + break; + case ABILITYEFFECT_CHECK_ON_FIELD: // 19 + //_08019CD4 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15 + //_08019D18 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && i != bank) + { + gLastUsedAbility = ability; + effect = i + 1; + } + } + break; + case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16 + //_08019D5C + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) != side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + case ABILITYEFFECT_COUNT_BANK_SIDE: // 17 + //_08019DB8 + side = GetBankSide(bank); + for (i = 0; i < gNoOfAllBanks; i++) + { + if (GetBankSide(i) == side && gBattleMons[i].ability == ability) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + case ABILITYEFFECT_COUNT_ON_FIELD: // 18 + //_08019F44 + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].ability == ability && i != bank) + { + gLastUsedAbility = ability; + effect++; + } + } + break; + } + //_08019F76 + if (effect && caseID < 0xC && gLastUsedAbility != 0xFF) + RecordAbilityBattle(bank, gLastUsedAbility); + } + + return effect; +} + +void BattleScriptExecute(u8* BS_ptr) +{ + gBattlescriptCurrInstr = BS_ptr; + B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; + gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack; + gCurrentActionFuncId = 0; +} + +void BattleScriptPushCursorAndCallback(u8* BS_ptr) +{ + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BS_ptr; + B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; + gBattleMainFunc = RunBattleScriptCommands; +} + +enum +{ + ITEM_NO_EFFECT, // 0 + ITEM_STATUS_CHANGE, // 1 + ITEM_EFFECT_OTHER, // 2 + ITEM_PP_CHANGE, // 3 + ITEM_HP_CHANGE, // 4 + ITEM_STATS_CHANGE, // 5 +}; + +enum +{ + FLAVOR_SPICY, // 0 + FLAVOR_DRY, // 1 + FLAVOR_SWEET, // 2 + FLAVOR_BITTER, // 3 + FLAVOR_SOUR, // 4 +}; + +u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) +{ + int i = 0; + u8 effect = ITEM_NO_EFFECT; + u8 changedPP = 0; + u8 bankHoldEffect, atkHoldEffect, defHoldEffect; + u8 bankQuality, atkQuality, defQuality; + u16 atkItem, defItem; + + gLastUsedItem = gBattleMons[bank].item; + if (gLastUsedItem == ITEM_ENIGMA_BERRY) + { + bankHoldEffect = gEnigmaBerries[bank].holdEffect; + bankQuality = gEnigmaBerries[bank].holdEffectParam; + } + else + { + bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); + } + + atkItem = gBattleMons[gBankAttacker].item; + if (atkItem == ITEM_ENIGMA_BERRY) + { + atkHoldEffect = gEnigmaBerries[gBankAttacker].holdEffect; + atkQuality = gEnigmaBerries[gBankAttacker].holdEffectParam; + } + else + { + atkHoldEffect = ItemId_GetHoldEffect(atkItem); + atkQuality = ItemId_GetHoldEffectParam(atkItem); + } + + // def variables are unused + defItem = gBattleMons[gBankTarget].item; + if (defItem == ITEM_ENIGMA_BERRY) + { + defHoldEffect = gEnigmaBerries[gBankTarget].holdEffect; + defQuality = gEnigmaBerries[gBankTarget].holdEffectParam; + } + else + { + defHoldEffect = ItemId_GetHoldEffect(defItem); + defQuality = ItemId_GetHoldEffectParam(defItem); + } + + switch (caseID) + { + case 0: + switch (bankHoldEffect) + { + case HOLD_EFFECT_DOUBLE_PRIZE: + BATTLE_STRUCT->moneyMultiplier = 2; + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + BattleScriptExecute(BattleScript_WhiteHerbEnd2); + } + break; + } + break; + case 1: + if (gBattleMons[bank].hp) + { + switch (bankHoldEffect) + { + case HOLD_EFFECT_RESTORE_HP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleMoveDamage = bankQuality; + if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = 4; + } + break; + case HOLD_EFFECT_RESTORE_PP: + if (!moveTurn) + { + struct Pokemon* poke; + u8 ppBonuses; + u16 move; + + if (GetBankSide(bank) == 0) + poke = &gPlayerParty[gBattlePartyID[bank]]; + else + poke = &gEnemyParty[gBattlePartyID[bank]]; + for (i = 0; i < 4; i++) + { + move = GetMonData(poke, MON_DATA_MOVE1 + i); + changedPP = GetMonData(poke, MON_DATA_PP1 + i); + ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); + if (move && changedPP == 0) + break; + } + if (i != 4) + { + u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i); + if (changedPP + bankQuality > maxPP) + changedPP = maxPP; + else + changedPP = changedPP + bankQuality; + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 2; + gBattleTextBuff1[2] = move; + gBattleTextBuff1[3] = move >> 8; + gBattleTextBuff1[4] = 0xFF; + BattleScriptExecute(BattleScript_BerryPPHealEnd2); + EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); + MarkBufferBankForExecution(gActiveBank); + effect = ITEM_PP_CHANGE; + } + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + BattleScriptExecute(BattleScript_WhiteHerbEnd2); + } + break; + case HOLD_EFFECT_LEFTOVERS: + if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn) + { + gBattleMoveDamage = gBattleMons[bank].maxHP / 16; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + BattleScriptExecute(BattleScript_ItemHealHP_End2); + effect = ITEM_HP_CHANGE; + RecordItemBattle(bank, bankHoldEffect); + } + break; + // nice copy/paste there gamefreak, making a function for confuse berries was too much eh? + case HOLD_EFFECT_CONFUSE_SPICY: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SPICY; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SPICY) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_DRY: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_DRY; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_DRY) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SWEET: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SWEET; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SWEET) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_BITTER: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_BITTER; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_BITTER) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + case HOLD_EFFECT_CONFUSE_SOUR: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 8; + gBattleTextBuff1[2] = FLAVOR_SOUR; + gBattleTextBuff1[3] = EOS; + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = 1; + if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP) + gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp; + gBattleMoveDamage *= -1; + if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SOUR) < 0) + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); + else + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); + effect = ITEM_HP_CHANGE; + } + break; + // copy/paste again, smh + case HOLD_EFFECT_ATTACK_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_ATK; + gBattleTextBuff1[3] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD2; + gBattleTextBuff2[3] = 0xD2 >> 8; + gBattleTextBuff2[4] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_DEFENSE_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_DEF; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SPEED_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPEED; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_ATTACK_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPATK; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_SP_DEFENSE_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) + { + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = STAT_STAGE_SPDEF; + gBattleTextBuff1[3] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF; + BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + break; + case HOLD_EFFECT_CRITICAL_UP: + if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY)) + { + gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY; + BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_RANDOM_STAT_UP: + if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality) + { + for (i = 0; i < 5; i++) + { + if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC) + break; + } + if (i != 5) + { + do + { + i = Random() % 5; + } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); + + gBattleTextBuff1[0] = 0xFD; + gBattleTextBuff1[1] = 5; + gBattleTextBuff1[2] = i + 1; + gBattleTextBuff1[3] = EOS; + + gBattleTextBuff2[0] = 0xFD; + gBattleTextBuff2[1] = 0; + gBattleTextBuff2[2] = 0xD1; + gBattleTextBuff2[3] = 0xD1 >> 8; + gBattleTextBuff2[4] = 0; + gBattleTextBuff2[5] = 0xD2; + gBattleTextBuff2[6] = 0xD2 >> 8; + gBattleTextBuff2[7] = EOS; + + gEffectBank = bank; + BATTLE_STRUCT->statChanger = 0x21 + i; + BATTLE_STRUCT->animArg1 = 0x21 + i + 6; + BATTLE_STRUCT->animArg2 = 0; + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); + effect = ITEM_STATS_CHANGE; + } + } + break; + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + BattleScriptExecute(BattleScript_BerryCurePsnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + gBattleMons[bank].status1 &= ~(STATUS_BURN); + BattleScriptExecute(BattleScript_BerryCureBrnEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + BattleScriptExecute(BattleScript_BerryCureFrzEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptExecute(BattleScript_BerryCureSlpEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + BattleScriptExecute(BattleScript_BerryCureConfusionEnd2); + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + i = 0; + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + i++; + } + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + i++; + } + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + i++; + } + if (!(i > 1)) + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + else + gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleMons[bank].status1 = 0; + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + effect = ITEM_EFFECT_OTHER; + } + break; + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = gBankAttacker = bank; + switch (effect) + { + case ITEM_STATUS_CHANGE: + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + case ITEM_PP_CHANGE: + if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i])) + gBattleMons[bank].pp[i] = changedPP; + break; + } + } + } + break; + case 2: + break; + case 3: + for (bank = 0; bank < gNoOfAllBanks; bank++) + { + gLastUsedItem = gBattleMons[bank].item; + if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) + { + bankHoldEffect = gEnigmaBerries[bank].holdEffect; + bankQuality = gEnigmaBerries[bank].holdEffectParam; + } + else + { + bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem); + bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem); + } + switch (bankHoldEffect) + { + case HOLD_EFFECT_CURE_PAR: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureParRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_PSN: + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_BRN: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + gBattleMons[bank].status1 &= ~(STATUS_BURN); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_FRZ: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + gBattleMons[bank].status1 &= ~(STATUS_FREEZE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_SLP: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status1 &= ~(STATUS_SLEEP); + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_CURE_CONFUSION: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_ATTRACT: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; + effect = ITEM_EFFECT_OTHER; + } + break; + case HOLD_EFFECT_CURE_STATUS: + if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + if (gBattleMons[bank].status1 & STATUS_PSN_ANY) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + } + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + } + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + } + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + } + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + } + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + } + gBattleMons[bank].status1 = 0; + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); + BattleScriptPushCursor(); + gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; + effect = ITEM_STATUS_CHANGE; + } + break; + case HOLD_EFFECT_RESTORE_STATS: + for (i = 0; i < 8; i++) + { + if (gBattleMons[bank].statStages[i] < 6) + { + gBattleMons[bank].statStages[i] = 6; + effect = ITEM_STATS_CHANGE; + } + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; + return effect; // unnecessary return + } + break; + } + if (effect) + { + BATTLE_STRUCT->scriptingActive = bank; + gStringBank = bank; + gActiveBank = bank; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + break; + } + } + break; + case 4: + if (gBattleMoveDamage) + { + switch (atkHoldEffect) + { + case HOLD_EFFECT_FLINCH: + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 100) < bankQuality + && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED + && gBattleMons[gBankTarget].hp) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 8; + BattleScriptPushCursor(); + SetMoveEffect(0, 0); + BattleScriptPop(); + } + break; + case HOLD_EFFECT_SHELL_BELL: + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gSpecialStatuses[gBankTarget].moveturnLostHP != 0 + && gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF + && gBankAttacker != gBankTarget + && gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP + && gBattleMons[gBankAttacker].hp != 0) + { + gLastUsedItem = atkItem; + gStringBank = gBankAttacker; + BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1; + if (gBattleMoveDamage == 0) + gBattleMoveDamage = -1; + gSpecialStatuses[gBankTarget].moveturnLostHP = 0; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; + effect++; + } + break; + } + } + break; + } + + return effect; +} + +struct CombinedMove +{ + u16 move1; + u16 move2; + u16 newMove; +}; + +static const struct CombinedMove sCombinedMoves[2] = +{ + {MOVE_EMBER, MOVE_GUST, MOVE_HEAT_WAVE}, + {0xFFFF, 0xFFFF, 0xFFFF} +}; + +void unref_sub_801B40C(void) +{ + int i = 0; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + do + { + u8 bank = 0; + do + { + u8 absent = gAbsentBankFlags; + if (gBitTable[bank] & absent || absent & gBitTable[bank + 2]) + bank++; + else + { + if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2]) + { + gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4); + gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; + } + if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank]) + { + gSideTimers[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4); + gSideTimers[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove; + gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4; + } + bank++; + } + } while (bank < 2); + i++; + } while (sCombinedMoves[i].move1 != 0xFFFF); + } +} + +void sub_801B594(void) +{ + if (gBattleExecBuffer == 0) + gBattleScriptingCommandsTable[*gBattlescriptCurrInstr](); +} + +u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target +{ + u8 targetBank = 0; + u8 moveTarget; + u8 side; + + if (useMoveTarget) + moveTarget = useMoveTarget - 1; + else + moveTarget = gBattleMoves[move].target; + + switch (moveTarget) + { + case 0: + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + targetBank = gSideTimers[side].followmeTarget; + else + { + side = GetBankSide(gBankAttacker); + do + { + targetBank = Random() % gNoOfAllBanks; + } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]); + if (gBattleMoves[move].type == TYPE_ELECTRIC + && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) + && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) + { + targetBank ^= 2; + RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability); + gSpecialStatuses[targetBank].lightningRodRedirected = 1; + } + } + break; + case 1: + case 8: + case 32: + case 64: + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); + if (gAbsentBankFlags & gBitTable[targetBank]) + targetBank ^= 2; + break; + case 4: + side = GetBankSide(gBankAttacker) ^ 1; + if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) + targetBank = gSideTimers[side].followmeTarget; + else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4) + { + if (GetBankSide(gBankAttacker) == 0) + { + if (Random() & 1) + targetBank = GetBankByIdentity(1); + else + targetBank = GetBankByIdentity(3); + } + else + { + if (Random() & 1) + targetBank = GetBankByIdentity(0); + else + targetBank = GetBankByIdentity(2); + } + if (gAbsentBankFlags & gBitTable[targetBank]) + targetBank ^= 2; + } + else + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); + break; + case 2: + case 16: + targetBank = gBankAttacker; + break; + } + ewram16010arr(gBankAttacker) = targetBank; + return targetBank; +} + +u8 IsMonDisobedient(void) +{ + u8 obedienceLevel; + s32 rnd; + s32 calc; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK + || GetBankSide(gBankAttacker) == 1 + || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) + || FlagGet(FLAG_BADGE08_GET)) + return 0; + + obedienceLevel = 10; + if (FlagGet(FLAG_BADGE02_GET)) + obedienceLevel = 30; + if (FlagGet(FLAG_BADGE04_GET)) + obedienceLevel = 50; + if (FlagGet(FLAG_BADGE06_GET)) + obedienceLevel = 70; + + if (gBattleMons[gBankAttacker].level <= obedienceLevel) + return 0; + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + return 0; + + // is not obedient + if (gCurrentMove == MOVE_RAGE) + gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE); + if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) + { + gBattlescriptCurrInstr = gUnknown_081D995F; + return 1; + } + + rnd = (Random() & 255); + calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8; + if (calc < obedienceLevel) + { + calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF); + if (calc == 0xF) // all moves cannot be used + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + else // use a random move + { + do + { + gCurrMovePos = gUnknown_02024BE5 = Random() & 3; + } while (gBitTable[gCurrMovePos] & calc); + gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gBattleCommunication[3] = 0; + gDynamicBasePower = 0; + BATTLE_STRUCT->dynamicMoveType = 0; + gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; + gBankTarget = GetMoveTarget(gRandomMove, 0); + gHitMarker |= HITMARKER_x200000; + return 2; + } + } + else + { + obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel; + + calc = (Random() & 255); + if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA) + { + // try putting asleep + int i; + for (i = 0; i < gNoOfAllBanks; i++) + { + if (gBattleMons[i].status2 & STATUS2_UPROAR) + break; + } + if (i == gNoOfAllBanks) + { + gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep; + return 1; + } + } + calc -= obedienceLevel; + if (calc < obedienceLevel) + { + gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); + gBankTarget = gBankAttacker; + gBattlescriptCurrInstr = gUnknown_081D99A0; + gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; + return 2; + } + else + { + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; + return 1; + } + } +} diff --git a/src/data/pokemon/trainer_class_lookups.h b/src/data/pokemon/trainer_class_lookups.h index d03038674..9cffca632 100644 --- a/src/data/pokemon/trainer_class_lookups.h +++ b/src/data/pokemon/trainer_class_lookups.h @@ -1,9 +1,5 @@ -// - -// - -#ifndef POKERUBY_FACILITY_CLASS_LOOKUPS_H -#define POKERUBY_FACILITY_CLASS_LOOKUPS_H +#ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H +#define POKERUBY_TRAINER_CLASS_LOOKUPS_H const u8 gTrainerClassToPicIndex[] = { TRAINER_PIC_ARCHIE, // AQUA_LEADER @@ -165,4 +161,4 @@ const u8 gTrainerClassToNameIndex[] = { TRAINER_CLASS_SIS_AND_BRO // SIS_AND_BRO }; -#endif //POKERUBY_FACILITY_CLASS_LOOKUPS_H +#endif //POKERUBY_TRAINER_CLASS_LOOKUPS_H diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c index 1b00ad96e..eb56974cd 100644 --- a/src/pokemon/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "battle_util.h" #include "data2.h" #include "event_data.h" #include "main.h" diff --git a/src/rom3.c b/src/rom3.c index cdc66989c..11239a681 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -5,6 +5,7 @@ #include "battle_anim.h" #include "battle_anim_81258BC.h" #include "battle_anim_8137220.h" +#include "battle_util.h" #include "cable_club.h" #include "constants/items.h" #include "link.h" @@ -582,7 +583,7 @@ void Emitcmd1(u8 a, u8 b, u8 c) PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4); } -void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e) +void EmitSetMonData(u8 a, u8 b, u8 c, u8 d, void *e) { int i; -- cgit v1.2.3 From fd42bcc78ce229d13afc26af4c6d2dd0187b871d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 7 Jan 2018 23:46:05 -0500 Subject: sub_8096C84 --- src/pokemon/pokemon_storage_system.c | 220 +++++++++++++++++++++++++++++++++-- 1 file changed, 209 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index d6119476c..b0a317cd9 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -5,6 +5,7 @@ #include "field_weather.h" #include "mon_markings.h" #include "overworld.h" +#include "mail_data.h" #include "field_fadetransition.h" #include "menu.h" #include "main.h" @@ -56,9 +57,14 @@ struct PokemonStorageSystemData { u16 unk_000a; struct PCScreenEffectStruct unk_000c; struct UnkStruct_2000020 unk_0020[274]; // refine size later - u8 filler_08b0[4]; + u8 filler_08b0[2]; + s16 unk_08b2; u16 unk_08b4; - u8 filler_08b6[0xa06]; + u8 filler_08b6[0x93c]; + u16 unk_11f2; + u8 filler_11f4[2]; + u8 unk_11f6; + u8 filler_11f7[0xc5]; struct PokemonMarkMenu unk_12bc; struct UnkPSSStruct_2002370 unk_2370; u8 filler_25b4[0xd8]; @@ -80,23 +86,48 @@ void task_intro_29(u8 whichMenu); void sub_8096884(void); void sub_8096AFC(void); void sub_8096B38(void); -void sub_8096BE0(void (*func)(void)); +void SetPSSCallback(void (*func)(void)); void sub_8096BF0(void); void sub_8096C68(void); void sub_8096C84(void); +void sub_8097004(void); +void sub_8097078(void); +void sub_80972A8(void); +void sub_80972FC(void); +void c3_0808DC50(void); +void sub_8097390(void); +void sub_809746C(void); +void sub_809789C(void); +void sub_8097BA0(void); +void sub_8097CC0(void); +void BoxSetMosaic(void); +void sub_80986E8(void); +void sub_8098710(void); +void sub_8098A5C(void); +void sub_809B440(void); +void sub_8096FC8(void); void sub_8097DE0(void); void sub_8097E44(void); void sub_8097E70(void); void sub_8098400(void); void sub_8098734(void); -void sub_8099BF8(u8 a0); +void sub_8098898(u8 index); void sub_8098B48(void); +void sub_8099BF8(u8 a0); +void sub_8099C70(u8 whichBox); +bool8 sub_8099D34(void); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); void sub_809AA24(void); void sub_809AA98(void); +bool8 sub_809AC00(void); void sub_809B0D4(void); void sub_809BBC0(void); void sub_809BD14(void); +bool8 sub_809BE80(void); +bool8 sub_809BEBC(void); +bool8 sub_809BF20(void); +bool8 sub_809BF48(void); +u8 sub_809CA40(void); void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); void sub_809CFF0(void); @@ -150,7 +181,7 @@ const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/b const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); extern const struct StorageAction gUnknown_083B6DF4[]; -extern const struct PokemonStorageSystemData *gUnknown_083B6DB4; +extern const struct PokemonStorageSystemData *gPokemonStorageSystemPtr; extern u8 *const gUnknown_083B6DB8; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; @@ -571,7 +602,7 @@ void StorageSystemCreatePrimaryMenu(u8 whichMenu) void sub_80961A8(void) { - gUnknown_02038474 = gUnknown_083B6DB4->unk_0005; + gUnknown_02038474 = gPokemonStorageSystemPtr->unk_0005; gFieldCallback = sub_8096130; SetMainCallback2(c2_exit_to_overworld_2_switch); } @@ -899,7 +930,7 @@ void sub_8096884(void) break; case 9: sub_8096874(); - sub_8096BE0(sub_8096BF0); + SetPSSCallback(sub_8096BF0); SetMainCallback2(sub_8096B38); SetVBlankCallback(sub_8096AFC); gMain.state++; @@ -967,7 +998,7 @@ void sub_80969A0(void) break; case 10: sub_8096874(); - sub_8096BE0(sub_8096C68); + SetPSSCallback(sub_8096C68); SetMainCallback2(sub_8096B38); gMain.state++; break; @@ -1007,7 +1038,7 @@ void sub_8096B5C(void) } } -void sub_8096BE0(void (*func)(void)) +void SetPSSCallback(void (*func)(void)) { ePokemonStorageSystem.unk_0000 = func; ePokemonStorageSystem.unk_0004 = 0; @@ -1033,7 +1064,7 @@ void sub_8096BF0(void) break; case 2: if (sub_80C5DCC()) - sub_8096BE0(sub_8096C84); + SetPSSCallback(sub_8096C84); break; } } @@ -1041,7 +1072,174 @@ void sub_8096BF0(void) void sub_8096C68(void) { if (!UpdatePaletteFade()) - sub_8096BE0(sub_8096C84); + SetPSSCallback(sub_8096C84); +} + +void sub_8096C84(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + switch (sub_809CA40()) + { + case 1: + PlaySE(SE_SELECT); + ePokemonStorageSystem.unk_0004 = 1; + break; + case 5: + if (ePokemonStorageSystem.unk_0005 != 2) + { + sub_8098898(16); + ePokemonStorageSystem.unk_0004 = 3; + } + else + { + sub_809B0D4(); + SetPSSCallback(sub_8096FC8); + } + break; + case 6: + if (ePokemonStorageSystem.unk_0005 == 2) + { + if (sub_809BF20() && ItemIsMail(ePokemonStorageSystem.unk_11f2)) + { + ePokemonStorageSystem.unk_0004 = 5; + } + else + { + SetPSSCallback(sub_8097004); + } + } + break; + case 4: + SetPSSCallback(sub_8097BA0); + break; + case 16: + SetPSSCallback(sub_8097CC0); + break; + case 7: + PlaySE(SE_SELECT); + SetPSSCallback(sub_809789C); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097078); + break; + case 9: + PlaySE(SE_SELECT); + ePokemonStorageSystem.unk_08b2 = gPokemonStorage.currentBox + 1; + if (ePokemonStorageSystem.unk_08b2 > 13) + ePokemonStorageSystem.unk_08b2 = 0; + sub_8099C70(ePokemonStorageSystem.unk_08b2); + ePokemonStorageSystem.unk_0004 = 2; + break; + case 10: + PlaySE(SE_SELECT); + ePokemonStorageSystem.unk_08b2 = gPokemonStorage.currentBox - 1; + if (ePokemonStorageSystem.unk_08b2 < 0) + ePokemonStorageSystem.unk_08b2 = 13; + sub_8099C70(ePokemonStorageSystem.unk_08b2); + ePokemonStorageSystem.unk_0004 = 2; + break; + case 11: + if (!sub_809BE80()) + { + if (ItemIsMail(ePokemonStorageSystem.unk_11f2)) + { + ePokemonStorageSystem.unk_0004 = 5; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_809746C); + } + } + else + { + ePokemonStorageSystem.unk_0004 = 4; + } + break; + case 13: + if (sub_809BE80()) + { + ePokemonStorageSystem.unk_0004 = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_80972A8); + } + break; + case 14: + if (!sub_809BEBC()) + { + ePokemonStorageSystem.unk_0004 = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(c3_0808DC50); + } + break; + case 12: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097390); + break; + case 15: + PlaySE(SE_SELECT); + SetPSSCallback(sub_80972FC); + break; + } + break; + case 1: + if (!sub_809AC00()) + { + if (sub_809BF48()) + sub_80986E8(); + else + sub_8098710(); + if (ePokemonStorageSystem.unk_11f6) + BoxSetMosaic(); + ePokemonStorageSystem.unk_0004 = 0; + } + break; + case 2: + if (!sub_8099D34()) + { + gPokemonStorage.currentBox = ePokemonStorageSystem.unk_08b2; + if (!gUnknown_0203847C && !sub_809BF20()) + { + sub_809B440(); + BoxSetMosaic(); + } + ePokemonStorageSystem.unk_0004 = 0; + } + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + ePokemonStorageSystem.unk_0004 = 0; + } + break; + case 4: + PlaySE(SE_HAZURE); + sub_8098898(13); + ePokemonStorageSystem.unk_0004 = 6; + break; + case 5: + PlaySE(SE_HAZURE); + sub_8098898(22); + ePokemonStorageSystem.unk_0004 = 6; + break; + case 6: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + } } asm(".section .text.8098898"); -- cgit v1.2.3 From 961d82002d7d073123f55427219f14335b8bac9c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 7 Jan 2018 22:58:03 -0600 Subject: fix Mailbox_DrawMailList --- src/field/player_pc.c | 40 +++++++++++----------------------------- 1 file changed, 11 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 4fef09386..78235590a 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -1039,25 +1039,16 @@ static void Mailbox_UpdateMailList(void) } } -// WWHHHHHYYYYYYYY SOMEBODY PLEASE FIX THIS -static void Mailbox_DrawMailList(u8 taskId) // taskId is unused +void Mailbox_DrawMailList(u8 taskId) // taskId is unused { u16 yCoord = 0; - u16 i = eMailboxInfo.itemsAbove; - register struct MailboxStruct *tempMailbox asm("r1") = &eMailboxInfo; - register struct MailboxStruct *mailbox asm("r6"); + u16 i; - if(i < i + tempMailbox->pageItems) - { - mailbox = tempMailbox; - goto forJump; - for(; i < mailbox->itemsAbove + mailbox->pageItems; i++) + for (i = eMailboxInfo.itemsAbove; i < eMailboxInfo.itemsAbove + eMailboxInfo.pageItems; i++) { - forJump: - yCoord = (i - mailbox->itemsAbove) * 2; + yCoord = (i - eMailboxInfo.itemsAbove) * 2; MenuFillWindowRectWithBlankTile(0x15, yCoord + 2, 0x1C, yCoord + 3); - - if(i != mailbox->count) + if (i != eMailboxInfo.count) { StringCopy(gStringVar1, gSaveBlock1.mail[i + 6].playerName); SanitizeNameString(gStringVar1); @@ -1065,29 +1056,20 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused } else { - goto weirdCase; // again, what??? + MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); + break; } } - } -beforeLabel: - if(i - eMailboxInfo.itemsAbove != 8) + if (i - eMailboxInfo.itemsAbove != 8) MenuFillWindowRectWithBlankTile(0x15, yCoord + 4, 0x1C, 0x12); - switch(eMailboxInfo.itemsAbove) - { - default: + if (eMailboxInfo.itemsAbove != 0) CreateVerticalScrollIndicators(0, 0xC8, 8); - break; -weirdCase: - MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); - goto beforeLabel; - case 0: + else DestroyVerticalScrollIndicator(0); - break; - } - if(eMailboxInfo.itemsAbove + eMailboxInfo.pageItems <= eMailboxInfo.count) + if (eMailboxInfo.itemsAbove + eMailboxInfo.pageItems <= eMailboxInfo.count) CreateVerticalScrollIndicators(1, 0xC8, 0x98); else DestroyVerticalScrollIndicator(1); -- cgit v1.2.3 From 0e371dcb1a76859f93b3d4cc1dc5ef48696b98b7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 7 Jan 2018 23:12:24 -0600 Subject: fix ItemStorage_DrawItemList --- src/field/player_pc.c | 72 ++++++++++++++++++++++----------------------------- 1 file changed, 31 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 78235590a..928cb9689 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -866,58 +866,48 @@ static void ItemStorage_DrawItemList(u8 taskId) u16 i; u16 yCoord = 0; - // r5 is i and is unsigned 16-bit. - - for(i = ITEMS_ABOVE_TOP; i < ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS; i++) + for (i = ITEMS_ABOVE_TOP; i < ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS; i++) { yCoord = (i - ITEMS_ABOVE_TOP) * 2; - if(i != NUM_ITEMS) + if (i == NUM_ITEMS) + { + sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (yCoord + 2) * 8, 0x68, 1); + break; + } + else { tempArg = 0; - if(SWITCH_MODE_ACTIVE != FALSE && i == SWAP_ITEM_INDEX) + if (SWITCH_MODE_ACTIVE != FALSE && i == SWAP_ITEM_INDEX) tempArg = 1; - switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) + switch (GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) { - case 0: - case 1: - case 3: - ItemStorage_DrawNormalItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); - break; - case 4: - ItemStorage_DrawKeyItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); - break; - case 2: - ItemStorage_DrawTMHMEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); - break; + case 0: + case 1: + case 3: + ItemStorage_DrawNormalItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); + break; + case 4: + ItemStorage_DrawKeyItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); + break; + case 2: + ItemStorage_DrawTMHMEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); + break; } } - else - { - goto weirdCase; // what??? - } } -beforeLabel: - if(i - ITEMS_ABOVE_TOP < 8) + if (i - ITEMS_ABOVE_TOP < 8) MenuFillWindowRectWithBlankTile(16, yCoord + 4, 0x1C, 0x12); - switch(ITEMS_ABOVE_TOP) - { - default: + if (ITEMS_ABOVE_TOP != 0) CreateVerticalScrollIndicators(0, 0xB8, 8); - break; -weirdCase: - sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (yCoord + 2) * 8, 0x68, 1); - goto beforeLabel; - case 0: + else DestroyVerticalScrollIndicator(0); - break; - } - if(ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS <= NUM_ITEMS) + if (ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS <= NUM_ITEMS) CreateVerticalScrollIndicators(1, 0xB8, 0x98); else DestroyVerticalScrollIndicator(1); @@ -1039,7 +1029,7 @@ static void Mailbox_UpdateMailList(void) } } -void Mailbox_DrawMailList(u8 taskId) // taskId is unused +static void Mailbox_DrawMailList(u8 taskId) // taskId is unused { u16 yCoord = 0; u16 i; @@ -1048,16 +1038,16 @@ void Mailbox_DrawMailList(u8 taskId) // taskId is unused { yCoord = (i - eMailboxInfo.itemsAbove) * 2; MenuFillWindowRectWithBlankTile(0x15, yCoord + 2, 0x1C, yCoord + 3); - if (i != eMailboxInfo.count) + if (i == eMailboxInfo.count) { - StringCopy(gStringVar1, gSaveBlock1.mail[i + 6].playerName); - SanitizeNameString(gStringVar1); - MenuPrint(gStringVar1, 0x15, yCoord + 2); + MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); + break; } else { - MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); - break; + StringCopy(gStringVar1, gSaveBlock1.mail[i + 6].playerName); + SanitizeNameString(gStringVar1); + MenuPrint(gStringVar1, 0x15, yCoord + 2); } } -- cgit v1.2.3 From 7f3eb30bcb9da4a3a651f1aca7a8fd6b7980491a Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 8 Jan 2018 16:03:33 +0100 Subject: Matched sub_812B058 --- src/battle/anim/sfx.c | 95 ++------------------------------------------------- 1 file changed, 3 insertions(+), 92 deletions(-) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 99f050dcb..484548d4d 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -70,16 +70,16 @@ void sub_812B004(u8 taskId) } } -#ifdef NONMATCHING void sub_812B058(u8 taskId) { - s16 sp, r10, r7, r9; + s16 sp; + u8 r10, r7, r9; s8 r5, r6, r4, r0; sp = gBattleAnimArgs[0]; r5 = gBattleAnimArgs[2]; r6 = gBattleAnimArgs[3]; - r10 = gBattleAnimArgs[4]; + r10 = gBattleAnimArgs[4]; r7 = gBattleAnimArgs[5]; r9 = gBattleAnimArgs[6]; r4 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); @@ -100,95 +100,6 @@ void sub_812B058(u8 taskId) TASK.func = sub_812B108; sub_812B108(taskId); } -#else -__attribute__((naked)) -void sub_812B058(u8 taskId) -{ - 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, 0x4\n\ - mov r8, r0\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - ldr r0, _0812B0FC @ =gBattleAnimArgs\n\ - ldrh r1, [r0]\n\ - str r1, [sp]\n\ - ldrb r5, [r0, 0x4]\n\ - ldrb r6, [r0, 0x6]\n\ - ldrb r3, [r0, 0x8]\n\ - mov r10, r3\n\ - ldrb r7, [r0, 0xA]\n\ - ldrb r1, [r0, 0xC]\n\ - mov r9, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - bl BattleAnimAdjustPanning\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r5, 24\n\ - asrs r5, 24\n\ - adds r0, r5, 0\n\ - bl BattleAnimAdjustPanning\n\ - adds r5, r0, 0\n\ - lsls r4, 24\n\ - asrs r4, 24\n\ - lsls r5, 24\n\ - asrs r5, 24\n\ - lsls r6, 24\n\ - asrs r6, 24\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - bl CalculatePanIncrement\n\ - ldr r2, _0812B100 @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r2\n\ - movs r2, 0\n\ - mov r6, sp\n\ - ldrh r6, [r6]\n\ - strh r6, [r1, 0x8]\n\ - strh r4, [r1, 0xA]\n\ - strh r5, [r1, 0xC]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - strh r0, [r1, 0xE]\n\ - mov r0, r10\n\ - strh r0, [r1, 0x10]\n\ - strh r7, [r1, 0x12]\n\ - mov r3, r9\n\ - strh r3, [r1, 0x14]\n\ - strh r2, [r1, 0x1C]\n\ - strh r4, [r1, 0x1E]\n\ - strh r3, [r1, 0x20]\n\ - ldr r2, _0812B104 @ =sub_812B108\n\ - str r2, [r1]\n\ - mov r0, r8\n\ - bl _call_via_r2\n\ - add sp, 0x4\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\ - .align 2, 0\n\ -_0812B0FC: .4byte gBattleAnimArgs\n\ -_0812B100: .4byte gTasks\n\ -_0812B104: .4byte sub_812B108\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_812B108(u8 taskId) { -- cgit v1.2.3 From 4bdab579016705c6dc914e3d2af2d608eb256a9b Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 8 Jan 2018 18:40:57 +0100 Subject: Decompiled sub_812B18C --- src/battle/anim/sfx.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 484548d4d..cb61a566f 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -1,9 +1,15 @@ #include "global.h" #include "battle_anim.h" +#include "contest.h" +#include "ewram.h" +#include "rom_8077ABC.h" #include "sound.h" #include "task.h" extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gBattlePartyID[]; void sub_812AF98(u8 taskId); void sub_812B004(u8 taskId); @@ -122,3 +128,57 @@ void sub_812B108(u8 taskId) TASK.data[11] = sub_8077104(TASK.data[11]); } } + +// #define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) +// #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348)) + +void sub_812B18C(u8 taskId) +{ + u16 species = 0; + s8 pan = BattleAnimAdjustPanning(-64); + + if (IsContest()) + { + if (!gBattleAnimArgs[0]) + species = shared19348.unk0; + else + DestroyAnimVisualTask(taskId); + } + else + { + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gAnimBankAttacker; + else if (gBattleAnimArgs[0] == 1) + bank = gAnimBankTarget; + else if (gBattleAnimArgs[0] == 2) + bank = gAnimBankAttacker ^ 0x2; + else + bank = gAnimBankTarget ^ 0x2; + + if (gBattleAnimArgs[0] == 1 || gBattleAnimArgs[0] == 3) + { + if (!IsAnimBankSpriteVisible(bank)) + { + DestroyAnimVisualTask(taskId); + return; + } + } + + if (GetBankSide(bank)) + species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], 0xB); + else + species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], 0xB); + } + + if (species != 0) + { + s16 mode = gBattleAnimArgs[1]; + if (mode == 0xFF) + PlayCry1(species, pan); + else + PlayCry3(species, pan, mode); + } + + DestroyAnimVisualTask(taskId); +} \ No newline at end of file -- cgit v1.2.3 From 56c2c7ef00396c53a8bc859141b46fa488bb42fa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 13:39:22 -0700 Subject: through sub_8097078 --- src/pokemon/pokemon_storage_system.c | 190 +++++++++++++++++++++++++++++++++-- 1 file changed, 183 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index b0a317cd9..feed68e50 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -64,7 +64,9 @@ struct PokemonStorageSystemData { u16 unk_11f2; u8 filler_11f4[2]; u8 unk_11f6; - u8 filler_11f7[0xc5]; + u8 filler_11f7[2]; + u8 unk_11f9; + u8 filler_11fa[0xc2]; struct PokemonMarkMenu unk_12bc; struct UnkPSSStruct_2002370 unk_2370; u8 filler_25b4[0xd8]; @@ -90,6 +92,7 @@ void SetPSSCallback(void (*func)(void)); void sub_8096BF0(void); void sub_8096C68(void); void sub_8096C84(void); +void sub_8096FC8(void); void sub_8097004(void); void sub_8097078(void); void sub_80972A8(void); @@ -97,21 +100,26 @@ void sub_80972FC(void); void c3_0808DC50(void); void sub_8097390(void); void sub_809746C(void); +void sub_8097594(void); +void sub_8097788(void); +void sub_80977E4(void); void sub_809789C(void); void sub_8097BA0(void); void sub_8097CC0(void); -void BoxSetMosaic(void); -void sub_80986E8(void); -void sub_8098710(void); -void sub_8098A5C(void); -void sub_809B440(void); -void sub_8096FC8(void); void sub_8097DE0(void); void sub_8097E44(void); void sub_8097E70(void); +void BoxSetMosaic(void); void sub_8098400(void); +void add_to_c3_somehow(void); +bool8 sub_80985CC(void); +void sub_80986E8(void); +void sub_8098710(void); void sub_8098734(void); +void sub_809880C(void); +bool8 sub_8098830(void); void sub_8098898(u8 index); +void sub_8098A5C(void); void sub_8098B48(void); void sub_8099BF8(u8 a0); void sub_8099C70(u8 whichBox); @@ -120,7 +128,10 @@ struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); void sub_809AA24(void); void sub_809AA98(void); bool8 sub_809AC00(void); +void sub_809B0C0(u8 a0); void sub_809B0D4(void); +u8 sub_809B0F4(void); +void sub_809B440(void); void sub_809BBC0(void); void sub_809BD14(void); bool8 sub_809BE80(void); @@ -128,6 +139,8 @@ bool8 sub_809BEBC(void); bool8 sub_809BF20(void); bool8 sub_809BF48(void); u8 sub_809CA40(void); +void sub_809CE84(void); +s16 sub_809CF30(void); void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); void sub_809CFF0(void); @@ -1242,6 +1255,169 @@ void sub_8096C84(void) } } +void sub_8096FC8(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_809880C(); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_8098830()) + SetPSSCallback(sub_8096C84); + break; + } +} + +void sub_8097004(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + PlaySE(SE_SELECT); + add_to_c3_somehow(); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_80985CC()) + { + sub_809B0C0(sub_809B0F4()); + ePokemonStorageSystem.unk_0004++; + } + break; + case 2: + if (!sub_809AC00()) + { + if (ePokemonStorageSystem.unk_11f6) + BoxSetMosaic(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097078(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_8098898(4); + sub_809CE84(); + ePokemonStorageSystem.unk_0004 = 1; + break; + case 1: + switch (sub_809CF30()) + { + case -1: + case 0: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 3: + if (sub_809BE80()) + { + ePokemonStorageSystem.unk_0004 = 2; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_80972A8); + } + break; + case 5: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_80972FC); + break; + case 4: + if (!sub_809BEBC()) + { + ePokemonStorageSystem.unk_0004 = 2; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(c3_0808DC50); + } + break; + case 2: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097390); + break; + case 1: + if (sub_809BE80()) + { + ePokemonStorageSystem.unk_0004 = 2; + } + else if (ItemIsMail(ePokemonStorageSystem.unk_11f2)) + { + ePokemonStorageSystem.unk_0004 = 3; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_809746C); + } + break; + case 7: + if (sub_809BE80()) + { + ePokemonStorageSystem.unk_0004 = 2; + } + else if (ePokemonStorageSystem.unk_11f9) + { + ePokemonStorageSystem.unk_0004 = 4; + } + else if (ItemIsMail(ePokemonStorageSystem.unk_11f2)) + { + ePokemonStorageSystem.unk_0004 = 3; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097594); + } + break; + case 6: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097788); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(sub_80977E4); + break; + } + break; + case 2: + PlaySE(SE_HAZURE); + sub_8098898(13); + ePokemonStorageSystem.unk_0004 = 5; + break; + case 4: + PlaySE(SE_HAZURE); + sub_8098898(17); + ePokemonStorageSystem.unk_0004 = 5; + break; + case 3: + PlaySE(SE_HAZURE); + sub_8098898(22); + ePokemonStorageSystem.unk_0004 = 5; + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From 673d64c35b21ebb8f3c6fc8b547c7f736fa4f593 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 13:53:24 -0700 Subject: through sub_8097390 --- src/pokemon/pokemon_storage_system.c | 114 +++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index feed68e50..6f51b823e 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -103,6 +103,7 @@ void sub_809746C(void); void sub_8097594(void); void sub_8097788(void); void sub_80977E4(void); +void sub_8097858(void); void sub_809789C(void); void sub_8097BA0(void); void sub_8097CC0(void); @@ -116,10 +117,13 @@ bool8 sub_80985CC(void); void sub_80986E8(void); void sub_8098710(void); void sub_8098734(void); +void sub_80987DC(void); void sub_809880C(void); bool8 sub_8098830(void); void sub_8098898(u8 index); void sub_8098A5C(void); +void sub_809B100(u8 a0); +bool8 sub_809B130(void); void sub_8098B48(void); void sub_8099BF8(u8 a0); void sub_8099C70(u8 whichBox); @@ -130,6 +134,7 @@ void sub_809AA98(void); bool8 sub_809AC00(void); void sub_809B0C0(u8 a0); void sub_809B0D4(void); +void sub_809B0E0(void); u8 sub_809B0F4(void); void sub_809B440(void); void sub_809BBC0(void); @@ -1418,6 +1423,115 @@ void sub_8097078(void) } } +void sub_80972A8(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_809B100(0); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + if (gUnknown_0203847C) + SetPSSCallback(sub_8097858); + else + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_80972FC(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_809B100(1); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + if (gUnknown_0203847C) + SetPSSCallback(sub_8097858); + else + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void c3_0808DC50(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_809B100(2); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + BoxSetMosaic(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097390(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + if (CalculatePlayerPartyCount() == 6) + { + sub_8098898(14); + ePokemonStorageSystem.unk_0004 = 1; + } + else + { + sub_809B0E0(); + sub_809B100(0); + ePokemonStorageSystem.unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + if (!sub_809B130()) + { + sub_809880C(); + ePokemonStorageSystem.unk_0004++; + } + break; + case 3: + if (!sub_8098830()) + { + sub_809B100(1); + ePokemonStorageSystem.unk_0004++; + } + break; + case 4: + if (!sub_809B130()) + { + sub_80987DC(); + ePokemonStorageSystem.unk_0004++; + } + break; + case 5: + SetPSSCallback(sub_8097004); + break; + } +} + asm(".section .text.8098898"); void sub_8098898(u8 index) { -- cgit v1.2.3 From c4c885504729b56c00aa245aea6e284a1b6a1719 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 8 Jan 2018 15:53:35 -0600 Subject: make gUnknown_03000740 static --- src/easy_chat_2.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) (limited to 'src') diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 8a3bb9ab9..fe3aa7cc9 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -70,8 +70,7 @@ static u16 sub_80EB960(void); u8 sub_80EB9C8(void); static u16 sub_80EB9D8(void); -// put this in .bss, damnit! -__attribute__((section(".bss"))) u8 gUnknown_03000740 = 0; +static u8 gUnknown_03000740; const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); const u16 InterviewPalette_1[] = INCBIN_U16("graphics/misc/interview_pal1.gbapal"); @@ -328,19 +327,6 @@ const union AnimCmd *const gSpriteAnimTable_83DBC9C[] = gSpriteAnim_83DBC74, }; -/* -const struct SpriteTemplate gSpriteTemplate_83DBCAC = -{ - .tileTag = 1, - .paletteTag = 1, - .oam = &gOamData_83DBC14, - .anims = gSpriteAnimTable_83DBC7C, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80E85F8, -}; -*/ - void sub_80E8420(void) { struct SpriteTemplate spriteTemplate_83DBCAC = -- cgit v1.2.3 From 78df16e7989be5142ed0d1fd01c4ece6483f0571 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 14:57:26 -0700 Subject: Through sub_809746C; enums for PC storage actions --- src/pokemon/pokemon_storage_system.c | 182 +++++++++++++++++++++++++++-------- 1 file changed, 144 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 6f51b823e..916dc411a 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -19,6 +19,42 @@ #include "naming_screen.h" #include "pokemon_storage_system.h" +enum { + PC_TEXT_EXIT_BOX, + PC_TEXT_WHAT_YOU_DO, + PC_TEXT_PICK_A_THEME, + PC_TEXT_PICK_A_WALLPAPER, + PC_TEXT_IS_SELECTED, + PC_TEXT_JUMP_TO_WHICH_BOX, + PC_TEXT_DEPOSIT_IN_WHICH_BOX, + PC_TEXT_WAS_DEPOSITED, + PC_TEXT_BOX_IS_FULL, + PC_TEXT_RELEASE_POKE, + PC_TEXT_WAS_RELEASED, + PC_TEXT_BYE_BYE, + PC_TEXT_MARK_POKE, + PC_TEXT_LAST_POKE, + PC_TEXT_PARTY_FULL, + PC_TEXT_HOLDING_POKE, + PC_TEXT_WHICH_ONE_WILL_TAKE, + PC_TEXT_CANT_RELEASE_EGG, + PC_TEXT_CONTINUE_BOX, + PC_TEXT_CAME_BACK, + PC_TEXT_WORRIED, + PC_TEXT_SURPRISE, + PC_TEXT_PLEASE_REMOVE_MAIL +}; + +enum { + PC_TEXT_FMT_NORMAL, + PC_TEXT_FMT_MON_NAME, + PC_TEXT_FMT_UNK_02, + PC_TEXT_FMT_UNK_03, + PC_TEXT_FMT_MON_NAME_2, + PC_TEXT_FMT_UNK_05, + PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK +}; + struct StorageAction { u8 *text; u8 format; @@ -66,7 +102,7 @@ struct PokemonStorageSystemData { u8 unk_11f6; u8 filler_11f7[2]; u8 unk_11f9; - u8 filler_11fa[0xc2]; + u8 unk_11fa[0xc2]; struct PokemonMarkMenu unk_12bc; struct UnkPSSStruct_2002370 unk_2370; u8 filler_25b4[0xd8]; @@ -74,6 +110,9 @@ struct PokemonStorageSystemData { u8 unk_268d; u8 unk_268e; struct Pokemon *unk_2690; + u8 unk_2694[18]; + u8 unk_26a6[62]; + u8 unk_26e4[80]; }; void StorageSystemCreatePrimaryMenu(u8 whichMenu); @@ -120,11 +159,13 @@ void sub_8098734(void); void sub_80987DC(void); void sub_809880C(void); bool8 sub_8098830(void); -void sub_8098898(u8 index); +void PrintStorageActionText(u8 index); void sub_8098A5C(void); void sub_809B100(u8 a0); bool8 sub_809B130(void); void sub_8098B48(void); +void sub_8099310(void); +bool8 sub_8099374(void); void sub_8099BF8(u8 a0); void sub_8099C70(u8 whichBox); bool8 sub_8099D34(void); @@ -137,6 +178,8 @@ void sub_809B0D4(void); void sub_809B0E0(void); u8 sub_809B0F4(void); void sub_809B440(void); +bool8 sub_809B62C(u8); +void sub_809B6BC(void); void sub_809BBC0(void); void sub_809BD14(void); bool8 sub_809BE80(void); @@ -198,7 +241,7 @@ const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/b const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); -extern const struct StorageAction gUnknown_083B6DF4[]; +extern const struct StorageAction gPCStorageActionTexts[]; extern const struct PokemonStorageSystemData *gPokemonStorageSystemPtr; extern u8 *const gUnknown_083B6DB8; @@ -1107,7 +1150,7 @@ void sub_8096C84(void) case 5: if (ePokemonStorageSystem.unk_0005 != 2) { - sub_8098898(16); + PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); ePokemonStorageSystem.unk_0004 = 3; } else @@ -1242,12 +1285,12 @@ void sub_8096C84(void) break; case 4: PlaySE(SE_HAZURE); - sub_8098898(13); + PrintStorageActionText(PC_TEXT_LAST_POKE); ePokemonStorageSystem.unk_0004 = 6; break; case 5: PlaySE(SE_HAZURE); - sub_8098898(22); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); ePokemonStorageSystem.unk_0004 = 6; break; case 6: @@ -1307,7 +1350,7 @@ void sub_8097078(void) switch (ePokemonStorageSystem.unk_0004) { case 0: - sub_8098898(4); + PrintStorageActionText(PC_TEXT_IS_SELECTED); sub_809CE84(); ePokemonStorageSystem.unk_0004 = 1; break; @@ -1400,17 +1443,17 @@ void sub_8097078(void) break; case 2: PlaySE(SE_HAZURE); - sub_8098898(13); + PrintStorageActionText(PC_TEXT_LAST_POKE); ePokemonStorageSystem.unk_0004 = 5; break; case 4: PlaySE(SE_HAZURE); - sub_8098898(17); + PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); ePokemonStorageSystem.unk_0004 = 5; break; case 3: PlaySE(SE_HAZURE); - sub_8098898(22); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); ePokemonStorageSystem.unk_0004 = 5; break; case 5: @@ -1488,7 +1531,7 @@ void sub_8097390(void) case 0: if (CalculatePlayerPartyCount() == 6) { - sub_8098898(14); + PrintStorageActionText(PC_TEXT_PARTY_FULL); ePokemonStorageSystem.unk_0004 = 1; } else @@ -1532,83 +1575,146 @@ void sub_8097390(void) } } +void sub_809746C(void) +{ + u8 r4; + + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + sub_8096264(&ePokemonStorageSystem.unk_2370, 0x0007, 0xdaca, 3); + sub_809634C(gUnknown_0203847E); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + r4 = sub_8096368(); + if (r4 == 200); + else if (r4 == 201) + { + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + SetPSSCallback(sub_8096C84); + } + else + { + if (sub_809B62C(r4)) + { + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + ePokemonStorageSystem.unk_0004 = 2; + } + else + { + PrintStorageActionText(PC_TEXT_BOX_IS_FULL); + ePokemonStorageSystem.unk_0004 = 4; + } + gUnknown_0203847E = r4; + } + break; + case 2: + party_compaction(); + sub_8099310(); + ePokemonStorageSystem.unk_0004++; + break; + case 3: + if (!sub_8099374()) + { + sub_809B6BC(); + BoxSetMosaic(); + sub_80987DC(); + SetPSSCallback(sub_8096C84); + } + break; + case 4: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + ePokemonStorageSystem.unk_0004 = 1; + } + break; + } +} + asm(".section .text.8098898"); -void sub_8098898(u8 index) { +void PrintStorageActionText(u8 index) { u8 *ptr; MenuDrawTextWindow(10, 16, 29, 19); - switch (gUnknown_083B6DF4[index].format) + switch (gPCStorageActionTexts[index].format) { - case 2: - ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); - ptr = StringCopy(ptr, gUnk20011fa); + case PC_TEXT_FMT_UNK_02: + ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, ePokemonStorageSystem.unk_11fa); break; - case 5: - ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); - ptr = StringCopy(ptr, gUnk20026e4); + case PC_TEXT_FMT_UNK_05: + ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, ePokemonStorageSystem.unk_26e4); break; - case 1: + case PC_TEXT_FMT_MON_NAME: // {var} + " is selected." - ptr = StringCopy(gUnk2002694, gUnk20011fa); - ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ePokemonStorageSystem.unk_2694, ePokemonStorageSystem.unk_11fa); + ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); break; - case 4: + case PC_TEXT_FMT_MON_NAME_2: // {var} + " was released." - ptr = StringCopy(gUnk2002694, gUnk20026e4); + ptr = StringCopy(ePokemonStorageSystem.unk_2694, ePokemonStorageSystem.unk_26e4); #if ENGLISH - ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); #elif GERMAN - ptr = de_sub_8073174(gUnk2002694, gUnknown_083B6DF4[index].text); + ptr = de_sub_8073174(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); #endif break; - case 3: + case PC_TEXT_FMT_UNK_03: { u8 *stringLength; u8 *text; - text = gUnknown_083B6DF4[index].text; + text = gPCStorageActionTexts[index].text; stringLength = &text[StringLength(text)] + 1; - ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); - ptr = StringCopy(ptr, gUnk20011fa); + ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, ePokemonStorageSystem.unk_11fa); ptr = StringCopy(ptr, stringLength); } break; - case 6: + case PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK: // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1) { u8 *stringLength; u8 *text; - text = gUnknown_083B6DF4[index].text; + text = gPCStorageActionTexts[index].text; stringLength = &text[StringLength(text)] - 1; - ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); - ptr = StringCopy(ptr - 1, gUnk20026e4); + ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr - 1, ePokemonStorageSystem.unk_26e4); ptr = StringCopy(ptr, stringLength); } break; - case 0: + case PC_TEXT_FMT_NORMAL: default: - ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text); + ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); break; } - while (ptr < gUnk20026A6) + while (ptr < ePokemonStorageSystem.unk_26a6) { ptr[0] = CHAR_SPACE; ptr++; } ptr[0] = EOS; - MenuPrint(gUnk2002694, 11, 17); + MenuPrint(ePokemonStorageSystem.unk_2694, 11, 17); } -- cgit v1.2.3 From a289caaf97cddbf212fc860013b8815323a84921 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 8 Jan 2018 17:03:06 -0500 Subject: let the user deal with nogbaprint, forget this --- src/libs/libisagbprn.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index eccc31f48..c066a41a0 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -2,16 +2,14 @@ #include #include "gba/gba.h" #include "config.h" -#include "assert.h" #define AGB_PRINT_FLUSH_ADDR 0x9FE209D #define AGB_PRINT_STRUCT_ADDR 0x9FE20F8 #define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE #define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) -// TODO: make no$gba support not shit - // for auto no$gba support, the string "no$gba" should be at this address. +// except it's not, blame Martin, hence I'm letting the user deal with this nonsense. #define NOGBAIDADDR 0x4FFFA00 #define NOGBAPRINTADDR 0x4FFFA14 @@ -26,6 +24,7 @@ struct AGBPrintStruct typedef void (*LPFN_PRINT_FLUSH)(void); #ifndef NDEBUG + void AGBPrintFlush1Block(void); void AGBPrintInit(void) @@ -156,12 +155,12 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP } } -// TODO: Find a way to seamlessly support no$gba without shit hack defines -// nogba print function +// nogba print function, uncomment to use /* void NOGBAPrint(const char *pBuf) { *(volatile u32*)NOGBAPRINTADDR = (u32)pBuf; -}*/ +} +*/ #endif -- cgit v1.2.3 From 882bf5c3cf945927b3049eb8675bf1964d8706e8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 15:22:37 -0700 Subject: sub_8097594 --- src/pokemon/pokemon_storage_system.c | 144 ++++++++++++++++++++++++++++++++++- 1 file changed, 142 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 916dc411a..9e18dadb5 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -158,14 +158,16 @@ void sub_8098710(void); void sub_8098734(void); void sub_80987DC(void); void sub_809880C(void); +void sub_809801C(void); bool8 sub_8098830(void); void PrintStorageActionText(u8 index); +void sub_8098A38(u8); void sub_8098A5C(void); -void sub_809B100(u8 a0); -bool8 sub_809B130(void); void sub_8098B48(void); void sub_8099310(void); bool8 sub_8099374(void); +void sub_8099958(void); +bool8 sub_8099990(void); void sub_8099BF8(u8 a0); void sub_8099C70(u8 whichBox); bool8 sub_8099D34(void); @@ -177,9 +179,17 @@ void sub_809B0C0(u8 a0); void sub_809B0D4(void); void sub_809B0E0(void); u8 sub_809B0F4(void); +void sub_809B100(u8 a0); +bool8 sub_809B130(void); void sub_809B440(void); bool8 sub_809B62C(u8); void sub_809B6BC(void); +void sub_809B6DC(void); +bool8 sub_809B734(void); +void sub_809B760(void); +void sub_809B7AC(void); +void sub_809B7D4(void); +s8 sub_809B960(void); void sub_809BBC0(void); void sub_809BD14(void); bool8 sub_809BE80(void); @@ -1638,6 +1648,136 @@ void sub_809746C(void) } } +void sub_8097594(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_RELEASE_POKE); + sub_8098A38(1); + ePokemonStorageSystem.unk_0004++; + // fallthrough + case 1: + switch (ProcessMenuInputNoWrap()) + { + case -1: + case 1: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 0: + sub_8098A5C(); + sub_809B7D4(); + sub_809B6DC(); + ePokemonStorageSystem.unk_0004++; + break; + } + break; + case 2: + sub_809B960(); + if (!sub_809B734()) + { + while (1) + { + s8 r0 = sub_809B960(); + if (r0 == 1) + { + ePokemonStorageSystem.unk_0004++; + break; + } + if (r0 == 0) + { + ePokemonStorageSystem.unk_0004 = 8; + break; + } + } + } + break; + case 3: + sub_809B760(); + sub_809801C(); + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + ePokemonStorageSystem.unk_0004++; + break; + case 4: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_BYE_BYE); + ePokemonStorageSystem.unk_0004++; + } + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + if (gUnknown_0203847C) + { + party_compaction(); + sub_8099310(); + ePokemonStorageSystem.unk_0004++; + } + else + { + ePokemonStorageSystem.unk_0004 = 7; + } + } + break; + case 6: + if (!sub_8099374()) + { + sub_809B440(); + BoxSetMosaic(); + sub_80987DC(); + ePokemonStorageSystem.unk_0004++; + } + break; + case 7: + SetPSSCallback(sub_8096C84); + break; + case 8: + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + ePokemonStorageSystem.unk_0004++; + break; + case 9: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_SURPRISE); + ePokemonStorageSystem.unk_0004++; + } + break; + case 10: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + sub_8099958(); + ePokemonStorageSystem.unk_0004++; + } + break; + case 11: + if (!sub_8099990()) + { + sub_809B7AC(); + PrintStorageActionText(PC_TEXT_CAME_BACK); + ePokemonStorageSystem.unk_0004++; + } + break; + case 12: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_WORRIED); + ePokemonStorageSystem.unk_0004++; + } + break; + case 13: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + asm(".section .text.8098898"); void PrintStorageActionText(u8 index) { -- cgit v1.2.3 From 660fa0c0f38a684eda6c117958447deacac88820 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 15:37:05 -0700 Subject: through sub_8097858 --- src/pokemon/pokemon_storage_system.c | 67 +++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 9e18dadb5..8b0893c73 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -100,7 +100,8 @@ struct PokemonStorageSystemData { u16 unk_11f2; u8 filler_11f4[2]; u8 unk_11f6; - u8 filler_11f7[2]; + u8 unk_11f7; + u8 unk_11f8; u8 unk_11f9; u8 unk_11fa[0xc2]; struct PokemonMarkMenu unk_12bc; @@ -191,7 +192,9 @@ void sub_809B7AC(void); void sub_809B7D4(void); s8 sub_809B960(void); void sub_809BBC0(void); +void sub_809BC18(void); void sub_809BD14(void); +void sub_809BDD8(u8 markings); bool8 sub_809BE80(void); bool8 sub_809BEBC(void); bool8 sub_809BF20(void); @@ -1778,6 +1781,68 @@ void sub_8097594(void) } } +void sub_8097788(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_809BC18(); + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + { + gUnknown_0203847F = 0; + ePokemonStorageSystem.unk_0006 = 0; + SetMainCallback2(sub_8096B5C); + } + break; + } +} + +void sub_80977E4(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_MARK_POKE); + ePokemonStorageSystem.unk_12bc.markings = ePokemonStorageSystem.unk_11f7; + sub_80F7418(ePokemonStorageSystem.unk_11f7, 0xb0, 0x10); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_80F7500()) + { + sub_80F7470(); + sub_8098A5C(); + sub_809BDD8(ePokemonStorageSystem.unk_12bc.markings); + sub_809801C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097858(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + party_compaction(); + sub_8099310(); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!sub_8099374()) + { + sub_80987DC(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + asm(".section .text.8098898"); void PrintStorageActionText(u8 index) { -- cgit v1.2.3 From 353a083d97be81cbc612ecb8de46b62a0e523362 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Tue, 9 Jan 2018 02:38:57 +0100 Subject: Finished decompiling battle_anim_sfx --- src/battle/anim/sfx.c | 149 ++++++++++++++++++++++++++++++++++++++--------- src/battle/battle_anim.c | 6 +- 2 files changed, 126 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index cb61a566f..470fea3cc 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -10,26 +10,31 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u16 gBattlePartyID[]; +extern u16 gAnimSpeciesByBanks[]; +extern u8 gUnknown_0202F7D2; void sub_812AF98(u8 taskId); void sub_812B004(u8 taskId); void sub_812B004(u8 taskId); void sub_812B108(u8 taskId); +void sub_812B404(u8 taskId); +// used in 1 move: +// Move_FIRE_BLAST void sub_812AF30(u8 taskId) { - s8 sourcePan, targetPan, incrementPan; + s8 sourcePan, targetPan, panIncrement; TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; sourcePan = BattleAnimAdjustPanning(-64); targetPan = BattleAnimAdjustPanning(63); - incrementPan = CalculatePanIncrement(sourcePan, targetPan, 2); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, 2); TASK.data[2] = sourcePan; TASK.data[3] = targetPan; - TASK.data[4] = incrementPan; + TASK.data[4] = panIncrement; TASK.data[10] = 10; TASK.func = sub_812AF98; @@ -38,7 +43,7 @@ void sub_812AF30(u8 taskId) void sub_812AF98(u8 taskId) { s16 pan = TASK.data[2]; - s8 var0 = TASK.data[4]; + s8 dPan = TASK.data[4]; if (++TASK.data[11] == 111) { @@ -53,8 +58,8 @@ void sub_812AF98(u8 taskId) TASK.data[10] = 0; PlaySE12WithPanning(TASK.data[0], pan); } - pan += var0; - TASK.data[2] = sub_8077104(pan); + pan += dPan; + TASK.data[2] = sub_8077104(pan, dPan); } } @@ -66,7 +71,7 @@ void sub_812B004(u8 taskId) { TASK.data[10] = 0; - pan = BattleAnimAdjustPanning(0x3f); + pan = BattleAnimAdjustPanning(63); PlaySE12WithPanning(TASK.data[1], pan); if (++TASK.data[11] == 2) @@ -76,31 +81,32 @@ void sub_812B004(u8 taskId) } } +// used in 7 moves: +// Move_ICE_BEAM, Move_AURORA_BEAM, Move_PSYBEAM, +// Move_PSYWAVE, Move_SHADOW_BALL, Move_TRI_ATTACK, +// Move_HYPER_BEAM void sub_812B058(u8 taskId) { - s16 sp; - u8 r10, r7, r9; - s8 r5, r6, r4, r0; - - sp = gBattleAnimArgs[0]; - r5 = gBattleAnimArgs[2]; - r6 = gBattleAnimArgs[3]; - r10 = gBattleAnimArgs[4]; - r7 = gBattleAnimArgs[5]; - r9 = gBattleAnimArgs[6]; - r4 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); - r5 = BattleAnimAdjustPanning(r5); - r0 = CalculatePanIncrement(r4, r5, r6); + s16 sp = gBattleAnimArgs[0]; + s8 r5 = gBattleAnimArgs[2]; + s8 panIncrement = gBattleAnimArgs[3]; + u8 r10 = gBattleAnimArgs[4]; // number of times the sound must be played + u8 r7 = gBattleAnimArgs[5]; + u8 r9 = gBattleAnimArgs[6]; + + s8 pan1 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + s8 pan2 = BattleAnimAdjustPanning(r5); + panIncrement = CalculatePanIncrement(pan1, pan2, panIncrement); TASK.data[0] = sp; - TASK.data[1] = r4; - TASK.data[2] = r5; - TASK.data[3] = r0; + TASK.data[1] = pan1; + TASK.data[2] = pan2; + TASK.data[3] = panIncrement; TASK.data[4] = r10; TASK.data[5] = r7; TASK.data[6] = r9; TASK.data[10] = 0; - TASK.data[11] = r4; + TASK.data[11] = pan1; TASK.data[12] = r9; TASK.func = sub_812B108; @@ -123,15 +129,20 @@ void sub_812B108(u8 taskId) if (TASK.data[10]++ == TASK.data[5]) { + u16 dPan, oldPan; TASK.data[10] = 0; - TASK.data[11] += TASK.data[3]; - TASK.data[11] = sub_8077104(TASK.data[11]); + dPan = TASK.data[3]; + oldPan = TASK.data[11]; + TASK.data[11] = dPan + oldPan; + TASK.data[11] = sub_8077104(TASK.data[11], oldPan); } } // #define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) // #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348)) +// used in 3 moves: +// Move_HOWL, Move_ROAR, Move_GROWL void sub_812B18C(u8 taskId) { u16 species = 0; @@ -181,4 +192,90 @@ void sub_812B18C(u8 taskId) } DestroyAnimVisualTask(taskId); +} + +// used in Move_HYPER_VOICE +void sub_812B2B8(u8 taskId) +{ + u16 species; + s8 pan = BattleAnimAdjustPanning(-64); + + if (IsContest()) + species = shared19348.unk0; + else + species = gAnimSpeciesByBanks[gAnimBankAttacker]; + + if (species != 0) + PlayCry3(species, pan, 4); + + DestroyAnimVisualTask(taskId); +} + +// used in 6 moves: +// Move_SKY_ATTACK, Move_LUSTER_PURGE, Move_FLATTER, +// Move_DRAGON_CLAW, Move_RETURN, Move_COSMIC_POWER, +void sub_812B30C(u8 taskId) +{ + u16 songNum = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + PlaySE1WithPanning(songNum, pan); + + DestroyAnimVisualTask(taskId); +} + +// used in 6 moves: +// Move_SKY_ATTACK, Move_SUPERPOWER, Move_ENCORE, +// Move_FLATTER, Move_RETURN, Move_COSMIC_POWER +void sub_812B340(u8 taskId) +{ + u16 songNum = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + PlaySE2WithPanning(songNum, pan); + + DestroyAnimVisualTask(taskId); +} + +// used in 2 moves: +// Move_CONFUSE_RAY, Move_WILL_O_WISP +void sub_812B374(u8 taskId) +{ + u8 r5 = gBattleAnimArgs[1]; + s8 panIncrement = gBattleAnimArgs[2]; + s16 r9 = gBattleAnimArgs[3]; + s8 r1 = gBattleAnimArgs[0]; + + s8 sourcePan = BattleAnimAdjustPanning(r1); + s8 targetPan = BattleAnimAdjustPanning(r5); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement); + + TASK.data[1] = sourcePan; + TASK.data[2] = targetPan; + TASK.data[3] = panIncrement; + TASK.data[5] = r9; + TASK.data[10] = 0; + TASK.data[11] = sourcePan; + + TASK.func = sub_812B404; + sub_812B404(taskId); +} + +void sub_812B404(u8 taskId) +{ + u16 dPan = TASK.data[3]; + + if (TASK.data[10]++ == TASK.data[5]) + { + u16 oldPan; + TASK.data[10] = 0; + oldPan = TASK.data[11]; + TASK.data[11] = dPan + oldPan; + TASK.data[11] = sub_8077104(TASK.data[11], oldPan); + } + + gUnknown_0202F7D2 = TASK.data[11]; + + if (TASK.data[11] == TASK.data[2]) + { + DestroyAnimVisualTask(taskId); + } } \ No newline at end of file diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 8242a1ddd..a0c74be1d 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -43,7 +43,7 @@ EWRAM_DATA u16 sAnimMoveIndex = 0; // set but unused. EWRAM_DATA u8 gAnimBankAttacker = 0; EWRAM_DATA u8 gAnimBankTarget = 0; EWRAM_DATA u16 gAnimSpeciesByBanks[4] = {0}; -EWRAM_DATA u8 gUnknown_0202F7D2 = 0; +EWRAM_DATA u8 gUnknown_0202F7D2 = 0; // some global pan variable extern u16 gBattle_BG1_Y; extern u16 gBattle_WIN1H; extern u16 gBattle_WIN0V; @@ -1489,9 +1489,9 @@ s8 BattleAnimAdjustPanning2(s8 pan) return pan; } -s16 sub_8077104(s16 a) +s16 sub_8077104(s16 newPan, int oldPan) { - s16 var = a; + s16 var = newPan; if (var > 63) var = 63; -- cgit v1.2.3 From 2fe1da46d9dda22fbe2184a53f71d5e2b8f03aba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 21:33:51 -0500 Subject: through sub_8097974 --- src/pokemon/pokemon_storage_system.c | 108 ++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 8b0893c73..0f2350df2 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -96,7 +96,10 @@ struct PokemonStorageSystemData { u8 filler_08b0[2]; s16 unk_08b2; u16 unk_08b4; - u8 filler_08b6[0x93c]; + u8 filler_08b6[0x4a8]; + s16 unk_0d5e; + s16 unk_0d60; + u8 filler_0d62[0x490]; u16 unk_11f2; u8 filler_11f4[2]; u8 unk_11f6; @@ -145,12 +148,16 @@ void sub_8097788(void); void sub_80977E4(void); void sub_8097858(void); void sub_809789C(void); +void sub_8097974(void); +void sub_8097A64(void); +void sub_8097B44(void); void sub_8097BA0(void); void sub_8097CC0(void); void sub_8097DE0(void); void sub_8097E44(void); void sub_8097E70(void); void BoxSetMosaic(void); +void sub_809801C(void); void sub_8098400(void); void add_to_c3_somehow(void); bool8 sub_80985CC(void); @@ -159,11 +166,12 @@ void sub_8098710(void); void sub_8098734(void); void sub_80987DC(void); void sub_809880C(void); -void sub_809801C(void); bool8 sub_8098830(void); void PrintStorageActionText(u8 index); void sub_8098A38(u8); void sub_8098A5C(void); +void sub_8098A80(void); +void sub_8098AA8(u8 a0); void sub_8098B48(void); void sub_8099310(void); bool8 sub_8099374(void); @@ -172,6 +180,9 @@ bool8 sub_8099990(void); void sub_8099BF8(u8 a0); void sub_8099C70(u8 whichBox); bool8 sub_8099D34(void); +void sub_8099DCC(u8 a0); +bool8 sub_8099E08(void); +void sub_809A860(u8 a0); struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); void sub_809AA24(void); void sub_809AA98(void); @@ -1843,6 +1854,99 @@ void sub_8097858(void) } } +void sub_809789C(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); + sub_809CE84(); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + switch (sub_809CF30()) + { + case -1: + case 0: + sub_809A860(1); + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 11: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097B44); + break; + case 10: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097974); + break; + case 9: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097A64); + break; + } + break; + } +} + +void sub_8097974(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_8098A80(); + PrintStorageActionText(PC_TEXT_PICK_A_THEME); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + ePokemonStorageSystem.unk_0d5e = sub_809CF30(); + switch (ePokemonStorageSystem.unk_0d5e) + { + case -1: + sub_809A860(1); + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 12 ... 15: + PlaySE(SE_SELECT); + ePokemonStorageSystem.unk_0d5e -= 12; + sub_8098AA8(ePokemonStorageSystem.unk_0d5e); + PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); + ePokemonStorageSystem.unk_0004++; + break; + } + break; + case 2: + ePokemonStorageSystem.unk_0d60 = sub_809CF30(); + switch (ePokemonStorageSystem.unk_0d60) + { + case -1: + sub_8098A5C(); + ePokemonStorageSystem.unk_0004 = 0; + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + sub_8098A5C(); + ePokemonStorageSystem.unk_0d60 -= 16; + sub_8099DCC(ePokemonStorageSystem.unk_0d60); + ePokemonStorageSystem.unk_0004++; + break; + } + break; + case 3: + if (!sub_8099E08()) + { + sub_809A860(1); + SetPSSCallback(sub_8096C84); + } + break; + } +} + asm(".section .text.8098898"); void PrintStorageActionText(u8 index) { -- cgit v1.2.3 From 1c6c7da6fba8903d8eff02ac12465a4098ebca47 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 8 Jan 2018 21:40:37 -0500 Subject: nogba to nocashgba --- src/libs/libisagbprn.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index c066a41a0..007f90bb7 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -10,8 +10,8 @@ // for auto no$gba support, the string "no$gba" should be at this address. // except it's not, blame Martin, hence I'm letting the user deal with this nonsense. -#define NOGBAIDADDR 0x4FFFA00 -#define NOGBAPRINTADDR 0x4FFFA14 +#define NOCASHGBAIDADDR 0x4FFFA00 +#define NOCASHGBAPRINTADDR 0x4FFFA14 struct AGBPrintStruct { @@ -155,11 +155,11 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP } } -// nogba print function, uncomment to use +// no$gba print function, uncomment to use /* -void NOGBAPrint(const char *pBuf) +void NoCashGBAPrint(const char *pBuf) { - *(volatile u32*)NOGBAPRINTADDR = (u32)pBuf; + *(volatile u32*)NOCASHGBAPRINTADDR = (u32)pBuf; } */ -- cgit v1.2.3 From dcf12f9ecdbaab26afb8899eaa05f4cab09a5f82 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 8 Jan 2018 22:01:47 -0500 Subject: nocashgba printf --- src/libs/libisagbprn.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 007f90bb7..a9656f3c5 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -155,12 +155,22 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP } } -// no$gba print function, uncomment to use +// no$gba print functions, uncomment to use /* void NoCashGBAPrint(const char *pBuf) { *(volatile u32*)NOCASHGBAPRINTADDR = (u32)pBuf; } + +void NoCashGBAPrintf(const char *pBuf, ...) +{ + char bufPrint[0x100]; + va_list vArgv; + va_start(vArgv, pBuf); + vsprintf(bufPrint, pBuf, vArgv); + va_end(vArgv); + NoCashGBAPrint(bufPrint); +} */ #endif -- cgit v1.2.3 From e2ff8b73c7e17777be8c4065a93e8727768bb914 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 22:05:43 -0500 Subject: through sub_8097BA0; fix calls to pc_screen_effect from scene/hall_of_fame --- src/pokemon/pokemon_storage_system.c | 130 ++++++++++++++++++++++++++++++++++- src/scene/hall_of_fame.c | 35 ++++------ 2 files changed, 140 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 0f2350df2..daae82df6 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -177,6 +177,7 @@ void sub_8099310(void); bool8 sub_8099374(void); void sub_8099958(void); bool8 sub_8099990(void); +void sub_809BB90(void); void sub_8099BF8(u8 a0); void sub_8099C70(u8 whichBox); bool8 sub_8099D34(void); @@ -670,7 +671,7 @@ void ShowPokemonStorageSystem(void) ScriptContext2_Enable(); } -void sub_8096130(void) +void FieldCB_ReturnToOverworld(void) { u8 taskId = CreateTask(Task_PokemonStorageSystem, 80); gTasks[taskId].data[0] = 0; @@ -688,7 +689,7 @@ void StorageSystemCreatePrimaryMenu(u8 whichMenu) void sub_80961A8(void) { gUnknown_02038474 = gPokemonStorageSystemPtr->unk_0005; - gFieldCallback = sub_8096130; + gFieldCallback = FieldCB_ReturnToOverworld; SetMainCallback2(c2_exit_to_overworld_2_switch); } @@ -1947,6 +1948,131 @@ void sub_8097974(void) } } +void sub_8097A64(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); + sub_8096264(&ePokemonStorageSystem.unk_2370, 0x0007, 0xdaca, 3); + sub_809634C(gPokemonStorage.currentBox); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + ePokemonStorageSystem.unk_08b2 = sub_8096368(); + switch (ePokemonStorageSystem.unk_08b2) + { + case 200: + break; + default: + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + if (ePokemonStorageSystem.unk_08b2 == 201 || ePokemonStorageSystem.unk_08b2 == gPokemonStorage.currentBox) + { + sub_809A860(1); + SetPSSCallback(sub_8096C84); + } + else + { + ePokemonStorageSystem.unk_0004++; + } + break; + } + break; + case 2: + sub_8099C70(ePokemonStorageSystem.unk_08b2); + ePokemonStorageSystem.unk_0004++; + break; + case 3: + if (!sub_8099D34()) + { + gPokemonStorage.currentBox = ePokemonStorageSystem.unk_08b2; + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097B44(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + sub_809BB90(); + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + ePokemonStorageSystem.unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + { + gUnknown_0203847F = 1; + ePokemonStorageSystem.unk_0006 = 1; + SetMainCallback2(sub_8096B5C); + } + break; + } +} + +void sub_8097BA0(void) +{ + switch (ePokemonStorageSystem.unk_0004) + { + case 0: + if (sub_809BF20()) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + ePokemonStorageSystem.unk_0004 = 1; + } + else + { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_EXIT_BOX); + sub_8098A38(0); + ePokemonStorageSystem.unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + switch (ProcessMenuInputNoWrap()) + { + case 1: + case -1: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 0: + PlaySE(SE_PC_OFF); + sub_8098A5C(); + ePokemonStorageSystem.unk_0004++; + break; + } + break; + case 3: + ePokemonStorageSystem.unk_000c.tileTag = 0x000e; + ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0; + ePokemonStorageSystem.unk_000c.unk04 = 20; + ePokemonStorageSystem.unk_000c.unk06 = 0; + sub_80C5E38(&ePokemonStorageSystem.unk_000c); + ePokemonStorageSystem.unk_0004++; + break; + case 4: + if (sub_80C5F98()) + { + gPlayerPartyCount = CalculatePlayerPartyCount(); + SetMainCallback2(sub_80961A8); + } + break; + } +} + asm(".section .text.8098898"); void PrintStorageActionText(u8 index) { diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 812c28137..ef5e6f873 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -90,11 +90,7 @@ static bool8 sub_81438C4(void); // functions from different files void sub_81439D0(void); -void sub_80C5E38(void*); // ? -bool8 sub_80C5DCC(void); -bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); -u16 SpeciesToPokedexNum(u16 species); void remove_some_task(void); // data and gfx @@ -130,9 +126,10 @@ static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] = {-41, 214, 184, 64} }; -static const struct HallofFameMon sDummyFameMon = +static const struct PCScreenEffectStruct sDummyFameMon = { - 0x3EA03EA, 0, 0, 0, {0} + .tileTag = 0x3ea, + .paletteTag = 0x3ea }; static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5}; @@ -800,20 +797,15 @@ void sub_81428CC(void) } break; case 3: - { - struct HallofFameMons* fameMons; - - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - sub_81435B8(); + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + sub_81435B8(); - fameMons = eHallOfFameMons1; - fameMons->mons[0] = sDummyFameMon; + eHOFPCScreenEffect = sDummyFameMon; - sub_80C5CD4((struct PCScreenEffectStruct *)fameMons); - gMain.state++; - } + sub_80C5CD4(&eHOFPCScreenEffect); + gMain.state++; break; case 4: AnimateSprites(); @@ -1022,12 +1014,9 @@ static void sub_8142DF4(u8 taskID) static void sub_8142F78(u8 taskID) { - struct HallofFameMons* fameMons; - CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200); - fameMons = eHallOfFameMons1; - fameMons->mons[0] = sDummyFameMon; - sub_80C5E38(fameMons); + eHOFPCScreenEffect = sDummyFameMon; + sub_80C5E38(&eHOFPCScreenEffect); gTasks[taskID].func = sub_8142FCC; } -- cgit v1.2.3 From ca2fbbad15daa12858d01eb87ab17a8d41eeffa5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 8 Jan 2018 22:25:48 -0500 Subject: sDummyPCScreenEffect --> sPCScreenEffectTemplate --- src/scene/hall_of_fame.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index ef5e6f873..4740c086d 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -126,8 +126,7 @@ static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] = {-41, 214, 184, 64} }; -static const struct PCScreenEffectStruct sDummyFameMon = -{ +static const struct PCScreenEffectStruct sPCScreenEffectTemplate = { .tileTag = 0x3ea, .paletteTag = 0x3ea }; @@ -802,7 +801,7 @@ void sub_81428CC(void) REG_BLDY = 0; sub_81435B8(); - eHOFPCScreenEffect = sDummyFameMon; + eHOFPCScreenEffect = sPCScreenEffectTemplate; sub_80C5CD4(&eHOFPCScreenEffect); gMain.state++; @@ -1015,7 +1014,7 @@ static void sub_8142DF4(u8 taskID) static void sub_8142F78(u8 taskID) { CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200); - eHOFPCScreenEffect = sDummyFameMon; + eHOFPCScreenEffect = sPCScreenEffectTemplate; sub_80C5E38(&eHOFPCScreenEffect); gTasks[taskID].func = sub_8142FCC; } -- cgit v1.2.3 From 84118e6fed04b1533458b891bcd0317683fe38c2 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 8 Jan 2018 19:23:43 -0800 Subject: Move unused files back to src/ level --- src/battle/anim/sfx.c | 21 ++++---- src/unused/unused_8124F94.c | 126 -------------------------------------------- src/unused/unused_81258BC.c | 36 ------------- src/unused_8124F94.c | 126 ++++++++++++++++++++++++++++++++++++++++++++ src/unused_81258BC.c | 36 +++++++++++++ 5 files changed, 172 insertions(+), 173 deletions(-) delete mode 100644 src/unused/unused_8124F94.c delete mode 100644 src/unused/unused_81258BC.c create mode 100644 src/unused_8124F94.c create mode 100644 src/unused_81258BC.c (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 470fea3cc..10ef1681e 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -13,11 +13,10 @@ extern u16 gBattlePartyID[]; extern u16 gAnimSpeciesByBanks[]; extern u8 gUnknown_0202F7D2; -void sub_812AF98(u8 taskId); -void sub_812B004(u8 taskId); -void sub_812B004(u8 taskId); -void sub_812B108(u8 taskId); -void sub_812B404(u8 taskId); +static void sub_812AF98(u8 taskId); +static void sub_812B004(u8 taskId); +static void sub_812B108(u8 taskId); +static void sub_812B404(u8 taskId); // used in 1 move: // Move_FIRE_BLAST @@ -40,7 +39,7 @@ void sub_812AF30(u8 taskId) TASK.func = sub_812AF98; } -void sub_812AF98(u8 taskId) +static void sub_812AF98(u8 taskId) { s16 pan = TASK.data[2]; s8 dPan = TASK.data[4]; @@ -63,7 +62,7 @@ void sub_812AF98(u8 taskId) } } -void sub_812B004(u8 taskId) +static void sub_812B004(u8 taskId) { s8 pan; @@ -110,10 +109,10 @@ void sub_812B058(u8 taskId) TASK.data[12] = r9; TASK.func = sub_812B108; - sub_812B108(taskId); + TASK.func(taskId); } -void sub_812B108(u8 taskId) +static void sub_812B108(u8 taskId) { if (TASK.data[12]++ == TASK.data[6]) { @@ -256,10 +255,10 @@ void sub_812B374(u8 taskId) TASK.data[11] = sourcePan; TASK.func = sub_812B404; - sub_812B404(taskId); + TASK.func(taskId); } -void sub_812B404(u8 taskId) +static void sub_812B404(u8 taskId) { u16 dPan = TASK.data[3]; diff --git a/src/unused/unused_8124F94.c b/src/unused/unused_8124F94.c deleted file mode 100644 index 5f76fa92e..000000000 --- a/src/unused/unused_8124F94.c +++ /dev/null @@ -1,126 +0,0 @@ -#include "global.h" -#include "decompress.h" -#include "palette.h" - -struct UnknownStruct2 -{ - void *src; - u8 unk4; - u8 unk5; - u8 unk6; - u16 unk8; -}; - -struct UnknownStruct3 -{ - u16 *paletteSrc; - u8 unk4; - u8 paletteCount; -}; - -struct UnknownStruct1 -{ - u8 paletteNum; - u8 unk1; - u16 unk2; - u8 *dest; - struct UnknownStruct3 unk8[16]; - struct UnknownStruct2 unk88[32]; -}; - -void unref_sub_8124F94(struct UnknownStruct1 *a) -{ - a->unk1 = 0; - a->paletteNum = 0; - a->unk2 = 0; - a->dest = (void *)VRAM; - DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); - DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); -} - -u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) -{ - while (1) - { - s32 r6; - s32 temp; - - // Couldn't get it to match any other way - if (a->unk1 < 32 && b->src == NULL) - return 0; - if (a->unk1 >= 32) - break; - - a->unk88[a->unk1].src = b->src; - a->unk88[a->unk1].unk6 = b->unk6; - a->unk88[a->unk1].unk4 = b->unk4; - a->unk88[a->unk1].unk5 = b->unk5; - r6 = b->unk4 * b->unk5; - if (a->unk2 + r6 > 0x400) - return 2; - if (b->unk8 == 0) - { - DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); - } - else - { - LZDecompressWram(b->src, a->dest + a->unk2 * 64); - } - a->unk88[a->unk1].unk8 = a->unk2; - temp = r6 + a->unk2; - a->unk2 = temp; - a->unk1++; - b++; - } - return 1; -} - -u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - while (1) - { - // Couldn't get it to match any other way - if (a->paletteNum < 16 && b->paletteSrc == NULL) - return 0; - if (a->paletteNum >= 16) - break; - - a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; - a->unk8[a->paletteNum].unk4 = b->unk4; - if (b->paletteCount == 0) - { - LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); - } - else - { - u16 palette[16]; - - LZDecompressWram(b->paletteSrc, palette); - LoadPalette(palette, a->paletteNum * 16, 32); - } - a->unk8[a->paletteNum].paletteCount = a->paletteNum; - a->paletteNum = a->paletteNum + 1; - b++; - } - return 1; -} - -u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - u16 palettes[16][16] = {0}; - u8 r7 = b->paletteCount; - u8 i; - - LZDecompressWram(b->paletteSrc, palettes); - for (i = a->paletteNum; i < r7; i++) - { - if (a->paletteNum + i >= 16) - return 1; - a->unk8[i].paletteSrc = b->paletteSrc; - a->unk8[i].unk4 = b->unk4 + i; - a->unk8[i].paletteCount = a->paletteNum; - LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); - a->paletteNum++; - } - return 0; -} diff --git a/src/unused/unused_81258BC.c b/src/unused/unused_81258BC.c deleted file mode 100644 index c509ea4c9..000000000 --- a/src/unused/unused_81258BC.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "constants/songs.h" -#include "global.h" -#include "menu.h" -#include "mystery_event_script.h" -#include "sound.h" -#include "text.h" - -void sub_812AF10(void); - -bool8 unref_sub_812AECC(u8 *script) -{ - u8 result = RunMysteryEventScript(script); - switch (result) - { - case 0: - return FALSE; - case 1: - PlaySE(SE_BOO); - return TRUE; - case 2: - sub_812AF10(); - return FALSE; - case 3: - PlaySE(SE_BOO); - sub_812AF10(); - return TRUE; - default: - return FALSE; - } -} - -void sub_812AF10(void) -{ - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gStringVar4, 3, 15); -} \ No newline at end of file diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c new file mode 100644 index 000000000..5f76fa92e --- /dev/null +++ b/src/unused_8124F94.c @@ -0,0 +1,126 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" + +struct UnknownStruct2 +{ + void *src; + u8 unk4; + u8 unk5; + u8 unk6; + u16 unk8; +}; + +struct UnknownStruct3 +{ + u16 *paletteSrc; + u8 unk4; + u8 paletteCount; +}; + +struct UnknownStruct1 +{ + u8 paletteNum; + u8 unk1; + u16 unk2; + u8 *dest; + struct UnknownStruct3 unk8[16]; + struct UnknownStruct2 unk88[32]; +}; + +void unref_sub_8124F94(struct UnknownStruct1 *a) +{ + a->unk1 = 0; + a->paletteNum = 0; + a->unk2 = 0; + a->dest = (void *)VRAM; + DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); + DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); +} + +u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) +{ + while (1) + { + s32 r6; + s32 temp; + + // Couldn't get it to match any other way + if (a->unk1 < 32 && b->src == NULL) + return 0; + if (a->unk1 >= 32) + break; + + a->unk88[a->unk1].src = b->src; + a->unk88[a->unk1].unk6 = b->unk6; + a->unk88[a->unk1].unk4 = b->unk4; + a->unk88[a->unk1].unk5 = b->unk5; + r6 = b->unk4 * b->unk5; + if (a->unk2 + r6 > 0x400) + return 2; + if (b->unk8 == 0) + { + DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); + } + else + { + LZDecompressWram(b->src, a->dest + a->unk2 * 64); + } + a->unk88[a->unk1].unk8 = a->unk2; + temp = r6 + a->unk2; + a->unk2 = temp; + a->unk1++; + b++; + } + return 1; +} + +u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + while (1) + { + // Couldn't get it to match any other way + if (a->paletteNum < 16 && b->paletteSrc == NULL) + return 0; + if (a->paletteNum >= 16) + break; + + a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; + a->unk8[a->paletteNum].unk4 = b->unk4; + if (b->paletteCount == 0) + { + LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); + } + else + { + u16 palette[16]; + + LZDecompressWram(b->paletteSrc, palette); + LoadPalette(palette, a->paletteNum * 16, 32); + } + a->unk8[a->paletteNum].paletteCount = a->paletteNum; + a->paletteNum = a->paletteNum + 1; + b++; + } + return 1; +} + +u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + u16 palettes[16][16] = {0}; + u8 r7 = b->paletteCount; + u8 i; + + LZDecompressWram(b->paletteSrc, palettes); + for (i = a->paletteNum; i < r7; i++) + { + if (a->paletteNum + i >= 16) + return 1; + a->unk8[i].paletteSrc = b->paletteSrc; + a->unk8[i].unk4 = b->unk4 + i; + a->unk8[i].paletteCount = a->paletteNum; + LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); + a->paletteNum++; + } + return 0; +} diff --git a/src/unused_81258BC.c b/src/unused_81258BC.c new file mode 100644 index 000000000..c509ea4c9 --- /dev/null +++ b/src/unused_81258BC.c @@ -0,0 +1,36 @@ +#include "constants/songs.h" +#include "global.h" +#include "menu.h" +#include "mystery_event_script.h" +#include "sound.h" +#include "text.h" + +void sub_812AF10(void); + +bool8 unref_sub_812AECC(u8 *script) +{ + u8 result = RunMysteryEventScript(script); + switch (result) + { + case 0: + return FALSE; + case 1: + PlaySE(SE_BOO); + return TRUE; + case 2: + sub_812AF10(); + return FALSE; + case 3: + PlaySE(SE_BOO); + sub_812AF10(); + return TRUE; + default: + return FALSE; + } +} + +void sub_812AF10(void) +{ + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gStringVar4, 3, 15); +} \ No newline at end of file -- cgit v1.2.3 From 7b7f11119ac386e51910b957f855eade7e40381b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 00:15:28 -0500 Subject: through sub_8097DE0 --- src/pokemon/pokemon_storage_system.c | 109 +++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index daae82df6..5fd43cfb8 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -89,6 +89,7 @@ struct PokemonStorageSystemData { u8 unk_0004; u8 unk_0005; u8 unk_0006; + u8 unk_0007; u16 unk_0008; u16 unk_000a; struct PCScreenEffectStruct unk_000c; @@ -266,6 +267,51 @@ const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/b const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); +const u16 gPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.gbapal"); + +const u16 gPokemonStorageScrollingBGTile[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.4bpp"); + +const u8 gPokemonStorageScrollingBGTilemap[] = INCBIN_U8("graphics/pokemon_storage/scrolling_bg_map.bin.lz"); + +const u16 sUnknownTilemap[] = { + 0x1281, + 0x1282, + 0x1283, + 0x1284, + 0x1285, + 0x1286, + 0x1287, + 0x1288, + 0x128C, + 0x128D, + 0x128E, + 0x128F, + 0x1290, + 0x1291, + 0x1292, + 0x1293, + 0x0281, + 0x0282, + 0x0283, + 0x0284, + 0x0285, + 0x0286, + 0x0287, + 0x0288, + 0x028C, + 0x028D, + 0x028E, + 0x028F, + 0x0290, + 0x0291, + 0x0292, + 0x0293, + 0x12AD, + 0x12AE, + 0x12A8, + 0x12A8 +}; + extern const struct StorageAction gPCStorageActionTexts[]; extern const struct PokemonStorageSystemData *gPokemonStorageSystemPtr; extern u8 *const gUnknown_083B6DB8; @@ -2073,6 +2119,69 @@ void sub_8097BA0(void) } } +void sub_8097CC0(void) { + switch (ePokemonStorageSystem.unk_0004) { + case 0: + if (sub_809BF20()) { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + ePokemonStorageSystem.unk_0004 = 1; + } + else { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_CONTINUE_BOX); + sub_8098A38(0); + ePokemonStorageSystem.unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + switch (ProcessMenuInputNoWrap()) { + case 0: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case -1: + case 1: + PlaySE(SE_PC_OFF); + sub_8098A5C(); + ePokemonStorageSystem.unk_0004++; + break; + } + break; + case 3: + ePokemonStorageSystem.unk_000c.tileTag = 0x000e; + ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0; + ePokemonStorageSystem.unk_000c.unk04 = 20; + ePokemonStorageSystem.unk_000c.unk06 = 0; + sub_80C5E38(&ePokemonStorageSystem.unk_000c); + ePokemonStorageSystem.unk_0004++; + break; + case 4: + if (sub_80C5F98()) { + gPlayerPartyCount = CalculatePlayerPartyCount(); + SetMainCallback2(sub_80961A8); + } + break; + } +} + +void sub_8097DE0(void) +{ + ePokemonStorageSystem.unk_0007 = 0; + ePokemonStorageSystem.unk_0008 = 0; + ePokemonStorageSystem.unk_000a = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(30); + DmaCopy16Defvars(3, gPokemonStorageScrollingBGTile, BG_SCREEN_ADDR(28), sizeof gPokemonStorageScrollingBGTile); + LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, BG_SCREEN_ADDR(30)); + LoadPalette(gPokemonStorageScrollingBGPalette, 0xd0, 0x10); +} + asm(".section .text.8098898"); void PrintStorageActionText(u8 index) { -- cgit v1.2.3 From 6d16dba22e9ea2b40bf684f7549b73a583d143f6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 8 Jan 2018 23:16:13 -0600 Subject: re-label some window and text code --- src/battle/battle_2.c | 14 +- src/battle/battle_4.c | 12 +- src/battle/battle_controller_linkopponent.c | 2 +- src/battle/battle_controller_linkpartner.c | 2 +- src/battle/battle_controller_opponent.c | 2 +- src/battle/battle_controller_player.c | 42 +- src/battle/battle_controller_safari.c | 10 +- src/battle/battle_controller_wally.c | 12 +- src/battle/battle_party_menu.c | 6 +- src/battle/battle_records.c | 32 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 88 ++-- src/debug/matsuda_debug_menu.c | 44 +- src/debug/mori_debug_menu.c | 12 +- src/debug/sound_check_menu.c | 80 ++-- src/debug/unknown_debug_menu.c | 6 +- src/easy_chat_1.c | 16 +- src/easy_chat_2.c | 24 +- src/engine/cable_club.c | 6 +- src/engine/clear_save_data_menu.c | 6 +- src/engine/link.c | 6 +- src/engine/main_menu.c | 94 ++-- src/engine/menu.c | 150 +++--- src/engine/mystery_event_menu.c | 32 +- src/engine/naming_screen.c | 14 +- src/engine/option_menu.c | 34 +- src/engine/record_mixing.c | 10 +- src/engine/reset_rtc_screen.c | 22 +- src/engine/save_failed_screen.c | 32 +- src/engine/save_menu_util.c | 18 +- src/engine/text.c | 707 +++++++++++++++------------- src/engine/text_window.c | 157 +++--- src/engine/trade.c | 118 ++--- src/engine/trainer_card.c | 28 +- src/field/berry_tag_screen.c | 24 +- src/field/braille_puzzles.c | 4 +- src/field/choose_party.c | 28 +- src/field/coins.c | 6 +- src/field/daycare.c | 12 +- src/field/decoration.c | 76 +-- src/field/diploma.c | 2 +- src/field/field_message_box.c | 20 +- src/field/field_player_avatar.c | 18 +- src/field/field_region_map.c | 10 +- src/field/field_screen_effect.c | 4 +- src/field/field_specials.c | 54 +-- src/field/fldeff_softboiled.c | 4 +- src/field/item_menu.c | 96 ++-- src/field/item_use.c | 18 +- src/field/map_name_popup.c | 8 +- src/field/mauville_man.c | 22 +- src/field/menu_helpers.c | 8 +- src/field/money.c | 6 +- src/field/party_menu.c | 74 +-- src/field/player_pc.c | 130 ++--- src/field/pokeblock.c | 42 +- src/field/region_map.c | 18 +- src/field/scrcmd.c | 8 +- src/field/script_menu.c | 58 +-- src/field/secret_base.c | 44 +- src/field/shop.c | 36 +- src/field/slot_machine.c | 16 +- src/field/start_menu.c | 32 +- src/field/starter_choose.c | 24 +- src/field/trader.c | 20 +- src/field/use_pokeblock.c | 22 +- src/field/wallclock.c | 10 +- src/pokemon/learn_move.c | 62 +-- src/pokemon/mail.c | 6 +- src/pokemon/mon_markings.c | 2 +- src/pokemon/pokeblock_feed.c | 4 +- src/pokemon/pokedex.c | 56 +-- src/pokemon/pokemon_menu.c | 44 +- src/pokemon/pokemon_storage_system.c | 4 +- src/pokemon/pokemon_summary_screen.c | 142 +++--- src/pokenav_before.c | 24 +- src/rom_800D42C.c | 4 +- src/roulette.c | 68 +-- src/scene/berry_blender.c | 92 ++-- src/scene/credits.c | 2 +- src/scene/egg_hatch.c | 14 +- src/scene/evolution_scene.c | 84 ++-- src/scene/hall_of_fame.c | 40 +- src/script_pokemon_util_80C4BF0.c | 4 +- 84 files changed, 1762 insertions(+), 1684 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index ae84e5585..dccf73fa8 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -245,9 +245,9 @@ void InitBattle(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; gBattleTerrain = BattleSetup_GetTerrain(); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); - InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); - InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); @@ -898,7 +898,7 @@ void BattleMainCB2(void) { AnimateSprites(); BuildOamBuffer(); - sub_800374C(&gUnknown_03004210); + Text_UpdateWindowInBattle(&gUnknown_03004210); UpdatePaletteFade(); RunTasks(); } @@ -1221,9 +1221,9 @@ void c2_8011A1C(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); - InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); - InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); sub_800D6D4(); LoadCompressedPalette(gUnknown_08D004E0, 0, 64); sub_800D74C(); diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 5a20a8324..4be9b7d1c 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -10767,8 +10767,8 @@ void atk59_handlelearnnewmove(void) void sub_8023A80(void) { sub_802BBD4(0x18, 8, 0x1D, 0xD, 0); - InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); } @@ -11714,9 +11714,9 @@ _08024AC4:\n\ str r0, [sp]\n\ adds r0, r4, 0\n\ movs r3, 0xC\n\ - bl InitWindow\n\ + bl Text_InitWindow\n\ adds r0, r4, 0\n\ - bl sub_8002F44\n\ + bl Text_PrintWindow8002F44\n\ ldr r1, _08024AEC @ =gSharedMem\n\ ldr r2, _08024AF0 @ =0x0001609c\n\ adds r1, r2\n\ @@ -11835,9 +11835,9 @@ _08024BC0:\n\ str r0, [sp]\n\ adds r0, r4, 0\n\ movs r3, 0xC\n\ - bl InitWindow\n\ + bl Text_InitWindow\n\ adds r0, r4, 0\n\ - bl sub_8002F44\n\ + bl Text_PrintWindow8002F44\n\ ldr r1, _08024BFC @ =gSharedMem\n\ ldr r0, _08024C00 @ =0x0001609c\n\ adds r1, r0\n\ diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 54181bc21..69306b725 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -1413,7 +1413,7 @@ void LinkOpponentHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_8037C2C; } diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index 2c78d4a82..c86c337d9 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -1358,7 +1358,7 @@ void LinkPartnerHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_811DFA0; } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index ab7b6944b..622e3e9f9 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1407,7 +1407,7 @@ void OpponentHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_80331D0; } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index f992e3e51..4bbda2afd 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -745,8 +745,8 @@ void sub_802C68C(void) gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; sub_802E3B4(gUnknown_03004344, 27); FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); gBattleBankFunc[gActiveBank] = sub_802CA60; } } @@ -854,8 +854,8 @@ void sub_802CA60(void) gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); sub_802E2D4(); } @@ -867,8 +867,8 @@ void sub_802CA60(void) sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format); gBattleBankFunc[gActiveBank] = sub_802C68C; FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); sub_802E2D4(); } @@ -1557,13 +1557,13 @@ void sub_802E12C(s32 a, const u8 *b) StringCopy(gDisplayedStringBattle, b); StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]); - InitWindow( + Text_InitWindow( &gUnknown_03004210, gDisplayedStringBattle, 0x300 + a * 20, (a & 1) ? 11 : 1, (a < 2) ? 0x37 : 0x39); - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } void sub_802E1B0(void) @@ -1601,8 +1601,8 @@ void sub_802E220(void) str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2); *str++ = CHAR_SLASH; ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37); + Text_PrintWindow8002F44(&gUnknown_03004210); } } @@ -1614,7 +1614,7 @@ void sub_802E2D4(void) if (gBattleBufferA[gActiveBank][2] == 1) { FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37); + Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37); } else { @@ -1624,9 +1624,9 @@ void sub_802E2D4(void) str = StringCopy(str, BattleText_Format); StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); } - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } const u8 gUnknown_081FAE89[][2] = @@ -1697,7 +1697,7 @@ void b_link_standby_message(void) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - sub_8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15); } } @@ -2562,7 +2562,7 @@ void PlayerHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); gBattleBankFunc[gActiveBank] = sub_802DF18; } @@ -2585,8 +2585,8 @@ void PlayerHandlecmd18(void) gBattleBankFunc[gActiveBank] = sub_802C098; - InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 12, 11679, 0); for (r4 = 0; r4 < 4; r4++) @@ -2595,8 +2595,8 @@ void PlayerHandlecmd18(void) sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); StrCpyDecodeToDisplayedStringBattle(BattleText_OtherMenu); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); } void PlayerHandlecmd19() @@ -2619,8 +2619,8 @@ void sub_80304A8(void) sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); if (gBattleBufferA[gActiveBank][2] != 1) { - InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55); + Text_PrintWindow8002F44(&gUnknown_03004210); } sub_802E220(); sub_802E2D4(); diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 0a629ba4d..72a0cc32c 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -453,7 +453,7 @@ void SafariHandlePrintString(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 0; BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gBattleBankFunc[gActiveBank] = sub_812B694; } @@ -476,8 +476,8 @@ void SafariHandlecmd18(void) FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; - InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 12, 11679, 0); for (i = 0; i < 4; i++) @@ -486,8 +486,8 @@ void SafariHandlecmd18(void) sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); StrCpyDecodeToDisplayedStringBattle(BattleText_PlayerMenu); - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); } void SafariHandlecmd19(void) diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index bd2b4a45b..6a9e8071e 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -1246,7 +1246,7 @@ void WallyHandlePrintString(void) if (*ptr == 2) DestroyMenuCursor(); BufferStringBattle(*ptr); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); gBattleBankFunc[gActiveBank] = sub_8137454; } @@ -1268,19 +1268,19 @@ void WallyHandlecmd18(void) FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = sub_81372BC; - InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); - sub_8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); for (i = 0; i < 4; i++) nullsub_8(i); sub_802E3E4(0, 0); StrCpyDecodeToDisplayedStringBattle(BattleText_WallyMenu); #ifdef ENGLISH - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35); #else - InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35); + Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35); #endif - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } void WallyHandlecmd19(void) diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 7bce00d82..67f6e24ef 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -583,13 +583,13 @@ static void Task_HandlePopupMenuInput(u8 taskId) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); return; } if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); return; } if (gMain.newKeys & A_BUTTON) @@ -598,7 +598,7 @@ static void Task_HandlePopupMenuInput(u8 taskId) func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, - GetMenuCursorPos()); + Menu_GetCursorPos()); func(taskId); return; } diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 97740e3da..fb7392f33 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -202,7 +202,7 @@ static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4); ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4); ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gOtherText_WinRecord, 3, 3); + Menu_PrintText(gOtherText_WinRecord, 3, 3); } static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) @@ -217,37 +217,37 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) buffer[4] = 0x11; buffer[5] = 1; StringCopy(buffer + 6, gOtherText_SevenDashes); - MenuPrint(buffer, 3, y); + Menu_PrintText(buffer, 3, y); StringCopy(buffer + 6, gOtherText_FourDashes); - MenuPrint(buffer, 11, y); - MenuPrint(buffer, 17, y); - MenuPrint(buffer, 23, y); + Menu_PrintText(buffer, 11, y); + Menu_PrintText(buffer, 17, y); + Menu_PrintText(buffer, 23, y); } else { StringFillWithTerminator(gStringVar1, 8); StringCopyN(gStringVar1, record->name, 7); - MenuPrint(gStringVar1, 3, y); + Menu_PrintText(gStringVar1, 3, y); gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 6; ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gStringVar1, 11, y); + Menu_PrintText(gStringVar1, 11, y); ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gStringVar1, 17, y); + Menu_PrintText(gStringVar1, 17, y); ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); - MenuPrint(gStringVar1, 23, y); + Menu_PrintText(gStringVar1, 23, y); } } void ShowLinkBattleRecords(void) { s32 i; - MenuDrawTextWindow(1, 0, 28, 18); + Menu_DrawStdWindowFrame(1, 0, 28, 18); sub_8072BD8(gOtherText_BattleResults, 0, 1, 240); PrintLinkBattleWinsLossesDraws(gSaveBlock1.linkBattleRecords); #if ENGLISH - MenuPrint(gOtherText_WinLoseDraw, 12, 6); + Menu_PrintText(gOtherText_WinLoseDraw, 12, 6); #elif GERMAN MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); #endif @@ -285,11 +285,11 @@ static bool32 sub_8110494(u8 level) static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top) { - MenuPrint(str, left, top); + Menu_PrintText(str, left, top); if (streak > 9999) streak = 9999; sub_8072C14(gStringVar1, streak, 24, 1); - MenuPrint(gOtherText_WinStreak, left + 7, top); + Menu_PrintText(gOtherText_WinStreak, left + 7, top); } static void PrintRecordWinStreak(u8 level, u8 left, u8 top) @@ -320,10 +320,10 @@ static void PrintLastWinStreak(u8 level, u8 left, u8 top) void ShowBattleTowerRecords(void) { u16 i; - MenuDrawTextWindow(3, 1, 27, 17); + Menu_DrawStdWindowFrame(3, 1, 27, 17); sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8); - MenuPrint(gOtherText_Lv50, 5, 6); - MenuPrint(gOtherText_Lv100, 5, 12); + Menu_PrintText(gOtherText_Lv50, 5, 6); + Menu_PrintText(gOtherText_Lv100, 5, 12); for (i = 5; i < 26; i++) { sub_8071F60(CHAR_HYPHEN, i, 10); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 6a6d7a137..fded87090 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -80,7 +80,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) dp12_8087EA4(); SetUpWindowConfig(&gWindowConfig_81E6C58); ResetPaletteFade(); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattle_BG1_X = 0; diff --git a/src/contest.c b/src/contest.c index c32719648..c935f0ecb 100644 --- a/src/contest.c +++ b/src/contest.c @@ -358,8 +358,8 @@ void LoadContestBgAfterMoveAnim(void) void SetUpContestWindow(void) { SetUpWindowConfig(&gWindowConfig_81E6FD8); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); - InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6FF4); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6FF4); } void sub_80AB350(void) @@ -651,13 +651,13 @@ void sub_80ABB70(u8 taskId) InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].func = sub_80ABC3C; } void sub_80ABC3C(u8 taskId) { - if (sub_80037A0(&gMenuWindow) == 1) + if (Text_UpdateWindowInContest(&gMenuWindow) == 1) gTasks[taskId].func = sub_80ABC70; } @@ -715,14 +715,14 @@ void sub_80ABCDC(u8 taskId) } r5 = StringCopy(r5, gMoveNames[move]); - sub_8002E4C( + Text_InitWindow8002E4C( &gUnknown_03004210, sp8, 776 + i * 20, gUnknown_083CA340[i][0] * 8 + 4, gUnknown_083CA340[i][1] * 8, 1); - sub_8002F44(&gUnknown_03004210); + Text_PrintWindow8002F44(&gUnknown_03004210); } sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); @@ -771,7 +771,7 @@ void sub_80ABEA0(u8 taskId) InsertStringDigit(gDisplayedStringBattle, sContest.turnNumber + 1); sub_80AF138(); StringExpandPlaceholders(gStringVar4, gDisplayedStringBattle); - sub_8003460(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindowAndPrintText(&gMenuWindow, gStringVar4, 776, 1, 15); gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; gTasks[taskId].func = sub_80ABC70; @@ -976,12 +976,12 @@ void sub_80AC2CC(u8 taskId) else StringCopy(gStringVar2, gUnknown_083CC330[sContestantStatus[r7].moveCategory]); StringExpandPlaceholders(gStringVar4, gUnknown_083CAFD7); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 6; } return; case 6: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sContest.unk1925E = 0; gTasks[taskId].data[0] = 7; @@ -1059,7 +1059,7 @@ void sub_80AC2CC(u8 taskId) } return; case 24: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 23; return; case 48: @@ -1171,7 +1171,7 @@ void sub_80AC2CC(u8 taskId) } return; case 27: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 28; return; case 28: @@ -1234,13 +1234,13 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, ContestString_CantAppealNextTurn); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } gTasks[taskId].data[0] = 52; } return; case 52: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { if (!sContestantStatus[r7].unk15_6) gTasks[taskId].data[0] = 17; @@ -1254,11 +1254,11 @@ void sub_80AC2CC(u8 taskId) { sub_80AF138(); if (r4 == 1) - sub_8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, ContestString_WentOverWell, 776, 1, 15); else if (r4 == 2) - sub_8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, ContestString_WentOverVeryWell, 776, 1, 15); else - sub_8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, ContestString_AppealComboExcellently, 776, 1, 15); sub_80B1710(3); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 45; @@ -1268,7 +1268,7 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, ContestString_JudgeExpectantly2); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); sub_80B1710(2); gTasks[taskId].data[10] = 0; gTasks[taskId].data[0] = 45; @@ -1282,7 +1282,7 @@ void sub_80AC2CC(u8 taskId) } return; case 15: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { if (++gTasks[taskId].data[10] > 50) { @@ -1311,7 +1311,7 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, ContestString_DissapointedRepeat); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; sub_80B1710(0); gTasks[taskId].data[0] = 46; @@ -1326,7 +1326,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[0] = 19; return; case 19: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80AFBA0(sContestantStatus[r7].appeal2, -sContestantStatus[r7].unk18, r7); sContestantStatus[r7].appeal2 -= sContestantStatus[r7].unk18; @@ -1381,7 +1381,7 @@ void sub_80AC2CC(u8 taskId) StringExpandPlaceholders(gStringVar4, ContestString_WentOverGreat); else StringExpandPlaceholders(gStringVar4, ContestString_GotCrowdGoing); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = 0; if (r4 < 0) @@ -1400,7 +1400,7 @@ void sub_80AC2CC(u8 taskId) gTasks[taskId].data[10]++; break; case 1: - if (!sContest.unk1920B_0 && sub_80037A0(&gMenuWindow) != 0) + if (!sContest.unk1920B_0 && Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80B1CBC(-1); gTasks[taskId].data[10]++; @@ -1431,7 +1431,7 @@ void sub_80AC2CC(u8 taskId) switch (gTasks[taskId].data[10]) { case 0: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80B1EA8(1, 1); gTasks[taskId].data[10]++; @@ -1491,20 +1491,20 @@ void sub_80AC2CC(u8 taskId) StringCopy(gStringVar1, gContestMons[r7].nickname); StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); StringExpandPlaceholders(gStringVar4, ContestString_CrowdWatches); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 58; return; case 58: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80AF138(); StringExpandPlaceholders(gStringVar4, ContestString_Ignored2); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 59; } return; case 59: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) { sub_80AF138(); gTasks[taskId].data[0] = 55; @@ -1517,11 +1517,11 @@ void sub_80AC2CC(u8 taskId) StringCopy(gStringVar1, gContestMons[r7].nickname); StringCopy(gStringVar2, gMoveNames[sContestantStatus[r7].currMove]); StringExpandPlaceholders(gStringVar4, gUnknown_083CBF60); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 34; return; case 34: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 55; return; case 55: @@ -1563,11 +1563,11 @@ void sub_80AC2CC(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[r7].nickname); StringExpandPlaceholders(gStringVar4, gUnknown_083CB00D); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[0] = 32; return; case 32: - if (sub_80037A0(&gMenuWindow) != 0) + if (Text_UpdateWindowInContest(&gMenuWindow) != 0) gTasks[taskId].data[0] = 21; return; case 21: @@ -1734,13 +1734,13 @@ void sub_80ADB88(u8 taskId) sub_80AF138(); StringCopy(gStringVar1, gContestMons[gContestPlayerMonIndex].nickname); StringExpandPlaceholders(gStringVar4, gContestStandOutStrings[r4]); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].func = sub_80ADC10; } void sub_80ADC10(u8 taskId) { - if (sub_80037A0(&gMenuWindow) == 1) + if (Text_UpdateWindowInContest(&gMenuWindow) == 1) { gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_80ADC4C; @@ -1813,14 +1813,14 @@ void sub_80ADDA4(u8 taskId) sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove); gUnknown_03005D28 = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_80ADE54; } void sub_80ADE54(u8 taskId) { - if (sub_80037A0(&gMenuWindow) == 1) + if (Text_UpdateWindowInContest(&gMenuWindow) == 1) { sub_80B2184(); gBattle_BG1_X = 0; @@ -2172,7 +2172,7 @@ void sub_80AE5D4(u8 p, u8 b) else { StringCopy(str, gContestMons[p].trainerName); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, gDisplayedStringBattle, 592 + gUnknown_02038696[p] * 22, @@ -2432,8 +2432,8 @@ void sub_80AEBEC(u16 a) *(u16 *)(VRAM + 0xC82A + i * 2) = 0x5036; } - sub_8003460(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35); - sub_8003460(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31); + Text_InitWindowAndPrintText(&gUnknown_03004210, gContestEffectStrings[gContestMoves[a].effect], 868, 11, 35); + Text_InitWindowAndPrintText(&gUnknown_03004210, gUnknown_083CC5A2, 866, 16, 31); } void sub_80AED58(void) @@ -2656,7 +2656,7 @@ void sub_80AF1E4(u8 a, u8 b) else sub_80AE598(gDisplayedStringBattle, gMoveNames[sContestantStatus[a].currMove], r3); sub_80AF2A0(a); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, gDisplayedStringBattle, 696 + a * 20, @@ -2953,7 +2953,7 @@ void sub_80AF860(void) gBattle_BG0_Y = 0; gBattle_BG2_Y = 0; sub_80AF138(); - sub_8003460(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); + Text_InitWindowAndPrintText(&gMenuWindow, gUnknownText_LinkStandbyAndWinner, 776, 1, 15); } u8 unref_sub_80AF89C(s16 a, s16 b, u8 c, u8 d) @@ -4193,7 +4193,7 @@ void sub_80B0D7C(void) r5++; } ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, sp8, 592 + gUnknown_02038696[i] * 22, @@ -4211,7 +4211,7 @@ void sub_80B0D7C(void) r5++; } ConvertIntToDecimalStringN(sp8 + r5, r2, 0, 4); - sub_8003460( + Text_InitWindowAndPrintText( &gUnknown_03004210, sp8, 512 + gUnknown_02038696[i] * 20, @@ -4484,7 +4484,7 @@ void sub_80B146C(u8 a, u8 b) StringCopy(gStringVar3, gText_Contest_Fear); StringExpandPlaceholders(gStringVar4, gUnknown_083CC188[b]); sub_80AF138(); - sub_8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); + Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); } void sub_80B157C(u8 p) @@ -4631,7 +4631,7 @@ void unref_sub_80B19D0(void) { u8 str[20]; StringCopy(str, gUnknown_083CC2EC); - sub_8003460(&gUnknown_03004210, str, 680, 0, 0); + Text_InitWindowAndPrintText(&gUnknown_03004210, str, 680, 0, 0); } s8 Contest_GetMoveExcitement(u16 move) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 49fe6864b..2c20ba72b 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -247,8 +247,8 @@ static const struct OamData gUnknown_083C9400 = u8 unref_sub_80A9B28(void) { - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 17, 18); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 17, 18); PrintMenuItems(1, 1, 7, gMatsudaDebugMenuActions); InitMenu(0, 1, 1, 7, 0, 16); gCallback_03004AE8 = sub_80A9B78; @@ -257,7 +257,7 @@ u8 unref_sub_80A9B28(void) static bool8 sub_80A9B78(void) { - s8 choice = ProcessMenuInput(); + s8 choice = Menu_ProcessInput(); switch (choice) { @@ -450,7 +450,7 @@ static void sub_80A9F50(void) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitWindowFromConfig(&gMenuWindow, &gWindowConfig_81E6C3C); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6C3C); REG_MOSAIC = 0; REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -546,7 +546,7 @@ static void sub_80AA10C(void) for (i = 0; i < 6; i++) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList1[i], + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenuTextList1[i], (0xA * i + 0x2A), gMatsudaDebugMenuContestTopLeft[i][0], gMatsudaDebugMenuContestTopLeft[i][1]); } @@ -555,8 +555,8 @@ static void sub_80AA10C(void) zero = 0; // it's possible this was some assignment that matsuda used to quickly edit and test things without changing whats passed to the later functions. sub_80AA5BC(zero); sub_80AA5E8(gSpecialVar_ContestRank); - sub_8003460(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12); - sub_8003460(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC); LoadSpriteSheet(gUnknown_083C92B4); LoadSpritePalette(gUnknown_083C92BC); sub_80AA280(3); @@ -580,64 +580,64 @@ void sub_80AA280(u8 var) // no? for (i = 0; i < 4; i++) { if (var == i) - sub_8003460(&gMenuWindow, gSharedMem, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); else - sub_8003460(&gMenuWindow, gContestMons[i].trainerName, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gContestMons[i].trainerName, 10 * i + 2, gUnknown_083C926E[i][0], gUnknown_083C926E[i][1]); } } static void sub_80AA340(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].cool, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x66, gUnknown_083C9282[0], gUnknown_083C9282[1]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x66, gUnknown_083C9282[0], gUnknown_083C9282[1]); } static void sub_80AA388(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].cute, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x6C, gUnknown_083C9282[2], gUnknown_083C9282[3]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x6C, gUnknown_083C9282[2], gUnknown_083C9282[3]); } static void sub_80AA3D0(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].beauty, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x72, gUnknown_083C9282[4], gUnknown_083C9282[5]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x72, gUnknown_083C9282[4], gUnknown_083C9282[5]); } static void sub_80AA418(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].smart, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x78, gUnknown_083C9282[6], gUnknown_083C9282[7]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x78, gUnknown_083C9282[6], gUnknown_083C9282[7]); } static void sub_80AA460(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].tough, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x7E, gUnknown_083C9282[8], gUnknown_083C9282[9]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x7E, gUnknown_083C9282[8], gUnknown_083C9282[9]); } static void sub_80AA4A8(u8 var) { ConvertIntToDecimalStringN(gSharedMem, gContestMons[var].sheen, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0x84, gUnknown_083C9282[10], gUnknown_083C9282[11]); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0x84, gUnknown_083C9282[10], gUnknown_083C9282[11]); } static void sub_80AA4F0(u8 var1, u8 var2) { FillWindowRect_DefaultPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); - sub_8003460(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); ConvertIntToDecimalStringN(gStringVar1, gContestMons[var1].moves[var2], STR_CONV_MODE_LEADING_ZEROS, 3); - sub_8003460(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); + Text_InitWindowAndPrintText(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); } static void sub_80AA5BC(u8 var) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenuTextList2[var], 0xC2, 3, 0x12); } void sub_80AA5E8(u8 var) { - sub_8003460(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); + Text_InitWindowAndPrintText(&gMenuWindow, gMatsudaDebugMenuTextList3[var], 0xE8, 3, 4); } static void sub_80AA614(u8 var1, u8 var2) @@ -645,7 +645,7 @@ static void sub_80AA614(u8 var1, u8 var2) u16 var = sub_80AE770(var1, var2); ConvertIntToDecimalStringN(gSharedMem, var, STR_CONV_MODE_RIGHT_ALIGN, 3); - sub_8003460(&gMenuWindow, gSharedMem, 0xE2, 3, 0xC); + Text_InitWindowAndPrintText(&gMenuWindow, gSharedMem, 0xE2, 3, 0xC); } void sub_80AA658(u8 var) @@ -1076,9 +1076,9 @@ void unref_sub_80AB084(u8 *text) } } SetUpWindowConfig(&gWindowConfig_81E6FD8); - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); LoadFontDefaultPalette(&gWindowConfig_81E6FD8); - sub_8003460(&gUnknown_03004210, text, 1, 9, 7); + Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); } void sub_80AB184(void) diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 83dba8b73..31f232d82 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -95,9 +95,9 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) StringAppend(localPtr, gUnknown_0839B24D); StringAppend(localPtr, gSpeciesNames[eggSpecies]); StringAppend(localPtr, gUnknown_0839B255); - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 14, 30, 19); - MenuPrint(localPtr, 1, 15); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 14, 30, 19); + Menu_PrintText(localPtr, 1, 15); gCallback_03004AE8 = sub_8083D4C; return 0; } @@ -179,7 +179,7 @@ u8 MoriDebugMenu_PokeblockCase(void) bool8 MoriDebugMenuProcessInput(void) { - s8 choice = ProcessMenuInput(); + s8 choice = Menu_ProcessInput(); switch (choice) { @@ -196,8 +196,8 @@ bool8 MoriDebugMenuProcessInput(void) s8 InitMoriDebugMenu(void) { - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 10, 19); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 10, 19); PrintMenuItems(1, 1, 9, gMoriDebugMenuActions); InitMenu(0, 1, 1, 9, 0, 9); gCallback_03004AE8 = MoriDebugMenuProcessInput; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 968b047d9..4f4a7bd06 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -171,16 +171,16 @@ void Task_InitSoundCheckMenu(u8 taskId) if (!gPaletteFade.active) { - MenuDrawTextWindow(2, 0, 27, 3); - MenuDrawTextWindow(2, 5, 27, 10); - MenuDrawTextWindow(2, 12, 27, 17); - MenuPrint(soundcheckStr, 4, 1); - MenuPrint(abDescStr, 14, 1); - MenuPrint(bgmStr, 4, 6); - MenuPrint(upDownStr, 14, 6); - MenuPrint(seStr, 4, 13); - MenuPrint(upDownStr, 14, 13); - MenuPrint(driverStr, 14, 18); + Menu_DrawStdWindowFrame(2, 0, 27, 3); + Menu_DrawStdWindowFrame(2, 5, 27, 10); + Menu_DrawStdWindowFrame(2, 12, 27, 17); + Menu_PrintText(soundcheckStr, 4, 1); + Menu_PrintText(abDescStr, 14, 1); + Menu_PrintText(bgmStr, 4, 6); + Menu_PrintText(upDownStr, 14, 6); + Menu_PrintText(seStr, 4, 13); + Menu_PrintText(upDownStr, 14, 13); + Menu_PrintText(driverStr, 14, 18); gTasks[taskId].func = sub_80BA384; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); @@ -384,7 +384,7 @@ void PrintSoundNumber(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? str[1] = divisorValue + CHAR_0; str[2] = ((soundIndex % 100) % 10) + CHAR_0; - MenuPrint(str, x, y); + Menu_PrintText(str, x, y); } void sub_80BA79C(const u8 *const string, u16 x, u16 y) @@ -400,7 +400,7 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) for (i = 0; string[i] != EOS && i < 10; i++) str[i] = string[i]; - MenuPrint(str, x, y); + Menu_PrintText(str, x, y); } void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu @@ -421,21 +421,21 @@ void Task_DrawDriverTestMenu(u8 taskId) // Task_DrawDriverTestMenu u8 stereoStr[] = _("すてれお‥‥‥‥"); // stereo REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 29, 19); - MenuPrint(bbackStr, 19, 4); - MenuPrint(aplayStr, 19, 2); - MenuPrint(voiceStr, 2, 1); - MenuPrint(volumeStr, 2, 3); - MenuPrint(panpotStr, 2, 5); - MenuPrint(pitchStr, 2, 7); - MenuPrint(lengthStr, 2, 9); - MenuPrint(releaseStr, 2, 11); - MenuPrint(progressStr, 2, 13); - MenuPrint(chorusStr, 2, 15); - MenuPrint(priorityStr, 2, 17); - MenuPrint(playingStr, 19, 16); - MenuPrint(reverseStr, 19, 14); - MenuPrint(stereoStr, 19, 12); + Menu_DrawStdWindowFrame(0, 0, 29, 19); + Menu_PrintText(bbackStr, 19, 4); + Menu_PrintText(aplayStr, 19, 2); + Menu_PrintText(voiceStr, 2, 1); + Menu_PrintText(volumeStr, 2, 3); + Menu_PrintText(panpotStr, 2, 5); + Menu_PrintText(pitchStr, 2, 7); + Menu_PrintText(lengthStr, 2, 9); + Menu_PrintText(releaseStr, 2, 11); + Menu_PrintText(progressStr, 2, 13); + Menu_PrintText(chorusStr, 2, 15); + Menu_PrintText(priorityStr, 2, 17); + Menu_PrintText(playingStr, 19, 16); + Menu_PrintText(reverseStr, 19, 14); + Menu_PrintText(stereoStr, 19, 12); REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); sDriverTestSelection = 0; @@ -465,7 +465,7 @@ void Task_ProcessDriverTestInput(u8 taskId) REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].func = Task_InitSoundCheckMenu; return; } @@ -627,8 +627,8 @@ void sub_80BAE10(u8 var1, u8 var2) u8 str1[] = _("▶"); u8 str2[] = _(" "); - MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); - MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); + Menu_PrintText(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); + Menu_PrintText(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); } void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) @@ -677,7 +677,7 @@ void PrintSignedNumber(int n, u16 x, u16 y, u8 digits) n %= powersOfTen[i]; } - MenuPrint(str, x, y); + Menu_PrintText(str, x, y); } static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; @@ -689,10 +689,10 @@ void sub_80BAF84(u8 taskId) u8 playingStr[] = _("さいせいちゆう‥"); REG_DISPCNT = 0x3140; - MenuDrawTextWindow(0, 0, 29, 19); - MenuPrint(seStr, 3, 2); - MenuPrint(panStr, 3, 4); - MenuPrint(playingStr, 3, 8); + Menu_DrawStdWindowFrame(0, 0, 29, 19); + Menu_PrintText(seStr, 3, 2); + Menu_PrintText(panStr, 3, 4); + Menu_PrintText(playingStr, 3, 8); REG_WIN0H = WIN_RANGE(0, DISPLAY_WIDTH); REG_WIN0V = WIN_RANGE(0, DISPLAY_HEIGHT); sSoundTestParams[CRY_TEST_VOICE] = 1; @@ -739,7 +739,7 @@ void sub_80BB038(u8 taskId) REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].func = Task_InitSoundCheckMenu; return; } @@ -806,10 +806,10 @@ void sub_80BB1D4(void) switch (gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]]) { case 127: - MenuPrint(lrStr, 7, 4); + Menu_PrintText(lrStr, 7, 4); break; case -128: - MenuPrint(rlStr, 7, 4); + Menu_PrintText(rlStr, 7, 4); break; default: PrintSignedNumber(gUnknown_083D03F8[sSoundTestParams[CRY_TEST_PANPOT]], 7, 4, 3); @@ -1247,7 +1247,7 @@ void Task_InitCryTest(u8 taskId) while (ShowPokedexCryScreen(&cryStruct2, 2) == FALSE) ; - MenuDrawTextWindow(0, 16, 5, 19); + Menu_DrawStdWindowFrame(0, 16, 5, 19); PrintCryNumber(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_BG2HOFS = 0; @@ -1288,7 +1288,7 @@ void Task_ProcessCryTestInput(u8 taskId) REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].func = Task_InitSoundCheckMenu; DestroyCryMeterNeedleSprite(); } diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index a8c3ad16b..e95806c74 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -32,8 +32,8 @@ const struct MenuAction gUnknown_0842C29C[] = { int unref_sub_814A414(void) { - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 16, 18); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 16, 18); PrintMenuItems(2, 1, 8, gUnknown_0842C29C); InitMenu(0, 1, 1, 8, 0, 15); gCallback_03004AE8 = sub_814A464; @@ -42,7 +42,7 @@ int unref_sub_814A414(void) static u8 sub_814A464(void) { - s8 result = ProcessMenuInput(); + s8 result = Menu_ProcessInput(); if (result == -2) { return 0; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index e5b6cf7c3..908e4b9d6 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -16,8 +16,8 @@ #include "strings.h" #include "unknown_task.h" -extern const struct WindowConfig gWindowConfig_81E6D54; -extern const struct WindowConfig gWindowConfig_81E6DA8; +extern const struct WindowTemplate gWindowConfig_81E6D54; +extern const struct WindowTemplate gWindowConfig_81E6DA8; extern void sub_80546B8(void); @@ -310,7 +310,7 @@ void sub_80E62F8(void) case 2: InitMenuWindow(&gWindowConfig_81E6D54); InitMenuWindow(&gWindowConfig_81E6DA8); - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 3: sub_80E6424(); @@ -732,7 +732,7 @@ void sub_80E6BC0(void) { sub_80E91D4(2); DisplayYesNoMenu(23, 8, 1); - MoveMenuCursor(1); + Menu_MoveCursor(1); gEasyChatStruct->unk24++; } break; @@ -770,7 +770,7 @@ void sub_80E6C84(void) sub_80E8398(2); sub_80E91D4(3); DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(1); + Menu_MoveCursor(1); if (gEasyChatStruct->unk8 == 9 || gEasyChatStruct->unk8 == 4 || gEasyChatStruct->unk8 == 7 @@ -790,7 +790,7 @@ void sub_80E6C84(void) case 0: sub_80E91D4(4); DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(1); + Menu_MoveCursor(1); gEasyChatStruct->unk24++; break; case -1: @@ -856,7 +856,7 @@ void sub_80E6D7C(void) sub_80E91D4(1); sub_80E9744(); DisplayYesNoMenu(23, 8, 0); - MoveMenuCursor(0); + Menu_MoveCursor(0); gEasyChatStruct->unk24++; } break; @@ -1738,5 +1738,5 @@ void sub_80E81FC(void) { PlaySE(SE_SELECT); sub_80E95A4(); - MenuZeroFillWindowRect(0, 0, 29, 13); + Menu_EraseWindowRect(0, 0, 29, 13); } diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index fe3aa7cc9..5acdba04e 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1068,13 +1068,13 @@ void sub_80E91D4(u8 a) if (a == 10) { - MenuZeroFillWindowRect(3, 14, 26, 19); + Menu_EraseWindowRect(3, 14, 26, 19); sub_80E9198(10); return; } if (sub_80E91A4() == 10) - MenuDrawTextWindow(3, 14, 26, 19); + Menu_DrawStdWindowFrame(3, 14, 26, 19); sub_80E9198(a); switch (a) @@ -1175,7 +1175,7 @@ void sub_80E9368(u8 a) if (r4 != NULL) { sub_8072C74(gEasyChatStruct->unk9F8E + 3, r4, 240, 2); - MenuPrint(gEasyChatStruct->unk9F8E, 0, 0); + Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); } else { @@ -1186,8 +1186,8 @@ void sub_80E9368(u8 a) str[2] = 0x10; str[3] = EOS; - MenuPrint(gEasyChatStruct->unk9F8E, 0, 0); - MenuPrint(gEasyChatStruct->unk9F8E, 28, 0); + Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); + Menu_PrintText(gEasyChatStruct->unk9F8E, 28, 0); } BasicInitMenuWindow(&gWindowConfig_81E6DA8); } @@ -1259,7 +1259,7 @@ void sub_80E9620(u16 a, u16 b) { if (r10 >= gEasyChatStruct->unkA) { - MenuPrint(gUnknown_083DBEA8, r6, r7); + Menu_PrintText(gUnknown_083DBEA8, r6, r7); break; } if (gEasyChatStruct->unkC[r10] == 0xFFFF) @@ -1270,7 +1270,7 @@ void sub_80E9620(u16 a, u16 b) else { sub_80EB218(gEasyChatStruct->unk9E14, gEasyChatStruct->unkC[r10], 11); - MenuPrint(gEasyChatStruct->unk9E14, r6, r7); + Menu_PrintText(gEasyChatStruct->unk9E14, r6, r7); r6 += gEasyChatStruct->unk8C[i][j] + 11; } r10++; @@ -1337,7 +1337,7 @@ void sub_80E97C0(u16 a, u16 b) r2[2] = r1 * 8; r2[3] = EOS; - MenuPrint(gEasyChatStruct->unk9E6E, b, a); + Menu_PrintText(gEasyChatStruct->unk9E6E, b, a); a += 2; } @@ -1378,7 +1378,7 @@ void sub_80E98C4(void) default: return; } - MenuFillWindowRectWithBlankTile(2, r1, 27, r3 * 2 + r1 - 1); + Menu_BlankWindowRect(2, r1, 27, r3 * 2 + r1 - 1); BasicInitMenuWindow(&gWindowConfig_81E6DA8); } @@ -1386,7 +1386,7 @@ void sub_80E9940(u8 *a, u8 b) { u8 r4 = (b & 7); - MenuFillWindowRectWithBlankTile(2, r4 * 2, 31, r4 * 2 + 1); + Menu_BlankWindowRect(2, r4 * 2, 31, r4 * 2 + 1); sub_80E9A7C(a, b); sub_80E9A60(a, 2, r4 * 2); } @@ -1453,7 +1453,7 @@ void sub_80E9A4C(void) void sub_80E9A60(const u8 *a, u16 b, u16 c) { c &= 0xF; - MenuPrint(a, b, c); + Menu_PrintText(a, b, c); } void sub_80E9A7C(u8 *dest, u16 b) @@ -1523,7 +1523,7 @@ void sub_80E9AF8(u16 a) void sub_80E9C74(u16 a) { a &= 7; - MenuFillWindowRectWithBlankTile(0, a * 2, 29, a * 2 + 1); + Menu_BlankWindowRect(0, a * 2, 29, a * 2 + 1); } void sub_80E9C94(void) diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 3187de7ed..b12ee38ce 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -109,13 +109,13 @@ static void sub_8082CD4(u8 arg0, u8 arg1) static void sub_8082D18(u32 value) { ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); - MenuDrawTextWindow(18, 10, 28, 13); + Menu_DrawStdWindowFrame(18, 10, 28, 13); sub_8072BD8(gOtherText_PLink, 19, 11, 72); } static void sub_8082D4C() { - MenuZeroFillWindowRect(18, 10, 28, 13); + Menu_EraseWindowRect(18, 10, 28, 13); } static void sub_8082D60(u8 taskId, u8 arg1) @@ -790,7 +790,7 @@ static void sub_80839DC(u8 taskId) case 3: sub_8055588(); HideFieldMessageBox(); - MenuZeroFillScreen(); + Menu_EraseScreen(); DestroyTask(taskId); EnableBothScriptContexts(); break; diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 12cde22a7..ae6c85180 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -41,10 +41,10 @@ static void Task_InitMenu(u8 taskId) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; SetVBlankCallback(VBlankCB_ClearSaveDataScreen); - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gSystemText_ClearAllSaveDataPrompt, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gSystemText_ClearAllSaveDataPrompt, 3, 15); - MenuDrawTextWindow(2, 1, 8, 6); + Menu_DrawStdWindowFrame(2, 1, 8, 6); PrintMenuItems(3, 2, 2, gMenuYesNoItems); InitMenu(0, 3, 2, 2, 1, 5); diff --git a/src/engine/link.c b/src/engine/link.c index 28323207c..a2df02b5f 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -239,7 +239,7 @@ void LinkTestScreen(void) ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); ResetBlockSend(); gLinkType = 0x1111; OpenLink(); @@ -1237,8 +1237,8 @@ void CB2_LinkError(void) ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E7198); - MenuZeroFillScreen(); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E7198); + Menu_EraseScreen(); REG_BLDALPHA = 0; REG_BG0VOFS = 0; REG_BG0HOFS = 0; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 909b5676b..623969802 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -234,7 +234,7 @@ u32 InitMainMenu(u8 a1) ResetSpriteData(); FreeAllSpritePalettes(); SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); if (a1) BeginNormalPaletteFade(-1, 0, 0x10, 0, 0x0000); // fade to black @@ -293,7 +293,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 2: - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gSaveFileDeletedMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -301,7 +301,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; break; case 255: - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gSaveFileCorruptMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -319,7 +319,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 4: - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gBoardNotInstalledMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -331,11 +331,11 @@ void Task_MainMenuCheckSave(u8 taskId) void Task_MainMenuWaitForSaveErrorAck(u8 taskId) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { if (gMain.newKeys & A_BUTTON) { - MenuZeroFillWindowRect(2, 14, 27, 19); + Menu_EraseWindowRect(2, 14, 27, 19); gTasks[taskId].func = Task_MainMenuCheckRtc; } } @@ -359,7 +359,7 @@ void Task_MainMenuCheckRtc(u8 taskId) } else { - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gBatteryDryMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(113, 159); @@ -370,11 +370,11 @@ void Task_MainMenuCheckRtc(u8 taskId) void Task_MainMenuWaitForRtcErrorAck(u8 taskId) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { if ( gMain.newKeys & 1 ) { - MenuZeroFillWindowRect(2, 14, 27, 19); + Menu_EraseWindowRect(2, 14, 27, 19); gTasks[taskId].func = Task_MainMenuDraw; } } @@ -412,28 +412,28 @@ void Task_MainMenuDraw(u8 taskId) { case HAS_NO_SAVED_GAME: default: - MenuDrawTextWindow(1, 0, 28, 3); + Menu_DrawStdWindowFrame(1, 0, 28, 3); PrintMainMenuItem(gMainMenuString_NewGame, 2, 1); - MenuDrawTextWindow(1, 4, 28, 7); + Menu_DrawStdWindowFrame(1, 4, 28, 7); PrintMainMenuItem(gMainMenuString_Option, 2, 5); break; case HAS_SAVED_GAME: - MenuDrawTextWindow(1, 0, 28, 7); + Menu_DrawStdWindowFrame(1, 0, 28, 7); PrintMainMenuItem(gMainMenuString_Continue, 2, 1); - MenuDrawTextWindow(1, 8, 28, 11); + Menu_DrawStdWindowFrame(1, 8, 28, 11); PrintMainMenuItem(gMainMenuString_NewGame, 2, 9); - MenuDrawTextWindow(1, 12, 28, 15); + Menu_DrawStdWindowFrame(1, 12, 28, 15); PrintMainMenuItem(gMainMenuString_Option, 2, 13); PrintSaveFileInfo(); break; case HAS_MYSTERY_GIFT: - MenuDrawTextWindow(1, 0, 28, 7); + Menu_DrawStdWindowFrame(1, 0, 28, 7); PrintMainMenuItem(gMainMenuString_Continue, 2, 1); - MenuDrawTextWindow(1, 8, 28, 11); + Menu_DrawStdWindowFrame(1, 8, 28, 11); PrintMainMenuItem(gMainMenuString_NewGame, 2, 9); - MenuDrawTextWindow(1, 12, 28, 15); + Menu_DrawStdWindowFrame(1, 12, 28, 15); PrintMainMenuItem(gMainMenuString_MysteryEvents, 2, 13); - MenuDrawTextWindow(1, 16, 28, 19); + Menu_DrawStdWindowFrame(1, 16, 28, 19); PrintMainMenuItem(gMainMenuString_Option, 2, 0x11); PrintSaveFileInfo(); break; @@ -681,7 +681,7 @@ void PrintMainMenuItem(const u8 *text, u8 left, u8 top) buffer[29] = EOS; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } void PrintSaveFileInfo(void) @@ -694,8 +694,8 @@ void PrintSaveFileInfo(void) void PrintPlayerName(void) { - MenuPrint(gMainMenuString_Player, 2, 3); - MenuPrint(gSaveBlock2.playerName, 9, 3); + Menu_PrintText(gMainMenuString_Player, 2, 3); + Menu_PrintText(gSaveBlock2.playerName, 9, 3); } void PrintPlayTime(void) @@ -704,15 +704,15 @@ void PrintPlayTime(void) u8 alignedPlayTime[32]; #if defined(ENGLISH) - MenuPrint(gMainMenuString_Time, 16, 3); + Menu_PrintText(gMainMenuString_Time, 16, 3); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); sub_8072C74(alignedPlayTime, playTime, 48, 1); - MenuPrint(alignedPlayTime, 22, 3); + Menu_PrintText(alignedPlayTime, 22, 3); #elif defined(GERMAN) MenuPrint_PixelCoords(gMainMenuString_Time, 124, 24, TRUE); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); sub_8072C74(alignedPlayTime, playTime, 40, 1); - MenuPrint(alignedPlayTime, 23, 3); + Menu_PrintText(alignedPlayTime, 23, 3); #endif } @@ -720,9 +720,9 @@ void PrintPokedexCount(void) { u8 buffer[16]; - MenuPrint(gMainMenuString_Pokedex, 2, 5); + Menu_PrintText(gMainMenuString_Pokedex, 2, 5); sub_8072C14(buffer, GetPokedexSeenCount(), 18, 0); - MenuPrint(buffer, 9, 5); + Menu_PrintText(buffer, 9, 5); } void PrintBadgeCount(void) @@ -730,7 +730,7 @@ void PrintBadgeCount(void) u8 buffer[16]; #if defined(ENGLISH) - MenuPrint(gMainMenuString_Badges, 16, 5); + Menu_PrintText(gMainMenuString_Badges, 16, 5); #elif defined(GERMAN) MenuPrint_PixelCoords(gMainMenuString_Badges, 124, 40, TRUE); #endif @@ -751,7 +751,7 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); REG_WIN0H = 0; REG_WIN0V = 0; REG_WININ = 0; @@ -812,7 +812,7 @@ static void Task_NewGameSpeech3(u8 taskId) } else { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"Hi! Sorry to keep you waiting... //...But everyone calls me the POKEMON PROFESSOR." MenuPrintMessage(gBirchSpeech_Welcome, 3, 14); @@ -886,7 +886,7 @@ static void Task_NewGameSpeech9(u8 taskId) { if (BirchSpeechUpdateWindowText()) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"And you are?" MenuPrintMessage(gBirchSpeech_AndYouAre, 3, 14); gTasks[taskId].func = Task_NewGameSpeech10; @@ -962,7 +962,7 @@ static void Task_NewGameSpeech13(u8 taskId) static void Task_NewGameSpeech14(u8 taskId) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"Are you a boy? Or are you a girl?" MenuPrintMessage(gBirchSpeech_AreYouBoyOrGirl, 3, 14); gTasks[taskId].func = Task_NewGameSpeech15; @@ -988,19 +988,19 @@ static void Task_NewGameSpeech16(u8 taskId) HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; - MenuZeroFillWindowRect(2, 4, 8, 9); + Menu_EraseWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; - MenuZeroFillWindowRect(2, 4, 8, 9); + Menu_EraseWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; } - cursorPos = GetMenuCursorPos(); + cursorPos = Menu_GetCursorPos(); if (cursorPos != gTasks[taskId].tGenderSelection) { @@ -1062,7 +1062,7 @@ static void Task_NewGameSpeech18(u8 taskId) static void Task_NewGameSpeech19(u8 taskId) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"All right. What's your name?" MenuPrintMessage(gBirchSpeech_WhatsYourName, 3, 14); gTasks[taskId].func = Task_NewGameSpeech20; @@ -1090,7 +1090,7 @@ static void Task_NewGameSpeech21(u8 taskId) case 4: HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 22, 12); + Menu_EraseWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); gTasks[taskId].func = Task_NewGameSpeech23; break; @@ -1102,7 +1102,7 @@ static void Task_NewGameSpeech21(u8 taskId) case -1: //B button HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 22, 12); + Menu_EraseWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; } @@ -1120,7 +1120,7 @@ static void Task_NewGameSpeech22(u8 taskId) static void Task_NewGameSpeech23(u8 taskId) { - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); //"So it's (PLAYER)?" StringExpandPlaceholders(gStringVar4, gBirchSpeech_SoItsPlayer); MenuPrintMessage(gStringVar4, 3, 14); @@ -1143,7 +1143,7 @@ static void Task_NewGameSpeech25(u8 taskId) { case 0: //YES PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 8, 7); + Menu_EraseWindowRect(2, 1, 8, 7); gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); StartBackgroundFadeOut(taskId, 1); @@ -1152,7 +1152,7 @@ static void Task_NewGameSpeech25(u8 taskId) case -1: //B button case 1: //NO PlaySE(SE_SELECT); - MenuZeroFillWindowRect(2, 1, 8, 7); + Menu_EraseWindowRect(2, 1, 8, 7); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; } @@ -1197,7 +1197,7 @@ static void Task_NewGameSpeech27(u8 taskId) StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); StringExpandPlaceholders(gStringVar4, gBirchSpeech_AhOkayYouArePlayer); //"Ah, okay! You're (PLAYER) who's moving... //...I get it now!" @@ -1267,7 +1267,7 @@ static void Task_NewGameSpeech29(u8 taskId) StartSpriteFadeIn(taskId, 2); StartBackgroundFadeIn(taskId, 1); - MenuDrawTextWindow(2, 13, 27, 18); + Menu_DrawStdWindowFrame(2, 13, 27, 18); MenuPrintMessage(gBirchSpeech_AreYouReady, 3, 14); gTasks[taskId].func = Task_NewGameSpeech30; } @@ -1374,7 +1374,7 @@ void CB_ContinueNewGameSpeechPart2() AddBirchSpeechObjects(taskId); SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowConfig *)&gWindowConfig_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); if (gSaveBlock2.playerGender != MALE) { @@ -1661,7 +1661,7 @@ static void StartBackgroundFadeIn(u8 taskId, u8 interval) static void CreateGenderMenu(u8 left, u8 top) { u8 menuLeft, menuTop; - MenuDrawTextWindow(left, top, left + 6, top + 5); + Menu_DrawStdWindowFrame(left, top, left + 6, top + 5); menuLeft = left + 1; menuTop = top + 1; PrintMenuItems(menuLeft, menuTop, 2, gUnknown_081E79B0); @@ -1670,12 +1670,12 @@ static void CreateGenderMenu(u8 left, u8 top) static s8 GenderMenuProcessInput(void) { - return ProcessMenuInputNoWrap(); + return Menu_ProcessInputNoWrap(); } static void CreateNameMenu(u8 left, u8 top) { - MenuDrawTextWindow(left, top, left + 10, top + 11); + Menu_DrawStdWindowFrame(left, top, left + 10, top + 11); if (gSaveBlock2.playerGender == MALE) PrintMenuItems(left + 1, top + 1, 5, gMalePresetNames); @@ -1687,7 +1687,7 @@ static void CreateNameMenu(u8 left, u8 top) static s8 NameMenuProcessInput(void) { - return ProcessMenuInput(); + return Menu_ProcessInput(); } static void SetPresetPlayerName(u8 index) diff --git a/src/engine/menu.c b/src/engine/menu.c index 10988c1d7..fe88bf4e4 100644 --- a/src/engine/menu.c +++ b/src/engine/menu.c @@ -24,8 +24,8 @@ struct Menu u8 columnXCoords[8]; }; -static void MultistepInitMenuWindowInternal(const struct WindowConfig *, u16); -static void InitMenuWindowInternal(const struct WindowConfig *, u16); +static void MultistepInitMenuWindowInternal(const struct WindowTemplate *, u16); +static void InitMenuWindowInternal(const struct WindowTemplate *, u16); static bool8 sub_80723D4(void); static u8 sub_8072484(u8, u8, u8, u8, u8, u8, u32); static u8 sub_80724F4(u8, u8, u8, const struct MenuAction[], u8); @@ -52,7 +52,7 @@ const struct MenuAction gMenuYesNoItems[] = void CloseMenu(void) { PlaySE(SE_SELECT); - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_8064E2C(); ScriptContext2_Disable(); HandleDestroyMenuCursors(); @@ -64,22 +64,22 @@ void AppendToList(u8 *list, u8 *pindex, u32 value) (*pindex)++; } -void InitMenuWindow(const struct WindowConfig *winConfig) +void InitMenuWindow(const struct WindowTemplate *winTemplate) { - InitMenuWindowInternal(winConfig, 1); + InitMenuWindowInternal(winTemplate, 1); } -void MultistepInitMenuWindowBegin(const struct WindowConfig *winConfig) +void MultistepInitMenuWindowBegin(const struct WindowTemplate *winTemplate) { - MultistepInitMenuWindowInternal(winConfig, 1); + MultistepInitMenuWindowInternal(winTemplate, 1); } -static void MultistepInitMenuWindowInternal(const struct WindowConfig *winConfig, u16 tileOffset) +static void MultistepInitMenuWindowInternal(const struct WindowTemplate *winTemplate, u16 tileOffset) { gMenuMultistepInitState = 0; gMenuTextTileOffset = tileOffset; gMenuWindowPtr = &gMenuWindow; - InitWindowFromConfig(&gMenuWindow, winConfig); + Text_InitWindowWithTemplate(&gMenuWindow, winTemplate); } bool32 MultistepInitMenuWindowContinue(void) @@ -97,13 +97,13 @@ bool32 MultistepInitMenuWindowContinue(void) goto fail; goto next; case 3: - gMenuTextWindowContentTileOffset = SetTextWindowBaseTileNum(gMenuTextWindowTileOffset); + gMenuTextWindowContentTileOffset = TextWindow_SetBaseTileNum(gMenuTextWindowTileOffset); next: gMenuMultistepInitState++; return 0; case 4: - LoadTextWindowGraphics(gMenuWindowPtr); - gMenuMessageBoxContentTileOffset = SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); + gMenuMessageBoxContentTileOffset = TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); return 1; default: fail: @@ -111,73 +111,73 @@ bool32 MultistepInitMenuWindowContinue(void) } } -static void InitMenuWindowInternal(const struct WindowConfig *winConfig, u16 tileOffset) +static void InitMenuWindowInternal(const struct WindowTemplate *winTemplate, u16 tileOffset) { gMenuWindowPtr = &gMenuWindow; - InitWindowFromConfig(&gMenuWindow, winConfig); + Text_InitWindowWithTemplate(&gMenuWindow, winTemplate); gMenuTextTileOffset = tileOffset; gMenuTextWindowTileOffset = InitWindowTileData(gMenuWindowPtr, gMenuTextTileOffset); - gMenuTextWindowContentTileOffset = SetTextWindowBaseTileNum(gMenuTextWindowTileOffset); - LoadTextWindowGraphics(gMenuWindowPtr); - gMenuMessageBoxContentTileOffset = SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); + gMenuTextWindowContentTileOffset = TextWindow_SetBaseTileNum(gMenuTextWindowTileOffset); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); + gMenuMessageBoxContentTileOffset = TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); } -void unref_sub_8071DA4(struct WindowConfig *winConfig, u16 tileOffset) +void unref_sub_8071DA4(struct WindowTemplate *winTemplate, u16 tileOffset) { gMenuWindowPtr = &gMenuWindow; - InitWindowFromConfig(&gMenuWindow, winConfig); + Text_InitWindowWithTemplate(&gMenuWindow, winTemplate); gMenuTextWindowTileOffset = tileOffset; - gMenuTextWindowContentTileOffset = SetTextWindowBaseTileNum(gMenuTextWindowTileOffset); - LoadTextWindowGraphics(gMenuWindowPtr); - gMenuTextTileOffset = SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); + gMenuTextWindowContentTileOffset = TextWindow_SetBaseTileNum(gMenuTextWindowTileOffset); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); + gMenuTextTileOffset = TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); gMenuMessageBoxContentTileOffset = InitWindowTileData(gMenuWindowPtr, gMenuTextTileOffset); } -void MenuLoadTextWindowGraphics_OverrideFrameType(u8 frameType) +void Menu_LoadStdFrameGraphicsOverrideStyle(u8 frameType) { - LoadTextWindowGraphics_OverrideFrameType(gMenuWindowPtr, frameType); + TextWindow_LoadStdFrameGraphicsOverrideStyle(gMenuWindowPtr, frameType); } -void MenuLoadTextWindowGraphics(void) +void Menu_LoadStdFrameGraphics(void) { - LoadTextWindowGraphics(gMenuWindowPtr); + TextWindow_LoadStdFrameGraphics(gMenuWindowPtr); } -void BasicInitMenuWindow(const struct WindowConfig *winConfig) +void BasicInitMenuWindow(const struct WindowTemplate *winTemplate) { - InitWindowFromConfig(gMenuWindowPtr, winConfig); + Text_InitWindowWithTemplate(gMenuWindowPtr, winTemplate); gMenuWindowPtr->tileDataStartOffset = gMenuTextTileOffset; } -void MenuPrint(const u8 *str, u8 left, u8 top) +void Menu_PrintText(const u8 *str, u8 left, u8 top) { - sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); + Text_InitWindowAndPrintText(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void MenuZeroFillWindowRect(u8 left, u8 top, u8 right, u8 bottom) +void Menu_EraseWindowRect(u8 left, u8 top, u8 right, u8 bottom) { ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom); } -void MenuFillWindowRectWithBlankTile(u8 left, u8 top, u8 right, u8 bottom) +void Menu_BlankWindowRect(u8 left, u8 top, u8 right, u8 bottom) { - FillWindowRectWithBlankTile(gMenuWindowPtr, left, top, right, bottom); + Text_BlankWindowRect(gMenuWindowPtr, left, top, right, bottom); } -void MenuZeroFillScreen(void) +void Menu_EraseScreen(void) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); } -void MenuDrawTextWindow(u8 left, u8 top, u8 right, u8 bottom) +void Menu_DrawStdWindowFrame(u8 left, u8 top, u8 right, u8 bottom) { - DrawTextWindow(gMenuWindowPtr, left, top, right, bottom); + TextWindow_DrawStdFrame(gMenuWindowPtr, left, top, right, bottom); } void sub_8071F40(const u8 *str) { - MenuDrawTextWindow(2, 14, 28, 19); - MenuPrint(str, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 28, 19); + Menu_PrintText(str, 3, 15); } void sub_8071F60(u8 a1, u8 a2, u8 a3) @@ -187,27 +187,27 @@ void sub_8071F60(u8 a1, u8 a2, u8 a3) u16 unref_sub_8071F98(u8 x, u8 y) { - return GetWindowTilemapEntry(gMenuWindowPtr, x, y); + return Text_GetWindowTilemapEntry(gMenuWindowPtr, x, y); } void unref_sub_8071FBC(u16 a1, u8 a2, u8 a3, u8 a4, u8 a5) { - DrawWindowRect(gMenuWindowPtr, a1, a2, a3, a4, a5); + Text_FillWindowBorder(gMenuWindowPtr, a1, a2, a3, a4, a5); } -void MenuDisplayMessageBox(void) +void Menu_DisplayDialogueFrame(void) { - DisplayMessageBox(gMenuWindowPtr); + TextWindow_DisplayDialogueFrame(gMenuWindowPtr); } void MenuPrintMessage(const u8 *str, u8 left, u8 top) { - sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); + Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } void MenuPrintMessageDefaultCoords(const u8 *str) { - sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); + Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); } void MenuSetText(const u8 *str) @@ -215,22 +215,22 @@ void MenuSetText(const u8 *str) sub_8002E90(gMenuWindowPtr, str); } -u8 MenuUpdateWindowText(void) +u8 Menu_UpdateWindowText(void) { - return sub_80035AC(gMenuWindowPtr); + return Text_UpdateWindow(gMenuWindowPtr); } u8 unref_sub_8072098(void) { - return sub_8003418(gMenuWindowPtr); + return Text_PrintWindowSimple(gMenuWindowPtr); } -void sub_80720B0(void) +void Menu_ClearWindowText(void) { - ClearWindowTextLines(gMenuWindowPtr); + Text_ClearWindow(gMenuWindowPtr); } -u8 MoveMenuCursor(s8 delta) +u8 Menu_MoveCursor(s8 delta) { s32 newPos = gMenu.cursorPos + delta; @@ -245,7 +245,7 @@ u8 MoveMenuCursor(s8 delta) return gMenu.cursorPos; } -u8 MoveMenuCursorNoWrap(s8 delta) +u8 Menu_MoveCursorNoWrap(s8 delta) { s32 newPos = gMenu.cursorPos + delta; @@ -260,12 +260,12 @@ u8 MoveMenuCursorNoWrap(s8 delta) return gMenu.cursorPos; } -u8 GetMenuCursorPos(void) +u8 Menu_GetCursorPos(void) { return gMenu.cursorPos; } -s8 ProcessMenuInput(void) +s8 Menu_ProcessInput(void) { if (gMain.newKeys & A_BUTTON) { @@ -285,20 +285,20 @@ s8 ProcessMenuInput(void) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); return -2; } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); return -2; } return -2; } -s8 ProcessMenuInputNoWrap(void) +s8 Menu_ProcessInputNoWrap(void) { u8 cursorPos = gMenu.cursorPos; @@ -319,18 +319,18 @@ s8 ProcessMenuInputNoWrap(void) if (gMain.newKeys & DPAD_UP) { - if (cursorPos != MoveMenuCursorNoWrap(-1)) + if (cursorPos != Menu_MoveCursorNoWrap(-1)) PlaySE(SE_SELECT); return -2; } else if (gMain.newKeys & DPAD_DOWN) { - if (cursorPos != MoveMenuCursorNoWrap(1)) + if (cursorPos != Menu_MoveCursorNoWrap(1)) PlaySE(SE_SELECT); return -2; } - MoveMenuCursorNoWrap(0); + Menu_MoveCursorNoWrap(0); return -2; } @@ -465,7 +465,7 @@ static u8 sub_80724F4(u8 left, u8 top, u8 menuItemCount, const struct MenuAction totalWidth = (gMenu.columnXCoords[columnCount] + 1); right = left + totalWidth; - MenuDrawTextWindow(left, top, right, bottom); + Menu_DrawStdWindowFrame(left, top, right, bottom); } return maxWidth; @@ -501,7 +501,7 @@ static void sub_8072620(u8 left, u8 top, u8 menuItemCount, const struct MenuActi u8 row = 0; u8 j; for (j = 0; i + j < menuItemCount; j += columnCount, row++) - MenuPrint(menuItems[i + j].text, left + gMenu.columnXCoords[i % columnCount], top + 2 * row); + Menu_PrintText(menuItems[i + j].text, left + gMenu.columnXCoords[i % columnCount], top + 2 * row); } } @@ -513,14 +513,14 @@ void sub_807274C(u8 left, u8 top, u8 menuItemCount, u8 a4, const struct MenuActi sub_8072620(left + 1, top + 1, menuItemCount, menuItems, columnCount); } -s8 sub_80727CC(void) +s8 Menu_ProcessInputGridLayout(void) { if (gMain.newKeys & A_BUTTON) { if (gMenu.menu_field_7) HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - return GetMenuCursorPos(); + return Menu_GetCursorPos(); } if (gMain.newKeys & B_BUTTON) @@ -568,7 +568,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m u8 i; for (i = 0; i < menuItemCount; i++) - MenuPrint(menuItems[i].text, left, top + 2 * i); + Menu_PrintText(menuItems[i].text, left, top + 2 * i); } void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) @@ -576,7 +576,7 @@ void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct Men u8 i; for (i = 0; i < menuItemCount; i++) - MenuPrint(menuItems[order[i]].text, left, top + 2 * i); + Menu_PrintText(menuItems[order[i]].text, left, top + 2 * i); } void InitYesNoMenu(u8 left, u8 top, u8 a3) @@ -587,14 +587,14 @@ void InitYesNoMenu(u8 left, u8 top, u8 a3) void DisplayYesNoMenu(u8 left, u8 top, u32 a3) { - MenuDrawTextWindow(left, top, left + 6, top + 5); + Menu_DrawStdWindowFrame(left, top, left + 6, top + 5); InitYesNoMenu(left, top, 5); gMenu.menu_field_7 = a3 ? -1 : 0; } s8 ProcessMenuInputNoWrap_(void) { - return ProcessMenuInputNoWrap(); + return Menu_ProcessInputNoWrap(); } u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) @@ -623,7 +623,7 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) height = (height + 7) / 8; if (newlineCount < height) - MenuFillWindowRectWithBlankTile(left, top + 2 * newlineCount, left + width - 1, height + top - 1); + Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1); } #elif GERMAN __attribute__((naked)) @@ -700,7 +700,7 @@ _08072B0C:\n\ lsls r3, 24\n\ lsrs r3, 24\n\ adds r0, r5, 0\n\ - bl MenuFillWindowRectWithBlankTile\n\ + bl Menu_BlankWindowRect\n\ _08072B3E:\n\ add sp, 0x10\n\ pop {r4-r7}\n\ @@ -720,7 +720,7 @@ void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) u8 buffer[64]; u8 width = GetStringWidth(gMenuWindowPtr, a4); AlignString(gMenuWindowPtr, buffer, a1, width, 1); - sub_8003460(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); + Text_InitWindowAndPrintText(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); } void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) @@ -753,14 +753,14 @@ u8 sub_8072CBC() return sub_8004E24(gMenuWindowPtr); } -void sub_8072CD4(u8 *a1, u8 *a2, u8 *a3) +void Menu_GetTextColors(u8 *a1, u8 *a2, u8 *a3) { - sub_8004E28(gMenuWindowPtr, a1, a2, a3); + Text_GetTextColors(gMenuWindowPtr, a1, a2, a3); } u32 MenuUpdateWindowText_OverrideLineLength(u8 lineLength) { - return sub_80037C8(gMenuWindowPtr, lineLength); + return Text_UpdateWindowOverrideLineLength(gMenuWindowPtr, lineLength); } struct Window *unref_sub_8072D0C(void) @@ -792,7 +792,7 @@ u8 InitMenu(u8 cursorSubpriority, u8 left, u8 top, u8 numChoices, u8 cursorPos, pos = 0; gMenu.cursorPos = pos; - MoveMenuCursor(0); + Menu_MoveCursor(0); return pos; } diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index b9c3d5ad8..abb912938 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -47,7 +47,7 @@ void CB2_InitMysteryEventMenu(void) SetVBlankCallback(VBlankCB); SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; REG_BLDCNT = 0; CreateTask(Task_DestroySelf, 0); @@ -86,7 +86,7 @@ static void CB2_MysteryEventMenu(void) switch (gMain.state) { case 0: - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gMain.state++; break; @@ -97,7 +97,7 @@ static void CB2_MysteryEventMenu(void) gMain.state++; break; case 2: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gMain.state++; gLinkType = 21761; @@ -119,7 +119,7 @@ static void CB2_MysteryEventMenu(void) } break; case 4: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gMain.state++; break; #ifdef NONMATCHING @@ -135,8 +135,8 @@ static void CB2_MysteryEventMenu(void) { PlaySE(SE_SELECT); sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); + Menu_DrawStdWindowFrame(6, 5, 23, 8); + Menu_PrintText(gSystemText_LoadingEvent, 7, 6); gMain.state++; } else if (gMain.newKeys & B_BUTTON) @@ -155,7 +155,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerDataExchangeStatusTimed() == 3) { sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; @@ -170,7 +170,7 @@ static void CB2_MysteryEventMenu(void) else { CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; @@ -195,8 +195,8 @@ static void CB2_MysteryEventMenu(void) { PlaySE(SE_SELECT); sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); + Menu_DrawStdWindowFrame(6, 5, 23, 8); + Menu_PrintText(gSystemText_LoadingEvent, 7, 6); gMain.state++; } else if (gMain.newKeys & B_BUTTON) @@ -219,7 +219,7 @@ static void CB2_MysteryEventMenu(void) if (GetLinkPlayerDataExchangeStatusTimed() == 3) { sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); ptr = (u8 *)&gMain; @@ -245,7 +245,7 @@ static void CB2_MysteryEventMenu(void) else { CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); label: GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); @@ -266,7 +266,7 @@ static void CB2_MysteryEventMenu(void) break; #endif case 7: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gMain.state++; break; case 8: @@ -297,8 +297,8 @@ static void CB2_MysteryEventMenu(void) gMain.state++; break; case 13: - MenuZeroFillWindowRect(6, 5, 23, 8); - if (MenuUpdateWindowText()) + Menu_EraseWindowRect(6, 5, 23, 8); + if (Menu_UpdateWindowText()) { gMain.state++; gUnknown_02039338 = 0; @@ -326,7 +326,7 @@ static void CB2_MysteryEventMenu(void) if (!IsLinkMaster()) { CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); + Menu_EraseWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); MenuPrintMessageDefaultCoords(gStringVar4); gMain.state = 13; diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 440504d5a..5685584f5 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -503,7 +503,7 @@ static bool8 MainState_6(struct Task *task) static bool8 MainState_UpdateSentToPCMessage(struct Task *task) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) namingScreenDataPtr->state++; return FALSE; } @@ -1611,7 +1611,7 @@ static void DisplaySentToPCMessage(void) StringCopy(gStringVar1, namingScreenDataPtr->destBuffer); StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC); BasicInitMenuWindow(&gWindowConfig_81E6E88); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); MenuPrintMessageDefaultCoords(gStringVar4); } @@ -1757,7 +1757,7 @@ static void (*const gUnknown_083CE310[][2])(void) = sub_80B7844, }; -static const struct WindowConfig *const gUnknown_083CE328[][2][2] = +static const struct WindowTemplate *const gUnknown_083CE328[][2][2] = { { {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8}, @@ -1838,7 +1838,7 @@ static void PrintKeyboardCharacters(u8 page) //print letters on page s16 r5; for (i = 0, r5 = 9; i < 4; i++, r5 += 2) - MenuPrint(sKeyboardCharacters[page][i], 3, r5); + Menu_PrintText(sKeyboardCharacters[page][i], 3, r5); } static void sub_80B78A8(void) @@ -1846,7 +1846,7 @@ static void sub_80B78A8(void) BasicInitMenuWindow(&gWindowConfig_81E6F4C); gUnknown_083CE358[namingScreenDataPtr->templateNum](); gUnknown_083CE368[namingScreenDataPtr->template->unk3](); - MenuPrint(namingScreenDataPtr->template->title, 9, 2); + Menu_PrintText(namingScreenDataPtr->template->title, 9, 2); } static void nullsub_61(void) @@ -1870,7 +1870,7 @@ static void sub_80B7924(void) { if ((s16)namingScreenDataPtr->unk40 == MON_FEMALE) genderSymbol[0] = 0xB6; //female symbol - MenuPrint(genderSymbol, 0x14, 4); + Menu_PrintText(genderSymbol, 0x14, 4); } } @@ -1887,7 +1887,7 @@ static void sub_80B7960(void) string += 6; StringCopy(string, namingScreenDataPtr->textBuffer); BasicInitMenuWindow(&gWindowConfig_81E6F4C); - MenuPrint(gStringVar1, namingScreenDataPtr->unk2, 4); + Menu_PrintText(gStringVar1, namingScreenDataPtr->unk2, 4); } //-------------------------------------------------- diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index dfc49b035..f35ed5b5a 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -173,17 +173,17 @@ void CB2_InitOptionMenu(void) gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; - MenuDrawTextWindow(2, 0, 27, 3); - MenuDrawTextWindow(2, 4, 27, 19); - - MenuPrint(gSystemText_OptionMenu, 4, 1); - MenuPrint(gSystemText_TextSpeed, 4, 5); - MenuPrint(gSystemText_BattleScene, 4, 7); - MenuPrint(gSystemText_BattleStyle, 4, 9); - MenuPrint(gSystemText_Sound, 4, 11); - MenuPrint(gSystemText_ButtonMode, 4, 13); - MenuPrint(gSystemText_Frame, 4, 15); - MenuPrint(gSystemText_Cancel, 4, 17); + Menu_DrawStdWindowFrame(2, 0, 27, 3); + Menu_DrawStdWindowFrame(2, 4, 27, 19); + + Menu_PrintText(gSystemText_OptionMenu, 4, 1); + Menu_PrintText(gSystemText_TextSpeed, 4, 5); + Menu_PrintText(gSystemText_BattleScene, 4, 7); + Menu_PrintText(gSystemText_BattleStyle, 4, 9); + Menu_PrintText(gSystemText_Sound, 4, 11); + Menu_PrintText(gSystemText_ButtonMode, 4, 13); + Menu_PrintText(gSystemText_Frame, 4, 15); + Menu_PrintText(gSystemText_Cancel, 4, 17); TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); @@ -432,11 +432,11 @@ static u8 FrameType_ProcessInput(u8 selection) { if (gMain.newKeys & DPAD_RIGHT) { - if (selection <= 18) + if (selection < 19) selection++; else selection = 0; - MenuLoadTextWindowGraphics_OverrideFrameType(selection); + Menu_LoadStdFrameGraphicsOverrideStyle(selection); } if (gMain.newKeys & DPAD_LEFT) { @@ -444,7 +444,7 @@ static u8 FrameType_ProcessInput(u8 selection) selection--; else selection = 19; - MenuLoadTextWindowGraphics_OverrideFrameType(selection); + Menu_LoadStdFrameGraphicsOverrideStyle(selection); } return selection; } @@ -478,8 +478,8 @@ static void FrameType_DrawChoices(u8 selection) } text[i] = EOS; - MenuPrint(gSystemText_Type, 15, 15); - MenuPrint(text, 18, 15); + Menu_PrintText(gSystemText_Type, 15, 15); + Menu_PrintText(text, 18, 15); } #elif GERMAN __attribute__((naked)) @@ -536,7 +536,7 @@ _0808C380:\n\ mov r0, sp\n\ movs r1, 0xF\n\ movs r2, 0xF\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ add sp, 0x10\n\ pop {r4-r6}\n\ pop {r0}\n\ diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c index c8e2e34d5..75ca92e6a 100644 --- a/src/engine/record_mixing.c +++ b/src/engine/record_mixing.c @@ -146,8 +146,8 @@ void Task_RecordMixing_Main(u8 taskId) { tState = 4; data[10] = sub_8083664(); - sub_80720B0(); - MenuPrint(gOtherText_MixingComplete, 2, 15); + Menu_ClearWindowText(); + Menu_PrintText(gOtherText_MixingComplete, 2, 15); data[8] = 0; } break; @@ -160,7 +160,7 @@ void Task_RecordMixing_Main(u8 taskId) if (!gTasks[data[10]].isActive) { sub_8055588(); - MenuZeroFillScreen(); + Menu_EraseScreen(); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -176,8 +176,8 @@ void sub_80B95F0(u8 taskId) { case 0: sub_80B9A78(); - MenuDisplayMessageBox(); - MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gOtherText_MixingRecordsWithFriend, 2, 15); task->data[8] = 0x708; task->tState = 400; ClearLinkCallback_2(); diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 67e146899..eb823b84b 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -267,7 +267,7 @@ void ResetRtcScreen_FreeCursorPalette(void) void ResetRtcScreen_HideChooseTimeWindow(void) { - MenuZeroFillWindowRect(3, 8, 25, 11); + Menu_EraseWindowRect(3, 8, 25, 11); } void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 seconds) @@ -286,13 +286,13 @@ void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 sec dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); dest = StringCopy(dest, gUnknown_08376500); ConvertIntToDecimalStringN(dest, seconds, STR_CONV_MODE_LEADING_ZEROS, 2); - MenuPrint(gStringVar4, x, y); + Menu_PrintText(gStringVar4, x, y); } void ResetRtcScreen_ShowChooseTimeWindow(u16 days, u8 hours, u8 minutes, u8 seconds) { - MenuDrawTextWindow(3, 8, 25, 11); - MenuPrint(gOtherText_OK, 20, 9); + Menu_DrawStdWindowFrame(3, 8, 25, 11); + Menu_PrintText(gOtherText_OK, 20, 9); ResetRtcScreen_PrintTime(4, 9, days, hours, minutes, seconds); } @@ -468,8 +468,8 @@ void VBlankCB_ResetRtcScreen(void) void ResetRtcScreen_ShowMessage(const u8 *str) { - MenuDisplayMessageBox(); - MenuPrint(str, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(str, 2, 15); } void Task_ShowResetRtcPrompt(u8 taskId) @@ -479,9 +479,9 @@ void Task_ShowResetRtcPrompt(u8 taskId) switch (data[0]) { case 0: - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 0, 20, 10); - MenuPrint(gSystemText_PresentTime, 1, 1); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 20, 10); + Menu_PrintText(gSystemText_PresentTime, 1, 1); ResetRtcScreen_PrintTime( 1, 3, @@ -489,7 +489,7 @@ void Task_ShowResetRtcPrompt(u8 taskId) gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds); - MenuPrint(gSystemText_PreviousTime, 1, 5); + Menu_PrintText(gSystemText_PreviousTime, 1, 5); ResetRtcScreen_PrintTime( 1, 7, @@ -543,7 +543,7 @@ void Task_ResetRtcScreen(u8 taskId) case 2: if (gTasks[data[1]].isActive != TRUE) { - MenuZeroFillScreen(); + Menu_EraseScreen(); ResetRtcScreen_ShowMessage(gSystemText_PleaseResetTime); gLocalTime = gSaveBlock2.lastBerryTreeUpdate; data[1] = CreateTask(Task_ResetRtc_0, 80); diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index ba2d46546..a4642d241 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -122,9 +122,9 @@ static void CB2_SaveFailedScreen(void) LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); SetUpWindowConfig(&gWindowConfig_81E6C3C); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window - MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window + Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); ime = REG_IME; REG_IME = 0; @@ -158,22 +158,22 @@ static void CB2_WipeSave(void) { if (WipeSectors(gDamagedSaveSectors) != FALSE) { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); SetMainCallback2(CB2_GameplayCannotBeContinued); return; } - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1); HandleSavingData(gSaveFailedType); if (gDamagedSaveSectors != 0) { #ifdef BUGFIX_SAVEFAILEDSCREEN2 - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); #endif - MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); + Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); } wipeTries++; @@ -181,19 +181,19 @@ static void CB2_WipeSave(void) if (wipeTries == 3) { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1); SetMainCallback2(CB2_FadeAndReturnToTitleScreen); // called again below } else { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // no callback exists, so the game cannot continue. if (gGameContinueCallback == 0) - MenuPrint(gSystemText_SaveCompletedGameEnd, 2, MSG_WIN_TOP + 1); + Menu_PrintText(gSystemText_SaveCompletedGameEnd, 2, MSG_WIN_TOP + 1); else // callback exists, so continue - MenuPrint(gSystemText_SaveCompletedPressA, 2, MSG_WIN_TOP + 1); + Menu_PrintText(gSystemText_SaveCompletedPressA, 2, MSG_WIN_TOP + 1); } SetMainCallback2(CB2_FadeAndReturnToTitleScreen); @@ -205,8 +205,8 @@ static void CB2_GameplayCannotBeContinued(void) if (gMain.newKeys & A_BUTTON) { - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); - MenuPrint(gSystemText_GameplayEnded, 2, MSG_WIN_TOP + 1); + Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); + Menu_PrintText(gSystemText_GameplayEnded, 2, MSG_WIN_TOP + 1); SetVBlankCallback(VBlankCB); SetMainCallback2(CB2_FadeAndReturnToTitleScreen); } diff --git a/src/engine/save_menu_util.c b/src/engine/save_menu_util.c index 771cb72c7..2c5eb6afe 100644 --- a/src/engine/save_menu_util.c +++ b/src/engine/save_menu_util.c @@ -18,7 +18,7 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top) if (FlagGet(FLAG_SYS_POKEDEX_GET)) { // print info + dex information. - MenuDrawTextWindow(left, top, left + width, top + 11); + Menu_DrawStdWindowFrame(left, top, left + width, top + 11); PrintSaveMapName(++left, ++top); // MAP NAME PrintSavePlayerName(left, top + 2); // PLAYER PrintSaveBadges(left, top + 4); // BADGES @@ -28,7 +28,7 @@ void HandleDrawSaveWindowInfo(s16 left, s16 top) else { // print everything besides dex. - MenuDrawTextWindow(left, top, left + width, top + 9); + Menu_DrawStdWindowFrame(left, top, left + width, top + 9); PrintSaveMapName(++left, ++top); // MAP NAME PrintSavePlayerName(left, top + 2); // PLAYER PrintSaveBadges(left, top + 4); // BADGES @@ -45,9 +45,9 @@ void HandleCloseSaveWindow(u16 left, u16 top) width = 13; if (FlagGet(FLAG_SYS_POKEDEX_GET)) - MenuZeroFillWindowRect(left, top, left + width, top + 11); + Menu_EraseWindowRect(left, top, left + width, top + 11); else - MenuZeroFillWindowRect(left, top, left + width, top + 9); + Menu_EraseWindowRect(left, top, left + width, top + 9); } /* @@ -62,7 +62,7 @@ u8 IsResizeSaveWindowEnabled(void) // i don't know what else to name it.. void PrintSavePlayerName(s16 x, s16 y) { - MenuPrint(gOtherText_Player, x, y); + Menu_PrintText(gOtherText_Player, x, y); MenuPrint_RightAligned(gSaveBlock2.playerName, x + 12, y); } @@ -71,14 +71,14 @@ void PrintSaveMapName(s16 x, s16 y) char name[32]; CopyMapName(name, gMapHeader.regionMapSectionId); - MenuPrint(name, x, y); + Menu_PrintText(name, x, y); } void PrintSaveBadges(s16 x, s16 y) { char badges[16]; - MenuPrint(gOtherText_Badges, x, y); + Menu_PrintText(gOtherText_Badges, x, y); ConvertIntToDecimalString(badges, GetBadgeCount()); MenuPrint_RightAligned(badges, x + 12, y); } @@ -87,7 +87,7 @@ void PrintSavePokedexCount(s16 x, s16 y) { char pokedex[16]; - MenuPrint(gOtherText_Pokedex, x, y); + Menu_PrintText(gOtherText_Pokedex, x, y); ConvertIntToDecimalStringN(pokedex, GetPokedexSeenCount(), 1, 3); MenuPrint_RightAligned(pokedex, x + 12, y); } @@ -96,7 +96,7 @@ void PrintSavePlayTime(s16 x, s16 y) { char playtime[16]; - MenuPrint(gOtherText_PlayTime, x, y); + Menu_PrintText(gOtherText_PlayTime, x, y); FormatPlayTime(playtime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); MenuPrint_RightAligned(playtime, x + 12, y); } diff --git a/src/engine/text.c b/src/engine/text.c index 1b158d979..2d6d95877 100644 --- a/src/engine/text.c +++ b/src/engine/text.c @@ -12,16 +12,31 @@ enum WIN_STATE_END, WIN_STATE_BEGIN, WIN_STATE_NORMAL, - WIN_STATE_INTERRUPTIBLE_PAUSE, + WIN_STATE_CHAR_DELAY, WIN_STATE_PAUSE, WIN_STATE_WAIT_BUTTON, WIN_STATE_NEWLINE, WIN_STATE_PLACEHOLDER, - WIN_STATE_PARAGRAPH, - WIN_STATE_NEWLINE_WAIT, + WIN_STATE_WAIT_CLEAR, + WIN_STATE_WAIT_SCROLL, WIN_STATE_WAIT_SOUND, }; +enum +{ + TEXT_MODE_UNKNOWN0, + TEXT_MODE_MONOSPACE, + TEXT_MODE_UNKNOWN2, // variable width? +}; + +enum +{ + WAIT_TYPE_NORMAL, // allows the player to interrupt the text delay with A or B + WAIT_TYPE_BATTLE, // disables interrupting the text delay if in a link battle + WAIT_TYPE_AUTOSCROLL, // disables interrupting the text delay + WAIT_TYPE_CONTEST, // disables interrupting the text delay if in a link contest +}; + struct Font { u32 type; @@ -66,7 +81,7 @@ static u16 LoadFixedWidthFont_Font4Latin(struct Window *, u16); static u16 LoadFixedWidthFont_Braille(struct Window *, u16); static void MultistepLoadFont_LoadGlyph(struct Window *, u16, u8); static u8 sub_8002FA0(struct Window *, const u8 *); -static u8 InterpretText(struct Window *); +static u8 PrintNextChar(struct Window *); static u8 HandleExtCtrlCode(struct Window *); static u8 UpdateWindowText(struct Window *); static u8 DrawGlyph_TextMode0(struct Window *, u32); @@ -83,26 +98,26 @@ static void AddToCursorY(struct Window *, u8); static void ClipLeft(struct Window *); static void ClipRight(struct Window *); static void InitColors(struct Window *); -static void SetBackgroundColor(struct Window *, u8); -static void SetShadowColor(struct Window *, u8); -static void SetForegroundColor(struct Window *, u8); +static void SetWindowBackgroundColor(struct Window *, u8); +static void SetWindowShadowColor(struct Window *, u8); +static void SetWindowForegroundColor(struct Window *, u8); static u8 GetTextDelay(struct Window *); -static bool8 PlayerCanInterruptWait(struct Window *); +static bool8 PlayerCanInterruptDelay(struct Window *); static void ScrollWindowTextLines(struct Window *); static void ScrollWindowTextLines_TextMode0(struct Window *); static void DoScroll_TextMode0(struct Window *, u16); -static void ScrollWindowTextLines_TextMode1(struct Window *); -static void DoScroll_TextMode1(struct Window *, u16); +static void ScrollWindowTextLines_TextModeMonospace(struct Window *); +static void DoScroll_TextModeMonospace(struct Window *, u16); static void ScrollWindowTextLines_TextMode2(struct Window *); static void DoScroll_TextMode2(struct Window *, u8); -void ClearWindowTextLines(struct Window *); +void Text_ClearWindow(struct Window *); static void ClearWindowTextLines_TextMode0_TextMode1(struct Window *, u8); static void ClearWindowTextLines_TextMode2(struct Window *, u8); static void TryEraseDownArrow(struct Window *); static u16 GetBlankTileNum(struct Window *); static u8 WaitWithDownArrow(struct Window *); static void DrawInitialDownArrow(struct Window *); -static void DrawMovingDownArrow(struct Window *); +static void UpdateDownArrowAnimation(struct Window *); static u16 GetCursorTileNum(struct Window *, u32, u32); static s32 DrawGlyphTiles(struct Window *, u32, u32); static void UpdateTilemap(struct Window *, u32); @@ -477,7 +492,7 @@ static const ShiftGlyphTileShadowedFunc sShiftGlyphTileShadowedFuncs[] = ShiftGlyphTile_ShadowedFont_Width8, }; -const struct WindowConfig gWindowConfig_81E6C3C = +const struct WindowTemplate gWindowConfig_81E6C3C = { 0, // BG number 2, // BG character base block @@ -498,7 +513,7 @@ const struct WindowConfig gWindowConfig_81E6C3C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6C58 = +const struct WindowTemplate gWindowConfig_81E6C58 = { 0, // BG number 0, // BG character base block @@ -519,7 +534,7 @@ const struct WindowConfig gWindowConfig_81E6C58 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E6C74 = +const struct WindowTemplate gWindowConfig_81E6C74 = { 0, // BG number 0, // BG character base block @@ -540,7 +555,7 @@ const struct WindowConfig gWindowConfig_81E6C74 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E6C90 = +const struct WindowTemplate gWindowConfig_81E6C90 = { 0, // BG number 1, // BG character base block @@ -561,7 +576,7 @@ const struct WindowConfig gWindowConfig_81E6C90 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6CAC = +const struct WindowTemplate gWindowConfig_81E6CAC = { 0, // BG number 0, // BG character base block @@ -582,7 +597,7 @@ const struct WindowConfig gWindowConfig_81E6CAC = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E6CC8 = +const struct WindowTemplate gWindowConfig_81E6CC8 = { 2, // BG number 2, // BG character base block @@ -603,7 +618,7 @@ const struct WindowConfig gWindowConfig_81E6CC8 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E6CE4 = +const struct WindowTemplate gWindowConfig_81E6CE4 = { 0, // BG number 2, // BG character base block @@ -624,7 +639,7 @@ const struct WindowConfig gWindowConfig_81E6CE4 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D00 = +const struct WindowTemplate gWindowConfig_81E6D00 = { 0, // BG number 0, // BG character base block @@ -645,7 +660,7 @@ const struct WindowConfig gWindowConfig_81E6D00 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D1C = +const struct WindowTemplate gWindowConfig_81E6D1C = { 1, // BG number 0, // BG character base block @@ -666,7 +681,7 @@ const struct WindowConfig gWindowConfig_81E6D1C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D38 = +const struct WindowTemplate gWindowConfig_81E6D38 = { 0, // BG number 0, // BG character base block @@ -687,7 +702,7 @@ const struct WindowConfig gWindowConfig_81E6D38 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E6D54 = +const struct WindowTemplate gWindowConfig_81E6D54 = { 3, // BG number 3, // BG character base block @@ -708,7 +723,7 @@ const struct WindowConfig gWindowConfig_81E6D54 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D70 = +const struct WindowTemplate gWindowConfig_81E6D70 = { 3, // BG number 3, // BG character base block @@ -729,7 +744,7 @@ const struct WindowConfig gWindowConfig_81E6D70 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E6D8C = +const struct WindowTemplate gWindowConfig_81E6D8C = { 1, // BG number 0, // BG character base block @@ -750,7 +765,7 @@ const struct WindowConfig gWindowConfig_81E6D8C = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowConfig gWindowConfig_81E6DA8 = +const struct WindowTemplate gWindowConfig_81E6DA8 = { 0, // BG number 0, // BG character base block @@ -771,7 +786,7 @@ const struct WindowConfig gWindowConfig_81E6DA8 = BG_SCREEN_ADDR(11), // tilemap }; -const struct WindowConfig WindowConfig_TrainerCard_Back_Values = +const struct WindowTemplate WindowConfig_TrainerCard_Back_Values = { 0, // BG number 2, // BG character base block @@ -792,7 +807,7 @@ const struct WindowConfig WindowConfig_TrainerCard_Back_Values = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig WindowConfig_TrainerCard_Back_Labels = +const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels = { 0, // BG number 2, // BG character base block @@ -813,7 +828,7 @@ const struct WindowConfig WindowConfig_TrainerCard_Back_Labels = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6DFC = +const struct WindowTemplate gWindowConfig_81E6DFC = { 0, // BG number 2, // BG character base block @@ -834,7 +849,7 @@ const struct WindowConfig gWindowConfig_81E6DFC = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E18 = +const struct WindowTemplate gWindowConfig_81E6E18 = { 0, // BG number 2, // BG character base block @@ -855,7 +870,7 @@ const struct WindowConfig gWindowConfig_81E6E18 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E34 = +const struct WindowTemplate gWindowConfig_81E6E34 = { 1, // BG number 0, // BG character base block @@ -876,7 +891,7 @@ const struct WindowConfig gWindowConfig_81E6E34 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E50 = +const struct WindowTemplate gWindowConfig_81E6E50 = { 0, // BG number 2, // BG character base block @@ -897,7 +912,7 @@ const struct WindowConfig gWindowConfig_81E6E50 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E6C = +const struct WindowTemplate gWindowConfig_81E6E6C = { 0, // BG number 2, // BG character base block @@ -918,7 +933,7 @@ const struct WindowConfig gWindowConfig_81E6E6C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6E88 = +const struct WindowTemplate gWindowConfig_81E6E88 = { 0, // BG number 0, // BG character base block @@ -939,7 +954,7 @@ const struct WindowConfig gWindowConfig_81E6E88 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EA4 = +const struct WindowTemplate gWindowConfig_81E6EA4 = { 1, // BG number 0, // BG character base block @@ -960,7 +975,7 @@ const struct WindowConfig gWindowConfig_81E6EA4 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EC0 = +const struct WindowTemplate gWindowConfig_81E6EC0 = { 2, // BG number 2, // BG character base block @@ -981,7 +996,7 @@ const struct WindowConfig gWindowConfig_81E6EC0 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EDC = +const struct WindowTemplate gWindowConfig_81E6EDC = { 1, // BG number 0, // BG character base block @@ -1002,7 +1017,7 @@ const struct WindowConfig gWindowConfig_81E6EDC = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6EF8 = +const struct WindowTemplate gWindowConfig_81E6EF8 = { 2, // BG number 2, // BG character base block @@ -1023,7 +1038,7 @@ const struct WindowConfig gWindowConfig_81E6EF8 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F14 = +const struct WindowTemplate gWindowConfig_81E6F14 = { 1, // BG number 0, // BG character base block @@ -1044,7 +1059,7 @@ const struct WindowConfig gWindowConfig_81E6F14 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F30 = +const struct WindowTemplate gWindowConfig_81E6F30 = { 2, // BG number 2, // BG character base block @@ -1065,7 +1080,7 @@ const struct WindowConfig gWindowConfig_81E6F30 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F4C = +const struct WindowTemplate gWindowConfig_81E6F4C = { 3, // BG number 0, // BG character base block @@ -1086,7 +1101,7 @@ const struct WindowConfig gWindowConfig_81E6F4C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F68 = +const struct WindowTemplate gWindowConfig_81E6F68 = { 0, // BG number 2, // BG character base block @@ -1107,7 +1122,7 @@ const struct WindowConfig gWindowConfig_81E6F68 = BG_SCREEN_ADDR(13), // tilemap }; -const struct WindowConfig gWindowConfig_81E6F84 = +const struct WindowTemplate gWindowConfig_81E6F84 = { 0, // BG number 2, // BG character base block @@ -1128,7 +1143,7 @@ const struct WindowConfig gWindowConfig_81E6F84 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FA0 = +const struct WindowTemplate gWindowConfig_81E6FA0 = { 1, // BG number 0, // BG character base block @@ -1149,7 +1164,7 @@ const struct WindowConfig gWindowConfig_81E6FA0 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FBC = +const struct WindowTemplate gWindowConfig_81E6FBC = { 0, // BG number 0, // BG character base block @@ -1170,7 +1185,7 @@ const struct WindowConfig gWindowConfig_81E6FBC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FD8 = +const struct WindowTemplate gWindowConfig_81E6FD8 = { 0, // BG number 0, // BG character base block @@ -1191,7 +1206,7 @@ const struct WindowConfig gWindowConfig_81E6FD8 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E6FF4 = +const struct WindowTemplate gWindowConfig_81E6FF4 = { 0, // BG number 0, // BG character base block @@ -1212,7 +1227,7 @@ const struct WindowConfig gWindowConfig_81E6FF4 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowConfig gWindowConfig_81E7010 = +const struct WindowTemplate gWindowConfig_81E7010 = { 0, // BG number 0, // BG character base block @@ -1233,7 +1248,7 @@ const struct WindowConfig gWindowConfig_81E7010 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E702C = +const struct WindowTemplate gWindowConfig_81E702C = { 3, // BG number 2, // BG character base block @@ -1254,7 +1269,7 @@ const struct WindowConfig gWindowConfig_81E702C = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E7048 = +const struct WindowTemplate gWindowConfig_81E7048 = { 2, // BG number 2, // BG character base block @@ -1275,7 +1290,7 @@ const struct WindowConfig gWindowConfig_81E7048 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowConfig gWindowConfig_81E7064 = +const struct WindowTemplate gWindowConfig_81E7064 = { 2, // BG number 2, // BG character base block @@ -1296,7 +1311,7 @@ const struct WindowConfig gWindowConfig_81E7064 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowConfig gWindowConfig_81E7080 = +const struct WindowTemplate gWindowConfig_81E7080 = { 3, // BG number 0, // BG character base block @@ -1317,7 +1332,7 @@ const struct WindowConfig gWindowConfig_81E7080 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E709C = +const struct WindowTemplate gWindowConfig_81E709C = { 0, // BG number 0, // BG character base block @@ -1338,7 +1353,7 @@ const struct WindowConfig gWindowConfig_81E709C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E70B8 = +const struct WindowTemplate gWindowConfig_81E70B8 = { 2, // BG number 0, // BG character base block @@ -1359,7 +1374,7 @@ const struct WindowConfig gWindowConfig_81E70B8 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E70D4 = +const struct WindowTemplate gWindowConfig_81E70D4 = { 3, // BG number 0, // BG character base block @@ -1380,7 +1395,7 @@ const struct WindowConfig gWindowConfig_81E70D4 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E70F0 = +const struct WindowTemplate gWindowConfig_81E70F0 = { 0, // BG number 0, // BG character base block @@ -1401,7 +1416,7 @@ const struct WindowConfig gWindowConfig_81E70F0 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E710C = +const struct WindowTemplate gWindowConfig_81E710C = { 0, // BG number 0, // BG character base block @@ -1422,7 +1437,7 @@ const struct WindowConfig gWindowConfig_81E710C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7128 = +const struct WindowTemplate gWindowConfig_81E7128 = { 0, // BG number 2, // BG character base block @@ -1443,7 +1458,7 @@ const struct WindowConfig gWindowConfig_81E7128 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7144 = +const struct WindowTemplate gWindowConfig_81E7144 = { 0, // BG number 2, // BG character base block @@ -1464,7 +1479,7 @@ const struct WindowConfig gWindowConfig_81E7144 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7160 = +const struct WindowTemplate gWindowConfig_81E7160 = { 1, // BG number 1, // BG character base block @@ -1485,7 +1500,7 @@ const struct WindowConfig gWindowConfig_81E7160 = BG_SCREEN_ADDR(10), // tilemap }; -const struct WindowConfig gWindowConfig_81E717C = +const struct WindowTemplate gWindowConfig_81E717C = { 0, // BG number 3, // BG character base block @@ -1506,7 +1521,7 @@ const struct WindowConfig gWindowConfig_81E717C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7198 = +const struct WindowTemplate gWindowConfig_81E7198 = { 0, // BG number 2, // BG character base block @@ -1527,7 +1542,7 @@ const struct WindowConfig gWindowConfig_81E7198 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E71B4 = +const struct WindowTemplate gWindowConfig_81E71B4 = { 0, // BG number 2, // BG character base block @@ -1548,7 +1563,7 @@ const struct WindowConfig gWindowConfig_81E71B4 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowConfig gWindowConfig_81E71D0 = +const struct WindowTemplate gWindowConfig_81E71D0 = { 1, // BG number 1, // BG character base block @@ -1569,7 +1584,7 @@ const struct WindowConfig gWindowConfig_81E71D0 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E71EC = +const struct WindowTemplate gWindowConfig_81E71EC = { 2, // BG number 1, // BG character base block @@ -1590,7 +1605,7 @@ const struct WindowConfig gWindowConfig_81E71EC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E7208 = +const struct WindowTemplate gWindowConfig_81E7208 = { 0, // BG number 2, // BG character base block @@ -1611,7 +1626,7 @@ const struct WindowConfig gWindowConfig_81E7208 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowConfig gWindowConfig_81E7224 = +const struct WindowTemplate gWindowConfig_81E7224 = { 0, // BG number 0, // BG character base block @@ -1632,7 +1647,7 @@ const struct WindowConfig gWindowConfig_81E7224 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowConfig gWindowConfig_81E7240 = +const struct WindowTemplate gWindowConfig_81E7240 = { 1, // BG number 2, // BG character base block @@ -1653,7 +1668,7 @@ const struct WindowConfig gWindowConfig_81E7240 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowConfig gWindowConfig_81E725C = +const struct WindowTemplate gWindowConfig_81E725C = { 0, // BG number 0, // BG character base block @@ -1674,7 +1689,7 @@ const struct WindowConfig gWindowConfig_81E725C = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E7278 = +const struct WindowTemplate gWindowConfig_81E7278 = { 0, // BG number 0, // BG character base block @@ -1695,7 +1710,7 @@ const struct WindowConfig gWindowConfig_81E7278 = NULL, // tilemap }; -const struct WindowConfig gWindowConfig_81E7294 = +const struct WindowTemplate gWindowConfig_81E7294 = { 0, // BG number 0, // BG character base block @@ -1716,32 +1731,32 @@ const struct WindowConfig gWindowConfig_81E7294 = NULL, // tilemap }; -static void UpdateBGRegs(const struct WindowConfig *winConfig) +static void UpdateBGRegs(const struct WindowTemplate *winTemplate) { - u8 bgNum = winConfig->bgNum; + u8 bgNum = winTemplate->bgNum; *gBGHOffsetRegs[bgNum] = 0; *gBGVOffsetRegs[bgNum] = 0; - *gBGControlRegs[bgNum] = winConfig->priority | (winConfig->screenBaseBlock << 8) | (winConfig->charBaseBlock << 2); + *gBGControlRegs[bgNum] = winTemplate->priority | (winTemplate->screenBaseBlock << 8) | (winTemplate->charBaseBlock << 2); } -static void ClearBGMem(const struct WindowConfig *winConfig) +static void ClearBGMem(const struct WindowTemplate *winTemplate) { - CpuFastFill(0, winConfig->tileData, 32); + CpuFastFill(0, winTemplate->tileData, 32); - if (winConfig->tilemap) - CpuFastFill(0, winConfig->tilemap, 0x800); + if (winTemplate->tilemap) + CpuFastFill(0, winTemplate->tilemap, 0x800); } -void LoadFontDefaultPalette(const struct WindowConfig *winConfig) +void LoadFontDefaultPalette(const struct WindowTemplate *winTemplate) { - LoadPalette(gFontDefaultPalette, 16 * winConfig->paletteNum, 32); + LoadPalette(gFontDefaultPalette, 16 * winTemplate->paletteNum, 32); } -void SetUpWindowConfig(const struct WindowConfig *winConfig) +void SetUpWindowConfig(const struct WindowTemplate *winTemplate) { - UpdateBGRegs(winConfig); - ClearBGMem(winConfig); - LoadFontDefaultPalette(winConfig); + UpdateBGRegs(winTemplate); + ClearBGMem(winTemplate); + LoadFontDefaultPalette(winTemplate); } u16 InitWindowTileData(struct Window *win, u16 startOffset) @@ -1751,13 +1766,13 @@ u16 InitWindowTileData(struct Window *win, u16 startOffset) win->tileDataStartOffset = startOffset; retVal = 0; - switch (win->config->textMode) + switch (win->template->textMode) { - case 2: + case TEXT_MODE_UNKNOWN2: retVal = InitVariableWidthFontTileData(win, startOffset); break; - case 1: - switch (win->config->fontNum) + case TEXT_MODE_MONOSPACE: + switch (win->template->fontNum) { case 0: case 3: @@ -1789,7 +1804,7 @@ static u16 InitVariableWidthFontTileData(struct Window *win, u16 startOffset) win->tileDataOffset = 2; buffer = win->tileData + 32 * win->tileDataStartOffset; CpuFastFill(0, buffer, 32); - ApplyColors_UnshadowedFont(sBlankTile, (u32 *)(buffer + 32), win->config->foregroundColor, win->config->backgroundColor); + ApplyColors_UnshadowedFont(sBlankTile, (u32 *)(buffer + 32), win->template->foregroundColor, win->template->backgroundColor); return win->tileDataStartOffset + win->tileDataOffset + win->width * win->height; } @@ -1850,15 +1865,15 @@ u32 MultistepInitWindowTileData(struct Window *win, u16 startOffset) win->tileDataStartOffset = startOffset; retVal = 0; - switch (win->config->textMode) + switch (win->template->textMode) { - case 2: + case TEXT_MODE_UNKNOWN2: retVal = InitVariableWidthFontTileData(win, startOffset); break; - case 1: + case TEXT_MODE_MONOSPACE: retVal = 256; - if (win->config->fontNum == 0 - || win->config->fontNum == 3) + if (win->template->fontNum == 0 + || win->template->fontNum == 3) retVal *= 2; break; } @@ -1870,7 +1885,7 @@ bool32 MultistepLoadFont(void) { bool32 retVal = TRUE; - if (sMultistepLoadFont_Window->config->textMode == 1) + if (sMultistepLoadFont_Window->template->textMode == TEXT_MODE_MONOSPACE) { s32 i; @@ -1890,7 +1905,7 @@ static void MultistepLoadFont_LoadGlyph(struct Window *win, u16 startOffset, u8 { u8 *buffer; - switch (win->config->fontNum) + switch (win->template->fontNum) { case 0: case 3: @@ -1923,42 +1938,42 @@ void EmptyFunc(void) { } -void InitWindowFromConfig(struct Window *win, const struct WindowConfig *winConfig) +void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate *winTemplate) { *win = sDefaultWindow; - win->config = (struct WindowConfig *)winConfig; - win->textMode = winConfig->textMode; - win->spacing = winConfig->spacing; - win->fontNum = winConfig->fontNum; - win->paletteNum = winConfig->paletteNum; - win->tilemapLeft = winConfig->tilemapLeft; - win->tilemapTop = winConfig->tilemapTop; - win->width = winConfig->width; - win->height = winConfig->height; - win->tileData = winConfig->tileData; - win->tilemap = winConfig->tilemap; + win->template = (struct WindowTemplate *)winTemplate; + win->textMode = winTemplate->textMode; + win->spacing = winTemplate->spacing; + win->fontNum = winTemplate->fontNum; + win->paletteNum = winTemplate->paletteNum; + win->tilemapLeft = winTemplate->tilemapLeft; + win->tilemapTop = winTemplate->tilemapTop; + win->width = winTemplate->width; + win->height = winTemplate->height; + win->tileData = winTemplate->tileData; + win->tilemap = winTemplate->tilemap; InitColors(win); - SetBackgroundColor(win, winConfig->backgroundColor); - SetShadowColor(win, winConfig->shadowColor); - SetForegroundColor(win, winConfig->foregroundColor); + SetWindowBackgroundColor(win, winTemplate->backgroundColor); + SetWindowShadowColor(win, winTemplate->shadowColor); + SetWindowForegroundColor(win, winTemplate->foregroundColor); } -void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { - const struct WindowConfig *winConfig = win->config; - win->textMode = winConfig->textMode; - win->fontNum = winConfig->fontNum; + const struct WindowTemplate *winTemplate = win->template; + win->textMode = winTemplate->textMode; + win->fontNum = winTemplate->fontNum; win->language = GAME_LANGUAGE; - win->paletteNum = winConfig->paletteNum; + win->paletteNum = winTemplate->paletteNum; win->win_field_B = 0; win->win_field_C = 0; win->delayCounter = 0; - win->spacing = winConfig->spacing; + win->spacing = winTemplate->spacing; win->win_field_F = 0; - win->tilemapLeft = winConfig->tilemapLeft; - win->tilemapTop = winConfig->tilemapTop; - win->width = winConfig->width; - win->height = winConfig->height; + win->tilemapLeft = winTemplate->tilemapLeft; + win->tilemapTop = winTemplate->tilemapTop; + win->width = winTemplate->width; + win->height = winTemplate->height; win->text = text; win->textIndex = 0; win->tileDataStartOffset = tileDataStartOffset; @@ -1969,19 +1984,19 @@ void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 win->cursorY = 0; win->state = WIN_STATE_BEGIN; win->downArrowCounter = 0; - win->tileData = winConfig->tileData; - win->tilemap = winConfig->tilemap; + win->tileData = winTemplate->tileData; + win->tilemap = winTemplate->tilemap; InitColors(win); - SetBackgroundColor(win, winConfig->backgroundColor); - SetShadowColor(win, winConfig->shadowColor); - SetForegroundColor(win, winConfig->foregroundColor); + SetWindowBackgroundColor(win, winTemplate->backgroundColor); + SetWindowShadowColor(win, winTemplate->shadowColor); + SetWindowForegroundColor(win, winTemplate->foregroundColor); } -void sub_8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) +void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) { u8 val; - InitWindow(win, text, tileDataStartOffset, 0, 0); + Text_InitWindow(win, text, tileDataStartOffset, 0, 0); win->left = left; win->top = top; val = 0; @@ -2003,15 +2018,15 @@ void sub_8002E90(struct Window *win, const u8 *text) win->delayCounter = 0; } -void sub_8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +void Text_InitWindow8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { gMain.watchedKeysMask = A_BUTTON | B_BUTTON; gMain.watchedKeysPressed = 0; - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; sLineLength = 26; - InitWindow(win, text, tileDataStartOffset, left, top); + Text_InitWindow(win, text, tileDataStartOffset, left, top); win->win_field_B = -1; - if (win->textMode == 0) + if (win->textMode == TEXT_MODE_UNKNOWN0) { u16 val = GetCursorTileNum(win, 0, 0); u8 *buffer = win->tileData + 32 * val; @@ -2021,9 +2036,9 @@ void sub_8002EB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 } } -u8 sub_8002F44(struct Window *win) +u8 Text_PrintWindow8002F44(struct Window *win) { - while (win->state) + while (win->state != WIN_STATE_END) { if (win->state == WIN_STATE_NEWLINE) { @@ -2038,7 +2053,7 @@ u8 sub_8002F44(struct Window *win) sub_8002FA0(win, GetExpandedPlaceholder(win->text[win->textIndex++])); } - InterpretText(win); + PrintNextChar(win); } return 1; } @@ -2048,11 +2063,12 @@ static u8 sub_8002FA0(struct Window *win, const u8 *text) u8 retVal; u8 savedLanguage = win->language; const u8 *savedText = win->text; + u16 savedTextIndex = win->textIndex; win->text = text; win->textIndex = 0; win->state = WIN_STATE_NORMAL; - retVal = sub_8002F44(win); + retVal = Text_PrintWindow8002F44(win); win->text = savedText; win->textIndex = savedTextIndex; win->state = WIN_STATE_NORMAL; @@ -2060,32 +2076,33 @@ static u8 sub_8002FA0(struct Window *win, const u8 *text) return retVal; } -static u8 InterpretText(struct Window *win) +static u8 PrintNextChar(struct Window *win) { u8 c = win->text[win->textIndex++]; + // Handle special control characters switch (c) { - case 0xFF: + case EOS: ClipRight(win); win->state = WIN_STATE_END; return 0; - case 0xFD: + case PLACEHOLDER_BEGIN: win->state = WIN_STATE_PLACEHOLDER; return 2; - case 0xFE: + case CHAR_NEWLINE: ClipRight(win); win->state = WIN_STATE_NEWLINE; return 2; - case 0xFB: + case CHAR_PROMPT_CLEAR: DrawInitialDownArrow(win); - win->state = WIN_STATE_PARAGRAPH; + win->state = WIN_STATE_WAIT_CLEAR; return 2; - case 0xFA: + case CHAR_PROMPT_SCROLL: DrawInitialDownArrow(win); - win->state = WIN_STATE_NEWLINE_WAIT; + win->state = WIN_STATE_WAIT_SCROLL; return 2; - case 0xFC: + case EXT_CTRL_CODE_BEGIN: return HandleExtCtrlCode(win); } @@ -2093,6 +2110,8 @@ static u8 InterpretText(struct Window *win) return 1; } +// Extended 0xFC control functions + static u8 HandleExtCtrlCode(struct Window *win) { return sExtCtrlCodeFuncs[win->text[win->textIndex++]](win); @@ -2105,27 +2124,27 @@ static u8 ExtCtrlCode_Nop(struct Window *win) static u8 ExtCtrlCode_ForegroundColor(struct Window *win) { - SetForegroundColor(win, win->text[win->textIndex++]); + SetWindowForegroundColor(win, win->text[win->textIndex++]); return 2; } static u8 ExtCtrlCode_BackgroundColor(struct Window *win) { - SetBackgroundColor(win, win->text[win->textIndex++]); + SetWindowBackgroundColor(win, win->text[win->textIndex++]); return 2; } static u8 ExtCtrlCode_ShadowColor(struct Window *win) { - SetShadowColor(win, win->text[win->textIndex++]); + SetWindowShadowColor(win, win->text[win->textIndex++]); return 2; } static u8 ExtCtrlCode_AllColors(struct Window *win) { - SetForegroundColor(win, win->text[win->textIndex++]); - SetBackgroundColor(win, win->text[win->textIndex++]); - SetShadowColor(win, win->text[win->textIndex++]); + SetWindowForegroundColor(win, win->text[win->textIndex++]); + SetWindowBackgroundColor(win, win->text[win->textIndex++]); + SetWindowShadowColor(win, win->text[win->textIndex++]); return 2; } @@ -2143,7 +2162,7 @@ static u8 ExtCtrlCode_Font(struct Window *win) static u8 ExtCtrlCode_DefaultFont(struct Window *win) { - win->fontNum = win->config->fontNum; + win->fontNum = win->template->fontNum; return 2; } @@ -2197,7 +2216,7 @@ static u8 ExtCtrlCode_SetCursorY(struct Window *win) static u8 ExtCtrlCode_ClearWindowTextLines(struct Window *win) { - ClearWindowTextLines(win); + Text_ClearWindow(win); return 2; } @@ -2211,7 +2230,7 @@ static u8 ExtCtrlCode_PlaySE(struct Window *win) static void DrawSpace(struct Window *win) { - if (win->textMode == 1 || (win->left + win->cursorX) & 7 || win->spacing <= 7) + if (win->textMode == TEXT_MODE_MONOSPACE || (win->left + win->cursorX) & 7 || win->spacing <= 7) { sPrintGlyphFuncs[win->textMode](win, 0); } @@ -2302,10 +2321,11 @@ static u8 ExtCtrlCode_Latin(struct Window *win) return 2; } -u8 sub_8003418(struct Window *win) +// Prints the window text without expanding any placeholders +u8 Text_PrintWindowSimple(struct Window *win) { u8 retVal = 1; - while (win->state) + while (win->state != WIN_STATE_END) { if (win->state == WIN_STATE_NEWLINE) { @@ -2315,7 +2335,7 @@ u8 sub_8003418(struct Window *win) ClipLeft(win); win->state = WIN_STATE_NORMAL; } - if (InterpretText(win) == 1) + if (PrintNextChar(win) == 1) { retVal = 0; break; @@ -2324,10 +2344,10 @@ u8 sub_8003418(struct Window *win) return retVal; } -u8 sub_8003460(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +u8 Text_InitWindowAndPrintText(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { - InitWindow(win, text, tileDataStartOffset, left, top); - return sub_8002F44(win); + Text_InitWindow(win, text, tileDataStartOffset, left, top); + return Text_PrintWindow8002F44(win); } u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 top) @@ -2336,8 +2356,8 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to u8 text[2]; text[0] = c; text[1] = EOS; - InitWindow(win, text, tileDataStartOffset, left, top); - retVal = InterpretText(win); + Text_InitWindow(win, text, tileDataStartOffset, left, top); + retVal = PrintNextChar(win); ClipRight(win); return retVal; } @@ -2349,35 +2369,38 @@ void sub_80034D4(u8 *tileData, const u8 *text) u8 sub_80034EC(u8 *str) { - return GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6C74, str); + return Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6C74, str); } u8 *sub_8003504(u8 *dest, s32 value, u8 alignAmount, u8 alignType) { - sTempWindow.config = (struct WindowConfig *)&gWindowConfig_81E6C74; - InitWindow(&sTempWindow, 0, 0, 0, 0); + sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + Text_InitWindow(&sTempWindow, 0, 0, 0, 0); return AlignInt2(&sTempWindow, dest, value, alignAmount, alignType); } u8 *sub_8003558(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType) { - sTempWindow.config = (struct WindowConfig *)&gWindowConfig_81E6C74; - InitWindow(&sTempWindow, src, 0, 0, 0); + sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + Text_InitWindow(&sTempWindow, src, 0, 0, 0); return AlignString(&sTempWindow, dest, src, alignAmount, alignType); } -u8 sub_80035AC(struct Window *win) +// Updates the window text +// The text delay can be accelerated by holding the A button +u8 Text_UpdateWindow(struct Window *win) { - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; return UpdateWindowText(win); } +// Returns TRUE when all of the text has been printed. static u8 UpdateWindowText(struct Window *win) { switch (win->state) { case WIN_STATE_WAIT_BUTTON: - if (PlayerCanInterruptWait(win)) + if (PlayerCanInterruptDelay(win)) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { @@ -2385,48 +2408,56 @@ static u8 UpdateWindowText(struct Window *win) } else { - return 0; + return FALSE; } } else { win->delayCounter--; if (win->delayCounter) - return 0; + return FALSE; } win->state = WIN_STATE_NORMAL; - return 0; - case WIN_STATE_INTERRUPTIBLE_PAUSE: - if (PlayerCanInterruptWait(win) && (gMain.heldKeys & (A_BUTTON | B_BUTTON)) && gMain.watchedKeysPressed == TRUE) + return FALSE; + case WIN_STATE_CHAR_DELAY: + // Allow the player to speed up text by holding a button + if (PlayerCanInterruptDelay(win) + && (gMain.heldKeys & (A_BUTTON | B_BUTTON)) + && gMain.watchedKeysPressed == TRUE) { win->delayCounter = 0; win->state = WIN_STATE_NORMAL; break; } + // fall through case WIN_STATE_PAUSE: + // Wait for timer to expire, then continue printing if (win->delayCounter) { win->delayCounter--; if (win->delayCounter) - return 0; + return FALSE; } - win->state = WIN_STATE_NORMAL; break; - case WIN_STATE_PARAGRAPH: - if (!WaitWithDownArrow(win)) - return 0; - ClearWindowTextLines(win); - win->state = WIN_STATE_NORMAL; - BLOCK_CROSS_JUMP - return 0; - case WIN_STATE_NEWLINE_WAIT: - if (!WaitWithDownArrow(win)) - return 0; - ScrollWindowTextLines(win); - win->state = WIN_STATE_NORMAL; - BLOCK_CROSS_JUMP - return 0; + case WIN_STATE_WAIT_CLEAR: + // Erase the text once a button is pressed + if (WaitWithDownArrow(win)) + { + Text_ClearWindow(win); + win->state = WIN_STATE_NORMAL; + asm(""); + } + return FALSE; + case WIN_STATE_WAIT_SCROLL: + // Scroll the text once a button is pressed + if (WaitWithDownArrow(win)) + { + ScrollWindowTextLines(win); + win->state = WIN_STATE_NORMAL; + asm(""); + } + return FALSE; case WIN_STATE_PLACEHOLDER: win->textIndex++; win->state = WIN_STATE_NORMAL; @@ -2434,35 +2465,35 @@ static u8 UpdateWindowText(struct Window *win) case WIN_STATE_NEWLINE: ScrollWindowTextLines(win); win->state = WIN_STATE_NORMAL; - BLOCK_CROSS_JUMP - return 0; + asm(""); + return FALSE; case WIN_STATE_BEGIN: - ClearWindowTextLines(win); + Text_ClearWindow(win); break; case WIN_STATE_WAIT_SOUND: if (IsSEPlaying()) - return 0; + return FALSE; win->state = WIN_STATE_NORMAL; break; case WIN_STATE_END: - return 1; + return TRUE; // done printing text case WIN_STATE_NORMAL: break; default: win->state = WIN_STATE_END; - return 1; + return TRUE; } - InterpretText(win); + PrintNextChar(win); switch (win->state) { case WIN_STATE_END: - return 1; + return TRUE; // done printing text case WIN_STATE_WAIT_BUTTON: - case WIN_STATE_PARAGRAPH: - case WIN_STATE_NEWLINE_WAIT: - if (PlayerCanInterruptWait(win)) + case WIN_STATE_WAIT_CLEAR: + case WIN_STATE_WAIT_SCROLL: + if (PlayerCanInterruptDelay(win)) return 0; win->delayCounter = 60; break; @@ -2471,8 +2502,9 @@ static u8 UpdateWindowText(struct Window *win) case WIN_STATE_WAIT_SOUND: break; default: - win->state = WIN_STATE_INTERRUPTIBLE_PAUSE; + win->state = WIN_STATE_CHAR_DELAY; win->delayCounter = GetTextDelay(win); + break; } return 0; @@ -2484,45 +2516,45 @@ static u8 UpdateWindowText(struct Window *win) #define SUB_800374C_LINE_LENGTH 27 #endif -u8 sub_800374C(struct Window *win) +u8 Text_UpdateWindowInBattle(struct Window *win) { u8 retVal; - sWaitType = 1; + sWaitType = WAIT_TYPE_BATTLE; sLineLength = SUB_800374C_LINE_LENGTH; retVal = UpdateWindowText(win); sLineLength = 26; - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; return retVal; } -u8 sub_8003778(struct Window *win) +u8 Text_UpdateWindowAutoscroll(struct Window *win) { u8 retVal; - sWaitType = 2; + sWaitType = WAIT_TYPE_AUTOSCROLL; sLineLength = 26; retVal = UpdateWindowText(win); - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; return retVal; } -u8 sub_80037A0(struct Window *win) +u8 Text_UpdateWindowInContest(struct Window *win) { u8 retVal; - sWaitType = 3; + sWaitType = WAIT_TYPE_CONTEST; sLineLength = 17; retVal = UpdateWindowText(win); sLineLength = 26; return retVal; } -u32 sub_80037C8(struct Window *win, u8 lineLength) +u32 Text_UpdateWindowOverrideLineLength(struct Window *win, u8 lineLength) { u8 retVal; - sWaitType = 0; + sWaitType = WAIT_TYPE_NORMAL; sLineLength = lineLength; retVal = UpdateWindowText(win); sLineLength = 26; @@ -2757,14 +2789,14 @@ static void ApplyColors_ShadowedFont(const void *src, void *dest, u8 foreground, static void SetCursorX(struct Window *win, u8 x) { - if (win->textMode == 0 && ((win->left + win->cursorX) & 7)) + if (win->textMode == TEXT_MODE_UNKNOWN0 && ((win->left + win->cursorX) & 7)) win->tileDataOffset += 2; win->cursorX = x; } static void AddToCursorX(struct Window *win, u8 deltaX) { - if (win->textMode == 0) + if (win->textMode == TEXT_MODE_UNKNOWN0) { u8 x = win->cursorX; win->cursorX += deltaX; @@ -2779,7 +2811,7 @@ static void AddToCursorX(struct Window *win, u8 deltaX) static void AddToCursorY(struct Window *win, u8 deltaY) { - if (win->textMode == 0 && ((win->left + win->cursorX) & 7)) + if (win->textMode == TEXT_MODE_UNKNOWN0 && ((win->left + win->cursorX) & 7)) win->tileDataOffset += 2; win->cursorY += deltaY; } @@ -2788,11 +2820,11 @@ static void EraseAtCursor(struct Window *win) { switch (win->textMode) { - case 0: - case 2: + case TEXT_MODE_UNKNOWN0: + case TEXT_MODE_UNKNOWN2: DrawGlyphTiles(win, 0, 8); break; - case 1: + case TEXT_MODE_MONOSPACE: sWriteGlyphTilemapFuncs[win->fontNum](win, 0); break; } @@ -2801,7 +2833,8 @@ static void EraseAtCursor(struct Window *win) static void ClipLeft(struct Window *win) { u32 pixel = win->left & 7; - if (win->textMode != 1 && pixel) + + if (win->textMode != TEXT_MODE_MONOSPACE && pixel) { const u32 *masks = sGlyphMasks[8][pixel]; u32 outsideMask = masks[0]; @@ -2834,32 +2867,40 @@ static void ClipRight(struct Window *win) { register u8 cursorX asm("r0") = win->cursorX; u8 left = win->left; - u32 pixel = (cursorX + left) & 7; - if (win->textMode != 1 && pixel) + u32 pixelX = (cursorX + left) & 7; + + if (win->textMode != TEXT_MODE_MONOSPACE && pixelX != 0) { - const u32 *masks = sGlyphMasks[8 - pixel][pixel]; + const u32 *masks = sGlyphMasks[8 - pixelX][pixelX]; u32 insideMask = masks[0]; u32 outside = (sGlyphBuffer.background & ~insideMask); - u16 tileNum = GetCursorTileNum(win, 0, 0); - u32 *buffer = (u32 *)(win->tileData + 32 * tileNum); - buffer[0] = (buffer[0] & insideMask) | outside; - buffer[1] = (buffer[1] & insideMask) | outside; - buffer[2] = (buffer[2] & insideMask) | outside; - buffer[3] = (buffer[3] & insideMask) | outside; - buffer[4] = (buffer[4] & insideMask) | outside; - buffer[5] = (buffer[5] & insideMask) | outside; - buffer[6] = (buffer[6] & insideMask) | outside; - buffer[7] = (buffer[7] & insideMask) | outside; + u16 tileNum; + u32 *tileData; + + tileNum = GetCursorTileNum(win, 0, 0); + tileData = (u32 *)(win->tileData + 32 * tileNum); + + tileData[0] = (tileData[0] & insideMask) | outside; + tileData[1] = (tileData[1] & insideMask) | outside; + tileData[2] = (tileData[2] & insideMask) | outside; + tileData[3] = (tileData[3] & insideMask) | outside; + tileData[4] = (tileData[4] & insideMask) | outside; + tileData[5] = (tileData[5] & insideMask) | outside; + tileData[6] = (tileData[6] & insideMask) | outside; + tileData[7] = (tileData[7] & insideMask) | outside; + tileNum = GetCursorTileNum(win, 0, 1); - buffer = (u32 *)(win->tileData + 32 * tileNum); - buffer[0] = (buffer[0] & insideMask) | outside; - buffer[1] = (buffer[1] & insideMask) | outside; - buffer[2] = (buffer[2] & insideMask) | outside; - buffer[3] = (buffer[3] & insideMask) | outside; - buffer[4] = (buffer[4] & insideMask) | outside; - buffer[5] = (buffer[5] & insideMask) | outside; - buffer[6] = (buffer[6] & insideMask) | outside; - buffer[7] = (buffer[7] & insideMask) | outside; + tileData = (u32 *)(win->tileData + 32 * tileNum); + + tileData[0] = (tileData[0] & insideMask) | outside; + tileData[1] = (tileData[1] & insideMask) | outside; + tileData[2] = (tileData[2] & insideMask) | outside; + tileData[3] = (tileData[3] & insideMask) | outside; + tileData[4] = (tileData[4] & insideMask) | outside; + tileData[5] = (tileData[5] & insideMask) | outside; + tileData[6] = (tileData[6] & insideMask) | outside; + tileData[7] = (tileData[7] & insideMask) | outside; + UpdateTilemap(win, 1); } } @@ -2876,7 +2917,7 @@ static void InitColors(struct Window *win) sGlyphBuffer.colors[i] = i; } -static void SetBackgroundColor(struct Window *win, u8 color) +static void SetWindowBackgroundColor(struct Window *win, u8 color) { u32 val1; u32 val2; @@ -2889,13 +2930,13 @@ static void SetBackgroundColor(struct Window *win, u8 color) sGlyphBuffer.background = val3; } -static void SetShadowColor(struct Window *win, u8 color) +static void SetWindowShadowColor(struct Window *win, u8 color) { win->shadowColor = color; sGlyphBuffer.colors[14] = color; } -static void SetForegroundColor(struct Window *win, u8 color) +static void SetWindowForegroundColor(struct Window *win, u8 color) { win->foregroundColor = color; sGlyphBuffer.colors[15] = color; @@ -2903,25 +2944,25 @@ static void SetForegroundColor(struct Window *win, u8 color) static u8 GetTextDelay(struct Window *win) { - if (!PlayerCanInterruptWait(win)) + if (!PlayerCanInterruptDelay(win)) return 3; return sTextSpeedDelays[gSaveBlock2.optionsTextSpeed]; } -static bool8 PlayerCanInterruptWait(struct Window *win) +static bool8 PlayerCanInterruptDelay(struct Window *win) { bool8 retVal = TRUE; switch (sWaitType) { - case 2: + case WAIT_TYPE_AUTOSCROLL: retVal = FALSE; break; - case 3: + case WAIT_TYPE_CONTEST: retVal = gIsLinkContest ? FALSE : TRUE; break; - case 1: + case WAIT_TYPE_BATTLE: retVal = (gBattleTypeFlags & BATTLE_TYPE_LINK) ? FALSE : TRUE; break; } @@ -2933,13 +2974,13 @@ static void ScrollWindowTextLines(struct Window *win) { switch (win->textMode) { - case 0: + case TEXT_MODE_UNKNOWN0: ScrollWindowTextLines_TextMode0(win); break; - case 1: - ScrollWindowTextLines_TextMode1(win); + case TEXT_MODE_MONOSPACE: + ScrollWindowTextLines_TextModeMonospace(win); break; - case 2: + case TEXT_MODE_UNKNOWN2: ScrollWindowTextLines_TextMode2(win); break; } @@ -2949,6 +2990,7 @@ static void ScrollWindowTextLines_TextMode0(struct Window *win) { if (win->cursorY == 0) { + // Advance to the next line win->tileDataOffset = 2 * sLineLength + 2; win->cursorX = 0; win->cursorY += 16; @@ -2959,7 +3001,7 @@ static void ScrollWindowTextLines_TextMode0(struct Window *win) win->tileDataOffset = 2 * sLineLength + 2; else win->tileDataOffset = 2; - win->win_field_C = win->win_field_C ^ 2; + win->win_field_C ^= 2; win->cursorX = 0; DoScroll_TextMode0(win, sLineLength); } @@ -2973,16 +3015,21 @@ static void DoScroll_TextMode0(struct Window *win, u16 lineLength) u16 fill; buffer += val1 + val2; fill = (win->paletteNum << 12) | GetBlankTileNum(win); + + // Move the bottom line up CpuCopy16(buffer + 64, buffer, lineLength * 2); CpuCopy16(buffer + 96, buffer + 32, lineLength * 2); + + // Clear the bottom line CpuFill16(fill, buffer + 64, lineLength * 2); CpuFill16(fill, buffer + 96, lineLength * 2); } -static void ScrollWindowTextLines_TextMode1(struct Window *win) +static void ScrollWindowTextLines_TextModeMonospace(struct Window *win) { if (win->cursorY == 0) { + // Advance to the next line win->cursorX = 0; win->cursorY += 16; } @@ -2990,17 +3037,21 @@ static void ScrollWindowTextLines_TextMode1(struct Window *win) { win->win_field_C ^= 2; win->cursorX = 0; - DoScroll_TextMode1(win, sLineLength); + DoScroll_TextModeMonospace(win, sLineLength); } } -static void DoScroll_TextMode1(struct Window *win, u16 lineLength) +static void DoScroll_TextModeMonospace(struct Window *win, u16 lineLength) { u16 *buffer = GetCursorTilemapPointer(win); u16 *dest = buffer - 32; u16 fill = (win->paletteNum << 12) | GetBlankTileNum(win); + + // Move the bottom line up CpuCopy16(buffer + 32, dest, lineLength * 2); CpuCopy16(buffer + 64, buffer, lineLength * 2); + + // Clear the bottom line CpuFill16(fill, buffer + 32, lineLength * 2); CpuFill16(fill, buffer + 64, lineLength * 2); } @@ -3009,6 +3060,7 @@ static void ScrollWindowTextLines_TextMode2(struct Window *win) { if (win->cursorY == 0) { + // Advance to the next line win->cursorX = 0; win->cursorY += 16; } @@ -3055,18 +3107,18 @@ static void DoScroll_TextMode2(struct Window *win, u8 lineLength) } } -void ClearWindowTextLines(struct Window *win) +void Text_ClearWindow(struct Window *win) { switch (win->textMode) { - case 0: + case TEXT_MODE_UNKNOWN0: ClearWindowTextLines_TextMode0_TextMode1(win, sLineLength); win->tileDataOffset = 2; break; - case 1: + case TEXT_MODE_MONOSPACE: ClearWindowTextLines_TextMode0_TextMode1(win, sLineLength); break; - case 2: + case TEXT_MODE_UNKNOWN2: ClearWindowTextLines_TextMode2(win, sLineLength); break; } @@ -3074,7 +3126,7 @@ void ClearWindowTextLines(struct Window *win) static void ClearWindowTextLines_TextMode0_TextMode1(struct Window *win, u8 lineLength) { - u8 i; + u8 x, y; u16 *buffer; u16 fill; @@ -3085,11 +3137,10 @@ static void ClearWindowTextLines_TextMode0_TextMode1(struct Window *win, u8 line buffer = GetCursorTilemapPointer(win); fill = GetBlankTileNum(win) | (win->paletteNum << 12); - for (i = 0; i < 4; i++) + for (y = 0; y < 4; y++) { - u8 j; - for (j = 0; j < lineLength; j++) - buffer[j] = fill; + for (x = 0; x < lineLength; x++) + buffer[x] = fill; buffer += 32; } } @@ -3114,13 +3165,13 @@ static void ClearWindowTextLines_TextMode2(struct Window *win, u8 lineLength) static void DrawDownArrow(struct Window *win) { - if (PlayerCanInterruptWait(win)) + if (PlayerCanInterruptDelay(win)) { const u32 *downArrowTiles = &sDownArrowTiles[((win->downArrowCounter & 0x0F00) >> 8) * 16]; switch (win->textMode) { - case 1: + case TEXT_MODE_MONOSPACE: { u8 *buffer; u16 tileNum = win->tileDataStartOffset + 254; @@ -3132,8 +3183,8 @@ static void DrawDownArrow(struct Window *win) WriteGlyphTilemap(win, tileNum, tileNum + 1); break; } - case 0: - case 2: + case TEXT_MODE_UNKNOWN0: + case TEXT_MODE_UNKNOWN2: { struct GlyphTileInfo glyphTileInfo; glyphTileInfo.textMode = win->textMode; @@ -3172,9 +3223,9 @@ static void DrawDownArrow(struct Window *win) static u8 WaitWithDownArrow(struct Window *win) { - u8 retVal = 1; + u8 retVal = TRUE; - if (!PlayerCanInterruptWait(win)) + if (!PlayerCanInterruptDelay(win)) { win->delayCounter--; if (!win->delayCounter) @@ -3183,8 +3234,8 @@ static u8 WaitWithDownArrow(struct Window *win) } else { - DrawMovingDownArrow(win); - retVal = 0; + UpdateDownArrowAnimation(win); + retVal = FALSE; } } else @@ -3196,8 +3247,8 @@ static u8 WaitWithDownArrow(struct Window *win) } else { - DrawMovingDownArrow(win); - retVal = 0; + UpdateDownArrowAnimation(win); + retVal = FALSE; } } @@ -3210,7 +3261,7 @@ static void DrawInitialDownArrow(struct Window *win) DrawDownArrow(win); } -static void DrawMovingDownArrow(struct Window *win) +static void UpdateDownArrowAnimation(struct Window *win) { u16 downArrowPos = (win->downArrowCounter & 0x0F00) >> 8; u16 wait = win->downArrowCounter & 0x000F; @@ -3237,31 +3288,37 @@ static void DrawMovingDownArrow(struct Window *win) static void TryEraseDownArrow(struct Window *win) { win->downArrowCounter = 0; - if (PlayerCanInterruptWait(win) == TRUE) + if (PlayerCanInterruptDelay(win) == TRUE) EraseAtCursor(win); } -u16 GetWindowTilemapEntry(struct Window *win, u8 x, u8 y) +// unused +u16 Text_GetWindowTilemapEntry(struct Window *win, u8 x, u8 y) { u16 *tilemap = win->tilemap; return tilemap[32 * y + x]; } -void DrawWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) +// unused +void Text_FillWindowBorder(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) { u8 i; u16 *buffer = &win->tilemap[top * 32]; + // Fill top border for (i = left; i <= right; i++) buffer[i] = tilemapEntry; for (i = top + 1; i < bottom - 1; i++) { buffer += 32; + // left border buffer[left] = tilemapEntry; + // right border buffer[right] = tilemapEntry; } + // Fill bottom border if (top != bottom) { buffer += 32; @@ -3270,19 +3327,21 @@ void DrawWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 ri } } +// unused void DrawWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom) { - DrawWindowRect(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); + Text_FillWindowBorder(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); } +// Fills the whole window area with tilemapEntry void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) { u16 *buffer = &win->tilemap[top * 32]; while (top++ <= bottom) { - u8 j; - for (j = left; j <= right; j++) - buffer[j] = tilemapEntry; + u8 x; + for (x = left; x <= right; x++) + buffer[x] = tilemapEntry; buffer += 32; } } @@ -3297,7 +3356,7 @@ void ZeroFillWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom FillWindowRect_DefaultPalette(win, 0, left, top, right, bottom); } -void FillWindowRectWithBlankTile(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) +void Text_BlankWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { u16 tileNum = GetBlankTileNum(win); FillWindowRect_DefaultPalette(win, tileNum, left, top, right, bottom); @@ -3309,12 +3368,12 @@ static u16 GetBlankTileNum(struct Window *win) switch (win->textMode) { - case 0: + case TEXT_MODE_UNKNOWN0: break; - case 2: + case TEXT_MODE_UNKNOWN2: retVal++; break; - case 1: + case TEXT_MODE_MONOSPACE: switch (win->fontNum) { case 1: @@ -3451,7 +3510,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT ConvertIntToDecimalString(temp, value); width = GetStringWidth(win, temp); dest = StringCopy(dest, temp); - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = alignAmount - width; dest += 3; @@ -3462,7 +3521,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT width = GetStringWidth(win, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = alignAmount - width; dest += 3; @@ -3474,7 +3533,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT width = GetStringWidth(win, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3482,7 +3541,7 @@ u8 *AlignInt2(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT dest = StringCopy(dest, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 17; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3500,7 +3559,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 { case 0: dest = StringCopy(dest, src); - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount; dest += 3; @@ -3510,7 +3569,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 width = GetStringWidth(win, src); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount - width; dest += 3; @@ -3521,7 +3580,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 width = GetStringWidth(win, src); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3529,7 +3588,7 @@ u8 *AlignString(struct Window *win, u8 *dest, const u8 *src, u8 alignAmount, u8 dest = StringCopy(dest, src); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount; dest += 3; @@ -3544,16 +3603,16 @@ u8 GetStringWidth(struct Window *win, const u8 *s) { u8 width = 0; u8 savedFontNum = win->fontNum; - u8 savedCharset = win->language; + u8 savedLanguage = win->language; u8 savedSpacing = win->spacing; s32 i = 0; - while (s[i] != 0xFF) + while (s[i] != EOS) { u8 c = s[i]; switch (c) { - case 0xFD: + case PLACEHOLDER_BEGIN: { u8 temp; i++; @@ -3563,7 +3622,7 @@ u8 GetStringWidth(struct Window *win, const u8 *s) i++; break; } - case 0xFC: + case EXT_CTRL_CODE_BEGIN: i++; switch (s[i]) { @@ -3571,7 +3630,7 @@ u8 GetStringWidth(struct Window *win, const u8 *s) win->fontNum = s[i + 1]; break; case 7: - win->fontNum = win->config->fontNum; + win->fontNum = win->template->fontNum; break; case 0x11: width += s[i + 1]; @@ -3601,7 +3660,7 @@ u8 GetStringWidth(struct Window *win, const u8 *s) } win->spacing = savedSpacing; - win->language = savedCharset; + win->language = savedLanguage; win->fontNum = savedFontNum; return width; @@ -3609,30 +3668,30 @@ u8 GetStringWidth(struct Window *win, const u8 *s) u8 sub_8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) { - sub_8002E4C(win, text, tileDataStartOffset, left, top, a6); - return sub_8002F44(win); + Text_InitWindow8002E4C(win, text, tileDataStartOffset, left, top, a6); + return Text_PrintWindow8002F44(win); } u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { u8 width = GetStringWidth(win, text); - InitWindow(win, text, tileDataStartOffset, left - ((u32)(width + 7) >> 3), top); + Text_InitWindow(win, text, tileDataStartOffset, left - ((u32)(width + 7) >> 3), top); EraseAtCursor(win); width &= 7; if (width) width = 8 - width; sub_80048D8(win, width, 0); - return sub_8002F44(win); + return Text_PrintWindow8002F44(win); } u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6) { register u32 val asm("r5") = (u8)((a6 >> 1) - (GetStringWidth(win, text) >> 1)); left += (val >> 3); - InitWindow(win, text, tileDataStartOffset, left, top); + Text_InitWindow(win, text, tileDataStartOffset, left, top); EraseAtCursor(win); sub_80048D8(win, val & 7, 0); - return sub_8002F44(win); + return Text_PrintWindow8002F44(win); } u8 sub_8004E24(struct Window *win) @@ -3640,25 +3699,25 @@ u8 sub_8004E24(struct Window *win) return win->paletteNum; } -void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow) +void Text_GetTextColors(struct Window *win, u8 *foreground, u8 *background, u8 *shadow) { *foreground = win->foregroundColor; *background = win->backgroundColor; *shadow = win->shadowColor; } -void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text) +void sub_8004E3C(const struct WindowTemplate *winTemplate, u8 *tileData, const u8 *text) { - sTempWindow.config = winConfig; - InitWindow(&sTempWindow, text, 0, 0, 0); + sTempWindow.template = winTemplate; + Text_InitWindow(&sTempWindow, text, 0, 0, 0); sTempWindow.tileData = tileData; - sub_8002F44(&sTempWindow); + Text_PrintWindow8002F44(&sTempWindow); } -u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s) +u8 Text_GetStringWidthFromWindowTemplate(const struct WindowTemplate *winTemplate, const u8 *s) { - sTempWindow.config = winConfig; - InitWindow(&sTempWindow, s, 0, 0, 0); + sTempWindow.template = winTemplate; + Text_InitWindow(&sTempWindow, s, 0, 0, 0); return GetStringWidth(&sTempWindow, s); } @@ -3801,8 +3860,8 @@ u8 sub_8004FD0(struct Window *win, u8 *dest, const u8 *src, u16 tileDataStartOff if (endsWithoutNewline) newlineCount++; - sub_8002E4C(win, start, tileDataStartOffset, left, top, a8); - sub_8002F44(win); + Text_InitWindow8002E4C(win, start, tileDataStartOffset, left, top, a8); + Text_PrintWindow8002F44(win); return newlineCount; } @@ -3827,7 +3886,7 @@ static s32 DrawGlyphTile_UnshadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { u32 mask2 = masks[1]; - if (glyphTileInfo->textMode == 2) + if (glyphTileInfo->textMode == TEXT_MODE_UNKNOWN2) { glyphBuffer->pixelRows[8] = buffer[8] & mask2; glyphBuffer->pixelRows[9] = buffer[9] & mask2; @@ -3867,7 +3926,7 @@ static s32 DrawGlyphTile_UnshadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { - if (glyphTileInfo->textMode != 2) + if (glyphTileInfo->textMode != TEXT_MODE_UNKNOWN2) buffer += 8; buffer[8] = glyphBuffer->pixelRows[8]; buffer[9] = glyphBuffer->pixelRows[9]; @@ -4039,7 +4098,7 @@ static s32 DrawGlyphTile_ShadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { u32 mask2 = masks[1]; - if (glyphTileInfo->textMode == 2) + if (glyphTileInfo->textMode == TEXT_MODE_UNKNOWN2) { glyphBuffer->pixelRows[8] = buffer[8] & mask2; glyphBuffer->pixelRows[9] = buffer[9] & mask2; @@ -4076,7 +4135,7 @@ static s32 DrawGlyphTile_ShadowedFont(struct GlyphTileInfo *glyphTileInfo) if (glyphTileInfo->startPixel + glyphTileInfo->width > 8) { - if (glyphTileInfo->textMode != 2) + if (glyphTileInfo->textMode != TEXT_MODE_UNKNOWN2) buffer += 8; buffer[8] = glyphBuffer->pixelRows[8]; buffer[9] = glyphBuffer->pixelRows[9]; @@ -4314,7 +4373,7 @@ static u16 GetCursorTileNum(struct Window *win, u32 xOffset, u32 yOffset) { u16 index; - if (win->textMode == 2) + if (win->textMode == TEXT_MODE_UNKNOWN2) index = win->tileDataStartOffset + win->tileDataOffset + (((win->top + win->cursorY) >> 3) + yOffset) * win->width diff --git a/src/engine/text_window.c b/src/engine/text_window.c index c001ddefc..ade349f4e 100644 --- a/src/engine/text_window.c +++ b/src/engine/text_window.c @@ -4,19 +4,22 @@ #include "palette.h" #include "text.h" -#define STD_MSG_BOX_LEFT 0 -#define STD_MSG_BOX_TOP 14 -#define STD_MSG_BOX_WIDTH 26 -#define STD_MSG_BOX_HEIGHT 4 +#define STD_WINDOW_PALETTE_NUM 14 + +// Dimensions (in tiles) of a field dialogue frame +#define STD_DLG_FRAME_LEFT 0 +#define STD_DLG_FRAME_TOP 14 +#define STD_DLG_FRAME_WIDTH 26 +#define STD_DLG_FRAME_HEIGHT 4 static void LoadTextWindowTiles(u8, void *); static void LoadTextWindowPalette(u8, u8); -static void DrawTextWindowInternal(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom); -static u16 GetMessageBoxTilemapEntry(u16 tilemapEntry, u8 x, u8 y, u8 width, u8 height); -static void DrawMessageBox(struct Window *win, u8 left, u8 top, u8 width, u8 height); +static void DrawStandardFrame(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom); +static u16 GetDialogueFrameTilemapEntry(u16 tilemapEntry, u8 x, u8 y, u8 width, u8 height); +static void DrawDialogueFrame(struct Window *win, u8 left, u8 top, u8 width, u8 height); static u16 sTextWindowBaseTileNum; -static u16 sMessageBoxBaseTileNum; +static u16 sDialogueFrameBaseTileNum; extern const u8 gTextWindowFrame1_Gfx[]; extern const u8 gTextWindowFrame2_Gfx[]; @@ -60,9 +63,9 @@ extern const u16 gTextWindowFrame18_Pal[]; extern const u16 gTextWindowFrame19_Pal[]; extern const u16 gTextWindowFrame20_Pal[]; -extern const u8 gMessageBox_Gfx[]; +extern const u8 gDialogueFrame_Gfx[]; -static const struct FrameGraphics gUnknown_083761F0[20] = +static const struct FrameGraphics sTextWindowFrameGraphics[20] = { {gTextWindowFrame1_Gfx, gTextWindowFrame1_Pal}, {gTextWindowFrame2_Gfx, gTextWindowFrame2_Pal}, @@ -86,7 +89,7 @@ static const struct FrameGraphics gUnknown_083761F0[20] = {gTextWindowFrame20_Gfx, gTextWindowFrame20_Pal}, }; -static const u16 gMessageBoxTilemap[5][7] = +static const u16 sDialogueFrameTilemap[5][7] = { {1, 3, 4, 4, 5, 6, 9}, {11, 9, 9, 9, 9, 0x040B, 9}, @@ -95,113 +98,124 @@ static const u16 gMessageBoxTilemap[5][7] = {0x0801, 0x0803, 0x0804, 0x0804, 0x0805, 0x0806, 9}, }; -u16 SetTextWindowBaseTileNum(u16 baseTileNum) +u16 TextWindow_SetBaseTileNum(u16 baseTileNum) { sTextWindowBaseTileNum = baseTileNum; return baseTileNum + 9; } -void LoadTextWindowGraphics(struct Window *win) +// Loads the tiles and palette of the window frame into VRAM using the selected frame type +void TextWindow_LoadStdFrameGraphics(struct Window *win) { - u8 *tileData = win->config->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; + u8 *tileData = win->template->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; LoadTextWindowTiles(gSaveBlock2.optionsWindowFrameType, tileData); - LoadTextWindowPalette(gSaveBlock2.optionsWindowFrameType, 0xE); + LoadTextWindowPalette(gSaveBlock2.optionsWindowFrameType, STD_WINDOW_PALETTE_NUM); } -void LoadTextWindowGraphics_OverridePalSlot(struct Window *win, u8 palSlot) +// Loads the tiles and palette of the window frame into VRAM with an alternate palette +void TextWindow_LoadStdFrameGraphicsOverridePal(struct Window *win, u8 palSlot) { - u8 *tileData = win->config->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; + u8 *tileData = win->template->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; LoadTextWindowTiles(gSaveBlock2.optionsWindowFrameType, tileData); LoadTextWindowPalette(gSaveBlock2.optionsWindowFrameType, palSlot); } -void LoadTextWindowGraphics_OverrideFrameType(struct Window *win, u8 frameType) +// Loads the tiles and palette of the window frame into VRAM with an alternate frame type +void TextWindow_LoadStdFrameGraphicsOverrideStyle(struct Window *win, u8 frameType) { - u8 *tileData = win->config->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; + u8 *tileData = win->template->tileData + TILE_SIZE_4BPP * sTextWindowBaseTileNum; LoadTextWindowTiles(frameType, tileData); - LoadTextWindowPalette(frameType, 0xE); + LoadTextWindowPalette(frameType, STD_WINDOW_PALETTE_NUM); } -void DrawTextWindow(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) +void TextWindow_DrawStdFrame(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { - DrawTextWindowInternal(win->config->tilemap, sTextWindowBaseTileNum, left, top, right, bottom); + DrawStandardFrame(win->template->tilemap, sTextWindowBaseTileNum, left, top, right, bottom); } -const struct FrameGraphics *GetTextWindowFrameGraphics(u8 frameType) +// Returns the tile data and palette for the specified frame type +const struct FrameGraphics *TextWindow_GetFrameGraphics(u8 frameType) { if (frameType > 19) - return &gUnknown_083761F0[0]; + return &sTextWindowFrameGraphics[0]; else - return &gUnknown_083761F0[frameType]; + return &sTextWindowFrameGraphics[frameType]; } static void LoadTextWindowTiles(u8 frameType, void *dest) { - const struct FrameGraphics *frameGraphics = GetTextWindowFrameGraphics(frameType); + const struct FrameGraphics *frameGraphics = TextWindow_GetFrameGraphics(frameType); CpuFastCopy(frameGraphics->tiles, dest, 9 * TILE_SIZE_4BPP); } static void LoadTextWindowPalette(u8 frameType, u8 palSlot) { - const struct FrameGraphics *frameGraphics = GetTextWindowFrameGraphics(frameType); + const struct FrameGraphics *frameGraphics = TextWindow_GetFrameGraphics(frameType); LoadPalette(frameGraphics->palette, 16 * palSlot, 0x20); } -static void DrawTextWindowInternal(u16 *dest, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom) +// Draws a standard window frame +static void DrawStandardFrame(u16 *tilemap, u16 baseTileNum, u8 left, u8 top, u8 right, u8 bottom) { + u8 startX = min(left, right); + u8 endX = max(left, right); + u8 startY = min(top, bottom); + u8 endY = max(top, bottom); u8 x, y; - u8 startX, endX; - u8 startY, endY; - - startX = (left < right) ? left : right; - endX = (right > left) ? right : left; - - startY = (top < bottom) ? top : bottom; - endY = (bottom > top) ? bottom : top; - dest[32 * startY + startX] = baseTileNum | 0xE000; + // top left corner + tilemap[32 * startY + startX] = baseTileNum | (STD_WINDOW_PALETTE_NUM << 12); + // top border for (x = startX + 1; x < endX; x++) - dest[32 * startY + x] = (baseTileNum + 1) | 0xE000; + tilemap[32 * startY + x] = (baseTileNum + 1) | (STD_WINDOW_PALETTE_NUM << 12); - dest[32 * startY + endX] = (baseTileNum + 2) | 0xE000; + // top right corner + tilemap[32 * startY + endX] = (baseTileNum + 2) | (STD_WINDOW_PALETTE_NUM << 12); for (y = startY + 1; y < endY; y++) { - dest[32 * y + startX] = (baseTileNum + 3) | 0xE000; + // left border + tilemap[32 * y + startX] = (baseTileNum + 3) | (STD_WINDOW_PALETTE_NUM << 12); + // middle for (x = startX + 1; x < endX; x++) - dest[32 * y + x] = (baseTileNum + 4) | 0xE000; + tilemap[32 * y + x] = (baseTileNum + 4) | (STD_WINDOW_PALETTE_NUM << 12); - dest[32 * y + endX] = (baseTileNum + 5) | 0xE000; + // right border + tilemap[32 * y + endX] = (baseTileNum + 5) | (STD_WINDOW_PALETTE_NUM << 12); } - dest[32 * endY + startX] = (baseTileNum + 6) | 0xE000; + // bottom left corner + tilemap[32 * endY + startX] = (baseTileNum + 6) | (STD_WINDOW_PALETTE_NUM << 12); + // bottom border for (x = startX + 1; x < endX; x++) - dest[32 * endY + x] = (baseTileNum + 7) | 0xE000; + tilemap[32 * endY + x] = (baseTileNum + 7) | (STD_WINDOW_PALETTE_NUM << 12); - dest[32 * endY + endX] = (baseTileNum + 8) | 0xE000; + // bottom right corner + tilemap[32 * endY + endX] = (baseTileNum + 8) | (STD_WINDOW_PALETTE_NUM << 12); } -u16 SetMessageBoxBaseTileNum(u16 baseTileNum) +u16 TextWindow_SetDlgFrameBaseTileNum(u16 baseTileNum) { - sMessageBoxBaseTileNum = baseTileNum; + sDialogueFrameBaseTileNum = baseTileNum; return baseTileNum + 14; } void unref_sub_80651DC(struct Window *win, u8 *text) { - sub_8002EB0(win, text, sMessageBoxBaseTileNum + 14, 2, 15); + Text_InitWindow8002EB0(win, text, sDialogueFrameBaseTileNum + 14, 2, 15); } -void DisplayMessageBox(struct Window *win) +// Loads and draws a dialogue window frame +void TextWindow_DisplayDialogueFrame(struct Window *win) { - LoadMessageBoxTiles(win); - DrawStandardMessageBox(win); + TextWindow_LoadDialogueFrameTiles(win); + TextWindow_DrawDialogueFrame(win); } -static u16 GetMessageBoxTilemapEntry(u16 baseTilemapEntry, u8 x, u8 y, u8 width, u8 height) +static u16 GetDialogueFrameTilemapEntry(u16 baseTilemapEntry, u8 x, u8 y, u8 width, u8 height) { u16 tilemapEntry = 9; @@ -215,42 +229,47 @@ static u16 GetMessageBoxTilemapEntry(u16 baseTilemapEntry, u8 x, u8 y, u8 width, else if (x > 2) x = 3; - if (x <= 6 && y <= 4) - tilemapEntry = gMessageBoxTilemap[y][x]; + if (x < 7 && y < 5) + tilemapEntry = sDialogueFrameTilemap[y][x]; tilemapEntry += baseTilemapEntry; return tilemapEntry; } -static void DrawMessageBox(struct Window *win, u8 left, u8 top, u8 width, u8 height) +static void DrawDialogueFrame(struct Window *win, u8 left, u8 top, u8 width, u8 height) { - u8 i, j; - u16 tilemapEntry = (win->paletteNum << 12) | sMessageBoxBaseTileNum; - u16 *tilemap = win->config->tilemap; + u8 x, y; + u16 baseTilemapEntry = (win->paletteNum << 12) | sDialogueFrameBaseTileNum; + u16 *tilemap = win->template->tilemap; - for (i = 0; i < height + 2; i++) - for (j = 0; j < width + 6; j++) - tilemap[(left + j) + 32 * (top + i)] = (win->paletteNum << 12) | GetMessageBoxTilemapEntry(tilemapEntry, j, i, width, height); + for (y = 0; y < height + 2; y++) + { + for (x = 0; x < width + 6; x++) + tilemap[(left + x) + 32 * (top + y)] = (win->paletteNum << 12) | GetDialogueFrameTilemapEntry(baseTilemapEntry, x, y, width, height); + } } -void DrawStandardMessageBox(struct Window *win) +// Draws an alternate styled frame used for dialogue windows that appear on the overworld +void TextWindow_DrawDialogueFrame(struct Window *win) { - DrawMessageBox(win, STD_MSG_BOX_LEFT, STD_MSG_BOX_TOP, STD_MSG_BOX_WIDTH, STD_MSG_BOX_HEIGHT); + DrawDialogueFrame(win, STD_DLG_FRAME_LEFT, STD_DLG_FRAME_TOP, STD_DLG_FRAME_WIDTH, STD_DLG_FRAME_HEIGHT); } -void LoadMessageBoxTiles(struct Window *win) +// Loads the dialogue window frame tiles into VRAM +void TextWindow_LoadDialogueFrameTiles(struct Window *win) { - u8 *tileData = win->config->tileData; - CpuFastCopy(gMessageBox_Gfx, tileData + 32 * sMessageBoxBaseTileNum, 14 * TILE_SIZE_4BPP); + u8 *tileData = win->template->tileData; + CpuFastCopy(gDialogueFrame_Gfx, tileData + 32 * sDialogueFrameBaseTileNum, 14 * TILE_SIZE_4BPP); } -void ClearStandardMessageBox(struct Window *win) +// Erases a dialogue window frame +void TextWindow_EraseDialogueFrame(struct Window *win) { u8 i; - u16 *tilemap = win->config->tilemap + (STD_MSG_BOX_TOP * 32); + u16 *tilemap = win->template->tilemap + (STD_DLG_FRAME_TOP * 32); u16 tilemapEntry = win->paletteNum << 12; - for (i = 0; i < ((STD_MSG_BOX_HEIGHT + 2) * 32); i++) + for (i = 0; i < ((STD_DLG_FRAME_HEIGHT + 2) * 32); i++) tilemap[i] = tilemapEntry; } diff --git a/src/engine/trade.c b/src/engine/trade.c index 0bc589ff4..d37b36f72 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -141,7 +141,7 @@ struct TradeEwramStruct { }; static void sub_8047EC0(void); -static void sub_804AFB8(const struct WindowConfig *, u8 *, const u8 *, u8); +static void sub_804AFB8(const struct WindowTemplate *, u8 *, const u8 *, u8); static void sub_804ACD8(const u8 *, u8 *, u8); static void nullsub_5(u8, u8); static void sub_804AA88(void); @@ -1089,10 +1089,10 @@ static void sub_8047EC0(void) SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowConfig_81E6CE4); SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); - gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gUnknown_03004824->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); + Menu_EraseScreen(); sub_809D51C(); gUnknown_03004824->unk_0075 = 0; gUnknown_03004824->unk_007b = 0; @@ -1269,10 +1269,10 @@ static void sub_80484F4(void) SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowConfig_81E6CE4); SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84); - gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gUnknown_03004824->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); + Menu_EraseScreen(); sub_809D51C(); gUnknown_03004824->unk_0075 = 0; gUnknown_03004824->unk_007b = 0; @@ -2096,7 +2096,7 @@ static void sub_8049680(void) PlaySE(SE_SELECT); if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) { - DrawTextWindow(&gUnknown_03004824->window, 18, 14, 28, 19); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, 18, 14, 28, 19); PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); InitMenu(0, 19, 15, 2, 0, 9); gUnknown_03004824->unk_007b = 1; @@ -2108,7 +2108,7 @@ static void sub_8049680(void) } else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE) { - DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, 24, 14, 29, 19); InitYesNoMenu(24, 14, 4); gUnknown_03004824->unk_007b = 4; sub_804ACD8(gUnknown_0820C14C[4], BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e, 20); @@ -2138,17 +2138,17 @@ static void sub_8049860(void) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); gUnknown_03004824->unk_007b = 2; @@ -2239,17 +2239,17 @@ static void sub_8049AC0(void) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { sub_8049A20(); } @@ -2267,9 +2267,9 @@ static void sub_8049AC0(void) else if (gMain.newKeys & B_BUTTON) { sub_804AADC(3, 1); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } gUnknown_03004824->linkData[0] = 0xbbcc; Trade_SendData(gUnknown_03004824); @@ -2282,17 +2282,17 @@ static void sub_8049BC0(void) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(-1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_03004824->unk_007c = MoveMenuCursor(+1); + gUnknown_03004824->unk_007c = Menu_MoveCursor(+1); } if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - if (GetMenuCursorPos() == 0) + if (Menu_GetCursorPos() == 0) { sub_804AA0C(4); gUnknown_03004824->linkData[0] = 0xeeaa; @@ -2337,7 +2337,7 @@ static void DisplayMessageAndContinueTask(void) gUnknown_03004824->unk_00b4++; if (gUnknown_03004824->unk_00b4 > 120) { - DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, 24, 14, 29, 19); InitYesNoMenu(24, 14, 4); gUnknown_03004824->unk_00b4 = 0; gUnknown_03004824->unk_007b = 3; @@ -2491,10 +2491,10 @@ static void sub_8049ED4(u8 a0) string1[3] = 0xFC; string1[4] = 0x11; string1[5] = (64 - stringLength) / 2; - sub_8003460(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]); sub_804A33C(string2, whichParty, whichPokemon); - sub_8003460(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); - sub_8003460(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1); gUnknown_03004824->unk_0080[a0] ++; break; case 4: @@ -2884,7 +2884,7 @@ static void sub_8049ED4(u8 a0) "\tldrb r1, [r1]\n" "\tstr r1, [sp]\n" "\tadd r1, sp, 0xC\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tadd r7, sp, 0x34\n" "\tadds r0, r7, 0\n" "\tldr r1, [sp, 0x6C]\n" @@ -2910,7 +2910,7 @@ static void sub_8049ED4(u8 a0) "\tlsrs r4, 24\n" "\tstr r4, [sp]\n" "\tadds r3, r5, 0\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tldr r0, _0804A22C @ =gUnknown_03004824\n" "\tldr r1, [r0]\n" "\tadds r0, r1, 0x4\n" @@ -2921,7 +2921,7 @@ static void sub_8049ED4(u8 a0) "\tstr r4, [sp]\n" "\tadds r1, r7, 0\n" "\tadds r3, r5, 0\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tldr r2, _0804A22C @ =gUnknown_03004824\n" "\tldr r1, [r2]\n" "\tb _0804A28A\n" @@ -3010,7 +3010,7 @@ u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon) GetMonGender(&gEnemyParty[whichPokemon]); GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL); } - return GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, a0); + return Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, a0); } #ifdef NONMATCHING @@ -3067,8 +3067,8 @@ static void sub_804A41C(u8 whichParty) GetMonData(pokemon, MON_DATA_NICKNAME, nickname); StringCopy10(string + 6, nickname); GetMonGender(pokemon); - string[5] = (50 - GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, string + 6)) / 2; - sub_8003460(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); + string[5] = (50 - Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, string + 6)) / 2; + Text_InitWindowAndPrintText(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); } } #else @@ -3142,7 +3142,7 @@ static void sub_804A41C(u8 whichParty) "\tmov r1, sp\n" "\tadds r1, 0x22\n" "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n" - "\tbl GetStringWidthGivenWindowConfig\n" + "\tbl Text_GetStringWidthFromWindowTemplate\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" "\tmovs r1, 0x32\n" @@ -3177,7 +3177,7 @@ static void sub_804A41C(u8 whichParty) "\tldrb r1, [r1]\n" "\tstr r1, [sp]\n" "\tmov r1, r8\n" - "\tbl sub_8003460\n" + "\tbl Text_InitWindowAndPrintText\n" "\tadds r0, r6, 0x1\n" "\tlsls r0, 24\n" "\tlsrs r6, r0, 24\n" @@ -3413,18 +3413,18 @@ static void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, const u16 static void sub_804A9F4(u8 unused) { - MenuZeroFillScreen(); + Menu_EraseScreen(); } static void sub_804AA00(u8 unused) { - MenuZeroFillScreen(); + Menu_EraseScreen(); } static void sub_804AA0C(u8 a0) { - DrawTextWindow(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]); - sub_8003460(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1); + TextWindow_DrawStdFrame(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]); + Text_InitWindowAndPrintText(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1); } static void sub_804AA88(void) @@ -3798,7 +3798,7 @@ static void sub_804AF84(void) gSaveBlock1.giftRibbons[i] = gUnknown_03004824->unk_00b5[i]; } -static void sub_804AFB8(const struct WindowConfig *windowConfig, u8 *dest, const u8 *src, u8 size) +static void sub_804AFB8(const struct WindowTemplate *windowConfig, u8 *dest, const u8 *src, u8 size) { u8 i; u8 *tileBuffer; @@ -4029,10 +4029,10 @@ static void sub_804B41C(void) SetVBlankCallback(sub_804B210); sub_804B228(); SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); - gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); - LoadTextWindowGraphics(&gUnknown_03004828->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + Menu_EraseScreen(); gLinkType = 0x1144; gMain.state ++; LZDecompressVram(gUnknown_08D00000, (void *)VRAM); @@ -4188,16 +4188,16 @@ static __attribute__((naked)) void sub_804B41C(void) "\tldr r0, [r6]\n" "\tadds r0, 0x4\n" "\tadds r1, r4, 0\n" - "\tbl InitWindowFromConfig\n" + "\tbl Text_InitWindowWithTemplate\n" "\tmovs r0, 0x2\n" - "\tbl SetTextWindowBaseTileNum\n" + "\tbl TextWindow_SetBaseTileNum\n" "\tldr r1, [r6]\n" "\tadds r1, 0x34\n" "\tstrb r0, [r1]\n" "\tldr r0, [r6]\n" "\tadds r0, 0x4\n" - "\tbl LoadTextWindowGraphics\n" - "\tbl MenuZeroFillScreen\n" + "\tbl TextWindow_LoadStdFrameGraphics\n" + "\tbl Menu_EraseScreen\n" "\tldr r1, _0804B580 @ =gLinkType\n" "\tldr r4, _0804B584 @ =0x00001144\n" "\tadds r0, r4, 0\n" @@ -4532,10 +4532,10 @@ static void sub_804B790(void) SetVBlankCallback(sub_804B210); sub_804B228(); SetUpWindowConfig(&gWindowConfig_81E717C); - InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E717C); - gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); - LoadTextWindowGraphics(&gUnknown_03004828->window); - MenuZeroFillScreen(); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E717C); + gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + Menu_EraseScreen(); gLinkType = 0x1144; gUnknown_03004828->isLinkTrade = FALSE; gUnknown_03004828->unk_00b6 = 0; @@ -4733,7 +4733,7 @@ static void sub_804BBE8(u8 a0) for (i = 0; i < 0x280; i ++) buffer[i] |= 0x7000; DmaCopy16Defvars(3, gSharedMem, BG_SCREEN_ADDR(5), 0x500); - MenuZeroFillWindowRect(2, 15, 27, 18); + Menu_EraseWindowRect(2, 15, 27, 18); break; case 6: REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; @@ -4843,7 +4843,7 @@ static bool8 sub_804C29C(void) case 10: StringExpandPlaceholders(gStringVar4, gTradeText_WillBeSent); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c4 = 11; gUnknown_03004828->unk_00c0 = 0; break; @@ -4854,11 +4854,11 @@ static bool8 sub_804C29C(void) gUnknown_03004828->unk_00c4 ++; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); } break; case 12: - if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && sub_80035AC(&gUnknown_03004828->window) == TRUE) + if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && Text_UpdateWindow(&gUnknown_03004828->window) == TRUE) { gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, 0x20, 0); gSprites[gUnknown_03004828->unk_0103].callback = sub_804D738; @@ -5201,7 +5201,7 @@ static bool8 sub_804C29C(void) REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c4 ++; gUnknown_03004828->unk_00c0 = 0; break; @@ -5215,7 +5215,7 @@ static bool8 sub_804C29C(void) gUnknown_03004828->unk_00c4 ++; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c0 = 0; } break; @@ -5538,7 +5538,7 @@ static void sub_804DC88(void) gMain.state ++; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2); - sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; case 1: sub_80084A4(); @@ -5565,7 +5565,7 @@ static void sub_804DC88(void) case 2: gMain.state = 50; ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); - sub_8003460(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindowAndPrintText(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; case 50: SetSecretBase2Field_9_AndHideBG(); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index ffa4cbd08..da9dd7179 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -700,7 +700,7 @@ static void sub_80939DC(u8 taskId) task->data[TD_0] ^= TRUE; } TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]); - MenuPrint(buffer, 10, 12); + Menu_PrintText(buffer, 10, 12); } static void sub_8093A28(void) @@ -1130,7 +1130,7 @@ static void sub_8093DAC(void) static void sub_8093DC8(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_80940E4(); sub_8093F14(); sub_8093F80(); @@ -1141,7 +1141,7 @@ static void sub_8093DC8(void) static void sub_8093DEC(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_80940E4(); sub_8093F48(); sub_8094188(); @@ -1322,7 +1322,7 @@ static void sub_8094140(void) buffer = gStringVar1; StringCopy(buffer, ewram0_2.var_64.playerName); ConvertInternationalString(buffer, ewram0_2.language); - MenuPrint(buffer, 7, 5); + Menu_PrintText(buffer, 7, 5); TrainerCard_Front_PrintTrainerID(); TrainerCard_Front_PrintMoney(); @@ -1355,7 +1355,7 @@ static void TrainerCard_Front_PrintTrainerID(void) u8 buffer[8]; ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); - MenuPrint(buffer, 20, 2); + Menu_PrintText(buffer, 20, 2); } static void TrainerCard_Front_PrintMoney(void) @@ -1406,14 +1406,14 @@ static void sub_809429C(void) str[0] = 00; str++; str = StringCopy(str, ewram0_2.var_20[1]); - MenuPrint(gStringVar1, 2, 14); + Menu_PrintText(gStringVar1, 2, 14); str = gStringVar1; str = StringCopy(str, ewram0_2.var_20[2]); str[0] = 00; str++; str = StringCopy(str, ewram0_2.var_20[3]); - MenuPrint(gStringVar1, 2, 16); + Menu_PrintText(gStringVar1, 2, 16); } } @@ -1437,7 +1437,7 @@ static void TrainerCard_Back_PrintName(void) static void TrainerCard_Back_PrintHallOfFameTime_Label(void) { if (ewram0_2.var_8 != 0) - MenuPrint(gOtherText_FirstHOF, 3, 5); + Menu_PrintText(gOtherText_FirstHOF, 3, 5); } static void TrainerCard_Back_PrintHallOfFameTime(void) @@ -1459,7 +1459,7 @@ static void TrainerCard_Back_PrintHallOfFameTime(void) static void TrainerCard_Back_PrintLinkBattlesLabel(void) { if (ewram0_2.var_9 != 0) - MenuPrint(gOtherText_LinkCableBattles, 3, 7); + Menu_PrintText(gOtherText_LinkCableBattles, 3, 7); } static void TrainerCard_Back_PrintLinkBattles(void) @@ -1479,7 +1479,7 @@ static void TrainerCard_Back_PrintLinkBattles(void) static void TrainerCard_Back_PrintBattleTower_Label(void) { if (ewram0_2.var_a != 0) - MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15); + Menu_PrintText(gOtherText_BattleTowerWinRecord, 3, 15); } static void TrainerCard_Back_PrintBattleTower(void) @@ -1499,7 +1499,7 @@ static void TrainerCard_Back_PrintBattleTower(void) static void TrainerCard_Back_PrintLinkContests_Label(void) { if (ewram0_2.var_b != 0) - MenuPrint(gOtherText_ContestRecord, 3, 13); + Menu_PrintText(gOtherText_ContestRecord, 3, 13); } static void TrainerCard_Back_PrintLinkContests(void) @@ -1516,7 +1516,7 @@ static void TrainerCard_Back_PrintLinkContests(void) static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) { if (ewram0_2.var_c != 0) - MenuPrint(gOtherText_MixingRecord, 3, 11); + Menu_PrintText(gOtherText_MixingRecord, 3, 11); } static void TrainerCard_Back_PrintLinkPokeblocks(void) @@ -1533,7 +1533,7 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void) static void TrainerCard_Back_PrintPokemonTrades_Label(void) { if (ewram0_2.var_d != 0) - MenuPrint(gOtherText_TradeRecord, 3, 9); + Menu_PrintText(gOtherText_TradeRecord, 3, 9); } static void TrainerCard_Back_PrintPokemonTrades(void) @@ -1553,5 +1553,5 @@ void unref_sub_8094588(u16 left, u16 top) if (gSaveBlock2.playerGender == FEMALE) text = gOtherText_Girl; - MenuPrint(text, left, top); + Menu_PrintText(text, left, top); } diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 960a163c1..f57face11 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -280,18 +280,18 @@ static void sub_81464E4(void) berryInfo = GetBerryInfo(gSpecialVar_ItemId + OFFSET_7B + 1); ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_ItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); - MenuPrint(gStringVar1, 12, 4); + Menu_PrintText(gStringVar1, 12, 4); #if ENGLISH - MenuPrint(berryInfo->name, 14, 4); + Menu_PrintText(berryInfo->name, 14, 4); #elif GERMAN StringCopy(buffer, berryInfo->name); StringAppend(buffer, gOtherText_Berry2); - MenuPrint(buffer, 14, 4); + Menu_PrintText(buffer, 14, 4); #endif - MenuPrint(berryInfo->description1, 4, 14); - MenuPrint(berryInfo->description2, 4, 16); + Menu_PrintText(berryInfo->description1, 4, 14); + Menu_PrintText(berryInfo->description2, 4, 16); #ifdef UNITS_IMPERIAL size = (berryInfo->size * 1000) / 254; @@ -301,7 +301,7 @@ static void sub_81464E4(void) sizeMajor = size / 100; #endif - MenuPrint(gOtherText_Size, 11, 7); + Menu_PrintText(gOtherText_Size, 11, 7); if (berryInfo->size != 0) { #ifdef UNITS_IMPERIAL @@ -311,18 +311,18 @@ static void sub_81464E4(void) ConvertIntToDecimalStringN(gStringVar1, berryInfo->size / 10, STR_CONV_MODE_LEFT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar2, berryInfo->size % 10, STR_CONV_MODE_LEFT_ALIGN, 2); #endif - MenuPrint(gContestStatsText_Unknown1, 16, 7); + Menu_PrintText(gContestStatsText_Unknown1, 16, 7); } else { - MenuPrint(gOtherText_ThreeQuestions2, 16, 7); + Menu_PrintText(gOtherText_ThreeQuestions2, 16, 7); } - MenuPrint(gOtherText_Firm, 11, 9); + Menu_PrintText(gOtherText_Firm, 11, 9); if (berryInfo->firmness != 0) - MenuPrint(gUnknown_0841192C[berryInfo->firmness - 1], 16, 9); + Menu_PrintText(gUnknown_0841192C[berryInfo->firmness - 1], 16, 9); else - MenuPrint(gOtherText_ThreeQuestions2, 16, 9); + Menu_PrintText(gOtherText_ThreeQuestions2, 16, 9); } static void sub_8146600(u8 berry) @@ -445,7 +445,7 @@ static void sub_8146810(s8 berry) static void sub_81468BC(void) { - MenuZeroFillWindowRect(0, 4, 29, 19); + Menu_EraseWindowRect(0, 4, 29, 19); sub_81464E4(); // center of berry sprite diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index 0d304714d..f11fb5fb3 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -161,7 +161,7 @@ void Task_BrailleWait(u8 taskId) case 1: if (BrailleWait_CheckButtonPress() != FALSE) { - MenuZeroFillScreen(); + Menu_EraseScreen(); PlaySE(SE_SELECT); data[0] = 2; } @@ -170,7 +170,7 @@ void Task_BrailleWait(u8 taskId) data[1] = data[1] - 1; if (data[1] == 0) { - MenuZeroFillScreen(); + Menu_EraseScreen(); data[0] = 3; data[1] = 30; } diff --git a/src/field/choose_party.c b/src/field/choose_party.c index d278eda4a..6a9c23c66 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -318,19 +318,19 @@ static void sub_812238C(u8 taskId) { if (gMain.newAndRepeatedKeys & 0x40) { - if (GetMenuCursorPos() != 0) + if (Menu_GetCursorPos() != 0) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } return; } if (gMain.newAndRepeatedKeys & 0x80) { - if (GetMenuCursorPos() != 3) + if (Menu_GetCursorPos() != 3) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } return; } @@ -343,7 +343,7 @@ static void sub_812238C(u8 taskId) gTasks[taskId].data[4], sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, - GetMenuCursorPos()); + Menu_GetCursorPos()); popupMenuFunc(taskId); return; } @@ -461,7 +461,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId) } } PlaySE(SE_HAZURE); - MenuZeroFillWindowRect(20, 10, 29, 19); + Menu_EraseWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); sub_806D5A4(); sub_806E834(gOtherText_NoMoreThreePoke, 1); @@ -475,7 +475,7 @@ static void sub_8122728(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); HandleDestroyMenuCursors(); BattleTowerEntryMenuCallback_Exit(taskId); } @@ -515,7 +515,7 @@ static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId) static void sub_81227FC(u8 taskId) { - MenuZeroFillWindowRect(20, 10, 29, 19); + Menu_EraseWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); PrintPartyMenuPromptText(0, 0); gTasks[taskId].func = HandleBattleTowerPartyMenu; @@ -806,19 +806,19 @@ static void Task_DaycareStorageMenu8122EAC(u8 taskId) { if (gMain.newAndRepeatedKeys & 0x40) { - if (GetMenuCursorPos() != 0) + if (Menu_GetCursorPos() != 0) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } return; } if (gMain.newAndRepeatedKeys & 0x80) { - if (GetMenuCursorPos() != 3) + if (Menu_GetCursorPos() != 3) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } return; } @@ -831,7 +831,7 @@ static void Task_DaycareStorageMenu8122EAC(u8 taskId) gTasks[taskId].data[4], sDaycareStorageMenus, sDaycareStorageMenuItems, - GetMenuCursorPos()); + Menu_GetCursorPos()); popupMenuFunc(taskId); return; } @@ -896,7 +896,7 @@ static void DaycareStorageMenuCallback_Summary(u8 taskId) static void DaycareStorageMenuCallback_Exit(u8 taskId) { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(20, 10, 29, 19); + Menu_EraseWindowRect(20, 10, 29, 19); HandleDestroyMenuCursors(); PrintPartyMenuPromptText(15, 0); gTasks[taskId].func = HandleDaycarePartyMenu; diff --git a/src/field/coins.c b/src/field/coins.c index 91a4b508d..2c217e635 100644 --- a/src/field/coins.c +++ b/src/field/coins.c @@ -13,13 +13,13 @@ void UpdateCoinsWindow(s32 coins, u8 x, u8 y) void ShowCoinsWindow(u32 coins, u8 x, u8 y) { - MenuDrawTextWindow(x, y, x + 9, y + 3); + Menu_DrawStdWindowFrame(x, y, x + 9, y + 3); UpdateCoinsWindow(coins, x, y); } void HideCoinsWindow(u8 x, u8 y) { - MenuZeroFillWindowRect(x, y, x + 9, y + 3); + Menu_EraseWindowRect(x, y, x + 9, y + 3); } void PrintCoins(s32 coins, u8 b, u8 x, u8 y) @@ -46,7 +46,7 @@ void PrintCoins(s32 coins, u8 b, u8 x, u8 y) ptr[2] = (b - StringLength(string)) * 6; ptr += 3; StringCopy(ptr, string); - MenuPrint(gOtherText_Coins2, x, y); + Menu_PrintText(gOtherText_Coins2, x, y); } u16 GetCoins(void) diff --git a/src/field/daycare.c b/src/field/daycare.c index c28bc65ca..7814a3b24 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1741,7 +1741,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) if (gTasks[taskId].data[0] != 0) { gTasks[taskId].data[0] --; - MoveMenuCursor(-1); + Menu_MoveCursor(-1); PlaySE(SE_SELECT); } } @@ -1750,7 +1750,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) if (gTasks[taskId].data[0] != 2) { gTasks[taskId].data[0]++; - MoveMenuCursor(+1); + Menu_MoveCursor(+1); PlaySE(SE_SELECT); } } @@ -1760,7 +1760,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = gSpecialVar_Result = gTasks[taskId].data[0]; DestroyTask(taskId); - MenuZeroFillWindowRect(15, 6, 29, 13); + Menu_EraseWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); } else if (gMain.newKeys & B_BUTTON) @@ -1768,7 +1768,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) HandleDestroyMenuCursors(); gLastFieldPokeMenuOpened = gSpecialVar_Result = 2; DestroyTask(taskId); - MenuZeroFillWindowRect(15, 6, 29, 13); + Menu_EraseWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); } } @@ -1776,9 +1776,9 @@ static void HandleDaycareLevelMenuInput(u8 taskId) void ShowDaycareLevelMenu(void) { u8 buffer[100]; - MenuDrawTextWindow(15, 6, 29, 13); + Menu_DrawStdWindowFrame(15, 6, 29, 13); GetDaycareLevelMenuText(&gSaveBlock1.daycare, buffer); - MenuPrint(buffer, 16, 7); + Menu_PrintText(buffer, 16, 7); GetDaycareLevelMenuLevelText(&gSaveBlock1.daycare, buffer); MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); InitMenu(0, 16, 7, 3, 0, 13); diff --git a/src/field/decoration.c b/src/field/decoration.c index 87a9d8028..a91b2e37b 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1433,7 +1433,7 @@ extern u8 gUnknown_0815F399[]; void sub_80FE1DC(void) { sub_80FE2B4(); - MenuDrawTextWindow(0, 0, 10, 9); + Menu_DrawStdWindowFrame(0, 0, 10, 9); PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); } @@ -1487,13 +1487,13 @@ void Task_DecorationPCProcessMenuInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - gUnknown_020388D4 = MoveMenuCursor(-1); + gUnknown_020388D4 = Menu_MoveCursor(-1); sub_80FE394(); } if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - gUnknown_020388D4 = MoveMenuCursor(1); + gUnknown_020388D4 = Menu_MoveCursor(1); sub_80FE394(); } if (gMain.newKeys & A_BUTTON) @@ -1510,15 +1510,15 @@ void Task_DecorationPCProcessMenuInput(u8 taskId) void sub_80FE394(void) { - MenuFillWindowRectWithBlankTile(2, 15, 27, 18); - MenuPrint(gUnknown_083EC624[gUnknown_020388D4], 2, 15); + Menu_BlankWindowRect(2, 15, 27, 18); + Menu_PrintText(gUnknown_083EC624[gUnknown_020388D4], 2, 15); } void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 10, 9); - MenuFillWindowRectWithBlankTile(2, 15, 27, 18); + Menu_EraseWindowRect(0, 0, 10, 9); + Menu_BlankWindowRect(2, 15, 27, 18); FreeSpritePaletteByTag(6); if (ewram_1f000.isPlayerRoom == 0) { @@ -1561,13 +1561,13 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg strptr[1] = 5; strptr[2] = v0; strptr[3] = EOS; - MenuPrint(gStringVar4, left, top); + Menu_PrintText(gStringVar4, left, top); } void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings { u8 decoCat; - MenuDrawTextWindow(0, 0, 14, 19); + Menu_DrawStdWindowFrame(0, 0, 14, 19); for (decoCat=0; decoCat<8; decoCat++) { if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION) @@ -1578,13 +1578,13 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255); // Unselectable } } - MenuPrint(gUnknownText_Exit, 1, 17); + Menu_PrintText(gUnknownText_Exit, 1, 17); } void sub_80FE5AC(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80FE528(taskId); InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13); gTasks[taskId].func = sub_80FE604; @@ -1597,15 +1597,15 @@ void sub_80FE604(u8 taskId) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gUnknown_020388F6 = GetMenuCursorPos(); + gUnknown_020388F6 = Menu_GetCursorPos(); if (gUnknown_020388F6 != 8) { gUnknown_020388D5 = sub_8134194(gUnknown_020388F6); @@ -1621,7 +1621,7 @@ void sub_80FE604(u8 taskId) } else { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0); } } else @@ -1650,11 +1650,11 @@ void sub_80FE728(u8 taskId) void sub_80FE758(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); if (gTasks[taskId].data[11] != 2) { sub_80FE1DC(); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); sub_80FE394(); gTasks[taskId].func = Task_DecorationPCProcessMenuInput; } else @@ -1678,17 +1678,17 @@ void sub_80FE7D4(u8 *dest, u8 decClass) void sub_80FE7EC(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80FEC94(taskId); sub_80FECB8(gUnknown_020388F6); #if ENGLISH - MenuDrawTextWindow(15, 12, 29, 19); + Menu_DrawStdWindowFrame(15, 12, 29, 19); #elif GERMAN if ((gUnknown_020388F2 + gUnknown_020388F4) != gUnknown_020388D5) { - MenuDrawTextWindow(15, 12, 29, 19); + Menu_DrawStdWindowFrame(15, 12, 29, 19); } #endif @@ -1710,7 +1710,7 @@ void sub_80FE894(u8 taskId /*r8*/, s8 cursorVector /*r5*/, s8 bgVector /*r7*/) PlaySE(SE_SELECT); if (cursorVector != 0) { - gUnknown_020388F2 = MoveMenuCursor(cursorVector); + gUnknown_020388F2 = Menu_MoveCursor(cursorVector); } if (bgVector != 0) { @@ -1722,12 +1722,12 @@ void sub_80FE894(u8 taskId /*r8*/, s8 cursorVector /*r5*/, s8 bgVector /*r7*/) { if (v0) { - MenuDrawTextWindow(15, 12, 29, 19); + Menu_DrawStdWindowFrame(15, 12, 29, 19); } sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4); } else { - MenuZeroFillWindowRect(15, 12, 29, 19); + Menu_EraseWindowRect(15, 12, 29, 19); } } @@ -1839,13 +1839,13 @@ void sub_80FEABC(u8 taskId, u8 dummy1) void sub_80FEC94(u8 taskId) { - MenuDrawTextWindow(0, 0, 14, 19); + Menu_DrawStdWindowFrame(0, 0, 14, 19); sub_80FEABC(taskId, 0); } void sub_80FECB8(u8 decoCat) { - MenuDrawTextWindow(15, 0, 29, 3); + Menu_DrawStdWindowFrame(15, 0, 29, 3); sub_80FE470(decoCat, 16, 1, 0xff); } @@ -1902,8 +1902,8 @@ _080FED26:\n\ void sub_80FED1C(void) { - MenuZeroFillWindowRect(15, 0, 29, 3); - MenuZeroFillWindowRect(15, 12, 29, 19); + Menu_EraseWindowRect(15, 0, 29, 3); + Menu_EraseWindowRect(15, 12, 29, 19); } void sub_80FED3C(u8 taskId) @@ -2006,7 +2006,7 @@ void sub_80FEF74(void) DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); } bool8 sub_80FEFA4(void) @@ -2036,7 +2036,7 @@ void sub_80FEFF4(u8 taskId) void sub_80FF034(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 14, 19); + Menu_EraseWindowRect(0, 0, 14, 19); sub_80FE5AC(taskId); } @@ -3128,7 +3128,7 @@ void sub_81000A0(u8 taskId) void sub_81000C4(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_8100174(taskId); if (gDecorations[gUnknown_020388D0[gUnknown_020388F5]].permission != DECORPERM_SOLID_MAT) { @@ -3186,7 +3186,7 @@ void sub_8100248(u8 taskId) void sub_810026C(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_810028C(taskId); } @@ -3341,7 +3341,7 @@ void sub_8100494(u8 taskId) void sub_810065C(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSprites[gUnknown_020391A8].data[7] = 0; gTasks[taskId].data[10] = 0; gTasks[taskId].func = sub_8100494; @@ -3723,7 +3723,7 @@ void sub_8100C88(u8 taskId) { DrawWholeMapView(); ScriptContext1_SetupScript(gUnknown_081A2F8A); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gTasks[taskId].data[2] = 2; } break; @@ -3760,7 +3760,7 @@ bool8 sub_8100D38(u8 taskId) void SetUpPuttingAwayDecorationPlayerAvatar(void) { player_get_direction_lower_nybble(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; sub_81016C8(); gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0); @@ -3810,7 +3810,7 @@ void sub_8100E70(u8 taskId) void sub_8100EEC(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSprites[gUnknown_020391A8].data[7] = 0; gSprites[gUnknown_020391A8].invisible = 0; gSprites[gUnknown_020391A8].callback = sub_8101698; @@ -4150,7 +4150,7 @@ void sub_810156C(u8 taskId) void sub_8101590(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_81015B0(taskId); } @@ -4192,7 +4192,7 @@ void sub_8101648(u8 taskId) void sub_8101678(void) { pal_fill_black(); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); sub_80FE220(); CreateTask(sub_8101648, 8); } @@ -4274,7 +4274,7 @@ void sub_8101824(u8 taskId) void sub_8101848(u8 taskId) { - MenuZeroFillWindowRect(20, 8, 26, 14); + Menu_EraseWindowRect(20, 8, 26, 14); sub_8109A30(gUnknown_020388D0[gUnknown_020388F5]); gUnknown_020388D0[gUnknown_020388F5] = DECOR_NONE; sub_80FF098(taskId); diff --git a/src/field/diploma.c b/src/field/diploma.c index 27601404c..b9cdb65df 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -135,5 +135,5 @@ static void DisplayDiplomaText(void) REG_BG3HOFS = 0; StringCopy(gStringVar1, gOtherText_HoennDex); } - MenuPrint(gOtherText_DiplomaCertificationGameFreak, 6, 2); + Menu_PrintText(gOtherText_DiplomaCertificationGameFreak, 6, 2); } \ No newline at end of file diff --git a/src/field/field_message_box.c b/src/field/field_message_box.c index 35aac7ac9..284fdb3f0 100644 --- a/src/field/field_message_box.c +++ b/src/field/field_message_box.c @@ -19,8 +19,8 @@ static void PrintFieldMessageFromStringVar4(void); void InitFieldMessageBox(void) { sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; - SetMessageBoxBaseTileNum(gMenuTextWindowContentTileOffset); - InitWindowFromConfig(&gFieldMessageBoxWindow, &gWindowConfig_81E6CE4); + TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); + Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowConfig_81E6CE4); } static void Task_FieldMessageBox(u8 taskId) @@ -29,22 +29,22 @@ static void Task_FieldMessageBox(u8 taskId) switch (task->data[0]) { case 0: - LoadMessageBoxTiles(&gFieldMessageBoxWindow); + TextWindow_LoadDialogueFrameTiles(&gFieldMessageBoxWindow); task->data[0]++; break; case 1: - DrawStandardMessageBox(&gFieldMessageBoxWindow); + TextWindow_DrawDialogueFrame(&gFieldMessageBoxWindow); task->data[0]++; break; case 2: switch (sMessageBoxMode) { case FIELD_MESSAGE_BOX_NORMAL: - if (!sub_80035AC(&gFieldMessageBoxWindow)) + if (!Text_UpdateWindow(&gFieldMessageBoxWindow)) return; break; case FIELD_MESSAGE_BOX_AUTO_SCROLL: - if (!sub_8003778(&gFieldMessageBoxWindow)) + if (!Text_UpdateWindowAutoscroll(&gFieldMessageBoxWindow)) return; break; } @@ -117,20 +117,20 @@ bool8 unref_sub_8064BD0(const u8 *message) static void PrintFieldMessage(const u8 *message) { StringExpandPlaceholders(gStringVar4, message); - sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); + Text_InitWindow8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); CreateFieldMessageBoxTask(); } static void PrintFieldMessageFromStringVar4(void) { - sub_8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); + Text_InitWindow8002EB0(&gFieldMessageBoxWindow, gStringVar4, gMenuTextTileOffset, 2, 15); CreateFieldMessageBoxTask(); } void HideFieldMessageBox(void) { DestroyFieldMessageBoxTask(); - ClearStandardMessageBox(&gFieldMessageBoxWindow); + TextWindow_EraseDialogueFrame(&gFieldMessageBoxWindow); sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } @@ -150,6 +150,6 @@ bool8 IsFieldMessageBoxHidden(void) void unref_sub_8064CA0(void) { DestroyFieldMessageBoxTask(); - DrawStandardMessageBox(&gFieldMessageBoxWindow); + TextWindow_DrawDialogueFrame(&gFieldMessageBoxWindow); sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; } diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index d80076be4..9a29e2e92 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -1507,7 +1507,7 @@ u8 Fishing4(struct Task *task) { u32 randVal; - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); task->tStep++; task->tFrameCounter = 0; task->tNumDots = 0; @@ -1549,7 +1549,7 @@ u8 Fishing5(struct Task *task) } else { - MenuPrint(dot, task->tNumDots + 4, 15); + Menu_PrintText(dot, task->tNumDots + 4, 15); task->tNumDots++; } } @@ -1573,7 +1573,7 @@ u8 Fishing6(struct Task *task) u8 Fishing7(struct Task *task) { sub_805A954(); - MenuPrint(gOtherText_OhABite, 4, 17); + Menu_PrintText(gOtherText_OhABite, 4, 17); task->tStep++; task->tFrameCounter = 0; return 0; @@ -1624,7 +1624,7 @@ u8 Fishing10(struct Task *task) { sub_805A954(); MenuPrintMessageDefaultCoords(gOtherText_PokeOnHook); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); task->tStep++; task->tFrameCounter = 0; return 0; @@ -1637,7 +1637,7 @@ u8 Fishing11(struct Task *task) if (task->tFrameCounter == 0) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -1647,7 +1647,7 @@ u8 Fishing11(struct Task *task) sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0); gSprites[gPlayerAvatar.spriteId].pos2.x = 0; gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - MenuZeroFillScreen(); + Menu_EraseScreen(); task->tFrameCounter++; return 0; } @@ -1688,7 +1688,7 @@ u8 Fishing13(struct Task *task) u8 Fishing14(struct Task *task) { sub_805A954(); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); task->tStep++; return 0; } @@ -1713,12 +1713,12 @@ u8 Fishing15(struct Task *task) u8 Fishing16(struct Task *task) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); UnfreezeMapObjects(); - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_80BE97C(0); DestroyTask(FindTaskIdByFunc(Task_Fishing)); } diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index 73e101d8f..af8e4ec8a 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -52,11 +52,11 @@ void CB2_FieldInitRegionMap(void) CreateRegionMapCursor(1, 1); SetUpWindowConfig(&gWindowConfig_81E709C); InitMenuWindow(&gWindowConfig_81E709C); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; - MenuDrawTextWindow(21, 0, 29, 3); + Menu_DrawStdWindowFrame(21, 0, 29, 3); sub_8072BD8(gOtherText_Hoenn, 0x16, 1, 0x38); - MenuDrawTextWindow(16, 16, 29, 19); + Menu_DrawStdWindowFrame(16, 16, 29, 19); sub_813F0C8(); SetMainCallback2(CB2_FieldRegionMap); SetVBlankCallback(VBlankCB_FieldRegionMap); @@ -117,7 +117,7 @@ void sub_813EFDC(void) void sub_813F0C8(void) { - MenuFillWindowRectWithBlankTile(17, 17, 28, 18); + Menu_BlankWindowRect(17, 17, 28, 18); if (ewram0_5.unk8.unk16) - MenuPrint(ewram0_5.unk8.str, 17, 17); + Menu_PrintText(ewram0_5.unk8.str, 17, 17); } diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index a472d5a9c..f123768e5 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -215,7 +215,7 @@ static void sub_80816A8(u8 taskId) data[0] = 1; break; case 1: - MenuFillWindowRectWithBlankTile(0, 0, 29, 19); + Menu_BlankWindowRect(0, 0, 29, 19); sub_808161C(data[1]); sub_8081534(data[2], data[3], 1, 160, 1, 2); data[0] = 2; @@ -264,7 +264,7 @@ static void sub_80816A8(u8 taskId) } break; case 5: - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); LoadFontDefaultPalette(&gWindowConfig_81E6CE4); REG_WIN0H = 255; REG_DISPCNT = data[6]; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index fc6f690a3..589f96844 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1058,7 +1058,7 @@ static void sub_810E874(void) ScriptContext2_Enable(); if (gUnknown_0203925A > 5) { - MenuDrawTextWindow(0, 0, 8, 11); + Menu_DrawStdWindowFrame(0, 0, 8, 11); InitMenu(0, 1, 1, 5, 0, 7); gUnknown_0203925C = 0; sub_80F944C(); @@ -1067,12 +1067,12 @@ static void sub_810E874(void) } else { - MenuDrawTextWindow(0, 0, 8, 2 * gUnknown_0203925A + 1); + Menu_DrawStdWindowFrame(0, 0, 8, 2 * gUnknown_0203925A + 1); InitMenu(0, 1, 1, gUnknown_0203925A, 0, 7); } for (i = 0; i < 5 && gUnknown_03000760[i].var0 != 16; i ++) { - MenuPrint(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1); + Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1); } DisplayCurrentElevatorFloor(); CreateTask(sub_810E984, 8); @@ -1080,7 +1080,7 @@ static void sub_810E874(void) void DisplayCurrentElevatorFloor(void) { - MenuDrawTextWindow(20, 0, 29, 5); + Menu_DrawStdWindowFrame(20, 0, 29, 5); sub_8072BD8(gOtherText_NowOn, 21, 1, 64); sub_8072BD8(gUnknown_083F8380[gSpecialVar_0x8005], 21, 3, 64); } @@ -1091,15 +1091,15 @@ void sub_810E984(u8 taskId) if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0) { gUnknown_0203925B--; - curMenuPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(-1); + curMenuPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(-1); sub_810EAC8(curMenuPos, DPAD_UP); } if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1) { gUnknown_0203925B++; - curMenuPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(+1); + curMenuPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(+1); sub_810EAC8(curMenuPos, DPAD_DOWN); } if (gMain.newKeys & A_BUTTON) @@ -1109,7 +1109,7 @@ void sub_810E984(u8 taskId) { gSpecialVar_Result = 0; PlaySE(SE_SELECT); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } else @@ -1119,7 +1119,7 @@ void sub_810E984(u8 taskId) ShakeScreenInElevator(); FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH); sub_810EEDC(); - MenuZeroFillScreen(); + Menu_EraseScreen(); DestroyTask(taskId); } } @@ -1128,7 +1128,7 @@ void sub_810E984(u8 taskId) gSpecialVar_Result = 0; PlaySE(SE_SELECT); sub_810EEDC(); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } } @@ -1163,10 +1163,10 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) if (flag) { sub_810EB90(newPos, 5); - MenuFillWindowRectWithBlankTile(2, 1, 7, 10); + Menu_BlankWindowRect(2, 1, 7, 10); for (i=0; i<5 && gUnknown_03000760[newPos].var0 != 16; newPos++, i++) { - MenuPrint(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1); + Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1); } } return flag; @@ -1227,7 +1227,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) "\tmovs r1, 0x1\n" "\tmovs r2, 0x7\n" "\tmovs r3, 0xA\n" - "\tbl MenuFillWindowRectWithBlankTile\n" + "\tbl Menu_BlankWindowRect\n" "\tmovs r5, 0\n" "\tldr r2, _0810EB88 @ =gUnknown_03000760\n" "\tlsls r1, r4, 2\n" @@ -1249,7 +1249,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) "\tlsls r2, 24\n" "\tlsrs r2, 24\n" "\tmovs r1, 0x1\n" - "\tbl MenuPrint\n" + "\tbl Menu_PrintText\n" "\tadds r0, r4, 0x1\n" "\tlsls r0, 24\n" "\tlsrs r4, r0, 24\n" @@ -1539,7 +1539,7 @@ void ShowGlassWorkshopMenu(void) { u8 i; ScriptContext2_Enable(); - MenuDrawTextWindow(0, 0, 10, 11); + Menu_DrawStdWindowFrame(0, 0, 10, 11); InitMenu(0, 1, 1, 5, 0, 9); gUnknown_0203925C = 0; sub_80F944C(); @@ -1547,7 +1547,7 @@ void ShowGlassWorkshopMenu(void) sub_810F2B4(); for (i=0; i<5; i++) { - MenuPrint(gUnknown_083F83C0[i], 1, 2 * i + 1); + Menu_PrintText(gUnknown_083F83C0[i], 1, 2 * i + 1); } gUnknown_0203925B = 0; gUnknown_0203925A = ARRAY_COUNT(gUnknown_083F83C0); @@ -1560,15 +1560,15 @@ void sub_810F118(u8 taskId) if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0) { gUnknown_0203925B--; - prevCursorPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(-1); + prevCursorPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(-1); sub_810F1F4(prevCursorPos, DPAD_UP); } if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1) { gUnknown_0203925B++; - prevCursorPos = GetMenuCursorPos(); - MoveMenuCursorNoWrap(1); + prevCursorPos = Menu_GetCursorPos(); + Menu_MoveCursorNoWrap(1); sub_810F1F4(prevCursorPos, DPAD_DOWN); } if (gMain.newKeys & A_BUTTON) @@ -1577,7 +1577,7 @@ void sub_810F118(u8 taskId) gSpecialVar_Result = gUnknown_0203925B; PlaySE(SE_SELECT); sub_810EEDC(); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } if (gMain.newKeys & B_BUTTON) @@ -1586,7 +1586,7 @@ void sub_810F118(u8 taskId) gSpecialVar_Result = 0x7f; PlaySE(SE_SELECT); sub_810EEDC(); - MenuZeroFillWindowRect(0, 0, 29, 12); + Menu_EraseWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } } @@ -1621,10 +1621,10 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) if (flag) { GlassWorkshopUpdateScrollIndicators(newPos, 5); - MenuFillWindowRectWithBlankTile(2, 1, 9, 10); + Menu_BlankWindowRect(2, 1, 9, 10); for (i=0; i<5; newPos++, i++) { - MenuPrint(gUnknown_083F83C0[newPos], 1, 2 * i + 1); + Menu_PrintText(gUnknown_083F83C0[newPos], 1, 2 * i + 1); } } return flag; @@ -1683,7 +1683,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) "\tmovs r1, 0x1\n" "\tmovs r2, 0x9\n" "\tmovs r3, 0xA\n" - "\tbl MenuFillWindowRectWithBlankTile\n" + "\tbl Menu_BlankWindowRect\n" "\tmovs r5, 0\n" "\tldr r7, _0810F28C @ =gUnknown_083F83C0\n" "_0810F25C:\n" @@ -1695,7 +1695,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) "\tlsls r2, 24\n" "\tlsrs r2, 24\n" "\tmovs r1, 0x1\n" - "\tbl MenuPrint\n" + "\tbl Menu_PrintText\n" "\tadds r0, r4, 0x1\n" "\tlsls r0, 24\n" "\tlsrs r4, r0, 24\n" diff --git a/src/field/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index a574232a8..3c64ec520 100644 --- a/src/field/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c @@ -126,7 +126,7 @@ static void sub_8133E74(u8 taskId) { return; } - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); PrintPartyMenuPromptText(3, 0); gTasks[taskId].func = HandlePartyMenuSwitchPokemonInput; } @@ -142,7 +142,7 @@ static void sub_8133EF8(void) { sub_806CCE4(); EWRAM_1B000_2.unk261 = 2; DestroySprite(&gSprites[EWRAM_1000.unk1]); - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); PrintPartyMenuPromptText(0, 0); SwitchTaskToFollowupFunc(EWRAM_1000.unk0); } diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e9b8b24d3..0db48f55d 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -1062,7 +1062,7 @@ void sub_80A4164(u8 *dest, u16 value, enum StringConvertMode mode, u8 digits) void sub_80A418C(u16 value, enum StringConvertMode mode, u8 c, u8 d, u8 digits) { sub_80A4164(gStringVar1, value, mode, digits); - MenuPrint(gStringVar1, c, d); + Menu_PrintText(gStringVar1, c, d); } static void sub_80A41D4(u8 taskId) @@ -1112,7 +1112,7 @@ static bool8 sub_80A42B0(u8 itemPos, int b) return TRUE; r5 = itemPos * 2 + 2; sub_8072C74(gStringVar1, gOtherText_CloseBag, 0x78, 0); - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); ptr = gBGTilemapBuffers[2] + 14 + r5 * 32; ptr[0] = 0x4F; ptr[1] = 0x4F; @@ -1121,9 +1121,9 @@ static bool8 sub_80A42B0(u8 itemPos, int b) if (itemPos == 7) return TRUE; if ((b == 1 && r8->unk2 != 0) || b == 2) - MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 13); + Menu_BlankWindowRect(14, r5 + 2, 29, 13); else - MenuFillWindowRectWithBlankTile(14, r5 + 2, 29, 17); + Menu_BlankWindowRect(14, r5 + 2, 29, 17); return TRUE; } return FALSE; @@ -1148,7 +1148,7 @@ static void sub_80A4380(u16 a, int b, int c, int d) text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0); *text++ = CHAR_MULT_SIGN; sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); } } @@ -1173,7 +1173,7 @@ static void sub_80A444C(u16 a, int b, int c, int d) #else sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0); #endif - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); if (gUnknown_02038558 != 0) { if (gCurrentBagPocketItemSlots[r4].itemId == gSaveBlock1.registeredItem) @@ -1240,7 +1240,7 @@ static void sub_80A4548(u16 a, int b, int c, int d) moveName = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; sub_8072C74(text, moveName, 0x78, 0); } - MenuPrint(gStringVar1, 14, sp10); + Menu_PrintText(gStringVar1, 14, sp10); } } #else @@ -1421,7 +1421,7 @@ _080A46AE:\n\ ldr r0, _080A46F8 @ =gStringVar1\n\ movs r1, 0xE\n\ ldr r2, [sp, 0x10]\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, r8\n\ adds r0, 0x1\n\ lsls r0, 24\n\ @@ -1482,7 +1482,7 @@ static void sub_80A46FC(u16 a, int b, int c, int d) text = sub_80A425C(a, text, i); CopyItemName(gCurrentBagPocketItemSlots[r4].itemId, gStringVar2); sub_80A41E0(text, gCurrentBagPocketItemSlots[r4].itemId - 0x84, gStringVar2, gCurrentBagPocketItemSlots[r4].quantity, 3); - MenuPrint(gStringVar1, 14, r5); + Menu_PrintText(gStringVar1, 14, r5); } } @@ -1540,7 +1540,7 @@ static void ItemListMenu_InitDescription(s16 itemId) } if (r5 < 3) - MenuZeroFillWindowRect(0, 13 + r5 * 2, 13, 20); + Menu_EraseWindowRect(0, 13 + r5 * 2, 13, 20); } static void ItemListMenu_ChangeDescription(s16 itemId, int b) @@ -1551,7 +1551,7 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) { if (b == 0) { - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); } else if (b == 1) @@ -1562,7 +1562,7 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) else { if (b == 0) - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); if (ItemId_CopyDescription(description, itemId, b)) MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); } @@ -1602,7 +1602,7 @@ static void sub_80A4A98(const u8 *text, u32 line) u8 buffer[100]; if (line == 0) - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); if (CopyTextLine(buffer, text, line)) MenuPrint_PixelCoords(buffer, 4, 104 + line * 16, 0); } @@ -1618,7 +1618,7 @@ static void sub_80A4ADC(u8 taskId) static void sub_80A4B14(s8 a, u8 b) { gBagPocketScrollStates[sCurrentBagPocket].scrollTop += a; - MoveMenuCursor(0); + Menu_MoveCursor(0); sub_80A73C0(); sub_80A763C(); sub_80A4ADC(b); @@ -1626,7 +1626,7 @@ static void sub_80A4B14(s8 a, u8 b) static void sub_80A4B58(s8 delta, u8 b) { - gBagPocketScrollStates[sCurrentBagPocket].cursorPos = MoveMenuCursor(delta); + gBagPocketScrollStates[sCurrentBagPocket].cursorPos = Menu_MoveCursor(delta); sub_80A73C0(); sub_80A4ADC(b); } @@ -1649,7 +1649,7 @@ static void sub_80A4BF0(u16 *a) if (gUnknown_02038564 == 4) { - MenuDrawTextWindow(0, 7, 13, 12); + Menu_DrawStdWindowFrame(0, 7, 13, 12); sub_80A4008(a, 1, 8, 12, 4); if (sub_80F9344() == TRUE && sReturnLocation == RETURN_TO_FIELD_5) { @@ -1665,7 +1665,7 @@ static void sub_80A4BF0(u16 *a) text = sub_80A4B90(gSpecialVar_ItemId); else text = sItemPopupMenuActions[sPopupMenuActionList[i]].text; - MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); + Menu_PrintText(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); } } if (sReturnLocation == RETURN_TO_FIELD_5) @@ -1676,10 +1676,10 @@ static void sub_80A4BF0(u16 *a) } else { - MenuDrawTextWindow(0, 5, 13, 12); + Menu_DrawStdWindowFrame(0, 5, 13, 12); sub_80A4008(a, 1, 6, 12, 6); for (i = 0; i < gUnknown_02038564; i++) - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[i]].text, 1 + (i / 3) * 6, 6 + (i % 3) * 2); InitMenu(0, 1, 6, gUnknown_02038564, 0, 1); sub_8072DCC(0x2F); } @@ -1690,7 +1690,7 @@ static void sub_80A4DA4(u16 *a) { sub_80A73FC(); sub_80A36B8(a, 0, 6, 13, 6); - MenuZeroFillWindowRect(0, 5, 13, 12); + Menu_EraseWindowRect(0, 5, 13, 12); sub_80A7590(); } @@ -1699,7 +1699,7 @@ static void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 digits) gTasks[taskId].data[1] = 1; gTasks[taskId].data[2] = b + 2; gTasks[taskId].data[3] = c + 1; - MenuDrawTextWindow(b, c, b + d, c + e); + Menu_DrawStdWindowFrame(b, c, b + d, c + e); sub_80A4008(gBGTilemapBuffers[1], b + 1, c + 1, d - 1, e - 1); sub_80A418C(1, 1, b + 2, c + 1, digits); } @@ -2539,7 +2539,7 @@ static void sub_80A57C4(void) r5 = 7; } sub_80A4008(gBGTilemapBuffers[1], 7, r5 + 1, 6, gUnknown_02038564 * 2); - MenuDrawTextWindow(6, r5, 13, gUnknown_02038564 * 2 + 1 + r5); + Menu_DrawStdWindowFrame(6, r5, 13, gUnknown_02038564 * 2 + 1 + r5); sub_80A7834(0, r5); InitMenu(0, 7, r5 + 1, gUnknown_02038564, 0, 6); } @@ -2553,7 +2553,7 @@ static void sub_80A5888(u8 taskId) if (sPopupMenuSelection != 0) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(-1); + sPopupMenuSelection = Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) @@ -2561,7 +2561,7 @@ static void sub_80A5888(u8 taskId) if (sPopupMenuSelection != gUnknown_02038564 - 1) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(1); + sPopupMenuSelection = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -2690,14 +2690,14 @@ static void sub_80A5C24(u8 taskId) void CleanUpItemMenuMessage(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - MenuZeroFillWindowRect(7, 7, 13, 12); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(7, 7, 13, 12); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A5C24; } void CleanUpOverworldMessage(u8 taskId) { - MenuZeroFillWindowRect(0, 13, 29, 19); + Menu_EraseWindowRect(0, 13, 29, 19); DestroyTask(taskId); sub_8064E2C(); ScriptContext2_Disable(); @@ -2760,7 +2760,7 @@ static void sub_80A5DA0(u16 itemId, u16 quantity) static void sub_80A5DF8(void) { sub_80A4DA4(gBGTilemapBuffers[1]); - MenuZeroFillWindowRect(7, 6, 11, 13); + Menu_EraseWindowRect(7, 6, 11, 13); sub_80A7528(4); } @@ -2857,7 +2857,7 @@ static void sub_80A6024(u8 taskId) if (gMain.newKeys & A_BUTTON) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A6000; } } @@ -3008,7 +3008,7 @@ static void sub_80A640C(u8 taskId) static void sub_80A6444(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A640C; } @@ -3016,7 +3016,7 @@ static void sub_80A648C(u8 taskId) { gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; sub_80A4008(gBGTilemapBuffers[1], 1, 11, 12, 2); - MenuDrawTextWindow(0, 10, 13, 13); + Menu_DrawStdWindowFrame(0, 10, 13, 13); gTasks[taskId].data[1] = 1; gTasks[taskId].data[2] = 1; gTasks[taskId].data[3] = 11; @@ -3053,7 +3053,7 @@ static void sub_80A6574(u8 taskId) static void sub_80A65AC(u8 taskId) { - MenuZeroFillWindowRect(7, 6, 13, 12); + Menu_EraseWindowRect(7, 6, 13, 12); sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem); @@ -3063,7 +3063,7 @@ static void sub_80A65AC(u8 taskId) static void sub_80A6618(u8 taskId) { - MenuZeroFillWindowRect(7, 6, 13, 12); + Menu_EraseWindowRect(7, 6, 13, 12); sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); BuyMenuPrintItemQuantityAndPrice(taskId); } @@ -3078,13 +3078,13 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) { if (sub_80A5350(taskId) == TRUE) { - MenuZeroFillWindowRect(6, 11, 12, 11); + Menu_EraseWindowRect(6, 11, 12, 11); BuyMenuDisplayMessage(gSpecialVar_ItemId, gTasks[taskId].data[1]); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(0, 10, 13, 13); + Menu_EraseWindowRect(0, 10, 13, 13); sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3); ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gSpecialVar_ItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gOtherText_CanPay); @@ -3110,8 +3110,8 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) { sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31); CloseMoneyWindow(0, 0); - MenuZeroFillWindowRect(0, 4, 13, 13); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 4, 13, 13); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_80A6760; } @@ -3229,7 +3229,7 @@ static void sub_80A6A84(u8 taskId) sub_80A4DA4(gBGTilemapBuffers[1]); CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, taskData[1], STR_CONV_MODE_LEFT_ALIGN, 3); - MenuZeroFillWindowRect(7, 6, 11, 13); + Menu_EraseWindowRect(7, 6, 11, 13); sub_80A7528(7); sub_80A3D5C(taskId); gTasks[taskId].func = sub_80A5E1C; @@ -3361,16 +3361,16 @@ static void sub_80A6DF0(u16 *a) { u8 r6 = (gUnknown_02038564 - 1) * 2; - MenuDrawTextWindow(7, 9 - r6, 13, 12); + Menu_DrawStdWindowFrame(7, 9 - r6, 13, 12); sub_80A4008(a, 8, 10 - r6, 5, r6 + 2); if (gUnknown_02038564 == 1) { - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 10); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 10); } else { - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 8); - MenuPrint(sItemPopupMenuActions[sPopupMenuActionList[1]].text, 8, 10); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[0]].text, 8, 8); + Menu_PrintText(sItemPopupMenuActions[sPopupMenuActionList[1]].text, 8, 10); } InitMenu(0, 8, 10 - r6, gUnknown_02038564, 0, 5); sub_80A7528(2); @@ -3383,7 +3383,7 @@ static void sub_80A6EB8(u8 taskId) if (sPopupMenuSelection == 1) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(-1); + sPopupMenuSelection = Menu_MoveCursor(-1); } } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) @@ -3391,7 +3391,7 @@ static void sub_80A6EB8(u8 taskId) if (sPopupMenuSelection + 1 < gUnknown_02038564) { PlaySE(SE_SELECT); - sPopupMenuSelection = MoveMenuCursor(1); + sPopupMenuSelection = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -3669,7 +3669,7 @@ static void sub_80A756C(void) static void sub_80A7590(void) { - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); sub_80A756C(); } @@ -3748,7 +3748,7 @@ static void sub_80A7694(void) static void sub_80A76A0(void) { - MenuZeroFillWindowRect(14, 2, 29, 18); + Menu_EraseWindowRect(14, 2, 29, 18); sub_80A7678(); } @@ -3816,7 +3816,7 @@ static void sub_80A7768(void) const u8 *text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; int var = r4->unk1 - 1; - MenuPrint(text, 7, var * 2 + 1 + r4->unk3); + Menu_PrintText(text, 7, var * 2 + 1 + r4->unk3); } else { @@ -3828,7 +3828,7 @@ static void sub_80A7768(void) else text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; var = r4->unk1 - 1; - MenuPrint(text, (var >> 1) * 6 + 1, (var & 1) * 2 + 8); + Menu_PrintText(text, (var >> 1) * 6 + 1, (var & 1) * 2 + 8); } if (r4->unk1 == gUnknown_02038564) { diff --git a/src/field/item_use.c b/src/field/item_use.c index e1fdddce0..bd76db77e 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -123,7 +123,7 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) switch (playerMenuStatus) { case 0: // Item Menu - MenuZeroFillWindowRect(0, 13, 13, 20); + Menu_EraseWindowRect(0, 13, 13, 20); DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); break; default: // Field @@ -312,7 +312,7 @@ void RunItemfinderResults(u8 taskId) void ExitItemfinder(u8 taskId) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); sub_8064E2C(); ScriptContext2_Disable(); DestroyTask(taskId); @@ -744,7 +744,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId) if (!gTasks[taskId].data[2]) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); } else @@ -770,7 +770,7 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) { if (gTasks[taskId].data[2] == 0) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BB8, 1); } else @@ -875,7 +875,7 @@ void ItemUseOutOfBattle_RareCandy(u8 taskId) void ItemUseOutOfBattle_TMHM(u8 taskId) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if (gSpecialVar_ItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM @@ -1022,7 +1022,7 @@ void ItemUseInBattle_PokeBall(u8 var) } else { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); DisplayItemMessageOnField(var, gOtherText_BoxIsFull, CleanUpItemMenuMessage, 1); } } @@ -1047,7 +1047,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) { u16 partyId = gBattlePartyID[gBankInMenu]; - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE) { @@ -1096,7 +1096,7 @@ void ItemUseInBattle_PPRecovery(u8 var) void unref_sub_80CA448(u8 var) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if (ExecuteTableBasedItemEffect__(0, gSpecialVar_ItemId, 0) == FALSE) { @@ -1113,7 +1113,7 @@ void unref_sub_80CA448(u8 var) void ItemUseInBattle_Escape(u8 taskId) { - MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); + Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); if((gBattleTypeFlags & BATTLE_TYPE_TRAINER) == FALSE) { diff --git a/src/field/map_name_popup.c b/src/field/map_name_popup.c index 2e2dfc72e..49a470cc1 100644 --- a/src/field/map_name_popup.c +++ b/src/field/map_name_popup.c @@ -89,8 +89,8 @@ void HideMapNamePopup(void) { if (FuncIsActiveTask(Task_MapNamePopup)) { - MenuLoadTextWindowGraphics(); - MenuZeroFillWindowRect(0, 0, 13, 3); + Menu_LoadStdFrameGraphics(); + Menu_EraseWindowRect(0, 0, 13, 3); REG_BG0VOFS = 0; DestroyTask(sTaskId); } @@ -100,8 +100,8 @@ void DrawMapNamePopup(void) { u8 name[20]; - MenuLoadTextWindowGraphics_OverrideFrameType(0); + Menu_LoadStdFrameGraphicsOverrideStyle(0); GetMapSectionName(name, gMapHeader.regionMapSectionId, 0); - MenuDrawTextWindow(0, 0, 13, 3); + Menu_DrawStdWindowFrame(0, 0, 13, 3); sub_8072BD8(name, 1, 1, 0x60); } diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 4db513f65..82c6dffe3 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -345,7 +345,7 @@ void PrepareSongText(void) void ScrSpecial_PlayBardSong(void) { StartBardSong(gSpecialVar_0x8004); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); ScriptContext1_Stop(); } @@ -858,8 +858,8 @@ static void Task_BardSong(u8 taskId) { case 0: // Initialize song PrepareSongText(); - InitWindowFromConfig(gMenuWindowPtr, &gWindowConfig_81E6CE4); - sub_8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); + Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowConfig_81E6CE4); + Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); task->data[1] = 0; task->data[2] = 0; task->tCharIndex = 0; @@ -921,7 +921,7 @@ static void Task_BardSong(u8 taskId) } else if (gStringVar4[task->tCharIndex] == CHAR_SPACE) { - sub_8003418(gMenuWindowPtr); + Text_PrintWindowSimple(gMenuWindowPtr); task->tCharIndex++; task->tState = 2; task->data[2] = 0; @@ -941,7 +941,7 @@ static void Task_BardSong(u8 taskId) else if (gStringVar4[task->tCharIndex] == CHAR_SONG_WORD_SEPARATOR) { gStringVar4[task->tCharIndex] = CHAR_SPACE; // restore it back to a space - sub_8003418(gMenuWindowPtr); + Text_PrintWindowSimple(gMenuWindowPtr); task->tCharIndex++; task->data[2] = 0; } @@ -950,7 +950,7 @@ static void Task_BardSong(u8 taskId) switch (task->data[1]) { case 0: - sub_8003418(gMenuWindowPtr); + Text_PrintWindowSimple(gMenuWindowPtr); task->data[1]++; break; case 1: @@ -1219,7 +1219,7 @@ static void PrintStoryList(void) { s32 i; - MenuDrawTextWindow(0, 0, 25, 4 + GetFreeStorySlot() * 2); + Menu_DrawStdWindowFrame(0, 0, 25, 4 + GetFreeStorySlot() * 2); for (i = 0; i < 4; i++) { struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller; @@ -1227,9 +1227,9 @@ static void PrintStoryList(void) if (stat == 0) break; - MenuPrint(GetStoryTitleByStat(stat), 1, 2 + i * 2); + Menu_PrintText(GetStoryTitleByStat(stat), 1, 2 + i * 2); } - MenuPrint(gPCText_Cancel, 1, 2 + i * 2); + Menu_PrintText(gPCText_Cancel, 1, 2 + i * 2); } static u8 gUnknown_03000748; @@ -1247,7 +1247,7 @@ static void Task_StoryListMenu(u8 taskId) task->data[0]++; break; case 1: - selection = ProcessMenuInput(); + selection = Menu_ProcessInput(); if (selection == -2) break; if (selection == -1 || selection == GetFreeStorySlot()) @@ -1260,7 +1260,7 @@ static void Task_StoryListMenu(u8 taskId) gUnknown_03000748 = selection; } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 25, 12); + Menu_EraseWindowRect(0, 0, 25, 12); DestroyTask(taskId); EnableBothScriptContexts(); break; diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index e3ef0c790..44b24eed6 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -135,7 +135,7 @@ void sub_80F9020(void) // display message box, fill box with tile if tile is not zero, print string static void PrintMessage(const u8 *str, u16 tile) { - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); if (tile) { sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile); @@ -145,7 +145,7 @@ static void PrintMessage(const u8 *str, u16 tile) static void sub_80F9090(u8 taskId) { - if (MenuUpdateWindowText() == TRUE) + if (Menu_UpdateWindowText() == TRUE) { gUnknown_0300074C(taskId); } @@ -196,7 +196,7 @@ static void PrintStringWithPalette(const u8 *str, u8 paletteNum, u8 left, u8 top StringCopy(gStringVar4, str); } - MenuPrint(gStringVar4, left, top); + Menu_PrintText(gStringVar4, left, top); } // unused @@ -209,7 +209,7 @@ void PrintNumberWithPalette(s32 value, u8 paletteNum, u8 n, u8 mode, u8 left, u8 } else { - MenuPrint(gStringVar1, left, top); + Menu_PrintText(gStringVar1, left, top); } } diff --git a/src/field/money.c b/src/field/money.c index d0f0ab1f6..4ab4de51c 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -143,7 +143,7 @@ void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) if (stringWidth >= (size + 1) * 8) { - MenuPrint(buffer, x, y); + Menu_PrintText(buffer, x, y); } else { @@ -275,7 +275,7 @@ void UpdateMoneyWindow(u32 amount, u8 x, u8 y) void OpenMoneyWindow(u32 amount, u8 x, u8 y) { - MenuDrawTextWindow(x, y, x + 13, y + 3); + Menu_DrawStdWindowFrame(x, y, x + 13, y + 3); UpdateMoneyWindow(amount, x, y); LoadCompressedObjectPic(gUnknown_083CF584); @@ -288,7 +288,7 @@ void CloseMoneyWindow(u8 x, u8 y) { DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]); FreeSpritePaletteByTag(SPRITE_TAG_MONEY); - MenuZeroFillWindowRect(x, y, x + 13, y + 3); + Menu_EraseWindowRect(x, y, x + 13, y + 3); } bool8 HasEnoughMoneyFor(void) diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 790aede60..f589494f4 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -683,7 +683,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 8: - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C90); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C90); MultistepInitWindowTileData(&gUnknown_03004210, 1); gMain.state++; break; @@ -2676,26 +2676,26 @@ void PrintPartyMenuPromptText(u8 textId, u8 b) switch (b) { case 0: - MenuDrawTextWindow(0, 16, 23, 19); + Menu_DrawStdWindowFrame(0, 16, 23, 19); break; case 1: - MenuDrawTextWindow(0, 16, 19, 19); + Menu_DrawStdWindowFrame(0, 16, 19, 19); break; case 2: - MenuDrawTextWindow(0, 16, 22, 19); + Menu_DrawStdWindowFrame(0, 16, 22, 19); break; case 3: - MenuDrawTextWindow(0, 16, 18, 19); + Menu_DrawStdWindowFrame(0, 16, 18, 19); break; } - MenuPrint(PartyMenuPromptTexts[textId], 1, 17); + Menu_PrintText(PartyMenuPromptTexts[textId], 1, 17); } } void sub_806D5A4(void) { - MenuZeroFillWindowRect(0, 16, 29, 19); + Menu_EraseWindowRect(0, 16, 29, 19); } void sub_806D5B8(u8 monIndex) @@ -3313,7 +3313,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) { u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); + sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } @@ -3423,7 +3423,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } @@ -3517,7 +3517,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } @@ -3667,7 +3667,7 @@ void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu) SetPartyPopupMenuOffsets(index, &left, &top, menu); - MenuZeroFillWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); + Menu_EraseWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); HandleDestroyMenuCursors(); } @@ -3683,7 +3683,7 @@ u8 sub_806E834(const u8 *message, u8 arg1) gUnknown_0202E8F6 = 1; - MenuDrawTextWindow(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_DrawStdWindowFrame(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); MenuPrintMessage(message, WINDOW_LEFT + 1, 15); taskId = CreateTask(sub_806E884, 1); @@ -3694,11 +3694,11 @@ u8 sub_806E834(const u8 *message, u8 arg1) static void sub_806E884(u8 taskId) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gUnknown_0202E8F6 = 0; if (gTasks[taskId].data[0] == 0) - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); DestroyTask(taskId); } } @@ -3794,7 +3794,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) { u16 currentItem; - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); RemoveBagItem(ewram1C000.unk6, 1); if (AddBagItem(currentItem, 1) == TRUE) @@ -3823,7 +3823,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); } gTasks[taskId].func = party_menu_link_mon_held_item_object; } @@ -3938,7 +3938,7 @@ void Task_LoseMailMessage(u8 taskId) { sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); } - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); gTasks[taskId].func = party_menu_link_mon_held_item_object; } else @@ -3947,8 +3947,8 @@ void Task_LoseMailMessage(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = party_menu_link_mon_held_item_object; } } @@ -3968,7 +3968,7 @@ void Task_TakeHeldMail(u8 taskId) if (selection == 0) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF) sub_806E834(gOtherText_MailWasSent, 0); else @@ -3981,7 +3981,7 @@ void Task_TakeHeldMail(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); sub_806E834(gOtherText_MailRemovedMessageLost, 1); gTasks[taskId].func = Task_ConfirmLoseMailMessage; } @@ -4130,7 +4130,7 @@ void sub_806F390(u8 taskId) if (selection == 0) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); sub_806E834(gOtherText_WhichMoveToForget2, 1); gTasks[taskId].func = sub_806F44C; } @@ -4206,7 +4206,7 @@ void StopTryingToTeachMove_806F588(u8 taskId) void StopTryingToTeachMove_806F614(u8 taskId) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); sub_806E834(gStringVar4, 1); @@ -4228,7 +4228,7 @@ void StopTryingToTeachMove_806F6B4(u8 taskId) if (selection == 0) { - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); GetMonNickname(ewram1C000.pokemon, gStringVar1); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2); @@ -4241,7 +4241,7 @@ void StopTryingToTeachMove_806F6B4(u8 taskId) return; if (selection == -1) PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(23, 8, 29, 13); GetMonNickname(ewram1C000.pokemon, gStringVar1); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); @@ -4592,7 +4592,7 @@ void sub_8070088(u8 taskId) else { gUnknown_0202E8F4 = 1; - MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); + Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19); PlaySE(SE_KAIFUKU); PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9); @@ -4649,12 +4649,12 @@ void CreateItemUseMoveMenu(u8 partyMonIndex) u8 i; r6 = 0; - MenuDrawTextWindow(19, 10, 29, 19); + Menu_DrawStdWindowFrame(19, 10, 29, 19); for (i = 0; i < 4; i++) { u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i); - MenuPrint(gMoveNames[move], 20, i * 2 + 11); + Menu_PrintText(gMoveNames[move], 20, i * 2 + 11); if (move != 0) r6++; } @@ -4666,12 +4666,12 @@ void Task_HandleItemUseMoveMenuInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { @@ -4714,16 +4714,16 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c) void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 10, 29, 19); + Menu_EraseWindowRect(19, 10, 29, 19); sub_806D5A4(); - gTasks[taskId].data[11] = GetMenuCursorPos(); + gTasks[taskId].data[11] = Menu_GetCursorPos(); DoRecoverPP(taskId); } void ItemUseMoveMenu_HandleCancel(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 10, 29, 19); + Menu_EraseWindowRect(19, 10, 29, 19); if (gMain.inBattle) gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu; else @@ -4852,7 +4852,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) { u8 i; - MenuDrawTextWindow(11, 0, 29, 7); + Menu_DrawStdWindowFrame(11, 0, 29, 7); for (i = 0; i < NUM_STATS; i++) { @@ -4897,7 +4897,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) { movs r1, 0\n\ movs r2, 0x1D\n\ movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ movs r7, 0\n\ ldr r0, _0807092C @ =gStringVar1\n\ mov r10, r0\n\ @@ -4981,7 +4981,7 @@ _0807086C:\n\ mov r0, r10\n\ adds r1, r4, 0\n\ adds r2, r5, 0\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ adds r0, r7, 0x1\n\ lsls r0, 24\n\ lsrs r7, r0, 24\n\ @@ -5070,7 +5070,7 @@ void Task_RareCandy3(u8 taskId) u16 learnedMove; u16 evolutionSpecies; - MenuZeroFillWindowRect(11, 0, 29, 7); + Menu_EraseWindowRect(11, 0, 29, 7); learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, TRUE); ewram1B000.unk282 = 1; diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 928cb9689..7cbb20bad 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -217,7 +217,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { - MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); + Menu_DrawStdWindowFrame(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); TASK.FUNC = PlayerPCProcessMenuInput; @@ -228,18 +228,18 @@ static void PlayerPCProcessMenuInput(u8 taskId) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - sPlayerPCMenuActions[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); + sPlayerPCMenuActions[gPcItemMenuOptionOrder[Menu_GetCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -262,7 +262,7 @@ static void PlayerPC_ItemStorage(u8 taskId) static void PlayerPC_Mailbox(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 10, 9); + Menu_EraseWindowRect(0, 0, 10, 9); eMailboxInfo.count = GetMailboxMailCount(); if (eMailboxInfo.count == 0) @@ -280,7 +280,7 @@ static void PlayerPC_Mailbox(u8 taskId) static void PlayerPC_Decoration(u8 var) { - MenuZeroFillWindowRect(0, 0, 10, 9); + Menu_EraseWindowRect(0, 0, 10, 9); DoPlayerPCDecoration(var); } @@ -288,7 +288,7 @@ static void PlayerPC_TurnOff(u8 taskId) { if (gPcItemMenuOptionsNum == 4) // if the option count is 4, we are at the bedroom PC and not player PC, so do gender specific handling. { - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); if (gSaveBlock2.playerGender == MALE) ScriptContext1_SetupScript(gBrendanHouse_TurnPCOff); @@ -297,7 +297,7 @@ static void PlayerPC_TurnOff(u8 taskId) } else { - MenuZeroFillWindowRect(0, 0, 10, 9); + Menu_EraseWindowRect(0, 0, 10, 9); EnableBothScriptContexts(); } DestroyTask(taskId); @@ -305,8 +305,8 @@ static void PlayerPC_TurnOff(u8 taskId) static void InitItemStorageMenu(u8 var) { - MenuZeroFillWindowRect(0, 0, 10, 9); - MenuDrawTextWindow(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 10, 9); + Menu_DrawStdWindowFrame(0, 0, 11, 9); PrintMenuItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); ItemStorageMenuPrint(gPCText_OptionDescList[var]); @@ -314,8 +314,8 @@ static void InitItemStorageMenu(u8 var) static void ItemStorageMenuPrint(const u8 *textPtr) { - MenuFillWindowRectWithBlankTile(2, 15, 27, 18); - MenuPrint(textPtr, 2, 15); + Menu_BlankWindowRect(2, 15, 27, 18); + Menu_PrintText(textPtr, 2, 15); } static void ItemStorageMenuProcessInput(u8 var) @@ -323,19 +323,19 @@ static void ItemStorageMenuProcessInput(u8 var) if (gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); + Menu_MoveCursor(-1); + ItemStorageMenuPrint(gPCText_OptionDescList[Menu_GetCursorPos()]); } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); - ItemStorageMenuPrint(gPCText_OptionDescList[GetMenuCursorPos()]); + Menu_MoveCursor(1); + ItemStorageMenuPrint(gPCText_OptionDescList[Menu_GetCursorPos()]); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gPCText_ItemPCOptionsText[GetMenuCursorPos()].func(var); + gPCText_ItemPCOptionsText[Menu_GetCursorPos()].func(var); } else if (gMain.newKeys & B_BUTTON) { @@ -368,7 +368,7 @@ static void ItemStorage_HandleReturnToProcessInput(u8 taskId) void ItemStorage_ReturnToMenuAfterDeposit(void) { - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); InitItemStorageMenu(ITEMPC_MENU_DEPOSIT); CreateTask(ItemStorage_HandleReturnToProcessInput, 0); pal_fill_black(); @@ -379,12 +379,12 @@ static void ItemStorage_Withdraw(u8 taskId) s16 *data = TASK.data; HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); if (NUM_ITEMS != 0) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_WITHDRAW; PAGE_INDEX = 0; ITEMS_ABOVE_TOP = 0; @@ -401,12 +401,12 @@ static void ItemStorage_Toss(u8 taskId) s16 *data = TASK.data; HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); if (NUM_ITEMS) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_TOSS; PAGE_INDEX = 0; ITEMS_ABOVE_TOP = 0; @@ -421,7 +421,7 @@ static void ItemStorage_Toss(u8 taskId) static void ItemStorage_Exit(u8 var) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 9); + Menu_EraseWindowRect(0, 0, 11, 9); ReshowPlayerPC(var); } @@ -450,7 +450,7 @@ static void ItemStorage_ProcessInput(u8 taskId) if(PAGE_INDEX != 0) // did the cursor move physically upwards? { PlaySE(SE_SELECT); - PAGE_INDEX = MoveMenuCursor(-1); + PAGE_INDEX = Menu_MoveCursor(-1); trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; if (SWITCH_MODE_ACTIVE == FALSE) // are we not currently switching items? { @@ -474,7 +474,7 @@ static void ItemStorage_ProcessInput(u8 taskId) ItemStorage_DrawBothListAndDescription(taskId); if (SWITCH_MODE_ACTIVE != FALSE) - MoveMenuCursor(0); // don't move the cursor. it's at the top of the page index, but not the true index. + Menu_MoveCursor(0); // don't move the cursor. it's at the top of the page index, but not the true index. } } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _0813A306 @@ -482,7 +482,7 @@ static void ItemStorage_ProcessInput(u8 taskId) if(PAGE_INDEX != NUM_PAGE_ITEMS - 1) { PlaySE(SE_SELECT); - PAGE_INDEX = MoveMenuCursor(1); + PAGE_INDEX = Menu_MoveCursor(1); trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; if(SWITCH_MODE_ACTIVE != FALSE) @@ -500,7 +500,7 @@ static void ItemStorage_ProcessInput(u8 taskId) ItemStorage_DrawBothListAndDescription(taskId); if (SWITCH_MODE_ACTIVE != FALSE) - MoveMenuCursor(0); + Menu_MoveCursor(0); } } else if(gMain.newKeys & SELECT_BUTTON) // _0813A3A0 @@ -565,8 +565,8 @@ static void ItemStorage_GoBackToPlayerPCMenu(u8 taskId) BuyMenuFreeMemory(); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); - MenuZeroFillWindowRect(0, 0, 29, 19); - MenuDisplayMessageBox(); + Menu_EraseWindowRect(0, 0, 29, 19); + Menu_DisplayDialogueFrame(); InitItemStorageMenu(TASK.CURRENT_ITEM_STORAGE_MENU); TASK.FUNC = ItemStorageMenuProcessInput; } @@ -603,7 +603,7 @@ static void ItemStorage_DoItemAction(u8 taskId) ItemStorage_PrintItemPcResponse(ITEMPC_HOW_MANY_TO_TOSS); } NUM_QUANTITY_ROLLER = 1; - MenuDrawTextWindow(6, 8, 13, 11); + Menu_DrawStdWindowFrame(6, 8, 13, 11); sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); TASK.FUNC = ItemStorage_HandleQuantityRolling; } @@ -652,7 +652,7 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId) else if(gMain.newKeys & A_BUTTON) // confirm quantity. { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(6, 6, 0xD, 0xB); + Menu_EraseWindowRect(6, 6, 0xD, 0xB); if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) ItemStorage_DoItemWithdraw(taskId); @@ -662,7 +662,7 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId) else if(gMain.newKeys & B_BUTTON) // cancel quantity. { PlaySE(SE_SELECT); - MenuZeroFillWindowRect(6, 6, 0xD, 0xB); + Menu_EraseWindowRect(6, 6, 0xD, 0xB); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? @@ -713,7 +713,7 @@ static void ItemStorage_DoItemToss(u8 taskId) static void ItemStorage_ResumeInputFromYesToss(u8 taskId) { - MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); ItemStorage_PrintItemPcResponse(ITEMPC_THREW_AWAY_ITEM); TASK.FUNC = ItemStorage_HandleRemoveItem; } @@ -722,7 +722,7 @@ static void ItemStorage_ResumeInputFromNoToss(u8 taskId) { s16 *data = TASK.data; - MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); @@ -765,7 +765,7 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) static void ItemStorage_HandleResumeProcessInput(u8 taskId) { - MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); ItemStorage_DrawBothListAndDescription(taskId); @@ -817,14 +817,14 @@ static void ItemStorage_DrawItemQuantity(u16 arg1, enum StringConvertMode arg2, sub_80A4164(gStringVar1, arg1, arg2, arg4); if(isSwapSelected != FALSE) - MenuPrint(gSelectedItemQuantityFormatText, 0x1A, arg3); + Menu_PrintText(gSelectedItemQuantityFormatText, 0x1A, arg3); else - MenuPrint(gNonSelectedItemQuantityFormatText, 0x1A, arg3); + Menu_PrintText(gNonSelectedItemQuantityFormatText, 0x1A, arg3); } static void ItemStorage_DrawItemVoidQuantity(u8 var) { - MenuPrint(gUnknown_08406330, 0x19, var); + Menu_PrintText(gUnknown_08406330, 0x19, var); } static void ItemStorage_DrawItemName(struct ItemSlot *itemSlot, u8 var, int isSwapSelected) @@ -832,9 +832,9 @@ static void ItemStorage_DrawItemName(struct ItemSlot *itemSlot, u8 var, int isSw CopyItemName(itemSlot->itemId, gStringVar1); if(isSwapSelected != FALSE) - MenuPrint(gSelectedItemFormattedText, 16, var); + Menu_PrintText(gSelectedItemFormattedText, 16, var); else - MenuPrint(gNonSelectedItemFormattedText, 16, var); + Menu_PrintText(gNonSelectedItemFormattedText, 16, var); } static void ItemStorage_DrawNormalItemEntry(struct ItemSlot *itemSlot, u8 var, int var2) @@ -900,7 +900,7 @@ static void ItemStorage_DrawItemList(u8 taskId) } if (i - ITEMS_ABOVE_TOP < 8) - MenuFillWindowRectWithBlankTile(16, yCoord + 4, 0x1C, 0x12); + Menu_BlankWindowRect(16, yCoord + 4, 0x1C, 0x12); if (ITEMS_ABOVE_TOP != 0) CreateVerticalScrollIndicators(0, 0xB8, 8); @@ -977,11 +977,11 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) sub_80F944C(); LoadScrollIndicatorPalette(); ItemStorage_LoadPalette(); - MenuDrawTextWindow(0xF, 0, 0x1D, 0x13); - MenuDrawTextWindow(0, 0xC, 0xE, 0x13); - MenuDrawTextWindow(0, 0, 0xB, 3); + Menu_DrawStdWindowFrame(0xF, 0, 0x1D, 0x13); + Menu_DrawStdWindowFrame(0, 0xC, 0xE, 0x13); + Menu_DrawStdWindowFrame(0, 0, 0xB, 3); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[0].itemId); - MenuPrint(gPCText_ItemPCOptionsText[var].text, 1, 1); + Menu_PrintText(gPCText_ItemPCOptionsText[var].text, 1, 1); ItemStorage_DrawItemList(taskId); InitMenu(0, 0x10, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } @@ -1037,22 +1037,22 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused for (i = eMailboxInfo.itemsAbove; i < eMailboxInfo.itemsAbove + eMailboxInfo.pageItems; i++) { yCoord = (i - eMailboxInfo.itemsAbove) * 2; - MenuFillWindowRectWithBlankTile(0x15, yCoord + 2, 0x1C, yCoord + 3); + Menu_BlankWindowRect(0x15, yCoord + 2, 0x1C, yCoord + 3); if (i == eMailboxInfo.count) { - MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); + Menu_PrintText(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); break; } else { StringCopy(gStringVar1, gSaveBlock1.mail[i + 6].playerName); SanitizeNameString(gStringVar1); - MenuPrint(gStringVar1, 0x15, yCoord + 2); + Menu_PrintText(gStringVar1, 0x15, yCoord + 2); } } if (i - eMailboxInfo.itemsAbove != 8) - MenuFillWindowRectWithBlankTile(0x15, yCoord + 4, 0x1C, 0x12); + Menu_BlankWindowRect(0x15, yCoord + 4, 0x1C, 0x12); if (eMailboxInfo.itemsAbove != 0) CreateVerticalScrollIndicators(0, 0xC8, 8); @@ -1069,10 +1069,10 @@ static void Mailbox_DrawMailboxMenu(u8 taskId) { sub_80F944C(); LoadScrollIndicatorPalette(); - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - MenuDrawTextWindow(0, 0, 0x8, 0x3); - MenuPrint(gPCText_Mailbox, 1, 1); - MenuDrawTextWindow(0x14, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); + Menu_DrawStdWindowFrame(0, 0, 0x8, 0x3); + Menu_PrintText(gPCText_Mailbox, 1, 1); + Menu_DrawStdWindowFrame(0x14, 0, 0x1D, 0x13); Mailbox_DrawMailList(taskId); InitMenu(0, 0x15, 2, eMailboxInfo.pageItems, eMailboxInfo.cursorPos, 8); } @@ -1087,7 +1087,7 @@ static void Mailbox_ProcessInput(u8 taskId) if(eMailboxInfo.cursorPos != 0) { PlaySE(SE_SELECT); - eMailboxInfo.cursorPos = MoveMenuCursor(-1); + eMailboxInfo.cursorPos = Menu_MoveCursor(-1); } else if(eMailboxInfo.itemsAbove != 0) { @@ -1101,7 +1101,7 @@ static void Mailbox_ProcessInput(u8 taskId) if(eMailboxInfo.cursorPos != eMailboxInfo.pageItems - 1) { PlaySE(SE_SELECT); - eMailboxInfo.cursorPos = MoveMenuCursor(1); + eMailboxInfo.cursorPos = Menu_MoveCursor(1); } else if(eMailboxInfo.itemsAbove + eMailboxInfo.cursorPos != eMailboxInfo.count) { @@ -1143,7 +1143,7 @@ static void Mailbox_CloseScrollIndicators(void) static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); StringCopy(gStringVar1, gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos].playerName); SanitizeNameString(gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_WhatWillYouDoMail); @@ -1152,7 +1152,7 @@ static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) static void Mailbox_ReturnToPlayerPC(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0, 0x1D, 0x13); ReshowPlayerPC(taskId); } @@ -1164,7 +1164,7 @@ static void Mailbox_TurnOff(u8 taskId) static void Mailbox_PrintMailOptions(u8 taskId) // Mailbox_PrintMailOptions { - MenuDrawTextWindow(0, 0, 0xC, 0x9); + Menu_DrawStdWindowFrame(0, 0, 0xC, 0x9); PrintMenuItems(1, 1, 4, (struct MenuAction *)gMailboxMailOptions); InitMenu(0, 1, 1, 4, 0, 0xB); TASK.FUNC = Mailbox_MailOptionsProcessInput; @@ -1175,17 +1175,17 @@ static void Mailbox_MailOptionsProcessInput(u8 taskId) if(gMain.newAndRepeatedKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if(gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gMailboxMailOptions[GetMenuCursorPos()].func(taskId); + gMailboxMailOptions[Menu_GetCursorPos()].func(taskId); } else if(gMain.newKeys & B_BUTTON) { @@ -1233,7 +1233,7 @@ static void Mailbox_MoveToBag(u8 taskId) { HandleDestroyMenuCursors(); StringCopy(gStringVar1, gOtherText_MoveToBag); - MenuPrint(gHighlightedMoveToBagFormatText, 1, 3); // gHighlightedMoveToBagFormatText + Menu_PrintText(gHighlightedMoveToBagFormatText, 1, 3); // gHighlightedMoveToBagFormatText DisplayItemMessageOnField(taskId, gOtherText_MessageWillBeLost, Mailbox_DrawYesNoBeforeMove, 0); } @@ -1247,7 +1247,7 @@ static void Mailbox_DoMailMoveToBag(u8 taskId) { struct MailStruct *mail = &gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos]; - MenuZeroFillWindowRect(0x14, 8, 0x1A, 0xD); + Menu_EraseWindowRect(0x14, 8, 0x1A, 0xD); if(AddBagItem(mail->itemId, 1) == FALSE) { @@ -1270,7 +1270,7 @@ static void Mailbox_DoMailMoveToBag(u8 taskId) static void Mailbox_ReturnToInputAfterNo(u8 taskId) // Mailbox_ReturnToInputAfterNo { - MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD); Mailbox_DrawMailMenuAndDoProcessInput(taskId); } @@ -1326,7 +1326,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId) static void Mailbox_Cancel(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 0xC, 0x9); + Menu_EraseWindowRect(0, 0, 0xC, 0x9); Mailbox_DrawMailMenuAndDoProcessInput(taskId); } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 640d4731f..3ca359ef7 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -452,11 +452,11 @@ static void sub_810BB0C(void) static void sub_810BB30(void) { BasicInitMenuWindow(&gWindowConfig_81E6E34); - MenuPrint(gContestStatsText_Spicy, 2, 13); - MenuPrint(gContestStatsText_Dry, 2, 15); - MenuPrint(gContestStatsText_Sweet, 2, 17); - MenuPrint(gContestStatsText_Bitter, 8, 13); - MenuPrint(gContestStatsText_Sour, 8, 15); + Menu_PrintText(gContestStatsText_Spicy, 2, 13); + Menu_PrintText(gContestStatsText_Dry, 2, 15); + Menu_PrintText(gContestStatsText_Sweet, 2, 17); + Menu_PrintText(gContestStatsText_Bitter, 8, 13); + Menu_PrintText(gContestStatsText_Sour, 8, 15); } static void sub_810BB88(u8 a0) @@ -471,10 +471,10 @@ static void sub_810BB88(u8 a0) if (i == gUnknown_02039248.unk2) { buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); - MenuPrint(gStringVar1, 15, y + 1); + Menu_PrintText(gStringVar1, 15, y + 1); if (i != a0 + 8) { - MenuZeroFillWindowRect(15, y + 3, 29, 18); + Menu_EraseWindowRect(15, y + 3, 29, 18); } break; } @@ -484,7 +484,7 @@ static void sub_810BB88(u8 a0) buf[2] = 0x06; buf += 3; ConvertIntToDecimalStringN(buf, sub_810C9B0(&gSaveBlock1.pokeblocks[i]), STR_CONV_MODE_RIGHT_ALIGN, 3); - MenuPrint(gStringVar1, 15, y + 1); + Menu_PrintText(gStringVar1, 15, y + 1); } } @@ -600,11 +600,11 @@ static void sub_810BDAC(bool8 flag) if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); - MenuPrint(gStringVar1, 11, 17); + Menu_PrintText(gStringVar1, 11, 17); } else { - MenuZeroFillWindowRect(11, 17, 12, 18); + Menu_EraseWindowRect(11, 17, 12, 18); } } @@ -813,7 +813,7 @@ static void sub_810C368(u8 taskId) sub_80F98A4(0); sub_80F98A4(1); BasicInitMenuWindow(&gWindowConfig_81E6E50); - MenuDrawTextWindow(7, v0 + 4, 13, 11); + Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); gSpecialVar_ItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; @@ -824,24 +824,24 @@ static void sub_810C40C(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (GetMenuCursorPos()) + if (Menu_GetCursorPos()) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (GetMenuCursorPos() != gUnknown_0203924C - 1) + if (Menu_GetCursorPos() != gUnknown_0203924C - 1) { PlaySE(SE_SELECT); - MoveMenuCursor(+1); + Menu_MoveCursor(+1); } } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gUnknown_083F7EF4[gUnknown_03000758[GetMenuCursorPos()]].func(taskId); + gUnknown_083F7EF4[gUnknown_03000758[Menu_GetCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -870,7 +870,7 @@ static void sub_810C540(u8 taskId) { BasicInitMenuWindow(&gWindowConfig_81E6E50); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(7, 4, 13, 11); + Menu_EraseWindowRect(7, 4, 13, 11); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); @@ -890,7 +890,7 @@ static void sub_810C5EC(u8 taskId) static void sub_810C610(u8 taskId) { - MenuZeroFillWindowRect(7, 6, 13, 11); + Menu_EraseWindowRect(7, 6, 13, 11); PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1)); StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); @@ -907,8 +907,8 @@ static void sub_810C668(u8 taskId) sub_80F979C(1, 0); } BasicInitMenuWindow(&gWindowConfig_81E6E50); - MenuZeroFillWindowRect(7, 6, 13, 11); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(7, 6, 13, 11); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_810BF7C; } @@ -933,7 +933,7 @@ static void sub_810C748(u8 taskId) StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(7, 4, 13, 11); + Menu_EraseWindowRect(7, 4, 13, 11); gTasks[taskId].func = sub_810BF7C; } diff --git a/src/field/region_map.c b/src/field/region_map.c index 07e77e389..1eb57b803 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1544,7 +1544,7 @@ void CB2_InitFlyRegionMap(void) break; case 2: InitMenuWindow(&gWindowConfig_81E7224); - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 3: InitRegionMap(&ewram0_3.regionMap, 0); @@ -1619,8 +1619,8 @@ static void PrintFlyTargetName(void) { if (FlagGet(r4->flag)) { - MenuDrawTextWindow(16, 14, 29, 19); - MenuPrint(ewram0_3.regionMap.mapSectionName, 17, 15); + Menu_DrawStdWindowFrame(16, 14, 29, 19); + Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 15); MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17); return; } @@ -1631,16 +1631,16 @@ static void PrintFlyTargetName(void) asm("mov %0, #0\n":"=r"(zero)); // zero = 0 if (zero == 0) { - MenuDrawTextWindow(16, 16, 29, 19); - MenuPrint(ewram0_3.regionMap.mapSectionName, 17, 17); - MenuZeroFillWindowRect(16, 14, 29, 15); + Menu_DrawStdWindowFrame(16, 16, 29, 19); + Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17); + Menu_EraseWindowRect(16, 14, 29, 15); } } else { - MenuDrawTextWindow(16, 16, 29, 19); - MenuPrint(ewramBlankMapName, 17, 17); - MenuZeroFillWindowRect(16, 14, 29, 15); + Menu_DrawStdWindowFrame(16, 16, 29, 19); + Menu_PrintText(ewramBlankMapName, 17, 17); + Menu_EraseWindowRect(16, 14, 29, 15); } } diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index 05a909e81..e795fd8ed 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -1333,7 +1333,7 @@ bool8 ScrCmd_drawbox(struct ScriptContext *ctx) u8 right = ScriptReadByte(ctx); u8 bottom = ScriptReadByte(ctx); - MenuDrawTextWindow(left, top, right, bottom); + Menu_DrawStdWindowFrame(left, top, right, bottom); return FALSE; } @@ -1363,7 +1363,7 @@ bool8 ScrCmd_erasebox(struct ScriptContext *ctx) u8 right = ScriptReadByte(ctx); u8 bottom = ScriptReadByte(ctx); - MenuZeroFillWindowRect(left, top, right, bottom); + Menu_EraseWindowRect(left, top, right, bottom); return FALSE; } @@ -1428,8 +1428,8 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) u8 v6 = ptr[4]; u8 v7 = ptr[5]; StringBraille(gStringVar4, ptr + 6); - MenuDrawTextWindow(v2, v3, v4, v5); - MenuPrint(gStringVar4, v6, v7); + Menu_DrawStdWindowFrame(v2, v3, v4, v5); + Menu_PrintText(gStringVar4, v6, v7); return FALSE; } diff --git a/src/field/script_menu.c b/src/field/script_menu.c index 9f3ab75cc..bf6e93e41 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -622,7 +622,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) { // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8; + return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6CE4, str) + 7) / 8; } static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) @@ -651,7 +651,7 @@ static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuActi bottom = top + (2 * count + 1); - MenuDrawTextWindow(left, top, right, bottom); + Menu_DrawStdWindowFrame(left, top, right, bottom); PrintMenuItems(left + 1, top + 1, count, list); InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); @@ -687,9 +687,9 @@ static void Task_HandleMultichoiceInput(u8 taskId) if (!gPaletteFade.active) { if (!gTasks[taskId].tDoWrap) - selection = ProcessMenuInputNoWrap(); + selection = Menu_ProcessInputNoWrap(); else - selection = ProcessMenuInput(); + selection = Menu_ProcessInput(); if (selection != -2) { @@ -705,7 +705,7 @@ static void Task_HandleMultichoiceInput(u8 taskId) gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -788,7 +788,7 @@ static void Task_HandleYesNoInput(u8 taskId) return; } - switch (ProcessMenuInputNoWrap()) + switch (Menu_ProcessInputNoWrap()) { case -2: return; @@ -805,7 +805,7 @@ static void Task_HandleYesNoInput(u8 taskId) left = gTasks[taskId].tLeft; top = gTasks[taskId].tTop; - MenuZeroFillWindowRect(left, top, left + 6, top + 5); + Menu_EraseWindowRect(left, top, left + 6, top + 5); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -851,7 +851,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr static void Task_HandleMultichoiceGridInput(u8 taskId) { - s8 selection = sub_80727CC(); + s8 selection = Menu_ProcessInputGridLayout(); if (selection != -2) { @@ -867,7 +867,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); + Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -909,23 +909,23 @@ void ScriptMenu_CreatePCMenu(void) if (FlagGet(FLAG_SYS_GAME_CLEAR)) // player has cleared game? { numChoices = 4; - MenuDrawTextWindow(0, 0, width + 2, 9); - MenuPrint(gPCText_HallOfFame, 1, 5); - MenuPrint(gPCText_LogOff, 1, 7); + Menu_DrawStdWindowFrame(0, 0, width + 2, 9); + Menu_PrintText(gPCText_HallOfFame, 1, 5); + Menu_PrintText(gPCText_LogOff, 1, 7); } else { numChoices = 3; - MenuDrawTextWindow(0, 0, width + 2, 7); - MenuPrint(gPCText_LogOff, 1, 5); + Menu_DrawStdWindowFrame(0, 0, width + 2, 7); + Menu_PrintText(gPCText_LogOff, 1, 5); } if (FlagGet(FLAG_SYS_PC_LANETTE)) // player met lanette? - MenuPrint(gPCText_LanettesPC, 1, 1); + Menu_PrintText(gPCText_LanettesPC, 1, 1); else - MenuPrint(gPCText_SomeonesPC, 1, 1); + Menu_PrintText(gPCText_SomeonesPC, 1, 1); - MenuPrint(gPCText_PlayersPC, 1, 3); + Menu_PrintText(gPCText_PlayersPC, 1, 3); InitMenu(0, 1, 1, numChoices, 0, width + 1); StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); } @@ -1008,15 +1008,15 @@ _080B57B4:\n\ movs r0, 0\n\ movs r1, 0\n\ movs r3, 0x9\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\ movs r1, 0x1\n\ movs r2, 0x5\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r0, _080B57F0 @ =gPCText_LogOff\n\ movs r1, 0x1\n\ movs r2, 0x7\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ b _080B5818\n\ .align 2, 0\n\ _080B57E8: .4byte gPCText_SomeonesPC\n\ @@ -1032,11 +1032,11 @@ _080B57FC:\n\ movs r0, 0\n\ movs r1, 0\n\ movs r3, 0x7\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ ldr r0, _080B5834 @ =gPCText_LogOff\n\ movs r1, 0x1\n\ movs r2, 0x5\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ _080B5818:\n\ adds r6, r4, 0\n\ ldr r0, _080B5838 @ =0x0000084b\n\ @@ -1047,7 +1047,7 @@ _080B5818:\n\ ldr r0, _080B583C @ =gPCText_LanettesPC\n\ movs r1, 0x1\n\ movs r2, 0x1\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ b _080B584A\n\ .align 2, 0\n\ _080B5834: .4byte gPCText_LogOff\n\ @@ -1057,12 +1057,12 @@ _080B5840:\n\ ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\ movs r1, 0x1\n\ movs r2, 0x1\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ _080B584A:\n\ ldr r0, _080B588C @ =gPCText_PlayersPC\n\ movs r1, 0x1\n\ movs r2, 0x3\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ movs r4, 0\n\ str r4, [sp]\n\ adds r0, r5, 0x1\n\ @@ -1096,8 +1096,8 @@ _080B588C: .4byte gPCText_PlayersPC\n\ void ScriptMenu_DisplayPCStartupPrompt(void) { - MenuDisplayMessageBox(); - MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gPCText_WhichPCShouldBeAccessed, 2, 15); } #define tState data[0] @@ -1122,7 +1122,7 @@ static void Task_PokemonPicWindow(u8 taskId) task->tState++; break; case 3: - MenuZeroFillWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10); + Menu_EraseWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10); DestroyTask(taskId); break; } @@ -1139,7 +1139,7 @@ bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y) } else { - MenuDrawTextWindow(x, y, x + 9, y + 10); + Menu_DrawStdWindowFrame(x, y, x + 9, y + 10); taskId = CreateTask(Task_PokemonPicWindow, 0x50); gTasks[taskId].tState = 0; gTasks[taskId].tMonSpecies = species; diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 2e4138a3b..16c2f57c2 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -913,7 +913,7 @@ void Task_SecretBasePC_Registry(u8 taskId) taskData[1] = 0; taskData[2] = 0; - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -948,8 +948,8 @@ void sub_80BC6B0(u8 taskId) if (sub_80BC268(i) == TRUE) { sub_80BC190(gStringVar1, i); - MenuFillWindowRectWithBlankTile(18, 2 * n + 2, 28, 2 * n + 3); - MenuPrint(gStringVar1, 18, 2 * n + 2); + Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); + Menu_PrintText(gStringVar1, 18, 2 * n + 2); if (++n == 8) break; } @@ -957,11 +957,11 @@ void sub_80BC6B0(u8 taskId) if (n < 8) { - MenuFillWindowRectWithBlankTile(18, 2 * n + 2, 28, 2 * n + 3); - MenuPrint(gUnknownText_Exit, 18, 2 * n + 2); + Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); + Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2); DestroyVerticalScrollIndicator(1); if (n != 7) - MenuFillWindowRectWithBlankTile(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match + Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match } else CreateVerticalScrollIndicators(1, 0xbc, 0x98); @@ -975,7 +975,7 @@ void sub_80BC6B0(u8 taskId) void sub_80BC7D8(u8 taskId) { u16 *taskData = gTasks[taskId].data; - MenuDrawTextWindow(17, 0, 29, 19); + Menu_DrawStdWindowFrame(17, 0, 29, 19); InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); sub_80BC6B0(taskId); @@ -990,7 +990,7 @@ void sub_80BC824(u8 taskId) if (taskData[1]) { PlaySE(5); - taskData[1] = MoveMenuCursor(-1); + taskData[1] = Menu_MoveCursor(-1); } else if (taskData[2]) { @@ -1013,7 +1013,7 @@ void sub_80BC824(u8 taskId) else { PlaySE(5); - taskData[1] = MoveMenuCursor(1); + taskData[1] = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -1022,7 +1022,7 @@ void sub_80BC824(u8 taskId) if (taskData[1] + taskData[2] == taskData[0]) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } else @@ -1036,7 +1036,7 @@ void sub_80BC824(u8 taskId) { PlaySE(5); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } } @@ -1066,7 +1066,7 @@ void sub_80BC980(u8 taskId) { PauseVerticalScrollIndicator(0); PauseVerticalScrollIndicator(1); - MenuDrawTextWindow(1, 0, 12, 5); + Menu_DrawStdWindowFrame(1, 0, 12, 5); PrintMenuItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); gTasks[taskId].func = sub_80BC9E4; @@ -1076,24 +1076,24 @@ void sub_80BC9E4(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (GetMenuCursorPos()) + if (Menu_GetCursorPos()) { PlaySE(5); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - if (GetMenuCursorPos() != 1) + if (Menu_GetCursorPos() != 1) { PlaySE(5); - MoveMenuCursor(1); + Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) { PlaySE(5); - gUnknown_083D13D4[GetMenuCursorPos()].func(taskId); + gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -1109,7 +1109,7 @@ void sub_80BCA84(u8 taskId) DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC190(gStringVar1, taskData[4]); StringExpandPlaceholders(gStringVar4, gOtherText_OkayToDeleteFromRegistry); @@ -1126,7 +1126,7 @@ void sub_80BCB10(u8 taskId) { s16 *taskData = gTasks[taskId].data; - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSaveBlock1.secretBases[taskData[4]].sbr_field_1_6 = 0; taskData[0]--; @@ -1147,13 +1147,13 @@ void sub_80BCB10(u8 taskId) void sub_80BCB90(u8 taskId) { - MenuZeroFillWindowRect(20, 8, 26, 13); + Menu_EraseWindowRect(20, 8, 26, 13); DisplayItemMessageOnField(taskId, gOtherText_RegisteredDataDeleted, sub_80BCB10, 0); } void sub_80BCBC0(u8 taskId) { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC7D8(taskId); gTasks[taskId].func = sub_80BC824; @@ -1164,7 +1164,7 @@ void sub_80BCBF8(u8 taskId) s16 *taskData = gTasks[taskId].data; InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); - MenuZeroFillWindowRect(1, 0, 12, 5); + Menu_EraseWindowRect(1, 0, 12, 5); StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); diff --git a/src/field/shop.c b/src/field/shop.c index 23d668fc7..0d8bc83d1 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -84,13 +84,13 @@ u8 CreateShopMenu(u8 martType) if (martType == MART_TYPE_0) { gMartInfo.numChoices = 2; - MenuDrawTextWindow(0, 0, 10, 7); + Menu_DrawStdWindowFrame(0, 0, 10, 7); PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); } else { gMartInfo.numChoices = 1; - MenuDrawTextWindow(0, 0, 10, 5); + Menu_DrawStdWindowFrame(0, 0, 10, 5); PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel @@ -126,7 +126,7 @@ void sub_80B2E38(u8 var) if (gMartInfo.cursor) // can move cursor up? { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(-1); + gMartInfo.cursor = Menu_MoveCursor(-1); } } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) @@ -134,7 +134,7 @@ void sub_80B2E38(u8 var) if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down? { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(1); + gMartInfo.cursor = Menu_MoveCursor(1); } } else if (gMain.newKeys & A_BUTTON) @@ -175,7 +175,7 @@ void sub_80B2F30(u8 taskId) void HandleShopMenuQuit(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 11, 8); + Menu_EraseWindowRect(0, 0, 11, 8); sub_80BE3BC(); ScriptContext2_Disable(); DestroyTask(taskId); @@ -290,7 +290,7 @@ void BuyMenuDrawGraphics(void) BuyMenuDrawMapGraphics(); gMartInfo.cursor = zero; gMartInfo.choicesAbove = zero2; - MenuZeroFillWindowRect(0, 0, 0x20, 0x20); + Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); sub_80B37EC(); @@ -532,7 +532,7 @@ void sub_80B37F8(u8 taskId) gStringVar1[1] = 0x14; gStringVar1[2] = 0x6; ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); - MenuPrint(gOtherText_xString1, 1, 11); + Menu_PrintText(gOtherText_xString1, 1, 11); sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); } @@ -604,8 +604,8 @@ void sub_80B39D0(int var1, int var2, bool32 hasControlCode) if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) { - MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); - MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); + Menu_BlankWindowRect(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3); + Menu_PrintText(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2); } } @@ -659,7 +659,7 @@ void sub_80B3BD0(u8 taskId) void sub_80B3BF4(u8 taskId) { - MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); sub_80B379C(); sub_80B3420(); @@ -706,7 +706,7 @@ void sub_80B3D38(u8 taskId) void sub_80B3D7C(u8 taskId) { sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); - MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD); + Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); sub_80B4378(taskId); } @@ -719,7 +719,7 @@ void sub_80B3DC8(u8 taskId) if (gMain.newKeys & A_BUTTON) { gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. - MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); sub_80B379C(); sub_80B3420(); @@ -741,7 +741,7 @@ void sub_80B3EFC(u8 taskId) u16 var; gTasks[taskId].data[1] = 1; - MenuDrawTextWindow(0, 0xA, 0xD, 0xD); + Menu_DrawStdWindowFrame(0, 0xA, 0xD, 0xD); sub_80B37F8(taskId); var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); @@ -1049,7 +1049,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up + gMartInfo.cursor = Menu_MoveCursor(-1); // move cursor up sub_80B3A70(); } } @@ -1070,7 +1070,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction else if (gMartInfo.cursor != gMartInfo.itemCount) { PlaySE(SE_SELECT); - gMartInfo.cursor = MoveMenuCursor(1); + gMartInfo.cursor = Menu_MoveCursor(1); sub_80B3A70(); } } @@ -1085,7 +1085,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction sub_80F979C(1, 1); sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13); + Menu_EraseWindowRect(0, 0xC, 0xD, 0x13); if (gMartInfo.martType == MART_TYPE_0) { @@ -1139,8 +1139,8 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction void sub_80B4378(u8 taskId) { - MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13); - MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD); + Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); + Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); sub_80B3420(); sub_80B3764(6, 7); diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index a524790b4..3c13e004c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -584,8 +584,8 @@ static bool8 sub_8101E3C(struct Task *task) static void sub_8101F2C(const u8 *str) { - MenuDisplayMessageBox(); - MenuPrint(str, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(str, 2, 15); } static bool8 sub_8101F44(struct Task *task) @@ -599,7 +599,7 @@ static bool8 sub_8101F60(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 5; } return FALSE; @@ -853,7 +853,7 @@ static bool8 sub_8102344(struct Task *task) s8 input = ProcessMenuInputNoWrap_(); if (input == 0) { - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_8103D8C(0); sub_8103D8C(1); sub_8103D8C(2); @@ -862,7 +862,7 @@ static bool8 sub_8102344(struct Task *task) } else if (input == 1 || input == -1) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 5; } return FALSE; @@ -879,7 +879,7 @@ static bool8 sub_81023B8(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 5; } return FALSE; @@ -896,7 +896,7 @@ static bool8 sub_81023FC(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - MenuZeroFillScreen(); + Menu_EraseScreen(); eSlotMachine->state = 27; } return FALSE; @@ -2824,7 +2824,7 @@ static void sub_8104BC8(struct Task *task) static void sub_8104BFC(struct Task *task) { - MenuZeroFillScreen(); + Menu_EraseScreen(); BasicInitMenuWindow(&gWindowConfig_81E7128); sub_81064B8(); sub_8104CAC(task->data[1]); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index dccf1714e..6c2812039 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -193,8 +193,8 @@ static void BuildStartMenuActions_Link(void) static void DisplaySafariBallsWindow(void) { sub_8072C44(gStringVar1, gNumSafariBalls, 12, 1); - MenuDrawTextWindow(0, 0, 10, 5); - MenuPrint(gOtherText_SafariStock, 1, 1); + Menu_DrawStdWindowFrame(0, 0, 10, 5); + Menu_PrintText(gOtherText_SafariStock, 1, 1); } //Prints n menu items starting at *index @@ -204,7 +204,7 @@ static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n) do { - MenuPrint(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2); + Menu_PrintText(sStartMenuItems[sCurrentStartMenuActions[_index]].text, 23, 2 + _index * 2); _index++; if (_index >= sNumStartMenuActions) { @@ -226,7 +226,7 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index) (*step)++; break; case 2: - MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); + Menu_DrawStdWindowFrame(22, 0, 29, sNumStartMenuActions * 2 + 3); *index = 0; (*step)++; break; @@ -310,12 +310,12 @@ static u8 StartMenu_InputProcessCallback(void) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - sStartMenuCursorPos = MoveMenuCursor(-1); + sStartMenuCursorPos = Menu_MoveCursor(-1); } if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - sStartMenuCursorPos = MoveMenuCursor(1); + sStartMenuCursorPos = Menu_MoveCursor(1); } if (gMain.newKeys & A_BUTTON) { @@ -473,13 +473,13 @@ static u8 SaveCallback2(void) return FALSE; case SAVE_CANCELED: //Go back to start menu - MenuZeroFillScreen(); + Menu_EraseScreen(); InitStartMenu(); gCallback_03004AE8 = StartMenu_InputProcessCallback; return FALSE; case SAVE_SUCCESS: case SAVE_ERROR: - MenuZeroFillScreen(); + Menu_EraseScreen(); sub_8064E2C(); ScriptContext2_Disable(); return TRUE; @@ -498,7 +498,7 @@ static u8 RunSaveDialogCallback(void) { if (savingComplete) { - if (!MenuUpdateWindowText()) + if (!Menu_UpdateWindowText()) return 0; } savingComplete = FALSE; @@ -514,7 +514,7 @@ void ScrSpecial_DoSaveDialog(void) static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)) { StringExpandPlaceholders(gStringVar4, ptr); - MenuDisplayMessageBox(); + Menu_DisplayDialogueFrame(); MenuPrintMessageDefaultCoords(gStringVar4); savingComplete = TRUE; saveDialogCallback = func; @@ -547,7 +547,7 @@ static void sub_8071700(void) static void HideSaveDialog(void) { - MenuZeroFillWindowRect(20, 8, 26, 13); + Menu_EraseWindowRect(20, 8, 26, 13); } static void SaveDialogStartTimeout(void) @@ -579,7 +579,7 @@ static bool8 SaveDialogCheckForTimeoutAndKeypress(void) static u8 SaveDialogCB_DisplayConfirmMessage(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); HandleDrawSaveWindowInfo(0, 0); DisplaySaveMessageWithCallback(gSaveText_WouldYouLikeToSave, SaveDialogCB_DisplayConfirmYesNoMenu); return SAVE_IN_PROGRESS; @@ -694,7 +694,7 @@ static u8 SaveDialogCB_DoSave(void) static u8 SaveDialogCB_SaveSuccess(void) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { PlaySE(SE_SAVE); saveDialogCallback = SaveDialogCB_ReturnSuccess; @@ -715,7 +715,7 @@ static u8 SaveDialogCB_ReturnSuccess(void) static u8 SaveDialogCB_SaveError(void) { - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { PlaySE(SE_BOO); saveDialogCallback = SaveDialogCB_ReturnError; @@ -821,8 +821,8 @@ static void Task_8071B64(u8 taskId) switch (*step) { case 0: - MenuDisplayMessageBox(); - MenuPrint(gSystemText_Saving, 2, 15); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gSystemText_Saving, 2, 15); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); (*step)++; break; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 701d4087a..d4994d701 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -355,8 +355,8 @@ static void MainCallback2(void) static void Task_StarterChoose1(u8 taskId) { CreateStarterPokemonLabel(0xFF, gTasks[taskId].tStarterSelection); - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gOtherText_BirchInTrouble, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gOtherText_BirchInTrouble, 3, 15); gTasks[taskId].func = Task_StarterChoose2; } @@ -368,7 +368,7 @@ static void Task_StarterChoose2(u8 taskId) { u8 spriteId; - MenuZeroFillWindowRect( + Menu_EraseWindowRect( gStarterChoose_LabelCoords[selection][0], gStarterChoose_LabelCoords[selection][1], gStarterChoose_LabelCoords[selection][0] + 13, @@ -424,9 +424,9 @@ static void Task_StarterChoose3(u8 taskId) static void Task_StarterChoose4(u8 taskId) { PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0); - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); //"Do you choose this POKEMON?" - MenuPrint(gOtherText_DoYouChoosePoke, 3, 15); + Menu_PrintText(gOtherText_DoYouChoosePoke, 3, 15); DisplayYesNoMenu(21, 7, 1); gTasks[taskId].func = Task_StarterChoose5; } @@ -445,7 +445,7 @@ static void Task_StarterChoose5(u8 taskId) case 1: // NO case -1: // B button PlaySE(SE_SELECT); - MenuZeroFillWindowRect(21, 7, 27, 12); + Menu_EraseWindowRect(21, 7, 27, 12); spriteId = gTasks[taskId].tPkmnSpriteId; FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); @@ -498,7 +498,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) if (prevSelection != 0xFF) { //Remove the old Pokemon label - MenuZeroFillWindowRect( + Menu_EraseWindowRect( gStarterChoose_LabelCoords[prevSelection][0], gStarterChoose_LabelCoords[prevSelection][1], gStarterChoose_LabelCoords[prevSelection][0] + 13, @@ -527,7 +527,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) //Copy POKEMON string to label StringCopy(labelText + dstIndex, gOtherText_Poke); - MenuPrint( + Menu_PrintText( labelText, gStarterChoose_LabelCoords[selection][0], gStarterChoose_LabelCoords[selection][1]); @@ -535,7 +535,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) //Copy Pokemon name to label sub_8072C74(labelText + 5, gSpeciesNames[species], 0x6B, 1); - MenuPrint( + Menu_PrintText( labelText, gStarterChoose_LabelCoords[selection][0], gStarterChoose_LabelCoords[selection][1] + 2); @@ -574,7 +574,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) adds r3, r1, 0x3\n\ lsls r3, 24\n\ lsrs r3, 24\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ ldr r0, _0810A964 @ =0x04000040\n\ movs r1, 0\n\ strh r1, [r0]\n\ @@ -649,7 +649,7 @@ _0810A8CA:\n\ mov r0, sp\n\ adds r1, r4, 0\n\ adds r2, r5, 0\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, sp\n\ movs r1, 0\n\ movs r2, 0xF\n\ @@ -669,7 +669,7 @@ _0810A8CA:\n\ lsrs r2, 24\n\ mov r0, sp\n\ adds r1, r4, 0\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ lsls r0, r4, 3\n\ adds r0, 0x4\n\ lsls r0, 24\n\ diff --git a/src/field/trader.c b/src/field/trader.c index 61cb0b4a2..eb0c8a934 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -100,7 +100,7 @@ void CreateAvailableDecorationsMenu(u8 taskId) } } - MenuDrawTextWindow(0, 1, 12, numChoices * 2 + 2); + Menu_DrawStdWindowFrame(0, 1, 12, numChoices * 2 + 2); for (i = 0; i < 4; i++) { @@ -108,18 +108,18 @@ void CreateAvailableDecorationsMenu(u8 taskId) { if (trader->unk1[i] > DECOR_REGISTEEL_DOLL) { - MenuPrint(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2); + Menu_PrintText(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2); } else { - MenuPrint(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2); + Menu_PrintText(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2); } numDecorations++; } } - MenuPrint(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2); + Menu_PrintText(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2); InitMenu(0, 1, 2, numChoices, 0, 11); gTasks[taskId].data[1] = numDecorations; } @@ -136,7 +136,7 @@ void sub_8109B34(u8 taskId, u8 decorationId) } HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 1, 12, 12); + Menu_EraseWindowRect(0, 1, 12, 12); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -148,17 +148,17 @@ void Task_HandleGetDecorationMenuInput(u8 taskId) if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor(-1); + Menu_MoveCursor(-1); } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor(1); + Menu_MoveCursor(1); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - gSpecialVar_0x8005 = GetMenuCursorPos(); + gSpecialVar_0x8005 = Menu_GetCursorPos(); if (gTasks[taskId].data[1] == gSpecialVar_0x8005) { sub_8109B34(taskId, 0); @@ -216,7 +216,7 @@ void ScrSpecial_TraderMenuGiveDecoration(void) void sub_8109D04(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); sub_80F9520(gUnknown_020388F7, 8); @@ -238,7 +238,7 @@ void sub_8109D04(u8 taskId) void sub_8109DAC(u8 taskId) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); gSpecialVar_0x8006 = 0; DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 7253ac901..6e71011b9 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -611,18 +611,18 @@ static void sub_8136BB8(void) StringGetEnd10(gUnknown_02039304->stringBuffer); StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock); BasicInitMenuWindow(&gWindowConfig_81E709C); - MenuDrawTextWindow(0, 16, 29, 19); - MenuPrint(gUnknown_02039304->stringBuffer, 1, 17); + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(gUnknown_02039304->stringBuffer, 1, 17); DisplayYesNoMenu(23, 10, 1); - MoveMenuCursor(0); + Menu_MoveCursor(0); } static s8 sub_8136C40(void) { - s8 retval = ProcessMenuInputNoWrap(); + s8 retval = Menu_ProcessInputNoWrap(); if ((u8)(retval + 1) < 3) { - MenuZeroFillScreen(); + Menu_EraseScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } return retval; @@ -631,7 +631,7 @@ static s8 sub_8136C40(void) static void sub_8136C6C(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); - MenuDrawTextWindow(0, 16, 29, 19); + Menu_DrawStdWindowFrame(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) { @@ -668,20 +668,20 @@ static bool8 sub_8136D00(void) static void sub_8136D60(void) { BasicInitMenuWindow(&gWindowConfig_81E709C); - MenuDrawTextWindow(0, 16, 29, 19); - MenuPrint(gOtherText_WontEat, 1, 17); + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(gOtherText_WontEat, 1, 17); } static void sub_8136D8C(void) { - MenuZeroFillScreen(); + Menu_EraseScreen(); BasicInitMenuWindow(&gWindowConfig_81E7080); } static void Pokeblock_MenuWindowTextPrint(const u8 *message) { - MenuDrawTextWindow(0, 16, 29, 19); - MenuPrint(message, 1, 17); + Menu_DrawStdWindowFrame(0, 16, 29, 19); + Menu_PrintText(message, 1, 17); } #ifdef NONMATCHING diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 2892d09f9..6d102715a 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -414,9 +414,9 @@ static void Task_SetClock2(u8 taskId) //Ask player "Is this the correct time?" static void Task_SetClock3(u8 taskId) { - MenuDrawTextWindow(2, 16, 27, 19); - MenuPrint(gOtherText_CorrectTimePrompt, 3, 17); - MenuDrawTextWindow(23, 8, 29, 13); + Menu_DrawStdWindowFrame(2, 16, 27, 19); + Menu_PrintText(gOtherText_CorrectTimePrompt, 3, 17); + Menu_DrawStdWindowFrame(23, 8, 29, 13); PrintMenuItems(24, 9, 2, gMenuYesNoItems); InitMenu(0, 24, 9, 2, 1, 5); gTasks[taskId].func = Task_SetClock4; @@ -435,8 +435,8 @@ static void Task_SetClock4(u8 taskId) case 1: //NO HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(2, 16, 27, 19); + Menu_EraseWindowRect(23, 8, 29, 13); + Menu_EraseWindowRect(2, 16, 27, 19); gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock } } diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index ef1d66349..83953186b 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -25,8 +25,8 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -extern const struct WindowConfig gWindowConfig_81E6CE4; -extern const struct WindowConfig gWindowConfig_81E7240; +extern const struct WindowTemplate gWindowConfig_81E6CE4; +extern const struct WindowTemplate gWindowConfig_81E7240; extern const u8 *const gContestEffectStrings[]; extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; @@ -270,11 +270,11 @@ void CB2_InitLearnMove(void) SetUpWindowConfig(&gWindowConfig_81E7240); InitMenuWindow(&gWindowConfig_81E7240); - MenuZeroFillScreen(); + Menu_EraseScreen(); SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_BG0VOFS = 0; REG_BG0VOFS = 0; // huh? @@ -304,11 +304,11 @@ void sub_81327A4(void) SetUpWindowConfig(&gWindowConfig_81E7240); InitMenuWindow(&gWindowConfig_81E7240); - MenuZeroFillScreen(); + Menu_EraseScreen(); SetUpWindowConfig(&gWindowConfig_81E6CE4); InitMenuWindow(&gWindowConfig_81E6CE4); - MenuZeroFillScreen(); + Menu_EraseScreen(); REG_DISPCNT = 0x1340; REG_BG0VOFS = 0; @@ -401,7 +401,7 @@ void LearnMoveMain(void) sub_813362C(); break; case 8: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); sLearnMoveStruct->state++; @@ -436,7 +436,7 @@ void LearnMoveMain(void) } break; case 12: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); sLearnMoveStruct->state++; @@ -467,7 +467,7 @@ void LearnMoveMain(void) sLearnMoveStruct->state++; break; case 17: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { DisplayYesNoMenu(21, 7, 1); sLearnMoveStruct->state = 18; @@ -495,7 +495,7 @@ void LearnMoveMain(void) sLearnMoveStruct->state++; break; case 25: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { sLearnMoveStruct->state = 26; DisplayYesNoMenu(21, 7, 1); @@ -524,7 +524,7 @@ void LearnMoveMain(void) } break; case 27: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { if (sLearnMoveStruct->showContestInfo == FALSE) sLearnMoveStruct->state = 3; @@ -533,7 +533,7 @@ void LearnMoveMain(void) } break; case 19: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { sLearnMoveStruct->state = 20; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); @@ -547,7 +547,7 @@ void LearnMoveMain(void) } break; case 21: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) sLearnMoveStruct->state = 14; break; case 22: @@ -597,7 +597,7 @@ void LearnMoveMain(void) } break; case 30: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { #ifdef ENGLISH sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); @@ -609,7 +609,7 @@ void LearnMoveMain(void) } break; case 31: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { PlayFanfare(BGM_FANFA1); sLearnMoveStruct->state = 32; @@ -636,7 +636,7 @@ void DrawLearnMoveMenuWindow(void) BasicInitMenuWindow(&gWindowConfig_81E7240); for (i = 0; i < 4; i++) { - MenuDrawTextWindow( + Menu_DrawStdWindowFrame( gUnknown_08402CF8[i][0], gUnknown_08402CF8[i][1], gUnknown_08402CF8[i][2], @@ -658,7 +658,7 @@ void sub_8133030(bool8 a) for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); - MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); + Menu_PrintText(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); } if (!a) @@ -696,10 +696,10 @@ void sub_8133140(bool8 a) for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) { sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); - MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); + Menu_PrintText(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); if (i != 0) { - MenuZeroFillWindowRect( + Menu_EraseWindowRect( gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5 + 2, gUnknown_08402D08[1][i].unk4 + 7, @@ -938,7 +938,7 @@ void sub_8133800(void) r6++; } *str = EOS; - MenuPrint(gTileBuffer, 11, 1); + Menu_PrintText(gTileBuffer, 11, 1); sub_813360C(0); } @@ -972,17 +972,17 @@ void PrintMoveInfo(u16 moveId, const u8 *b) sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); else sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); - MenuPrint(str, b[0], b[1]); + Menu_PrintText(str, b[0], b[1]); break; case 4: if (gBattleMoves[moveId].accuracy == 0) sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); else sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); - MenuPrint(str, b[0], b[1]); + Menu_PrintText(str, b[0], b[1]); break; case 6: - MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1); numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; if (numHearts == 255) numHearts = 0; @@ -995,7 +995,7 @@ void PrintMoveInfo(u16 moveId, const u8 *b) } break; case 7: - MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1); + Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1); numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; if (numHearts == 255) numHearts = 0; @@ -1037,7 +1037,7 @@ void sub_8133AEC(bool8 contestInfo, int unused) { u8 r1 = var * 2 + 9; - MenuFillWindowRectWithBlankTile(11, r1, 28, 12); + Menu_BlankWindowRect(11, r1, 28, 12); } } } @@ -1045,22 +1045,22 @@ void sub_8133AEC(bool8 contestInfo, int unused) { if (contestInfo) { - MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); - MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); for (i = 0; i < 16; i++) gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; } else { - MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); - MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); + Menu_EraseWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); } - MenuZeroFillWindowRect(11, 9, 28, 12); + Menu_EraseWindowRect(11, 9, 28, 12); } } void sub_8133CA4(void) { - MenuZeroFillWindowRect(21, 7, 27, 12); + Menu_EraseWindowRect(21, 7, 27, 12); sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); } diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 2ab05ca2b..c49c6d350 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -369,7 +369,7 @@ static u8 sub_80F8A28(void) RETURN_UP_STATE; case 9: - MenuZeroFillScreen(); + Menu_EraseScreen(); RETURN_UP_STATE; case 10: CpuFill16(1, (void *)(VRAM + 0x4800), 0x800); @@ -528,11 +528,11 @@ static void sub_80F8E80(void) x = ewram0_4.var10C->var4[pos].unk_0_4; y += ewram0_4.var10C->var4[pos].unk_0_0; - MenuPrint(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y); + Menu_PrintText(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y); y += 2; } - MenuPrint(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1); + Menu_PrintText(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1); } static void sub_80F8F18(void) diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index b4144ea34..eeefa8431 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -312,7 +312,7 @@ void sub_80F727C(struct PokemonMarkMenu *ptr) void sub_80F728C(void) { - const struct FrameGraphics *frame = GetTextWindowFrameGraphics(gSaveBlock2.optionsWindowFrameType); + const struct FrameGraphics *frame = TextWindow_GetFrameGraphics(gSaveBlock2.optionsWindowFrameType); sMenu->frameTiles = frame->tiles; sMenu->framePalette = frame->palette; sMenu->tileLoadState = 0; diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 8e3adda12..028ae71a0 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -559,7 +559,7 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 10: - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); gMain.state++; break; case 11: @@ -715,7 +715,7 @@ static void LaunchPokeblockFeedTask(u8 a0) static void Task_WaitForAtePokeblockText(u8 taskID) { - if (MenuUpdateWindowText() == 1) + if (Menu_UpdateWindowText() == 1) gTasks[taskID].func = Task_PaletteFadeToReturn; } diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 1c1c71454..83820f4cc 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -2241,7 +2241,7 @@ static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) text[3] = EOS; *(u16 *)(VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0]; *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1]; - MenuPrint(text, b - 15, c); + Menu_PrintText(text, b - 15, c); } static void sub_808DF88(u16 a, u8 b, u8 c, u16 d) @@ -2961,20 +2961,20 @@ static void Task_InitPageScreenMultistep(u8 taskId) else sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); - MenuPrint(gDexText_UnknownPoke, CATEGORY_LEFT, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); + Menu_PrintText(gDexText_UnknownPoke, CATEGORY_LEFT, 5); + Menu_PrintText(gDexText_UnknownHeight, 16, 7); + Menu_PrintText(gDexText_UnknownWeight, 16, 9); if (gUnknown_0202FFBC->owned) { sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, CATEGORY_LEFT, 5); sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7); sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); sub_80917CC(14, 0x3FC); } else { - MenuPrint(gUnknown_083A05F8, 2, 13); + Menu_PrintText(gUnknown_083A05F8, 2, 13); LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); } gMain.state++; @@ -3211,7 +3211,7 @@ static void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 4: - MenuPrint(gDexText_CryOf, 10, 4); + Menu_PrintText(gDexText_CryOf, 10, 4); sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2); gMain.state++; break; @@ -3853,13 +3853,13 @@ static void sub_8090750(u8 taskId) else sub_8091154(dexNum, 13, 3); sub_80911C8(dexNum, 16, 3); - MenuPrint(gDexText_UnknownPoke, CATEGORY_LEFT, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); + Menu_PrintText(gDexText_UnknownPoke, CATEGORY_LEFT, 5); + Menu_PrintText(gDexText_UnknownHeight, 16, 7); + Menu_PrintText(gDexText_UnknownWeight, 16, 9); sub_8091304(gPokedexEntries[dexNum].categoryName, CATEGORY_LEFT, 5); sub_8091458(gPokedexEntries[dexNum].height, 16, 7); sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); + Menu_PrintText(gPokedexEntries[dexNum].descriptionPage1, 2, 13); sub_80917CC(14, 0x3FC); gTasks[taskId].data[0]++; break; @@ -3906,8 +3906,8 @@ static void sub_8090A3C(u8 taskId) { u16 r4 = gTasks[taskId].data[1]; - MenuZeroFillWindowRect(2, 13, 27, 19); - MenuPrint(gPokedexEntries[r4].descriptionPage2, 2, 13); + Menu_EraseWindowRect(2, 13, 27, 19); + Menu_PrintText(gPokedexEntries[r4].descriptionPage2, 2, 13); (*(u16 *)(VRAM + 0x7ACA))++; (*(u16 *)(VRAM + 0x7B0A))++; gTasks[taskId].data[4] = 1; @@ -3970,8 +3970,8 @@ static void sub_8090C68(void) { if (gPokedexView->descriptionPageNum == 0) { - MenuZeroFillWindowRect(2, 13, 27, 19); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13); + Menu_EraseWindowRect(2, 13, 27, 19); + Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13); gPokedexView->descriptionPageNum = 1; (*(u16 *)(VRAM + 0x7ACA))++; (*(u16 *)(VRAM + 0x7B0A))++; @@ -3979,8 +3979,8 @@ static void sub_8090C68(void) } else { - MenuZeroFillWindowRect(2, 13, 27, 19); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + Menu_EraseWindowRect(2, 13, 27, 19); + Menu_PrintText(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); gPokedexView->descriptionPageNum = 0; (*(u16 *)(VRAM + 0x7ACA))--; (*(u16 *)(VRAM + 0x7B0A))--; @@ -4190,7 +4190,7 @@ static void sub_8091154(u16 order, u8 b, u8 c) str[1] = CHAR_0 + (order % 100) / 10; str[2] = CHAR_0 + (order % 100) % 10; str[3] = EOS; - MenuPrint(str, b, c); + Menu_PrintText(str, b, c); } static u8 sub_80911C8(u16 num, u8 b, u8 c) @@ -4212,7 +4212,7 @@ static u8 sub_80911C8(u16 num, u8 b, u8 c) str[i] = 0xAE; break; } - MenuPrint(str, b, c); + Menu_PrintText(str, b, c); return i; } @@ -4237,7 +4237,7 @@ static u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) break; } end[i] = EOS; - MenuPrint(str, b, c); + Menu_PrintText(str, b, c); return i; } @@ -4297,7 +4297,7 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) str[3] = CHAR_PERIOD; str[4] = CHAR_0 + ((a % 1000) % 100) % 10; str[5] = EOS; - MenuPrint(str, left, top); + Menu_PrintText(str, left, top); } #elif GERMAN void unref_sub_80913A4(u16 arg0, u8 left, u8 top) { @@ -4341,7 +4341,7 @@ void unref_sub_80913A4(u16 arg0, u8 left, u8 top) { buffer[r6++] = EOS; buffer[2] = offset; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } #endif @@ -4378,7 +4378,7 @@ static void sub_8091458(u16 height, u8 left, u8 top) buffer[i++] = (inches % 10) + CHAR_0; buffer[i++] = CHAR_DOUBLE_PRIME; buffer[i++] = EOS; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } #else static void sub_8091458(u16 height, u8 left, u8 top) @@ -4448,7 +4448,7 @@ static void sub_8091564(u16 weight, u8 left, u8 top) buffer[i++] = CHAR_s; buffer[i++] = CHAR_PERIOD; buffer[i++] = EOS; - MenuPrint(buffer, left, top); + Menu_PrintText(buffer, left, top); } #else static void sub_8091564(u16 arg0, u8 left, u8 top) @@ -5036,7 +5036,7 @@ static void sub_8092644(u8 taskId) { sub_814ADC8(); PlaySE(SE_PIN); - MenuZeroFillWindowRect(18, 1, 28, 12); + Menu_EraseWindowRect(18, 1, 28, 12); sub_8092C8C(1); gTasks[taskId].func = sub_809217C; return; @@ -5045,7 +5045,7 @@ static void sub_8092644(u8 taskId) { sub_814ADC8(); PlaySE(SE_BOWA); - MenuZeroFillWindowRect(18, 1, 28, 12); + Menu_EraseWindowRect(18, 1, 28, 12); sub_8092C8C(1); *p1 = gTasks[taskId].data[14]; *p2 = gTasks[taskId].data[15]; @@ -5374,13 +5374,13 @@ static void sub_8092D78(u8 taskId) u16 i; u16 j; - MenuZeroFillWindowRect(18, 1, 28, 12); + Menu_EraseWindowRect(18, 1, 28, 12); for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++) { #ifndef NONMATCHING j += 0; // Useless statement needed to match #endif - MenuPrint(r6[j].text2, 18, i * 2 + 1); + Menu_PrintText(r6[j].text2, 18, i * 2 + 1); } sub_8091E20(r6[*r8 + *r7].text1); } diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 6c3c6c2b8..da9a18148 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -229,7 +229,7 @@ static void sub_8089A8C(void) static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order, u8 arg6) { PrintPartyMenuPromptText(5, arg6); - MenuDrawTextWindow(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); + Menu_DrawStdWindowFrame(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); } @@ -279,13 +279,13 @@ static void sub_8089D94(u8 taskID) if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) { PlaySE(SE_SELECT); - sPokeMenuCursorPos = MoveMenuCursor(-1); + sPokeMenuCursorPos = Menu_MoveCursor(-1); sub_808B5B4(taskID); } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) { PlaySE(SE_SELECT); - sPokeMenuCursorPos = MoveMenuCursor(1); + sPokeMenuCursorPos = Menu_MoveCursor(1); sub_808B5B4(taskID); } else if (gMain.newKeys & A_BUTTON) @@ -363,7 +363,7 @@ static void PokemonMenu_Summary(u8 taskID) void DoPokemonMenu_Switch(u8 taskID) { SetTaskFuncWithFollowupFunc(taskID, SetupDefaultPartyMenuSwitchPokemon, HandleDefaultPartyMenu); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); } static void PokemonMenu_Switch(u8 taskID) @@ -378,12 +378,12 @@ static void sub_808A060(u8 taskID) { if (gMain.newKeys == DPAD_UP && sPokeMenuCursorPos != 0) { - sPokeMenuCursorPos = MoveMenuCursor(-1); + sPokeMenuCursorPos = Menu_MoveCursor(-1); PlaySE(SE_SELECT); } if (gMain.newKeys == DPAD_DOWN && sPokeMenuCursorPos != 2) { - sPokeMenuCursorPos = MoveMenuCursor(1); + sPokeMenuCursorPos = Menu_MoveCursor(1); PlaySE(SE_SELECT); } if (gMain.newKeys & A_BUTTON) @@ -409,7 +409,7 @@ static void PokemonMenu_Item(u8 taskID) { HandleDestroyMenuCursors(); sPokeMenuCursorPos = 0; - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); gTasks[taskID].func = sub_808A100; } @@ -442,7 +442,7 @@ static void sub_808A228(u8 taskID) } else { - MenuZeroFillWindowRect(0, 0, 29, 19); + Menu_EraseWindowRect(0, 0, 29, 19); PrintPartyMenuPromptText(0, 0); gTasks[taskID].func = HandleDefaultPartyMenu; } @@ -601,7 +601,7 @@ static void sub_808A678(u8 taskID) static void PokemonMenu_TakeItem(u8 taskID) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678); } @@ -609,7 +609,7 @@ static void PokemonMenu_TakeItem(u8 taskID) static void PokemonMenu_TakeMail(u8 taskID) { HandleDestroyMenuCursors(); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); DoTakeMail(taskID, sub_808A678); } @@ -618,7 +618,7 @@ static void PokemonMenu_Mail(u8 taskID) { HandleDestroyMenuCursors(); sPokeMenuCursorPos = 0; - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); ShowPartyPopupMenu(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0); gTasks[taskID].func = sub_808A73C; } @@ -629,17 +629,17 @@ static void sub_808A73C(u8 taskID) { PlaySE(SE_SELECT); if (sPokeMenuCursorPos == 0) - sPokeMenuCursorPos = MoveMenuCursor(sUnknown_0839F584.numChoices - 1); + sPokeMenuCursorPos = Menu_MoveCursor(sUnknown_0839F584.numChoices - 1); else - sPokeMenuCursorPos = MoveMenuCursor(-1); + sPokeMenuCursorPos = Menu_MoveCursor(-1); } if (gMain.newAndRepeatedKeys == DPAD_DOWN) { PlaySE(SE_SELECT); if (sPokeMenuCursorPos == sUnknown_0839F584.numChoices - 1) - sPokeMenuCursorPos = MoveMenuCursor(1 - sUnknown_0839F584.numChoices); + sPokeMenuCursorPos = Menu_MoveCursor(1 - sUnknown_0839F584.numChoices); else - sPokeMenuCursorPos = MoveMenuCursor(1); + sPokeMenuCursorPos = Menu_MoveCursor(1); } if (gMain.newKeys & A_BUTTON) { @@ -679,7 +679,7 @@ static void sub_808A8A8(void) static void sub_808A8D4(u8 taskID) { sPokeMenuCursorPos = 0; - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); PrintPartyMenuPromptText(0, 0); gTasks[taskID].func = HandleDefaultPartyMenu; } @@ -695,7 +695,7 @@ static void PokemonMenu_CancelSubmenu(u8 taskID) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); sub_8089C7C(sPokeMenuCursorPos); gTasks[taskID].func = sub_8089D94; @@ -715,7 +715,7 @@ static void PokemonMenu_FieldMove(u8 taskID) tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID; if (sub_80F9344() == TRUE) { - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); if (IS_SOFTBOILED_MILKDRINK(tFieldMoveId)) PrintPartyMenuPromptText(9, 0); else @@ -725,7 +725,7 @@ static void PokemonMenu_FieldMove(u8 taskID) else if (tFieldMoveId <= 7 && FlagGet(FLAG_BADGE01_GET + tFieldMoveId) != TRUE) { // can't use a field HM move without a proper badge - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); sub_806E834(gOtherText_CantBeUsedBadge, 1); gTasks[taskID].func = sub_808AAF0; @@ -745,7 +745,7 @@ static void PokemonMenu_FieldMove(u8 taskID) } else { - MenuZeroFillWindowRect(19, 0, 29, 19); + Menu_EraseWindowRect(19, 0, 29, 19); if (IS_SURF(tFieldMoveId) && TestPlayerAvatarFlags(8)) PrintPartyMenuPromptText(8, 0); else @@ -759,7 +759,7 @@ static void sub_808AAF0(u8 taskID) { if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)) { - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); PokemonMenu_Cancel(taskID); } } @@ -798,7 +798,7 @@ static void sub_808ABF4(u8 taskID) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - MenuZeroFillWindowRect(1, 17, 28, 18); + Menu_EraseWindowRect(1, 17, 28, 18); PokemonMenu_Cancel(taskID); } } diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 4a68b846a..001cebe45 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -16,7 +16,7 @@ EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; void sub_8098898(u8 index) { u8 *ptr; - MenuDrawTextWindow(10, 16, 29, 19); + Menu_DrawStdWindowFrame(10, 16, 29, 19); switch (gUnknown_083B6DF4[index].format) { @@ -89,5 +89,5 @@ void sub_8098898(u8 index) { } ptr[0] = EOS; - MenuPrint(gUnk2002694, 11, 17); + Menu_PrintText(gUnk2002694, 11, 17); } diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 9563bc08f..0887c6648 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -1037,7 +1037,7 @@ static void sub_809E260(u8 taskId) { if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } SummaryScreenHandleLeftRightInput(taskId, -1); @@ -1048,7 +1048,7 @@ static void sub_809E260(u8 taskId) { if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } SummaryScreenHandleLeftRightInput(taskId, 1); @@ -1482,8 +1482,8 @@ static void sub_809EAC8(u8 taskId) sub_80A1B1C(9); sub_80A16CC(1); - MenuZeroFillWindowRect(15, 12, 28, 13); - MenuZeroFillWindowRect(11, 15, 28, 18); + Menu_EraseWindowRect(15, 12, 28, 13); + Menu_EraseWindowRect(11, 15, 28, 18); pssData.headerActionTextId = 6; PrintSummaryWindowHeaderText(); @@ -2371,7 +2371,7 @@ void sub_809F814(u8 taskId) { if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } gTasks[taskId].func = sub_809E260; @@ -2387,7 +2387,7 @@ void sub_809F814(u8 taskId) { if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0)) { - MenuZeroFillWindowRect(0, 14, 9, 18); + Menu_EraseWindowRect(0, 14, 9, 18); } gTasks[taskId].func = sub_809E260; @@ -2414,8 +2414,8 @@ static void sub_809F9D0(u8 taskId, u8 b) sub_80A1488(-2, 4); sub_80A1654(-2, 4); - MenuZeroFillWindowRect(11, 15, 28, 18); - MenuPrint(gOtherText_CantForgetHMs, 11, 15); + Menu_EraseWindowRect(11, 15, 28, 18); + Menu_PrintText(gOtherText_CantForgetHMs, 11, 15); gTasks[taskId].func = sub_809F814; } @@ -2494,9 +2494,9 @@ static void sub_809FAC8(struct Pokemon *mon) if (GetMonData(mon, MON_DATA_IS_EGG)) { - MenuZeroFillWindowRect(1, 2, 4, 3); - MenuZeroFillWindowRect(3, 16, 9, 17); - MenuZeroFillWindowRect(0, 12, 11, 15); + Menu_EraseWindowRect(1, 2, 4, 3); + Menu_EraseWindowRect(3, 16, 9, 17); + Menu_EraseWindowRect(0, 12, 11, 15); GetMonNickname(mon, gStringVar1); sub_80A1FF8(gStringVar1, 13, 3, 16); LoadPalette(sUnknown_083C157C, 4, 2); @@ -2520,7 +2520,7 @@ static void sub_809FAC8(struct Pokemon *mon) } else { - MenuZeroFillWindowRect(1, 2, 4, 3); + Menu_EraseWindowRect(1, 2, 4, 3); } buffer = gStringVar1; @@ -2530,7 +2530,7 @@ static void sub_809FAC8(struct Pokemon *mon) buffer[1] = 0x13; buffer[2] = 0x3C; buffer[3] = EOS; - MenuPrint(gStringVar1, 1, 12); + Menu_PrintText(gStringVar1, 1, 12); sub_80A0958(mon); } @@ -2545,12 +2545,12 @@ static void sub_809FBE4(void) sub_80A1918(i, 1); } - MenuZeroFillWindowRect(11, 4, 29, 18); + Menu_EraseWindowRect(11, 4, 29, 18); } static void sub_809FC0C(void) { - MenuPrint(gOtherText_Type2, 11, 6); + Menu_PrintText(gOtherText_Type2, 11, 6); GetStringCenterAlignXOffset(0, 22, 4); GetStringCenterAlignXOffset(2, 23, 4); } @@ -2569,7 +2569,7 @@ static void sub_809FC34(struct Pokemon *mon) sub_80A1918(i, 1); } - MenuZeroFillWindowRect(11, 9, 28, 12); + Menu_EraseWindowRect(11, 9, 28, 12); if (GetMonData(mon, MON_DATA_IS_EGG)) { buffer = gStringVar1; @@ -2580,7 +2580,7 @@ static void sub_809FC34(struct Pokemon *mon) buffer[1] = 0x13; buffer[2] = 0x4E; buffer[3] = EOS; - MenuPrint(gStringVar1, 11, 4); + Menu_PrintText(gStringVar1, 11, 4); sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1); sub_80A198C(9, 120, 48, 0); @@ -2588,19 +2588,19 @@ static void sub_809FC34(struct Pokemon *mon) friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); if (friendship < 6) { - MenuPrint(gOtherText_EggAbout, 11, 9); + Menu_PrintText(gOtherText_EggAbout, 11, 9); } else if (friendship < 11) { - MenuPrint(gOtherText_EggSoon, 11, 9); + Menu_PrintText(gOtherText_EggSoon, 11, 9); } else if (friendship < 41) { - MenuPrint(gOtherText_EggSomeTime, 11, 9); + Menu_PrintText(gOtherText_EggSomeTime, 11, 9); } else { - MenuPrint(gOtherText_EggLongTime, 11, 9); + Menu_PrintText(gOtherText_EggLongTime, 11, 9); } PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14); @@ -2629,7 +2629,7 @@ static void sub_809FC34(struct Pokemon *mon) buffer[1] = 0x13; buffer[2] = 0x4E; buffer[3] = EOS; - MenuPrint(gStringVar1, 11, 4); + Menu_PrintText(gStringVar1, 11, 4); sub_80A1F98(GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF, 13, 5, 2, 193, 32, 1); @@ -2642,7 +2642,7 @@ static void sub_809FC34(struct Pokemon *mon) ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY)); sub_80A1FF8(gAbilityNames[ability], 13, 11, 9); - MenuPrint(gAbilityDescriptions[ability], 11, 11); + Menu_PrintText(gAbilityDescriptions[ability], 11, 11); PokemonSummaryScreen_PrintTrainerMemo(mon, 11, 14); } @@ -2656,17 +2656,17 @@ static void sub_809FE6C(struct Pokemon *mon) static void sub_809FE80(void) { - MenuZeroFillWindowRect(14, 4, 18, 5); - MenuZeroFillWindowRect(25, 4, 30, 5); - MenuZeroFillWindowRect(11, 9, 28, 12); - MenuZeroFillWindowRect(11, 14, 28, 17); + Menu_EraseWindowRect(14, 4, 18, 5); + Menu_EraseWindowRect(25, 4, 30, 5); + Menu_EraseWindowRect(11, 9, 28, 12); + Menu_EraseWindowRect(11, 14, 28, 17); } static void sub_809FEB8(void) { sub_80A1FF8(gOtherText_ExpPoints, 13, 11, 14); sub_80A1FF8(gOtherText_NextLv, 13, 11, 16); - MenuPrint(gOtherText_Terminator18, 21, 16); + Menu_PrintText(gOtherText_Terminator18, 21, 16); sub_80A1F48(gOtherText_HP, 13, 11, 7, 42); sub_80A1F48(gOtherText_Attack, 13, 11, 9, 42); @@ -2727,12 +2727,12 @@ static void sub_80A0090(struct Pokemon *mon) static void sub_80A00A4(void) { - MenuZeroFillWindowRect(11, 4, 19, 5); - MenuZeroFillWindowRect(16, 7, 21, 8); - MenuZeroFillWindowRect(17, 9, 21, 12); - MenuZeroFillWindowRect(27, 7, 29, 12); - MenuZeroFillWindowRect(22, 14, 28, 15); - MenuZeroFillWindowRect(23, 16, 28, 17); + Menu_EraseWindowRect(11, 4, 19, 5); + Menu_EraseWindowRect(16, 7, 21, 8); + Menu_EraseWindowRect(17, 9, 21, 12); + Menu_EraseWindowRect(27, 7, 29, 12); + Menu_EraseWindowRect(22, 14, 28, 15); + Menu_EraseWindowRect(23, 16, 28, 17); } static void sub_80A00F4(u8 a) @@ -2770,7 +2770,7 @@ static void sub_80A015C(struct Pokemon *mon) { sub_80A1918(i, 1); sub_80A1FF8(gOtherText_OneDash, 13, 15, (2 * i) + 4); - MenuPrint(gOtherText_TwoDashes, 26, (2 * i) + 4); + Menu_PrintText(gOtherText_TwoDashes, 26, (2 * i) + 4); } else { @@ -2793,7 +2793,7 @@ static void sub_80A015C(struct Pokemon *mon) buffer = sub_8072C14(buffer, curPP, 14, 1); *buffer++ = CHAR_SLASH; sub_8072C14(buffer, maxPP, 32, 1); - MenuPrint(gStringVar1, 25, (2 * i) + 4); + Menu_PrintText(gStringVar1, 25, (2 * i) + 4); } } } @@ -2829,7 +2829,7 @@ static void sub_80A029C(struct Pokemon *mon) buffer = sub_8072C14(buffer, pp, 14, 1); *buffer++ = CHAR_SLASH; buffer = sub_8072C14(buffer, pp, 32, 1); - MenuPrint(gStringVar1, 25, 12); + Menu_PrintText(gStringVar1, 25, 12); } static void sub_80A0390(void) @@ -2838,7 +2838,7 @@ static void sub_80A0390(void) for (i = 0; i < MAX_MON_MOVES; i++) { - MenuZeroFillWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); + Menu_EraseWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); } } @@ -2883,7 +2883,7 @@ void sub_80A03F0(struct Pokemon *mon, u8 *selectedMoveIndex) static void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex) { u16 move = sub_80A03BC(mon, *selectedMoveIndex); - MenuZeroFillWindowRect(11, 15, 28, 18); + Menu_EraseWindowRect(11, 15, 28, 18); if (pssData.page == PSS_PAGE_BATTLE_MOVES) { @@ -2901,14 +2901,14 @@ static void sub_80A046C(u16 move) { if (move == 0xFFFF) return; - MenuPrint(gMoveDescriptions[move - 1], 11, 15); + Menu_PrintText(gMoveDescriptions[move - 1], 11, 15); } static void sub_80A0498(u16 move) { if (move == 0xFFFF) return; - MenuPrint(gContestEffectStrings[gContestMoves[move].effect], 11, 15); + Menu_PrintText(gContestEffectStrings[gContestMoves[move].effect], 11, 15); } static void sub_80A04CC(u16 move) @@ -2921,26 +2921,26 @@ static void sub_80A04CC(u16 move) { buffer = gStringVar1; buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); - MenuPrint(gStringVar1, 7, 15); + Menu_PrintText(gStringVar1, 7, 15); } else { buffer = gStringVar1; buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); - MenuPrint(gStringVar1, 7, 15); + Menu_PrintText(gStringVar1, 7, 15); } if (gBattleMoves[move].accuracy == 0) { buffer = gStringVar1; buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); - MenuPrint(gStringVar1, 7, 17); + Menu_PrintText(gStringVar1, 7, 17); } else { buffer = gStringVar1; buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); - MenuPrint(gStringVar1, 7, 17); + Menu_PrintText(gStringVar1, 7, 17); } } @@ -3153,7 +3153,7 @@ static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 lef if (!(gameMet == VERSION_RUBY || gameMet == VERSION_SAPPHIRE || gameMet == VERSION_EMERALD)) { - MenuPrint(gOtherText_EggObtainedInTrade, left, top); + Menu_PrintText(gOtherText_EggObtainedInTrade, left, top); return; } @@ -3162,13 +3162,13 @@ static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 lef if (locationMet == 255) { // Eggs received from Pokemon Box. - MenuPrint(gOtherText_EggNicePlace, left, top); + Menu_PrintText(gOtherText_EggNicePlace, left, top); return; } if (!PokemonSummaryScreen_CheckOT(mon)) { - MenuPrint(gOtherText_EggObtainedInTrade, left, top); + Menu_PrintText(gOtherText_EggObtainedInTrade, left, top); return; } @@ -3176,11 +3176,11 @@ static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *mon, u8 lef if (locationMet == 253) { - MenuPrint(gOtherText_EggHotSprings, left, top); + Menu_PrintText(gOtherText_EggHotSprings, left, top); return; } - MenuPrint(gOtherText_EggDayCare, left, top); + Menu_PrintText(gOtherText_EggDayCare, left, top); } static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, u8 top) @@ -3285,7 +3285,7 @@ static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left, } } - MenuPrint(gStringVar4, left++, top++); + Menu_PrintText(gStringVar4, left++, top++); } static void sub_80A0958(struct Pokemon *mon) @@ -3310,8 +3310,8 @@ static void sub_80A0958(struct Pokemon *mon) buffer[2] = 0x50; buffer[3] = EOS; - MenuPrint(gStringVar1, 0, 14); - MenuZeroFillWindowRect(3, 16, 9, 17); + Menu_PrintText(gStringVar1, 0, 14); + Menu_EraseWindowRect(3, 16, 9, 17); level = GetMonData(mon, MON_DATA_LEVEL); @@ -3325,7 +3325,7 @@ static void sub_80A0958(struct Pokemon *mon) buffer[2] = 0x20; buffer[3] = EOS; - MenuPrint(gStringVar1, 3, 16); + Menu_PrintText(gStringVar1, 3, 16); sub_80A0A2C(mon, 7, 16); } @@ -3343,7 +3343,7 @@ static void sub_80A0A2C(struct Pokemon *mon, u8 left, u8 top) { default: bottom = top + 1; - MenuZeroFillWindowRect(left, top, left, bottom); + Menu_EraseWindowRect(left, top, left, bottom); return; case MON_MALE: genderSymbol = gOtherText_MaleSymbol2; @@ -3406,7 +3406,7 @@ static void PrintNumRibbons(struct Pokemon *mon) ConvertIntToDecimalStringN(&text[3], numRibbons, 1, 2); } - MenuPrint(sUnknown_083C15AE, 21, 4); + Menu_PrintText(sUnknown_083C15AE, 21, 4); } static void PrintHeldItemName(u16 itemId, u8 left, u8 top) @@ -3427,7 +3427,7 @@ static void PrintHeldItemName(u16 itemId, u8 left, u8 top) CopyItemName(itemId, gStringVar1); } - MenuPrint(sUnknown_083C15B4, left, top); + Menu_PrintText(sUnknown_083C15B4, left, top); } static void DrawExperienceProgressBar(struct Pokemon *mon, u8 left, u8 top) @@ -3518,7 +3518,7 @@ static void PrintSummaryWindowHeaderText(void) buffer[2] = 0x58; buffer[3] = EOS; - MenuPrint(gStringVar1, 0, 0); + Menu_PrintText(gStringVar1, 0, 0); if (pssData.headerActionTextId != 0) { @@ -3527,7 +3527,7 @@ static void PrintSummaryWindowHeaderText(void) } else { - MenuZeroFillWindowRect(23, 0, 24, 1); + Menu_EraseWindowRect(23, 0, 24, 1); } buffer = gStringVar1; @@ -3539,7 +3539,7 @@ static void PrintSummaryWindowHeaderText(void) buffer[2] = 0x28; buffer[3] = EOS; - MenuPrint(gStringVar1, 25, 0); + Menu_PrintText(gStringVar1, 25, 0); } // If the given pokemon previously had the pokerus virus, a small @@ -4138,7 +4138,7 @@ static void sub_80A12D0(s8 a) { u8 newTaskId; - MenuZeroFillWindowRect(1, 18, 5, 19); + Menu_EraseWindowRect(1, 18, 5, 19); sub_80A18E4(29); newTaskId = CreateTask(sub_80A1048, 0); @@ -4194,14 +4194,14 @@ static void sub_80A12D0(s8 a) // } // else // { -// MenuZeroFillWindowRect(0, 19, 9, 19); +// Menu_EraseWindowRect(0, 19, 9, 19); // } // if (gTasks[taskId].data[0] == 0 || gTasks[taskId].data[1] < 0) // { // if (pssData.page == PSS_PAGE_BATTLE_MOVES) // { -// MenuZeroFillWindowRect(0, 14, 9, 18); +// Menu_EraseWindowRect(0, 14, 9, 18); // sub_80A0958(pssData.loadedMon); // if (GetMonStatusAndPokerus(pssData.loadedMon)) @@ -4327,7 +4327,7 @@ _080A13F4:\n\ movs r1, 0x13\n\ movs r2, 0x9\n\ movs r3, 0x13\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ _080A1400:\n\ movs r1, 0\n\ ldrsh r0, [r7, r1]\n\ @@ -4346,7 +4346,7 @@ _080A1410:\n\ movs r1, 0xE\n\ movs r2, 0x9\n\ movs r3, 0x12\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ adds r4, 0x10\n\ adds r0, r4, 0\n\ bl sub_80A0958\n\ @@ -4404,7 +4404,7 @@ static void sub_80A1488(s8 a, u8 b) if (pssData.page == PSS_PAGE_BATTLE_MOVES) { - MenuZeroFillWindowRect(0, 14, 9, 19); + Menu_EraseWindowRect(0, 14, 9, 19); } taskId = FindTaskIdByFunc(sub_80A1334); @@ -4531,7 +4531,7 @@ _080A15C0:\n\ movs r1, 0x13\n\ movs r2, 0x9\n\ movs r3, 0x13\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ _080A15CC:\n\ movs r1, 0\n\ ldrsh r0, [r7, r1]\n\ @@ -4550,7 +4550,7 @@ _080A15DC:\n\ movs r1, 0xE\n\ movs r2, 0x9\n\ movs r3, 0x12\n\ - bl MenuZeroFillWindowRect\n\ + bl Menu_EraseWindowRect\n\ adds r4, 0x10\n\ adds r0, r4, 0\n\ bl sub_80A0958\n\ @@ -4606,7 +4606,7 @@ static void sub_80A1654(s8 a, u8 b) if (pssData.page == PSS_PAGE_CONTEST_MOVES) { - MenuZeroFillWindowRect(0, 14, 9, 19); + Menu_EraseWindowRect(0, 14, 9, 19); } taskId = FindTaskIdByFunc(sub_80A1500); @@ -5272,7 +5272,7 @@ u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id) { u8 arr[3]; - sub_8072CD4(&arr[0], &arr[1], &arr[2]); + Menu_GetTextColors(&arr[0], &arr[1], &arr[2]); dest = sub_80A1E58(dest, id); dest = StringCopy(dest, src); @@ -5313,7 +5313,7 @@ static void sub_80A1F98(s32 value, u8 id, u8 n, u8 mode, u8 left, u16 top, s32 e static void sub_80A1FF8(const u8 *text, u8 id, u8 left, u8 top) { sub_80A1E9C(gStringVar4, text, id); - MenuPrint(gStringVar4, left, top); + Menu_PrintText(gStringVar4, left, top); } u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 8a67390ad..411a20f79 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3337,7 +3337,7 @@ void sub_80EF428(u8 a, u8 b) tileBuffer = gUnknown_083DFEC8; sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2); - MenuPrint(&tileBuffer[0x800], 3, 17); + Menu_PrintText(&tileBuffer[0x800], 3, 17); } void sub_80EF490(u8 a) @@ -3670,7 +3670,7 @@ bool8 sub_80EF874(void) return TRUE; break; case 4: - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 5: sub_80FA904(&gUnknown_083DFEC4->regionMap, gSaveBlock2.regionMapZoom ? TRUE : FALSE); @@ -3691,7 +3691,7 @@ bool8 sub_80EF874(void) return TRUE; break; case 10: - MenuDrawTextWindow(13, 3, 29, 17); + Menu_DrawStdWindowFrame(13, 3, 29, 17); sub_80EF9F8(); break; case 11: @@ -3765,8 +3765,8 @@ void sub_80EF9F8(void) b = gUnknown_083DFEC4->regionMap.everGrandeCityArea; if (gUnknown_083DFEC4->unkCDCC[mapSectionId][b] != NULL) { - MenuFillWindowRectWithBlankTile(14, top, 15, 15); - MenuFillWindowRectWithBlankTile(26, top, 28, 15); + Menu_BlankWindowRect(14, top, 15, 15); + Menu_BlankWindowRect(26, top, 28, 15); sub_8095C8C((void *)(VRAM + 0xF800), 16, 6, gUnknown_083DFEC4->unkCDCC[mapSectionId][b], 0, 0, 10, 10, 10); top += 11; } @@ -3779,7 +3779,7 @@ void sub_80EF9F8(void) // Epic fail by the compiler at optimizing this. if (!someBool && top < 16) - MenuFillWindowRectWithBlankTile(14, top, 28, 15); + Menu_BlankWindowRect(14, top, 28, 15); if (gUnknown_083DFEC4->regionMap.unk16 == 2) sub_80EFD74(); @@ -3982,7 +3982,7 @@ bool8 sub_80EFF68(void) return TRUE; break; case 4: - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 5: sub_80F1614(); @@ -4050,13 +4050,13 @@ void sub_80F01A4(void) void sub_80F01E0(u16 a) { - MenuPrint(gUnknown_083DFEC4->unk8829[a], 13, 1); + Menu_PrintText(gUnknown_083DFEC4->unk8829[a], 13, 1); if (gUnknown_083DFEC4->unk76AA == 1) { - MenuPrint(gUnknown_083DFEC4->unk88E9[a], 13, 3); + Menu_PrintText(gUnknown_083DFEC4->unk88E9[a], 13, 3); sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk2); - MenuPrint(gUnknown_083DFEC4->unk8788, 1, 6); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 6); } } @@ -4098,7 +4098,7 @@ bool8 sub_80F02A0(void) } break; case 4: - MenuZeroFillScreen(); + Menu_EraseScreen(); break; case 5: LZ77UnCompVram(gUnknown_08E9FC64, (void *)VRAM + 0xE800); @@ -4287,7 +4287,7 @@ _080F035C:\n\ _080F0366:\n\ b _080F0626\n\ _080F0368:\n\ - bl MenuZeroFillScreen\n\ + bl Menu_EraseScreen\n\ b _080F0618\n\ _080F036E:\n\ ldr r0, _080F0378 @ =gUnknown_08E9FC64\n\ diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c index bf6d03fb7..9449ca0d1 100644 --- a/src/rom_800D42C.c +++ b/src/rom_800D42C.c @@ -28,8 +28,8 @@ extern u8 BattleText_Tie[]; #define PRINT_MESSAGE(text, tileDataStartOffset, x) \ { \ - InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \ - sub_8002F44(&gUnknown_03004210); \ + Text_InitWindow(&gUnknown_03004210, text, tileDataStartOffset, x, MESSAGE_Y); \ + Text_PrintWindow8002F44(&gUnknown_03004210); \ } #define PRINT_MESSAGE_LEFT(text, tileDataStartOffset) PRINT_MESSAGE(text, tileDataStartOffset, LEFT_MESSAGE_X) diff --git a/src/roulette.c b/src/roulette.c index 1d612d071..0253a6bb8 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -625,8 +625,8 @@ void sub_8115384(void) sub_81182F8(0x6); sub_811829C(0x0); sub_8117158(0x0); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4157[0], 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4157[0], 0x1, 0xF); gSpriteCoordOffsetX = -0x3C; gSpriteCoordOffsetY = 0x0; gMain.state++; @@ -693,14 +693,14 @@ void sub_8115734(u8 taskid) { DisplayYesNoMenu(0x14, 0x8, 0x1); sub_814AAF8(0x2D9E); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41E3, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41E3, 0x1, 0xF); DoYesNoFuncWithChoice(taskid, &gUnknown_083F8EBC); } void sub_811577C(u8 taskid) { - MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD); gTasks[taskid].func = &sub_81159BC; } @@ -1446,21 +1446,21 @@ void sub_8116638(u8 taskid) if (gTasks[taskid].data[0x2] == 0xC) { PlayFanfare(BGM_ME_B_BIG); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41A5, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41A5, 0x1, 0xF); } else { PlayFanfare(BGM_ME_B_SMALL); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4199, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4199, 0x1, 0xF); } break; case 0: default: m4aSongNumStart(SE_HAZURE); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41AE, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41AE, 0x1, 0xF); } gTasks[taskid].data[0x1] = 0x0; gTasks[taskid].func = &sub_811659C; @@ -1500,8 +1500,8 @@ void sub_811677C(u8 taskid) { ConvertIntToDecimalStringN((u8 *)&gStringVar1, (eRoulette->var19 * gTasks[taskid].data[0x2]), STR_CONV_MODE_LEFT_ALIGN, 0x2); StringExpandPlaceholders((u8 *)&gStringVar4, &gUnknown_081C41BD); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint((u8 *)&gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText((u8 *)&gStringVar4, 0x1, 0xF); gTasks[taskid].data[0x1] = (eRoulette->var19 * gTasks[taskid].data[0x2]); gTasks[taskid].data[0x7] = 0x0; gTasks[taskid].func = &sub_81166E8; @@ -1534,14 +1534,14 @@ void sub_8116880(u8 taskid) { if (gTasks[taskid].data[0x6] == 0x6) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41F1, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41F1, 0x1, 0xF); sub_8116C34(taskid, &dp01t_12_3_battle_menu, 0xFFFF, 0x3); } else if (gTasks[taskid].data[0xD] == 0x270F) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4231, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4231, 0x1, 0xF); sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3); } else @@ -1551,8 +1551,8 @@ void sub_8116880(u8 taskid) } else { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C41D2, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C41D2, 0x1, 0xF); sub_8116C34(taskid, &sub_81157AC, 0x3C, 0x3); } } @@ -1570,8 +1570,8 @@ void dp01t_12_3_battle_menu(u8 taskid) gSprites[eRoulette->var3C[i + 0x7]].invisible = FALSE; if (gTasks[taskid].data[0xD] == 0x270F) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4231, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4231, 0x1, 0xF); sub_8116C34(taskid, &sub_8115734, 0xFFFF, 0x3); } else @@ -2619,8 +2619,8 @@ void sub_8117528(u8 taskid) void sub_811755C(u8 taskid) { - MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); - MenuZeroFillScreen(); + Menu_EraseWindowRect(0x14, 0x8, 0x1A, 0xD); + Menu_EraseScreen(); BeginNormalPaletteFade(-0x1, 0x0, 0x0, 0x10, 0x0); gPaletteFade.delayCounter = gPaletteFade.multipurpose2; UpdatePaletteFade(); @@ -2629,7 +2629,7 @@ void sub_811755C(u8 taskid) void sub_81175C0(u8 taskid) { - MenuZeroFillScreen(); + Menu_EraseScreen(); ScriptContext2_Disable(); DestroyTask(taskid); } @@ -2640,7 +2640,7 @@ void sub_81175DC(u8 taskid) if (!(gMain.newKeys & (A_BUTTON | B_BUTTON)) && gTasks[taskid].data[0] < 0x3D) return; gSpecialVar_0x8004 = 0x1; - MenuZeroFillScreen(); + Menu_EraseScreen(); ScriptContext2_Disable(); DestroyTask(taskid); } @@ -2650,8 +2650,8 @@ void sub_8117630(u8 taskid) u32 temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)]; ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1); StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(gStringVar4, 0x1, 0xF); gTasks[taskid].func = &sub_81174F8; } @@ -2660,7 +2660,7 @@ void Task_Roulette_0(u8 taskid) s32 temp; ConvertIntToDecimalStringN(gStringVar1, gTasks[taskid].data[0xD], 0x1, 0x4); StringExpandPlaceholders(gStringVar4, gOtherText_Coins); - MenuDrawTextWindow(0x0, 0x0, 0x9, 0x3); + Menu_DrawStdWindowFrame(0x0, 0x0, 0x9, 0x3); MenuPrint_RightAligned(gStringVar4, 0x9, 0x1); temp = gUnknown_083F8DF0[(gSpecialVar_0x8004 & 0x1) + (gSpecialVar_0x8004 >> 0x7 << 0x1)]; ConvertIntToDecimalStringN(gStringVar1, temp, 0x2, 0x1); @@ -2668,23 +2668,23 @@ void Task_Roulette_0(u8 taskid) { if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 0x1)) { - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(&gUnknown_081C4139, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(&gUnknown_081C4139, 0x1, 0xF); sub_8116C34(taskid , &sub_8117630, 0xFFFF, 0x3); } else { StringExpandPlaceholders(gStringVar4, &gUnknown_081C40DF); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(gStringVar4, 0x1, 0xF); gTasks[taskid].func = &sub_81174F8; } } else { StringExpandPlaceholders(gStringVar4, &gUnknown_081C411C); - MenuDrawTextWindow(0x0, 0xE, 0x1D, 0x13); - MenuPrint(gStringVar4, 0x1, 0xF); + Menu_DrawStdWindowFrame(0x0, 0xE, 0x1D, 0x13); + Menu_PrintText(gStringVar4, 0x1, 0xF); gTasks[taskid].func = &sub_81175DC; gTasks[taskid].data[0xD] = 0x0; gTasks[taskid].data[0x0] = 0x0; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 53308e856..d1ab2d512 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -215,7 +215,7 @@ extern u8 byte_3002A68; extern const u8 gUnknown_08E6C100[]; extern const u8 gUnknown_08E6C920[]; extern const u8 gUnknown_08E6D354[]; -extern const struct WindowConfig gWindowConfig_81E6F68; +extern const struct WindowTemplate gWindowConfig_81E6F68; extern const u8 *const gPokeblockNames[]; extern const struct Berry gBerries[]; @@ -993,12 +993,12 @@ static void sub_804E56C(void) } break; case 4: - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15); gBerryBlenderData->field_0++; break; case 5: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gBerryBlenderData->field_0++; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); @@ -1184,8 +1184,8 @@ static void sub_804E9F8(void) } break; case 5: - MenuDrawTextWindow(0, 13, 29, 19); - MenuPrint(gOtherText_LinkStandby3, 1, 14); + Menu_DrawStdWindowFrame(0, 13, 29, 19); + Menu_PrintText(gOtherText_LinkStandby3, 1, 14); gBerryBlenderData->field_0 = 8; gBerryBlenderData->framesToWait = 0; break; @@ -1209,7 +1209,7 @@ static void sub_804E9F8(void) case 10: if (++gBerryBlenderData->framesToWait > 20) { - MenuZeroFillScreen(); + Menu_EraseScreen(); if (GetBlockReceivedStatus() == sub_8008198()) { for (i = 0; i < GetLinkPlayerCount(); i++) @@ -1309,12 +1309,12 @@ static void sub_804E9F8(void) PlayBGM(BGM_CYCLING); break; case 100: - MenuDrawTextWindow(0, 13, 29, 19); + Menu_DrawStdWindowFrame(0, 13, 29, 19); MenuPrintMessage(gOtherText_LinkNotFound, 1, 15); gBerryBlenderData->field_0++; break; case 101: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gBerryBlenderData->field_0++; break; case 102: @@ -2500,9 +2500,9 @@ static void sub_80508D4(u8 value) static void sub_80508FC(void) { gBerryBlenderData->field_AA = 0; - MenuDrawTextWindow(23, 8, 28, 13); + Menu_DrawStdWindowFrame(23, 8, 28, 13); sub_814A5C0(0, -1, 12, 0x2D9F, 32); - MenuPrint(gOtherText_YesNoTerminating, 24, 9); + Menu_PrintText(gOtherText_YesNoTerminating, 24, 9); sub_80508D4(gBerryBlenderData->field_AA); } @@ -2575,11 +2575,11 @@ static void sub_8050954(void) break; case 7: gBerryBlenderData->field_6F++; - MenuDrawTextWindow(0, 14, 29, 19); + Menu_DrawStdWindowFrame(0, 14, 29, 19); MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15); break; case 8: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gBerryBlenderData->field_6F++; break; case 9: @@ -2654,7 +2654,7 @@ static void sub_8050954(void) } break; case 13: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { SetMainCallback2(sub_8050E30); gBerryBlenderData->field_6F = 0; @@ -2746,7 +2746,7 @@ static void sub_8050E30(void) case 1: gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); #ifdef ENGLISH StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_OtherCaseIsFull); @@ -2759,7 +2759,7 @@ static void sub_8050E30(void) case 2: gBerryBlenderData->field_6F++; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); #ifdef ENGLISH StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name); StringAppend(gStringVar4, gOtherText_NoBerriesForBlend); @@ -2770,7 +2770,7 @@ static void sub_8050E30(void) MenuPrintMessage(gStringVar4, 1, 15); break; case 3: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_6F++; @@ -2781,8 +2781,8 @@ static void sub_8050E30(void) gBerryBlenderData->field_6F = 5; break; case 5: - MenuDrawTextWindow(0, 14, 29, 19); - MenuPrint(gMultiText_Saving, 2, 15); + Menu_DrawStdWindowFrame(0, 14, 29, 19); + Menu_PrintText(gMultiText_Saving, 2, 15); sub_80084A4(); gBerryBlenderData->field_6F++; break; @@ -2859,17 +2859,17 @@ static void sub_80510E8(void) case 1: gBerryBlenderData->field_6F = 3; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); MenuPrintMessage(gOtherText_CaseIsFull, 1, 15); break; case 2: gBerryBlenderData->field_6F++; DestroyMenuCursor(); - MenuZeroFillWindowRect(23, 8, 28, 13); + Menu_EraseWindowRect(23, 8, 28, 13); MenuPrintMessage(gOtherText_OutOfBerries, 1, 15); break; case 3: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) gBerryBlenderData->field_6F = 9; break; case 9: @@ -3081,13 +3081,13 @@ void unref_sub_80516F8(u8 taskID) if (task->data[0] == 100) { ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); - MenuDrawTextWindow(4, 4, 10, 12); + Menu_DrawStdWindowFrame(4, 4, 10, 12); for (i = 0; i < 3; i++) { if (gLinkPlayers[i + 1].trainerId != 0) - MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5); - MenuDrawTextWindow(0, 13, 29, 19); - MenuPrint(gOtherText_PressAToStart, 1, 15); + Menu_PrintText(gUnknown_08216284[i], 5, (2 * i) + 5); + Menu_DrawStdWindowFrame(0, 13, 29, 19); + Menu_PrintText(gOtherText_PressAToStart, 1, 15); } } if (gMain.newKeys & A_BUTTON) @@ -3099,7 +3099,7 @@ void unref_sub_80516F8(u8 taskID) else { if (task->data[0] == 10) - MenuPrint(gOtherText_PleaseWait, 3, 10); + Menu_PrintText(gOtherText_PleaseWait, 3, 10); if (++task->data[0] > 120) task->data[0] = 0; if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1) @@ -3348,7 +3348,7 @@ static bool8 Blender_PrintBlendingResults(void) u8* textPtr; u16 secondsPassed, minutes, seconds; - MenuDrawTextWindow(4, 2, 25, 17); + Menu_DrawStdWindowFrame(4, 2, 25, 17); sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160); for (i = 0; i < gBerryBlenderData->playersNo; i++) { @@ -3370,7 +3370,7 @@ static bool8 Blender_PrintBlendingResults(void) textPtr += 3; textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); sub_8072C74(textPtr, text[0], 157, 0); - MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); + Menu_PrintText(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); } ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); textPtr = gBerryBlenderData->stringVar; @@ -3388,7 +3388,7 @@ static bool8 Blender_PrintBlendingResults(void) textPtr = sub_8072C74(textPtr, text[0], 136, 1); #endif StringCopy(textPtr, gOtherText_RPM); - MenuPrint(gBerryBlenderData->stringVar, 5, 13); + Menu_PrintText(gBerryBlenderData->stringVar, 5, 13); secondsPassed = gBerryBlenderData->gameFrameTime / 60; seconds = secondsPassed % 60; @@ -3408,7 +3408,7 @@ static bool8 Blender_PrintBlendingResults(void) textPtr = sub_8072C74(textPtr, text[1], 136, 1); StringCopy(textPtr, gOtherText_Sec); - MenuPrint(gBerryBlenderData->stringVar, 5, 15); + Menu_PrintText(gBerryBlenderData->stringVar, 5, 15); gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_0++; @@ -3419,8 +3419,8 @@ static bool8 Blender_PrintBlendingResults(void) gBerryBlenderData->field_0++; break; case 5: - MenuZeroFillScreen(); - MenuDrawTextWindow(0, 14, 29, 19); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 14, 29, 19); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { if (gBerryBlenderData->chosenItemID[i] != 0) @@ -3436,7 +3436,7 @@ static bool8 Blender_PrintBlendingResults(void) gBerryBlenderData->field_0++; break; case 6: - if (MenuUpdateWindowText()) + if (Menu_UpdateWindowText()) { Blender_TrySettingRecord(); return TRUE; @@ -3536,7 +3536,7 @@ static bool8 Blender_PrintBlendingRanking(void) } break; case 3: - MenuDrawTextWindow(4, 2, 25, 17); + Menu_DrawStdWindowFrame(4, 2, 25, 17); sub_8072BD8(gOtherText_Ranking, 5, 3, 160); gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0); @@ -3575,7 +3575,7 @@ static bool8 Blender_PrintBlendingRanking(void) txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); - MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); + Menu_PrintText(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); } gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_0++; @@ -3625,10 +3625,10 @@ static void BlenderDebug_PrintBerryData(void) u8 i; StringCopy(text, sText_BPM); - MenuPrint(text, 2, 0); + Menu_PrintText(text, 2, 0); ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3); - MenuPrint(text, 6, 0); + Menu_PrintText(text, 6, 0); for (i = 0; i < 4; i++) { @@ -3646,7 +3646,7 @@ static void BlenderDebug_PrintBerryData(void) text[7] = EOS; } var = (i * 3) + 3; - MenuPrint(text, 2, var); + Menu_PrintText(text, 2, var); ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2); StringAppend(text, sText_Space); @@ -3666,12 +3666,12 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2); text[17] = EOS; - MenuPrint(text, 7, var); + Menu_PrintText(text, 7, var); } if (sBlenderDebug.pokeblock.color != 0) { StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]); - MenuPrint(text, 2, 15); + Menu_PrintText(text, 2, 15); ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2); StringAppend(text, sText_Space); @@ -3691,7 +3691,7 @@ static void BlenderDebug_PrintBerryData(void) ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2); text[17] = EOS; - MenuPrint(text, 7, 17); + Menu_PrintText(text, 7, 17); } } @@ -3743,7 +3743,7 @@ static void sub_80527BC(void) gUnknown_020297DC = 0; } - MenuPrint(text, 2, 15); + Menu_PrintText(text, 2, 15); } static void sub_8052918(void) @@ -3845,9 +3845,9 @@ void ShowBerryBlenderRecordWindow(void) u8 text[30]; s32 i; - MenuDrawTextWindow(6, 3, 23, 16); - MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); - MenuPrint(gMultiText_2P3P4P, 8, 9); + Menu_DrawStdWindowFrame(6, 3, 23, 16); + Menu_PrintText(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4); + Menu_PrintText(gMultiText_2P3P4P, 8, 9); for (i = 0; i < 3; i++) { @@ -3865,7 +3865,7 @@ void ShowBerryBlenderRecordWindow(void) txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2); StringAppend(txtPtr, gOtherText_RPM); - MenuPrint(text, 15, i * 2 + 9); + Menu_PrintText(text, 15, i * 2 + 9); } } diff --git a/src/scene/credits.c b/src/scene/credits.c index 17c1bf263..54b517a91 100644 --- a/src/scene/credits.c +++ b/src/scene/credits.c @@ -857,7 +857,7 @@ static void task_b_81441B8(u8 taskIdB) case 5: if (!gPaletteFade.active) { - MenuZeroFillWindowRect(0, 9, 29, 19); + Menu_EraseWindowRect(0, 9, 29, 19); gTasks[taskIdB].data[TDB_0] = 2; } return; diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index c0111de7d..8d961ad1f 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -472,9 +472,9 @@ static void CB2_EggHatch_0(void) break; case 1: SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84); - gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20); - LoadTextWindowGraphics(&gEggHatchData->window); + Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowConfig_81E6F84); + gEggHatchData->tileDataStartOffset = TextWindow_SetBaseTileNum(20); + TextWindow_LoadStdFrameGraphics(&gEggHatchData->window); gMain.state++; break; case 2: @@ -625,7 +625,7 @@ static void CB2_EggHatch_1(void) case 8: if (EggHatchUpdateWindowText()) { - MenuDrawTextWindow(22, 8, 27, 13); + Menu_DrawStdWindowFrame(22, 8, 27, 13); InitYesNoMenu(22, 8, 4); gEggHatchData->CB2_state++; } @@ -848,15 +848,15 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 static void EggHatchPrintMessage1(u8* src) { - sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); + Text_InitWindow8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); } static void EggHatchPrintMessage2(u8* src) { - sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); + Text_InitWindowAndPrintText(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15); } static bool8 EggHatchUpdateWindowText(void) { - return sub_80035AC(&gEggHatchData->window); + return Text_UpdateWindow(&gEggHatchData->window); } diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 4ee601360..323313fc2 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -209,7 +209,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -317,7 +317,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -374,14 +374,14 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) break; case 1: SetUpWindowConfig(&gWindowConfig_81E6F84); - InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); gMain.state++; break; case 2: - LoadTextWindowGraphics(&gUnknown_03004828->window); - gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2); - LoadTextWindowGraphics(&gUnknown_03004828->window); - MenuZeroFillScreen(); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); + TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); + Menu_EraseScreen(); ResetPaletteFade(); gMain.state++; SetHBlankCallback(EvoDummyFunc); @@ -481,7 +481,7 @@ static void CB2_EvolutionSceneUpdate(void) { AnimateSprites(); BuildOamBuffer(); - sub_800374C(&gUnknown_03004210); + Text_UpdateWindowInBattle(&gUnknown_03004210); UpdatePaletteFade(); RunTasks(); } @@ -490,7 +490,7 @@ static void CB2_TradeEvolutionSceneUpdate(void) { AnimateSprites(); BuildOamBuffer(); - sub_80035AC(&gUnknown_03004828->window); + Text_UpdateWindow(&gUnknown_03004828->window); UpdatePaletteFade(); RunTasks(); } @@ -558,7 +558,7 @@ static void Task_EvolutionScene(u8 taskID) if (!gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, BattleText_StartEvo); - sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); gTasks[taskID].tState++; } break; @@ -646,7 +646,7 @@ static void Task_EvolutionScene(u8 taskID) if (IsCryFinished() && !gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo); - sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); PlayBGM(BGM_FANFA5); gTasks[taskID].tState++; SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); @@ -715,7 +715,7 @@ static void Task_EvolutionScene(u8 taskID) if (IsCryFinished()) { StringExpandPlaceholders(gStringVar4, BattleText_StopEvo); - sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15); gTasks[taskID].tEvoWasStopped = TRUE; gTasks[taskID].tState = 14; } @@ -726,7 +726,7 @@ static void Task_EvolutionScene(u8 taskID) sub_8024CEC(); PlayFanfare(BGM_FANFA1); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter gTasks[taskID].tState++; } @@ -743,7 +743,7 @@ static void Task_EvolutionScene(u8 taskID) { sub_8024CEC(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -751,7 +751,7 @@ static void Task_EvolutionScene(u8 taskID) if (gUnknown_03004210.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -761,7 +761,7 @@ static void Task_EvolutionScene(u8 taskID) if (!IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tData9 = 5; gTasks[taskID].tdata10 = 9; gTasks[taskID].tLearnMoveState++; @@ -794,7 +794,7 @@ static void Task_EvolutionScene(u8 taskID) { sub_8023AD8(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); PlaySE(SE_SELECT); if (sEvoCursorPos != 0) gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; @@ -809,7 +809,7 @@ static void Task_EvolutionScene(u8 taskID) { sub_8023AD8(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); PlaySE(SE_SELECT); gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; } @@ -835,7 +835,7 @@ static void Task_EvolutionScene(u8 taskID) if (IsHMMove2(move)) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState = 11; } else @@ -848,7 +848,7 @@ static void Task_EvolutionScene(u8 taskID) RemoveMonPPBonus(mon, var); SetMonMoveSlot(mon, gMoveToLearn, var); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } } @@ -858,7 +858,7 @@ static void Task_EvolutionScene(u8 taskID) if (gUnknown_03004210.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -866,20 +866,20 @@ static void Task_EvolutionScene(u8 taskID) if (gUnknown_03004210.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tState = 19; } break; case 9: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tData9 = 10; gTasks[taskID].tdata10 = 0; gTasks[taskID].tLearnMoveState = 3; break; case 10: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); - sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); gTasks[taskID].tState = 14; break; case 11: @@ -900,7 +900,7 @@ static void Task_TradeEvolutionScene(u8 taskID) { case 0: StringExpandPlaceholders(gStringVar4, BattleText_StartEvo); - sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState++; break; case 1: @@ -988,7 +988,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (IsCryFinished() && !gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo); - sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); PlayFanfare(BGM_FANFA5); gTasks[taskID].tState++; SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); @@ -1022,7 +1022,7 @@ static void Task_TradeEvolutionScene(u8 taskID) else { PlayBGM(BGM_SHINKA); - sub_8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState++; } } @@ -1040,7 +1040,7 @@ static void Task_TradeEvolutionScene(u8 taskID) sub_8024CEC(); PlayFanfare(BGM_FANFA1); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter gTasks[taskID].tState++; } @@ -1057,7 +1057,7 @@ static void Task_TradeEvolutionScene(u8 taskID) { sub_8024CEC(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -1065,7 +1065,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -1075,7 +1075,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (!IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tData9 = 5; gTasks[taskID].tdata10 = 9; gTasks[taskID].tLearnMoveState++; @@ -1083,10 +1083,10 @@ static void Task_TradeEvolutionScene(u8 taskID) case 3: if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { - DrawTextWindow(&gUnknown_03004828->window, 24, 8, 29, 13); + TextWindow_DrawStdFrame(&gUnknown_03004828->window, 24, 8, 29, 13); sEvoCursorPos = 0; - InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); - sub_8002F44(&gUnknown_03004828->window); + Text_InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); + Text_PrintWindow8002F44(&gUnknown_03004828->window); sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); sub_81150D8(); gTasks[taskID].tLearnMoveState++; @@ -1113,7 +1113,7 @@ static void Task_TradeEvolutionScene(u8 taskID) ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); PlaySE(SE_SELECT); if (sEvoCursorPos != 0) gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; @@ -1129,7 +1129,7 @@ static void Task_TradeEvolutionScene(u8 taskID) ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); PlaySE(SE_SELECT); gTasks[taskID].tLearnMoveState = gTasks[taskID].tdata10; } @@ -1155,7 +1155,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (IsHMMove2(move)) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState = 11; } else @@ -1168,7 +1168,7 @@ static void Task_TradeEvolutionScene(u8 taskID) RemoveMonPPBonus(mon, var); SetMonMoveSlot(mon, gMoveToLearn, var); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } } @@ -1178,7 +1178,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tLearnMoveState++; } break; @@ -1186,20 +1186,20 @@ static void Task_TradeEvolutionScene(u8 taskID) if (gUnknown_03004828->window.state == 0 && !IsSEPlaying()) { StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState = 15; } break; case 9: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tData9 = 10; gTasks[taskID].tdata10 = 0; gTasks[taskID].tLearnMoveState = 3; break; case 10: StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]); - sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); + Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gTasks[taskID].tState = 13; break; case 11: diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 1751ee99c..ae2ff5f87 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -558,8 +558,8 @@ static void sub_814217C(u8 taskID) lastSavedTeam--; } *lastSavedTeam = *fameMons; - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gMenuText_HOFSaving, 3, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gMenuText_HOFSaving, 3, 15); gTasks[taskID].func = sub_8142274; } @@ -617,7 +617,7 @@ static void sub_8142320(u8 taskID) gSprites[spriteID].data[0] = 0; gSprites[spriteID].callback = sub_81435DC; gTasks[taskID].tMonSpriteID(currPokeID) = spriteID; - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskID].func = sub_8142404; } @@ -670,7 +670,7 @@ static void sub_8142570(u8 taskID) if (gTasks[taskID].tMonSpriteID(i) != 0xFF) gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0; } - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); sub_8143068(0, 15); PlaySE(SE_DENDOU); gTasks[taskID].tFrameCount = 400; @@ -694,7 +694,7 @@ static void sub_8142618(u8 taskID) gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1; } BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F); - MenuZeroFillWindowRect(0, 14, 29, 19); + Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskID].tFrameCount = 7; gTasks[taskID].func = sub_81426F8; } @@ -732,10 +732,10 @@ static void sub_8142794(u8 taskID) gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++; else { - MenuDrawTextWindow(1, 2, 15, 9); + Menu_DrawStdWindowFrame(1, 2, 15, 9); HallOfFame_PrintPlayerInfo(1, 2); - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gMenuText_HOFCongratulations, 4, 15); + Menu_DrawStdWindowFrame(2, 14, 27, 19); + Menu_PrintText(gMenuText_HOFCongratulations, 4, 15); gTasks[taskID].func = sub_8142818; } } @@ -930,7 +930,7 @@ static void sub_8142B04(u8 taskID) stringPtr[1] = 0x13; stringPtr[2] = 0xF0; stringPtr[3] = EOS; - MenuPrint(gStringVar1, 0, 0); + Menu_PrintText(gStringVar1, 0, 0); gTasks[taskID].func = sub_8142CC8; } @@ -1042,14 +1042,14 @@ static void sub_8142FCC(u8 taskID) static void sub_8142FEC(u8 taskID) { - MenuDrawTextWindow(2, 14, 27, 19); + Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gMenuText_HOFCorrupt, 3, 15); gTasks[taskID].func = sub_814302C; } static void sub_814302C(u8 taskID) { - if (MenuUpdateWindowText() && gMain.newKeys & A_BUTTON) + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) gTasks[taskID].func = sub_8142F78; } @@ -1086,7 +1086,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) } } - MenuPrint(gStringVar1, a1 + 4, a2 + 1); + Menu_PrintText(gStringVar1, a1 + 4, a2 + 1); stringPtr = gStringVar1; for (i = 0; i < 10 && currMon->nick[i] != EOS; stringPtr[i] = currMon->nick[i], i++) {} @@ -1099,8 +1099,8 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) stringPtr[1] = 0x13; stringPtr[2] = 0xA0; stringPtr[3] = EOS; - MenuPrint(gStringVar1, a1 + 9, a2 + 1); - MenuZeroFillWindowRect(0, a2 + 3, 29, a2 + 4); + Menu_PrintText(gStringVar1, a1 + 9, a2 + 1); + Menu_EraseWindowRect(0, a2 + 3, 29, a2 + 4); } else { @@ -1139,7 +1139,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) stringPtr[2] = 0xA0; stringPtr[3] = EOS; - MenuPrint(gStringVar1, a1 + 9, a2 + 1); + Menu_PrintText(gStringVar1, a1 + 9, a2 + 1); monData = currMon->lvl; @@ -1157,14 +1157,14 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2) stringPtr[2] = 0x30; stringPtr[3] = EOS; - MenuPrint(gStringVar1, a1 + 7, a2 + 3); + Menu_PrintText(gStringVar1, a1 + 7, a2 + 3); monData = currMon->tid; stringPtr = StringCopy(gStringVar1, gOtherText_IDNumber); ConvertIntToDecimalStringN(stringPtr, monData, 2, 5); - MenuPrint(gStringVar1, a1 + 13, a2 + 3); + Menu_PrintText(gStringVar1, a1 + 13, a2 + 3); } } @@ -1175,15 +1175,15 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) u8* stringPtr; u16 visibleTid; - MenuPrint(gOtherText_Name, a0 + 1, a1 + 1); + Menu_PrintText(gOtherText_Name, a0 + 1, a1 + 1); MenuPrint_RightAligned(gSaveBlock2.playerName, a0 + 14, a1 + 1); - MenuPrint(gOtherText_IDNumber2, a0 + 1, a1 + 3); + Menu_PrintText(gOtherText_IDNumber2, a0 + 1, a1 + 3); visibleTid = ByteRead16(gSaveBlock2.playerTrainerId); ConvertIntToDecimalStringN(gStringVar1, visibleTid, 2, 5); MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 3); - MenuPrint(gMainMenuString_Time, a0 + 1, a1 + 5); + Menu_PrintText(gMainMenuString_Time, a0 + 1, a1 + 5); stringPtr = ConvertIntToDecimalString(gStringVar1, gSaveBlock2.playTimeHours); stringPtr[0] = CHAR_SPACE; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index f397e5ebb..b13006c13 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -292,7 +292,7 @@ void ShowContestEntryMonPic(void) u8 left = CONTEST_ENTRY_PIC_LEFT; u8 top = CONTEST_ENTRY_PIC_TOP; - MenuDrawTextWindow(left, top, 19, 13); + Menu_DrawStdWindowFrame(left, top, 19, 13); species = gContestMons[gSpecialVar_0x8006].species; var1 = gContestMons[gSpecialVar_0x8006].personality; var2 = gContestMons[gSpecialVar_0x8006].otId; @@ -349,7 +349,7 @@ void sub_80C5190(u8 taskId) task->data[0]++; break; case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); + Menu_EraseWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); DestroyTask(taskId); break; case 1: -- cgit v1.2.3 From 8869cbc98e2f8e761e9ff89182933643992e2bd7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 00:16:15 -0600 Subject: s/gWindowConfig/gWindowTemplate/g --- src/battle/battle_2.c | 16 ++--- src/battle/reshow_battle_screen.c | 4 +- src/contest.c | 8 +-- src/debug/matsuda_debug_menu.c | 12 ++-- src/debug/sound_check_menu.c | 8 +-- src/easy_chat_1.c | 10 +-- src/easy_chat_2.c | 30 ++++----- src/engine/clear_save_data_menu.c | 4 +- src/engine/link.c | 8 +-- src/engine/main_menu.c | 12 ++-- src/engine/mystery_event_menu.c | 4 +- src/engine/naming_screen.c | 22 +++---- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 4 +- src/engine/save_failed_screen.c | 4 +- src/engine/text.c | 122 +++++++++++++++++------------------ src/engine/trade.c | 40 ++++++------ src/field/berry_tag_screen.c | 4 +- src/field/diploma.c | 4 +- src/field/field_effect.c | 8 +-- src/field/field_message_box.c | 2 +- src/field/field_region_map.c | 4 +- src/field/field_screen_effect.c | 2 +- src/field/item_menu.c | 4 +- src/field/mauville_man.c | 2 +- src/field/overworld.c | 16 ++--- src/field/party_menu.c | 12 ++-- src/field/pokeblock.c | 24 +++---- src/field/region_map.c | 4 +- src/field/script_menu.c | 2 +- src/field/shop.c | 4 +- src/field/slot_machine.c | 8 +-- src/field/start_menu.c | 6 +- src/field/starter_choose.c | 4 +- src/field/use_pokeblock.c | 14 ++-- src/field/wallclock.c | 4 +- src/pokemon/learn_move.c | 24 +++---- src/pokemon/mail.c | 4 +- src/pokemon/pokeblock_feed.c | 4 +- src/pokemon/pokedex.c | 28 ++++---- src/pokemon/pokemon_summary_screen.c | 4 +- src/pokenav_before.c | 24 +++---- src/roulette.c | 4 +- src/scene/berry_blender.c | 18 +++--- src/scene/contest_painting.c | 4 +- src/scene/credits.c | 4 +- src/scene/egg_hatch.c | 4 +- src/scene/evolution_scene.c | 12 ++-- src/scene/hall_of_fame.c | 16 ++--- 49 files changed, 295 insertions(+), 295 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index dccf73fa8..42cc0b538 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -234,7 +234,7 @@ void InitBattle(void) } //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); sub_80895F8(gUnknown_081F9674); - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -245,9 +245,9 @@ void InitBattle(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; gBattleTerrain = BattleSetup_GetTerrain(); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); - Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); - Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC); sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); @@ -1210,7 +1210,7 @@ void c2_8011A1C(void) gUnknown_03004DE0[0][i] = 0xFF10; gUnknown_03004DE0[1][i] = 0xFF10; } - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -1221,9 +1221,9 @@ void c2_8011A1C(void) gUnknown_030041B0 = 0; gUnknown_030041B8 = 0; - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); - Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowConfig_81E71D0); - Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowConfig_81E71EC); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); + Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC); sub_800D6D4(); LoadCompressedPalette(gUnknown_08D004E0, 0, 64); sub_800D74C(); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index fded87090..bf77e5c07 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -78,9 +78,9 @@ static void CB2_ReshowBattleScreenAfterMenu(void) { case 0: dp12_8087EA4(); - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; gBattle_BG1_X = 0; diff --git a/src/contest.c b/src/contest.c index c935f0ecb..3677a1d25 100644 --- a/src/contest.c +++ b/src/contest.c @@ -357,16 +357,16 @@ void LoadContestBgAfterMoveAnim(void) void SetUpContestWindow(void) { - SetUpWindowConfig(&gWindowConfig_81E6FD8); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); - Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6FF4); + SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6FF4); } void sub_80AB350(void) { u8 i; - LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); FillPalette(0, 0, 2); for (i = 10; i < 14; i++) LoadPalette(gPlttBufferUnfaded + 241, 240 + i, 2); diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 2c20ba72b..52b83d4b1 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -449,8 +449,8 @@ static void sub_80A9F50(void) { REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; - SetUpWindowConfig(&gWindowConfig_81E6C3C); - Text_InitWindowWithTemplate(&gMenuWindow, &gWindowConfig_81E6C3C); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6C3C); REG_MOSAIC = 0; REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -490,7 +490,7 @@ static void sub_80A9FE4(void) } } sub_80034D4((void *)VRAM, ptr); - LoadFontDefaultPalette(&gWindowConfig_81E6C3C); + LoadFontDefaultPalette(&gWindowTemplate_81E6C3C); } static void sub_80AA064(void) @@ -1075,9 +1075,9 @@ void unref_sub_80AB084(u8 *text) break; } } - SetUpWindowConfig(&gWindowConfig_81E6FD8); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6FD8); - LoadFontDefaultPalette(&gWindowConfig_81E6FD8); + SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); + LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); } diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 4f4a7bd06..411ff6f54 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -132,8 +132,8 @@ void CB2_StartSoundCheckMenu(void) ResetPaletteFade(); ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_WIN0H = WIN_RANGE(0, 0); REG_WIN0V = WIN_RANGE(0, 0); @@ -1217,8 +1217,8 @@ void Task_InitCryTest(u8 taskId) struct CryRelatedStruct cryStruct, cryStruct2; u8 zero; - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); gSoundTestCryNum = 1; ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 908e4b9d6..8d68adfe9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -16,8 +16,8 @@ #include "strings.h" #include "unknown_task.h" -extern const struct WindowTemplate gWindowConfig_81E6D54; -extern const struct WindowTemplate gWindowConfig_81E6DA8; +extern const struct WindowTemplate gWindowTemplate_81E6D54; +extern const struct WindowTemplate gWindowTemplate_81E6DA8; extern void sub_80546B8(void); @@ -305,11 +305,11 @@ void sub_80E62F8(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E6DA8); + SetUpWindowConfig(&gWindowTemplate_81E6DA8); break; case 2: - InitMenuWindow(&gWindowConfig_81E6D54); - InitMenuWindow(&gWindowConfig_81E6DA8); + InitMenuWindow(&gWindowTemplate_81E6D54); + InitMenuWindow(&gWindowTemplate_81E6DA8); Menu_EraseScreen(); break; case 3: diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 5acdba04e..66af7fc04 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1064,7 +1064,7 @@ void sub_80E91B0(const u8 *a, u8 b, u8 c, u8 d) void sub_80E91D4(u8 a) { - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); if (a == 10) { @@ -1168,7 +1168,7 @@ void sub_80E9368(u8 a) break; } - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); gEasyChatStruct->unk9F8E[0] = EXT_CTRL_CODE_BEGIN; gEasyChatStruct->unk9F8E[1] = 5; gEasyChatStruct->unk9F8E[2] = 1; @@ -1189,7 +1189,7 @@ void sub_80E9368(u8 a) Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); Menu_PrintText(gEasyChatStruct->unk9F8E, 28, 0); } - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E948C(void) @@ -1219,7 +1219,7 @@ void sub_80E948C(void) void sub_80E95A4(void) { - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); switch (gEasyChatStruct->unk9) { case 4: @@ -1241,7 +1241,7 @@ void sub_80E95A4(void) sub_80E9620(3, 6); break; } - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E9620(u16 a, u16 b) @@ -1281,7 +1281,7 @@ void sub_80E9620(u16 a, u16 b) void sub_80E9744(void) { - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); switch (gEasyChatStruct->unk9) { case 4: @@ -1303,7 +1303,7 @@ void sub_80E9744(void) sub_80E97C0(3, 6); break; } - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E97C0(u16 a, u16 b) @@ -1348,7 +1348,7 @@ void sub_80E98C4(void) u8 r1; u8 r3; - BasicInitMenuWindow(&gWindowConfig_81E6D8C); + BasicInitMenuWindow(&gWindowTemplate_81E6D8C); switch (gEasyChatStruct->unk9) { case 4: @@ -1379,7 +1379,7 @@ void sub_80E98C4(void) return; } Menu_BlankWindowRect(2, r1, 27, r3 * 2 + r1 - 1); - BasicInitMenuWindow(&gWindowConfig_81E6DA8); + BasicInitMenuWindow(&gWindowTemplate_81E6DA8); } void sub_80E9940(u8 *a, u8 b) @@ -1420,7 +1420,7 @@ const u8 *const gUnknown_083DBEAC[] = void sub_80E9974(void) { - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); if (gEasyChatStruct->unk26 == 0) { u16 i; @@ -1479,7 +1479,7 @@ void sub_80E9AD4(void) { u16 i; - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); for (i = 0; i < 16; i++) sub_80E9C74(i); } @@ -1502,16 +1502,16 @@ void sub_80E9AF8(u16 a) for (i = 0; i < gEasyChatStruct->unk99A6[a]; i++) { if (sub_80EB2D4(gEasyChatStruct->unk9A2A[a][i]) == 7) - BasicInitMenuWindow(&gWindowConfig_81E6D70); + BasicInitMenuWindow(&gWindowTemplate_81E6D70); else - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); sub_80EB218(r8, gEasyChatStruct->unk9A2A[a][i], 9); sub_80E9A60(gEasyChatStruct->unk9E14, i * 11 + 4, a * 2); } } else { - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); for (i = 0; i < gEasyChatStruct->unk99A6[a]; i++) { sub_80EB218(r8, gEasyChatStruct->unk9A2A[a][i], 9); @@ -1562,7 +1562,7 @@ void sub_80E9D7C(void) u16 r4; u16 i; - BasicInitMenuWindow(&gWindowConfig_81E6D54); + BasicInitMenuWindow(&gWindowTemplate_81E6D54); if (gEasyChatStruct->unk1C0 < 0) { r6 = -gEasyChatStruct->unk1C0; diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index ae6c85180..6a597690a 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -133,8 +133,8 @@ static u8 InitClearSaveDataScreen(void) ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); ime = REG_IME; diff --git a/src/engine/link.c b/src/engine/link.c index a2df02b5f..d52d0bb7a 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -238,8 +238,8 @@ void LinkTestScreen(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); ResetBlockSend(); gLinkType = 0x1111; OpenLink(); @@ -1236,8 +1236,8 @@ void CB2_LinkError(void) FillPalette(0, 0, 2); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E7198); + SetUpWindowConfig(&gWindowTemplate_81E7198); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E7198); Menu_EraseScreen(); REG_BLDALPHA = 0; REG_BG0VOFS = 0; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 623969802..723886664 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -233,8 +233,8 @@ u32 InitMainMenu(u8 a1) ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (a1) BeginNormalPaletteFade(-1, 0, 0x10, 0, 0x0000); // fade to black @@ -750,8 +750,8 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); REG_WIN0H = 0; REG_WIN0V = 0; REG_WININ = 0; @@ -1373,8 +1373,8 @@ void CB_ContinueNewGameSpeechPart2() FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (gSaveBlock2.playerGender != MALE) { diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index abb912938..278760233 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -45,8 +45,8 @@ void CB2_InitMysteryEventMenu(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; REG_BLDCNT = 0; diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 5685584f5..880187dc0 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -325,8 +325,8 @@ static void NamingScreen_Init(void) static void NamingScreen_SetUpWindow(void) { - SetUpWindowConfig(&gWindowConfig_81E6E88); - InitMenuWindow(&gWindowConfig_81E6E88); + SetUpWindowConfig(&gWindowTemplate_81E6E88); + InitMenuWindow(&gWindowTemplate_81E6E88); } static void NamingScreen_ResetObjects(void) @@ -1610,7 +1610,7 @@ static void DisplaySentToPCMessage(void) { StringCopy(gStringVar1, namingScreenDataPtr->destBuffer); StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC); - BasicInitMenuWindow(&gWindowConfig_81E6E88); + BasicInitMenuWindow(&gWindowTemplate_81E6E88); Menu_DisplayDialogueFrame(); MenuPrintMessageDefaultCoords(gStringVar4); } @@ -1760,16 +1760,16 @@ static void (*const gUnknown_083CE310[][2])(void) = static const struct WindowTemplate *const gUnknown_083CE328[][2][2] = { { - {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8}, - {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0}, + {&gWindowTemplate_81E6EDC, &gWindowTemplate_81E6EF8}, + {&gWindowTemplate_81E6EA4, &gWindowTemplate_81E6EC0}, }, { - {&gWindowConfig_81E6EA4, &gWindowConfig_81E6EC0}, - {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30}, + {&gWindowTemplate_81E6EA4, &gWindowTemplate_81E6EC0}, + {&gWindowTemplate_81E6F14, &gWindowTemplate_81E6F30}, }, { - {&gWindowConfig_81E6F14, &gWindowConfig_81E6F30}, - {&gWindowConfig_81E6EDC, &gWindowConfig_81E6EF8}, + {&gWindowTemplate_81E6F14, &gWindowTemplate_81E6F30}, + {&gWindowTemplate_81E6EDC, &gWindowTemplate_81E6EF8}, }, }; @@ -1843,7 +1843,7 @@ static void PrintKeyboardCharacters(u8 page) //print letters on page static void sub_80B78A8(void) { - BasicInitMenuWindow(&gWindowConfig_81E6F4C); + BasicInitMenuWindow(&gWindowTemplate_81E6F4C); gUnknown_083CE358[namingScreenDataPtr->templateNum](); gUnknown_083CE368[namingScreenDataPtr->template->unk3](); Menu_PrintText(namingScreenDataPtr->template->title, 9, 2); @@ -1886,7 +1886,7 @@ static void sub_80B7960(void) string[5] = 1; string += 6; StringCopy(string, namingScreenDataPtr->textBuffer); - BasicInitMenuWindow(&gWindowConfig_81E6F4C); + BasicInitMenuWindow(&gWindowTemplate_81E6F4C); Menu_PrintText(gStringVar1, namingScreenDataPtr->unk2, 4); } diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index f35ed5b5a..2b9412e45 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -116,11 +116,11 @@ void CB2_InitOptionMenu(void) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowConfig_81E71B4); + SetUpWindowConfig(&gWindowTemplate_81E71B4); gMain.state++; break; case 3: - MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E71B4); gMain.state++; break; case 4: diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index eb823b84b..37b1c767e 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -443,8 +443,8 @@ void CB2_InitResetRtcScreen(void) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = 4352; SetVBlankCallback(VBlankCB_ResetRtcScreen); SetMainCallback2(CB2_ResetRtcScreen); diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index a4642d241..4609f3fd8 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -120,8 +120,8 @@ static void CB2_SaveFailedScreen(void) ResetPaletteFade(); LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); diff --git a/src/engine/text.c b/src/engine/text.c index 2d6d95877..15a535ff0 100644 --- a/src/engine/text.c +++ b/src/engine/text.c @@ -492,7 +492,7 @@ static const ShiftGlyphTileShadowedFunc sShiftGlyphTileShadowedFuncs[] = ShiftGlyphTile_ShadowedFont_Width8, }; -const struct WindowTemplate gWindowConfig_81E6C3C = +const struct WindowTemplate gWindowTemplate_81E6C3C = { 0, // BG number 2, // BG character base block @@ -513,7 +513,7 @@ const struct WindowTemplate gWindowConfig_81E6C3C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6C58 = +const struct WindowTemplate gWindowTemplate_81E6C58 = { 0, // BG number 0, // BG character base block @@ -534,7 +534,7 @@ const struct WindowTemplate gWindowConfig_81E6C58 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6C74 = +const struct WindowTemplate gWindowTemplate_81E6C74 = { 0, // BG number 0, // BG character base block @@ -555,7 +555,7 @@ const struct WindowTemplate gWindowConfig_81E6C74 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E6C90 = +const struct WindowTemplate gWindowTemplate_81E6C90 = { 0, // BG number 1, // BG character base block @@ -576,7 +576,7 @@ const struct WindowTemplate gWindowConfig_81E6C90 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6CAC = +const struct WindowTemplate gWindowTemplate_81E6CAC = { 0, // BG number 0, // BG character base block @@ -597,7 +597,7 @@ const struct WindowTemplate gWindowConfig_81E6CAC = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E6CC8 = +const struct WindowTemplate gWindowTemplate_81E6CC8 = { 2, // BG number 2, // BG character base block @@ -618,7 +618,7 @@ const struct WindowTemplate gWindowConfig_81E6CC8 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6CE4 = +const struct WindowTemplate gWindowTemplate_81E6CE4 = { 0, // BG number 2, // BG character base block @@ -639,7 +639,7 @@ const struct WindowTemplate gWindowConfig_81E6CE4 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D00 = +const struct WindowTemplate gWindowTemplate_81E6D00 = { 0, // BG number 0, // BG character base block @@ -660,7 +660,7 @@ const struct WindowTemplate gWindowConfig_81E6D00 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D1C = +const struct WindowTemplate gWindowTemplate_81E6D1C = { 1, // BG number 0, // BG character base block @@ -681,7 +681,7 @@ const struct WindowTemplate gWindowConfig_81E6D1C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D38 = +const struct WindowTemplate gWindowTemplate_81E6D38 = { 0, // BG number 0, // BG character base block @@ -702,7 +702,7 @@ const struct WindowTemplate gWindowConfig_81E6D38 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D54 = +const struct WindowTemplate gWindowTemplate_81E6D54 = { 3, // BG number 3, // BG character base block @@ -723,7 +723,7 @@ const struct WindowTemplate gWindowConfig_81E6D54 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D70 = +const struct WindowTemplate gWindowTemplate_81E6D70 = { 3, // BG number 3, // BG character base block @@ -744,7 +744,7 @@ const struct WindowTemplate gWindowConfig_81E6D70 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6D8C = +const struct WindowTemplate gWindowTemplate_81E6D8C = { 1, // BG number 0, // BG character base block @@ -765,7 +765,7 @@ const struct WindowTemplate gWindowConfig_81E6D8C = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6DA8 = +const struct WindowTemplate gWindowTemplate_81E6DA8 = { 0, // BG number 0, // BG character base block @@ -828,7 +828,7 @@ const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6DFC = +const struct WindowTemplate gWindowTemplate_81E6DFC = { 0, // BG number 2, // BG character base block @@ -849,7 +849,7 @@ const struct WindowTemplate gWindowConfig_81E6DFC = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E18 = +const struct WindowTemplate gWindowTemplate_81E6E18 = { 0, // BG number 2, // BG character base block @@ -870,7 +870,7 @@ const struct WindowTemplate gWindowConfig_81E6E18 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E34 = +const struct WindowTemplate gWindowTemplate_81E6E34 = { 1, // BG number 0, // BG character base block @@ -891,7 +891,7 @@ const struct WindowTemplate gWindowConfig_81E6E34 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E50 = +const struct WindowTemplate gWindowTemplate_81E6E50 = { 0, // BG number 2, // BG character base block @@ -912,7 +912,7 @@ const struct WindowTemplate gWindowConfig_81E6E50 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E6C = +const struct WindowTemplate gWindowTemplate_81E6E6C = { 0, // BG number 2, // BG character base block @@ -933,7 +933,7 @@ const struct WindowTemplate gWindowConfig_81E6E6C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6E88 = +const struct WindowTemplate gWindowTemplate_81E6E88 = { 0, // BG number 0, // BG character base block @@ -954,7 +954,7 @@ const struct WindowTemplate gWindowConfig_81E6E88 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EA4 = +const struct WindowTemplate gWindowTemplate_81E6EA4 = { 1, // BG number 0, // BG character base block @@ -975,7 +975,7 @@ const struct WindowTemplate gWindowConfig_81E6EA4 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EC0 = +const struct WindowTemplate gWindowTemplate_81E6EC0 = { 2, // BG number 2, // BG character base block @@ -996,7 +996,7 @@ const struct WindowTemplate gWindowConfig_81E6EC0 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EDC = +const struct WindowTemplate gWindowTemplate_81E6EDC = { 1, // BG number 0, // BG character base block @@ -1017,7 +1017,7 @@ const struct WindowTemplate gWindowConfig_81E6EDC = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6EF8 = +const struct WindowTemplate gWindowTemplate_81E6EF8 = { 2, // BG number 2, // BG character base block @@ -1038,7 +1038,7 @@ const struct WindowTemplate gWindowConfig_81E6EF8 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F14 = +const struct WindowTemplate gWindowTemplate_81E6F14 = { 1, // BG number 0, // BG character base block @@ -1059,7 +1059,7 @@ const struct WindowTemplate gWindowConfig_81E6F14 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F30 = +const struct WindowTemplate gWindowTemplate_81E6F30 = { 2, // BG number 2, // BG character base block @@ -1080,7 +1080,7 @@ const struct WindowTemplate gWindowConfig_81E6F30 = BG_SCREEN_ADDR(29), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F4C = +const struct WindowTemplate gWindowTemplate_81E6F4C = { 3, // BG number 0, // BG character base block @@ -1101,7 +1101,7 @@ const struct WindowTemplate gWindowConfig_81E6F4C = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F68 = +const struct WindowTemplate gWindowTemplate_81E6F68 = { 0, // BG number 2, // BG character base block @@ -1122,7 +1122,7 @@ const struct WindowTemplate gWindowConfig_81E6F68 = BG_SCREEN_ADDR(13), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6F84 = +const struct WindowTemplate gWindowTemplate_81E6F84 = { 0, // BG number 2, // BG character base block @@ -1143,7 +1143,7 @@ const struct WindowTemplate gWindowConfig_81E6F84 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FA0 = +const struct WindowTemplate gWindowTemplate_81E6FA0 = { 1, // BG number 0, // BG character base block @@ -1164,7 +1164,7 @@ const struct WindowTemplate gWindowConfig_81E6FA0 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FBC = +const struct WindowTemplate gWindowTemplate_81E6FBC = { 0, // BG number 0, // BG character base block @@ -1185,7 +1185,7 @@ const struct WindowTemplate gWindowConfig_81E6FBC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FD8 = +const struct WindowTemplate gWindowTemplate_81E6FD8 = { 0, // BG number 0, // BG character base block @@ -1206,7 +1206,7 @@ const struct WindowTemplate gWindowConfig_81E6FD8 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E6FF4 = +const struct WindowTemplate gWindowTemplate_81E6FF4 = { 0, // BG number 0, // BG character base block @@ -1227,7 +1227,7 @@ const struct WindowTemplate gWindowConfig_81E6FF4 = BG_SCREEN_ADDR(24), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7010 = +const struct WindowTemplate gWindowTemplate_81E7010 = { 0, // BG number 0, // BG character base block @@ -1248,7 +1248,7 @@ const struct WindowTemplate gWindowConfig_81E7010 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E702C = +const struct WindowTemplate gWindowTemplate_81E702C = { 3, // BG number 2, // BG character base block @@ -1269,7 +1269,7 @@ const struct WindowTemplate gWindowConfig_81E702C = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7048 = +const struct WindowTemplate gWindowTemplate_81E7048 = { 2, // BG number 2, // BG character base block @@ -1290,7 +1290,7 @@ const struct WindowTemplate gWindowConfig_81E7048 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7064 = +const struct WindowTemplate gWindowTemplate_81E7064 = { 2, // BG number 2, // BG character base block @@ -1311,7 +1311,7 @@ const struct WindowTemplate gWindowConfig_81E7064 = BG_SCREEN_ADDR(14), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7080 = +const struct WindowTemplate gWindowTemplate_81E7080 = { 3, // BG number 0, // BG character base block @@ -1332,7 +1332,7 @@ const struct WindowTemplate gWindowConfig_81E7080 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E709C = +const struct WindowTemplate gWindowTemplate_81E709C = { 0, // BG number 0, // BG character base block @@ -1353,7 +1353,7 @@ const struct WindowTemplate gWindowConfig_81E709C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E70B8 = +const struct WindowTemplate gWindowTemplate_81E70B8 = { 2, // BG number 0, // BG character base block @@ -1374,7 +1374,7 @@ const struct WindowTemplate gWindowConfig_81E70B8 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E70D4 = +const struct WindowTemplate gWindowTemplate_81E70D4 = { 3, // BG number 0, // BG character base block @@ -1395,7 +1395,7 @@ const struct WindowTemplate gWindowConfig_81E70D4 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E70F0 = +const struct WindowTemplate gWindowTemplate_81E70F0 = { 0, // BG number 0, // BG character base block @@ -1416,7 +1416,7 @@ const struct WindowTemplate gWindowConfig_81E70F0 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E710C = +const struct WindowTemplate gWindowTemplate_81E710C = { 0, // BG number 0, // BG character base block @@ -1437,7 +1437,7 @@ const struct WindowTemplate gWindowConfig_81E710C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7128 = +const struct WindowTemplate gWindowTemplate_81E7128 = { 0, // BG number 2, // BG character base block @@ -1458,7 +1458,7 @@ const struct WindowTemplate gWindowConfig_81E7128 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7144 = +const struct WindowTemplate gWindowTemplate_81E7144 = { 0, // BG number 2, // BG character base block @@ -1479,7 +1479,7 @@ const struct WindowTemplate gWindowConfig_81E7144 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7160 = +const struct WindowTemplate gWindowTemplate_81E7160 = { 1, // BG number 1, // BG character base block @@ -1500,7 +1500,7 @@ const struct WindowTemplate gWindowConfig_81E7160 = BG_SCREEN_ADDR(10), // tilemap }; -const struct WindowTemplate gWindowConfig_81E717C = +const struct WindowTemplate gWindowTemplate_81E717C = { 0, // BG number 3, // BG character base block @@ -1521,7 +1521,7 @@ const struct WindowTemplate gWindowConfig_81E717C = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7198 = +const struct WindowTemplate gWindowTemplate_81E7198 = { 0, // BG number 2, // BG character base block @@ -1542,7 +1542,7 @@ const struct WindowTemplate gWindowConfig_81E7198 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E71B4 = +const struct WindowTemplate gWindowTemplate_81E71B4 = { 0, // BG number 2, // BG character base block @@ -1563,7 +1563,7 @@ const struct WindowTemplate gWindowConfig_81E71B4 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowConfig_81E71D0 = +const struct WindowTemplate gWindowTemplate_81E71D0 = { 1, // BG number 1, // BG character base block @@ -1584,7 +1584,7 @@ const struct WindowTemplate gWindowConfig_81E71D0 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E71EC = +const struct WindowTemplate gWindowTemplate_81E71EC = { 2, // BG number 1, // BG character base block @@ -1605,7 +1605,7 @@ const struct WindowTemplate gWindowConfig_81E71EC = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7208 = +const struct WindowTemplate gWindowTemplate_81E7208 = { 0, // BG number 2, // BG character base block @@ -1626,7 +1626,7 @@ const struct WindowTemplate gWindowConfig_81E7208 = BG_SCREEN_ADDR(28), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7224 = +const struct WindowTemplate gWindowTemplate_81E7224 = { 0, // BG number 0, // BG character base block @@ -1647,7 +1647,7 @@ const struct WindowTemplate gWindowConfig_81E7224 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowConfig_81E7240 = +const struct WindowTemplate gWindowTemplate_81E7240 = { 1, // BG number 2, // BG character base block @@ -1668,7 +1668,7 @@ const struct WindowTemplate gWindowConfig_81E7240 = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate gWindowConfig_81E725C = +const struct WindowTemplate gWindowTemplate_81E725C = { 0, // BG number 0, // BG character base block @@ -1689,7 +1689,7 @@ const struct WindowTemplate gWindowConfig_81E725C = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E7278 = +const struct WindowTemplate gWindowTemplate_81E7278 = { 0, // BG number 0, // BG character base block @@ -1710,7 +1710,7 @@ const struct WindowTemplate gWindowConfig_81E7278 = NULL, // tilemap }; -const struct WindowTemplate gWindowConfig_81E7294 = +const struct WindowTemplate gWindowTemplate_81E7294 = { 0, // BG number 0, // BG character base block @@ -2364,24 +2364,24 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to void sub_80034D4(u8 *tileData, const u8 *text) { - sub_8004E3C(&gWindowConfig_81E6C74, tileData, text); + sub_8004E3C(&gWindowTemplate_81E6C74, tileData, text); } u8 sub_80034EC(u8 *str) { - return Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6C74, str); + return Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowTemplate_81E6C74, str); } u8 *sub_8003504(u8 *dest, s32 value, u8 alignAmount, u8 alignType) { - sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + sTempWindow.template = (struct WindowTemplate *)&gWindowTemplate_81E6C74; Text_InitWindow(&sTempWindow, 0, 0, 0, 0); return AlignInt2(&sTempWindow, dest, value, alignAmount, alignType); } u8 *sub_8003558(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType) { - sTempWindow.template = (struct WindowTemplate *)&gWindowConfig_81E6C74; + sTempWindow.template = (struct WindowTemplate *)&gWindowTemplate_81E6C74; Text_InitWindow(&sTempWindow, src, 0, 0, 0); return AlignString(&sTempWindow, dest, src, alignAmount, alignType); } diff --git a/src/engine/trade.c b/src/engine/trade.c index d37b36f72..30e22b8d5 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1016,10 +1016,10 @@ void sub_8047CD8(void) static void sub_8047CE8(void) { u8 mpId; - sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC); + sub_804AFB8(&gWindowTemplate_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC); mpId = GetMultiplayerId(); - sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC); - sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8); + sub_804AFB8(&gWindowTemplate_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC); + sub_804AFB8(&gWindowTemplate_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8); sub_804ACD8(gUnknown_0820C14C[1], gUnknown_020296CC[8], 0x14); nullsub_5(3, 0); } @@ -1087,9 +1087,9 @@ static void sub_8047EC0(void) ResetTasks(); sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); - InitMenuWindow(&gWindowConfig_81E6CE4); - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + InitMenuWindow(&gWindowTemplate_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); Menu_EraseScreen(); @@ -1267,9 +1267,9 @@ static void sub_80484F4(void) ResetTasks(); sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); - InitMenuWindow(&gWindowConfig_81E6CE4); - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowConfig_81E6F84); + InitMenuWindow(&gWindowTemplate_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); Menu_EraseScreen(); @@ -3010,7 +3010,7 @@ u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon) GetMonGender(&gEnemyParty[whichPokemon]); GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL); } - return Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, a0); + return Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7294, a0); } #ifdef NONMATCHING @@ -3067,7 +3067,7 @@ static void sub_804A41C(u8 whichParty) GetMonData(pokemon, MON_DATA_NICKNAME, nickname); StringCopy10(string + 6, nickname); GetMonGender(pokemon); - string[5] = (50 - Text_GetStringWidthFromWindowTemplate(&gWindowConfig_81E7294, string + 6)) / 2; + string[5] = (50 - Text_GetStringWidthFromWindowTemplate(&gWindowTemplate_81E7294, string + 6)) / 2; Text_InitWindowAndPrintText(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]); } } @@ -3141,7 +3141,7 @@ static void sub_804A41C(u8 whichParty) "\tbl GetMonGender\n" "\tmov r1, sp\n" "\tadds r1, 0x22\n" - "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n" + "\tldr r0, _0804A518 @ =gWindowTemplate_81E7294\n" "\tbl Text_GetStringWidthFromWindowTemplate\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" @@ -3198,7 +3198,7 @@ static void sub_804A41C(u8 whichParty) "\tbx r0\n" "\t.align 2, 0\n" "_0804A514: .4byte gEnemyParty\n" - "_0804A518: .4byte gWindowConfig_81E7294"); + "_0804A518: .4byte gWindowTemplate_81E7294"); } #endif @@ -3523,7 +3523,7 @@ static bool8 sub_804ABF8(void) static void sub_804ACD8(const u8 *src, u8 *dest, u8 a2) { - sub_804AFB8(&gWindowConfig_81E725C, dest, src, a2); + sub_804AFB8(&gWindowTemplate_81E725C, dest, src, a2); } #ifdef NONMATCHING @@ -4028,8 +4028,8 @@ static void sub_804B41C(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); Menu_EraseScreen(); @@ -4182,7 +4182,7 @@ static __attribute__((naked)) void sub_804B41C(void) "\tldr r0, _0804B578 @ =sub_804B210\n" "\tbl SetVBlankCallback\n" "\tbl sub_804B228\n" - "\tldr r4, _0804B57C @ =gWindowConfig_81E6F84\n" + "\tldr r4, _0804B57C @ =gWindowTemplate_81E6F84\n" "\tadds r0, r4, 0\n" "\tbl SetUpWindowConfig\n" "\tldr r0, [r6]\n" @@ -4279,7 +4279,7 @@ static __attribute__((naked)) void sub_804B41C(void) "_0804B570: .4byte gUnknown_03004828\n" "_0804B574: .4byte gSharedMem + 0x1F000\n" "_0804B578: .4byte sub_804B210\n" - "_0804B57C: .4byte gWindowConfig_81E6F84\n" + "_0804B57C: .4byte gWindowTemplate_81E6F84\n" "_0804B580: .4byte gLinkType\n" "_0804B584: .4byte 0x00001144\n" "_0804B588: .4byte gMain\n" @@ -4531,8 +4531,8 @@ static void sub_804B790(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowConfig_81E717C); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E717C); + SetUpWindowConfig(&gWindowTemplate_81E717C); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E717C); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); Menu_EraseScreen(); diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index f57face11..75e481f84 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -109,11 +109,11 @@ static bool8 sub_8146058(void) gMain.state += 1; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E6E18); + SetUpWindowConfig(&gWindowTemplate_81E6E18); gMain.state += 1; break; case 4: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E18); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E18); gMain.state += 1; break; case 5: diff --git a/src/field/diploma.c b/src/field/diploma.c index b9cdb65df..8481589cb 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -68,8 +68,8 @@ void CB2_ShowDiploma(void) ResetPaletteFade(); FreeAllSpritePalettes(); LoadPalette(gDiplomaPalettes, 0, 64); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); DisplayDiplomaText(); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 1e2aaa4ed..57d9072b1 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -2434,8 +2434,8 @@ void sub_8088380(struct Task *task) IntrCallback callback; LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); SetVBlankCallback(callback); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); DestroyTask(FindTaskIdByFunc(sub_8088120)); @@ -2557,8 +2557,8 @@ void sub_808862C(struct Task *task) CpuFill32(0, (void *)VRAM + bg0cnt, 0x800); LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); SetVBlankCallback(intrCallback); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); DestroyTask(FindTaskIdByFunc(sub_808847C)); diff --git a/src/field/field_message_box.c b/src/field/field_message_box.c index 284fdb3f0..5eec7a14b 100644 --- a/src/field/field_message_box.c +++ b/src/field/field_message_box.c @@ -20,7 +20,7 @@ void InitFieldMessageBox(void) { sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); - Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowConfig_81E6CE4); + Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowTemplate_81E6CE4); } static void Task_FieldMessageBox(u8 taskId) diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index af8e4ec8a..afbc25226 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -50,8 +50,8 @@ void CB2_FieldInitRegionMap(void) InitRegionMap((void *)&ewram0_5.unk8, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); - SetUpWindowConfig(&gWindowConfig_81E709C); - InitMenuWindow(&gWindowConfig_81E709C); + SetUpWindowConfig(&gWindowTemplate_81E709C); + InitMenuWindow(&gWindowTemplate_81E709C); Menu_EraseScreen(); REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; Menu_DrawStdWindowFrame(21, 0, 29, 3); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index f123768e5..6e818ce68 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -265,7 +265,7 @@ static void sub_80816A8(u8 taskId) break; case 5: Menu_EraseWindowRect(0, 0, 29, 19); - LoadFontDefaultPalette(&gWindowConfig_81E6CE4); + LoadFontDefaultPalette(&gWindowTemplate_81E6CE4); REG_WIN0H = 255; REG_DISPCNT = data[6]; REG_BLDCNT = data[7]; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 0db48f55d..f58f42fb9 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -424,11 +424,11 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowConfig_81E6DFC); + SetUpWindowConfig(&gWindowTemplate_81E6DFC); gMain.state++; break; case 8: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6DFC); gMain.state++; break; case 9: diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 82c6dffe3..c3a73e18b 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -858,7 +858,7 @@ static void Task_BardSong(u8 taskId) { case 0: // Initialize song PrepareSongText(); - Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowConfig_81E6CE4); + Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowTemplate_81E6CE4); Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); task->data[1] = 0; task->data[2] = 0; diff --git a/src/field/overworld.c b/src/field/overworld.c index e239daec7..e91c8ae56 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1456,8 +1456,8 @@ bool32 sub_805483C(u8 *a1) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; case 5: @@ -1522,8 +1522,8 @@ bool32 sub_805493C(u8 *a1, u32 a2) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; case 5: @@ -1612,8 +1612,8 @@ bool32 sub_8054A9C(u8 *a1) case 3: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; case 4: @@ -1695,8 +1695,8 @@ void sub_8054C2C(void) { sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); mapdata_load_assets_to_gpu_and_full_redraw(); } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index f589494f4..73a32d070 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -679,11 +679,11 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowConfig_81E6C90); + SetUpWindowConfig(&gWindowTemplate_81E6C90); gMain.state++; break; case 8: - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C90); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C90); MultistepInitWindowTileData(&gUnknown_03004210, 1); gMain.state++; break; @@ -716,7 +716,7 @@ bool8 InitPartyMenu(void) } break; case 13: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6CC8); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8); gMain.state++; break; case 14: @@ -3313,7 +3313,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) { u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); - sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); + sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer); CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } @@ -3423,7 +3423,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); - sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } @@ -3517,7 +3517,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowTemplate *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 3ca359ef7..b238857fa 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -275,15 +275,15 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowConfig_81E6E34); + SetUpWindowConfig(&gWindowTemplate_81E6E34); gMain.state++; break; case 6: - SetUpWindowConfig(&gWindowConfig_81E6E50); + SetUpWindowConfig(&gWindowTemplate_81E6E50); gMain.state++; break; case 7: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E34); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E34); gMain.state++; break; case 8: @@ -293,7 +293,7 @@ static bool8 sub_810B6C0(void) } break; case 9: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E50); gMain.state++; break; case 10: @@ -445,13 +445,13 @@ void debug_sub_8120F98(void) static void sub_810BB0C(void) { - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48); } static void sub_810BB30(void) { - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); Menu_PrintText(gContestStatsText_Spicy, 2, 13); Menu_PrintText(gContestStatsText_Dry, 2, 15); Menu_PrintText(gContestStatsText_Sweet, 2, 17); @@ -464,7 +464,7 @@ static void sub_810BB88(u8 a0) u8 i; u8 y; u8 *buf; - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); for (i=a0; i<=a0+8; i++) { y = (i - a0) << 1; @@ -596,7 +596,7 @@ static void sub_810BDAC(bool8 flag) gBGTilemapBuffers[2][v0 + 32] = 15; } } - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); @@ -812,7 +812,7 @@ static void sub_810C368(u8 taskId) v0 = 2; sub_80F98A4(0); sub_80F98A4(1); - BasicInitMenuWindow(&gWindowConfig_81E6E50); + BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); @@ -868,7 +868,7 @@ static void sub_810C508(u8 taskId) static void sub_810C540(u8 taskId) { - BasicInitMenuWindow(&gWindowConfig_81E6E50); + BasicInitMenuWindow(&gWindowTemplate_81E6E50); HandleDestroyMenuCursors(); Menu_EraseWindowRect(7, 4, 13, 11); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); @@ -906,7 +906,7 @@ static void sub_810C668(u8 taskId) { sub_80F979C(1, 0); } - BasicInitMenuWindow(&gWindowConfig_81E6E50); + BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_EraseWindowRect(7, 6, 13, 11); Menu_EraseWindowRect(0, 14, 29, 19); gTasks[taskId].func = sub_810BF7C; @@ -922,7 +922,7 @@ static void sub_810C6DC(u8 taskId) static void sub_810C704(u8 taskId) { - BasicInitMenuWindow(&gWindowConfig_81E6E34); + BasicInitMenuWindow(&gWindowTemplate_81E6E34); sub_810BC84(gUnknown_02039248.unk1); sub_80F979C(1, 1); gTasks[taskId].func = sub_810C6DC; diff --git a/src/field/region_map.c b/src/field/region_map.c index 1eb57b803..f7db0a61e 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1540,10 +1540,10 @@ void CB2_InitFlyRegionMap(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); + SetUpWindowConfig(&gWindowTemplate_81E7224); break; case 2: - InitMenuWindow(&gWindowConfig_81E7224); + InitMenuWindow(&gWindowTemplate_81E7224); Menu_EraseScreen(); break; case 3: diff --git a/src/field/script_menu.c b/src/field/script_menu.c index bf6e93e41..ee5843049 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -622,7 +622,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) { // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowConfig_81E6CE4, str) + 7) / 8; + return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowTemplate_81E6CE4, str) + 7) / 8; } static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) diff --git a/src/field/shop.c b/src/field/shop.c index 0d8bc83d1..cfd4818dc 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -285,8 +285,8 @@ void BuyMenuDrawGraphics(void) ResetPaletteFade(); ResetSpriteData(); ResetTasks(); - SetUpWindowConfig(&gWindowConfig_81E6DFC); - InitMenuWindow(&gWindowConfig_81E6DFC); + SetUpWindowConfig(&gWindowTemplate_81E6DFC); + InitMenuWindow(&gWindowTemplate_81E6DFC); BuyMenuDrawMapGraphics(); gMartInfo.cursor = zero; gMartInfo.choicesAbove = zero2; diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 3c13e004c..abf837daa 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -400,8 +400,8 @@ static void SlotMachineSetup_0_1(void) static void SlotMachineSetup_3_0(void) { - SetUpWindowConfig(&gWindowConfig_81E7128); - InitMenuWindow(&gWindowConfig_81E7128); + SetUpWindowConfig(&gWindowTemplate_81E7128); + InitMenuWindow(&gWindowTemplate_81E7128); } static void SlotMachineSetup_4_0(void) @@ -2807,7 +2807,7 @@ static void sub_8104B80(struct Task *task) { sub_8104DA4(); sub_81065DC(); - BasicInitMenuWindow(&gWindowConfig_81E7144); + BasicInitMenuWindow(&gWindowTemplate_81E7144); MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1); BeginNormalPaletteFade(-1, 0, 16, 0, 0); task->data[0]++; @@ -2825,7 +2825,7 @@ static void sub_8104BC8(struct Task *task) static void sub_8104BFC(struct Task *task) { Menu_EraseScreen(); - BasicInitMenuWindow(&gWindowConfig_81E7128); + BasicInitMenuWindow(&gWindowTemplate_81E7128); sub_81064B8(); sub_8104CAC(task->data[1]); sub_810423C(eSlotMachine->pikaPower); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 6c2812039..8131e2511 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -271,7 +271,7 @@ void CreateStartMenuTask(void (*func)(u8)) { u8 taskId; - InitMenuWindow(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); taskId = CreateTask(Task_StartMenu, 0x50); SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func); } @@ -774,8 +774,8 @@ static bool32 sub_80719FC(u8 *step) dp12_8087EA4(); break; case 2: - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; break; case 3: diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index d4994d701..9b644c6cb 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -294,8 +294,8 @@ void CB2_ChooseStarter(void) LoadCompressedObjectPic(&gUnknown_083F7794[0]); LoadCompressedObjectPic(&gUnknown_083F77A4[0]); LoadSpritePalettes(gUnknown_083F77B4); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); savedIme = REG_IME; diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 6e71011b9..a4a36e40a 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -228,11 +228,11 @@ static void sub_8136294(void) gUnknown_02039304->unk50++; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E7080); + SetUpWindowConfig(&gWindowTemplate_81E7080); gUnknown_02039304->unk50++; break; case 4: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080); gUnknown_02039304->unk50++; break; case 5: @@ -610,7 +610,7 @@ static void sub_8136BB8(void) GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); StringGetEnd10(gUnknown_02039304->stringBuffer); StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock); - BasicInitMenuWindow(&gWindowConfig_81E709C); + BasicInitMenuWindow(&gWindowTemplate_81E709C); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(gUnknown_02039304->stringBuffer, 1, 17); DisplayYesNoMenu(23, 10, 1); @@ -623,14 +623,14 @@ static s8 sub_8136C40(void) if ((u8)(retval + 1) < 3) { Menu_EraseScreen(); - BasicInitMenuWindow(&gWindowConfig_81E7080); + BasicInitMenuWindow(&gWindowTemplate_81E7080); } return retval; } static void sub_8136C6C(void) { - BasicInitMenuWindow(&gWindowConfig_81E709C); + BasicInitMenuWindow(&gWindowTemplate_81E709C); Menu_DrawStdWindowFrame(0, 16, 29, 19); for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); if (gUnknown_02039304->unk53 < 5) @@ -667,7 +667,7 @@ static bool8 sub_8136D00(void) static void sub_8136D60(void) { - BasicInitMenuWindow(&gWindowConfig_81E709C); + BasicInitMenuWindow(&gWindowTemplate_81E709C); Menu_DrawStdWindowFrame(0, 16, 29, 19); Menu_PrintText(gOtherText_WontEat, 1, 17); } @@ -675,7 +675,7 @@ static void sub_8136D60(void) static void sub_8136D8C(void) { Menu_EraseScreen(); - BasicInitMenuWindow(&gWindowConfig_81E7080); + BasicInitMenuWindow(&gWindowTemplate_81E7080); } static void Pokeblock_MenuWindowTextPrint(const u8 *message) diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 6d102715a..8620ad9f0 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -236,8 +236,8 @@ static void LoadWallClockGraphics(void) FreeAllSpritePalettes(); LoadCompressedObjectPic(&gUnknown_083F7A90[0]); LoadSpritePalettes(gUnknown_083F7AA0); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); } static void WallClockInit(void) diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index 83953186b..eae1c0b4e 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -25,8 +25,8 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -extern const struct WindowTemplate gWindowConfig_81E6CE4; -extern const struct WindowTemplate gWindowConfig_81E7240; +extern const struct WindowTemplate gWindowTemplate_81E6CE4; +extern const struct WindowTemplate gWindowTemplate_81E7240; extern const u8 *const gContestEffectStrings[]; extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; @@ -268,12 +268,12 @@ void CB2_InitLearnMove(void) sub_8133558(); SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowConfig_81E7240); - InitMenuWindow(&gWindowConfig_81E7240); + SetUpWindowConfig(&gWindowTemplate_81E7240); + InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_BG0VOFS = 0; @@ -302,12 +302,12 @@ void sub_81327A4(void) sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowConfig_81E7240); - InitMenuWindow(&gWindowConfig_81E7240); + SetUpWindowConfig(&gWindowTemplate_81E7240); + InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_DISPCNT = 0x1340; @@ -633,7 +633,7 @@ void DrawLearnMoveMenuWindow(void) { u32 i; - BasicInitMenuWindow(&gWindowConfig_81E7240); + BasicInitMenuWindow(&gWindowTemplate_81E7240); for (i = 0; i < 4; i++) { Menu_DrawStdWindowFrame( @@ -642,7 +642,7 @@ void DrawLearnMoveMenuWindow(void) gUnknown_08402CF8[i][2], gUnknown_08402CF8[i][3]); } - BasicInitMenuWindow(&gWindowConfig_81E6CE4); + BasicInitMenuWindow(&gWindowTemplate_81E6CE4); } void sub_8133030(bool8 a) diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index c49c6d350..cd1083790 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -354,11 +354,11 @@ static u8 sub_80F8A28(void) RETURN_UP_STATE; case 6: - SetUpWindowConfig(&gWindowConfig_81E6DFC); + SetUpWindowConfig(&gWindowTemplate_81E6DFC); RETURN_UP_STATE; case 7: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6DFC); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6DFC); RETURN_UP_STATE; case 8: diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 028ae71a0..2ed404327 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -530,11 +530,11 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 4: - SetUpWindowConfig(&gWindowConfig_81E6E50); + SetUpWindowConfig(&gWindowTemplate_81E6E50); gMain.state++; break; case 5: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E50); gMain.state++; break; case 6: diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 83820f4cc..b7081f35d 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1425,8 +1425,8 @@ void CB2_InitPokedex(void) ResetPaletteFade(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); + SetUpWindowConfig(&gWindowTemplate_81E7048); + InitMenuWindow(&gWindowTemplate_81E7048); gMain.state++; break; case 2: @@ -1937,8 +1937,8 @@ static bool8 sub_808D344(u8 a) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); + SetUpWindowConfig(&gWindowTemplate_81E7048); + InitMenuWindow(&gWindowTemplate_81E7048); LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); gMain.state++; break; @@ -2951,8 +2951,8 @@ static void Task_InitPageScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); + SetUpWindowConfig(&gWindowTemplate_81E7064); + InitMenuWindow(&gWindowTemplate_81E7064); gMain.state++; break; case 4: @@ -3205,8 +3205,8 @@ static void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); + SetUpWindowConfig(&gWindowTemplate_81E702C); + InitMenuWindow(&gWindowTemplate_81E702C); ResetPaletteFade(); gMain.state++; break; @@ -3394,8 +3394,8 @@ static void Task_InitSizeScreenMultistep(u8 taskId) { u8 string[40]; //I hope this is the correct size - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); + SetUpWindowConfig(&gWindowTemplate_81E702C); + InitMenuWindow(&gWindowTemplate_81E702C); string[0] = EOS; StringAppend(string, gDexText_SizeComparedTo); StringAppend(string, gSaveBlock2.playerName); @@ -3841,8 +3841,8 @@ static void sub_8090750(u8 taskId) gTasks[taskId].data[0]++; break; case 2: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); + SetUpWindowConfig(&gWindowTemplate_81E7064); + InitMenuWindow(&gWindowTemplate_81E7064); DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); gTasks[taskId].data[0]++; break; @@ -4770,8 +4770,8 @@ static void sub_8091E54(u8 taskId) } break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); + SetUpWindowConfig(&gWindowTemplate_81E7064); + InitMenuWindow(&gWindowTemplate_81E7064); LoadCompressedObjectPic(&gUnknown_083A05CC[0]); LoadSpritePalettes(gUnknown_083A05DC); sub_809308C(taskId); diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 0887c6648..e448c9ed3 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -718,11 +718,11 @@ bool8 sub_809DA84(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowConfig_81E6E6C); + SetUpWindowConfig(&gWindowTemplate_81E6E6C); gMain.state++; break; case 6: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E6C); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E6E6C); gMain.state++; break; case 7: diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 411a20f79..43c9475ca 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3268,10 +3268,10 @@ bool8 sub_80EF284(u8 a) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); + SetUpWindowConfig(&gWindowTemplate_81E7224); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -3660,10 +3660,10 @@ bool8 sub_80EF874(void) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7224); + SetUpWindowConfig(&gWindowTemplate_81E7224); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7224); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -3972,10 +3972,10 @@ bool8 sub_80EFF68(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowConfig_81E7080); + SetUpWindowConfig(&gWindowTemplate_81E7080); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -4086,10 +4086,10 @@ bool8 sub_80F02A0(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowConfig_81E70D4); + SetUpWindowConfig(&gWindowTemplate_81E70D4); break; case 2: - MultistepInitMenuWindowBegin(&gWindowConfig_81E70D4); + MultistepInitMenuWindowBegin(&gWindowTemplate_81E70D4); break; case 3: if (!MultistepInitMenuWindowContinue()) @@ -4268,17 +4268,17 @@ _080F0338: .4byte 0x000087ca\n\ _080F033C: .4byte 0x000087c8\n\ _080F0340: .4byte 0x0000d162\n\ _080F0344:\n\ - ldr r0, _080F034C @ =gWindowConfig_81E70D4\n\ + ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\ bl SetUpWindowConfig\n\ b _080F0618\n\ .align 2, 0\n\ -_080F034C: .4byte gWindowConfig_81E70D4\n\ +_080F034C: .4byte gWindowTemplate_81E70D4\n\ _080F0350:\n\ - ldr r0, _080F0358 @ =gWindowConfig_81E70D4\n\ + ldr r0, _080F0358 @ =gWindowTemplate_81E70D4\n\ bl MultistepInitMenuWindowBegin\n\ b _080F0618\n\ .align 2, 0\n\ -_080F0358: .4byte gWindowConfig_81E70D4\n\ +_080F0358: .4byte gWindowTemplate_81E70D4\n\ _080F035C:\n\ bl MultistepInitMenuWindowContinue\n\ cmp r0, 0\n\ diff --git a/src/roulette.c b/src/roulette.c index 0253a6bb8..950cbdbb1 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -596,8 +596,8 @@ void sub_8115384(void) gMain.state++; break; case 0x2: - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6C3C); + InitMenuWindow(&gWindowTemplate_81E6CE4); LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0); gMain.state++; break; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index d1ab2d512..32a48fd36 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -215,7 +215,7 @@ extern u8 byte_3002A68; extern const u8 gUnknown_08E6C100[]; extern const u8 gUnknown_08E6C920[]; extern const u8 gUnknown_08E6D354[]; -extern const struct WindowTemplate gWindowConfig_81E6F68; +extern const struct WindowTemplate gWindowTemplate_81E6F68; extern const u8 *const gPokeblockNames[]; extern const struct Berry gBerries[]; @@ -957,8 +957,8 @@ static void sub_804E56C(void) ResetSpriteData(); FreeAllSpritePalettes(); SetVBlankCallback(NULL); - SetUpWindowConfig(&gWindowConfig_81E6F68); - InitMenuWindow(&gWindowConfig_81E6F68); + SetUpWindowConfig(&gWindowTemplate_81E6F68); + InitMenuWindow(&gWindowTemplate_81E6F68); gBerryBlenderData->field_0++; gBerryBlenderData->field_140 = 0; gBerryBlenderData->field_13E = 0; @@ -1135,8 +1135,8 @@ static void sub_804E9F8(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowConfig_81E6F68); - InitMenuWindow(&gWindowConfig_81E6F68); + SetUpWindowConfig(&gWindowTemplate_81E6F68); + InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; gBerryBlenderData->field_0++; gBerryBlenderData->field_4E = 0; @@ -1338,8 +1338,8 @@ static void sub_804F0F4(void) SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowConfig_81E6F68); - InitMenuWindow(&gWindowConfig_81E6F68); + SetUpWindowConfig(&gWindowTemplate_81E6F68); + InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; @@ -3606,8 +3606,8 @@ void unref_sub_80524BC(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB1_BerryBlender); - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); + SetUpWindowConfig(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); SeedRng(gMain.vblankCounter1); REG_DISPCNT = 0x1540; RunTasks(); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 442d8ec26..de9063823 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -243,8 +243,8 @@ static void HoldContestPainting(void) static void ContestPaintingInitWindow(u8 arg0) { - InitMenuWindow(&gWindowConfig_81E7160); - SetUpWindowConfig(&gWindowConfig_81E7160); + InitMenuWindow(&gWindowTemplate_81E7160); + SetUpWindowConfig(&gWindowTemplate_81E7160); } static void ContestPaintingPrintCaption(u8 contestType, u8 arg1) diff --git a/src/scene/credits.c b/src/scene/credits.c index 54b517a91..f113fe965 100644 --- a/src/scene/credits.c +++ b/src/scene/credits.c @@ -474,8 +474,8 @@ void sub_81439D0(void) taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; gTasks[taskIdC].data[TDC_0] = 40; - SetUpWindowConfig(&gWindowConfig_81E7208); - InitMenuWindow(&gWindowConfig_81E7208); + SetUpWindowConfig(&gWindowTemplate_81E7208); + InitMenuWindow(&gWindowTemplate_81E7208); LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); CpuCopy16(&gUnknown_0840B7FC, (void *)(VRAM + 0xBEE0), sizeof(gUnknown_0840B7FC)); diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index 8d961ad1f..e76f5b47c 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -471,8 +471,8 @@ static void CB2_EggHatch_0(void) gSpecialVar_0x8005 = GetCurrentMapMusic(); break; case 1: - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowConfig_81E6F84); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowTemplate_81E6F84); gEggHatchData->tileDataStartOffset = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gEggHatchData->window); gMain.state++; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 323313fc2..571b8ab8d 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -197,7 +197,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -209,7 +209,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -306,7 +306,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) REG_WIN1V = 0; REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowConfig_81E6C58); + SetUpWindowConfig(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -317,7 +317,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) gUnknown_030041B0 = 256; gUnknown_030041B8 = 0; - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowConfig_81E6C58); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; sub_800D6D4(); @@ -373,8 +373,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gMain.state++; break; case 1: - SetUpWindowConfig(&gWindowConfig_81E6F84); - Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowConfig_81E6F84); + SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gMain.state++; break; case 2: diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index ae2ff5f87..4f8124ace 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -582,8 +582,8 @@ static void sub_81422B8(u8 taskID) static void sub_81422E8(u8 taskID) { - SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow(&gWindowConfig_81E7198); + SetUpWindowConfig(&gWindowTemplate_81E7198); + InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142320; } @@ -714,8 +714,8 @@ static void sub_81426F8(u8 taskID) static void sub_8142738(u8 taskID) { REG_DISPCNT = 0x1940; - SetUpWindowConfig(&gWindowConfig_81E71B4); - InitMenuWindow(&gWindowConfig_81E71B4); + SetUpWindowConfig(&gWindowTemplate_81E71B4); + InitMenuWindow(&gWindowTemplate_81E71B4); gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6); gTasks[taskID].tFrameCount = 120; @@ -864,8 +864,8 @@ static void sub_8142A28(u8 taskID) *(vram1 + i) = i + 3; *(vram2 + i) = i + 20; } - SetUpWindowConfig(&gWindowConfig_81E7198); - InitMenuWindow(&gWindowConfig_81E7198); + SetUpWindowConfig(&gWindowTemplate_81E7198); + InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142B04; } } @@ -1285,8 +1285,8 @@ static void sub_8143570(void) gReservedSpritePaletteCount = 8; LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); - SetUpWindowConfig(&gWindowConfig_81E71B4); - InitMenuWindow(&gWindowConfig_81E71B4); + SetUpWindowConfig(&gWindowTemplate_81E71B4); + InitMenuWindow(&gWindowTemplate_81E71B4); } static void sub_81435B8(void) -- cgit v1.2.3 From 6503d0fee3d9423640f563745692af35f7298c8b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 10:09:55 -0500 Subject: through sub_8097E70; split PSS in 3 --- src/pokemon/pokemon_storage_system.c | 1553 ------------------------------- src/pokemon/pokemon_storage_system_2.c | 1566 ++++++++++++++++++++++++++++++++ src/pokemon/pokemon_storage_system_3.c | 16 + src/pokemon/pokemon_summary_screen.c | 29 +- src/pokenav_before.c | 1 - 5 files changed, 1596 insertions(+), 1569 deletions(-) create mode 100644 src/pokemon/pokemon_storage_system_2.c create mode 100644 src/pokemon/pokemon_storage_system_3.c (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 5fd43cfb8..c91e45d7a 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -3,123 +3,16 @@ #include "constants/songs.h" #include "sound.h" #include "field_weather.h" -#include "mon_markings.h" #include "overworld.h" -#include "mail_data.h" #include "field_fadetransition.h" #include "menu.h" #include "main.h" #include "strings.h" #include "string_util.h" #include "event_data.h" -#include "ewram.h" #include "script.h" -#include "pokemon_summary_screen.h" -#include "pc_screen_effect.h" -#include "naming_screen.h" #include "pokemon_storage_system.h" -enum { - PC_TEXT_EXIT_BOX, - PC_TEXT_WHAT_YOU_DO, - PC_TEXT_PICK_A_THEME, - PC_TEXT_PICK_A_WALLPAPER, - PC_TEXT_IS_SELECTED, - PC_TEXT_JUMP_TO_WHICH_BOX, - PC_TEXT_DEPOSIT_IN_WHICH_BOX, - PC_TEXT_WAS_DEPOSITED, - PC_TEXT_BOX_IS_FULL, - PC_TEXT_RELEASE_POKE, - PC_TEXT_WAS_RELEASED, - PC_TEXT_BYE_BYE, - PC_TEXT_MARK_POKE, - PC_TEXT_LAST_POKE, - PC_TEXT_PARTY_FULL, - PC_TEXT_HOLDING_POKE, - PC_TEXT_WHICH_ONE_WILL_TAKE, - PC_TEXT_CANT_RELEASE_EGG, - PC_TEXT_CONTINUE_BOX, - PC_TEXT_CAME_BACK, - PC_TEXT_WORRIED, - PC_TEXT_SURPRISE, - PC_TEXT_PLEASE_REMOVE_MAIL -}; - -enum { - PC_TEXT_FMT_NORMAL, - PC_TEXT_FMT_MON_NAME, - PC_TEXT_FMT_UNK_02, - PC_TEXT_FMT_UNK_03, - PC_TEXT_FMT_MON_NAME_2, - PC_TEXT_FMT_UNK_05, - PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK -}; - -struct StorageAction { - u8 *text; - u8 format; -}; - -struct PSS_MenuStringPtrs { - const u8 *text; - const u8 *desc; -}; - -struct UnkStruct_2000020 { - struct UnkStruct_2000020 *unk_00; - u8 unk_04; - u8 unk_05; -}; - -struct UnkPSSStruct_2002370 { - struct Sprite *unk_0000; - struct Sprite *unk_0004[4]; - u32 unk_0014[3]; - struct Sprite *unk_0020[2]; - u8 filler_0028[0x214]; - u8 curBox; - u8 unk_023d; - u8 unk_023e; - u16 unk_0240; - u16 unk_0242; -}; // 0244 - -struct PokemonStorageSystemData { - void (*unk_0000)(void); - u8 unk_0004; - u8 unk_0005; - u8 unk_0006; - u8 unk_0007; - u16 unk_0008; - u16 unk_000a; - struct PCScreenEffectStruct unk_000c; - struct UnkStruct_2000020 unk_0020[274]; // refine size later - u8 filler_08b0[2]; - s16 unk_08b2; - u16 unk_08b4; - u8 filler_08b6[0x4a8]; - s16 unk_0d5e; - s16 unk_0d60; - u8 filler_0d62[0x490]; - u16 unk_11f2; - u8 filler_11f4[2]; - u8 unk_11f6; - u8 unk_11f7; - u8 unk_11f8; - u8 unk_11f9; - u8 unk_11fa[0xc2]; - struct PokemonMarkMenu unk_12bc; - struct UnkPSSStruct_2002370 unk_2370; - u8 filler_25b4[0xd8]; - u8 unk_268c; - u8 unk_268d; - u8 unk_268e; - struct Pokemon *unk_2690; - u8 unk_2694[18]; - u8 unk_26a6[62]; - u8 unk_26e4[80]; -}; - void StorageSystemCreatePrimaryMenu(u8 whichMenu); void sub_80963D0(u8 curBox); void sub_809658C(void); @@ -128,95 +21,6 @@ void sub_809662C(void); void sub_809665C(void); void sub_80966F4(const u8 *sourceString, u16 x, u16 y); void sub_8096784(struct Sprite *sprite); -void task_intro_29(u8 whichMenu); -void sub_8096884(void); -void sub_8096AFC(void); -void sub_8096B38(void); -void SetPSSCallback(void (*func)(void)); -void sub_8096BF0(void); -void sub_8096C68(void); -void sub_8096C84(void); -void sub_8096FC8(void); -void sub_8097004(void); -void sub_8097078(void); -void sub_80972A8(void); -void sub_80972FC(void); -void c3_0808DC50(void); -void sub_8097390(void); -void sub_809746C(void); -void sub_8097594(void); -void sub_8097788(void); -void sub_80977E4(void); -void sub_8097858(void); -void sub_809789C(void); -void sub_8097974(void); -void sub_8097A64(void); -void sub_8097B44(void); -void sub_8097BA0(void); -void sub_8097CC0(void); -void sub_8097DE0(void); -void sub_8097E44(void); -void sub_8097E70(void); -void BoxSetMosaic(void); -void sub_809801C(void); -void sub_8098400(void); -void add_to_c3_somehow(void); -bool8 sub_80985CC(void); -void sub_80986E8(void); -void sub_8098710(void); -void sub_8098734(void); -void sub_80987DC(void); -void sub_809880C(void); -bool8 sub_8098830(void); -void PrintStorageActionText(u8 index); -void sub_8098A38(u8); -void sub_8098A5C(void); -void sub_8098A80(void); -void sub_8098AA8(u8 a0); -void sub_8098B48(void); -void sub_8099310(void); -bool8 sub_8099374(void); -void sub_8099958(void); -bool8 sub_8099990(void); -void sub_809BB90(void); -void sub_8099BF8(u8 a0); -void sub_8099C70(u8 whichBox); -bool8 sub_8099D34(void); -void sub_8099DCC(u8 a0); -bool8 sub_8099E08(void); -void sub_809A860(u8 a0); -struct Sprite *sub_809A9A0(u16 a0, u16 a1, u8 a2, u8 a3, u8 a4); -void sub_809AA24(void); -void sub_809AA98(void); -bool8 sub_809AC00(void); -void sub_809B0C0(u8 a0); -void sub_809B0D4(void); -void sub_809B0E0(void); -u8 sub_809B0F4(void); -void sub_809B100(u8 a0); -bool8 sub_809B130(void); -void sub_809B440(void); -bool8 sub_809B62C(u8); -void sub_809B6BC(void); -void sub_809B6DC(void); -bool8 sub_809B734(void); -void sub_809B760(void); -void sub_809B7AC(void); -void sub_809B7D4(void); -s8 sub_809B960(void); -void sub_809BBC0(void); -void sub_809BC18(void); -void sub_809BD14(void); -void sub_809BDD8(u8 markings); -bool8 sub_809BE80(void); -bool8 sub_809BEBC(void); -bool8 sub_809BF20(void); -bool8 sub_809BF48(void); -u8 sub_809CA40(void); -void sub_809CE84(void); -s16 sub_809CF30(void); -void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); -void sub_809CFF0(void); const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { {PCText_WithdrawPoke, PCText_MovePokeToParty}, @@ -267,73 +71,11 @@ const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/b const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); -const u16 gPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.gbapal"); - -const u16 gPokemonStorageScrollingBGTile[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.4bpp"); - -const u8 gPokemonStorageScrollingBGTilemap[] = INCBIN_U8("graphics/pokemon_storage/scrolling_bg_map.bin.lz"); - -const u16 sUnknownTilemap[] = { - 0x1281, - 0x1282, - 0x1283, - 0x1284, - 0x1285, - 0x1286, - 0x1287, - 0x1288, - 0x128C, - 0x128D, - 0x128E, - 0x128F, - 0x1290, - 0x1291, - 0x1292, - 0x1293, - 0x0281, - 0x0282, - 0x0283, - 0x0284, - 0x0285, - 0x0286, - 0x0287, - 0x0288, - 0x028C, - 0x028D, - 0x028E, - 0x028F, - 0x0290, - 0x0291, - 0x0292, - 0x0293, - 0x12AD, - 0x12AE, - 0x12A8, - 0x12A8 -}; - -extern const struct StorageAction gPCStorageActionTexts[]; -extern const struct PokemonStorageSystemData *gPokemonStorageSystemPtr; -extern u8 *const gUnknown_083B6DB8; - EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; EWRAM_DATA u8 gUnknown_02038470[3] = {}; EWRAM_DATA u8 gUnknown_02038473 = 0; EWRAM_DATA u8 gUnknown_02038474 = 0; EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL; -EWRAM_DATA u8 gUnknown_0203847C = 0; -EWRAM_DATA u8 gUnknown_0203847D = 0; -EWRAM_DATA u8 gUnknown_0203847E = 0; -EWRAM_DATA u8 gUnknown_0203847F = 0; -EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; -EWRAM_DATA u8 gUnknown_020384E4 = 0; -EWRAM_DATA u8 gUnknown_020384E5 = 0; -EWRAM_DATA u8 gUnknown_020384E6 = 0; -EWRAM_DATA u8 gUnknown_020384E7 = 0; -EWRAM_DATA u8 gUnknown_020384E8 = 0; -EWRAM_DATA u8 gUnknown_020384E9 = 0; -EWRAM_DATA u16 gUnknown_020384EA = 0; -EWRAM_DATA u32 gUnknown_020384EC = 0; static u8 CountPokemonInBoxN(u8 boxId) { @@ -967,1298 +709,3 @@ void sub_8096784(struct Sprite *sprite) } } } - -void task_intro_29(u8 whichMenu) -{ - gUnknown_0203847D = whichMenu; - ePokemonStorageSystem.unk_0005 = whichMenu; - SetMainCallback2(sub_8096884); -} - -void sub_80967DC(void) -{ - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG2VOFS = 0; - REG_BG2HOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; -} - -void sub_8096804(void) -{ - ResetPaletteFade(); - ResetSpriteData(); - FreeSpriteTileRanges(); - FreeAllSpritePalettes(); - ResetTasks(); - gReservedSpriteTileCount = 0x280; - sub_809CFDC(ePokemonStorageSystem.unk_0020, ePokemonStorageSystem.unk_0020 + 1, 8); - gKeyRepeatStartDelay = 20; -} - -void sub_8096848(void) -{ - sub_809B0D4(); - gUnknown_0203847C = (ePokemonStorageSystem.unk_0005 == 1 ? 1 : 0); - gUnknown_0203847E = 0; -} - -void sub_8096874(void) -{ - REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; -} - -void sub_8096884(void) -{ - switch (gMain.state) - { - case 0: - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - sub_8096804(); - gMain.state++; - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E6D00); - gMain.state++; - break; - case 2: - InitMenuWindow(&gWindowConfig_81E6D00); - MenuZeroFillScreen(); - gMain.state++; - break; - case 3: - sub_80967DC(); - sub_8096848(); - gMain.state++; - break; - case 4: - sub_8098B48(); - sub_809AA24(); - gMain.state++; - break; - case 5: - sub_8097DE0(); - gMain.state++; - break; - case 6: - sub_8097E70(); - gMain.state++; - break; - case 7: - sub_8098400(); - gMain.state++; - break; - case 8: - sub_8099BF8(gPokemonStorage.currentBox); - ePokemonStorageSystem.unk_12bc.baseTileTag = 0x000a; - ePokemonStorageSystem.unk_12bc.basePaletteTag = 0xdacb; - sub_80F727C(&ePokemonStorageSystem.unk_12bc); - sub_80F7404(); - gMain.state++; - break; - case 9: - sub_8096874(); - SetPSSCallback(sub_8096BF0); - SetMainCallback2(sub_8096B38); - SetVBlankCallback(sub_8096AFC); - gMain.state++; - break; - } -} - -void sub_80969A0(void) -{ - switch (gMain.state) - { - case 0: - SetVBlankCallback(NULL); - REG_DISPCNT = 0x0000; - ePokemonStorageSystem.unk_0005 = gUnknown_0203847D; - sub_8096804(); - if (gUnknown_0203847F == 1) - sub_809BBC0(); - if (gUnknown_0203847F == 0) - sub_809BD14(); - gMain.state++; - break; - case 1: - SetUpWindowConfig(&gWindowConfig_81E6D00); - gMain.state++; - break; - case 2: - InitMenuWindow(&gWindowConfig_81E6D00); - MenuZeroFillScreen(); - gMain.state++; - break; - case 3: - sub_80967DC(); - gMain.state++; - break; - case 4: - sub_8098B48(); - sub_809AA98(); - gMain.state++; - break; - case 5: - sub_8097DE0(); - gMain.state++; - break; - case 6: - sub_8097E70(); - gMain.state++; - break; - case 7: - sub_8098400(); - gMain.state++; - break; - case 8: - sub_8099BF8(gPokemonStorage.currentBox); - ePokemonStorageSystem.unk_12bc.baseTileTag = 0x000a; - ePokemonStorageSystem.unk_12bc.basePaletteTag = 0xdacb; - sub_80F727C(&ePokemonStorageSystem.unk_12bc); - sub_80F7404(); - gMain.state++; - break; - case 9: - BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); - SetVBlankCallback(sub_8096AFC); - gMain.state++; - break; - case 10: - sub_8096874(); - SetPSSCallback(sub_8096C68); - SetMainCallback2(sub_8096B38); - gMain.state++; - break; - } -} - -void sub_8096AFC(void) -{ - REG_BG2HOFS = ePokemonStorageSystem.unk_08b4; - REG_BG3HOFS = ePokemonStorageSystem.unk_000a; - REG_BG3VOFS = ePokemonStorageSystem.unk_0008; - LoadOam(); - ProcessSpriteCopyRequests(); - sub_809CFF0(); - TransferPlttBuffer(); -} - -void sub_8096B38(void) -{ - ePokemonStorageSystem.unk_0000(); - sub_8097E44(); - sub_8098734(); - AnimateSprites(); - BuildOamBuffer(); -} - -void sub_8096B5C(void) -{ - switch (ePokemonStorageSystem.unk_0006) - { - case 0: - ShowPokemonSummaryScreen(ePokemonStorageSystem.unk_2690, ePokemonStorageSystem.unk_268d, ePokemonStorageSystem.unk_268c, sub_80969A0, ePokemonStorageSystem.unk_268e); - break; - case 1: - DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0); - break; - } -} - -void SetPSSCallback(void (*func)(void)) -{ - ePokemonStorageSystem.unk_0000 = func; - ePokemonStorageSystem.unk_0004 = 0; -} - -void sub_8096BF0(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - BlendPalettes(0xffffffff, 16, 0); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - PlaySE(SE_PC_LOGON); - ePokemonStorageSystem.unk_000c.tileTag = 14; - ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0; - ePokemonStorageSystem.unk_000c.unk04 = 0; - ePokemonStorageSystem.unk_000c.unk06 = 0; - sub_80C5CD4(&ePokemonStorageSystem.unk_000c); - BlendPalettes(0xffffffff, 0, 0); - ePokemonStorageSystem.unk_0004++; - break; - case 2: - if (sub_80C5DCC()) - SetPSSCallback(sub_8096C84); - break; - } -} - -void sub_8096C68(void) -{ - if (!UpdatePaletteFade()) - SetPSSCallback(sub_8096C84); -} - -void sub_8096C84(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - switch (sub_809CA40()) - { - case 1: - PlaySE(SE_SELECT); - ePokemonStorageSystem.unk_0004 = 1; - break; - case 5: - if (ePokemonStorageSystem.unk_0005 != 2) - { - PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); - ePokemonStorageSystem.unk_0004 = 3; - } - else - { - sub_809B0D4(); - SetPSSCallback(sub_8096FC8); - } - break; - case 6: - if (ePokemonStorageSystem.unk_0005 == 2) - { - if (sub_809BF20() && ItemIsMail(ePokemonStorageSystem.unk_11f2)) - { - ePokemonStorageSystem.unk_0004 = 5; - } - else - { - SetPSSCallback(sub_8097004); - } - } - break; - case 4: - SetPSSCallback(sub_8097BA0); - break; - case 16: - SetPSSCallback(sub_8097CC0); - break; - case 7: - PlaySE(SE_SELECT); - SetPSSCallback(sub_809789C); - break; - case 8: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097078); - break; - case 9: - PlaySE(SE_SELECT); - ePokemonStorageSystem.unk_08b2 = gPokemonStorage.currentBox + 1; - if (ePokemonStorageSystem.unk_08b2 > 13) - ePokemonStorageSystem.unk_08b2 = 0; - sub_8099C70(ePokemonStorageSystem.unk_08b2); - ePokemonStorageSystem.unk_0004 = 2; - break; - case 10: - PlaySE(SE_SELECT); - ePokemonStorageSystem.unk_08b2 = gPokemonStorage.currentBox - 1; - if (ePokemonStorageSystem.unk_08b2 < 0) - ePokemonStorageSystem.unk_08b2 = 13; - sub_8099C70(ePokemonStorageSystem.unk_08b2); - ePokemonStorageSystem.unk_0004 = 2; - break; - case 11: - if (!sub_809BE80()) - { - if (ItemIsMail(ePokemonStorageSystem.unk_11f2)) - { - ePokemonStorageSystem.unk_0004 = 5; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(sub_809746C); - } - } - else - { - ePokemonStorageSystem.unk_0004 = 4; - } - break; - case 13: - if (sub_809BE80()) - { - ePokemonStorageSystem.unk_0004 = 4; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(sub_80972A8); - } - break; - case 14: - if (!sub_809BEBC()) - { - ePokemonStorageSystem.unk_0004 = 4; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(c3_0808DC50); - } - break; - case 12: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097390); - break; - case 15: - PlaySE(SE_SELECT); - SetPSSCallback(sub_80972FC); - break; - } - break; - case 1: - if (!sub_809AC00()) - { - if (sub_809BF48()) - sub_80986E8(); - else - sub_8098710(); - if (ePokemonStorageSystem.unk_11f6) - BoxSetMosaic(); - ePokemonStorageSystem.unk_0004 = 0; - } - break; - case 2: - if (!sub_8099D34()) - { - gPokemonStorage.currentBox = ePokemonStorageSystem.unk_08b2; - if (!gUnknown_0203847C && !sub_809BF20()) - { - sub_809B440(); - BoxSetMosaic(); - } - ePokemonStorageSystem.unk_0004 = 0; - } - break; - case 3: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - ePokemonStorageSystem.unk_0004 = 0; - } - break; - case 4: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - ePokemonStorageSystem.unk_0004 = 6; - break; - case 5: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - ePokemonStorageSystem.unk_0004 = 6; - break; - case 6: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8096FC8(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_809880C(); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_8098830()) - SetPSSCallback(sub_8096C84); - break; - } -} - -void sub_8097004(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PlaySE(SE_SELECT); - add_to_c3_somehow(); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_80985CC()) - { - sub_809B0C0(sub_809B0F4()); - ePokemonStorageSystem.unk_0004++; - } - break; - case 2: - if (!sub_809AC00()) - { - if (ePokemonStorageSystem.unk_11f6) - BoxSetMosaic(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8097078(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PrintStorageActionText(PC_TEXT_IS_SELECTED); - sub_809CE84(); - ePokemonStorageSystem.unk_0004 = 1; - break; - case 1: - switch (sub_809CF30()) - { - case -1: - case 0: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 3: - if (sub_809BE80()) - { - ePokemonStorageSystem.unk_0004 = 2; - } - else - { - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_80972A8); - } - break; - case 5: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_80972FC); - break; - case 4: - if (!sub_809BEBC()) - { - ePokemonStorageSystem.unk_0004 = 2; - } - else - { - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(c3_0808DC50); - } - break; - case 2: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_8097390); - break; - case 1: - if (sub_809BE80()) - { - ePokemonStorageSystem.unk_0004 = 2; - } - else if (ItemIsMail(ePokemonStorageSystem.unk_11f2)) - { - ePokemonStorageSystem.unk_0004 = 3; - } - else - { - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_809746C); - } - break; - case 7: - if (sub_809BE80()) - { - ePokemonStorageSystem.unk_0004 = 2; - } - else if (ePokemonStorageSystem.unk_11f9) - { - ePokemonStorageSystem.unk_0004 = 4; - } - else if (ItemIsMail(ePokemonStorageSystem.unk_11f2)) - { - ePokemonStorageSystem.unk_0004 = 3; - } - else - { - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097594); - } - break; - case 6: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097788); - break; - case 8: - PlaySE(SE_SELECT); - SetPSSCallback(sub_80977E4); - break; - } - break; - case 2: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - ePokemonStorageSystem.unk_0004 = 5; - break; - case 4: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); - ePokemonStorageSystem.unk_0004 = 5; - break; - case 3: - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - ePokemonStorageSystem.unk_0004 = 5; - break; - case 5: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_80972A8(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_809B100(0); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_809B130()) - { - if (gUnknown_0203847C) - SetPSSCallback(sub_8097858); - else - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_80972FC(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_809B100(1); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_809B130()) - { - if (gUnknown_0203847C) - SetPSSCallback(sub_8097858); - else - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void c3_0808DC50(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_809B100(2); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_809B130()) - { - BoxSetMosaic(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8097390(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - if (CalculatePlayerPartyCount() == 6) - { - PrintStorageActionText(PC_TEXT_PARTY_FULL); - ePokemonStorageSystem.unk_0004 = 1; - } - else - { - sub_809B0E0(); - sub_809B100(0); - ePokemonStorageSystem.unk_0004 = 2; - } - break; - case 1: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - case 2: - if (!sub_809B130()) - { - sub_809880C(); - ePokemonStorageSystem.unk_0004++; - } - break; - case 3: - if (!sub_8098830()) - { - sub_809B100(1); - ePokemonStorageSystem.unk_0004++; - } - break; - case 4: - if (!sub_809B130()) - { - sub_80987DC(); - ePokemonStorageSystem.unk_0004++; - } - break; - case 5: - SetPSSCallback(sub_8097004); - break; - } -} - -void sub_809746C(void) -{ - u8 r4; - - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - sub_8096264(&ePokemonStorageSystem.unk_2370, 0x0007, 0xdaca, 3); - sub_809634C(gUnknown_0203847E); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - r4 = sub_8096368(); - if (r4 == 200); - else if (r4 == 201) - { - sub_8098A5C(); - sub_809635C(); - sub_8096310(); - SetPSSCallback(sub_8096C84); - } - else - { - if (sub_809B62C(r4)) - { - sub_8098A5C(); - sub_809635C(); - sub_8096310(); - ePokemonStorageSystem.unk_0004 = 2; - } - else - { - PrintStorageActionText(PC_TEXT_BOX_IS_FULL); - ePokemonStorageSystem.unk_0004 = 4; - } - gUnknown_0203847E = r4; - } - break; - case 2: - party_compaction(); - sub_8099310(); - ePokemonStorageSystem.unk_0004++; - break; - case 3: - if (!sub_8099374()) - { - sub_809B6BC(); - BoxSetMosaic(); - sub_80987DC(); - SetPSSCallback(sub_8096C84); - } - break; - case 4: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - ePokemonStorageSystem.unk_0004 = 1; - } - break; - } -} - -void sub_8097594(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PrintStorageActionText(PC_TEXT_RELEASE_POKE); - sub_8098A38(1); - ePokemonStorageSystem.unk_0004++; - // fallthrough - case 1: - switch (ProcessMenuInputNoWrap()) - { - case -1: - case 1: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 0: - sub_8098A5C(); - sub_809B7D4(); - sub_809B6DC(); - ePokemonStorageSystem.unk_0004++; - break; - } - break; - case 2: - sub_809B960(); - if (!sub_809B734()) - { - while (1) - { - s8 r0 = sub_809B960(); - if (r0 == 1) - { - ePokemonStorageSystem.unk_0004++; - break; - } - if (r0 == 0) - { - ePokemonStorageSystem.unk_0004 = 8; - break; - } - } - } - break; - case 3: - sub_809B760(); - sub_809801C(); - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - ePokemonStorageSystem.unk_0004++; - break; - case 4: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_BYE_BYE); - ePokemonStorageSystem.unk_0004++; - } - break; - case 5: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - sub_8098A5C(); - if (gUnknown_0203847C) - { - party_compaction(); - sub_8099310(); - ePokemonStorageSystem.unk_0004++; - } - else - { - ePokemonStorageSystem.unk_0004 = 7; - } - } - break; - case 6: - if (!sub_8099374()) - { - sub_809B440(); - BoxSetMosaic(); - sub_80987DC(); - ePokemonStorageSystem.unk_0004++; - } - break; - case 7: - SetPSSCallback(sub_8096C84); - break; - case 8: - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - ePokemonStorageSystem.unk_0004++; - break; - case 9: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_SURPRISE); - ePokemonStorageSystem.unk_0004++; - } - break; - case 10: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - sub_8098A5C(); - sub_8099958(); - ePokemonStorageSystem.unk_0004++; - } - break; - case 11: - if (!sub_8099990()) - { - sub_809B7AC(); - PrintStorageActionText(PC_TEXT_CAME_BACK); - ePokemonStorageSystem.unk_0004++; - } - break; - case 12: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - PrintStorageActionText(PC_TEXT_WORRIED); - ePokemonStorageSystem.unk_0004++; - } - break; - case 13: - if (gMain.newKeys & (A_BUTTON | B_BUTTON)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8097788(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_809BC18(); - BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!UpdatePaletteFade()) - { - gUnknown_0203847F = 0; - ePokemonStorageSystem.unk_0006 = 0; - SetMainCallback2(sub_8096B5C); - } - break; - } -} - -void sub_80977E4(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PrintStorageActionText(PC_TEXT_MARK_POKE); - ePokemonStorageSystem.unk_12bc.markings = ePokemonStorageSystem.unk_11f7; - sub_80F7418(ePokemonStorageSystem.unk_11f7, 0xb0, 0x10); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_80F7500()) - { - sub_80F7470(); - sub_8098A5C(); - sub_809BDD8(ePokemonStorageSystem.unk_12bc.markings); - sub_809801C(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8097858(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - party_compaction(); - sub_8099310(); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!sub_8099374()) - { - sub_80987DC(); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_809789C(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); - sub_809CE84(); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - switch (sub_809CF30()) - { - case -1: - case 0: - sub_809A860(1); - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 11: - PlaySE(SE_SELECT); - SetPSSCallback(sub_8097B44); - break; - case 10: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_8097974); - break; - case 9: - PlaySE(SE_SELECT); - sub_8098A5C(); - SetPSSCallback(sub_8097A64); - break; - } - break; - } -} - -void sub_8097974(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_8098A80(); - PrintStorageActionText(PC_TEXT_PICK_A_THEME); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - ePokemonStorageSystem.unk_0d5e = sub_809CF30(); - switch (ePokemonStorageSystem.unk_0d5e) - { - case -1: - sub_809A860(1); - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 12 ... 15: - PlaySE(SE_SELECT); - ePokemonStorageSystem.unk_0d5e -= 12; - sub_8098AA8(ePokemonStorageSystem.unk_0d5e); - PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); - ePokemonStorageSystem.unk_0004++; - break; - } - break; - case 2: - ePokemonStorageSystem.unk_0d60 = sub_809CF30(); - switch (ePokemonStorageSystem.unk_0d60) - { - case -1: - sub_8098A5C(); - ePokemonStorageSystem.unk_0004 = 0; - break; - case -2: - break; - default: - PlaySE(SE_SELECT); - sub_8098A5C(); - ePokemonStorageSystem.unk_0d60 -= 16; - sub_8099DCC(ePokemonStorageSystem.unk_0d60); - ePokemonStorageSystem.unk_0004++; - break; - } - break; - case 3: - if (!sub_8099E08()) - { - sub_809A860(1); - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8097A64(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); - sub_8096264(&ePokemonStorageSystem.unk_2370, 0x0007, 0xdaca, 3); - sub_809634C(gPokemonStorage.currentBox); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - ePokemonStorageSystem.unk_08b2 = sub_8096368(); - switch (ePokemonStorageSystem.unk_08b2) - { - case 200: - break; - default: - sub_8098A5C(); - sub_809635C(); - sub_8096310(); - if (ePokemonStorageSystem.unk_08b2 == 201 || ePokemonStorageSystem.unk_08b2 == gPokemonStorage.currentBox) - { - sub_809A860(1); - SetPSSCallback(sub_8096C84); - } - else - { - ePokemonStorageSystem.unk_0004++; - } - break; - } - break; - case 2: - sub_8099C70(ePokemonStorageSystem.unk_08b2); - ePokemonStorageSystem.unk_0004++; - break; - case 3: - if (!sub_8099D34()) - { - gPokemonStorage.currentBox = ePokemonStorageSystem.unk_08b2; - SetPSSCallback(sub_8096C84); - } - break; - } -} - -void sub_8097B44(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - sub_809BB90(); - BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); - ePokemonStorageSystem.unk_0004++; - break; - case 1: - if (!UpdatePaletteFade()) - { - gUnknown_0203847F = 1; - ePokemonStorageSystem.unk_0006 = 1; - SetMainCallback2(sub_8096B5C); - } - break; - } -} - -void sub_8097BA0(void) -{ - switch (ePokemonStorageSystem.unk_0004) - { - case 0: - if (sub_809BF20()) - { - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - ePokemonStorageSystem.unk_0004 = 1; - } - else - { - PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_EXIT_BOX); - sub_8098A38(0); - ePokemonStorageSystem.unk_0004 = 2; - } - break; - case 1: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) - { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - case 2: - switch (ProcessMenuInputNoWrap()) - { - case 1: - case -1: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case 0: - PlaySE(SE_PC_OFF); - sub_8098A5C(); - ePokemonStorageSystem.unk_0004++; - break; - } - break; - case 3: - ePokemonStorageSystem.unk_000c.tileTag = 0x000e; - ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0; - ePokemonStorageSystem.unk_000c.unk04 = 20; - ePokemonStorageSystem.unk_000c.unk06 = 0; - sub_80C5E38(&ePokemonStorageSystem.unk_000c); - ePokemonStorageSystem.unk_0004++; - break; - case 4: - if (sub_80C5F98()) - { - gPlayerPartyCount = CalculatePlayerPartyCount(); - SetMainCallback2(sub_80961A8); - } - break; - } -} - -void sub_8097CC0(void) { - switch (ePokemonStorageSystem.unk_0004) { - case 0: - if (sub_809BF20()) { - PlaySE(SE_HAZURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - ePokemonStorageSystem.unk_0004 = 1; - } - else { - PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_CONTINUE_BOX); - sub_8098A38(0); - ePokemonStorageSystem.unk_0004 = 2; - } - break; - case 1: - if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) { - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - } - break; - case 2: - switch (ProcessMenuInputNoWrap()) { - case 0: - sub_8098A5C(); - SetPSSCallback(sub_8096C84); - break; - case -1: - case 1: - PlaySE(SE_PC_OFF); - sub_8098A5C(); - ePokemonStorageSystem.unk_0004++; - break; - } - break; - case 3: - ePokemonStorageSystem.unk_000c.tileTag = 0x000e; - ePokemonStorageSystem.unk_000c.paletteTag = 0xdad0; - ePokemonStorageSystem.unk_000c.unk04 = 20; - ePokemonStorageSystem.unk_000c.unk06 = 0; - sub_80C5E38(&ePokemonStorageSystem.unk_000c); - ePokemonStorageSystem.unk_0004++; - break; - case 4: - if (sub_80C5F98()) { - gPlayerPartyCount = CalculatePlayerPartyCount(); - SetMainCallback2(sub_80961A8); - } - break; - } -} - -void sub_8097DE0(void) -{ - ePokemonStorageSystem.unk_0007 = 0; - ePokemonStorageSystem.unk_0008 = 0; - ePokemonStorageSystem.unk_000a = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(30); - DmaCopy16Defvars(3, gPokemonStorageScrollingBGTile, BG_SCREEN_ADDR(28), sizeof gPokemonStorageScrollingBGTile); - LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, BG_SCREEN_ADDR(30)); - LoadPalette(gPokemonStorageScrollingBGPalette, 0xd0, 0x10); -} - -asm(".section .text.8098898"); - -void PrintStorageActionText(u8 index) { - u8 *ptr; - - MenuDrawTextWindow(10, 16, 29, 19); - - switch (gPCStorageActionTexts[index].format) - { - - case PC_TEXT_FMT_UNK_02: - ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); - ptr = StringCopy(ptr, ePokemonStorageSystem.unk_11fa); - break; - - case PC_TEXT_FMT_UNK_05: - ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); - ptr = StringCopy(ptr, ePokemonStorageSystem.unk_26e4); - break; - - case PC_TEXT_FMT_MON_NAME: - // {var} + " is selected." - ptr = StringCopy(ePokemonStorageSystem.unk_2694, ePokemonStorageSystem.unk_11fa); - ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); - break; - - case PC_TEXT_FMT_MON_NAME_2: - // {var} + " was released." - ptr = StringCopy(ePokemonStorageSystem.unk_2694, ePokemonStorageSystem.unk_26e4); -#if ENGLISH - ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); -#elif GERMAN - ptr = de_sub_8073174(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); -#endif - break; - - case PC_TEXT_FMT_UNK_03: - { - u8 *stringLength; - u8 *text; - - text = gPCStorageActionTexts[index].text; - stringLength = &text[StringLength(text)] + 1; - - ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); - ptr = StringCopy(ptr, ePokemonStorageSystem.unk_11fa); - ptr = StringCopy(ptr, stringLength); - } - break; - - case PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK: - // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1) - { - u8 *stringLength; - u8 *text; - - text = gPCStorageActionTexts[index].text; - stringLength = &text[StringLength(text)] - 1; - - ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); - ptr = StringCopy(ptr - 1, ePokemonStorageSystem.unk_26e4); - ptr = StringCopy(ptr, stringLength); - } - break; - - case PC_TEXT_FMT_NORMAL: - default: - ptr = StringCopy(ePokemonStorageSystem.unk_2694, gPCStorageActionTexts[index].text); - break; - } - - while (ptr < ePokemonStorageSystem.unk_26a6) - { - ptr[0] = CHAR_SPACE; - ptr++; - } - - ptr[0] = EOS; - MenuPrint(ePokemonStorageSystem.unk_2694, 11, 17); -} diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c new file mode 100644 index 000000000..5c72d02e9 --- /dev/null +++ b/src/pokemon/pokemon_storage_system_2.c @@ -0,0 +1,1566 @@ + +// Includes +#include "global.h" +#include "constants/songs.h" +#include "sound.h" +#include "ewram.h" +#include "task.h" +#include "main.h" +#include "palette.h" +#include "menu.h" +#include "graphics.h" +#include "strings.h" +#include "string_util.h" +#include "pokemon_summary_screen.h" +#include "mail_data.h" +#include "naming_screen.h" +#include "pokemon_storage_system.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u8 gUnknown_0203847C = 0; +EWRAM_DATA u8 gUnknown_0203847D = 0; +EWRAM_DATA u8 gUnknown_0203847E = 0; +EWRAM_DATA u8 gUnknown_0203847F = 0; +EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; +EWRAM_DATA u8 gUnknown_020384E4 = 0; +EWRAM_DATA u8 gUnknown_020384E5 = 0; +EWRAM_DATA u8 gUnknown_020384E6 = 0; +EWRAM_DATA u8 gUnknown_020384E7 = 0; +EWRAM_DATA u8 gUnknown_020384E8 = 0; +EWRAM_DATA u8 gUnknown_020384E9 = 0; +EWRAM_DATA u16 gUnknown_020384EA = 0; +EWRAM_DATA u32 gUnknown_020384EC = 0; + +// Static ROM declarations + +void sub_8096884(void); +void sub_8096AFC(void); +void sub_8096B38(void); +void SetPSSCallback(void (*func)(void)); +void sub_8096BF0(void); +void sub_8096C68(void); +void sub_8096C84(void); +void sub_8096FC8(void); +void sub_8097004(void); +void sub_8097078(void); +void sub_80972A8(void); +void sub_80972FC(void); +void c3_0808DC50(void); +void sub_8097390(void); +void sub_809746C(void); +void sub_8097594(void); +void sub_8097788(void); +void sub_80977E4(void); +void sub_8097858(void); +void sub_809789C(void); +void sub_8097974(void); +void sub_8097A64(void); +void sub_8097B44(void); +void sub_8097BA0(void); +void sub_8097CC0(void); +void sub_8097DE0(void); +void sub_8097E44(void); +void sub_8097E70(void); +void sub_8097F58(void); +void sub_8097FB8(void); +void BoxSetMosaic(void); +void sub_809801C(void); +void sub_80980D4(void); +void sub_8098400(void); +void add_to_c3_somehow(void); +bool8 sub_80985CC(void); +void sub_80986E8(void); +void sub_8098710(void); +void sub_8098734(void); +void sub_80987DC(void); +void sub_809880C(void); +bool8 sub_8098830(void); +void PrintStorageActionText(u8 index); +void sub_8098A38(u8); +void sub_8098A5C(void); +void sub_8098A80(void); +void sub_8098AA8(u8 a0); +void sub_8098B48(void); +void sub_8099310(void); +bool8 sub_8099374(void); +void sub_8099958(void); +bool8 sub_8099990(void); +void sub_809BB90(void); +void sub_8099BF8(u8 a0); +void sub_8099C70(u8 whichBox); +bool8 sub_8099D34(void); +void sub_8099DCC(u8 a0); +bool8 sub_8099E08(void); +void sub_809A860(u8 a0); +void sub_809AA24(void); +void sub_809AA98(void); +bool8 sub_809AC00(void); +void sub_809B0C0(u8 a0); +void sub_809B0D4(void); +void sub_809B0E0(void); +u8 sub_809B0F4(void); +void sub_809B100(u8 a0); +bool8 sub_809B130(void); +void sub_809B440(void); +bool8 sub_809B62C(u8); +void sub_809B6BC(void); +void sub_809B6DC(void); +bool8 sub_809B734(void); +void sub_809B760(void); +void sub_809B7AC(void); +void sub_809B7D4(void); +s8 sub_809B960(void); +void sub_809BBC0(void); +void sub_809BC18(void); +void sub_809BD14(void); +void sub_809BDD8(u8 markings); +bool8 sub_809BE80(void); +bool8 sub_809BEBC(void); +bool8 sub_809BF20(void); +bool8 sub_809BF48(void); +u8 sub_809CA40(void); +void sub_809CE84(void); +s16 sub_809CF30(void); +void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); +void sub_809CFF0(void); +void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height); + +// .rodata + +const u16 gPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.gbapal"); + +const u16 gPokemonStorageScrollingBGTile[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.4bpp"); + +const u8 gPokemonStorageScrollingBGTilemap[] = INCBIN_U8("graphics/pokemon_storage/scrolling_bg_map.bin.lz"); + +const u16 sUnknownTilemap[] = { + 0x1281, + 0x1282, + 0x1283, + 0x1284, + 0x1285, + 0x1286, + 0x1287, + 0x1288, + 0x128C, + 0x128D, + 0x128E, + 0x128F, + 0x1290, + 0x1291, + 0x1292, + 0x1293, + 0x0281, + 0x0282, + 0x0283, + 0x0284, + 0x0285, + 0x0286, + 0x0287, + 0x0288, + 0x028C, + 0x028D, + 0x028E, + 0x028F, + 0x0290, + 0x0291, + 0x0292, + 0x0293, + 0x12AD, + 0x12AE, + 0x12A8, + 0x12A8 +}; + +const u16 WaveformPalette[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal"); + +const u8 WaveformTiles[] = INCBIN_U8("graphics/pokemon_storage/waveform.4bpp"); + +const u16 gUnknown_083B6D74[] = INCBIN_U16("graphics/pokemon_storage/83B6D74.gbapal"); + +const u16 gUnknown_083B6D94[] = INCBIN_U16("graphics/pokemon_storage/83B6D94.gbapal"); + +struct PokemonStorageSystemData *const gPokemonStorageSystemPtr = &ePokemonStorageSystem; + +u8 *const gUnknown_083B6DB8 = gTileBuffer; + +const struct SpritePalette gWaveformSpritePalette = { + WaveformPalette, 0xdacd +}; + +const struct SpriteSheet gWaveformSpriteSheet = { + WaveformTiles, 0x1c0, 0x0005 +}; + +const struct SpriteSheet gUnknown_083B6DCC = { + ePokemonStorageSystem.unk_2784, 0x800, 0x0002 +}; + +const struct SpritePalette gUnknown_083B6DD4 = { + ePokemonStorageSystem.unk_2704, 0xdac7 +}; + +const struct OamData gOamData_83B6EAC; + +const struct SpriteTemplate gSpriteTemplate_83B6DDC = { + 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct StorageAction gPCStorageActionTexts[] = { + {PCText_ExitBox, 0}, + {PCText_WhatYouDo, 0}, + {PCText_PickATheme, 0}, + {PCText_PickAWallpaper, 0}, + {PCText_IsSelected, 1}, + {PCText_JumpToWhichBox, 0}, + {PCText_DepositInWhichBox, 0}, + {PCText_WasDeposited, 1}, + {PCText_BoxIsFull, 0}, + {PCText_ReleasePoke, 0}, + {PCText_WasReleased, 4}, + {PCText_ByeBye, 6}, + {PCText_MarkPoke, 0}, + {PCText_LastPoke, 0}, + {PCText_PartyFull, 0}, + {PCText_HoldingPoke, 0}, + {PCText_WhichOneWillTake, 0}, + {PCText_CantReleaseEgg, 0}, + {PCText_ContinueBox, 0}, + {PCText_CameBack, 1}, + {PCText_Worried, 0}, + {PCText_Surprise, 0}, + {PCText_PleaseRemoveMail, 0} +}; + +// .text + + +void task_intro_29(u8 whichMenu) +{ + gUnknown_0203847D = whichMenu; + gPokemonStorageSystemPtr->unk_0005 = whichMenu; + SetMainCallback2(sub_8096884); +} + +void sub_80967DC(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; +} + +void sub_8096804(void) +{ + ResetPaletteFade(); + ResetSpriteData(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + ResetTasks(); + gReservedSpriteTileCount = 0x280; + sub_809CFDC(gPokemonStorageSystemPtr->unk_0020, gPokemonStorageSystemPtr->unk_0020 + 1, 8); + gKeyRepeatStartDelay = 20; +} + +void sub_8096848(void) +{ + sub_809B0D4(); + gUnknown_0203847C = (gPokemonStorageSystemPtr->unk_0005 == 1 ? 1 : 0); + gUnknown_0203847E = 0; +} + +void sub_8096874(void) +{ + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; +} + +void sub_8096884(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + sub_8096804(); + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6D00); + gMain.state++; + break; + case 2: + InitMenuWindow(&gWindowConfig_81E6D00); + MenuZeroFillScreen(); + gMain.state++; + break; + case 3: + sub_80967DC(); + sub_8096848(); + gMain.state++; + break; + case 4: + sub_8098B48(); + sub_809AA24(); + gMain.state++; + break; + case 5: + sub_8097DE0(); + gMain.state++; + break; + case 6: + sub_8097E70(); + gMain.state++; + break; + case 7: + sub_8098400(); + gMain.state++; + break; + case 8: + sub_8099BF8(gPokemonStorage.currentBox); + gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a; + gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb; + sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc); + sub_80F7404(); + gMain.state++; + break; + case 9: + sub_8096874(); + SetPSSCallback(sub_8096BF0); + SetMainCallback2(sub_8096B38); + SetVBlankCallback(sub_8096AFC); + gMain.state++; + break; + } +} + +void sub_80969A0(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = 0x0000; + gPokemonStorageSystemPtr->unk_0005 = gUnknown_0203847D; + sub_8096804(); + if (gUnknown_0203847F == 1) + sub_809BBC0(); + if (gUnknown_0203847F == 0) + sub_809BD14(); + gMain.state++; + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E6D00); + gMain.state++; + break; + case 2: + InitMenuWindow(&gWindowConfig_81E6D00); + MenuZeroFillScreen(); + gMain.state++; + break; + case 3: + sub_80967DC(); + gMain.state++; + break; + case 4: + sub_8098B48(); + sub_809AA98(); + gMain.state++; + break; + case 5: + sub_8097DE0(); + gMain.state++; + break; + case 6: + sub_8097E70(); + gMain.state++; + break; + case 7: + sub_8098400(); + gMain.state++; + break; + case 8: + sub_8099BF8(gPokemonStorage.currentBox); + gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a; + gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb; + sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc); + sub_80F7404(); + gMain.state++; + break; + case 9: + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); + SetVBlankCallback(sub_8096AFC); + gMain.state++; + break; + case 10: + sub_8096874(); + SetPSSCallback(sub_8096C68); + SetMainCallback2(sub_8096B38); + gMain.state++; + break; + } +} + +void sub_8096AFC(void) +{ + REG_BG2HOFS = gPokemonStorageSystemPtr->unk_08b4; + REG_BG3HOFS = gPokemonStorageSystemPtr->unk_000a; + REG_BG3VOFS = gPokemonStorageSystemPtr->unk_0008; + LoadOam(); + ProcessSpriteCopyRequests(); + sub_809CFF0(); + TransferPlttBuffer(); +} + +void sub_8096B38(void) +{ + gPokemonStorageSystemPtr->unk_0000(); + sub_8097E44(); + sub_8098734(); + AnimateSprites(); + BuildOamBuffer(); +} + +void sub_8096B5C(void) +{ + switch (gPokemonStorageSystemPtr->unk_0006) + { + case 0: + ShowPokemonSummaryScreen(gPokemonStorageSystemPtr->unk_2690, gPokemonStorageSystemPtr->unk_268d, gPokemonStorageSystemPtr->unk_268c, sub_80969A0, gPokemonStorageSystemPtr->unk_268e); + break; + case 1: + DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0); + break; + } +} + +void SetPSSCallback(void (*func)(void)) +{ + gPokemonStorageSystemPtr->unk_0000 = func; + gPokemonStorageSystemPtr->unk_0004 = 0; +} + +void sub_8096BF0(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + BlendPalettes(0xffffffff, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + PlaySE(SE_PC_LOGON); + gPokemonStorageSystemPtr->unk_000c.tileTag = 14; + gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; + gPokemonStorageSystemPtr->unk_000c.unk04 = 0; + gPokemonStorageSystemPtr->unk_000c.unk06 = 0; + sub_80C5CD4(&gPokemonStorageSystemPtr->unk_000c); + BlendPalettes(0xffffffff, 0, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 2: + if (sub_80C5DCC()) + SetPSSCallback(sub_8096C84); + break; + } +} + +void sub_8096C68(void) +{ + if (!UpdatePaletteFade()) + SetPSSCallback(sub_8096C84); +} + +void sub_8096C84(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + switch (sub_809CA40()) + { + case 1: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_0004 = 1; + break; + case 5: + if (gPokemonStorageSystemPtr->unk_0005 != 2) + { + PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); + gPokemonStorageSystemPtr->unk_0004 = 3; + } + else + { + sub_809B0D4(); + SetPSSCallback(sub_8096FC8); + } + break; + case 6: + if (gPokemonStorageSystemPtr->unk_0005 == 2) + { + if (sub_809BF20() && ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + { + gPokemonStorageSystemPtr->unk_0004 = 5; + } + else + { + SetPSSCallback(sub_8097004); + } + } + break; + case 4: + SetPSSCallback(sub_8097BA0); + break; + case 16: + SetPSSCallback(sub_8097CC0); + break; + case 7: + PlaySE(SE_SELECT); + SetPSSCallback(sub_809789C); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097078); + break; + case 9: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox + 1; + if (gPokemonStorageSystemPtr->unk_08b2 > 13) + gPokemonStorageSystemPtr->unk_08b2 = 0; + sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); + gPokemonStorageSystemPtr->unk_0004 = 2; + break; + case 10: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox - 1; + if (gPokemonStorageSystemPtr->unk_08b2 < 0) + gPokemonStorageSystemPtr->unk_08b2 = 13; + sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); + gPokemonStorageSystemPtr->unk_0004 = 2; + break; + case 11: + if (!sub_809BE80()) + { + if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + { + gPokemonStorageSystemPtr->unk_0004 = 5; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_809746C); + } + } + else + { + gPokemonStorageSystemPtr->unk_0004 = 4; + } + break; + case 13: + if (sub_809BE80()) + { + gPokemonStorageSystemPtr->unk_0004 = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_80972A8); + } + break; + case 14: + if (!sub_809BEBC()) + { + gPokemonStorageSystemPtr->unk_0004 = 4; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(c3_0808DC50); + } + break; + case 12: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097390); + break; + case 15: + PlaySE(SE_SELECT); + SetPSSCallback(sub_80972FC); + break; + } + break; + case 1: + if (!sub_809AC00()) + { + if (sub_809BF48()) + sub_80986E8(); + else + sub_8098710(); + if (gPokemonStorageSystemPtr->unk_11f6) + BoxSetMosaic(); + gPokemonStorageSystemPtr->unk_0004 = 0; + } + break; + case 2: + if (!sub_8099D34()) + { + gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2; + if (!gUnknown_0203847C && !sub_809BF20()) + { + sub_809B440(); + BoxSetMosaic(); + } + gPokemonStorageSystemPtr->unk_0004 = 0; + } + break; + case 3: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0004 = 0; + } + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + gPokemonStorageSystemPtr->unk_0004 = 6; + break; + case 5: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + gPokemonStorageSystemPtr->unk_0004 = 6; + break; + case 6: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8096FC8(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_809880C(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_8098830()) + SetPSSCallback(sub_8096C84); + break; + } +} + +void sub_8097004(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PlaySE(SE_SELECT); + add_to_c3_somehow(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_80985CC()) + { + sub_809B0C0(sub_809B0F4()); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 2: + if (!sub_809AC00()) + { + if (gPokemonStorageSystemPtr->unk_11f6) + BoxSetMosaic(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097078(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_IS_SELECTED); + sub_809CE84(); + gPokemonStorageSystemPtr->unk_0004 = 1; + break; + case 1: + switch (sub_809CF30()) + { + case -1: + case 0: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 3: + if (sub_809BE80()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_80972A8); + } + break; + case 5: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_80972FC); + break; + case 4: + if (!sub_809BEBC()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(c3_0808DC50); + } + break; + case 2: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097390); + break; + case 1: + if (sub_809BE80()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + { + gPokemonStorageSystemPtr->unk_0004 = 3; + } + else + { + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_809746C); + } + break; + case 7: + if (sub_809BE80()) + { + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else if (gPokemonStorageSystemPtr->unk_11f9) + { + gPokemonStorageSystemPtr->unk_0004 = 4; + } + else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2)) + { + gPokemonStorageSystemPtr->unk_0004 = 3; + } + else + { + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097594); + } + break; + case 6: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097788); + break; + case 8: + PlaySE(SE_SELECT); + SetPSSCallback(sub_80977E4); + break; + } + break; + case 2: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_LAST_POKE); + gPokemonStorageSystemPtr->unk_0004 = 5; + break; + case 4: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); + gPokemonStorageSystemPtr->unk_0004 = 5; + break; + case 3: + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); + gPokemonStorageSystemPtr->unk_0004 = 5; + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_80972A8(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_809B100(0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + if (gUnknown_0203847C) + SetPSSCallback(sub_8097858); + else + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_80972FC(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_809B100(1); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + if (gUnknown_0203847C) + SetPSSCallback(sub_8097858); + else + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void c3_0808DC50(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_809B100(2); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_809B130()) + { + BoxSetMosaic(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097390(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + if (CalculatePlayerPartyCount() == 6) + { + PrintStorageActionText(PC_TEXT_PARTY_FULL); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + else + { + sub_809B0E0(); + sub_809B100(0); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + if (!sub_809B130()) + { + sub_809880C(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 3: + if (!sub_8098830()) + { + sub_809B100(1); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 4: + if (!sub_809B130()) + { + sub_80987DC(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 5: + SetPSSCallback(sub_8097004); + break; + } +} + +void sub_809746C(void) +{ + u8 r4; + + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3); + sub_809634C(gUnknown_0203847E); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + r4 = sub_8096368(); + if (r4 == 200); + else if (r4 == 201) + { + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + SetPSSCallback(sub_8096C84); + } + else + { + if (sub_809B62C(r4)) + { + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + else + { + PrintStorageActionText(PC_TEXT_BOX_IS_FULL); + gPokemonStorageSystemPtr->unk_0004 = 4; + } + gUnknown_0203847E = r4; + } + break; + case 2: + party_compaction(); + sub_8099310(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 3: + if (!sub_8099374()) + { + sub_809B6BC(); + BoxSetMosaic(); + sub_80987DC(); + SetPSSCallback(sub_8096C84); + } + break; + case 4: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + break; + } +} + +void sub_8097594(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_RELEASE_POKE); + sub_8098A38(1); + gPokemonStorageSystemPtr->unk_0004++; + // fallthrough + case 1: + switch (ProcessMenuInputNoWrap()) + { + case -1: + case 1: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 0: + sub_8098A5C(); + sub_809B7D4(); + sub_809B6DC(); + gPokemonStorageSystemPtr->unk_0004++; + break; + } + break; + case 2: + sub_809B960(); + if (!sub_809B734()) + { + while (1) + { + s8 r0 = sub_809B960(); + if (r0 == 1) + { + gPokemonStorageSystemPtr->unk_0004++; + break; + } + if (r0 == 0) + { + gPokemonStorageSystemPtr->unk_0004 = 8; + break; + } + } + } + break; + case 3: + sub_809B760(); + sub_809801C(); + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 4: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_BYE_BYE); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + if (gUnknown_0203847C) + { + party_compaction(); + sub_8099310(); + gPokemonStorageSystemPtr->unk_0004++; + } + else + { + gPokemonStorageSystemPtr->unk_0004 = 7; + } + } + break; + case 6: + if (!sub_8099374()) + { + sub_809B440(); + BoxSetMosaic(); + sub_80987DC(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 7: + SetPSSCallback(sub_8096C84); + break; + case 8: + PrintStorageActionText(PC_TEXT_WAS_RELEASED); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 9: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_SURPRISE); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 10: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + sub_8099958(); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 11: + if (!sub_8099990()) + { + sub_809B7AC(); + PrintStorageActionText(PC_TEXT_CAME_BACK); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 12: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + PrintStorageActionText(PC_TEXT_WORRIED); + gPokemonStorageSystemPtr->unk_0004++; + } + break; + case 13: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097788(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_809BC18(); + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + { + gUnknown_0203847F = 0; + gPokemonStorageSystemPtr->unk_0006 = 0; + SetMainCallback2(sub_8096B5C); + } + break; + } +} + +void sub_80977E4(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_MARK_POKE); + gPokemonStorageSystemPtr->unk_12bc.markings = gPokemonStorageSystemPtr->unk_11f7; + sub_80F7418(gPokemonStorageSystemPtr->unk_11f7, 0xb0, 0x10); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_80F7500()) + { + sub_80F7470(); + sub_8098A5C(); + sub_809BDD8(gPokemonStorageSystemPtr->unk_12bc.markings); + sub_809801C(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097858(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + party_compaction(); + sub_8099310(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!sub_8099374()) + { + sub_80987DC(); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_809789C(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); + sub_809CE84(); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + switch (sub_809CF30()) + { + case -1: + case 0: + sub_809A860(1); + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 11: + PlaySE(SE_SELECT); + SetPSSCallback(sub_8097B44); + break; + case 10: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097974); + break; + case 9: + PlaySE(SE_SELECT); + sub_8098A5C(); + SetPSSCallback(sub_8097A64); + break; + } + break; + } +} + +void sub_8097974(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_8098A80(); + PrintStorageActionText(PC_TEXT_PICK_A_THEME); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + gPokemonStorageSystemPtr->unk_0d5e = sub_809CF30(); + switch (gPokemonStorageSystemPtr->unk_0d5e) + { + case -1: + sub_809A860(1); + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 12 ... 15: + PlaySE(SE_SELECT); + gPokemonStorageSystemPtr->unk_0d5e -= 12; + sub_8098AA8(gPokemonStorageSystemPtr->unk_0d5e); + PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); + gPokemonStorageSystemPtr->unk_0004++; + break; + } + break; + case 2: + gPokemonStorageSystemPtr->unk_0d60 = sub_809CF30(); + switch (gPokemonStorageSystemPtr->unk_0d60) + { + case -1: + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0004 = 0; + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0d60 -= 16; + sub_8099DCC(gPokemonStorageSystemPtr->unk_0d60); + gPokemonStorageSystemPtr->unk_0004++; + break; + } + break; + case 3: + if (!sub_8099E08()) + { + sub_809A860(1); + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097A64(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); + sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3); + sub_809634C(gPokemonStorage.currentBox); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + gPokemonStorageSystemPtr->unk_08b2 = sub_8096368(); + switch (gPokemonStorageSystemPtr->unk_08b2) + { + case 200: + break; + default: + sub_8098A5C(); + sub_809635C(); + sub_8096310(); + if (gPokemonStorageSystemPtr->unk_08b2 == 201 || gPokemonStorageSystemPtr->unk_08b2 == gPokemonStorage.currentBox) + { + sub_809A860(1); + SetPSSCallback(sub_8096C84); + } + else + { + gPokemonStorageSystemPtr->unk_0004++; + } + break; + } + break; + case 2: + sub_8099C70(gPokemonStorageSystemPtr->unk_08b2); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 3: + if (!sub_8099D34()) + { + gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2; + SetPSSCallback(sub_8096C84); + } + break; + } +} + +void sub_8097B44(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + sub_809BB90(); + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 1: + if (!UpdatePaletteFade()) + { + gUnknown_0203847F = 1; + gPokemonStorageSystemPtr->unk_0006 = 1; + SetMainCallback2(sub_8096B5C); + } + break; + } +} + +void sub_8097BA0(void) +{ + switch (gPokemonStorageSystemPtr->unk_0004) + { + case 0: + if (sub_809BF20()) + { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + else + { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_EXIT_BOX); + sub_8098A38(0); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) + { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + switch (ProcessMenuInputNoWrap()) + { + case 1: + case -1: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case 0: + PlaySE(SE_PC_OFF); + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0004++; + break; + } + break; + case 3: + gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e; + gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; + gPokemonStorageSystemPtr->unk_000c.unk04 = 20; + gPokemonStorageSystemPtr->unk_000c.unk06 = 0; + sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 4: + if (sub_80C5F98()) + { + gPlayerPartyCount = CalculatePlayerPartyCount(); + SetMainCallback2(sub_80961A8); + } + break; + } +} + +void sub_8097CC0(void) { + switch (gPokemonStorageSystemPtr->unk_0004) { + case 0: + if (sub_809BF20()) { + PlaySE(SE_HAZURE); + PrintStorageActionText(PC_TEXT_HOLDING_POKE); + gPokemonStorageSystemPtr->unk_0004 = 1; + } + else { + PlaySE(SE_SELECT); + PrintStorageActionText(PC_TEXT_CONTINUE_BOX); + sub_8098A38(0); + gPokemonStorageSystemPtr->unk_0004 = 2; + } + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY)) { + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + } + break; + case 2: + switch (ProcessMenuInputNoWrap()) { + case 0: + sub_8098A5C(); + SetPSSCallback(sub_8096C84); + break; + case -1: + case 1: + PlaySE(SE_PC_OFF); + sub_8098A5C(); + gPokemonStorageSystemPtr->unk_0004++; + break; + } + break; + case 3: + gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e; + gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0; + gPokemonStorageSystemPtr->unk_000c.unk04 = 20; + gPokemonStorageSystemPtr->unk_000c.unk06 = 0; + sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c); + gPokemonStorageSystemPtr->unk_0004++; + break; + case 4: + if (sub_80C5F98()) { + gPlayerPartyCount = CalculatePlayerPartyCount(); + SetMainCallback2(sub_80961A8); + } + break; + } +} + +void sub_8097DE0(void) +{ + gPokemonStorageSystemPtr->unk_0007 = 0; + gPokemonStorageSystemPtr->unk_0008 = 0; + gPokemonStorageSystemPtr->unk_000a = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(30); + DmaCopy16Defvars(3, gPokemonStorageScrollingBGTile, BG_SCREEN_ADDR(28), sizeof gPokemonStorageScrollingBGTile); + LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, BG_SCREEN_ADDR(30)); + LoadPalette(gPokemonStorageScrollingBGPalette, 0xd0, 0x10); +} + +void sub_8097E44(void) +{ + if (++gPokemonStorageSystemPtr->unk_0007 >= 2) + { + gPokemonStorageSystemPtr->unk_0007 = 0; + gPokemonStorageSystemPtr->unk_0008--; + gPokemonStorageSystemPtr->unk_000a++; + } +} + +void sub_8097E70(void) +{ + LZ77UnCompVram(gPSSMenuHeader_Gfx, BG_SCREEN_ADDR(10)); + LZ77UnCompWram(gPSSMenuHeader_Tilemap, gUnknown_02039760); + sub_809D034(BG_SCREEN_ADDR(15), 0, 0, gUnknown_02039760, 0, 0, 10, 20); + LoadPalette(gPSSMenu1_Pal, 0x10, 0x20); + LoadPalette(gPSSMenu2_Pal, 0x00, 0x20); + LoadPalette(gUnknown_083B6D74, 0xB0, 0x20); + LoadPalette(gUnknown_083B6D94, 0xC0, 0x20); + LoadPalette(gUnknownPalette_81E6692 + 1, 0xF1, 0x02); + LoadPalette(gUnknownPalette_81E6692 + 1, 0xF2, 0x02); + LoadPalette(gUnknownPalette_81E6692 + 5, 0xF3, 0x02); + LoadPalette(gUnknownPalette_81E6692 + 12, 0xF4, 0x04); + LoadPalette(gUnknownPalette_81E6692 + 10, 0xF6, 0x04); + LoadPalette(gUnknownPalette_81E6692 + 2, 0xFF, 0x02); + LoadSpritePalette(&gWaveformSpritePalette); + sub_80980D4(); + sub_8097F58(); + sub_8097FB8(); + sub_809801C(); +} + +asm(".section .text.8098898"); + +void PrintStorageActionText(u8 index) { + u8 *ptr; + + MenuDrawTextWindow(10, 16, 29, 19); + + switch (gPCStorageActionTexts[index].format) + { + + case PC_TEXT_FMT_UNK_02: + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa); + break; + + case PC_TEXT_FMT_UNK_05: + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_26e4); + break; + + case PC_TEXT_FMT_MON_NAME: + // {var} + " is selected." + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_11fa); + ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); + break; + + case PC_TEXT_FMT_MON_NAME_2: + // {var} + " was released." + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_26e4); +#if ENGLISH + ptr = StringCopy(ptr, gPCStorageActionTexts[index].text); +#elif GERMAN + ptr = de_sub_8073174(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); +#endif + break; + + case PC_TEXT_FMT_UNK_03: + { + const u8 *stringLength; + const u8 *text; + + text = gPCStorageActionTexts[index].text; + stringLength = &text[StringLength(text)] + 1; + + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa); + ptr = StringCopy(ptr, stringLength); + } + break; + + case PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK: + // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1) + { + const u8 *stringLength; + const u8 *text; + + text = gPCStorageActionTexts[index].text; + stringLength = &text[StringLength(text)] - 1; + + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + ptr = StringCopy(ptr - 1, gPokemonStorageSystemPtr->unk_26e4); + ptr = StringCopy(ptr, stringLength); + } + break; + + case PC_TEXT_FMT_NORMAL: + default: + ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text); + break; + } + + while (ptr < gPokemonStorageSystemPtr->unk_26a6) + { + ptr[0] = CHAR_SPACE; + ptr++; + } + + ptr[0] = EOS; + MenuPrint(gPokemonStorageSystemPtr->unk_2694, 11, 17); +} diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c new file mode 100644 index 000000000..9e0052b89 --- /dev/null +++ b/src/pokemon/pokemon_storage_system_3.c @@ -0,0 +1,16 @@ + +// Includes +#include "global.h" +#include "pokemon_storage_system.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u16 gUnknown_02039760[0x600] = {}; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 9563bc08f..fb8363569 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -146,7 +146,6 @@ extern const u8 gUnknown_08E74E88[]; extern const u8 gUnknown_08E73508[]; extern const u8 gStatusScreen_Gfx[]; extern const u8 gFontDefaultPalette[]; -extern const u8 gUnknownPalette_81E6692[]; extern const u8 gAbilityNames[][13]; extern const u8 * const gAbilityDescriptions[]; extern const u8 * const gContestEffectStrings[]; @@ -940,21 +939,21 @@ static bool8 LoadPokemonSummaryScreenGraphics(void) static void sub_809E044(void) { - LoadPalette(&gUnknownPalette_81E6692[28], 129, 2); - LoadPalette(&gUnknownPalette_81E6692[30], 136, 2); - LoadPalette(&gUnknownPalette_81E6692[28], 143, 2); - LoadPalette(&gUnknownPalette_81E6692[30], 137, 2); - LoadPalette(&gUnknownPalette_81E6692[12], 209, 4); - LoadPalette(&gUnknownPalette_81E6692[20], 211, 4); - LoadPalette(&gUnknownPalette_81E6692[28], 213, 4); - LoadPalette(&gUnknownPalette_81E6692[12], 215, 4); - LoadPalette(&gUnknownPalette_81E6692[8], 217, 4); - LoadPalette(&gUnknownPalette_81E6692[16], 219, 4); - LoadPalette(&gUnknownPalette_81E6692[4], 221, 2); - LoadPalette(&gUnknownPalette_81E6692[6], 222, 2); - LoadPalette(&gUnknownPalette_81E6692[2], 223, 2); + LoadPalette(gUnknownPalette_81E6692 + 14, 129, 2); + LoadPalette(gUnknownPalette_81E6692 + 15, 136, 2); + LoadPalette(gUnknownPalette_81E6692 + 14, 143, 2); + LoadPalette(gUnknownPalette_81E6692 + 15, 137, 2); + LoadPalette(gUnknownPalette_81E6692 + 6, 209, 4); + LoadPalette(gUnknownPalette_81E6692 + 10, 211, 4); + LoadPalette(gUnknownPalette_81E6692 + 14, 213, 4); + LoadPalette(gUnknownPalette_81E6692 + 6, 215, 4); + LoadPalette(gUnknownPalette_81E6692 + 4, 217, 4); + LoadPalette(gUnknownPalette_81E6692 + 8, 219, 4); + LoadPalette(gUnknownPalette_81E6692 + 2, 221, 2); + LoadPalette(gUnknownPalette_81E6692 + 3, 222, 2); + LoadPalette(gUnknownPalette_81E6692 + 1, 223, 2); LoadPalette(gFontDefaultPalette, 240, 32); - LoadPalette(&gUnknownPalette_81E6692[6], 249, 2); + LoadPalette(gUnknownPalette_81E6692 + 3, 249, 2); } static void SummaryScreenExit(u8 taskId) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 8a67390ad..ee5bdb1cb 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -102,7 +102,6 @@ extern const u16 gPokenavConditionSearch2_Pal[]; extern const u8 gUnknown_083E0334[]; extern const u16 gUnknown_083E02B4[]; extern const u8 gPokenavConditionSearch2_Gfx[]; -extern const u8 gUnknownPalette_81E6692[]; extern const u8 gUnknown_083E0254[]; extern const u8 gUnknown_08E9FEB4[]; extern const u8 gUnknown_083E01AC[]; -- cgit v1.2.3 From 66bf3cc2bbe16dd2b51bb76b2cae9e15272a6a34 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Tue, 9 Jan 2018 18:43:52 +0100 Subject: Started decompiling bug.s --- src/battle/anim/bug.c | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 src/battle/anim/bug.c (limited to 'src') diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c new file mode 100644 index 000000000..e9372ed9e --- /dev/null +++ b/src/battle/anim/bug.c @@ -0,0 +1,105 @@ +#include "global.h" +#include "battle_anim.h" +#include "contest.h" +#include "rom_8077ABC.h" +#include "trig.h" +// #include "util.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; + +static void sub_80DCA38(struct Sprite *sprite); + +// used in Move_MEGAHORN +void sub_80DC824(struct Sprite *sprite) +{ + if (IsContest()) + { + StartSpriteAffineAnim(sprite, 2); + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + else if (!GetBankSide(gAnimBankTarget)) + { + StartSpriteAffineAnim(sprite, 1); + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + + sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[4]; + + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// used in Move_LEECH_LIFE +void sub_80DC8F4(struct Sprite *sprite) +{ + if (IsContest()) + { + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + StartSpriteAffineAnim(sprite, 2); + } + else if (!GetBankSide(gAnimBankTarget)) + { + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + } + + sprite->pos1.x = sub_8077EE4(gAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077EE4(gAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// used in 2 moves: +// Move_STRING_SHOT, Move_SPIDER_WEB +void sub_80DC9A0(struct Sprite *sprite) +{ + if (IsContest()) + gBattleAnimArgs[2] /= 2; + + sub_80787B0(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = sprite->pos1.x; + sprite->data[3] = sprite->pos1.y; + + if (!gBattleAnimArgs[4]) + { + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + } + else + { + sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]); + } + + sub_8078BD4(sprite); + sprite->data[5] = gBattleAnimArgs[3]; + sprite->callback = sub_80DCA38; +} + +static void sub_80DCA38(struct Sprite *sprite) +{ + if (sub_8078B5C(sprite)) + { + DestroyAnimSprite(sprite); + return; + } + + sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]); + sprite->data[6] = (sprite->data[6] + 13) & 0xFF; +} \ No newline at end of file -- cgit v1.2.3 From 4facfe910285787778666eeee747b4c1c7201d98 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 14:43:24 -0500 Subject: through sub_80980D4 (nonmatching) --- src/pokemon/pokemon_storage_system_2.c | 321 ++++++++++++++++++++++++++++----- 1 file changed, 276 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 5c72d02e9..f8ae1c013 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -66,9 +66,13 @@ void sub_8097E44(void); void sub_8097E70(void); void sub_8097F58(void); void sub_8097FB8(void); -void BoxSetMosaic(void); void sub_809801C(void); +void BoxSetMosaic(void); +void sub_8098090(struct Sprite *sprite); void sub_80980D4(void); +void sub_80981F0(u16 species, u32 pid); +void sub_80982B4(void); +void sub_8098350(void); void sub_8098400(void); void add_to_c3_somehow(void); bool8 sub_80985CC(void); @@ -191,50 +195,6 @@ const struct SpritePalette gWaveformSpritePalette = { WaveformPalette, 0xdacd }; -const struct SpriteSheet gWaveformSpriteSheet = { - WaveformTiles, 0x1c0, 0x0005 -}; - -const struct SpriteSheet gUnknown_083B6DCC = { - ePokemonStorageSystem.unk_2784, 0x800, 0x0002 -}; - -const struct SpritePalette gUnknown_083B6DD4 = { - ePokemonStorageSystem.unk_2704, 0xdac7 -}; - -const struct OamData gOamData_83B6EAC; - -const struct SpriteTemplate gSpriteTemplate_83B6DDC = { - 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy -}; - -const struct StorageAction gPCStorageActionTexts[] = { - {PCText_ExitBox, 0}, - {PCText_WhatYouDo, 0}, - {PCText_PickATheme, 0}, - {PCText_PickAWallpaper, 0}, - {PCText_IsSelected, 1}, - {PCText_JumpToWhichBox, 0}, - {PCText_DepositInWhichBox, 0}, - {PCText_WasDeposited, 1}, - {PCText_BoxIsFull, 0}, - {PCText_ReleasePoke, 0}, - {PCText_WasReleased, 4}, - {PCText_ByeBye, 6}, - {PCText_MarkPoke, 0}, - {PCText_LastPoke, 0}, - {PCText_PartyFull, 0}, - {PCText_HoldingPoke, 0}, - {PCText_WhichOneWillTake, 0}, - {PCText_CantReleaseEgg, 0}, - {PCText_ContinueBox, 0}, - {PCText_CameBack, 1}, - {PCText_Worried, 0}, - {PCText_Surprise, 0}, - {PCText_PleaseRemoveMail, 0} -}; - // .text @@ -1484,6 +1444,249 @@ void sub_8097E70(void) sub_809801C(); } +void sub_8097F58(void) +{ + gPokemonStorageSystemPtr->unk_12ac = sub_80F7940(0x000d, 0xdace, 0); + gPokemonStorageSystemPtr->unk_12ac->oam.priority = 0; + gPokemonStorageSystemPtr->unk_12ac->subpriority = 1; + gPokemonStorageSystemPtr->unk_12ac->pos1.x = 0x28; + gPokemonStorageSystemPtr->unk_12ac->pos1.y = 0x95; + gPokemonStorageSystemPtr->unk_12b8 = BG_CHAR_ADDR(4) + 32 * GetSpriteTileStartByTag(0x000d); +} + +const struct SpriteTemplate gSpriteTemplate_83B6EFC; + +void sub_8097FB8(void) +{ + u16 i; + struct SpriteSheet sheet = {WaveformTiles, 0x1c0, 0x0005}; + + LoadSpriteSheet(&sheet); + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_83B6EFC, i * 63 + 8, 9, 2); + gPokemonStorageSystemPtr->unk_12b0[i] = gSprites + spriteId; + } +} + +void sub_809801C(void) +{ + sub_80981F0(gPokemonStorageSystemPtr->unk_11f0, gPokemonStorageSystemPtr->unk_11ec); + sub_80982B4(); + sub_8098350(); +} + +void BoxSetMosaic(void) +{ + sub_809801C(); + if (gPokemonStorageSystemPtr->unk_2700) + { + gPokemonStorageSystemPtr->unk_2700->oam.mosaic = TRUE; + gPokemonStorageSystemPtr->unk_2700->data[0] = 10; + gPokemonStorageSystemPtr->unk_2700->data[1] = 1; + gPokemonStorageSystemPtr->unk_2700->callback = sub_8098090; + REG_MOSAIC = (gPokemonStorageSystemPtr->unk_2700->data[0] << 12) | (gPokemonStorageSystemPtr->unk_2700->data[0] << 8); + } +} + +void sub_8098090(struct Sprite *sprite) +{ + sprite->data[0] -= sprite->data[1]; + if (sprite->data[0] < 0) + sprite->data[0] = 0; + REG_MOSAIC = (sprite->data[0] << 12) | (sprite->data[0] << 8); + if (sprite->data[0] == 0) + { + sprite->oam.mosaic = FALSE; + sprite->callback = SpriteCallbackDummy; + } +} + +// sub_80980D4 + +const struct OamData gOamData_83B6EAC; + +#ifdef NONMATCHING +void sub_80980D4(void) +{ + u16 i; + u16 tileStart; + u8 palSlot; + u8 spriteId; + struct SpriteSheet sheet = {gPokemonStorageSystemPtr->unk_2784, 0x800, 0x0002}; + struct SpritePalette palette = {gPokemonStorageSystemPtr->unk_2704, 0xdac7}; + struct SpriteTemplate template = { + 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + }; + + for (i = 0; i < 0x800; i++) + gPokemonStorageSystemPtr->unk_2784[i] = 0; + for (i = 0; i < 0x10; i++) + gPokemonStorageSystemPtr->unk_2704[i] = 0; + + gPokemonStorageSystemPtr->unk_2700 = NULL; + if ((tileStart = LoadSpriteSheet(&sheet)) != 0 + && (palSlot = LoadSpritePalette(&palette)) != 0xff + && (spriteId = CreateSprite(&template, 0x28, 0x30, 0)) != MAX_SPRITES) + { + // FIXME this gets compiled as a separate block between the palSlot check and the spriteId check + gPokemonStorageSystemPtr->unk_2700 = gSprites + spriteId; + gPokemonStorageSystemPtr->unk_26fa = palSlot * 16 + 0x100; + gPokemonStorageSystemPtr->unk_26fc = BG_CHAR_ADDR(4) + tileStart * 32; + } + + if (gPokemonStorageSystemPtr->unk_2700 == NULL) + { + FreeSpriteTilesByTag(0x0002); + FreeSpritePaletteByTag(0xdac7); + } +} +#else + +const struct SpriteSheet gUnknown_083B6DCC = {ePokemonStorageSystem.unk_2784, 0x800, 0x0002}; +const struct SpritePalette gUnknown_083B6DD4 = {ePokemonStorageSystem.unk_2704, 0xdac7}; +const struct SpriteTemplate gSpriteTemplate_83B6DDC = { + 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +__attribute__((naked)) void sub_80980D4(void) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tsub sp, 0x28\n" + "\tldr r0, _08098150 @ =gUnknown_083B6DCC\n" + "\tldr r1, [r0, 0x4]\n" + "\tldr r0, [r0]\n" + "\tstr r0, [sp, 0x18]\n" + "\tstr r1, [sp, 0x1C]\n" + "\tldr r0, _08098154 @ =gUnknown_083B6DD4\n" + "\tldr r1, [r0, 0x4]\n" + "\tldr r0, [r0]\n" + "\tstr r0, [sp, 0x20]\n" + "\tstr r1, [sp, 0x24]\n" + "\tmov r1, sp\n" + "\tldr r0, _08098158 @ =gSpriteTemplate_83B6DDC\n" + "\tldm r0!, {r2-r4}\n" + "\tstm r1!, {r2-r4}\n" + "\tldm r0!, {r2-r4}\n" + "\tstm r1!, {r2-r4}\n" + "\tmovs r1, 0\n" + "\tadd r5, sp, 0x18\n" + "\tldr r4, _0809815C @ =gSharedMem + 0x2784\n" + "\tmovs r3, 0\n" + "\tldr r2, _08098160 @ =0x000007ff\n" + "_08098102:\n" + "\tadds r0, r1, r4\n" + "\tstrb r3, [r0]\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tcmp r1, r2\n" + "\tbls _08098102\n" + "\tmovs r1, 0\n" + "\tldr r3, _08098164 @ =gSharedMem + 0x2704\n" + "\tmovs r2, 0\n" + "_08098116:\n" + "\tlsls r0, r1, 1\n" + "\tadds r0, r3\n" + "\tstrh r2, [r0]\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tcmp r1, 0xF\n" + "\tbls _08098116\n" + "\tldr r0, _08098168 @ =gSharedMem\n" + "\tmovs r1, 0x9C\n" + "\tlsls r1, 6\n" + "\tadds r0, r1\n" + "\tmovs r1, 0\n" + "\tstr r1, [r0]\n" + "\tadds r0, r5, 0\n" + "\tbl LoadSpriteSheet\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tcmp r5, 0\n" + "\tbeq _080981C4\n" + "\tadd r0, sp, 0x20\n" + "\tbl LoadSpritePalette\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0xFF\n" + "\tbeq _080981C4\n" + "\tb _080981B0\n" + "\t.align 2, 0\n" + "_08098150: .4byte gUnknown_083B6DCC\n" + "_08098154: .4byte gUnknown_083B6DD4\n" + "_08098158: .4byte gSpriteTemplate_83B6DDC\n" + "_0809815C: .4byte gSharedMem + 0x2784\n" + "_08098160: .4byte 0x000007ff\n" + "_08098164: .4byte gSharedMem + 0x2704\n" + "_08098168: .4byte gSharedMem\n" + "_0809816C:\n" + "\tldr r2, _0809819C @ =gSharedMem\n" + "\tmovs r0, 0x9C\n" + "\tlsls r0, 6\n" + "\tadds r3, r2, r0\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tldr r1, _080981A0 @ =gSprites\n" + "\tadds r0, r1\n" + "\tstr r0, [r3]\n" + "\tlsls r0, r4, 4\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 1\n" + "\tadds r0, r1\n" + "\tldr r3, _080981A4 @ =0x000026fa\n" + "\tadds r1, r2, r3\n" + "\tstrh r0, [r1]\n" + "\tldr r4, _080981A8 @ =0x000026fc\n" + "\tadds r2, r4\n" + "\tlsls r0, r5, 5\n" + "\tldr r1, _080981AC @ =0x06010000\n" + "\tadds r0, r1\n" + "\tstr r0, [r2]\n" + "\tb _080981C4\n" + "\t.align 2, 0\n" + "_0809819C: .4byte gSharedMem\n" + "_080981A0: .4byte gSprites\n" + "_080981A4: .4byte 0x000026fa\n" + "_080981A8: .4byte 0x000026fc\n" + "_080981AC: .4byte 0x06010000\n" + "_080981B0:\n" + "\tmov r0, sp\n" + "\tmovs r1, 0x28\n" + "\tmovs r2, 0x30\n" + "\tmovs r3, 0\n" + "\tbl CreateSprite\n" + "\tlsls r0, 24\n" + "\tlsrs r1, r0, 24\n" + "\tcmp r1, 0x40\n" + "\tbne _0809816C\n" + "_080981C4:\n" + "\tldr r0, _080981E8 @ =gSharedMem\n" + "\tmovs r2, 0x9C\n" + "\tlsls r2, 6\n" + "\tadds r0, r2\n" + "\tldr r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _080981DE\n" + "\tmovs r0, 0x2\n" + "\tbl FreeSpriteTilesByTag\n" + "\tldr r0, _080981EC @ =0x0000dac7\n" + "\tbl FreeSpritePaletteByTag\n" + "_080981DE:\n" + "\tadd sp, 0x28\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_080981E8: .4byte gSharedMem\n" + "_080981EC: .4byte 0x0000dac7"); +} +#endif + +extern const struct StorageAction gPCStorageActionTexts[]; + asm(".section .text.8098898"); void PrintStorageActionText(u8 index) { @@ -1564,3 +1767,31 @@ void PrintStorageActionText(u8 index) { ptr[0] = EOS; MenuPrint(gPokemonStorageSystemPtr->unk_2694, 11, 17); } + +// FIXME: move this back + +const struct StorageAction gPCStorageActionTexts[] = { + {PCText_ExitBox, 0}, + {PCText_WhatYouDo, 0}, + {PCText_PickATheme, 0}, + {PCText_PickAWallpaper, 0}, + {PCText_IsSelected, 1}, + {PCText_JumpToWhichBox, 0}, + {PCText_DepositInWhichBox, 0}, + {PCText_WasDeposited, 1}, + {PCText_BoxIsFull, 0}, + {PCText_ReleasePoke, 0}, + {PCText_WasReleased, 4}, + {PCText_ByeBye, 6}, + {PCText_MarkPoke, 0}, + {PCText_LastPoke, 0}, + {PCText_PartyFull, 0}, + {PCText_HoldingPoke, 0}, + {PCText_WhichOneWillTake, 0}, + {PCText_CantReleaseEgg, 0}, + {PCText_ContinueBox, 0}, + {PCText_CameBack, 1}, + {PCText_Worried, 0}, + {PCText_Surprise, 0}, + {PCText_PleaseRemoveMail, 0} +}; -- cgit v1.2.3 From 03b167a73e2f18fa79bbf0e6ffe11e0c35c12ad8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 14:26:15 -0600 Subject: more text/menu renaming --- src/battle/battle_2.c | 6 +- src/battle/battle_4.c | 8 +-- src/battle/battle_controller_player.c | 24 +++---- src/battle/battle_controller_safari.c | 6 +- src/battle/battle_controller_wally.c | 6 +- src/battle/battle_party_menu.c | 2 +- src/battle/battle_records.c | 2 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 32 +++++----- src/debug/matsuda_debug_menu.c | 10 +-- src/debug/mori_debug_menu.c | 2 +- src/debug/sound_check_menu.c | 4 +- src/debug/unknown_debug_menu.c | 2 +- src/easy_chat_1.c | 14 ++--- src/engine/clear_save_data_menu.c | 6 +- src/engine/link.c | 6 +- src/engine/main_menu.c | 32 +++++----- src/engine/menu.c | 114 ++++++++++++++++++++-------------- src/engine/menu_cursor.c | 62 +++++++++--------- src/engine/mystery_event_menu.c | 2 +- src/engine/name_string_util.c | 4 +- src/engine/naming_screen.c | 2 +- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/save_failed_screen.c | 2 +- src/engine/text.c | 58 ++++++++--------- src/engine/trade.c | 44 ++++++------- src/engine/trainer_card.c | 16 ++--- src/field/berry_tag_screen.c | 2 +- src/field/choose_party.c | 8 +-- src/field/daycare.c | 6 +- src/field/decoration.c | 24 +++---- src/field/diploma.c | 2 +- src/field/field_effect.c | 4 +- src/field/field_region_map.c | 2 +- src/field/field_specials.c | 4 +- src/field/item_menu.c | 16 ++--- src/field/mauville_man.c | 2 +- src/field/menu_helpers.c | 2 +- src/field/money.c | 2 +- src/field/overworld.c | 8 +-- src/field/party_menu.c | 38 ++++++------ src/field/player_pc.c | 28 ++++----- src/field/pokeblock.c | 10 +-- src/field/region_map.c | 4 +- src/field/script_menu.c | 10 +-- src/field/secret_base.c | 10 +-- src/field/shop.c | 14 ++--- src/field/slot_machine.c | 6 +- src/field/start_menu.c | 8 +-- src/field/starter_choose.c | 4 +- src/field/trader.c | 6 +- src/field/tv.c | 8 +-- src/field/use_pokeblock.c | 2 +- src/field/wallclock.c | 8 +-- src/pokemon/learn_move.c | 18 +++--- src/pokemon/mail.c | 2 +- src/pokemon/mon_markings.c | 4 +- src/pokemon/pokeblock_feed.c | 2 +- src/pokemon/pokedex.c | 30 ++++----- src/pokemon/pokemon_1.c | 2 +- src/pokemon/pokemon_menu.c | 18 +++--- src/pokemon/pokemon_summary_screen.c | 8 +-- src/pokenav_before.c | 10 +-- src/roulette.c | 2 +- src/scene/berry_blender.c | 20 +++--- src/scene/contest_painting.c | 4 +- src/scene/credits.c | 2 +- src/scene/egg_hatch.c | 4 +- src/scene/evolution_scene.c | 14 ++--- src/scene/hall_of_fame.c | 8 +-- 71 files changed, 439 insertions(+), 421 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 42cc0b538..249b67e0d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -234,7 +234,7 @@ void InitBattle(void) } //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); sub_80895F8(gUnknown_081F9674); - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -553,7 +553,7 @@ void sub_800F02C(void) gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[i]); - StripExtCtrlCodes(nickname); + Text_StripExtCtrlCodes(nickname); gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE); if (gUnknown_02023A00[i].language != 1) PadNameString(nickname, 0); @@ -1210,7 +1210,7 @@ void c2_8011A1C(void) gUnknown_03004DE0[0][i] = 0xFF10; gUnknown_03004DE0[1][i] = 0xFF10; } - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 4be9b7d1c..164329c1b 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -136,7 +136,7 @@ u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move); void IncrementGameStat(u8 index); u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight); -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); void DestroyMenuCursor(void); void sub_802BC6C(void); u8 sub_809FA30(void); @@ -155,7 +155,7 @@ u8 Overworld_GetMapTypeOfSaveblockLocation(void); u8 CalculatePlayerPartyCount(void); u16 Sqrt(u32 num); u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display -void sub_814A880(u8 a1, u8 a2); +void MenuCursor_SetPos814A880(u8 a1, u8 a2); u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags); bool8 IsLinkDoubleBattle(void); void sub_8094B6C(u8 bank, u8 partyID, u8 r2); @@ -10769,7 +10769,7 @@ void sub_8023A80(void) sub_802BBD4(0x18, 8, 0x1D, 0xD, 0); Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); } void sub_8023AD8(void) @@ -17333,7 +17333,7 @@ _0802BC68: .4byte 0x00001025\n\ void sub_802BC6C(void) { - sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be? + MenuCursor_SetPos814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be? } void nullsub_6(void) diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 4bbda2afd..489581132 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -744,7 +744,7 @@ void sub_802C68C(void) else gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1; sub_802E3B4(gUnknown_03004344, 27); - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37); Text_PrintWindow8002F44(&gUnknown_03004210); gBattleBankFunc[gActiveBank] = sub_802CA60; @@ -853,7 +853,7 @@ void sub_802CA60(void) gBattleBankFunc[gActiveBank] = sub_802C68C; gMoveSelectionCursor[gActiveBank] = gUnknown_03004344; sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); @@ -866,7 +866,7 @@ void sub_802CA60(void) sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format); gBattleBankFunc[gActiveBank] = sub_802C68C; - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37); Text_PrintWindow8002F44(&gUnknown_03004210); sub_802E220(); @@ -1572,7 +1572,7 @@ void sub_802E1B0(void) s32 i; gUnknown_03004348 = 0; - FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A); for (i = 0; i < 4; i++) { nullsub_7(i); @@ -1613,7 +1613,7 @@ void sub_802E2D4(void) { if (gBattleBufferA[gActiveBank][2] == 1) { - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37); } else @@ -1623,7 +1623,7 @@ void sub_802E2D4(void) str = StringCopy(str, BattleText_Format); StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]); - FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A); Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39); } Text_PrintWindow8002F44(&gUnknown_03004210); @@ -1652,7 +1652,7 @@ const u8 gUnknown_081FAE91[][2] = void sub_802E3B4(u8 a, int unused) { sub_814A958(0x48); - sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); + MenuCursor_SetPos814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]); } void nullsub_7(u8 a) @@ -1662,7 +1662,7 @@ void nullsub_7(u8 a) void sub_802E3E4(u8 a, int unused) { sub_814A958(0x2A); - sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); + MenuCursor_SetPos814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]); } void nullsub_8(u8 a) @@ -2580,14 +2580,14 @@ void PlayerHandlecmd18(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 160; - FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); + Text_FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18); + Text_FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38); gBattleBankFunc[gActiveBank] = sub_802C098; Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0); for (r4 = 0; r4 < 4; r4++) nullsub_8(r4); @@ -2605,7 +2605,7 @@ void PlayerHandlecmd19() void PlayerHandlecmd20(void) { - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); sub_80304A8(); gBattleBankFunc[gActiveBank] = sub_802C68C; } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 72a0cc32c..a4b610752 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -472,13 +472,13 @@ void SafariHandlecmd18(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 160; gUnknown_03004210.paletteNum = 0; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2; Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 11679, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 11679, 0); for (i = 0; i < 4; i++) nullsub_8(i); diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 6a9e8071e..6266d955c 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -1265,12 +1265,12 @@ void WallyHandlecmd18(void) gBattle_BG0_X = 0; gBattle_BG0_Y = 160; gUnknown_03004210.paletteNum = 0; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); - FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36); gBattleBankFunc[gActiveBank] = sub_81372BC; Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35); Text_PrintWindow8002F44(&gUnknown_03004210); - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); for (i = 0; i < 4; i++) nullsub_8(i); sub_802E3E4(0, 0); diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 67f6e24ef..68a97c536 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -723,7 +723,7 @@ static void Task_BattlePartyMenuShift(u8 taskId) static void Task_BattlePartyMenuCancel(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus); gTasks[taskId].data[4] = gTasks[taskId].data[5]; PrintPartyMenuPromptText(0, 0); diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index fb7392f33..4979760d7 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -249,7 +249,7 @@ void ShowLinkBattleRecords(void) { #if ENGLISH Menu_PrintText(gOtherText_WinLoseDraw, 12, 6); #elif GERMAN - MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); + Menu_PrintTextPixelCoords(gOtherText_WinLoseDraw, 88, 48, 1); #endif for (i = 0; i < 5; i++) diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index bf77e5c07..42bb3ba7f 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -78,7 +78,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) { case 0: dp12_8087EA4(); - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattle_BG0_X = 0; diff --git a/src/contest.c b/src/contest.c index 3677a1d25..8985d6490 100644 --- a/src/contest.c +++ b/src/contest.c @@ -357,7 +357,7 @@ void LoadContestBgAfterMoveAnim(void) void SetUpContestWindow(void) { - SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6FF4); } @@ -686,7 +686,7 @@ void sub_80ABCDC(u8 taskId) gBattle_BG0_Y = 0xA0; gBattle_BG2_Y = 0xA0; - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA340[0][0], @@ -725,7 +725,7 @@ void sub_80ABCDC(u8 taskId) Text_PrintWindow8002F44(&gUnknown_03004210); } - sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); + MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 72); sub_80AC0AC(sContest.playerMoveChoice); sub_80AEBEC(gContestMons[gContestPlayerMonIndex].moves[sContest.playerMoveChoice]); gTasks[taskId].func = sub_80ABEA0; @@ -757,7 +757,7 @@ void sub_80ABEA0(u8 taskId) sub_814A904(); PlaySE(SE_SELECT); sub_80AFFE0(FALSE); - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA340[0][0], @@ -809,7 +809,7 @@ void sub_80ABEA0(u8 taskId) void sub_80AC0AC(s8 a) { - sub_814A880(4, 88 + a * 16); + MenuCursor_SetPos814A880(4, 88 + a * 16); } void nullsub_17(s8 a) @@ -1940,7 +1940,7 @@ void Contest_CreatePlayerMon(u8 partyIndex) s16 tough; StringCopy(name, gSaveBlock2.playerName); - StripExtCtrlCodes(name); + Text_StripExtCtrlCodes(name); if (gIsLinkContest & 1) { u8 temp = name[5]; @@ -1960,7 +1960,7 @@ void Contest_CreatePlayerMon(u8 partyIndex) StringGetEnd10(name); if (gIsLinkContest & 1) { - StripExtCtrlCodes(name); + Text_StripExtCtrlCodes(name); if (GetMonData(&gPlayerParty[partyIndex], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE) { name[5] = EOS; @@ -2121,7 +2121,7 @@ void sub_80AE514(void) for (i = 0; i < 4; i++) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA308[gUnknown_02038696[i]][0], @@ -2161,7 +2161,7 @@ void sub_80AE5D4(u8 p, u8 b) if ((gIsLinkContest & 1) && gLinkPlayers[p].language == LANGUAGE_JAPANESE) { StringCopy(str, gLinkPlayers[p].name); - sub_8004D04( + Text_InitWindow8004D04( &gUnknown_03004210, gDisplayedStringBattle, 592 + gUnknown_02038696[p] * 22, @@ -2198,7 +2198,7 @@ void sub_80AE6E4(u8 a, u8 b) str = sub_80AE598(str, gContestMons[a].nickname, b); *str = EOS; - sub_8004D04( + Text_InitWindow8004D04( &gUnknown_03004210, gDisplayedStringBattle, 512 + gUnknown_02038696[a] * 20, @@ -2383,7 +2383,7 @@ void sub_80AEBEC(u16 a) s32 i; u8 numHearts; - FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 31, 16, 34); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 11, 31, 16, 34); category = gContestMoves[a].contestCategory; if (category == CONTEST_CATEGORY_COOL) @@ -2438,7 +2438,7 @@ void sub_80AEBEC(u16 a) void sub_80AED58(void) { - FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 11, 35, 28, 40); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 11, 35, 28, 40); } // unused @@ -2614,7 +2614,7 @@ void sub_80AF120(void) void sub_80AF138(void) { - FillWindowRect_DefaultPalette(&gUnknown_03004210, 0, 1, 15, 17, 18); + Text_FillWindowRectDefPalette(&gUnknown_03004210, 0, 1, 15, 17, 18); } u16 GetChosenMove(u8 a) @@ -2674,7 +2674,7 @@ void unref_sub_80AF280(u8 a) void sub_80AF2A0(u8 a) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA318[a][0], @@ -4146,7 +4146,7 @@ void unref_sub_80B0CF4(void) for (i = 0; i < 4; i++) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA308[i][0], @@ -4175,7 +4175,7 @@ void sub_80B0D7C(void) for (i = 0; i < 4; i++) { - FillWindowRect_DefaultPalette( + Text_FillWindowRectDefPalette( &gUnknown_03004210, 0, gUnknown_083CA308[i][0], diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 52b83d4b1..0585c4e00 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -249,7 +249,7 @@ u8 unref_sub_80A9B28(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 17, 18); - PrintMenuItems(1, 1, 7, gMatsudaDebugMenuActions); + Menu_PrintItems(1, 1, 7, gMatsudaDebugMenuActions); InitMenu(0, 1, 1, 7, 0, 16); gCallback_03004AE8 = sub_80A9B78; return 0; @@ -449,7 +449,7 @@ static void sub_80A9F50(void) { REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP; REG_DISPCNT |= DISPCNT_OBJ_ON | DISPCNT_BG0_ON; - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); Text_InitWindowWithTemplate(&gMenuWindow, &gWindowTemplate_81E6C3C); REG_MOSAIC = 0; REG_BLDCNT = 0; @@ -573,7 +573,7 @@ void sub_80AA280(u8 var) // no? { u8 i; - FillWindowRect_DefaultPalette(&gMenuWindow, 0, 0, 0, 0x1E, 3); + Text_FillWindowRectDefPalette(&gMenuWindow, 0, 0, 0, 0x1E, 3); StringCopy(gSharedMem, gMatsudaDebugMenu_StartText); StringAppend(gSharedMem, gContestMons[var].trainerName); @@ -624,7 +624,7 @@ static void sub_80AA4A8(u8 var) static void sub_80AA4F0(u8 var1, u8 var2) { - FillWindowRect_DefaultPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); + Text_FillWindowRectDefPalette(&gMenuWindow, 0, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1], gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1] + 1); Text_InitWindowAndPrintText(&gMenuWindow, gMoveNames[gContestMons[var1].moves[var2]], 0x8A + var2 * 14, gUnknown_083C928E[var2][0], gUnknown_083C928E[var2][1]); ConvertIntToDecimalStringN(gStringVar1, gContestMons[var1].moves[var2], STR_CONV_MODE_LEADING_ZEROS, 3); Text_InitWindowAndPrintText(&gMenuWindow, gStringVar1, 0xFA + var2 * 6, gUnknown_083C928E[var2][0] + 7, gUnknown_083C928E[var2][1]); @@ -1075,7 +1075,7 @@ void unref_sub_80AB084(u8 *text) break; } } - SetUpWindowConfig(&gWindowTemplate_81E6FD8); + Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 31f232d82..7b9a579a7 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -198,7 +198,7 @@ s8 InitMoriDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 10, 19); - PrintMenuItems(1, 1, 9, gMoriDebugMenuActions); + Menu_PrintItems(1, 1, 9, gMoriDebugMenuActions); InitMenu(0, 1, 1, 9, 0, 9); gCallback_03004AE8 = MoriDebugMenuProcessInput; return 0; diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 411ff6f54..05cbfc8f7 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -132,7 +132,7 @@ void CB2_StartSoundCheckMenu(void) ResetPaletteFade(); ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); REG_WIN0H = WIN_RANGE(0, 0); @@ -1217,7 +1217,7 @@ void Task_InitCryTest(u8 taskId) struct CryRelatedStruct cryStruct, cryStruct2; u8 zero; - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); gSoundTestCryNum = 1; ResetSpriteData(); diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index e95806c74..9cece924d 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -34,7 +34,7 @@ int unref_sub_814A414(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 16, 18); - PrintMenuItems(2, 1, 8, gUnknown_0842C29C); + Menu_PrintItems(2, 1, 8, gUnknown_0842C29C); InitMenu(0, 1, 1, 8, 0, 15); gCallback_03004AE8 = sub_814A464; return 0; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 8d68adfe9..cb0e98b71 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -305,7 +305,7 @@ void sub_80E62F8(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E6DA8); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DA8); break; case 2: InitMenuWindow(&gWindowTemplate_81E6D54); @@ -737,7 +737,7 @@ void sub_80E6BC0(void) } break; case 1: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: sub_80E7D6C(); @@ -785,7 +785,7 @@ void sub_80E6C84(void) gEasyChatStruct->unk24++; break; case 1: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: sub_80E91D4(4); @@ -800,7 +800,7 @@ void sub_80E6C84(void) } break; case 2: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: gSpecialVar_Result = 0; @@ -813,7 +813,7 @@ void sub_80E6C84(void) } break; case 0xFF: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_80E81FC(); sub_80E682C(sub_80E6AC4); break; @@ -861,7 +861,7 @@ void sub_80E6D7C(void) } break; case 1: - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: gSpecialVar_Result = (sub_80E7FA8() != 0); @@ -883,7 +883,7 @@ void sub_80E6D7C(void) break; case -1: case 1: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_80E81FC(); if (gEasyChatStruct->unk8 == 6 && sub_80E7FA8() != 0) { diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 6a597690a..08fd5cd18 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -45,7 +45,7 @@ static void Task_InitMenu(u8 taskId) Menu_PrintText(gSystemText_ClearAllSaveDataPrompt, 3, 15); Menu_DrawStdWindowFrame(2, 1, 8, 6); - PrintMenuItems(3, 2, 2, gMenuYesNoItems); + Menu_PrintItems(3, 2, 2, gMenuYesNoItems); InitMenu(0, 3, 2, 2, 1, 5); gTasks[taskId].func = Task_ProcessMenuInput; @@ -53,7 +53,7 @@ static void Task_InitMenu(u8 taskId) static void Task_ProcessMenuInput(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); @@ -133,7 +133,7 @@ static u8 InitClearSaveDataScreen(void) ResetTasks(); ResetSpriteData(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); diff --git a/src/engine/link.c b/src/engine/link.c index d52d0bb7a..34016d607 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -238,7 +238,7 @@ void LinkTestScreen(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); ResetBlockSend(); gLinkType = 0x1111; @@ -1236,7 +1236,7 @@ void CB2_LinkError(void) FillPalette(0, 0, 2); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - SetUpWindowConfig(&gWindowTemplate_81E7198); + Text_LoadWindowTemplate(&gWindowTemplate_81E7198); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E7198); Menu_EraseScreen(); REG_BLDALPHA = 0; @@ -1260,7 +1260,7 @@ static void CB2_PrintErrorMessage(void) switch (gMain.state) { case 0: - MenuPrint_PixelCoords(gMultiText_LinkError, 20, 56, 1); + Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1); break; case 30: case 60: diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 723886664..715570fe0 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -24,7 +24,7 @@ #include "unknown_task.h" #include "ewram.h" -#define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24)) +#define BirchSpeechUpdateWindowText() ((u8)Menu_UpdateWindowTextOverrideLineLength(24)) extern struct PaletteFadeControl gPaletteFade; @@ -233,7 +233,7 @@ u32 InitMainMenu(u8 a1) ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (a1) @@ -709,7 +709,7 @@ void PrintPlayTime(void) sub_8072C74(alignedPlayTime, playTime, 48, 1); Menu_PrintText(alignedPlayTime, 22, 3); #elif defined(GERMAN) - MenuPrint_PixelCoords(gMainMenuString_Time, 124, 24, TRUE); + Menu_PrintTextPixelCoords(gMainMenuString_Time, 124, 24, TRUE); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); sub_8072C74(alignedPlayTime, playTime, 40, 1); Menu_PrintText(alignedPlayTime, 23, 3); @@ -732,10 +732,10 @@ void PrintBadgeCount(void) #if defined(ENGLISH) Menu_PrintText(gMainMenuString_Badges, 16, 5); #elif defined(GERMAN) - MenuPrint_PixelCoords(gMainMenuString_Badges, 124, 40, TRUE); + Menu_PrintTextPixelCoords(gMainMenuString_Badges, 124, 40, TRUE); #endif ConvertIntToDecimalString(buffer, GetBadgeCount()); - MenuPrint_PixelCoords(buffer, 205, 40, 1); + Menu_PrintTextPixelCoords(buffer, 205, 40, 1); } #define tTrainerSpriteId data[2] @@ -750,7 +750,7 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); REG_WIN0H = 0; REG_WIN0V = 0; @@ -857,7 +857,7 @@ static void Task_NewGameSpeech7(u8 taskId) //Go on to next sentence after frame 95 if (gTasks[taskId].tFrameCounter > 95) { - MenuSetText(gSystemText_NewPara); + Menu_SetText(gSystemText_NewPara); gTasks[taskId].func = Task_NewGameSpeech8; } } @@ -985,14 +985,14 @@ static void Task_NewGameSpeech16(u8 taskId) switch (GenderMenuProcessInput()) { case MALE: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; Menu_EraseWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; Menu_EraseWindowRect(2, 4, 8, 9); @@ -1088,7 +1088,7 @@ static void Task_NewGameSpeech21(u8 taskId) case 2: case 3: case 4: - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); @@ -1100,7 +1100,7 @@ static void Task_NewGameSpeech21(u8 taskId) gTasks[taskId].func = Task_NewGameSpeech22; break; case -1: //B button - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu @@ -1139,7 +1139,7 @@ static void Task_NewGameSpeech24(u8 taskId) //Handle yes/no menu selection static void Task_NewGameSpeech25(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES PlaySE(SE_SELECT); @@ -1373,7 +1373,7 @@ void CB_ContinueNewGameSpeechPart2() FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); if (gSaveBlock2.playerGender != MALE) @@ -1664,7 +1664,7 @@ static void CreateGenderMenu(u8 left, u8 top) Menu_DrawStdWindowFrame(left, top, left + 6, top + 5); menuLeft = left + 1; menuTop = top + 1; - PrintMenuItems(menuLeft, menuTop, 2, gUnknown_081E79B0); + Menu_PrintItems(menuLeft, menuTop, 2, gUnknown_081E79B0); InitMenu(0, menuLeft, menuTop, 2, 0, 5); } @@ -1678,9 +1678,9 @@ static void CreateNameMenu(u8 left, u8 top) Menu_DrawStdWindowFrame(left, top, left + 10, top + 11); if (gSaveBlock2.playerGender == MALE) - PrintMenuItems(left + 1, top + 1, 5, gMalePresetNames); + Menu_PrintItems(left + 1, top + 1, 5, gMalePresetNames); else - PrintMenuItems(left + 1, top + 1, 5, gFemalePresetNames); + Menu_PrintItems(left + 1, top + 1, 5, gFemalePresetNames); InitMenu(0, left + 1, top + 1, 5, 0, 9); } diff --git a/src/engine/menu.c b/src/engine/menu.c index fe88bf4e4..86e20d0eb 100644 --- a/src/engine/menu.c +++ b/src/engine/menu.c @@ -26,11 +26,12 @@ struct Menu static void MultistepInitMenuWindowInternal(const struct WindowTemplate *, u16); static void InitMenuWindowInternal(const struct WindowTemplate *, u16); -static bool8 sub_80723D4(void); +static bool8 IsGridCursorMovementClamped(void); static u8 sub_8072484(u8, u8, u8, u8, u8, u8, u32); static u8 sub_80724F4(u8, u8, u8, const struct MenuAction[], u8); static void sub_8072620(u8, u8, u8, const struct MenuAction[], u8); static void sub_8072D18(u8, u8); +static void RedrawMenuCursor(u8, u8); static struct Menu gMenu; @@ -55,7 +56,7 @@ void CloseMenu(void) Menu_EraseScreen(); sub_8064E2C(); ScriptContext2_Disable(); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); } void AppendToList(u8 *list, u8 *pindex, u32 value) @@ -149,6 +150,7 @@ void BasicInitMenuWindow(const struct WindowTemplate *winTemplate) gMenuWindowPtr->tileDataStartOffset = gMenuTextTileOffset; } +// Prints void Menu_PrintText(const u8 *str, u8 left, u8 top) { Text_InitWindowAndPrintText(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); @@ -156,7 +158,7 @@ void Menu_PrintText(const u8 *str, u8 left, u8 top) void Menu_EraseWindowRect(u8 left, u8 top, u8 right, u8 bottom) { - ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom); + Text_EraseWindowRect(gMenuWindowPtr, left, top, right, bottom); } void Menu_BlankWindowRect(u8 left, u8 top, u8 right, u8 bottom) @@ -210,9 +212,9 @@ void MenuPrintMessageDefaultCoords(const u8 *str) Text_InitWindow8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15); } -void MenuSetText(const u8 *str) +void Menu_SetText(const u8 *str) { - sub_8002E90(gMenuWindowPtr, str); + Text_SetWindowText(gMenuWindowPtr, str); } u8 Menu_UpdateWindowText(void) @@ -271,14 +273,14 @@ s8 Menu_ProcessInput(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return -1; } @@ -306,14 +308,14 @@ s8 Menu_ProcessInputNoWrap(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return -1; } @@ -353,11 +355,12 @@ u8 MoveMenuCursor3(s8 delta) return gMenu.cursorPos; } -u8 MoveMenuCursor4(s8 delta) +static u8 MoveMenuCursorGridLayout(s8 delta) { + // Don't move cursor if it is clamped if (gMenu.cursorPos + delta <= gMenu.maxCursorPos) { - if (sub_80723D4() == TRUE) + if (IsGridCursorMovementClamped() == TRUE) return gMenu.cursorPos; } else @@ -379,22 +382,35 @@ u8 MoveMenuCursor4(s8 delta) return gMenu.cursorPos; } -static bool8 sub_80723D4(void) +// Returns TRUE if the cursor is on an edge and cannot move in the pressed direction +static bool8 IsGridCursorMovementClamped(void) { - if ((gMain.newKeys & DPAD_UP) && gMenu.cursorPos < gMenu.width) - return TRUE; - - if ((gMain.newKeys & DPAD_DOWN) && gMenu.cursorPos >= (gMenu.maxCursorPos + 1) - gMenu.width) - return TRUE; - - if ((gMain.newKeys & DPAD_LEFT) - && ((gMenu.cursorPos - (gMenu.cursorPos % gMenu.width)) % gMenu.width == 1 // always false - || gMenu.cursorPos == 0 - || gMenu.cursorPos % gMenu.width == 0)) - return TRUE; - - if ((gMain.newKeys & DPAD_RIGHT) && gMenu.cursorPos % gMenu.width == gMenu.width - 1) - return TRUE; + if (gMain.newKeys & DPAD_UP) + { + // is cursor on first row? + if (gMenu.cursorPos < gMenu.width) + return TRUE; + } + if (gMain.newKeys & DPAD_DOWN) + { + // is cursor on last row? + if (gMenu.cursorPos >= gMenu.maxCursorPos + 1 - gMenu.width) + return TRUE; + } + if (gMain.newKeys & DPAD_LEFT) + { + // is cursor on first column? + if ((gMenu.cursorPos - gMenu.cursorPos % gMenu.width) % gMenu.width == 1 // always false + || gMenu.cursorPos == 0 // redundant + || gMenu.cursorPos % gMenu.width == 0) + return TRUE; + } + if (gMain.newKeys & DPAD_RIGHT) + { + // is cursor on last column? + if (gMenu.cursorPos % gMenu.width == gMenu.width - 1) + return TRUE; + } return FALSE; } @@ -518,7 +534,7 @@ s8 Menu_ProcessInputGridLayout(void) if (gMain.newKeys & A_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); return Menu_GetCursorPos(); } @@ -526,44 +542,46 @@ s8 Menu_ProcessInputGridLayout(void) if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); return -1; } if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - MoveMenuCursor4(-gMenu.width); + // Move up one whole row + MoveMenuCursorGridLayout(-gMenu.width); return -2; } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - MoveMenuCursor4(gMenu.width); + // Move down one whole column + MoveMenuCursorGridLayout(gMenu.width); return -2; } else if (gMain.newKeys & DPAD_LEFT) { PlaySE(SE_SELECT); - MoveMenuCursor4(-1); + MoveMenuCursorGridLayout(-1); return -2; } else if (gMain.newKeys & DPAD_RIGHT) { PlaySE(SE_SELECT); - MoveMenuCursor4(1); + MoveMenuCursorGridLayout(1); return -2; } return -2; } -u8 sub_807288C(u8 column) +u8 Menu_GetColumnXCoord(u8 column) { return gMenu.columnXCoords[column]; } -void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) +void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) { u8 i; @@ -571,7 +589,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m Menu_PrintText(menuItems[i].text, left, top + 2 * i); } -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) { u8 i; @@ -581,7 +599,7 @@ void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct Men void InitYesNoMenu(u8 left, u8 top, u8 a3) { - PrintMenuItems(left + 1, top + 1, 2, gMenuYesNoItems); + Menu_PrintItems(left + 1, top + 1, 2, gMenuYesNoItems); InitMenu(0, left + 1, top + 1, 2, 0, a3); } @@ -592,14 +610,14 @@ void DisplayYesNoMenu(u8 left, u8 top, u32 a3) gMenu.menu_field_7 = a3 ? -1 : 0; } -s8 ProcessMenuInputNoWrap_(void) +s8 Menu_ProcessInputNoWrap_(void) { return Menu_ProcessInputNoWrap(); } -u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) +u8 Menu_PrintTextPixelCoords(const u8 *text, u8 left, u16 top, u8 a4) { - return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); + return Text_InitWindow8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); } u8 sub_8072A18(const u8 *text, u8 left, u16 top, u8 width, u32 a5) @@ -712,7 +730,7 @@ _08072B3E:\n\ void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top) { - sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); + Text_InitWindow8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) @@ -725,7 +743,7 @@ void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) { - sub_8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); + Text_InitWindow8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); } u8 *sub_8072C14(u8 *a1, s32 a2, u8 a3, u8 a4) @@ -748,9 +766,9 @@ u8 sub_8072CA4(const u8 *str) return GetStringWidth(gMenuWindowPtr, str); } -u8 sub_8072CBC() +u8 Menu_GetTextWindowPaletteNum(void) { - return sub_8004E24(gMenuWindowPtr); + return Text_GetWindowPaletteNum(gMenuWindowPtr); } void Menu_GetTextColors(u8 *a1, u8 *a2, u8 *a3) @@ -758,7 +776,7 @@ void Menu_GetTextColors(u8 *a1, u8 *a2, u8 *a3) Text_GetTextColors(gMenuWindowPtr, a1, a2, a3); } -u32 MenuUpdateWindowText_OverrideLineLength(u8 lineLength) +u32 Menu_UpdateWindowTextOverrideLineLength(u8 lineLength) { return Text_UpdateWindowOverrideLineLength(gMenuWindowPtr, lineLength); } @@ -770,7 +788,7 @@ struct Window *unref_sub_8072D0C(void) static void sub_8072D18(u8 a1, u8 a2) { - sub_814A5C0(a1, 0xFFFF, 12, 11679, 8 * a2); + MenuCursor_Create814A5C0(a1, 0xFFFF, 12, 11679, 8 * a2); } u8 InitMenu(u8 cursorSubpriority, u8 left, u8 top, u8 numChoices, u8 cursorPos, u8 cursorWidth) @@ -797,9 +815,9 @@ u8 InitMenu(u8 cursorSubpriority, u8 left, u8 top, u8 numChoices, u8 cursorPos, return pos; } -void RedrawMenuCursor(u8 a1, u8 a2) +static void RedrawMenuCursor(u8 x, u8 y) { - sub_814A880((a1 + 1) * 8, 8 * a2); + MenuCursor_SetPos814A880((x + 1) * 8, 8 * y); } void unref_sub_8072DC0() @@ -817,7 +835,7 @@ void sub_8072DDC(u8 a1) sub_8072DCC(8 * a1); } -void HandleDestroyMenuCursors(void) +void Menu_DestroyCursor(void) { DestroyMenuCursor(); } diff --git a/src/engine/menu_cursor.c b/src/engine/menu_cursor.c index 960d3cc87..35116d40b 100644 --- a/src/engine/menu_cursor.c +++ b/src/engine/menu_cursor.c @@ -3,13 +3,13 @@ #include "palette.h" #include "sprite.h" -EWRAM_DATA u16 gUnknown_0203A360[0x10] = {}; -EWRAM_DATA struct Subsprite gMenuCursorSubsprites[10] = {0}; -EWRAM_DATA u8 gUnknown_0203A3D0 = 0; -EWRAM_DATA u8 gUnknown_0203A3D1 = 0; -EWRAM_DATA u8 gUnknown_0203A3D2 = 0; -EWRAM_DATA u8 gUnknown_0203A3D3 = 0; -EWRAM_DATA u8 gUnknown_0203A3D4 = 0; +EWRAM_DATA static u16 gUnknown_0203A360[0x10] = {}; +EWRAM_DATA static struct Subsprite gMenuCursorSubsprites[10] = {0}; +EWRAM_DATA static u8 gUnknown_0203A3D0 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D1 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D2 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D3 = 0; +EWRAM_DATA static u8 gUnknown_0203A3D4 = 0; #if ENGLISH #include "../src/data/menu_cursor_en.h" @@ -26,7 +26,7 @@ void sub_814A590(void) gUnknown_0203A3D4 = 0; } -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) +u8 MenuCursor_Create814A5C0(u8 subpriority, u16 paletteTag, u8 a3, u16 a4, u8 a5) { int v9; struct Sprite *v10; @@ -35,34 +35,34 @@ u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) DestroyMenuCursor(); v9 = 1; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) { gUnknown_0203A360[a3 & 0xF] = a4; if (LoadSpritePalette(&gUnknown_0842F240) != 0xFF) { - a2 = 0xFFF0; + paletteTag = 0xFFF0; v9 = 0; } } LoadSpriteSheetDeferred(&gUnknown_0842F140[a3 & 0xF]); - gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 0xA0, a1); - gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 0xA0, a1); + gUnknown_0203A3D0 = CreateSprite(&gSpriteTemplate_842F250[v9], 0, 160, subpriority); + gUnknown_0203A3D1 = CreateSprite(&gSpriteTemplate_842F250[2], 0, 160, subpriority); if (gUnknown_0203A3D0 != 0x40) { v10 = &gSprites[gUnknown_0203A3D0]; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) v10->oam.paletteNum = 0; else - v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); + v10->oam.paletteNum = IndexOfSpritePaletteTag(paletteTag); } if (gUnknown_0203A3D1 != 0x40) { v10 = &gSprites[gUnknown_0203A3D1]; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) v10->oam.paletteNum = 0; else - v10->oam.paletteNum = IndexOfSpritePaletteTag(a2); + v10->oam.paletteNum = IndexOfSpritePaletteTag(paletteTag); if (!(REG_DISPCNT & (DISPCNT_WIN0_ON | DISPCNT_WIN1_ON))) *(u8 *)(REG_ADDR_WINOUT) |= 0x1F; @@ -75,12 +75,13 @@ u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) return gUnknown_0203A3D0; } -u8 sub_814A758(u8 a1, u8 a2, u8 a3, u8 a4) +// unused +u8 sub_814A758(u8 subpriority, u8 a2, u8 a3, u8 a4) { u8 result; struct Sprite *spr; - result = sub_814A5C0(a1, 0, a3, 0, a4); + result = MenuCursor_Create814A5C0(subpriority, 0, a3, 0, a4); if (result != 0x40) { spr = &gSprites[gUnknown_0203A3D0]; @@ -128,7 +129,7 @@ void DestroyMenuCursor(void) return; } -void sub_814A880(u8 a1, u8 a2) +void MenuCursor_SetPos814A880(u8 a1, u8 a2) { struct Sprite *spr; @@ -685,49 +686,48 @@ void unref_sub_814ABE4(int a1) return; } -u8 CreateBlendedOutlineCursor(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) +u8 CreateBlendedOutlineCursor(u8 subpriority, u16 paletteTag, u8 a3, u16 a4, u8 a5) { int v8; struct Sprite *spr; - u8 var1 = gUnknown_0203A3D2; - if (var1 != 0x40) - sub_814AD44(); + if (gUnknown_0203A3D2 != 0x40) + MenuCursor_Destroy814AD44(); v8 = 1; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) { gUnknown_0203A360[a3 & 0xF] = a4; if (LoadSpritePalette(&gUnknown_0842F248) != 0xFF ) { - a2 = 0xFFF1; + paletteTag = 0xFFF1; v8 = 0; } } LoadSpriteSheetDeferred(&gUnknown_0842F1C0[a3 & 0xF]); #if ENGLISH - gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 160, a1); + gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 160, subpriority); #elif GERMAN - gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 161, a1); + gUnknown_0203A3D2 = CreateSprite(&gSpriteTemplate_842F298[v8], 0, 161, subpriority); #endif if (gUnknown_0203A3D2 != 0x40) { spr = &gSprites[gUnknown_0203A3D2]; - if (a2 == 0xFFFF) + if (paletteTag == 0xFFFF) spr->oam.paletteNum = 0; else - spr->oam.paletteNum = IndexOfSpritePaletteTag(a2); + spr->oam.paletteNum = IndexOfSpritePaletteTag(paletteTag); } sub_814ADF4(a5); return gUnknown_0203A3D2; } -void sub_814AD44(void) +void MenuCursor_Destroy814AD44(void) { if (gUnknown_0203A3D2 != 0x40) { @@ -738,7 +738,7 @@ void sub_814AD44(void) return; } -void sub_814AD7C(u8 a1, u8 a2) +void MenuCursor_SetPos814AD7C(u8 a1, u8 a2) { struct Sprite *spr; if (gUnknown_0203A3D2 != 0x40) diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 278760233..b7b7c047e 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -45,7 +45,7 @@ void CB2_InitMysteryEventMenu(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; diff --git a/src/engine/name_string_util.c b/src/engine/name_string_util.c index f1a935453..32e9358e1 100644 --- a/src/engine/name_string_util.c +++ b/src/engine/name_string_util.c @@ -7,7 +7,7 @@ void PadNameString(u8 *a1, u8 a2) { u8 i; - StripExtCtrlCodes(a1); + Text_StripExtCtrlCodes(a1); i = StringLength(a1); if (a2 == 0xFC) @@ -36,5 +36,5 @@ void SanitizeNameString(u8 *a1) if (StringLength(a1) < 6) ConvertInternationalString(a1, 1); else - StripExtCtrlCodes(a1); + Text_StripExtCtrlCodes(a1); } diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index 880187dc0..eddfdeda5 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -325,7 +325,7 @@ static void NamingScreen_Init(void) static void NamingScreen_SetUpWindow(void) { - SetUpWindowConfig(&gWindowTemplate_81E6E88); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E88); InitMenuWindow(&gWindowTemplate_81E6E88); } diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 2b9412e45..868830880 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -116,7 +116,7 @@ void CB2_InitOptionMenu(void) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E71B4); + Text_LoadWindowTemplate(&gWindowTemplate_81E71B4); gMain.state++; break; case 3: @@ -313,7 +313,7 @@ static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style) dst[2] = style; dst[i] = EOS; - MenuPrint_PixelCoords(dst, x, y, 1); + Menu_PrintTextPixelCoords(dst, x, y, 1); } static u8 TextSpeed_ProcessInput(u8 selection) diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 37b1c767e..6e9efd342 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -443,7 +443,7 @@ void CB2_InitResetRtcScreen(void) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = 4352; SetVBlankCallback(VBlankCB_ResetRtcScreen); diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 4609f3fd8..64b84a2f7 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -120,7 +120,7 @@ static void CB2_SaveFailedScreen(void) ResetPaletteFade(); LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window diff --git a/src/engine/text.c b/src/engine/text.c index 15a535ff0..fe18a6d79 100644 --- a/src/engine/text.c +++ b/src/engine/text.c @@ -97,7 +97,7 @@ static void AddToCursorX(struct Window *, u8); static void AddToCursorY(struct Window *, u8); static void ClipLeft(struct Window *); static void ClipRight(struct Window *); -static void InitColors(struct Window *); +static void SetWindowDefaultColors(struct Window *); static void SetWindowBackgroundColor(struct Window *, u8); static void SetWindowShadowColor(struct Window *, u8); static void SetWindowForegroundColor(struct Window *, u8); @@ -786,7 +786,7 @@ const struct WindowTemplate gWindowTemplate_81E6DA8 = BG_SCREEN_ADDR(11), // tilemap }; -const struct WindowTemplate WindowConfig_TrainerCard_Back_Values = +const struct WindowTemplate gWindowTemplate_TrainerCard_Back_Values = { 0, // BG number 2, // BG character base block @@ -807,7 +807,7 @@ const struct WindowTemplate WindowConfig_TrainerCard_Back_Values = BG_SCREEN_ADDR(30), // tilemap }; -const struct WindowTemplate WindowConfig_TrainerCard_Back_Labels = +const struct WindowTemplate gWindowTemplate_TrainerCard_Back_Labels = { 0, // BG number 2, // BG character base block @@ -1752,7 +1752,7 @@ void LoadFontDefaultPalette(const struct WindowTemplate *winTemplate) LoadPalette(gFontDefaultPalette, 16 * winTemplate->paletteNum, 32); } -void SetUpWindowConfig(const struct WindowTemplate *winTemplate) +void Text_LoadWindowTemplate(const struct WindowTemplate *winTemplate) { UpdateBGRegs(winTemplate); ClearBGMem(winTemplate); @@ -1952,7 +1952,7 @@ void Text_InitWindowWithTemplate(struct Window *win, const struct WindowTemplate win->height = winTemplate->height; win->tileData = winTemplate->tileData; win->tilemap = winTemplate->tilemap; - InitColors(win); + SetWindowDefaultColors(win); SetWindowBackgroundColor(win, winTemplate->backgroundColor); SetWindowShadowColor(win, winTemplate->shadowColor); SetWindowForegroundColor(win, winTemplate->foregroundColor); @@ -1986,7 +1986,7 @@ void Text_InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset win->downArrowCounter = 0; win->tileData = winTemplate->tileData; win->tilemap = winTemplate->tilemap; - InitColors(win); + SetWindowDefaultColors(win); SetWindowBackgroundColor(win, winTemplate->backgroundColor); SetWindowShadowColor(win, winTemplate->shadowColor); SetWindowForegroundColor(win, winTemplate->foregroundColor); @@ -2007,7 +2007,7 @@ void Text_InitWindow8002E4C(struct Window *win, const u8 *text, u16 tileDataStar ClipLeft(win); } -void sub_8002E90(struct Window *win, const u8 *text) +void Text_SetWindowText(struct Window *win, const u8 *text) { win->state = WIN_STATE_NORMAL; win->text = text; @@ -2364,7 +2364,7 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to void sub_80034D4(u8 *tileData, const u8 *text) { - sub_8004E3C(&gWindowTemplate_81E6C74, tileData, text); + Text_InitWindow8004E3C(&gWindowTemplate_81E6C74, tileData, text); } u8 sub_80034EC(u8 *str) @@ -2905,7 +2905,7 @@ static void ClipRight(struct Window *win) } } -static void InitColors(struct Window *win) +static void SetWindowDefaultColors(struct Window *win) { u32 i; @@ -3334,7 +3334,7 @@ void DrawWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 } // Fills the whole window area with tilemapEntry -void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) +void Text_FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 right, u8 bottom) { u16 *buffer = &win->tilemap[top * 32]; while (top++ <= bottom) @@ -3346,20 +3346,20 @@ void FillWindowRect(struct Window *win, u16 tilemapEntry, u8 left, u8 top, u8 ri } } -void FillWindowRect_DefaultPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom) +void Text_FillWindowRectDefPalette(struct Window *win, u16 tileNum, u8 left, u8 top, u8 right, u8 bottom) { - FillWindowRect(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); + Text_FillWindowRect(win, (win->paletteNum << 12) | tileNum, left, top, right, bottom); } -void ZeroFillWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) +void Text_EraseWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { - FillWindowRect_DefaultPalette(win, 0, left, top, right, bottom); + Text_FillWindowRectDefPalette(win, 0, left, top, right, bottom); } void Text_BlankWindowRect(struct Window *win, u8 left, u8 top, u8 right, u8 bottom) { u16 tileNum = GetBlankTileNum(win); - FillWindowRect_DefaultPalette(win, tileNum, left, top, right, bottom); + Text_FillWindowRectDefPalette(win, tileNum, left, top, right, bottom); } static u16 GetBlankTileNum(struct Window *win) @@ -3666,13 +3666,13 @@ u8 GetStringWidth(struct Window *win, const u8 *s) return width; } -u8 sub_8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) +u8 Text_InitWindow8004D04(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u16 top, u32 a6) { Text_InitWindow8002E4C(win, text, tileDataStartOffset, left, top, a6); return Text_PrintWindow8002F44(win); } -u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) +u8 Text_InitWindow8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top) { u8 width = GetStringWidth(win, text); Text_InitWindow(win, text, tileDataStartOffset, left - ((u32)(width + 7) >> 3), top); @@ -3684,7 +3684,7 @@ u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l return Text_PrintWindow8002F44(win); } -u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6) +u8 Text_InitWindow8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6) { register u32 val asm("r5") = (u8)((a6 >> 1) - (GetStringWidth(win, text) >> 1)); left += (val >> 3); @@ -3694,7 +3694,7 @@ u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l return Text_PrintWindow8002F44(win); } -u8 sub_8004E24(struct Window *win) +u8 Text_GetWindowPaletteNum(struct Window *win) { return win->paletteNum; } @@ -3706,7 +3706,7 @@ void Text_GetTextColors(struct Window *win, u8 *foreground, u8 *background, u8 * *shadow = win->shadowColor; } -void sub_8004E3C(const struct WindowTemplate *winTemplate, u8 *tileData, const u8 *text) +void Text_InitWindow8004E3C(const struct WindowTemplate *winTemplate, u8 *tileData, const u8 *text) { sTempWindow.template = winTemplate; Text_InitWindow(&sTempWindow, text, 0, 0, 0); @@ -3727,11 +3727,11 @@ void ConvertInternationalString(u8 *s, u8 language) { u8 i; - StripExtCtrlCodes(s); + Text_StripExtCtrlCodes(s); i = StringLength(s); - s[i++] = 0xFC; + s[i++] = EXT_CTRL_CODE_BEGIN; s[i++] = 22; - s[i++] = 0xFF; + s[i++] = EOS; i--; @@ -3741,18 +3741,18 @@ void ConvertInternationalString(u8 *s, u8 language) i--; } - s[0] = 0xFC; + s[0] = EXT_CTRL_CODE_BEGIN; s[1] = 21; } } -void StripExtCtrlCodes(u8 *str) +void Text_StripExtCtrlCodes(u8 *str) { u16 srcIndex = 0; u16 destIndex = 0; - while (str[srcIndex] != 0xFF) + while (str[srcIndex] != EOS) { - if (str[srcIndex] == 0xFC) + if (str[srcIndex] == EXT_CTRL_CODE_BEGIN) { srcIndex++; srcIndex += GetExtCtrlCodeLength(str[srcIndex]); @@ -3762,12 +3762,12 @@ void StripExtCtrlCodes(u8 *str) str[destIndex++] = str[srcIndex++]; } } - str[destIndex] = 0xFF; + str[destIndex] = EOS; } static const u8 *SkipExtCtrlCode(const u8 *s) { - while (*s == 0xFC) + while (*s == EXT_CTRL_CODE_BEGIN) { s++; s += GetExtCtrlCodeLength(*s); diff --git a/src/engine/trade.c b/src/engine/trade.c index 30e22b8d5..3a14adaca 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1088,7 +1088,7 @@ static void sub_8047EC0(void) sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowTemplate_81E6CE4); - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); @@ -1157,7 +1157,7 @@ static void sub_8047EC0(void) break; case 6: CalculateEnemyPartyCount(); - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19); REG_DISPCNT = 0; gUnknown_03004824->partyCounts[0] = gPlayerPartyCount; gUnknown_03004824->partyCounts[1] = gEnemyPartyCount; @@ -1268,7 +1268,7 @@ static void sub_80484F4(void) sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); InitMenuWindow(&gWindowTemplate_81E6CE4); - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gUnknown_03004824->window); @@ -2097,7 +2097,7 @@ static void sub_8049680(void) if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE) { TextWindow_DrawStdFrame(&gUnknown_03004824->window, 18, 14, 28, 19); - PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); + Menu_PrintItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320); InitMenu(0, 19, 15, 2, 0, 9); gUnknown_03004824->unk_007b = 1; } @@ -2126,7 +2126,7 @@ static void sub_8049680(void) static void sub_8049804(void) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_804A80C(); gUnknown_03004824->unk_007b = 0; gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE; @@ -2464,8 +2464,8 @@ static void sub_8049ED4(u8 a0) StoreSpriteCallbackInData(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C); gUnknown_03004824->unk_0080[a0] ++; sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]); - HandleDestroyMenuCursors(); - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19); + Menu_DestroyCursor(); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19); sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * a0, 0, gTradePartyBoxTilemap, 15, 17, 0); if (whichParty == 0) { @@ -2692,7 +2692,7 @@ static void sub_8049ED4(u8 a0) "\tlsls r0, 2\n" "\tadds r0, r7\n" "\tbl sub_8078A34\n" - "\tbl HandleDestroyMenuCursors\n" + "\tbl Menu_DestroyCursor\n" "\tldr r3, _0804A09C @ =gUnknown_03004824\n" "\tldr r0, [r3]\n" "\tadds r0, 0x4\n" @@ -2708,7 +2708,7 @@ static void sub_8049ED4(u8 a0) "\tstr r1, [sp, 0x4]\n" "\tmovs r1, 0\n" "\tmovs r3, 0\n" - "\tbl FillWindowRect_DefaultPalette\n" + "\tbl Text_FillWindowRectDefPalette\n" "\tldr r1, _0804A09C @ =gUnknown_03004824\n" "\tldr r0, [r1]\n" "\tadds r0, 0xC8\n" @@ -3337,7 +3337,7 @@ static void sub_804A740(u8 whichParty) static void sub_804A80C(void) { - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); sub_804A41C(1); } @@ -3345,7 +3345,7 @@ static void sub_804A840(u8 whichParty) { if (whichParty == 0) { - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19); sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 0, 0, gTradePartyBoxTilemap, 15, 17, 0); sub_804A6DC(0); sub_804A41C(0); @@ -3354,8 +3354,8 @@ static void sub_804A840(u8 whichParty) } else { - HandleDestroyMenuCursors(); - FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); + Menu_DestroyCursor(); + Text_FillWindowRectDefPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19); sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15, 0, gTradePartyBoxTilemap, 15, 17, 0); sub_804A6DC(1); sub_804A41C(1); @@ -3806,7 +3806,7 @@ static void sub_804AFB8(const struct WindowTemplate *windowConfig, u8 *dest, con tileBuffer = gTileBuffer; CpuFill16(0, tileBuffer, size * 0x80); CpuFill16(0, tileBuffer + windowConfig->width * 0x20, size * 0x80); - sub_8004E3C(windowConfig, tileBuffer, src); + Text_InitWindow8004E3C(windowConfig, tileBuffer, src); for (i = 0; i < size; i ++) { CpuCopy16(&tileBuffer[32 * (i * 4)], &dest[32 * (i * 8)], 0x80); @@ -4028,7 +4028,7 @@ static void sub_804B41C(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); @@ -4184,7 +4184,7 @@ static __attribute__((naked)) void sub_804B41C(void) "\tbl sub_804B228\n" "\tldr r4, _0804B57C @ =gWindowTemplate_81E6F84\n" "\tadds r0, r4, 0\n" - "\tbl SetUpWindowConfig\n" + "\tbl Text_LoadWindowTemplate\n" "\tldr r0, [r6]\n" "\tadds r0, 0x4\n" "\tadds r1, r4, 0\n" @@ -4531,7 +4531,7 @@ static void sub_804B790(void) FreeAllSpritePalettes(); SetVBlankCallback(sub_804B210); sub_804B228(); - SetUpWindowConfig(&gWindowTemplate_81E717C); + Text_LoadWindowTemplate(&gWindowTemplate_81E717C); Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E717C); gUnknown_03004828->textWindowBaseTileNum = TextWindow_SetBaseTileNum(2); TextWindow_LoadStdFrameGraphics(&gUnknown_03004828->window); @@ -4852,7 +4852,7 @@ static bool8 sub_804C29C(void) { gUnknown_03004828->unk_0102 = sub_8047580(gUnknown_03004828->pokePicSpriteIdxs[0], gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.paletteNum, 0x78, 0x20, 0x2, 0x1, 0x14, 0xfffff); gUnknown_03004828->unk_00c4 ++; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); } @@ -5199,7 +5199,7 @@ static bool8 sub_804C29C(void) break; case 67: REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c4 ++; @@ -5213,7 +5213,7 @@ static bool8 sub_804C29C(void) if (gUnknown_03004828->unk_00c0 == 0xf0) { gUnknown_03004828->unk_00c4 ++; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); gUnknown_03004828->unk_00c0 = 0; @@ -5536,7 +5536,7 @@ static void sub_804DC88(void) case 0: gUnknown_03004828 = &ewram_2010000.unk_0f000; gMain.state ++; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; @@ -5564,7 +5564,7 @@ static void sub_804DC88(void) break; case 2: gMain.state = 50; - ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); + Text_EraseWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19); Text_InitWindowAndPrintText(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15); break; case 50: diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index da9dd7179..70942fc29 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -565,8 +565,8 @@ void sub_80937A4() void sub_80937BC() { - SetUpWindowConfig(&WindowConfig_TrainerCard_Back_Values); - MultistepInitMenuWindowBegin(&WindowConfig_TrainerCard_Back_Values); + Text_LoadWindowTemplate(&gWindowTemplate_TrainerCard_Back_Values); + MultistepInitMenuWindowBegin(&gWindowTemplate_TrainerCard_Back_Values); } static void sub_80937D8() @@ -678,7 +678,7 @@ bool8 sub_8093980(struct Task *task) static void sub_80939A4(void) { CreateTask(sub_80939DC, 0); - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); } static void sub_80939C0(void) @@ -1317,7 +1317,7 @@ static void sub_8094140(void) { u8 *buffer; - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); buffer = gStringVar1; StringCopy(buffer, ewram0_2.var_64.playerName); @@ -1332,7 +1332,7 @@ static void sub_8094140(void) static void sub_8094188(void) { - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Values); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); TrainerCard_Back_PrintName(); TrainerCard_Back_PrintHallOfFameTime_Label(); TrainerCard_Back_PrintLinkBattlesLabel(); @@ -1341,7 +1341,7 @@ static void sub_8094188(void) TrainerCard_Back_PrintLinkPokeblocks_Label(); TrainerCard_Back_PrintPokemonTrades_Label(); - BasicInitMenuWindow(&WindowConfig_TrainerCard_Back_Labels); + BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Labels); TrainerCard_Back_PrintHallOfFameTime(); TrainerCard_Back_PrintLinkBattles(); TrainerCard_Back_PrintBattleTower(); @@ -1489,10 +1489,10 @@ static void TrainerCard_Back_PrintBattleTower(void) if (ewram0_2.var_a != 0) { sub_8072C44(buffer, ewram0_2.var_64.battleTowerWins, 24, 1); - MenuPrint_PixelCoords(buffer, 112, 120, 0); + Menu_PrintTextPixelCoords(buffer, 112, 120, 0); sub_8072C44(buffer, ewram0_2.var_64.battleTowerLosses, 24, 1); - MenuPrint_PixelCoords(buffer, 149, 120, 0); + Menu_PrintTextPixelCoords(buffer, 149, 120, 0); } } diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 75e481f84..a05d9bf87 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -109,7 +109,7 @@ static bool8 sub_8146058(void) gMain.state += 1; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E6E18); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E18); gMain.state += 1; break; case 4: diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 6a9c23c66..3ba04e489 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -462,7 +462,7 @@ static void BattleTowerEntryMenuCallback_Enter(u8 taskId) } PlaySE(SE_HAZURE); Menu_EraseWindowRect(20, 10, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sub_806D5A4(); sub_806E834(gOtherText_NoMoreThreePoke, 1); gTasks[taskId].func = sub_8122728; @@ -476,7 +476,7 @@ static void sub_8122728(u8 taskId) if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) { Menu_EraseWindowRect(0, 14, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); BattleTowerEntryMenuCallback_Exit(taskId); } } @@ -516,7 +516,7 @@ static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId) static void sub_81227FC(u8 taskId) { Menu_EraseWindowRect(20, 10, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PrintPartyMenuPromptText(0, 0); gTasks[taskId].func = HandleBattleTowerPartyMenu; } @@ -897,7 +897,7 @@ static void DaycareStorageMenuCallback_Exit(u8 taskId) { PlaySE(SE_SELECT); Menu_EraseWindowRect(20, 10, 29, 19); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PrintPartyMenuPromptText(15, 0); gTasks[taskId].func = HandleDaycarePartyMenu; } diff --git a/src/field/daycare.c b/src/field/daycare.c index 7814a3b24..5811461ae 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1756,7 +1756,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gLastFieldPokeMenuOpened = gSpecialVar_Result = gTasks[taskId].data[0]; DestroyTask(taskId); @@ -1765,7 +1765,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gLastFieldPokeMenuOpened = gSpecialVar_Result = 2; DestroyTask(taskId); Menu_EraseWindowRect(15, 6, 29, 13); @@ -1780,7 +1780,7 @@ void ShowDaycareLevelMenu(void) GetDaycareLevelMenuText(&gSaveBlock1.daycare, buffer); Menu_PrintText(buffer, 16, 7); GetDaycareLevelMenuLevelText(&gSaveBlock1.daycare, buffer); - MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); + Menu_PrintTextPixelCoords(buffer, 0xce, 0x38, TRUE); InitMenu(0, 16, 7, 3, 0, 13); CreateTask(HandleDaycareLevelMenuInput, 3); } diff --git a/src/field/decoration.c b/src/field/decoration.c index a91b2e37b..a6c0bd21f 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1434,7 +1434,7 @@ void sub_80FE1DC(void) { sub_80FE2B4(); Menu_DrawStdWindowFrame(0, 0, 10, 9); - PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); + Menu_PrintItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); } @@ -1516,7 +1516,7 @@ void sub_80FE394(void) void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 10, 9); Menu_BlankWindowRect(2, 15, 27, 18); FreeSpritePaletteByTag(6); @@ -1546,7 +1546,7 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg { u8 *strptr; u8 v0; - v0 = sub_8072CBC(); + v0 = Menu_GetTextWindowPaletteNum(); // PALETTE {palIdx} strptr = gStringVar4; strptr[0] = EXT_CTRL_CODE_BEGIN; @@ -1583,7 +1583,7 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings void sub_80FE5AC(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80FE528(taskId); InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13); @@ -1620,7 +1620,7 @@ void sub_80FE604(u8 taskId) gTasks[taskId].func = sub_80FE868; } else { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0); } @@ -1649,7 +1649,7 @@ void sub_80FE728(u8 taskId) void sub_80FE758(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); if (gTasks[taskId].data[11] != 2) { @@ -1677,7 +1677,7 @@ void sub_80FE7D4(u8 *dest, u8 decClass) void sub_80FE7EC(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80FEC94(taskId); @@ -1757,7 +1757,7 @@ void sub_80FE948(u8 taskId) } if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gUnknown_020388F5 = gUnknown_020388F2 + gUnknown_020388F4; if (gUnknown_020388F5 == gUnknown_020388D5) @@ -1769,7 +1769,7 @@ void sub_80FE948(u8 taskId) } } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId); } @@ -2005,7 +2005,7 @@ void sub_80FEF74(void) sub_80F9520(gUnknown_020388F7, 8); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); } @@ -2035,7 +2035,7 @@ void sub_80FEFF4(u8 taskId) void sub_80FF034(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 14, 19); sub_80FE5AC(taskId); } @@ -3790,7 +3790,7 @@ void sub_8100E70(u8 taskId) data[2] = 1; data[6] = 1; data[5] = 1; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); } break; case 1: diff --git a/src/field/diploma.c b/src/field/diploma.c index 8481589cb..7028eec02 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -68,7 +68,7 @@ void CB2_ShowDiploma(void) ResetPaletteFade(); FreeAllSpritePalettes(); LoadPalette(gDiplomaPalettes, 0, 64); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); DisplayDiplomaText(); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 57d9072b1..5ff89574b 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -2434,7 +2434,7 @@ void sub_8088380(struct Task *task) IntrCallback callback; LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); SetVBlankCallback(callback); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); @@ -2557,7 +2557,7 @@ void sub_808862C(struct Task *task) CpuFill32(0, (void *)VRAM + bg0cnt, 0x800); LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); SetVBlankCallback(intrCallback); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index afbc25226..54091459f 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -50,7 +50,7 @@ void CB2_FieldInitRegionMap(void) InitRegionMap((void *)&ewram0_5.unk8, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); - SetUpWindowConfig(&gWindowTemplate_81E709C); + Text_LoadWindowTemplate(&gWindowTemplate_81E709C); InitMenuWindow(&gWindowTemplate_81E709C); Menu_EraseScreen(); REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 589f96844..aade7cffd 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1573,7 +1573,7 @@ void sub_810F118(u8 taskId) } if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gSpecialVar_Result = gUnknown_0203925B; PlaySE(SE_SELECT); sub_810EEDC(); @@ -1582,7 +1582,7 @@ void sub_810F118(u8 taskId) } if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gSpecialVar_Result = 0x7f; PlaySE(SE_SELECT); sub_810EEDC(); diff --git a/src/field/item_menu.c b/src/field/item_menu.c index f58f42fb9..2be5f1e1d 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -424,7 +424,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowTemplate_81E6DFC); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); gMain.state++; break; case 8: @@ -1552,11 +1552,11 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) if (b == 0) { Menu_EraseWindowRect(0, 13, 13, 20); - MenuPrint_PixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); + Menu_PrintTextPixelCoords(gOtherText_ReturnTo, 4, 0x68, 0); } else if (b == 1) { - MenuPrint_PixelCoords(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0); + Menu_PrintTextPixelCoords(gUnknown_0840E740[sReturnLocation], 4, 0x78, 0); } } else @@ -1564,7 +1564,7 @@ static void ItemListMenu_ChangeDescription(s16 itemId, int b) if (b == 0) Menu_EraseWindowRect(0, 13, 13, 20); if (ItemId_CopyDescription(description, itemId, b)) - MenuPrint_PixelCoords(description, 4, 104 + b * 16, 0); + Menu_PrintTextPixelCoords(description, 4, 104 + b * 16, 0); } } @@ -1604,7 +1604,7 @@ static void sub_80A4A98(const u8 *text, u32 line) if (line == 0) Menu_EraseWindowRect(0, 13, 13, 20); if (CopyTextLine(buffer, text, line)) - MenuPrint_PixelCoords(buffer, 4, 104 + line * 16, 0); + Menu_PrintTextPixelCoords(buffer, 4, 104 + line * 16, 0); } static void sub_80A4ADC(u8 taskId) @@ -3559,7 +3559,7 @@ static void ItemListMenu_InitMenu(void) static void sub_80A73C0(void) { - sub_814AD7C(0x70, gBagPocketScrollStates[sCurrentBagPocket].cursorPos * 16 + 16); + MenuCursor_SetPos814AD7C(0x70, gBagPocketScrollStates[sCurrentBagPocket].cursorPos * 16 + 16); } static void sub_80A73F0(void) @@ -3569,8 +3569,8 @@ static void sub_80A73F0(void) static void sub_80A73FC(void) { - HandleDestroyMenuCursors(); - sub_814AD44(); + Menu_DestroyCursor(); + MenuCursor_Destroy814AD44(); } static void sub_80A740C(void) diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index c3a73e18b..0a841eed1 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -1259,7 +1259,7 @@ static void Task_StoryListMenu(u8 taskId) gSpecialVar_Result = 1; gUnknown_03000748 = selection; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 25, 12); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 44b24eed6..76f0d367e 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -160,7 +160,7 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *str, TaskFunc callback, u16 static void Task_CallYesOrNoCallback(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: PlaySE(SE_SELECT); diff --git a/src/field/money.c b/src/field/money.c index 4ab4de51c..b85ed8009 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -148,7 +148,7 @@ void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) else { int xPlusOne = x + 1; - MenuPrint_PixelCoords(buffer, (xPlusOne + size) * 8 - stringWidth, y * 8, 1); + Menu_PrintTextPixelCoords(buffer, (xPlusOne + size) * 8 - stringWidth, y * 8, 1); } } diff --git a/src/field/overworld.c b/src/field/overworld.c index e91c8ae56..9fab20876 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1456,7 +1456,7 @@ bool32 sub_805483C(u8 *a1) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; @@ -1522,7 +1522,7 @@ bool32 sub_805493C(u8 *a1, u32 a2) case 4: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; @@ -1612,7 +1612,7 @@ bool32 sub_8054A9C(u8 *a1) case 3: sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); (*a1)++; break; @@ -1695,7 +1695,7 @@ void sub_8054C2C(void) { sub_8054814(); sub_8054C54(); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); mapdata_load_assets_to_gpu_and_full_redraw(); } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 73a32d070..9cad5bd73 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -679,7 +679,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 7: - SetUpWindowConfig(&gWindowTemplate_81E6C90); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C90); gMain.state++; break; case 8: @@ -2706,7 +2706,7 @@ void sub_806D5B8(u8 monIndex) u8 right = gUnknown_08376948[IsDoubleBattle()][monIndex].right; u8 bottom = gUnknown_08376948[IsDoubleBattle()][monIndex].bottom; - ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); + Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom); var1 = 0; CpuFastSet(&var1, OBJ_VRAM1 + monIndex * 0x400, 0x1000100); @@ -2720,7 +2720,7 @@ void sub_806D668(u8 monIndex) u8 right = gUnknown_08376978[IsDoubleBattle()][monIndex].right; u8 bottom = gUnknown_08376978[IsDoubleBattle()][monIndex].bottom; - ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); + Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom); var1 = 0; CpuFastSet(&var1, OBJ_VRAM1 + 0x300 + monIndex * 0x400, 0x1000040); @@ -3313,7 +3313,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) { u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); - sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer); + Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer); CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } @@ -3423,7 +3423,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); - sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } @@ -3517,7 +3517,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); - sub_8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); + Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } @@ -3668,7 +3668,7 @@ void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu) SetPartyPopupMenuOffsets(index, &left, &top, menu); Menu_EraseWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); } TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *menus, const struct MenuAction2 *menuActions, u8 itemIndex) @@ -3788,7 +3788,7 @@ void party_menu_link_mon_held_item_object(u8 taskId) void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -3925,7 +3925,7 @@ void DoTakeMail(u8 taskId, TaskFunc func) void Task_LoseMailMessage(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -3964,7 +3964,7 @@ void Task_ConfirmLoseMailMessage(u8 taskId) void Task_TakeHeldMail(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -4126,7 +4126,7 @@ void sub_806F358(u8 taskId) void sub_806F390(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -4224,7 +4224,7 @@ void StopTryingToTeachMove_806F67C(u8 taskId) void StopTryingToTeachMove_806F6B4(u8 taskId) { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -4713,7 +4713,7 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c) void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 10, 29, 19); sub_806D5A4(); gTasks[taskId].data[11] = Menu_GetCursorPos(); @@ -4722,7 +4722,7 @@ void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) void ItemUseMoveMenu_HandleCancel(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 10, 29, 19); if (gMain.inBattle) gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu; @@ -4868,12 +4868,12 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) x = (i / 3) * 9 + 11; y = ((i % 3) << 1) + 1; - MenuPrint_PixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1); + Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1); if (i == 2) - MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); + Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); else - MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); + Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; @@ -4881,7 +4881,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2); - MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); + Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); } } #elif GERMAN @@ -5028,7 +5028,7 @@ void PrintNewStatsInLevelUpWindow(u8 taskId) gStringVar1[2] = 0x06; ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[newStatIndex], 1, 3); - MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0); + Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0); } } diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 7cbb20bad..0d5c5234b 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -218,7 +218,7 @@ void PlayerPC(void) static void InitPlayerPCMenu(u8 taskId) { Menu_DrawStdWindowFrame(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); - PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); + Menu_PrintItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder); InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); TASK.FUNC = PlayerPCProcessMenuInput; } @@ -237,13 +237,13 @@ static void PlayerPCProcessMenuInput(u8 taskId) } else if (gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); sPlayerPCMenuActions[gPcItemMenuOptionOrder[Menu_GetCursorPos()]].func(taskId); } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); sPlayerPCMenuActions[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. } @@ -307,7 +307,7 @@ static void InitItemStorageMenu(u8 var) { Menu_EraseWindowRect(0, 0, 10, 9); Menu_DrawStdWindowFrame(0, 0, 11, 9); - PrintMenuItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); + Menu_PrintItems(1, 1, 4, (struct MenuAction *)gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); ItemStorageMenuPrint(gPCText_OptionDescList[var]); } @@ -339,7 +339,7 @@ static void ItemStorageMenuProcessInput(u8 var) } else if (gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); gPCText_ItemPCOptionsText[ITEMPC_MENU_EXIT].func(var); } @@ -378,7 +378,7 @@ static void ItemStorage_Withdraw(u8 taskId) { s16 *data = TASK.data; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); @@ -400,7 +400,7 @@ static void ItemStorage_Toss(u8 taskId) { s16 *data = TASK.data; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 9); NUM_ITEMS = CountUsedPCItemSlots(); @@ -420,7 +420,7 @@ static void ItemStorage_Toss(u8 taskId) static void ItemStorage_Exit(u8 var) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 9); ReshowPlayerPC(var); } @@ -549,7 +549,7 @@ static void ItemStorage_ProcessInput(u8 taskId) PlaySE(SE_SELECT); if(SWITCH_MODE_ACTIVE == FALSE) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); ItemStorage_GoBackToPlayerPCMenu(taskId); } else @@ -1112,7 +1112,7 @@ static void Mailbox_ProcessInput(u8 taskId) } else if(gMain.newKeys & A_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); if(eMailboxInfo.itemsAbove + eMailboxInfo.cursorPos == eMailboxInfo.count) @@ -1127,7 +1127,7 @@ static void Mailbox_ProcessInput(u8 taskId) } else if(gMain.newKeys & B_BUTTON) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Mailbox_TurnOff(taskId); } @@ -1165,7 +1165,7 @@ static void Mailbox_TurnOff(u8 taskId) static void Mailbox_PrintMailOptions(u8 taskId) // Mailbox_PrintMailOptions { Menu_DrawStdWindowFrame(0, 0, 0xC, 0x9); - PrintMenuItems(1, 1, 4, (struct MenuAction *)gMailboxMailOptions); + Menu_PrintItems(1, 1, 4, (struct MenuAction *)gMailboxMailOptions); InitMenu(0, 1, 1, 4, 0, 0xB); TASK.FUNC = Mailbox_MailOptionsProcessInput; } @@ -1231,7 +1231,7 @@ static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}"); static void Mailbox_MoveToBag(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); StringCopy(gStringVar1, gOtherText_MoveToBag); Menu_PrintText(gHighlightedMoveToBagFormatText, 1, 3); // gHighlightedMoveToBagFormatText DisplayItemMessageOnField(taskId, gOtherText_MessageWillBeLost, Mailbox_DrawYesNoBeforeMove, 0); @@ -1325,7 +1325,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId) static void Mailbox_Cancel(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 0xC, 0x9); Mailbox_DrawMailMenuAndDoProcessInput(taskId); } diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index b238857fa..dd94e1755 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -275,11 +275,11 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowTemplate_81E6E34); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E34); gMain.state++; break; case 6: - SetUpWindowConfig(&gWindowTemplate_81E6E50); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E50); gMain.state++; break; case 7: @@ -814,7 +814,7 @@ static void sub_810C368(u8 taskId) sub_80F98A4(1); BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); - PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); + Menu_PrintItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); gSpecialVar_ItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; @@ -869,7 +869,7 @@ static void sub_810C508(u8 taskId) static void sub_810C540(u8 taskId) { BasicInitMenuWindow(&gWindowTemplate_81E6E50); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(7, 4, 13, 11); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]); StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); @@ -932,7 +932,7 @@ static void sub_810C748(u8 taskId) { StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(7, 4, 13, 11); gTasks[taskId].func = sub_810BF7C; } diff --git a/src/field/region_map.c b/src/field/region_map.c index f7db0a61e..a098eb73d 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1540,7 +1540,7 @@ void CB2_InitFlyRegionMap(void) FreeAllSpritePalettes(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7224); + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); break; case 2: InitMenuWindow(&gWindowTemplate_81E7224); @@ -1562,7 +1562,7 @@ void CB2_InitFlyRegionMap(void) break; case 6: LoadPalette(sFlyRegionMapFrame_Pal, 16, 32); - MenuPrint_PixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1); + Menu_PrintTextPixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1); break; case 7: CreateFlyTargetGraphics(); diff --git a/src/field/script_menu.c b/src/field/script_menu.c index ee5843049..9d901a03c 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -652,7 +652,7 @@ static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuActi bottom = top + (2 * count + 1); Menu_DrawStdWindowFrame(left, top, right, bottom); - PrintMenuItems(left + 1, top + 1, count, list); + Menu_PrintItems(left + 1, top + 1, count, list); InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1); StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); } @@ -704,7 +704,7 @@ static void Task_HandleMultichoiceInput(u8 taskId) { gSpecialVar_Result = selection; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); @@ -745,7 +745,7 @@ static void sub_80B53B4(u8 left, u8 top, u8 count, const struct MenuAction *list right = (right + left) + 2; bottom = top + (2 * count + 1); - PrintMenuItems(left, top, count, list); + Menu_PrintItems(left, top, count, list); InitMenu(0, left, top, count, 0, right - left - 1); StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count); } @@ -839,7 +839,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top; } - width = sub_807288C(columnCount); + width = Menu_GetColumnXCoord(columnCount); gTasks[taskId].tLeft = left; gTasks[taskId].tTop = top; gTasks[taskId].tRight = width + left + 2; @@ -866,7 +866,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) { gSpecialVar_Result = selection; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 16c2f57c2..203b57867 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1021,13 +1021,13 @@ void sub_80BC824(u8 taskId) PlaySE(5); if (taskData[1] + taskData[2] == taskData[0]) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } else { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); taskData[4] = sub_80BC948(taskData[1] + taskData[2]); sub_80BC980(taskId); } @@ -1035,7 +1035,7 @@ void sub_80BC824(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(5); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BCC54(taskId); } @@ -1067,7 +1067,7 @@ void sub_80BC980(u8 taskId) PauseVerticalScrollIndicator(0); PauseVerticalScrollIndicator(1); Menu_DrawStdWindowFrame(1, 0, 12, 5); - PrintMenuItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); + Menu_PrintItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); gTasks[taskId].func = sub_80BC9E4; } @@ -1108,7 +1108,7 @@ void sub_80BCA84(u8 taskId) DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); sub_80BC190(gStringVar1, taskData[4]); diff --git a/src/field/shop.c b/src/field/shop.c index cfd4818dc..d56d65c3f 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -85,13 +85,13 @@ u8 CreateShopMenu(u8 martType) { gMartInfo.numChoices = 2; Menu_DrawStdWindowFrame(0, 0, 10, 7); - PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); + Menu_PrintItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); } else { gMartInfo.numChoices = 1; Menu_DrawStdWindowFrame(0, 0, 10, 5); - PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); + Menu_PrintItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel @@ -174,7 +174,7 @@ void sub_80B2F30(u8 taskId) void HandleShopMenuQuit(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 8); sub_80BE3BC(); ScriptContext2_Disable(); @@ -285,7 +285,7 @@ void BuyMenuDrawGraphics(void) ResetPaletteFade(); ResetSpriteData(); ResetTasks(); - SetUpWindowConfig(&gWindowTemplate_81E6DFC); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); InitMenuWindow(&gWindowTemplate_81E6DFC); BuyMenuDrawMapGraphics(); gMartInfo.cursor = zero; @@ -557,7 +557,7 @@ void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) stringPtr = &gStringVar1[3]; GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4); - MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); + Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); } void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) @@ -586,7 +586,7 @@ void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) else { GetMoneyAmountText(stringPtr, gDecorations[itemId].price, 0x4); - MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); + Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1); } } @@ -1084,7 +1084,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PauseVerticalScrollIndicator(1); sub_80F979C(1, 1); sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0xC, 0xD, 0x13); if (gMartInfo.martType == MART_TYPE_0) diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index abf837daa..9ff3a037c 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -400,7 +400,7 @@ static void SlotMachineSetup_0_1(void) static void SlotMachineSetup_3_0(void) { - SetUpWindowConfig(&gWindowTemplate_81E7128); + Text_LoadWindowTemplate(&gWindowTemplate_81E7128); InitMenuWindow(&gWindowTemplate_81E7128); } @@ -850,7 +850,7 @@ static bool8 sub_8102318(struct Task *task) static bool8 sub_8102344(struct Task *task) { - s8 input = ProcessMenuInputNoWrap_(); + s8 input = Menu_ProcessInputNoWrap_(); if (input == 0) { Menu_EraseScreen(); @@ -2808,7 +2808,7 @@ static void sub_8104B80(struct Task *task) sub_8104DA4(); sub_81065DC(); BasicInitMenuWindow(&gWindowTemplate_81E7144); - MenuPrint_PixelCoords(gOtherText_ReelTime, 10, 32, 1); + Menu_PrintTextPixelCoords(gOtherText_ReelTime, 10, 32, 1); BeginNormalPaletteFade(-1, 0, 16, 0, 0); task->data[0]++; } diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 8131e2511..5b2276d1b 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -404,7 +404,7 @@ static u8 StartMenu_PlayerCallback(void) //When player selects SAVE static u8 StartMenu_SaveCallback(void) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); gCallback_03004AE8 = SaveCallback1; return 0; } @@ -594,7 +594,7 @@ static u8 SaveDialogCB_DisplayConfirmYesNoMenu(void) static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES HideSaveDialog(); @@ -640,7 +640,7 @@ static u8 SaveDialogCB_DisplayOverwriteYesNoMenu(void) static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES HideSaveDialog(); @@ -774,7 +774,7 @@ static bool32 sub_80719FC(u8 *step) dp12_8087EA4(); break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; break; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 9b644c6cb..91b706e78 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -294,7 +294,7 @@ void CB2_ChooseStarter(void) LoadCompressedObjectPic(&gUnknown_083F7794[0]); LoadCompressedObjectPic(&gUnknown_083F77A4[0]); LoadSpritePalettes(gUnknown_083F77B4); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); @@ -435,7 +435,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/field/trader.c b/src/field/trader.c index eb0c8a934..b4732ab15 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -135,7 +135,7 @@ void sub_8109B34(u8 taskId, u8 decorationId) gSpecialVar_0x8004 = decorationId; } - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 1, 12, 12); DestroyTask(taskId); EnableBothScriptContexts(); @@ -215,7 +215,7 @@ void ScrSpecial_TraderMenuGiveDecoration(void) void sub_8109D04(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); @@ -237,7 +237,7 @@ void sub_8109D04(u8 taskId) void sub_8109DAC(u8 taskId) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); gSpecialVar_0x8006 = 0; DestroyTask(taskId); diff --git a/src/field/tv.c b/src/field/tv.c index e88e3c72b..e1eade130 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -864,7 +864,7 @@ void PutPokemonTodayCaughtOnAir(void) sub_80BE138((TVShow *)pokemonToday); pokemonToday->language = GAME_LANGUAGE; pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname); - StripExtCtrlCodes(pokemonToday->nickname); + Text_StripExtCtrlCodes(pokemonToday->nickname); } } } @@ -966,7 +966,7 @@ void InterviewAfter_BravoTrainerPokemonProfile(void) sub_80BE160((TVShow *)bravoTrainerNew); bravoTrainerNew->language = GAME_LANGUAGE; bravoTrainerNew->var1f = sub_80BDEAC(bravoTrainerNew->pokemonNickname); - StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); + Text_StripExtCtrlCodes(bravoTrainerNew->pokemonNickname); } } @@ -1075,7 +1075,7 @@ void sub_80BE478(void) sub_80BE160((TVShow *)nameRaterShow); nameRaterShow->language = GAME_LANGUAGE; nameRaterShow->pokemonNameLanguage = sub_80BDEAC(nameRaterShow->pokemonName); - StripExtCtrlCodes(nameRaterShow->pokemonName); + Text_StripExtCtrlCodes(nameRaterShow->pokemonName); } } @@ -1138,7 +1138,7 @@ void InterviewAfter_PkmnFanClubOpinions(void) sub_80BE160((TVShow *)fanclubOpinions); fanclubOpinions->language = GAME_LANGUAGE; fanclubOpinions->var0E = sub_80BDEAC(fanclubOpinions->var10); - StripExtCtrlCodes(fanclubOpinions->var10); + Text_StripExtCtrlCodes(fanclubOpinions->var10); } void InterviewAfter_DummyShow4(void) diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index a4a36e40a..9363498ba 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -228,7 +228,7 @@ static void sub_8136294(void) gUnknown_02039304->unk50++; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E7080); + Text_LoadWindowTemplate(&gWindowTemplate_81E7080); gUnknown_02039304->unk50++; break; case 4: diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 8620ad9f0..4f2a6dccd 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -236,7 +236,7 @@ static void LoadWallClockGraphics(void) FreeAllSpritePalettes(); LoadCompressedObjectPic(&gUnknown_083F7A90[0]); LoadSpritePalettes(gUnknown_083F7AA0); - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); } @@ -417,7 +417,7 @@ static void Task_SetClock3(u8 taskId) Menu_DrawStdWindowFrame(2, 16, 27, 19); Menu_PrintText(gOtherText_CorrectTimePrompt, 3, 17); Menu_DrawStdWindowFrame(23, 8, 29, 13); - PrintMenuItems(24, 9, 2, gMenuYesNoItems); + Menu_PrintItems(24, 9, 2, gMenuYesNoItems); InitMenu(0, 24, 9, 2, 1, 5); gTasks[taskId].func = Task_SetClock4; } @@ -425,7 +425,7 @@ static void Task_SetClock3(u8 taskId) //Get menu selection static void Task_SetClock4(u8 taskId) { - switch (ProcessMenuInputNoWrap_()) + switch (Menu_ProcessInputNoWrap_()) { case 0: //YES PlaySE(SE_SELECT); @@ -433,7 +433,7 @@ static void Task_SetClock4(u8 taskId) return; case -1: //B button case 1: //NO - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(23, 8, 29, 13); Menu_EraseWindowRect(2, 16, 27, 19); diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index eae1c0b4e..356a31b00 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -268,11 +268,11 @@ void CB2_InitLearnMove(void) sub_8133558(); SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowTemplate_81E7240); + Text_LoadWindowTemplate(&gWindowTemplate_81E7240); InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); @@ -302,11 +302,11 @@ void sub_81327A4(void) sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; SetVBlankCallback(VBlankCB_LearnMove); - SetUpWindowConfig(&gWindowTemplate_81E7240); + Text_LoadWindowTemplate(&gWindowTemplate_81E7240); InitMenuWindow(&gWindowTemplate_81E7240); Menu_EraseScreen(); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); Menu_EraseScreen(); @@ -333,7 +333,7 @@ void CB2_LearnMove(void) if (sLearnMoveStruct->unk1D) { sLearnMoveStruct->unk1D = FALSE; - sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); + MenuCursor_SetPos814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); } if (sLearnMoveStruct->unk1E != 0) { @@ -409,7 +409,7 @@ void LearnMoveMain(void) break; case 9: { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -444,7 +444,7 @@ void LearnMoveMain(void) break; case 13: { - s8 selection = ProcessMenuInputNoWrap_(); + s8 selection = Menu_ProcessInputNoWrap_(); if (selection == 0) { @@ -475,7 +475,7 @@ void LearnMoveMain(void) break; case 18: { - s8 var = ProcessMenuInputNoWrap_(); + s8 var = Menu_ProcessInputNoWrap_(); if (var == 0) { @@ -503,7 +503,7 @@ void LearnMoveMain(void) break; case 26: { - s8 var = ProcessMenuInputNoWrap_(); + s8 var = Menu_ProcessInputNoWrap_(); if (var == 0) { diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index cd1083790..ab43c033a 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -354,7 +354,7 @@ static u8 sub_80F8A28(void) RETURN_UP_STATE; case 6: - SetUpWindowConfig(&gWindowTemplate_81E6DFC); + Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); RETURN_UP_STATE; case 7: diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index eeefa8431..3734856b8 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -566,8 +566,8 @@ void sub_80F761C(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag) } sMenu->cursorBaseY = y + 8; - sub_814A5C0(0, basePaletteTag + 1, 15, 0, 0x30); - sub_814A880(x + 8, sMenu->cursorBaseY); + MenuCursor_Create814A5C0(0, basePaletteTag + 1, 15, 0, 0x30); + MenuCursor_SetPos814A880(x + 8, sMenu->cursorBaseY); sub_814AABC(sub_80F7908); } diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 2ed404327..194636e4d 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -530,7 +530,7 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 4: - SetUpWindowConfig(&gWindowTemplate_81E6E50); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E50); gMain.state++; break; case 5: diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index b7081f35d..48ce26bb8 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1425,7 +1425,7 @@ void CB2_InitPokedex(void) ResetPaletteFade(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - SetUpWindowConfig(&gWindowTemplate_81E7048); + Text_LoadWindowTemplate(&gWindowTemplate_81E7048); InitMenuWindow(&gWindowTemplate_81E7048); gMain.state++; break; @@ -1937,7 +1937,7 @@ static bool8 sub_808D344(u8 a) gMain.state++; break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E7048); + Text_LoadWindowTemplate(&gWindowTemplate_81E7048); InitMenuWindow(&gWindowTemplate_81E7048); LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); gMain.state++; @@ -2283,7 +2283,7 @@ static u8 sub_808DFE4(u16 num, u8 b, u8 c) text[i] = CHAR_HYPHEN; break; } - MenuPrint_PixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0); + Menu_PrintTextPixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0); return i; } @@ -2951,7 +2951,7 @@ static void Task_InitPageScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E7064); + Text_LoadWindowTemplate(&gWindowTemplate_81E7064); InitMenuWindow(&gWindowTemplate_81E7064); gMain.state++; break; @@ -3205,7 +3205,7 @@ static void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 3: - SetUpWindowConfig(&gWindowTemplate_81E702C); + Text_LoadWindowTemplate(&gWindowTemplate_81E702C); InitMenuWindow(&gWindowTemplate_81E702C); ResetPaletteFade(); gMain.state++; @@ -3394,7 +3394,7 @@ static void Task_InitSizeScreenMultistep(u8 taskId) { u8 string[40]; //I hope this is the correct size - SetUpWindowConfig(&gWindowTemplate_81E702C); + Text_LoadWindowTemplate(&gWindowTemplate_81E702C); InitMenuWindow(&gWindowTemplate_81E702C); string[0] = EOS; StringAppend(string, gDexText_SizeComparedTo); @@ -3841,7 +3841,7 @@ static void sub_8090750(u8 taskId) gTasks[taskId].data[0]++; break; case 2: - SetUpWindowConfig(&gWindowTemplate_81E7064); + Text_LoadWindowTemplate(&gWindowTemplate_81E7064); InitMenuWindow(&gWindowTemplate_81E7064); DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); gTasks[taskId].data[0]++; @@ -4770,7 +4770,7 @@ static void sub_8091E54(u8 taskId) } break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7064); + Text_LoadWindowTemplate(&gWindowTemplate_81E7064); InitMenuWindow(&gWindowTemplate_81E7064); LoadCompressedObjectPic(&gUnknown_083A05CC[0]); LoadSpritePalettes(gUnknown_083A05DC); @@ -4997,7 +4997,7 @@ static void sub_8092508(u8 taskId) static void sub_80925B4(u16 a, int unused) { - sub_814AD7C(0x90, (a * 2 + 1) * 8); + MenuCursor_SetPos814AD7C(0x90, (a * 2 + 1) * 8); } static void sub_80925CC(u8 taskId) @@ -5305,29 +5305,29 @@ static void sub_8092B68(u8 taskId) var = gTasks[taskId].data[6] + gTasks[taskId].data[7]; StringCopy(gStringVar1, gUnknown_083B5910[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 16, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 16, 1); var = gTasks[taskId].data[8] + gTasks[taskId].data[9]; StringCopy(gStringVar1, gUnknown_083B5968[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 32, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 32, 1); var = gTasks[taskId].data[10] + gTasks[taskId].data[11]; StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AAC, 45, 48, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AAC, 45, 48, 1); var = gTasks[taskId].data[12] + gTasks[taskId].data[13]; StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AAC, 93, 48, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AAC, 93, 48, 1); var = gTasks[taskId].data[4] + gTasks[taskId].data[5]; StringCopy(gStringVar1, gUnknown_083B58D8[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 64, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 64, 1); if (IsNationalPokedexEnabled()) { var = gTasks[taskId].data[2] + gTasks[taskId].data[3]; StringCopy(gStringVar1, gUnknown_083B58C0[var].text2); - MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 80, 1); + Menu_PrintTextPixelCoords(gUnknown_083B5AB2, 45, 80, 1); } } diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index f4d227f7f..bfd0bc972 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -308,7 +308,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src) language = GAME_LANGUAGE; SetMonData(mon, MON_DATA_LANGUAGE, &language); - StripExtCtrlCodes(nickname); + Text_StripExtCtrlCodes(nickname); SetMonData(mon, MON_DATA_NICKNAME, nickname); SetMonData(mon, MON_DATA_FRIENDSHIP, &src->friendship); SetMonData(mon, MON_DATA_HP_EV, &src->hpEV); diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index da9a18148..70234ac48 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -230,7 +230,7 @@ static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct { PrintPartyMenuPromptText(5, arg6); Menu_DrawStdWindowFrame(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1); - PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); + Menu_PrintItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order); } void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order) @@ -368,7 +368,7 @@ void DoPokemonMenu_Switch(u8 taskID) static void PokemonMenu_Switch(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); ewram01000.unkC = sub_806CD5C; ewram01000.array[53553] = 1; DoPokemonMenu_Switch(taskID); @@ -407,7 +407,7 @@ static void sub_808A100(u8 taskID) static void PokemonMenu_Item(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sPokeMenuCursorPos = 0; Menu_EraseWindowRect(19, 0, 29, 19); gTasks[taskID].func = sub_808A100; @@ -600,7 +600,7 @@ static void sub_808A678(u8 taskID) static void PokemonMenu_TakeItem(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678); @@ -608,7 +608,7 @@ static void PokemonMenu_TakeItem(u8 taskID) static void PokemonMenu_TakeMail(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); DoTakeMail(taskID, sub_808A678); @@ -616,7 +616,7 @@ static void PokemonMenu_TakeMail(u8 taskID) static void PokemonMenu_Mail(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); sPokeMenuCursorPos = 0; Menu_EraseWindowRect(19, 0, 29, 19); ShowPartyPopupMenu(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0); @@ -686,14 +686,14 @@ static void sub_808A8D4(u8 taskID) static void PokemonMenu_Cancel(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); sub_808A8D4(taskID); } static void PokemonMenu_CancelSubmenu(u8 taskID) { - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); PlaySE(SE_SELECT); Menu_EraseWindowRect(19, 0, 29, 19); sub_806D5A4(); @@ -711,7 +711,7 @@ static void PokemonMenu_FieldMove(u8 taskID) { s16* data = gTasks[taskID].data; - HandleDestroyMenuCursors(); + Menu_DestroyCursor(); tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID; if (sub_80F9344() == TRUE) { diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index e448c9ed3..d98383c6d 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -718,7 +718,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 5: - SetUpWindowConfig(&gWindowTemplate_81E6E6C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6E6C); gMain.state++; break; case 6: @@ -2716,7 +2716,7 @@ static void sub_809FF64(struct Pokemon *mon) *buffer++ = CHAR_SLASH; buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1); - MenuPrint_PixelCoords(gStringVar1, 126, 56, 1); + Menu_PrintTextPixelCoords(gStringVar1, 126, 56, 1); } static void sub_80A0090(struct Pokemon *mon) @@ -3127,7 +3127,7 @@ bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon) u8 enemyId = GetMultiplayerId() ^ 1; trainerId = gLinkPlayers[enemyId].trainerId & 0xFFFF; StringCopy(gStringVar1, gLinkPlayers[enemyId].name); - StripExtCtrlCodes(gStringVar1); + Text_StripExtCtrlCodes(gStringVar1); } else { @@ -5295,7 +5295,7 @@ u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8 id) static void sub_80A1EF8(const u8 *text, u8 id, u8 left, u16 top, s32 e) { sub_80A1E9C(gStringVar4, text, id); - MenuPrint_PixelCoords(gStringVar4, left, top, (bool8)e); + Menu_PrintTextPixelCoords(gStringVar4, left, top, (bool8)e); } static void sub_80A1F48(const u8 *text, u8 id, u8 c, u8 d, u16 e) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 43c9475ca..3b534c96c 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3268,7 +3268,7 @@ bool8 sub_80EF284(u8 a) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7224); + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); @@ -3660,7 +3660,7 @@ bool8 sub_80EF874(void) sub_80EEDE8(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7224); + Text_LoadWindowTemplate(&gWindowTemplate_81E7224); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E7224); @@ -3972,7 +3972,7 @@ bool8 sub_80EFF68(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E7080); + Text_LoadWindowTemplate(&gWindowTemplate_81E7080); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E7080); @@ -4086,7 +4086,7 @@ bool8 sub_80F02A0(void) gUnknown_083DFEC4->unkD162[0] = 11; break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E70D4); + Text_LoadWindowTemplate(&gWindowTemplate_81E70D4); break; case 2: MultistepInitMenuWindowBegin(&gWindowTemplate_81E70D4); @@ -4269,7 +4269,7 @@ _080F033C: .4byte 0x000087c8\n\ _080F0340: .4byte 0x0000d162\n\ _080F0344:\n\ ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\ - bl SetUpWindowConfig\n\ + bl Text_LoadWindowTemplate\n\ b _080F0618\n\ .align 2, 0\n\ _080F034C: .4byte gWindowTemplate_81E70D4\n\ diff --git a/src/roulette.c b/src/roulette.c index 950cbdbb1..e88c36c01 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -596,7 +596,7 @@ void sub_8115384(void) gMain.state++; break; case 0x2: - SetUpWindowConfig(&gWindowTemplate_81E6C3C); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); InitMenuWindow(&gWindowTemplate_81E6CE4); LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0); gMain.state++; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 32a48fd36..b59d02939 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -198,8 +198,8 @@ void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo); void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo); void sub_80A6978(void); u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate); -void sub_814A880(u8 a1, u8 a2); -u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); +void MenuCursor_SetPos814A880(u8 a1, u8 a2); +u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); s8 GetFirstFreePokeblockSlot(void); bool8 sub_810CA34(struct Pokeblock *pokeblock); #ifdef GERMAN @@ -957,7 +957,7 @@ static void sub_804E56C(void) ResetSpriteData(); FreeAllSpritePalettes(); SetVBlankCallback(NULL); - SetUpWindowConfig(&gWindowTemplate_81E6F68); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F68); InitMenuWindow(&gWindowTemplate_81E6F68); gBerryBlenderData->field_0++; gBerryBlenderData->field_140 = 0; @@ -1135,7 +1135,7 @@ static void sub_804E9F8(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowTemplate_81E6F68); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F68); InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; gBerryBlenderData->field_0++; @@ -1338,7 +1338,7 @@ static void sub_804F0F4(void) SetVBlankCallback(VBlankCB0_BerryBlender); - SetUpWindowConfig(&gWindowTemplate_81E6F68); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F68); InitMenuWindow(&gWindowTemplate_81E6F68); gLinkType = 0x4422; @@ -1426,7 +1426,7 @@ static void sub_804F2A8(void) if (GetMultiplayerId() == gBerryBlenderData->field_9A[i]) stringPtr = StringCopy(stringPtr, sRedColorString); StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name); - MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); + Menu_PrintTextPixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1); } } } @@ -2494,14 +2494,14 @@ static void sub_8050760(void) static void sub_80508D4(u8 value) { gBerryBlenderData->field_AA = value; - sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72); + MenuCursor_SetPos814A880(192, (gBerryBlenderData->field_AA * 16) + 72); } static void sub_80508FC(void) { gBerryBlenderData->field_AA = 0; Menu_DrawStdWindowFrame(23, 8, 28, 13); - sub_814A5C0(0, -1, 12, 0x2D9F, 32); + MenuCursor_Create814A5C0(0, -1, 12, 0x2D9F, 32); Menu_PrintText(gOtherText_YesNoTerminating, 24, 9); sub_80508D4(gBerryBlenderData->field_AA); } @@ -3080,7 +3080,7 @@ void unref_sub_80516F8(u8 taskID) task->data[0] = 0; if (task->data[0] == 100) { - ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); + Text_EraseWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20); Menu_DrawStdWindowFrame(4, 4, 10, 12); for (i = 0; i < 3; i++) { @@ -3606,7 +3606,7 @@ void unref_sub_80524BC(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB1_BerryBlender); - SetUpWindowConfig(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); InitMenuWindow(&gWindowTemplate_81E6CE4); SeedRng(gMain.vblankCounter1); REG_DISPCNT = 0x1540; diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index de9063823..401872644 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -244,7 +244,7 @@ static void HoldContestPainting(void) static void ContestPaintingInitWindow(u8 arg0) { InitMenuWindow(&gWindowTemplate_81E7160); - SetUpWindowConfig(&gWindowTemplate_81E7160); + Text_LoadWindowTemplate(&gWindowTemplate_81E7160); } static void ContestPaintingPrintCaption(u8 contestType, u8 arg1) @@ -291,7 +291,7 @@ static void ContestPaintingPrintCaption(u8 contestType, u8 arg1) xPos = 3; yPos = 14; } - MenuPrint_PixelCoords(gUnknown_03005E40, xPos * 8 + 1, yPos * 8, 1); + Menu_PrintTextPixelCoords(gUnknown_03005E40, xPos * 8 + 1, yPos * 8, 1); } static void ContestPaintingInitBG(void) diff --git a/src/scene/credits.c b/src/scene/credits.c index f113fe965..e31e2c797 100644 --- a/src/scene/credits.c +++ b/src/scene/credits.c @@ -474,7 +474,7 @@ void sub_81439D0(void) taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID]; gTasks[taskIdC].data[TDC_0] = 40; - SetUpWindowConfig(&gWindowTemplate_81E7208); + Text_LoadWindowTemplate(&gWindowTemplate_81E7208); InitMenuWindow(&gWindowTemplate_81E7208); LoadPalette(&gUnknown_0840B7BC, 0x80, sizeof(gUnknown_0840B7BC)); diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index e76f5b47c..e0b798aea 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -471,7 +471,7 @@ static void CB2_EggHatch_0(void) gSpecialVar_0x8005 = GetCurrentMapMusic(); break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gEggHatchData->window, &gWindowTemplate_81E6F84); gEggHatchData->tileDataStartOffset = TextWindow_SetBaseTileNum(20); TextWindow_LoadStdFrameGraphics(&gEggHatchData->window); @@ -633,7 +633,7 @@ static void CB2_EggHatch_1(void) case 9: { s8 menuInput; - if ((menuInput = ProcessMenuInputNoWrap_()) != -2) + if ((menuInput = Menu_ProcessInputNoWrap_()) != -2) { if (menuInput != -1 && menuInput != 1) { diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 571b8ab8d..167130aa5 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -197,7 +197,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -306,7 +306,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) REG_WIN1V = 0; REG_WININ = 0; REG_WINOUT = 0; - SetUpWindowConfig(&gWindowTemplate_81E6C58); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -373,7 +373,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gMain.state++; break; case 1: - SetUpWindowConfig(&gWindowTemplate_81E6F84); + Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004828->window, &gWindowTemplate_81E6F84); gMain.state++; break; @@ -1087,7 +1087,7 @@ static void Task_TradeEvolutionScene(u8 taskID) sEvoCursorPos = 0; Text_InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9); Text_PrintWindow8002F44(&gUnknown_03004828->window); - sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); + MenuCursor_Create814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20); sub_81150D8(); gTasks[taskID].tLearnMoveState++; sEvoCursorPos = 0; @@ -1110,7 +1110,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } if (gMain.newKeys & A_BUTTON) { - ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); @@ -1126,7 +1126,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } if (gMain.newKeys & B_BUTTON) { - ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); + Text_EraseWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD); DestroyMenuCursor(); StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]); Text_InitWindow8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15); @@ -3955,7 +3955,7 @@ static void VBlankCB_TradeEvolutionScene(void) static void sub_81150D8(void) { - sub_814A880(200, 72 + (sEvoCursorPos * 16)); + MenuCursor_SetPos814A880(200, 72 + (sEvoCursorPos * 16)); } static void EvoDummyFunc2(void) diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 4f8124ace..948c288ff 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -582,7 +582,7 @@ static void sub_81422B8(u8 taskID) static void sub_81422E8(u8 taskID) { - SetUpWindowConfig(&gWindowTemplate_81E7198); + Text_LoadWindowTemplate(&gWindowTemplate_81E7198); InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142320; } @@ -714,7 +714,7 @@ static void sub_81426F8(u8 taskID) static void sub_8142738(u8 taskID) { REG_DISPCNT = 0x1940; - SetUpWindowConfig(&gWindowTemplate_81E71B4); + Text_LoadWindowTemplate(&gWindowTemplate_81E71B4); InitMenuWindow(&gWindowTemplate_81E71B4); gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6); @@ -864,7 +864,7 @@ static void sub_8142A28(u8 taskID) *(vram1 + i) = i + 3; *(vram2 + i) = i + 20; } - SetUpWindowConfig(&gWindowTemplate_81E7198); + Text_LoadWindowTemplate(&gWindowTemplate_81E7198); InitMenuWindow(&gWindowTemplate_81E7198); gTasks[taskID].func = sub_8142B04; } @@ -1285,7 +1285,7 @@ static void sub_8143570(void) gReservedSpritePaletteCount = 8; LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet); LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette); - SetUpWindowConfig(&gWindowTemplate_81E71B4); + Text_LoadWindowTemplate(&gWindowTemplate_81E71B4); InitMenuWindow(&gWindowTemplate_81E71B4); } -- cgit v1.2.3 From ebae5167939d1a10a2a37324063bb4f70c43a4ea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 17:29:50 -0500 Subject: through sub_8098350 --- src/pokemon/pokemon_storage_system_2.c | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index f8ae1c013..7f97d7681 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -1,7 +1,10 @@ // Includes #include "global.h" +#include "decompress.h" #include "constants/songs.h" +#include "constants/species.h" +#include "data2.h" #include "sound.h" #include "ewram.h" #include "task.h" @@ -1685,6 +1688,61 @@ __attribute__((naked)) void sub_80980D4(void) } #endif +void sub_80981F0(u16 species, u32 pid) +{ + if (gPokemonStorageSystemPtr->unk_2700) + { + if (species != SPECIES_NONE) + { + HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, 1, (intptr_t)gPokemonStorageSystemPtr->unk_4784, gPokemonStorageSystemPtr->unk_2784, species, pid); + LZ77UnCompWram(gPokemonStorageSystemPtr->unk_11e8, gPokemonStorageSystemPtr->unk_2704); + CpuCopy32(gPokemonStorageSystemPtr->unk_2784, gPokemonStorageSystemPtr->unk_26fc, 0x800); + LoadPalette(gPokemonStorageSystemPtr->unk_2704, gPokemonStorageSystemPtr->unk_26fa, 0x20); + gPokemonStorageSystemPtr->unk_2700->invisible = FALSE; + } + else + { + gPokemonStorageSystemPtr->unk_2700->invisible = TRUE; + } + } +} + +void sub_80982B4(void) +{ + if (gPokemonStorageSystemPtr->unk_11f0) + { + sub_80F7A10(gPokemonStorageSystemPtr->unk_11f7, gPokemonStorageSystemPtr->unk_12b8); + gPokemonStorageSystemPtr->unk_12ac->invisible = FALSE; + } + else + { + gPokemonStorageSystemPtr->unk_12ac->invisible = TRUE; + } + MenuZeroFillWindowRect(0, 11, 9, 17); + MenuPrint(gPokemonStorageSystemPtr->unk_127a, 1, 16); + MenuPrint(gPokemonStorageSystemPtr->unk_120f, 1, 11); + MenuPrint(gPokemonStorageSystemPtr->unk_1234, 0, 13); + MenuPrint(gPokemonStorageSystemPtr->unk_1259, 1, 15); +} + +void sub_8098350(void) +{ + u16 i; + + if (gPokemonStorageSystemPtr->unk_11f0) + { + sub_809D034(BG_SCREEN_ADDR(15), 1, 0, gUnknown_02039760, 1, 0, 8, 2); + for (i = 0; i < 2; i++) + StartSpriteAnimIfDifferent(gPokemonStorageSystemPtr->unk_12b0[i], i * 2 + 1); + } + else + { + sub_809D034(BG_SCREEN_ADDR(15), 1, 0, gUnknown_02039760, 10, 0, 8, 2); + for (i = 0; i < 2; i++) + StartSpriteAnim(gPokemonStorageSystemPtr->unk_12b0[i], i * 2); + } +} + extern const struct StorageAction gPCStorageActionTexts[]; asm(".section .text.8098898"); -- cgit v1.2.3 From 8d7f3f65635bba4f9550e9206564c0724b88dd2e Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Wed, 10 Jan 2018 01:15:15 +0100 Subject: finished decompiling bug.s with nonmatching --- src/battle/anim/bug.c | 314 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 313 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index e9372ed9e..3736a86a8 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -10,6 +10,10 @@ extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; static void sub_80DCA38(struct Sprite *sprite); +static void sub_80DCAEC(struct Sprite *sprite); +static void sub_80DCB5C(struct Sprite *sprite); +static void sub_80DCBB4(struct Sprite *sprite); +void sub_80DCD78(struct Sprite *sprite); // used in Move_MEGAHORN void sub_80DC824(struct Sprite *sprite) @@ -102,4 +106,312 @@ static void sub_80DCA38(struct Sprite *sprite) sprite->pos2.x += Sin(sprite->data[6], sprite->data[5]); sprite->data[6] = (sprite->data[6] + 13) & 0xFF; -} \ No newline at end of file +} + +// used in Move_STRING_SHOT +void sub_80DCA70(struct Sprite *sprite) +{ + sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + if (GetBankSide(gAnimBankAttacker)) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + if (!GetBankSide(gAnimBankTarget)) + sprite->pos1.y += 8; + + sprite->callback = sub_80DCAEC; +} + +static void sub_80DCAEC(struct Sprite *sprite) +{ + if (++sprite->data[0] == 3) + { + sprite->data[0] = 0; + sprite->invisible ^= 1; + } + + if (++sprite->data[1] == 51) + { + DestroyAnimSprite(sprite); + } +} + +// used in Move_SPIDER_WEB +void sub_80DCB38(struct Sprite *sprite) +{ + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 16; + + sprite->data[0] = 16; + sprite->callback = sub_80DCB5C; +} + +static void sub_80DCB5C(struct Sprite *sprite) +{ + if (sprite->data[2] < 20) + { + sprite->data[2]++; + } + else if (sprite->data[1]++ & 1) + { + sprite->data[0]--; + REG_BLDALPHA = sprite->data[0] | ((16 - sprite->data[0]) << 8); + + if (sprite->data[0] == 0) + { + sprite->invisible = TRUE; + sprite->callback = sub_80DCBB4; + } + } +} + +static void sub_80DCBB4(struct Sprite *sprite) +{ + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimSprite(sprite); +} + +// used in 3 moves: +// Move_POISON_STING, Move_TWINEEDLE, Move_SPIKE_CANNON +void sub_80DCBCC(struct Sprite *sprite) +{ + s16 lVarX, lVarY; + u16 rot; + + if (IsContest()) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + } + else + { + if (GetBankSide(gAnimBankAttacker)) + { + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + } + } + + if (!IsContest()) + { + if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)) + { + if (GetBankIdentity(gAnimBankTarget) == 0 || GetBankIdentity(gAnimBankTarget) == 1) + { + s16 temp1, temp2; + + temp1 = gBattleAnimArgs[2]; + gBattleAnimArgs[2] = -temp1; + + temp2 = gBattleAnimArgs[0]; + gBattleAnimArgs[0] = -temp2; + } + } + } + + sub_80787B0(sprite, 1); + + lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + rot = sub_80790F0(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y); + rot += 0xC000; + sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = lVarX; + sprite->data[4] = lVarY; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +// used in 2 moves: +// Move_PIN_MISSILE, Move_ICICLE_SPEAR +void sub_80DCCFC(struct Sprite *sprite) +{ + sub_80787B0(sprite, 1); + + if (GetBankSide(gAnimBankAttacker)) + gBattleAnimArgs[2] = -gBattleAnimArgs[2]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; + sprite->data[5] = gBattleAnimArgs[5]; + sub_80786EC(sprite); + + sprite->callback = sub_80DCD78; + sprite->invisible = TRUE; +} + +#ifdef NONMATCHING +void sub_80DCD78(struct Sprite *sprite) +{ + int i; + s16 x1, x2, y1, y2; + // s16 scale; + // u16 *data; + u16 tempData[8]; + s16 rot; + + sprite->invisible = FALSE; + + if (sub_8078718(sprite)) + { + DestroyAnimSprite(sprite); + return; + } + + // data = &sprite->data[7]; + x1 = sprite->pos1.x; + x2 = sprite->pos2.x; + y1 = sprite->pos1.y; + y2 = sprite->pos2.y; + for (i = 0; i < 8; i++) + { + tempData[i] = sprite->data[i]; + } + x2 += x1; + y2 += y1; + + if (!sub_8078718(sprite)) + { + rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, + sprite->pos1.y + sprite->pos2.y - y2); + rot += 0xC000; + // scale = 0x100 + sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + + for (i = 0; i < 8; i++) + { + sprite->data[i] = tempData[1]; + } + } +} +#else +__attribute__((naked)) +void sub_80DCD78(struct Sprite *sprite) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x14\n\ + adds r4, r0, 0\n\ + adds r2, r4, 0\n\ + adds r2, 0x3E\n\ + ldrb r0, [r2]\n\ + movs r1, 0x5\n\ + negs r1, r1\n\ + ands r1, r0\n\ + strb r1, [r2]\n\ + adds r0, r4, 0\n\ + bl sub_8078718\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080DCDA4\n\ + adds r0, r4, 0\n\ + bl DestroyAnimSprite\n\ + b _080DCE34\n\ +_080DCDA4:\n\ + movs r0, 0x2E\n\ + adds r0, r4\n\ + mov r8, r0\n\ + ldrh r7, [r4, 0x20]\n\ + ldrh r5, [r4, 0x24]\n\ + ldrh r1, [r4, 0x22]\n\ + mov r12, r1\n\ + ldrh r6, [r4, 0x26]\n\ + mov r2, r8\n\ + add r1, sp, 0x4\n\ + movs r3, 0x7\n\ +_080DCDBA:\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + adds r2, 0x2\n\ + adds r1, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _080DCDBA\n\ + adds r0, r7, r5\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + mov r2, r12\n\ + adds r0, r2, r6\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + adds r0, r4, 0\n\ + bl sub_8078718\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080DCE34\n\ + ldrh r0, [r4, 0x24]\n\ + ldrh r1, [r4, 0x20]\n\ + adds r0, r1\n\ + lsls r1, r5, 16\n\ + asrs r1, 16\n\ + subs r0, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + ldrh r1, [r4, 0x26]\n\ + ldrh r2, [r4, 0x22]\n\ + adds r1, r2\n\ + lsls r2, r6, 16\n\ + asrs r2, 16\n\ + subs r1, r2\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + bl sub_80790F0\n\ + lsls r0, 16\n\ + movs r1, 0xC0\n\ + lsls r1, 24\n\ + adds r0, r1\n\ + lsrs r0, 16\n\ + movs r3, 0x80\n\ + lsls r3, 1\n\ + str r0, [sp]\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + adds r2, r3, 0\n\ + bl sub_8078FDC\n\ + add r2, sp, 0x4\n\ + mov r1, r8\n\ + movs r3, 0x7\n\ +_080DCE26:\n\ + ldrh r0, [r2]\n\ + strh r0, [r1]\n\ + adds r2, 0x2\n\ + adds r1, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bge _080DCE26\n\ +_080DCE34:\n\ + add sp, 0x14\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80DCE40(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 18; + } + else + { + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3) + 18; + } + + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_80785E4; +} -- cgit v1.2.3 From f6d7abc83482cd56b7051784ec5420dc34a2ffe2 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Wed, 10 Jan 2018 01:26:38 +0100 Subject: oops --- src/battle/anim/bug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index 3736a86a8..501d544b1 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -287,7 +287,7 @@ void sub_80DCD78(struct Sprite *sprite) for (i = 0; i < 8; i++) { - sprite->data[i] = tempData[1]; + sprite->data[i] = tempData[i]; } } } -- cgit v1.2.3 From 3c375850d12d774cb75803093ad80aa2783e4566 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 9 Jan 2018 19:28:01 -0500 Subject: comment --- src/libs/libisagbprn.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index a9656f3c5..98231dcf5 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -8,8 +8,8 @@ #define AGB_PRINT_PROTECT_ADDR 0x9FE2FFE #define WSCNT_DATA (WAITCNT_PHI_OUT_16MHZ | WAITCNT_WS0_S_2 | WAITCNT_WS0_N_4) -// for auto no$gba support, the string "no$gba" should be at this address. -// except it's not, blame Martin, hence I'm letting the user deal with this nonsense. +// originally for auto no$gba support, the string "no$gba" should be at this address, +// the user needs to read this string out as the memory viewer won't show it. #define NOCASHGBAIDADDR 0x4FFFA00 #define NOCASHGBAPRINTADDR 0x4FFFA14 -- cgit v1.2.3 From a51b95150ba86a3982f613886471626f742aeacd Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 9 Jan 2018 19:40:14 -0500 Subject: both print defines for nocashgba --- src/libs/libisagbprn.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c index 98231dcf5..e0e979e95 100755 --- a/src/libs/libisagbprn.c +++ b/src/libs/libisagbprn.c @@ -11,7 +11,8 @@ // originally for auto no$gba support, the string "no$gba" should be at this address, // the user needs to read this string out as the memory viewer won't show it. #define NOCASHGBAIDADDR 0x4FFFA00 -#define NOCASHGBAPRINTADDR 0x4FFFA14 +#define NOCASHGBAPRINTADDR1 0x4FFFA10 // automatically adds a newline after the string has finished +#define NOCASHGBAPRINTADDR2 0x4FFFA14 // does not automatically add the newline. by default, NOCASHGBAPRINTADDR2 is used. this is used to keep strings consistent between no$gba and VBA-RR, but a user can choose to forgo this. struct AGBPrintStruct { @@ -159,7 +160,7 @@ void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopP /* void NoCashGBAPrint(const char *pBuf) { - *(volatile u32*)NOCASHGBAPRINTADDR = (u32)pBuf; + *(volatile u32*)NOCASHGBAPRINTADDR2 = (u32)pBuf; } void NoCashGBAPrintf(const char *pBuf, ...) -- cgit v1.2.3 From 2eb10c6f2d16729dde12b0fd26cac3f45b85a557 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 20:18:46 -0500 Subject: close swiss cheese in pokemon_storage_system_2.c --- src/pokemon/pokemon_storage_system_2.c | 282 +++++++++++++++++++++++++++++---- 1 file changed, 255 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 7f97d7681..ff6f1f587 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -78,6 +78,9 @@ void sub_80982B4(void); void sub_8098350(void); void sub_8098400(void); void add_to_c3_somehow(void); +void sub_8098780(void); +void sub_8098690(bool8 flag); +void sub_8099200(u8 a0); bool8 sub_80985CC(void); void sub_80986E8(void); void sub_8098710(void); @@ -93,6 +96,8 @@ void sub_8098AA8(u8 a0); void sub_8098B48(void); void sub_8099310(void); bool8 sub_8099374(void); +void sub_80994A8(s16 a0); +void sub_809954C(void); void sub_8099958(void); bool8 sub_8099990(void); void sub_809BB90(void); @@ -109,6 +114,7 @@ void sub_809B0C0(u8 a0); void sub_809B0D4(void); void sub_809B0E0(void); u8 sub_809B0F4(void); +void sub_809B068(void); void sub_809B100(u8 a0); bool8 sub_809B130(void); void sub_809B440(void); @@ -134,6 +140,8 @@ s16 sub_809CF30(void); void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); void sub_809CFF0(void); void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height); +void sub_809D104(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height); +void sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height); // .rodata @@ -1743,9 +1751,192 @@ void sub_8098350(void) } } -extern const struct StorageAction gPCStorageActionTexts[]; +void sub_8098400(void) +{ + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(15); + LZ77UnCompVram(gPSSMenuMisc_Gfx, BG_SCREEN_ADDR(13)); + LZ77UnCompWram(gPSSMenuMisc_Tilemap, gPokemonStorageSystemPtr->unk_00a8); + LoadPalette(gPSSMenu3_Pal, 0x20, 0x20); + LoadPalette(gPSSMenu4_Pal, 0x30, 0x20); + DmaClear16(3, BG_SCREEN_ADDR(15), 0x800); + sub_8098780(); + if (gUnknown_0203847C) + { + sub_8098690(TRUE); + sub_8099200(1); + sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22); + } + else + { + sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 20, 12, 2); + sub_8098690(TRUE); + } + gPokemonStorageSystemPtr->unk_08af = 0; +} + +void sub_80984E8(void) +{ + gPokemonStorageSystemPtr->unk_08a8 = 20; + gPokemonStorageSystemPtr->unk_08aa = 2; + gPokemonStorageSystemPtr->unk_08ad = 0; + sub_8099200(0); +} + +bool8 sub_8098520(void) +{ + if (gPokemonStorageSystemPtr->unk_08ad == 20) + return FALSE; + gPokemonStorageSystemPtr->unk_08a8--; + gPokemonStorageSystemPtr->unk_08aa++; + sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, gPokemonStorageSystemPtr->unk_08a8, 12, gPokemonStorageSystemPtr->unk_08aa); + sub_80994A8(8); + if (++gPokemonStorageSystemPtr->unk_08ad == 20) + { + gUnknown_0203847C = 1; + return FALSE; + } + return TRUE; +} + +void add_to_c3_somehow(void) +{ + gPokemonStorageSystemPtr->unk_08a8 = 0; + gPokemonStorageSystemPtr->unk_08aa = 22; + gPokemonStorageSystemPtr->unk_08ad = 0; +} + +bool8 sub_80985CC(void) +{ + if (gPokemonStorageSystemPtr->unk_08ad == 20) + return FALSE; + gPokemonStorageSystemPtr->unk_08a8++; + gPokemonStorageSystemPtr->unk_08aa--; + sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, gPokemonStorageSystemPtr->unk_08a8, 12, gPokemonStorageSystemPtr->unk_08aa); + sub_809D16C(BG_SCREEN_ADDR(15), 10, gPokemonStorageSystemPtr->unk_08aa, 12, 1); + sub_80994A8(-8); + if (++gPokemonStorageSystemPtr->unk_08ad == 20) + { + gUnknown_0203847C = 0; + sub_809954C(); + party_compaction(); + sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 0, 1, 2); + return FALSE; + } + return TRUE; +} + +void sub_8098690(bool8 flag) +{ + if (flag) + sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 0, 9, 2); + else + sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 2, 9, 2); +} + +void sub_80986E8(void) +{ + gPokemonStorageSystemPtr->unk_08af = 1; + gPokemonStorageSystemPtr->unk_08b0 = 30; + gPokemonStorageSystemPtr->unk_08b1 = 1; +} + +void sub_8098710(void) +{ + if (gPokemonStorageSystemPtr->unk_08af) + { + gPokemonStorageSystemPtr->unk_08af = 0; + sub_8098690(TRUE); + } +} + +void sub_8098734(void) +{ + if (gPokemonStorageSystemPtr->unk_08af && ++gPokemonStorageSystemPtr->unk_08b0 > 30) + { + gPokemonStorageSystemPtr->unk_08b0 = 0; + gPokemonStorageSystemPtr->unk_08b1 = gPokemonStorageSystemPtr->unk_08b1 ? FALSE : TRUE; + sub_8098690(gPokemonStorageSystemPtr->unk_08b1); + } +} + +void sub_8098780(void) +{ + int i; + + for (i = 1; i < PARTY_SIZE; i++) + { + u16 r1; + bool32 r0 = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); + if (r0) + r0 = TRUE; + r1 = r0 ? 12 : 16; + sub_809D104(gPokemonStorageSystemPtr->unk_00a8, 7, (i - 1) * 3 + 1, gPokemonStorageSystemPtr->unk_00a8, r1, 4, 4, 3); + } +} + +void sub_80987DC(void) +{ + sub_8098780(); + sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22); +} + +void sub_809880C(void) +{ + gPokemonStorageSystemPtr->unk_08ae = 0; + PlaySE(SE_WIN_OPEN); + sub_80984E8(); +} + +bool8 sub_8098830(void) +{ + switch (gPokemonStorageSystemPtr->unk_08ae) + { + case 0: + if (!sub_8098520()) + { + sub_809B068(); + gPokemonStorageSystemPtr->unk_08ae++; + } + break; + case 1: + if (!sub_809AC00()) + { + if (gPokemonStorageSystemPtr->unk_11f6) + BoxSetMosaic(); + gPokemonStorageSystemPtr->unk_08ae++; + } + break; + case 2: + return FALSE; + } + return TRUE; +} -asm(".section .text.8098898"); +const struct StorageAction gPCStorageActionTexts[] = { + {PCText_ExitBox, 0}, + {PCText_WhatYouDo, 0}, + {PCText_PickATheme, 0}, + {PCText_PickAWallpaper, 0}, + {PCText_IsSelected, 1}, + {PCText_JumpToWhichBox, 0}, + {PCText_DepositInWhichBox, 0}, + {PCText_WasDeposited, 1}, + {PCText_BoxIsFull, 0}, + {PCText_ReleasePoke, 0}, + {PCText_WasReleased, 4}, + {PCText_ByeBye, 6}, + {PCText_MarkPoke, 0}, + {PCText_LastPoke, 0}, + {PCText_PartyFull, 0}, + {PCText_HoldingPoke, 0}, + {PCText_WhichOneWillTake, 0}, + {PCText_CantReleaseEgg, 0}, + {PCText_ContinueBox, 0}, + {PCText_CameBack, 1}, + {PCText_Worried, 0}, + {PCText_Surprise, 0}, + {PCText_PleaseRemoveMail, 0} +}; void PrintStorageActionText(u8 index) { u8 *ptr; @@ -1826,30 +2017,67 @@ void PrintStorageActionText(u8 index) { MenuPrint(gPokemonStorageSystemPtr->unk_2694, 11, 17); } -// FIXME: move this back +const struct OamData gOamData_83B6EAC = { + .size = 3 +}; -const struct StorageAction gPCStorageActionTexts[] = { - {PCText_ExitBox, 0}, - {PCText_WhatYouDo, 0}, - {PCText_PickATheme, 0}, - {PCText_PickAWallpaper, 0}, - {PCText_IsSelected, 1}, - {PCText_JumpToWhichBox, 0}, - {PCText_DepositInWhichBox, 0}, - {PCText_WasDeposited, 1}, - {PCText_BoxIsFull, 0}, - {PCText_ReleasePoke, 0}, - {PCText_WasReleased, 4}, - {PCText_ByeBye, 6}, - {PCText_MarkPoke, 0}, - {PCText_LastPoke, 0}, - {PCText_PartyFull, 0}, - {PCText_HoldingPoke, 0}, - {PCText_WhichOneWillTake, 0}, - {PCText_CantReleaseEgg, 0}, - {PCText_ContinueBox, 0}, - {PCText_CameBack, 1}, - {PCText_Worried, 0}, - {PCText_Surprise, 0}, - {PCText_PleaseRemoveMail, 0} +const struct OamData gOamData_83B6EB4 = { + .shape = ST_OAM_H_RECTANGLE +}; + +const union AnimCmd gSpriteAnim_83B6EBC[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83B6EC4[] = { + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(6, 8), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gSpriteAnim_83B6ED4[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83B6EDC[] = { + ANIMCMD_FRAME(10, 8), + ANIMCMD_FRAME( 4, 8), + ANIMCMD_FRAME(12, 8), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gSpriteAnimTable_83B6EEC[] = { + gSpriteAnim_83B6EBC, + gSpriteAnim_83B6EC4, + gSpriteAnim_83B6ED4, + gSpriteAnim_83B6EDC +}; + +const struct SpriteTemplate gSpriteTemplate_83B6EFC = { + 0x0005, + 0xdacd, + &gOamData_83B6EB4, + gSpriteAnimTable_83B6EEC, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct OamData gOamData_83B6F2C; + +const struct SpriteTemplate gSpriteTemplate_83B6F14 = { + 0x000f, + 0xdac0, + &gOamData_83B6F2C, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct OamData gOamData_83B6F2C = { + .size = 2 }; -- cgit v1.2.3 From f361bbd3e63a0b342ddfbd4c4c8d9e5a7536d2cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 20:30:32 -0500 Subject: finish pokemon_storage_system_2.c --- src/pokemon/pokemon_storage_system_2.c | 107 ++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 50 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index ff6f1f587..474f16323 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -89,59 +89,10 @@ void sub_80987DC(void); void sub_809880C(void); bool8 sub_8098830(void); void PrintStorageActionText(u8 index); -void sub_8098A38(u8); +void sub_8098A38(s8); void sub_8098A5C(void); void sub_8098A80(void); void sub_8098AA8(u8 a0); -void sub_8098B48(void); -void sub_8099310(void); -bool8 sub_8099374(void); -void sub_80994A8(s16 a0); -void sub_809954C(void); -void sub_8099958(void); -bool8 sub_8099990(void); -void sub_809BB90(void); -void sub_8099BF8(u8 a0); -void sub_8099C70(u8 whichBox); -bool8 sub_8099D34(void); -void sub_8099DCC(u8 a0); -bool8 sub_8099E08(void); -void sub_809A860(u8 a0); -void sub_809AA24(void); -void sub_809AA98(void); -bool8 sub_809AC00(void); -void sub_809B0C0(u8 a0); -void sub_809B0D4(void); -void sub_809B0E0(void); -u8 sub_809B0F4(void); -void sub_809B068(void); -void sub_809B100(u8 a0); -bool8 sub_809B130(void); -void sub_809B440(void); -bool8 sub_809B62C(u8); -void sub_809B6BC(void); -void sub_809B6DC(void); -bool8 sub_809B734(void); -void sub_809B760(void); -void sub_809B7AC(void); -void sub_809B7D4(void); -s8 sub_809B960(void); -void sub_809BBC0(void); -void sub_809BC18(void); -void sub_809BD14(void); -void sub_809BDD8(u8 markings); -bool8 sub_809BE80(void); -bool8 sub_809BEBC(void); -bool8 sub_809BF20(void); -bool8 sub_809BF48(void); -u8 sub_809CA40(void); -void sub_809CE84(void); -s16 sub_809CF30(void); -void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000020 *a1, u8 a2); -void sub_809CFF0(void); -void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height); -void sub_809D104(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height); -void sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height); // .rodata @@ -2081,3 +2032,59 @@ const struct SpriteTemplate gSpriteTemplate_83B6F14 = { const struct OamData gOamData_83B6F2C = { .size = 2 }; + +void sub_8098A38(s8 a0) +{ + DisplayYesNoMenu(23, 10, 0); + MoveMenuCursor(a0); +} + +void sub_8098A5C(void) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(10, 16, 29, 19); + MenuZeroFillWindowRect(23, 10, 29, 15); +} + +void sub_8098A80(void) +{ + sub_809CDCC(); + sub_809CDEC(12); + sub_809CDEC(13); + sub_809CDEC(14); + sub_809CDEC(15); + sub_809CE84(); +} + +void sub_8098AA8(u8 a0) +{ + sub_809CDCC(); + switch (a0) + { + case 0: + sub_809CDEC(16); + sub_809CDEC(17); + sub_809CDEC(18); + sub_809CDEC(19); + break; + case 1: + sub_809CDEC(20); + sub_809CDEC(21); + sub_809CDEC(22); + sub_809CDEC(23); + break; + case 2: + sub_809CDEC(24); + sub_809CDEC(25); + sub_809CDEC(26); + sub_809CDEC(27); + break; + case 3: + sub_809CDEC(28); + sub_809CDEC(29); + sub_809CDEC(30); + sub_809CDEC(31); + break; + } + sub_809CE84(); +} -- cgit v1.2.3 From 0be27e16d2bea0fb4a9145849706779501ae3450 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 19:54:56 -0600 Subject: match sub_80DCD78 --- src/battle/anim/bug.c | 161 ++++++++------------------------------------------ 1 file changed, 23 insertions(+), 138 deletions(-) (limited to 'src') diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c index 501d544b1..dbc0f75a5 100644 --- a/src/battle/anim/bug.c +++ b/src/battle/anim/bug.c @@ -39,7 +39,7 @@ void sub_80DC824(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2]; sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3]; - + sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -64,7 +64,7 @@ void sub_80DC8F4(struct Sprite *sprite) sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); - + sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } @@ -247,157 +247,42 @@ void sub_80DCCFC(struct Sprite *sprite) sprite->invisible = TRUE; } -#ifdef NONMATCHING void sub_80DCD78(struct Sprite *sprite) { - int i; - s16 x1, x2, y1, y2; - // s16 scale; - // u16 *data; - u16 tempData[8]; - s16 rot; - sprite->invisible = FALSE; if (sub_8078718(sprite)) { DestroyAnimSprite(sprite); - return; } - - // data = &sprite->data[7]; - x1 = sprite->pos1.x; - x2 = sprite->pos2.x; - y1 = sprite->pos1.y; - y2 = sprite->pos2.y; - for (i = 0; i < 8; i++) - { - tempData[i] = sprite->data[i]; - } - x2 += x1; - y2 += y1; - - if (!sub_8078718(sprite)) + else { - rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, - sprite->pos1.y + sprite->pos2.y - y2); - rot += 0xC000; - // scale = 0x100 - sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + s16 tempData[8]; + u16 *data = sprite->data; + u16 x1 = sprite->pos1.x; + s16 x2 = sprite->pos2.x; + u16 y1 = sprite->pos1.y; + s16 y2 = sprite->pos2.y; + int i; for (i = 0; i < 8; i++) + tempData[i] = data[i]; + + x2 += x1; + y2 += y1; + + if (!sub_8078718(sprite)) { - sprite->data[i] = tempData[i]; + u16 rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2, + sprite->pos1.y + sprite->pos2.y - y2); + rot += 0xC000; + sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot); + + for (i = 0; i < 8; i++) + data[i] = tempData[i]; } } } -#else -__attribute__((naked)) -void sub_80DCD78(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x14\n\ - adds r4, r0, 0\n\ - adds r2, r4, 0\n\ - adds r2, 0x3E\n\ - ldrb r0, [r2]\n\ - movs r1, 0x5\n\ - negs r1, r1\n\ - ands r1, r0\n\ - strb r1, [r2]\n\ - adds r0, r4, 0\n\ - bl sub_8078718\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080DCDA4\n\ - adds r0, r4, 0\n\ - bl DestroyAnimSprite\n\ - b _080DCE34\n\ -_080DCDA4:\n\ - movs r0, 0x2E\n\ - adds r0, r4\n\ - mov r8, r0\n\ - ldrh r7, [r4, 0x20]\n\ - ldrh r5, [r4, 0x24]\n\ - ldrh r1, [r4, 0x22]\n\ - mov r12, r1\n\ - ldrh r6, [r4, 0x26]\n\ - mov r2, r8\n\ - add r1, sp, 0x4\n\ - movs r3, 0x7\n\ -_080DCDBA:\n\ - ldrh r0, [r2]\n\ - strh r0, [r1]\n\ - adds r2, 0x2\n\ - adds r1, 0x2\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080DCDBA\n\ - adds r0, r7, r5\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - mov r2, r12\n\ - adds r0, r2, r6\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - adds r0, r4, 0\n\ - bl sub_8078718\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080DCE34\n\ - ldrh r0, [r4, 0x24]\n\ - ldrh r1, [r4, 0x20]\n\ - adds r0, r1\n\ - lsls r1, r5, 16\n\ - asrs r1, 16\n\ - subs r0, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - ldrh r1, [r4, 0x26]\n\ - ldrh r2, [r4, 0x22]\n\ - adds r1, r2\n\ - lsls r2, r6, 16\n\ - asrs r2, 16\n\ - subs r1, r2\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - bl sub_80790F0\n\ - lsls r0, 16\n\ - movs r1, 0xC0\n\ - lsls r1, 24\n\ - adds r0, r1\n\ - lsrs r0, 16\n\ - movs r3, 0x80\n\ - lsls r3, 1\n\ - str r0, [sp]\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - adds r2, r3, 0\n\ - bl sub_8078FDC\n\ - add r2, sp, 0x4\n\ - mov r1, r8\n\ - movs r3, 0x7\n\ -_080DCE26:\n\ - ldrh r0, [r2]\n\ - strh r0, [r1]\n\ - adds r2, 0x2\n\ - adds r1, 0x2\n\ - subs r3, 0x1\n\ - cmp r3, 0\n\ - bge _080DCE26\n\ -_080DCE34:\n\ - add sp, 0x14\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_80DCE40(struct Sprite *sprite) { -- cgit v1.2.3 From c4244f5bec27741c18a12611f245df5572b11d8b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 21:18:42 -0500 Subject: through sub_8098BF0 --- src/pokemon/pokemon_storage_system.c | 14 ++++----- src/pokemon/pokemon_storage_system_2.c | 27 ------------------ src/pokemon/pokemon_storage_system_3.c | 52 ++++++++++++++++++++++++++++++++-- src/pokemon/pokemon_storage_system_4.c | 23 +++++++++++++++ src/pokemon/pokemon_storage_system_5.c | 16 +++++++++++ 5 files changed, 96 insertions(+), 36 deletions(-) create mode 100644 src/pokemon/pokemon_storage_system_4.c create mode 100644 src/pokemon/pokemon_storage_system_5.c (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index c91e45d7a..aebd13498 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -22,6 +22,12 @@ void sub_809665C(void); void sub_80966F4(const u8 *sourceString, u16 x, u16 y); void sub_8096784(struct Sprite *sprite); +EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; +EWRAM_DATA u8 gUnknown_02038470[3] = {}; +EWRAM_DATA u8 gUnknown_02038473 = 0; +EWRAM_DATA u8 gUnknown_02038474 = 0; +EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL; + const struct PSS_MenuStringPtrs gUnknown_083B600C[] = { {PCText_WithdrawPoke, PCText_MovePokeToParty}, {PCText_DepositPoke, PCText_StorePokeInBox}, @@ -71,13 +77,7 @@ const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/b const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp"); -EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; -EWRAM_DATA u8 gUnknown_02038470[3] = {}; -EWRAM_DATA u8 gUnknown_02038473 = 0; -EWRAM_DATA u8 gUnknown_02038474 = 0; -EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL; - -static u8 CountPokemonInBoxN(u8 boxId) +u8 CountPokemonInBoxN(u8 boxId) { u16 i; u16 count; diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 474f16323..2947562d0 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -27,15 +27,6 @@ EWRAM_DATA u8 gUnknown_0203847C = 0; EWRAM_DATA u8 gUnknown_0203847D = 0; EWRAM_DATA u8 gUnknown_0203847E = 0; EWRAM_DATA u8 gUnknown_0203847F = 0; -EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; -EWRAM_DATA u8 gUnknown_020384E4 = 0; -EWRAM_DATA u8 gUnknown_020384E5 = 0; -EWRAM_DATA u8 gUnknown_020384E6 = 0; -EWRAM_DATA u8 gUnknown_020384E7 = 0; -EWRAM_DATA u8 gUnknown_020384E8 = 0; -EWRAM_DATA u8 gUnknown_020384E9 = 0; -EWRAM_DATA u16 gUnknown_020384EA = 0; -EWRAM_DATA u32 gUnknown_020384EC = 0; // Static ROM declarations @@ -80,7 +71,6 @@ void sub_8098400(void); void add_to_c3_somehow(void); void sub_8098780(void); void sub_8098690(bool8 flag); -void sub_8099200(u8 a0); bool8 sub_80985CC(void); void sub_80986E8(void); void sub_8098710(void); @@ -159,7 +149,6 @@ const struct SpritePalette gWaveformSpritePalette = { // .text - void task_intro_29(u8 whichMenu) { gUnknown_0203847D = whichMenu; @@ -2017,22 +2006,6 @@ const struct SpriteTemplate gSpriteTemplate_83B6EFC = { SpriteCallbackDummy }; -const struct OamData gOamData_83B6F2C; - -const struct SpriteTemplate gSpriteTemplate_83B6F14 = { - 0x000f, - 0xdac0, - &gOamData_83B6F2C, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - SpriteCallbackDummy -}; - -const struct OamData gOamData_83B6F2C = { - .size = 2 -}; - void sub_8098A38(s8 a0) { DisplayYesNoMenu(23, 10, 0); diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 9e0052b89..eff542756 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -1,16 +1,64 @@ // Includes #include "global.h" +#include "sprite.h" +#include "pokemon_icon.h" #include "pokemon_storage_system.h" // Static type declarations // Static RAM declarations -EWRAM_DATA u16 gUnknown_02039760[0x600] = {}; - // Static ROM declarations +void sub_80999C4(struct Sprite *sprite); +struct Sprite *sub_8099AFC(u16 species, u32 personality, u16 a2, u16 a3, u8 a4, u8 a5); + // .rodata +const struct OamData gOamData_83B6F2C; + +const struct SpriteTemplate gSpriteTemplate_83B6F14 = { + 0x000f, + 0xdac0, + &gOamData_83B6F2C, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct OamData gOamData_83B6F2C = { + .size = 2 +}; + // .text + +u8 get_preferred_box(void) +{ + return gPokemonStorage.currentBox; +} + +void sub_8098B48(void) +{ + u16 i; + + sub_809D51C(); + for (i = 0; i < 40; i++) + gPokemonStorageSystemPtr->unk_10d0[i] = 0; + for (i = 0; i < 40; i++) + gPokemonStorageSystemPtr->unk_1120[i] = 0; + for (i = 0; i < 6; i++) + gPokemonStorageSystemPtr->unk_1038[i] = 0; + for (i = 0; i < 30; i++) + gPokemonStorageSystemPtr->unk_1050[i] = 0; + gPokemonStorageSystemPtr->unk_1034 = NULL; + gPokemonStorageSystemPtr->unk_0d5c = 0; +} + +void sub_8098BF0(void) +{ + u32 personality = GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_PERSONALITY); + gPokemonStorageSystemPtr->unk_1034 = sub_8099AFC(GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_SPECIES2), personality, 0, 0, 1, 7); + gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4; +} diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c new file mode 100644 index 000000000..f7a008db2 --- /dev/null +++ b/src/pokemon/pokemon_storage_system_4.c @@ -0,0 +1,23 @@ + +// Includes +#include "global.h" +#include "pokemon_storage_system.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; +EWRAM_DATA u8 gUnknown_020384E4 = 0; +EWRAM_DATA u8 gUnknown_020384E5 = 0; +EWRAM_DATA u8 gUnknown_020384E6 = 0; +EWRAM_DATA u8 gUnknown_020384E7 = 0; +EWRAM_DATA u8 gUnknown_020384E8 = 0; +EWRAM_DATA u8 gUnknown_020384E9 = 0; +EWRAM_DATA u16 gUnknown_020384EA = 0; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/pokemon/pokemon_storage_system_5.c b/src/pokemon/pokemon_storage_system_5.c new file mode 100644 index 000000000..f809439ff --- /dev/null +++ b/src/pokemon/pokemon_storage_system_5.c @@ -0,0 +1,16 @@ + +// Includes +#include "global.h" +#include "pokemon_storage_system.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u32 gUnknown_020384EC = 0; + +// Static ROM declarations + +// .rodata + +// .text -- cgit v1.2.3 From 7cdd2b2a42a96135949e399d1fa3a00c5f56ae67 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 22:08:11 -0500 Subject: through sub_8098E68 --- src/pokemon/pokemon_storage_system_2.c | 4 +- src/pokemon/pokemon_storage_system_3.c | 89 ++++++++++++++++++++++++++++++++-- 2 files changed, 86 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 2947562d0..dbb1cf992 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -217,7 +217,7 @@ void sub_8096884(void) gMain.state++; break; case 4: - sub_8098B48(); + ResetPSSMonIconSprites(); sub_809AA24(); gMain.state++; break; @@ -280,7 +280,7 @@ void sub_80969A0(void) gMain.state++; break; case 4: - sub_8098B48(); + ResetPSSMonIconSprites(); sub_809AA98(); gMain.state++; break; diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index eff542756..e1ccd107f 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "constants/species.h" #include "sprite.h" #include "pokemon_icon.h" #include "pokemon_storage_system.h" @@ -11,8 +12,9 @@ // Static ROM declarations +void sub_8098E68(struct Sprite *sprite); void sub_80999C4(struct Sprite *sprite); -struct Sprite *sub_8099AFC(u16 species, u32 personality, u16 a2, u16 a3, u8 a4, u8 a5); +struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 a2, s16 a3, u8 a4, u8 a5); // .rodata @@ -39,7 +41,7 @@ u8 get_preferred_box(void) return gPokemonStorage.currentBox; } -void sub_8098B48(void) +void ResetPSSMonIconSprites(void) { u16 i; @@ -49,9 +51,9 @@ void sub_8098B48(void) for (i = 0; i < 40; i++) gPokemonStorageSystemPtr->unk_1120[i] = 0; for (i = 0; i < 6; i++) - gPokemonStorageSystemPtr->unk_1038[i] = 0; + gPokemonStorageSystemPtr->unk_1038[i] = NULL; for (i = 0; i < 30; i++) - gPokemonStorageSystemPtr->unk_1050[i] = 0; + gPokemonStorageSystemPtr->unk_1050[i] = NULL; gPokemonStorageSystemPtr->unk_1034 = NULL; gPokemonStorageSystemPtr->unk_0d5c = 0; } @@ -59,6 +61,83 @@ void sub_8098B48(void) void sub_8098BF0(void) { u32 personality = GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_PERSONALITY); - gPokemonStorageSystemPtr->unk_1034 = sub_8099AFC(GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_SPECIES2), personality, 0, 0, 1, 7); + gPokemonStorageSystemPtr->unk_1034 = PSS_SpawnMonIconSprite(GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_SPECIES2), personality, 0, 0, 1, 7); gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4; } + +void SpawnBoxIconSprites(u8 boxId) +{ + struct BoxPokemon *box = gPokemonStorage.boxes[boxId]; + u16 i; + u16 k = 0; + for (i = 0; i < 5; i++) + { + u16 j; + for (j = 0; j < 6; j++) + { + u16 species = GetBoxMonData(box, MON_DATA_SPECIES2); + if (species != SPECIES_NONE) + gPokemonStorageSystemPtr->unk_1050[k] = PSS_SpawnMonIconSprite(species, GetBoxMonData(box, MON_DATA_PERSONALITY), 24 * j + 0x64, 24 * i + 0x2c, 2, 18 - j); + else + gPokemonStorageSystemPtr->unk_1050[k] = NULL; + box++; + k++; + } + } +} + +void sub_8098D20(u8 monId) +{ + struct BoxPokemon *mon = gPokemonStorage.boxes[get_preferred_box()] + monId; + u16 species = GetBoxMonData(mon, MON_DATA_SPECIES2); + if (species != SPECIES_NONE) + { + s16 x = 24 * (monId % 6) + 0x64; + s16 y = 24 * (monId / 6) + 0x2c; + gPokemonStorageSystemPtr->unk_1050[monId] = PSS_SpawnMonIconSprite(species, GetBoxMonData(mon, MON_DATA_PERSONALITY), x, y, 2, 18 - (monId % 6)); + } +} + +void sub_8098DE0(s16 a0) +{ + u16 monId; + for (monId = 0; monId < 30; monId++) + { + if (gPokemonStorageSystemPtr->unk_1050[monId]) + { + gPokemonStorageSystemPtr->unk_1050[monId]->data[2] = a0; + gPokemonStorageSystemPtr->unk_1050[monId]->data[4] = 1; + gPokemonStorageSystemPtr->unk_1050[monId]->callback = sub_8098E68; + } + } +} + +void sub_8098E24(struct Sprite *sprite) +{ + if (sprite->data[1] != 0) + { + sprite->data[1]--; + sprite->pos1.x += sprite->data[2]; + } + else + { + gPokemonStorageSystemPtr->unk_1178--; + sprite->pos1.x = sprite->data[3]; + sprite->callback = SpriteCallbackDummy; + } +} + +void sub_8098E68(struct Sprite *sprite) +{ + if (sprite->data[4] != 0) + { + sprite->data[4]--; + } + else + { + sprite->pos1.x += sprite->data[2]; + sprite->data[5] = sprite->pos1.x + sprite->pos2.x; + if (sprite->data[5] < 0x45 || sprite->data[5] > 0xfb) + sprite->callback = SpriteCallbackDummy; + } +} -- cgit v1.2.3 From 4ae149b93441ffce560f3b7018842bc4c5d39326 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 22:52:37 -0500 Subject: through sub_8098EE0 --- src/pokemon/pokemon_storage_system_3.c | 52 ++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index e1ccd107f..77d85de65 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -15,6 +15,7 @@ void sub_8098E68(struct Sprite *sprite); void sub_80999C4(struct Sprite *sprite); struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 a2, s16 a3, u8 a4, u8 a5); +void sub_8099BE0(struct Sprite *sprite); // .rodata @@ -141,3 +142,54 @@ void sub_8098E68(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } } + +void sub_8098EA0(u8 col) +{ + u16 i; + + for (i = 0; i < 5; i++) + { + if (gPokemonStorageSystemPtr->unk_1050[col]) + { + sub_8099BE0(gPokemonStorageSystemPtr->unk_1050[col]); + gPokemonStorageSystemPtr->unk_1050[col] = NULL; + } + col += 6; + } +} + +u8 sub_8098EE0(u8 a0, u16 a1, s16 a2) +{ + u16 i; + u16 x; + u16 y; + u8 count; + u8 x1; + u16 sp1c; + + y = 0x2c; + x = 24 * a0 + 0x64; + sp1c = x - (a1 + 1) * a2; + x1 = 18 - a0; + count = 0; + + for (i = 0; i < 5; i++) + { + u16 species = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + a0, MON_DATA_SPECIES2); + if (species != SPECIES_NONE) + { + gPokemonStorageSystemPtr->unk_1050[a0] = PSS_SpawnMonIconSprite(species, GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + a0, MON_DATA_PERSONALITY), sp1c, y, 2, x1); + if (gPokemonStorageSystemPtr->unk_1050[a0]) + { + gPokemonStorageSystemPtr->unk_1050[a0]->data[1] = a1; + gPokemonStorageSystemPtr->unk_1050[a0]->data[2] = a2; + gPokemonStorageSystemPtr->unk_1050[a0]->data[3] = x; + gPokemonStorageSystemPtr->unk_1050[a0]->callback = sub_8098E24; + count++; + } + } + a0 += 6; + y += 24; + } + return count; +} -- cgit v1.2.3 From cb28e3a679841c01191f19cb7e7f0da28f0bf160 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Jan 2018 23:05:21 -0500 Subject: sub_809900C --- src/pokemon/pokemon_storage_system_3.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 77d85de65..af050d324 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -193,3 +193,19 @@ u8 sub_8098EE0(u8 a0, u16 a1, s16 a2) } return count; } + +void sub_809900C(u8 a0, s8 a1) +{ + gPokemonStorageSystemPtr->unk_117c = 0; + gPokemonStorageSystemPtr->unk_117d = a0; + gPokemonStorageSystemPtr->unk_117b = a1; + gPokemonStorageSystemPtr->unk_1172 = 32; + gPokemonStorageSystemPtr->unk_1176 = -6 * a1; + gPokemonStorageSystemPtr->unk_1178 = 0; + if (a1 > 0) + gPokemonStorageSystemPtr->unk_117a = 0; + else + gPokemonStorageSystemPtr->unk_117a = 5; + gPokemonStorageSystemPtr->unk_1174 = 24 * gPokemonStorageSystemPtr->unk_117a + 0x64; + sub_8098DE0(gPokemonStorageSystemPtr->unk_1176); +} -- cgit v1.2.3 From cf7ffa568a2a09c761bae6aa4c70b8d8913c3e81 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 23:37:26 -0600 Subject: rename unknown_task to scanline_effect --- src/battle/anim/draw.c | 2 +- src/battle/battle_2.c | 2 +- src/battle/battle_transition.c | 2 +- src/battle/reshow_battle_screen.c | 2 +- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 2 +- src/easy_chat_2.c | 2 +- src/engine/main.c | 2 +- src/engine/main_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/trainer_card.c | 2 +- src/field/diploma.c | 2 +- src/field/field_screen_effect.c | 2 +- src/field/item_menu.c | 2 +- src/field/overworld.c | 2 +- src/field/party_menu.c | 2 +- src/field/pokeblock.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 2 +- src/field/wallclock.c | 2 +- src/pokemon/mail.c | 2 +- src/pokemon/pokedex.c | 2 +- src/pokemon/pokemon_summary_screen.c | 2 +- src/pokenav_before.c | 2 +- src/roulette.c | 2 +- src/scanline_effect.c | 235 +++++++++++++++++++++++++++++++++++ src/scene/cable_car.c | 2 +- src/scene/contest_painting.c | 2 +- src/scene/evolution_scene.c | 2 +- src/scene/intro.c | 2 +- src/scene/intro_credits_graphics.c | 2 +- src/scene/title_screen.c | 2 +- src/unknown_task.c | 235 ----------------------------------- 35 files changed, 268 insertions(+), 268 deletions(-) create mode 100644 src/scanline_effect.c delete mode 100644 src/unknown_task.c (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 3adb62e06..0508eed8c 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -3,7 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 249b67e0d..20daf4052 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -34,7 +34,7 @@ #include "trainer.h" #include "trig.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "constants/battle_move_effects.h" #include "constants/items.h" diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 985f43945..48ef86fa2 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -13,7 +13,7 @@ #include "trainer.h" #include "field_camera.h" #include "ewram.h" -#include "unknown_task.h" +#include "scanline_effect.h" void sub_807DE10(void); void dp12_8087EA4(void); diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 42bb3ba7f..83dad5f60 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -3,7 +3,7 @@ #include "battle_anim.h" #include "palette.h" #include "main.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "rom_8077ABC.h" #include "data2.h" diff --git a/src/contest.c b/src/contest.c index 8985d6490..9f8fe976a 100644 --- a/src/contest.c +++ b/src/contest.c @@ -29,7 +29,7 @@ #include "task.h" #include "text.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 0585c4e00..25890e3ea 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -14,7 +14,7 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" extern u8 gUnknown_0203856C; diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index cb0e98b71..a5fc1dee9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -14,7 +14,7 @@ #include "sprite.h" #include "string_util.h" #include "strings.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern const struct WindowTemplate gWindowTemplate_81E6D54; extern const struct WindowTemplate gWindowTemplate_81E6DA8; diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 66af7fc04..48e005cab 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -17,7 +17,7 @@ #include "strings.h" #include "strings2.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern void sub_8095C8C(); extern void sub_809D104(void *, u16, u16, const void *, u16, u16, u16, u16); diff --git a/src/engine/main.c b/src/engine/main.c index 82a5fffb4..d1ccffea0 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -13,7 +13,7 @@ #include "rtc.h" #include "siirtc.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern struct SoundInfo gSoundInfo; extern u32 IntrMain[]; diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 715570fe0..3402d93bc 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -21,7 +21,7 @@ #include "task.h" #include "text.h" #include "title_screen.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" #define BirchSpeechUpdateWindowText() ((u8)Menu_UpdateWindowTextOverrideLineLength(24)) diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 6e9efd342..5297b3378 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -13,7 +13,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" struct ResetRtcStruct { diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 70942fc29..f1b115610 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -18,7 +18,7 @@ #include "string_util.h" #include "strings2.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "ewram.h" diff --git a/src/field/diploma.c b/src/field/diploma.c index 7028eec02..70e4e4349 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -10,7 +10,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" static void VBlankCB(void); static void MainCB2(void); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 6e818ce68..5f5113a2f 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -7,7 +7,7 @@ #include "script.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 2be5f1e1d..fe896ac51 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -33,7 +33,7 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" // External stuff diff --git a/src/field/overworld.c b/src/field/overworld.c index 9fab20876..75e3aa6d5 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -47,7 +47,7 @@ #include "tileset_anim.h" #include "time_events.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "wild_encounter.h" #ifdef SAPPHIRE diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 9cad5bd73..7e443a116 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -32,7 +32,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "util.h" #include "script_pokemon_80F9.h" #include "ewram.h" diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index dd94e1755..ea96a4efd 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -8,7 +8,7 @@ #include "script.h" #include "strings.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "text.h" #include "main.h" #include "menu.h" diff --git a/src/field/shop.c b/src/field/shop.c index d56d65c3f..a3e361733 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -15,7 +15,7 @@ #include "strings.h" #include "task.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "field_map_obj.h" #include "field_player_avatar.h" #include "fieldmap.h" diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 5b2276d1b..d7d0282c6 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -28,7 +28,7 @@ #include "strings2.h" #include "task.h" #include "trainer_card.h" -#include "unknown_task.h" +#include "scanline_effect.h" //Menu actions enum { diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 91b706e78..d3cfba1e3 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -14,7 +14,7 @@ #include "strings.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u16 gSpecialVar_Result; extern struct SpriteTemplate gUnknown_02024E8C; diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 4f2a6dccd..bc12db819 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -10,7 +10,7 @@ #include "strings2.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u16 gSpecialVar_0x8004; extern u8 gMiscClock_Gfx[]; diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index ab43c033a..95424e890 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -15,7 +15,7 @@ #include "strings2.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" struct UnkMailStruct diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 48ce26bb8..306cac3c9 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -23,7 +23,7 @@ #include "strings.h" #include "task.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" #define NATIONAL_DEX_COUNT 386 diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index d98383c6d..4e2be1418 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -29,7 +29,7 @@ #include "strings2.h" #include "task.h" #include "tv.h" -#include "unknown_task.h" +#include "scanline_effect.h" static void sub_809FC0C(void); static void sub_809FEB8(void); diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 3b534c96c..fb197cee2 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -18,7 +18,7 @@ #include "sound.h" #include "task.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" extern u8 ewram[]; diff --git a/src/roulette.c b/src/roulette.c index e88c36c01..ae16b1460 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -23,7 +23,7 @@ #include "task.h" #include "text.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" asm(".include \"constants/gba_constants.inc\""); diff --git a/src/scanline_effect.c b/src/scanline_effect.c new file mode 100644 index 000000000..670f2d9b3 --- /dev/null +++ b/src/scanline_effect.c @@ -0,0 +1,235 @@ +#include "global.h" +#include "data2.h" +#include "task.h" +#include "trig.h" +#include "scanline_effect.h" + +static void sub_80896F4(void); +static void sub_8089714(void); + +extern u16 gUnknown_030041B0; +extern u16 gBattle_BG1_Y; +extern u16 gUnknown_030041B8; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG0_Y; +extern u16 gBattle_BG0_X; +extern u16 gBattle_BG1_X; + +extern u8 gUnknown_0202FFA4; + +extern struct UnknownTaskStruct2 gUnknown_03004DC0; + +// Is this a struct? +extern u16 gUnknown_03004DE0[][0x3C0]; + +void remove_some_task(void) +{ + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + if (gUnknown_03004DC0.taskId != 0xFF) + { + DestroyTask(gUnknown_03004DC0.taskId); + gUnknown_03004DC0.taskId = 0xFF; + } +} + +void dp12_8087EA4(void) +{ + CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); + gUnknown_03004DC0.src[0] = 0; + gUnknown_03004DC0.src[1] = 0; + gUnknown_03004DC0.dest = 0; + gUnknown_03004DC0.unkC = 0; + gUnknown_03004DC0.srcBank = 0; + gUnknown_03004DC0.unk15 = 0; + gUnknown_03004DC0.unk16 = 0; + gUnknown_03004DC0.unk17 = 0; + gUnknown_03004DC0.taskId = 0xFF; +} + +void sub_80895F8(struct UnknownTaskStruct unk) +{ + if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; + gUnknown_03004DC0.unk10 = sub_80896F4; + } + else + { + gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; + gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; + gUnknown_03004DC0.unk10 = sub_8089714; + } + + gUnknown_03004DC0.unkC = unk.control; + gUnknown_03004DC0.dest = unk.dest; + gUnknown_03004DC0.unk15 = unk.unk8; + gUnknown_03004DC0.unk16 = unk.unk9; + gUnknown_03004DC0.unk17 = unk.unk9; +} + +void sub_8089668(void) +{ + if (gUnknown_03004DC0.unk15) + { + if (gUnknown_03004DC0.unk15 == 3) + { + gUnknown_03004DC0.unk15 = 0; + DmaStop(0); + gUnknown_0202FFA4 = 1; + } + else + { + DmaStop(0); + DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); + gUnknown_03004DC0.unk10(); + gUnknown_03004DC0.srcBank ^= 1; + } + } +} + +static void sub_80896F4(void) +{ + u16 *dest = (u16 *)gUnknown_03004DC0.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void sub_8089714(void) +{ + u32 *dest = (u32 *)gUnknown_03004DC0.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + *dest = *src; +} + +static void task00_for_dp12(u8 taskId) +{ + int value = 0; + + if (gUnknown_0202FFA4) + { + DestroyTask(taskId); + gUnknown_03004DC0.taskId = 0xFF; + } + else + { + if (gTasks[taskId].data[7]) + { + switch (gTasks[taskId].data[6]) + { + case 0x0: + value = gBattle_BG0_X; + break; + case 0x2: + value = gBattle_BG0_Y; + break; + case 0x4: + value = gBattle_BG1_X; + break; + case 0x6: + value = gBattle_BG1_Y; + break; + case 0x8: + value = gBattle_BG2_X; + break; + case 0xA: + value = gBattle_BG2_Y; + break; + case 0xC: + value = gUnknown_030041B0; + break; + case 0xE: + value = gUnknown_030041B8; + break; + } + } + if (gTasks[taskId].data[4]) + { + int i; + int offset; + gTasks[taskId].data[4]--; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + } + else + { + int i; + int offset; + gTasks[taskId].data[4] = gTasks[taskId].data[5]; + offset = gTasks[taskId].data[3] + 320; + for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + offset++; + } + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) + { + gTasks[taskId].data[3] = 0; + } + } + } +} + +static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +{ + u16 i = 0; + u8 offset = 0; + + while (i < 0x100) + { + a1[i] = (gSineTable[offset] * a3) / 256; + offset += a2; + i++; + } +} + +u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +{ + int i; + int offset; + struct UnknownTaskStruct unk; + u8 taskId; + + dp12_8087EA4(); + + unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); + unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.unk8 = 1; + unk.unk9 = 0; + + sub_80895F8(unk); + + taskId = CreateTask(task00_for_dp12, 0); + + gTasks[taskId].data[0] = a1; + gTasks[taskId].data[1] = a2; + gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = a5; + gTasks[taskId].data[5] = a5; + gTasks[taskId].data[6] = a6; + gTasks[taskId].data[7] = a7; + + gUnknown_03004DC0.taskId = taskId; + gUnknown_0202FFA4 = 0; + + sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + + offset = 320; + + for (i = a1; i < a2; i++) + { + gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; + gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + offset++; + } + + return taskId; +} diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 52a0aeebf..bae037ff7 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -14,7 +14,7 @@ #include "decompress.h" #include "field_weather.h" #include "field_map_obj.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "event_data.h" #include "cable_car_util.h" #include "constants/map_objects.h" diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 401872644..3b68f0143 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -11,7 +11,7 @@ #include "string_util.h" #include "strings.h" #include "text.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" static u8 gUnknown_03000750; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 167130aa5..dcca1fddb 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -9,7 +9,7 @@ #include "pokemon.h" #include "string_util.h" #include "battle.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "data2.h" #include "decompress.h" #include "m4a.h" diff --git a/src/scene/intro.c b/src/scene/intro.c index 4dc6cc91c..beceb6e90 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -19,7 +19,7 @@ #include "task.h" #include "title_screen.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" #include "ewram.h" extern struct SpriteTemplate gUnknown_02024E8C; diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index 6cee74cce..f0f1264a0 100755 --- a/src/scene/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c @@ -19,7 +19,7 @@ #include "task.h" #include "title_screen.h" #include "trig.h" -#include "unknown_task.h" +#include "scanline_effect.h" // define register constants for the inline asm asm(".include \"constants/gba_constants.inc\"\n"); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 26fe088d5..bd41ac641 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -13,7 +13,7 @@ #include "sound.h" #include "sprite.h" #include "task.h" -#include "unknown_task.h" +#include "scanline_effect.h" #if ENGLISH #define VERSION_BANNER_SHAPE 1 diff --git a/src/unknown_task.c b/src/unknown_task.c deleted file mode 100644 index 2c71bfb08..000000000 --- a/src/unknown_task.c +++ /dev/null @@ -1,235 +0,0 @@ -#include "global.h" -#include "data2.h" -#include "task.h" -#include "trig.h" -#include "unknown_task.h" - -static void sub_80896F4(void); -static void sub_8089714(void); - -extern u16 gUnknown_030041B0; -extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; -extern u16 gBattle_BG0_Y; -extern u16 gBattle_BG0_X; -extern u16 gBattle_BG1_X; - -extern u8 gUnknown_0202FFA4; - -extern struct UnknownTaskStruct2 gUnknown_03004DC0; - -// Is this a struct? -extern u16 gUnknown_03004DE0[][0x3C0]; - -void remove_some_task(void) -{ - gUnknown_03004DC0.unk15 = 0; - DmaStop(0); - if (gUnknown_03004DC0.taskId != 0xFF) - { - DestroyTask(gUnknown_03004DC0.taskId); - gUnknown_03004DC0.taskId = 0xFF; - } -} - -void dp12_8087EA4(void) -{ - CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gUnknown_03004DC0.src[0] = 0; - gUnknown_03004DC0.src[1] = 0; - gUnknown_03004DC0.dest = 0; - gUnknown_03004DC0.unkC = 0; - gUnknown_03004DC0.srcBank = 0; - gUnknown_03004DC0.unk15 = 0; - gUnknown_03004DC0.unk16 = 0; - gUnknown_03004DC0.unk17 = 0; - gUnknown_03004DC0.taskId = 0xFF; -} - -void sub_80895F8(struct UnknownTaskStruct unk) -{ - if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) - { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; - gUnknown_03004DC0.unk10 = sub_80896F4; - } - else - { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; - gUnknown_03004DC0.unk10 = sub_8089714; - } - - gUnknown_03004DC0.unkC = unk.control; - gUnknown_03004DC0.dest = unk.dest; - gUnknown_03004DC0.unk15 = unk.unk8; - gUnknown_03004DC0.unk16 = unk.unk9; - gUnknown_03004DC0.unk17 = unk.unk9; -} - -void sub_8089668(void) -{ - if (gUnknown_03004DC0.unk15) - { - if (gUnknown_03004DC0.unk15 == 3) - { - gUnknown_03004DC0.unk15 = 0; - DmaStop(0); - gUnknown_0202FFA4 = 1; - } - else - { - DmaStop(0); - DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); - gUnknown_03004DC0.unk10(); - gUnknown_03004DC0.srcBank ^= 1; - } - } -} - -static void sub_80896F4(void) -{ - u16 *dest = (u16 *)gUnknown_03004DC0.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; - *dest = *src; -} - -static void sub_8089714(void) -{ - u32 *dest = (u32 *)gUnknown_03004DC0.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; - *dest = *src; -} - -static void task00_for_dp12(u8 taskId) -{ - int value = 0; - - if (gUnknown_0202FFA4) - { - DestroyTask(taskId); - gUnknown_03004DC0.taskId = 0xFF; - } - else - { - if (gTasks[taskId].data[7]) - { - switch (gTasks[taskId].data[6]) - { - case 0x0: - value = gBattle_BG0_X; - break; - case 0x2: - value = gBattle_BG0_Y; - break; - case 0x4: - value = gBattle_BG1_X; - break; - case 0x6: - value = gBattle_BG1_Y; - break; - case 0x8: - value = gBattle_BG2_X; - break; - case 0xA: - value = gBattle_BG2_Y; - break; - case 0xC: - value = gUnknown_030041B0; - break; - case 0xE: - value = gUnknown_030041B8; - break; - } - } - if (gTasks[taskId].data[4]) - { - int i; - int offset; - gTasks[taskId].data[4]--; - offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) - { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; - offset++; - } - } - else - { - int i; - int offset; - gTasks[taskId].data[4] = gTasks[taskId].data[5]; - offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) - { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; - offset++; - } - gTasks[taskId].data[3]++; - if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - { - gTasks[taskId].data[3] = 0; - } - } - } -} - -static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) -{ - u16 i = 0; - u8 offset = 0; - - while (i < 0x100) - { - a1[i] = (gSineTable[offset] * a3) / 256; - offset += a2; - i++; - } -} - -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) -{ - int i; - int offset; - struct UnknownTaskStruct unk; - u8 taskId; - - dp12_8087EA4(); - - unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; - unk.unk8 = 1; - unk.unk9 = 0; - - sub_80895F8(unk); - - taskId = CreateTask(task00_for_dp12, 0); - - gTasks[taskId].data[0] = a1; - gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / a3; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = a5; - gTasks[taskId].data[5] = a5; - gTasks[taskId].data[6] = a6; - gTasks[taskId].data[7] = a7; - - gUnknown_03004DC0.taskId = taskId; - gUnknown_0202FFA4 = 0; - - sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); - - offset = 320; - - for (i = a1; i < a2; i++) - { - gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; - gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; - offset++; - } - - return taskId; -} -- cgit v1.2.3 From f9f0e84b70f1b313200acd6f0d180413e34517da Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 Jan 2018 23:55:03 -0600 Subject: label some scanline_effect functions --- src/battle/anim/draw.c | 6 +- src/battle/battle_2.c | 2 +- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 4 +- src/easy_chat_2.c | 2 +- src/engine/main.c | 2 +- src/engine/main_menu.c | 6 +- src/engine/option_menu.c | 4 +- src/engine/reset_rtc_screen.c | 2 +- src/field/diploma.c | 2 +- src/field/field_screen_effect.c | 6 +- src/field/item_menu.c | 2 +- src/field/overworld.c | 4 +- src/field/party_menu.c | 2 +- src/field/pokeblock.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 2 +- src/field/use_pokeblock.c | 4 +- src/field/wallclock.c | 2 +- src/pokemon/mail.c | 2 +- src/pokemon/pokedex.c | 4 +- src/pokemon/pokemon_summary_screen.c | 2 +- src/pokenav_before.c | 4 +- src/roulette.c | 2 +- src/scanline_effect.c | 107 ++++++++++++++++++----------------- src/scene/cable_car.c | 2 +- src/scene/contest_painting.c | 2 +- src/scene/evolution_scene.c | 6 +- src/scene/hall_of_fame.c | 4 +- src/scene/intro.c | 2 +- src/scene/title_screen.c | 6 +- 33 files changed, 104 insertions(+), 101 deletions(-) (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index 0508eed8c..ac1ae08cb 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -97,7 +97,7 @@ void sub_80D0D68(u8 taskId) if (++task->data[3] >= task->data[15]) { - gUnknown_03004DC0.unk15 = 3; + gScanlineEffect.unk15 = 3; DestroyAnimVisualTask(taskId); } } @@ -202,7 +202,7 @@ _080D0E04:\n\ ldrsh r1, [r3, r2]\n\ cmp r0, r1\n\ blt _080D0E22\n\ - ldr r1, _080D0E2C @ =gUnknown_03004DC0\n\ + ldr r1, _080D0E2C @ =gScanlineEffect\n\ movs r0, 0x3\n\ strb r0, [r1, 0x15]\n\ adds r0, r4, 0\n\ @@ -213,7 +213,7 @@ _080D0E22:\n\ bx r0\n\ .align 2, 0\n\ _080D0E28: .4byte gUnknown_03004DE0\n\ -_080D0E2C: .4byte gUnknown_03004DC0\n\ +_080D0E2C: .4byte gScanlineEffect\n\ .syntax divided\n"); } #endif diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 20daf4052..da6c9a2b4 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1073,7 +1073,7 @@ void sub_800FCFC(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void nullsub_36(struct Sprite *sprite) diff --git a/src/contest.c b/src/contest.c index 9f8fe976a..e39ce3daa 100644 --- a/src/contest.c +++ b/src/contest.c @@ -635,7 +635,7 @@ void ContestVBlankCallback(void) TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80ABB70(u8 taskId) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 25890e3ea..85a8800e7 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -516,7 +516,7 @@ static void sub_80AA090(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void sub_80AA10C(void) diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index a5fc1dee9..7ca647b93 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -298,7 +298,7 @@ void sub_80E62F8(void) ResetPaletteFade(); ResetSpriteData(); dp12_8087EA4(); - remove_some_task(); + ScanlineEffect_Stop(); sub_80EAD08(); sub_80895F8(gUnknown_083DB698); FreeSpriteTileRanges(); @@ -655,7 +655,7 @@ void sub_80E6A6C(void) ProcessSpriteCopyRequests(); sub_80EAC5C(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80E6A88(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 48e005cab..0f12b978d 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + r4 = gUnknown_03004DE0[gScanlineEffect.srcBank]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/main.c b/src/engine/main.c index d1ccffea0..1bed4080b 100644 --- a/src/engine/main.c +++ b/src/engine/main.c @@ -350,7 +350,7 @@ void DoSoftReset(void) { REG_IME = 0; m4aSoundVSyncOff(); - remove_some_task(); + ScanlineEffect_Stop(); DmaStop(1); DmaStop(2); DmaStop(3); diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index 3402d93bc..a0b8b7020 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -229,7 +229,7 @@ u32 InitMainMenu(u8 a1) ResetPaletteFade(); LoadPalette(gMainMenuPalette, 0, 32); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -763,7 +763,7 @@ static void Task_NewGameSpeech1(u8 taskId) LZ77UnCompVram(gUnknown_081E7834, (void *)(BG_VRAM + 0x3800)); LoadPalette(gUnknown_081E764C, 0, 0x40); LoadPalette(gUnknown_081E796C, 1, 0x10); - remove_some_task(); + ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); @@ -1368,7 +1368,7 @@ void CB_ContinueNewGameSpeechPart2() gTasks[taskId].tBGhofs = -60; - remove_some_task(); + ScanlineEffect_Stop(); ResetSpriteData(); FreeAllSpritePalettes(); AddBirchSpeechObjects(taskId); diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 868830880..cb5f66649 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -8,7 +8,7 @@ #include "task.h" extern void SetPokemonCryStereo(u32 val); -extern void remove_some_task(void); +extern void ScanlineEffect_Stop(void); //Task data enum { @@ -110,7 +110,7 @@ void CB2_InitOptionMenu(void) } case 1: ResetPaletteFade(); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); gMain.state++; diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 5297b3378..d077bc670 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -438,7 +438,7 @@ void CB2_InitResetRtcScreen(void) ResetOamRange(0, 128); LoadOam(); - remove_some_task(); + ScanlineEffect_Stop(); dp12_8087EA4(); ResetSpriteData(); ResetTasks(); diff --git a/src/field/diploma.c b/src/field/diploma.c index 70e4e4349..978eca7eb 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -62,7 +62,7 @@ void CB2_ShowDiploma(void) LZ77UnCompVram(gDiplomaTiles, (void *)VRAM); LZ77UnCompVram(gDiplomaTilemap, (void *)(VRAM + 0x3000)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 5f5113a2f..b5141e7ea 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -64,18 +64,18 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) { if (data[6] == 1) { - remove_some_task(); + ScanlineEffect_Stop(); data[0] = 2; } else diff --git a/src/field/item_menu.c b/src/field/item_menu.c index fe896ac51..e0575af4c 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -397,7 +397,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/overworld.c b/src/field/overworld.c index 75e3aa6d5..e90fc6396 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1410,7 +1410,7 @@ void VBlankCB_Field(void) { LoadOam(); ProcessSpriteCopyRequests(); - sub_8089668(); + ScanlineEffect_TransferDma(); sub_8057A58(); TransferPlttBuffer(); sub_8072E74(); @@ -1669,7 +1669,7 @@ void sub_8054BA8(void) REG_DISPCNT = 0; - remove_some_task(); + ScanlineEffect_Stop(); DmaClear16(3, PLTT + 2, PLTT_SIZE - 2); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7e443a116..7d243f569 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -648,7 +648,7 @@ bool8 InitPartyMenu(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index ea96a4efd..7e8bdc2ce 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -255,7 +255,7 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/field/shop.c b/src/field/shop.c index a3e361733..1dc6ba0cd 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -266,7 +266,7 @@ void BuyMenuDrawGraphics(void) register u16 zero2 asm("r5"); sub_80F9438(); - remove_some_task(); + ScanlineEffect_Stop(); REG_BG1HOFS = (zero2 = 0); REG_BG1VOFS = zero2; REG_BG2HOFS = zero2; diff --git a/src/field/start_menu.c b/src/field/start_menu.c index d7d0282c6..6017f56bf 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -750,7 +750,7 @@ static bool32 sub_80719FC(u8 *step) REG_DISPCNT = 0; SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); addr = (void *)VRAM; size = 0x18000; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index d3cfba1e3..418488774 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -285,7 +285,7 @@ void CB2_ChooseStarter(void) LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 9363498ba..4af7be386 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -117,7 +117,7 @@ static void sub_81365A0(void); static void sub_81365C8(void); static void sub_8136638(void); static void sub_81368A4(void); -void sub_8089668(void); +void ScanlineEffect_TransferDma(void); static void sub_8136B44(void); static u8 sub_81370E4(u8); static void sub_8136BB8(void); @@ -194,7 +194,7 @@ static void sub_8136264(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5CDC(6); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) diff --git a/src/field/wallclock.c b/src/field/wallclock.c index bc12db819..aaa7f9ae8 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -229,7 +229,7 @@ static void LoadWallClockGraphics(void) LoadPalette(gMiscClockMale_Pal, 0, 32); else LoadPalette(gMiscClockFemale_Pal, 0, 32); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 95424e890..921a3ad93 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -320,7 +320,7 @@ static u8 sub_80F8A28(void) { case 0: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); REG_DISPCNT = 0; RETURN_UP_STATE; diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 306cac3c9..4fb6a4920 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1419,7 +1419,7 @@ void CB2_InitPokedex(void) } break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); ResetPaletteFade(); @@ -1494,7 +1494,7 @@ u8 unref_sub_808C540(void (*func)(u8)) SetVBlankCallback(NULL); sub_8091060(0x200); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetPaletteFade(); savedIme = REG_IME; diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 4e2be1418..ec327796a 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -701,7 +701,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 1: - remove_some_task(); + ScanlineEffect_Stop(); gMain.state++; break; case 2: diff --git a/src/pokenav_before.c b/src/pokenav_before.c index fb197cee2..7439fc077 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -329,7 +329,7 @@ void sub_80EBA5C() ResetTasks(); break; case 6: - remove_some_task(); + ScanlineEffect_Stop(); break; case 7: sub_80F1A90(); @@ -436,7 +436,7 @@ void sub_80EBD4C() ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5BF0(); - sub_8089668(); + ScanlineEffect_TransferDma(); } void sub_80EBD68() diff --git a/src/roulette.c b/src/roulette.c index ae16b1460..6d79f9d38 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -578,7 +578,7 @@ void sub_8115384(void) { case 0x0: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); sub_80F9438(); sub_80F9368(); REG_BG2CNT = 0x4686; diff --git a/src/scanline_effect.c b/src/scanline_effect.c index 670f2d9b3..e9cf0d02a 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -4,6 +4,9 @@ #include "trig.h" #include "scanline_effect.h" +// Control value to ransfer a single 16-bit value at HBlank +#define HBLANK_DMA_CONTROL_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1) + static void sub_80896F4(void); static void sub_8089714(void); @@ -18,89 +21,89 @@ extern u16 gBattle_BG1_X; extern u8 gUnknown_0202FFA4; -extern struct UnknownTaskStruct2 gUnknown_03004DC0; +extern struct ScanlineEffect gScanlineEffect; // Is this a struct? extern u16 gUnknown_03004DE0[][0x3C0]; -void remove_some_task(void) +void ScanlineEffect_Stop(void) { - gUnknown_03004DC0.unk15 = 0; + gScanlineEffect.unk15 = 0; DmaStop(0); - if (gUnknown_03004DC0.taskId != 0xFF) + if (gScanlineEffect.taskId != 0xFF) { - DestroyTask(gUnknown_03004DC0.taskId); - gUnknown_03004DC0.taskId = 0xFF; + DestroyTask(gScanlineEffect.taskId); + gScanlineEffect.taskId = 0xFF; } } void dp12_8087EA4(void) { CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gUnknown_03004DC0.src[0] = 0; - gUnknown_03004DC0.src[1] = 0; - gUnknown_03004DC0.dest = 0; - gUnknown_03004DC0.unkC = 0; - gUnknown_03004DC0.srcBank = 0; - gUnknown_03004DC0.unk15 = 0; - gUnknown_03004DC0.unk16 = 0; - gUnknown_03004DC0.unk17 = 0; - gUnknown_03004DC0.taskId = 0xFF; + gScanlineEffect.src[0] = 0; + gScanlineEffect.src[1] = 0; + gScanlineEffect.dest = 0; + gScanlineEffect.unkC = 0; + gScanlineEffect.srcBank = 0; + gScanlineEffect.unk15 = 0; + gScanlineEffect.unk16 = 0; + gScanlineEffect.unk17 = 0; + gScanlineEffect.taskId = 0xFF; } void sub_80895F8(struct UnknownTaskStruct unk) { - if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1)) + if (unk.control == HBLANK_DMA_CONTROL_16BIT) // 16 bit { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1]; - gUnknown_03004DC0.unk10 = sub_80896F4; + gScanlineEffect.src[0] = &gUnknown_03004DE0[0][1]; + gScanlineEffect.src[1] = &gUnknown_03004DE0[1][1]; + gScanlineEffect.unk10 = sub_80896F4; } - else + else // assume 32-bit { - gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2]; - gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2]; - gUnknown_03004DC0.unk10 = sub_8089714; + gScanlineEffect.src[0] = &gUnknown_03004DE0[0][2]; + gScanlineEffect.src[1] = &gUnknown_03004DE0[1][2]; + gScanlineEffect.unk10 = sub_8089714; } - gUnknown_03004DC0.unkC = unk.control; - gUnknown_03004DC0.dest = unk.dest; - gUnknown_03004DC0.unk15 = unk.unk8; - gUnknown_03004DC0.unk16 = unk.unk9; - gUnknown_03004DC0.unk17 = unk.unk9; + gScanlineEffect.unkC = unk.control; + gScanlineEffect.dest = unk.dest; + gScanlineEffect.unk15 = unk.unk8; + gScanlineEffect.unk16 = unk.unk9; + gScanlineEffect.unk17 = unk.unk9; } -void sub_8089668(void) +void ScanlineEffect_TransferDma(void) { - if (gUnknown_03004DC0.unk15) + if (gScanlineEffect.unk15) { - if (gUnknown_03004DC0.unk15 == 3) + if (gScanlineEffect.unk15 == 3) { - gUnknown_03004DC0.unk15 = 0; + gScanlineEffect.unk15 = 0; DmaStop(0); gUnknown_0202FFA4 = 1; } else { DmaStop(0); - DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC); - gUnknown_03004DC0.unk10(); - gUnknown_03004DC0.srcBank ^= 1; + DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dest, gScanlineEffect.unkC); + gScanlineEffect.unk10(); + gScanlineEffect.srcBank ^= 1; } } } static void sub_80896F4(void) { - u16 *dest = (u16 *)gUnknown_03004DC0.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + u16 *dest = (u16 *)gScanlineEffect.dest; + u16 *src = (u16 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; *dest = *src; } static void sub_8089714(void) { - u32 *dest = (u32 *)gUnknown_03004DC0.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank]; + u32 *dest = (u32 *)gScanlineEffect.dest; + u32 *src = (u32 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; *dest = *src; } @@ -111,7 +114,7 @@ static void task00_for_dp12(u8 taskId) if (gUnknown_0202FFA4) { DestroyTask(taskId); - gUnknown_03004DC0.taskId = 0xFF; + gScanlineEffect.taskId = 0xFF; } else { @@ -153,7 +156,7 @@ static void task00_for_dp12(u8 taskId) offset = gTasks[taskId].data[3] + 320; for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; offset++; } } @@ -165,7 +168,7 @@ static void task00_for_dp12(u8 taskId) offset = gTasks[taskId].data[3] + 320; for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; offset++; } gTasks[taskId].data[3]++; @@ -177,20 +180,20 @@ static void task00_for_dp12(u8 taskId) } } -static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4) +static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) { u16 i = 0; - u8 offset = 0; + u8 theta = 0; - while (i < 0x100) + while (i < 256) { - a1[i] = (gSineTable[offset] * a3) / 256; - offset += a2; + buffer[i] = (gSineTable[theta] * amplitude) / 256; + theta += frequency; i++; } } -u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) +u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 frequency, u8 amplitude, u8 a5, u8 a6, u8 a7) { int i; int offset; @@ -200,7 +203,7 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) dp12_8087EA4(); unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1; + unk.control = HBLANK_DMA_CONTROL_16BIT; unk.unk8 = 1; unk.unk9 = 0; @@ -210,17 +213,17 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) gTasks[taskId].data[0] = a1; gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / a3; + gTasks[taskId].data[2] = 256 / frequency; gTasks[taskId].data[3] = 0; gTasks[taskId].data[4] = a5; gTasks[taskId].data[5] = a5; gTasks[taskId].data[6] = a6; gTasks[taskId].data[7] = a7; - gUnknown_03004DC0.taskId = taskId; + gScanlineEffect.taskId = taskId; gUnknown_0202FFA4 = 0; - sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1); + GenerateWave(&gUnknown_03004DE0[0][320], frequency, amplitude, a2 - a1); offset = 320; diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index bae037ff7..d8e099130 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -208,7 +208,7 @@ static void CableCarMainCallback_Setup(void) case 0: default: SetVBlankCallback(NULL); - remove_some_task(); + ScanlineEffect_Stop(); DmaFill16Large(3, 0, VRAM, VRAM_SIZE, 0x1000); DmaFill32Defvars(3, 0, OAM, OAM_SIZE); DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 3b68f0143..3aa898b03 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -147,7 +147,7 @@ static void ShowContestPainting(void) switch (gMain.state) { case 0: - remove_some_task(); + ScanlineEffect_Stop(); SetVBlankCallback(NULL); gUnknown_03005E8C = &ewram15DE0; ContestPaintingInitVars(TRUE); diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index dcca1fddb..54af6013f 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -215,7 +215,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, sub_800D6D4(); sub_800DAB8(); ResetSpriteData(); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); FreeAllSpritePalettes(); @@ -3934,7 +3934,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void VBlankCB_TradeEvolutionScene(void) @@ -3950,7 +3950,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_8089668(); + ScanlineEffect_TransferDma(); } static void sub_81150D8(void) diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 948c288ff..f39745c02 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -95,7 +95,7 @@ bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); u16 SpeciesToPokedexNum(u16 species); -void remove_some_task(void); +void ScanlineEffect_Stop(void); // data and gfx @@ -1278,7 +1278,7 @@ static void sub_81433E0(void) static void sub_8143570(void) { - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/scene/intro.c b/src/scene/intro.c index beceb6e90..d7d772a40 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -873,7 +873,7 @@ static u8 SetUpCopyrightScreen(void) DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); LoadCopyrightGraphics(0, 0x3800, 0); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index bd41ac641..ca4194800 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground) static void VBlankCB(void) { - sub_8089668(); + ScanlineEffect_TransferDma(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -644,7 +644,7 @@ void CB2_InitTitleScreen(void) LZ77UnCompVram(sLegendaryMonTilemap, (void *)(VRAM + 0xC000)); LZ77UnCompVram(sBackdropTilemap, (void *)(VRAM + 0xC800)); LoadPalette(sLegendaryMonPalettes, 0xE0, sizeof(sLegendaryMonPalettes)); - remove_some_task(); + ScanlineEffect_Stop(); ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - sub_8089944(0, 0xA0, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, 0xA0, 4, 4, 0, 4, 1); SetMainCallback2(MainCB2); } break; -- cgit v1.2.3 From beac14a9a0ab072186fa99afcfcc0d844b77a68d Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 12:12:55 -0600 Subject: label more of scanline_effect.c --- src/battle/anim/draw.c | 28 ++++--- src/battle/battle_2.c | 22 +++--- src/battle/battle_transition.c | 148 +++++++++++++++++----------------- src/contest.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/easy_chat_1.c | 6 +- src/easy_chat_2.c | 2 +- src/engine/trainer_card.c | 28 +++---- src/field/field_screen_effect.c | 18 ++--- src/field/overworld.c | 6 +- src/field/use_pokeblock.c | 4 +- src/pokenav_before.c | 2 +- src/scanline_effect.c | 170 +++++++++++++++++++++++----------------- src/scene/evolution_scene.c | 4 +- src/scene/title_screen.c | 4 +- 15 files changed, 234 insertions(+), 212 deletions(-) (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index ac1ae08cb..fc74e3f46 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -21,7 +21,8 @@ static void sub_80D0E8C(struct Sprite* sprite); void sub_80D0C88(u8 taskId) { struct Task* task = &gTasks[taskId]; - struct UnknownTaskStruct sp; + struct ScanlineEffectParams params; + s16 i; task->data[0] = sub_8077FC0(gAnimBankTarget) + 32; task->data[1] = 4; @@ -30,30 +31,31 @@ void sub_80D0C88(u8 taskId) task->data[4] = 0; task->data[5] = 0; task->data[15] = sub_807A100(gAnimBankTarget, 0); + if (GetBankIdentity_permutated(gAnimBankTarget) == 1) { task->data[6] = gBattle_BG1_X; - sp.dest = (u16 *)REG_ADDR_BG1HOFS; + params.dmaDest = (u16 *)REG_ADDR_BG1HOFS; } else { task->data[6] = gBattle_BG2_X; - sp.dest = (u16 *)REG_ADDR_BG2HOFS; + params.dmaDest = (u16 *)REG_ADDR_BG2HOFS; } for (i = task->data[0] - 0x40; i <= task->data[0];i++) { if (i >= 0) { - gUnknown_03004DE0[0][i] = task->data[6] + 0xF0; - gUnknown_03004DE0[1][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[0][i] = task->data[6] + 0xF0; + gScanlineEffectRegBuffers[1][i] = task->data[6] + 0xF0; } } - sp.control = 0xa2600001; - sp.unk8 = 1; - sp.unk9 = 0; - sub_80895F8(sp); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.unk8 = 1; + params.unk9 = 0; + ScanlineEffect_SetParams(params); task->func = sub_80D0D68; } @@ -91,8 +93,8 @@ void sub_80D0D68(u8 taskId) if (task->data[5] >= 0) { - gUnknown_03004DE0[0][task->data[5]] = task->data[6]; - gUnknown_03004DE0[1][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[0][task->data[5]] = task->data[6]; + gScanlineEffectRegBuffers[1][task->data[5]] = task->data[6]; } if (++task->data[3] >= task->data[15]) @@ -178,7 +180,7 @@ _080D0DE0:\n\ ldrsh r0, [r3, r1]\n\ cmp r0, 0\n\ blt _080D0E04\n\ - ldr r2, _080D0E28 @ =gUnknown_03004DE0\n\ + ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\ lsls r0, 1\n\ adds r0, r2\n\ ldrh r1, [r3, 0x14]\n\ @@ -212,7 +214,7 @@ _080D0E22:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_080D0E28: .4byte gUnknown_03004DE0\n\ +_080D0E28: .4byte gScanlineEffectRegBuffers\n\ _080D0E2C: .4byte gScanlineEffect\n\ .syntax divided\n"); } diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index da6c9a2b4..f4fff742c 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -223,17 +223,17 @@ void InitBattle(void) for (i = 0; i < 80; i++) { - gUnknown_03004DE0[0][i] = 0xF0; - gUnknown_03004DE0[1][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_03004DE0[0][i] = 0xFF10; - gUnknown_03004DE0[1][i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } - //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); - sub_80895F8(gUnknown_081F9674); + //ScanlineEffect_SetParams(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + ScanlineEffect_SetParams(gUnknown_081F9674); Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); gBattle_BG0_X = 0; @@ -1073,7 +1073,7 @@ void sub_800FCFC(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void nullsub_36(struct Sprite *sprite) @@ -1201,14 +1201,14 @@ void c2_8011A1C(void) for (i = 0; i < 80; i++) { - gUnknown_03004DE0[0][i] = 0xF0; - gUnknown_03004DE0[1][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0xF0; } for (i = 80; i < 160; i++) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter - gUnknown_03004DE0[0][i] = 0xFF10; - gUnknown_03004DE0[1][i] = 0xFF10; + gScanlineEffectRegBuffers[0][i] = 0xFF10; + gScanlineEffectRegBuffers[1][i] = 0xFF10; } Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 48ef86fa2..843203a1e 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -18,8 +18,6 @@ void sub_807DE10(void); void dp12_8087EA4(void); -extern u16 gUnknown_03005560[]; - extern const struct OamData gFieldOamData_32x32; struct TransitionData @@ -674,7 +672,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160); SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); @@ -695,7 +693,7 @@ static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) task->data[1] += 4; task->data[2] += 8; - sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); if (!gPaletteFade.active) { @@ -711,12 +709,12 @@ static void VBlankCB_Phase2_Transition_Swirl(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Swirl(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -735,7 +733,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) dp12_8087EA4(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); - memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140); SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); @@ -764,7 +762,7 @@ static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += 4224) { u16 var = r4 / 256; - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); } if (!gPaletteFade.active) @@ -778,12 +776,12 @@ static void VBlankCB_Phase2_Transition_Shuffle(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Shuffle(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -815,7 +813,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = 240; + gScanlineEffectRegBuffers[1][i] = 240; } SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); @@ -844,7 +842,7 @@ static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) dst1[i * 32 + j] = *BigPokeballMap | 0xF000; } } - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5], 160); task->tState++; return TRUE; @@ -864,7 +862,7 @@ static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; @@ -884,7 +882,7 @@ static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; @@ -896,7 +894,7 @@ static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) task->data[4] += 8; task->data[5] -= 256; - sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + sub_811D6E8(gScanlineEffectRegBuffers[0], 0, task->data[4], 132, task->data[5] >> 8, 160); if (task->data[5] <= 0) { @@ -921,7 +919,7 @@ static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) if (task->data[1] < 0) task->data[1] = 0; } - sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + sub_811D764(gScanlineEffectRegBuffers[0], 120, 80, task->data[1]); if (task->data[1] == 0) { DmaStop(0); @@ -943,7 +941,7 @@ static void Transition_BigPokeball_Vblank(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; @@ -954,13 +952,13 @@ static void Transition_BigPokeball_Vblank(void) static void VBlankCB0_Phase2_Transition_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BG0HOFS, 0xA2400001); } static void VBlankCB1_Phase2_Transition_BigPokeball(void) { Transition_BigPokeball_Vblank(); - DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Transition_PokeballsTrail(u8 taskID) @@ -1087,7 +1085,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = 0xF3F4; + gScanlineEffectRegBuffers[1][i] = 0xF3F4; } SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); @@ -1104,7 +1102,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); TRANSITION_STRUCT.data[4] += 16; @@ -1132,7 +1130,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; if (TRANSITION_STRUCT.data[5] >= 80) r1 = TRANSITION_STRUCT.data[2], r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); if (var != 0) break; var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); @@ -1148,7 +1146,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) { while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); + gScanlineEffectRegBuffers[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); } } @@ -1163,7 +1161,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); TRANSITION_STRUCT.data[4] -= 16; @@ -1188,10 +1186,10 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) while (1) { - r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + r1 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; if (TRANSITION_STRUCT.data[5] <= 80) r2 = 120, r1 = TRANSITION_STRUCT.data[2]; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); r3 = 0; if (var != 0) break; @@ -1208,7 +1206,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) { while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); + gScanlineEffectRegBuffers[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); } } @@ -1228,7 +1226,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) r2 = 120, r3 = TRANSITION_STRUCT.data[2]; if (TRANSITION_STRUCT.data[2] >= 120) r2 = 0, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); @@ -1253,12 +1251,12 @@ static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - REG_WIN0H = gUnknown_03004DE0[1][0]; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void Phase2Task_Transition_Ripple(u8 taskID) @@ -1275,7 +1273,7 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_16; } SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); @@ -1308,7 +1306,7 @@ static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) // todo: fix the asm s16 var = r4 >> 8; asm(""); - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + gScanlineEffectRegBuffers[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); asm(""); } @@ -1329,12 +1327,12 @@ static void VBlankCB_Phase2_Transition_Ripple(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); } static void HBlankCB_Phase2_Transition_Ripple(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1VOFS = var; REG_BG2VOFS = var; REG_BG3VOFS = var; @@ -1359,7 +1357,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 242; + gScanlineEffectRegBuffers[1][i] = 242; } SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); @@ -1375,7 +1373,7 @@ static bool8 Phase2_Transition_Wave_Func2(struct Task* task) bool8 nextFunc; TRANSITION_STRUCT.VBlank_DMA = 0; - toStore = gUnknown_03004DE0[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->data[2]; task->data[2] += 16; task->data[1] += 8; @@ -1411,11 +1409,11 @@ static void VBlankCB_Phase2_Transition_Wave(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } #define tMugshotOpponentID data[13] @@ -1474,7 +1472,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 0xF0F1; + gScanlineEffectRegBuffers[1][i] = 0xF0F1; } SetVBlankCallback(VBlankCB0_Phase2_Mugshots); @@ -1519,7 +1517,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - toStore = gUnknown_03004DE0[0]; + toStore = gScanlineEffectRegBuffers[0]; r5 = task->data[1]; task->data[1] += 0x10; @@ -1565,7 +1563,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + for (i = 0, toStore = gScanlineEffectRegBuffers[0]; i < 160; i++, toStore++) { *toStore = 0xF0; } @@ -1608,8 +1606,8 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; SetVBlankCallback(NULL); DmaStop(0); - memset(gUnknown_03004DE0[0], 0, 0x140); - memset(gUnknown_03004DE0[1], 0, 0x140); + memset(gScanlineEffectRegBuffers[0], 0, 0x140); + memset(gScanlineEffectRegBuffers[1], 0, 0x140); REG_WIN0H = 0xF0; REG_BLDY = 0; task->tState++; @@ -1642,15 +1640,15 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task) { s16 index1 = 0x50 - i; s16 index2 = 0x50 + i; - if (gUnknown_03004DE0[0][index1] <= 15) + if (gScanlineEffectRegBuffers[0][index1] <= 15) { r6 = TRUE; - gUnknown_03004DE0[0][index1]++; + gScanlineEffectRegBuffers[0][index1]++; } - if (gUnknown_03004DE0[0][index2] <= 15) + if (gScanlineEffectRegBuffers[0][index2] <= 15) { r6 = TRUE; - gUnknown_03004DE0[0][index2]++; + gScanlineEffectRegBuffers[0][index2]++; } } } @@ -1678,7 +1676,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; task->data[3]++; - memset(gUnknown_03004DE0[0], task->data[3], 0x140); + memset(gScanlineEffectRegBuffers[0], task->data[3], 0x140); if (task->data[3] > 15) task->tState++; @@ -1699,12 +1697,12 @@ static void VBlankCB0_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BG0VOFS = TRANSITION_STRUCT.field_1C; REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Mugshots(void) @@ -1712,9 +1710,9 @@ static void VBlankCB1_Phase2_Mugshots(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA != 0) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; - DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); + DmaSet(0, gScanlineEffectRegBuffers[1], ®_BLDY, 0xA2400001); } static void HBlankCB_Phase2_Mugshots(void) @@ -1856,8 +1854,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; - gUnknown_03004DE0[1][160 + i] = 0xF0; + gScanlineEffectRegBuffers[1][i] = TRANSITION_STRUCT.field_14; + gScanlineEffectRegBuffers[1][160 + i] = 0xF0; } REG_IE |= INTR_FLAG_HBLANK; @@ -1886,8 +1884,8 @@ static bool8 Phase2_Transition_Slice_Func2(struct Task* task) for (i = 0; i < 160; i++) { - u16* storeLoc1 = &gUnknown_03004DE0[0][i]; - u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + u16* storeLoc1 = &gScanlineEffectRegBuffers[0][i]; + u16* storeLoc2 = &gScanlineEffectRegBuffers[0][i + 160]; if (1 & i) { *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; @@ -1923,13 +1921,13 @@ static void VBlankCB_Phase2_Transition_Slice(void) REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); - DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void HBlankCB_Phase2_Transition_Slice(void) { - u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + u16 var = gScanlineEffectRegBuffers[1][REG_VCOUNT]; REG_BG1HOFS = var; REG_BG2HOFS = var; REG_BG3HOFS = var; @@ -1955,8 +1953,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[1][i] = 0; - gUnknown_03004DE0[1][i + 160] = 0xF0; + gScanlineEffectRegBuffers[1][i] = 0; + gScanlineEffectRegBuffers[1][i + 160] = 0xF0; } REG_IE |= INTR_FLAG_HBLANK; @@ -2038,8 +2036,8 @@ static void VBlankCB0_Phase2_Transition_WhiteFade(void) REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.field_6; if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); - DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 640); + DmaSet(0, &gScanlineEffectRegBuffers[1][160], ®_WIN0H, 0xA2400001); } static void VBlankCB1_Phase2_Transition_WhiteFade(void) @@ -2055,7 +2053,7 @@ static void VBlankCB1_Phase2_Transition_WhiteFade(void) static void HBlankCB_Phase2_Transition_WhiteFade(void) { - REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BLDY = gScanlineEffectRegBuffers[1][REG_VCOUNT]; } static void sub_811CFD0(struct Sprite* sprite) @@ -2069,8 +2067,8 @@ static void sub_811CFD0(struct Sprite* sprite) else { u16 i; - u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; - u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + u16* ptr1 = &gScanlineEffectRegBuffers[0][sprite->pos1.y]; + u16* ptr2 = &gScanlineEffectRegBuffers[0][sprite->pos1.y + 160]; for (i = 0; i < 20; i++) { ptr1[i] = sprite->data[0] >> 8; @@ -2168,10 +2166,10 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task) for (i = 0; i < 160; i++) { - gUnknown_03004DE0[0][i] = 0xF0; + gScanlineEffectRegBuffers[0][i] = 0xF0; } - CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + CpuSet(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0xA0); SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); task->tState++; @@ -2200,8 +2198,8 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task) for (i = 0, nextFunc = FALSE; i < 16; i++) { - s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; - s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; + s16 r3 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] & 0xFF; if (task->data[2] == 0) { if (r3 < TRANSITION_STRUCT.data[2]) @@ -2216,7 +2214,7 @@ static bool8 Phase2_Transition_Shards_Func3(struct Task* task) if (r4 <= r3) r4 = r3; } - gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); + gScanlineEffectRegBuffers[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); if (nextFunc) { task->tState++; @@ -2263,12 +2261,12 @@ static void VBlankCB_Phase2_Transition_Shards(void) DmaStop(0); VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) - DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + DmaCopy16(3, gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; REG_WIN0V = TRANSITION_STRUCT.WIN0V; - REG_WIN0H = gUnknown_03004DE0[1][0]; - DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); + REG_WIN0H = gScanlineEffectRegBuffers[1][0]; + DmaSet(0, gScanlineEffectRegBuffers[1], ®_WIN0H, 0xA2400001); } static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) diff --git a/src/contest.c b/src/contest.c index e39ce3daa..e41838cb1 100644 --- a/src/contest.c +++ b/src/contest.c @@ -635,7 +635,7 @@ void ContestVBlankCallback(void) TransferPlttBuffer(); LoadOam(); ProcessSpriteCopyRequests(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80ABB70(u8 taskId) diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 85a8800e7..7c250b584 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -516,7 +516,7 @@ static void sub_80AA090(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_80AA10C(void) diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 7ca647b93..3bed951d6 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -43,7 +43,7 @@ const u16 gBerryMasterWifePhrases[][2] = // const pointer to gEasyChatStruct-> easy_chat might be two separate files. struct Shared1000 *const gEasyChatStruct = (struct Shared1000 *)(gSharedMem + 0x1000); -const struct UnknownTaskStruct gUnknown_083DB698 = +const struct ScanlineEffectParams gUnknown_083DB698 = { ®_BG3VOFS, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -300,7 +300,7 @@ void sub_80E62F8(void) dp12_8087EA4(); ScanlineEffect_Stop(); sub_80EAD08(); - sub_80895F8(gUnknown_083DB698); + ScanlineEffect_SetParams(gUnknown_083DB698); FreeSpriteTileRanges(); FreeAllSpritePalettes(); break; @@ -655,7 +655,7 @@ void sub_80E6A6C(void) ProcessSpriteCopyRequests(); sub_80EAC5C(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80E6A88(void) diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 0f12b978d..e7b65bef0 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gUnknown_03004DE0[gScanlineEffect.srcBank]; + r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index f1b115610..be22b24c4 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -256,7 +256,7 @@ static void sub_8093254(void) ewram0_2.var_5 ^= 1; } if (ewram0_2.var_4) - DmaCopy16(3, &gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 0x140); + DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); } static void sub_80932AC(Callback callBack) @@ -732,7 +732,7 @@ bool8 sub_8093AA0(struct Task *task) ewram0_2.var_4 = FALSE; dp12_8087EA4(); for (i = 0; i < 0xA0; i++) - gUnknown_03004DE0[1][i] = -4; + gScanlineEffectRegBuffers[1][i] = -4; SetHBlankCallback(sub_8093D7C); ewram0_2.var_4 = TRUE; task->data[0]++; @@ -768,7 +768,7 @@ bool8 sub_8093AF0(struct Task *task) for (i = 0; i < r7; i++) { - gUnknown_03004DE0.filler0[i] = -4 - (u32)i; + gScanlineEffectRegBuffers.filler0[i] = -4 - (u32)i; } //_08093B74 for (; i < r9; i++) @@ -776,10 +776,10 @@ bool8 sub_8093AF0(struct Task *task) u16 var = r6 >> 16; r6 += r5; r5 -= sp0; - gUnknown_03004DE0.filler0[i] = -4 + var; + gScanlineEffectRegBuffers.filler0[i] = -4 + var; } for (; i < 160; i++) - gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16); + gScanlineEffectRegBuffers.filler0[i] = -4 + (u16)(r10 >> 16); ewram0_2.var_4 = 1; if (task->data[1] > 0x4A) task->data[0]++; @@ -840,7 +840,7 @@ _08093B18:\n\ movs r3, 0\n\ cmp r3, r7\n\ bcs _08093B74\n\ - ldr r2, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r2, _08093C04 @ =gScanlineEffectRegBuffers\n\ mov r12, r2\n\ ldr r0, _08093C08 @ =0x0000fffc\n\ adds r4, r0, 0\n\ @@ -866,7 +866,7 @@ _08093B74:\n\ lsrs r7, r4, 16\n\ cmp r2, r0\n\ bge _08093BAE\n\ - ldr r0, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r0, _08093C04 @ =gScanlineEffectRegBuffers\n\ mov r9, r0\n\ ldr r4, _08093C08 @ =0x0000fffc\n\ mov r12, r4\n\ @@ -894,7 +894,7 @@ _08093BAE:\n\ asrs r0, 16\n\ cmp r0, 0x9F\n\ bgt _08093BD4\n\ - ldr r4, _08093C04 @ =gUnknown_03004DE0\n\ + ldr r4, _08093C04 @ =gScanlineEffectRegBuffers\n\ ldr r0, _08093C08 @ =0x0000fffc\n\ adds r2, r1, r0\n\ _08093BBE:\n\ @@ -934,7 +934,7 @@ _08093BEA:\n\ .align 2, 0\n\ _08093BFC: .4byte gSharedMem\n\ _08093C00: .4byte 0xffff0000\n\ -_08093C04: .4byte gUnknown_03004DE0\n\ +_08093C04: .4byte gScanlineEffectRegBuffers\n\ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } @@ -1000,7 +1000,7 @@ _08093C5C:\n\ movs r3, 0\n\ cmp r3, r7\n\ bcs _08093CB8\n\ - ldr r2, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r2, _08093D48 @ =gScanlineEffectRegBuffers\n\ mov r12, r2\n\ ldr r0, _08093D4C @ =0x0000fffc\n\ adds r4, r0, 0\n\ @@ -1026,7 +1026,7 @@ _08093CB8:\n\ lsrs r7, r4, 16\n\ cmp r2, r0\n\ bge _08093CF2\n\ - ldr r0, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r0, _08093D48 @ =gScanlineEffectRegBuffers\n\ mov r9, r0\n\ ldr r3, _08093D4C @ =0x0000fffc\n\ mov r12, r3\n\ @@ -1054,7 +1054,7 @@ _08093CF2:\n\ asrs r0, 16\n\ cmp r0, 0x9F\n\ bgt _08093D18\n\ - ldr r4, _08093D48 @ =gUnknown_03004DE0\n\ + ldr r4, _08093D48 @ =gScanlineEffectRegBuffers\n\ ldr r0, _08093D4C @ =0x0000fffc\n\ adds r2, r1, r0\n\ _08093D02:\n\ @@ -1094,7 +1094,7 @@ _08093D2E:\n\ .align 2, 0\n\ _08093D40: .4byte gSharedMem\n\ _08093D44: .4byte 0xffff0000\n\ -_08093D48: .4byte gUnknown_03004DE0\n\ +_08093D48: .4byte gScanlineEffectRegBuffers\n\ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } @@ -1113,7 +1113,7 @@ bool8 sub_8093D50(struct Task *task) void sub_8093D7C(void) { - u16 bgVOffset = gUnknown_03004DE0[1][REG_VCOUNT & 0xFF]; + u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF]; REG_BG0VOFS = bgVOffset; REG_BG1VOFS = bgVOffset; diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index b5141e7ea..bc70e1a63 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -13,7 +13,7 @@ const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; const s32 gMaxFlashLevel = 4; -const static struct UnknownTaskStruct gUnknown_0839ACEC = +const static struct ScanlineEffectParams gUnknown_0839ACEC = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -64,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) @@ -140,8 +140,8 @@ void sub_80815E0(u8 a1) { if (a1) { - sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]); - CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); + sub_8081398(&gScanlineEffectRegBuffers[0][0], 120, 80, gUnknown_0839ACDC[a1]); + CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); } } @@ -208,10 +208,10 @@ static void sub_80816A8(u8 taskId) REG_BLDALPHA = 1804; REG_WININ = 63; REG_WINOUT = 30; - sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1); - CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480); - //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); - sub_80895F8(gUnknown_0839ACEC); + sub_8081398(&gScanlineEffectRegBuffers[0][0], data[2], data[3], 1); + CpuFastSet(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 480); + //ScanlineEffect_SetParams(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]); + ScanlineEffect_SetParams(gUnknown_0839ACEC); data[0] = 1; break; case 1: diff --git a/src/field/overworld.c b/src/field/overworld.c index e90fc6396..2590852af 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -142,7 +142,7 @@ const struct UCoords32 gUnknown_0821664C[] = { 1, -1}, }; -const struct UnknownTaskStruct gUnknown_08216694 = +const struct ScanlineEffectParams gUnknown_08216694 = { (void *)REG_ADDR_WIN0H, ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1, @@ -1410,7 +1410,7 @@ void VBlankCB_Field(void) { LoadOam(); ProcessSpriteCopyRequests(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); sub_8057A58(); TransferPlttBuffer(); sub_8072E74(); @@ -1422,7 +1422,7 @@ void sub_8054814(void) if (val) { sub_80815E0(val); - sub_80895F8(gUnknown_08216694); + ScanlineEffect_SetParams(gUnknown_08216694); } } diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 4af7be386..42020c49a 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -117,7 +117,7 @@ static void sub_81365A0(void); static void sub_81365C8(void); static void sub_8136638(void); static void sub_81368A4(void); -void ScanlineEffect_TransferDma(void); +void ScanlineEffect_InitHBlankDmaTransfer(void); static void sub_8136B44(void); static u8 sub_81370E4(u8); static void sub_8136BB8(void); @@ -194,7 +194,7 @@ static void sub_8136264(void) ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5CDC(6); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 7439fc077..b31be2ce1 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -436,7 +436,7 @@ void sub_80EBD4C() ProcessSpriteCopyRequests(); TransferPlttBuffer(); sub_80F5BF0(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } void sub_80EBD68() diff --git a/src/scanline_effect.c b/src/scanline_effect.c index e9cf0d02a..0fa5b024d 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -4,27 +4,26 @@ #include "trig.h" #include "scanline_effect.h" -// Control value to ransfer a single 16-bit value at HBlank -#define HBLANK_DMA_CONTROL_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1) +static void CopyValue16Bit(void); +static void CopyValue32Bit(void); -static void sub_80896F4(void); -static void sub_8089714(void); - -extern u16 gUnknown_030041B0; -extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; -extern u16 gBattle_BG2_Y; -extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_Y; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B8; -extern u8 gUnknown_0202FFA4; +EWRAM_DATA static u8 gUnknown_0202FFA4 = 0; -extern struct ScanlineEffect gScanlineEffect; +struct ScanlineEffect gScanlineEffect; -// Is this a struct? -extern u16 gUnknown_03004DE0[][0x3C0]; +// Per-scanline register values. +// This is double buffered so that it can be safely written to at any time +// without overwriting the buffer that the DMA is currently reading +u16 gScanlineEffectRegBuffers[2][0x3C0]; void ScanlineEffect_Stop(void) { @@ -39,11 +38,11 @@ void ScanlineEffect_Stop(void) void dp12_8087EA4(void) { - CpuFill16(0, gUnknown_03004DE0, 0x780 * 2); - gScanlineEffect.src[0] = 0; - gScanlineEffect.src[1] = 0; - gScanlineEffect.dest = 0; - gScanlineEffect.unkC = 0; + CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); + gScanlineEffect.src[0] = NULL; + gScanlineEffect.src[1] = NULL; + gScanlineEffect.dmaDest = NULL; + gScanlineEffect.dmaControl = 0; gScanlineEffect.srcBank = 0; gScanlineEffect.unk15 = 0; gScanlineEffect.unk16 = 0; @@ -51,31 +50,35 @@ void dp12_8087EA4(void) gScanlineEffect.taskId = 0xFF; } -void sub_80895F8(struct UnknownTaskStruct unk) +void ScanlineEffect_SetParams(struct ScanlineEffectParams params) { - if (unk.control == HBLANK_DMA_CONTROL_16BIT) // 16 bit + if (params.dmaControl == SCANLINE_EFFECT_DMACNT_16BIT) // 16-bit { - gScanlineEffect.src[0] = &gUnknown_03004DE0[0][1]; - gScanlineEffect.src[1] = &gUnknown_03004DE0[1][1]; - gScanlineEffect.unk10 = sub_80896F4; + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.src[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.src[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; } else // assume 32-bit { - gScanlineEffect.src[0] = &gUnknown_03004DE0[0][2]; - gScanlineEffect.src[1] = &gUnknown_03004DE0[1][2]; - gScanlineEffect.unk10 = sub_8089714; + // Set the DMA src to the value for the second scanline because the + // first DMA transfer occurs in HBlank *after* the first scanline is drawn + gScanlineEffect.src[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.src[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; } - gScanlineEffect.unkC = unk.control; - gScanlineEffect.dest = unk.dest; - gScanlineEffect.unk15 = unk.unk8; - gScanlineEffect.unk16 = unk.unk9; - gScanlineEffect.unk17 = unk.unk9; + gScanlineEffect.dmaControl = params.dmaControl; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.unk15 = params.unk8; + gScanlineEffect.unk16 = params.unk9; + gScanlineEffect.unk17 = params.unk9; } -void ScanlineEffect_TransferDma(void) +void ScanlineEffect_InitHBlankDmaTransfer(void) { - if (gScanlineEffect.unk15) + if (gScanlineEffect.unk15 != 0) { if (gScanlineEffect.unk15 == 3) { @@ -86,28 +89,44 @@ void ScanlineEffect_TransferDma(void) else { DmaStop(0); - DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dest, gScanlineEffect.unkC); - gScanlineEffect.unk10(); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer gScanlineEffect.srcBank ^= 1; } } } -static void sub_80896F4(void) +// These two functions are used to copy the register for the first scanline, +// depending whether it is a 16-bit register or a 32-bit register. + +static void CopyValue16Bit(void) { - u16 *dest = (u16 *)gScanlineEffect.dest; - u16 *src = (u16 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; + u16 *dest = (u16 *)gScanlineEffect.dmaDest; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + *dest = *src; } -static void sub_8089714(void) +static void CopyValue32Bit(void) { - u32 *dest = (u32 *)gScanlineEffect.dest; - u32 *src = (u32 *)&gUnknown_03004DE0[gScanlineEffect.srcBank]; + u32 *dest = (u32 *)gScanlineEffect.dmaDest; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + *dest = *src; } -static void task00_for_dp12(u8 taskId) +#define tStartLine data[0] +#define tEndLine data[1] +#define framesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] + +static void TaskFunc_UpdateWavePerFrame(u8 taskId) { int value = 0; @@ -120,7 +139,7 @@ static void task00_for_dp12(u8 taskId) { if (gTasks[taskId].data[7]) { - switch (gTasks[taskId].data[6]) + switch (gTasks[taskId].tRegOffset) { case 0x0: value = gBattle_BG0_X; @@ -148,15 +167,16 @@ static void task00_for_dp12(u8 taskId) break; } } - if (gTasks[taskId].data[4]) + if (gTasks[taskId].framesUntilMove != 0) { int i; int offset; - gTasks[taskId].data[4]--; + + gTasks[taskId].framesUntilMove--; offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } } @@ -164,18 +184,17 @@ static void task00_for_dp12(u8 taskId) { int i; int offset; - gTasks[taskId].data[4] = gTasks[taskId].data[5]; + + gTasks[taskId].framesUntilMove = gTasks[taskId].tDelayInterval; offset = gTasks[taskId].data[3] + 320; - for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++) + for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gUnknown_03004DE0[gScanlineEffect.srcBank][i] = gUnknown_03004DE0[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } gTasks[taskId].data[3]++; if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - { gTasks[taskId].data[3] = 0; - } } } } @@ -193,44 +212,47 @@ static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) } } -u8 ScanlineEffect_InitWave(u8 a1, u8 a2, u8 frequency, u8 amplitude, u8 a5, u8 a6, u8 a7) +// Initializes a background "wave" effect that affects scanlines startLine (inclusive) to endLine (exclusive). +// 'frequency' and 'amplitude' control the frequency and amplitude of the wave. +// 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. +// 'regOffset' is the offset of the video register to modify. +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7) { int i; int offset; - struct UnknownTaskStruct unk; + struct ScanlineEffectParams params; u8 taskId; dp12_8087EA4(); - unk.dest = (void *)(REG_ADDR_BG0HOFS + a6); - unk.control = HBLANK_DMA_CONTROL_16BIT; - unk.unk8 = 1; - unk.unk9 = 0; - - sub_80895F8(unk); + params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); + params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + params.unk8 = 1; + params.unk9 = 0; + ScanlineEffect_SetParams(params); - taskId = CreateTask(task00_for_dp12, 0); + taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); - gTasks[taskId].data[0] = a1; - gTasks[taskId].data[1] = a2; - gTasks[taskId].data[2] = 256 / frequency; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = a5; - gTasks[taskId].data[5] = a5; - gTasks[taskId].data[6] = a6; - gTasks[taskId].data[7] = a7; + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].data[2] = 256 / frequency; + gTasks[taskId].data[3] = 0; + gTasks[taskId].framesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].data[7] = a7; gScanlineEffect.taskId = taskId; gUnknown_0202FFA4 = 0; - GenerateWave(&gUnknown_03004DE0[0][320], frequency, amplitude, a2 - a1); + GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); offset = 320; - for (i = a1; i < a2; i++) + for (i = startLine; i < endLine; i++) { - gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset]; - gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset]; + gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; + gScanlineEffectRegBuffers[1][i] = gScanlineEffectRegBuffers[0][offset]; offset++; } diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 54af6013f..aeea3e292 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -3934,7 +3934,7 @@ static void VBlankCB_EvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void VBlankCB_TradeEvolutionScene(void) @@ -3950,7 +3950,7 @@ static void VBlankCB_TradeEvolutionScene(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); } static void sub_81150D8(void) diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index ca4194800..2de3554fe 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -598,7 +598,7 @@ static void StartPokemonLogoShine(bool8 flashBackground) static void VBlankCB(void) { - ScanlineEffect_TransferDma(); + ScanlineEffect_InitHBlankDmaTransfer(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - ScanlineEffect_InitWave(0, 0xA0, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, 4, 1); SetMainCallback2(MainCB2); } break; -- cgit v1.2.3 From bb2c758e8fa730b2bd19b92119a2bd7e37af57f8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 13:18:31 -0600 Subject: finish labeling scanline_effect.c --- src/battle/anim/draw.c | 4 +- src/battle/battle_2.c | 20 ++-- src/battle/battle_4.c | 4 +- src/battle/battle_controller_player.c | 4 +- src/battle/battle_transition.c | 22 ++-- src/battle/reshow_battle_screen.c | 10 +- src/contest.c | 14 +-- src/debug/matsuda_debug_menu.c | 14 +-- src/easy_chat_1.c | 2 +- src/easy_chat_2.c | 2 +- src/engine/option_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/trainer_card.c | 2 +- src/field/field_screen_effect.c | 6 +- src/field/overworld.c | 2 +- src/field/start_menu.c | 2 +- src/pokemon/pokemon_summary_screen.c | 20 ++-- src/scanline_effect.c | 187 +++++++++++++++++----------------- src/scene/evolution_scene.c | 24 ++--- src/scene/hall_of_fame.c | 2 +- src/scene/title_screen.c | 2 +- 21 files changed, 174 insertions(+), 173 deletions(-) (limited to 'src') diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c index fc74e3f46..f9e505bf2 100755 --- a/src/battle/anim/draw.c +++ b/src/battle/anim/draw.c @@ -53,8 +53,8 @@ void sub_80D0C88(u8 taskId) } params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; - params.unk8 = 1; - params.unk9 = 0; + params.initState = 1; + params.unused9 = 0; ScanlineEffect_SetParams(params); task->func = sub_80D0D68; } diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index f4fff742c..990535b4e 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -108,9 +108,9 @@ extern u16 gUnknown_02024DE8; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern struct Window gUnknown_030041D0; extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; @@ -219,7 +219,7 @@ void InitBattle(void) REG_WINOUT = 0; gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { @@ -242,8 +242,8 @@ void InitBattle(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; gBattleTerrain = BattleSetup_GetTerrain(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); @@ -1064,8 +1064,8 @@ void sub_800FCFC(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; REG_WIN0H = gBattle_WIN0H; REG_WIN0V = gBattle_WIN0V; REG_WIN1H = gBattle_WIN1H; @@ -1197,7 +1197,7 @@ void c2_8011A1C(void) REG_WINOUT = 0; gBattle_WIN0H = 0xF0; gBattle_WIN0V = 0x5051; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 80; i++) { @@ -1218,8 +1218,8 @@ void c2_8011A1C(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 164329c1b..ae8f94130 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -93,7 +93,7 @@ extern u16 gChosenMove; //last used move in battle extern u8 gBankInMenu; extern u8 gActionForBanks[4]; extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentTurnActionNumber; extern u16 gTrappingMoves[]; @@ -17229,7 +17229,7 @@ static void atkF2_displaydexinfo(void) LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000)); LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60); REG_BG3CNT = 0x5a0b; - gUnknown_030041B0 = 0x100; + gBattle_BG3_X = 0x100; BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0); gBattleCommunication[0]++; } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 489581132..a5f833b6c 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -67,9 +67,9 @@ extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gAnimMoveTurn; extern u8 gUnknown_02038470[]; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_X; diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index 843203a1e..f7cdc0694 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -16,7 +16,7 @@ #include "scanline_effect.h" void sub_807DE10(void); -void dp12_8087EA4(void); +void ScanlineEffect_Clear(void); extern const struct OamData gFieldOamData_32x32; @@ -670,7 +670,7 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) u16 savedIME; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); sub_811D6E8(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_14, 0, 2, 0, 160); @@ -730,7 +730,7 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) u16 savedIME; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); memset(gScanlineEffectRegBuffers[1], TRANSITION_STRUCT.field_16, 0x140); @@ -798,7 +798,7 @@ static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->data[1] = 16; task->data[2] = 0; @@ -1076,7 +1076,7 @@ static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 0; TRANSITION_STRUCT.WINOUT = 63; @@ -1269,7 +1269,7 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 160; i++) { @@ -1348,7 +1348,7 @@ static bool8 Phase2_Transition_Wave_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 63; TRANSITION_STRUCT.WINOUT = 0; @@ -1460,7 +1460,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) u8 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); Mugshots_CreateOpponentPlayerSprites(task); task->data[1] = 0; @@ -1844,7 +1844,7 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); task->data[2] = 256; task->data[3] = 1; @@ -1943,7 +1943,7 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.BLDCNT = 0xBF; TRANSITION_STRUCT.BLDY = 0; @@ -2158,7 +2158,7 @@ static bool8 Phase2_Transition_Shards_Func1(struct Task* task) u16 i; sub_811D658(); - dp12_8087EA4(); + ScanlineEffect_Clear(); TRANSITION_STRUCT.WININ = 0x3F; TRANSITION_STRUCT.WINOUT = 0; diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c index 83dad5f60..a78cb20df 100644 --- a/src/battle/reshow_battle_screen.c +++ b/src/battle/reshow_battle_screen.c @@ -15,9 +15,9 @@ extern u16 gBattle_BG2_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern u16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG0_Y; extern u8 gReservedSpritePaletteCount; extern u8 gActionSelectionCursor[4]; @@ -77,7 +77,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void) switch (gReshowState) { case 0: - dp12_8087EA4(); + ScanlineEffect_Clear(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); ResetPaletteFade(); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); @@ -87,8 +87,8 @@ static void CB2_ReshowBattleScreenAfterMenu(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; break; case 1: { diff --git a/src/contest.c b/src/contest.c index e41838cb1..875fe4502 100644 --- a/src/contest.c +++ b/src/contest.c @@ -51,9 +51,9 @@ extern u8 gBanksBySide[]; extern u8 gObjectBankIDs[]; extern u8 gIsLinkContest; extern u8 gContestPlayerMonIndex; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern s16 gBattle_BG1_Y; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_WIN1H; extern struct Window gUnknown_03004210; extern u16 gBattle_WIN0V; @@ -330,8 +330,8 @@ void ResetContestGpuRegs(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; gBattle_WIN0H = 0; gBattle_WIN0V = 0; gBattle_WIN1H = 0; @@ -412,7 +412,7 @@ void CB2_StartContest(void) SetVBlankCallback(NULL); SetUpContestWindow(); ResetContestGpuRegs(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetPaletteFade(); gPaletteFade.bufferTransferDisabled = TRUE; DmaClearLarge32(3, (void *)VRAM, VRAM_SIZE, 0x1000); @@ -626,8 +626,8 @@ void ContestVBlankCallback(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; REG_WIN0H = gBattle_WIN0H; REG_WIN0V = gBattle_WIN0V; REG_WIN1H = gBattle_WIN1H; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 7c250b584..1da337b04 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -35,8 +35,8 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; extern struct Window gUnknown_03004210; extern u8 (*gCallback_03004AE8)(void); @@ -463,8 +463,8 @@ static void sub_80A9F50(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; } static void sub_80A9FE4(void) @@ -511,8 +511,8 @@ static void sub_80AA090(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -528,7 +528,7 @@ static void sub_80AA10C(void) gPaletteFade.bufferTransferDisabled = 1; SetVBlankCallback(0); sub_80A9F50(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetPaletteFade(); ResetSpriteData(); ResetTasks(); diff --git a/src/easy_chat_1.c b/src/easy_chat_1.c index 3bed951d6..4b64846f9 100644 --- a/src/easy_chat_1.c +++ b/src/easy_chat_1.c @@ -297,7 +297,7 @@ void sub_80E62F8(void) SetVBlankCallback(0); ResetPaletteFade(); ResetSpriteData(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ScanlineEffect_Stop(); sub_80EAD08(); ScanlineEffect_SetParams(gUnknown_083DB698); diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index e7b65bef0..dc8bddd5a 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2053,7 +2053,7 @@ void sub_80EAD08(void) u16 r2; u16 i; - r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + r4 = gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; r4 += 88; r2 = (gEasyChatStruct->unk1BA - 88) & 0xFF; diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index cb5f66649..1fc78efaa 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -3,12 +3,12 @@ #include "main.h" #include "menu.h" #include "palette.h" +#include "scanline_effect.h" #include "sprite.h" #include "strings2.h" #include "task.h" extern void SetPokemonCryStereo(u32 val); -extern void ScanlineEffect_Stop(void); //Task data enum { diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index d077bc670..a8b49a8eb 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -439,7 +439,7 @@ void CB2_InitResetRtcScreen(void) ResetOamRange(0, 128); LoadOam(); ScanlineEffect_Stop(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetSpriteData(); ResetTasks(); ResetPaletteFade(); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index be22b24c4..ab43ac716 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -730,7 +730,7 @@ bool8 sub_8093AA0(struct Task *task) u32 i; ewram0_2.var_4 = FALSE; - dp12_8087EA4(); + ScanlineEffect_Clear(); for (i = 0; i < 0xA0; i++) gScanlineEffectRegBuffers[1][i] = -4; SetHBlankCallback(sub_8093D7C); diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index bc70e1a63..61301c5a9 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -64,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gScanlineEffectRegBuffers[gScanlineEffect.srcBank][0], data[1], data[2], data[3]); + sub_8081398(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) @@ -85,7 +85,7 @@ static void sub_8081424(u8 taskId) } break; case 2: - dp12_8087EA4(); + ScanlineEffect_Clear(); DestroyTask(taskId); break; } diff --git a/src/field/overworld.c b/src/field/overworld.c index 2590852af..86b0a5dac 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1731,7 +1731,7 @@ void sub_8054D4C(u32 a1) ResetTasks(); ResetSpriteData(); ResetPaletteFade(); - dp12_8087EA4(); + ScanlineEffect_Clear(); ResetCameraUpdateInfo(); InstallCameraPanAheadCallback(); sub_805C7C4(0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 6017f56bf..d6881cb01 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -771,7 +771,7 @@ static bool32 sub_80719FC(u8 *step) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - dp12_8087EA4(); + ScanlineEffect_Clear(); break; case 2: Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index ec327796a..bf8306fc0 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -123,12 +123,12 @@ extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8); extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gUnknown_020384F0; extern u8 gUnknown_08208238[]; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; -extern u16 gUnknown_030041B0; +extern u16 gBattle_BG3_X; extern TaskFunc gUnknown_03005CF0; extern struct Sprite *gUnknown_020384F4; extern struct SpriteTemplate gUnknown_02024E8C; @@ -586,8 +586,8 @@ void sub_809D85C(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); @@ -813,11 +813,11 @@ bool8 sub_809DA84(void) case 20: if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - gUnknown_030041B0 = 256; + gBattle_BG3_X = 256; } else { - gUnknown_030041B0 = 0; + gBattle_BG3_X = 0; } gMain.state++; @@ -872,8 +872,8 @@ static void sub_809DE64(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 0; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; @@ -2176,11 +2176,11 @@ void sub_809F43C(u8 taskId) pssData.loadGfxState = 0; if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG)) { - gUnknown_030041B0 = 256; + gBattle_BG3_X = 256; } else { - gUnknown_030041B0 = 0; + gBattle_BG3_X = 0; } gMain.state++; diff --git a/src/scanline_effect.c b/src/scanline_effect.c index 0fa5b024d..b4de0689f 100644 --- a/src/scanline_effect.c +++ b/src/scanline_effect.c @@ -13,10 +13,10 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; -EWRAM_DATA static u8 gUnknown_0202FFA4 = 0; +EWRAM_DATA static u8 sShouldStopWaveTask = FALSE; struct ScanlineEffect gScanlineEffect; @@ -27,27 +27,27 @@ u16 gScanlineEffectRegBuffers[2][0x3C0]; void ScanlineEffect_Stop(void) { - gScanlineEffect.unk15 = 0; + gScanlineEffect.state = 0; DmaStop(0); - if (gScanlineEffect.taskId != 0xFF) + if (gScanlineEffect.waveTaskId != 0xFF) { - DestroyTask(gScanlineEffect.taskId); - gScanlineEffect.taskId = 0xFF; + DestroyTask(gScanlineEffect.waveTaskId); + gScanlineEffect.waveTaskId = 0xFF; } } -void dp12_8087EA4(void) +void ScanlineEffect_Clear(void) { CpuFill16(0, gScanlineEffectRegBuffers, sizeof(gScanlineEffectRegBuffers)); - gScanlineEffect.src[0] = NULL; - gScanlineEffect.src[1] = NULL; + gScanlineEffect.dmaSrcBuffers[0] = NULL; + gScanlineEffect.dmaSrcBuffers[1] = NULL; gScanlineEffect.dmaDest = NULL; gScanlineEffect.dmaControl = 0; - gScanlineEffect.srcBank = 0; - gScanlineEffect.unk15 = 0; - gScanlineEffect.unk16 = 0; - gScanlineEffect.unk17 = 0; - gScanlineEffect.taskId = 0xFF; + gScanlineEffect.srcBuffer = 0; + gScanlineEffect.state = 0; + gScanlineEffect.unused16 = 0; + gScanlineEffect.unused17 = 0; + gScanlineEffect.waveTaskId = 0xFF; } void ScanlineEffect_SetParams(struct ScanlineEffectParams params) @@ -56,48 +56,49 @@ void ScanlineEffect_SetParams(struct ScanlineEffectParams params) { // Set the DMA src to the value for the second scanline because the // first DMA transfer occurs in HBlank *after* the first scanline is drawn - gScanlineEffect.src[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; - gScanlineEffect.src[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.dmaSrcBuffers[0] = (u16 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u16 *)gScanlineEffectRegBuffers[1] + 1; gScanlineEffect.setFirstScanlineReg = CopyValue16Bit; } else // assume 32-bit { // Set the DMA src to the value for the second scanline because the // first DMA transfer occurs in HBlank *after* the first scanline is drawn - gScanlineEffect.src[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; - gScanlineEffect.src[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; + gScanlineEffect.dmaSrcBuffers[0] = (u32 *)gScanlineEffectRegBuffers[0] + 1; + gScanlineEffect.dmaSrcBuffers[1] = (u32 *)gScanlineEffectRegBuffers[1] + 1; gScanlineEffect.setFirstScanlineReg = CopyValue32Bit; } gScanlineEffect.dmaControl = params.dmaControl; - gScanlineEffect.dmaDest = params.dmaDest; - gScanlineEffect.unk15 = params.unk8; - gScanlineEffect.unk16 = params.unk9; - gScanlineEffect.unk17 = params.unk9; + gScanlineEffect.dmaDest = params.dmaDest; + gScanlineEffect.state = params.initState; + gScanlineEffect.unused16 = params.unused9; + gScanlineEffect.unused17 = params.unused9; } void ScanlineEffect_InitHBlankDmaTransfer(void) { - if (gScanlineEffect.unk15 != 0) + if (gScanlineEffect.state == 0) { - if (gScanlineEffect.unk15 == 3) - { - gScanlineEffect.unk15 = 0; - DmaStop(0); - gUnknown_0202FFA4 = 1; - } - else - { - DmaStop(0); - // Set DMA to copy to dest register on each HBlank for the next frame. - // The HBlank DMA transfers do not occurr during VBlank, so the transfer - // will begin on the HBlank after the first scanline - DmaSet(0, gScanlineEffect.src[gScanlineEffect.srcBank], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); - // Manually set the reg for the first scanline - gScanlineEffect.setFirstScanlineReg(); - // Swap current buffer - gScanlineEffect.srcBank ^= 1; - } + return; + } + else if (gScanlineEffect.state == 3) + { + gScanlineEffect.state = 0; + DmaStop(0); + sShouldStopWaveTask = TRUE; + } + else + { + DmaStop(0); + // Set DMA to copy to dest register on each HBlank for the next frame. + // The HBlank DMA transfers do not occurr during VBlank, so the transfer + // will begin on the HBlank after the first scanline + DmaSet(0, gScanlineEffect.dmaSrcBuffers[gScanlineEffect.srcBuffer], gScanlineEffect.dmaDest, gScanlineEffect.dmaControl); + // Manually set the reg for the first scanline + gScanlineEffect.setFirstScanlineReg(); + // Swap current buffer + gScanlineEffect.srcBuffer ^= 1; } } @@ -107,7 +108,7 @@ void ScanlineEffect_InitHBlankDmaTransfer(void) static void CopyValue16Bit(void) { u16 *dest = (u16 *)gScanlineEffect.dmaDest; - u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + u16 *src = (u16 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; *dest = *src; } @@ -115,86 +116,87 @@ static void CopyValue16Bit(void) static void CopyValue32Bit(void) { u32 *dest = (u32 *)gScanlineEffect.dmaDest; - u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBank]; + u32 *src = (u32 *)&gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer]; *dest = *src; } -#define tStartLine data[0] -#define tEndLine data[1] -#define framesUntilMove data[4] -#define tDelayInterval data[5] -#define tRegOffset data[6] +#define tStartLine data[0] +#define tEndLine data[1] +#define tWaveLength data[2] +#define tSrcBufferOffset data[3] +#define tFramesUntilMove data[4] +#define tDelayInterval data[5] +#define tRegOffset data[6] +#define tApplyBattleBgOffsets data[7] static void TaskFunc_UpdateWavePerFrame(u8 taskId) { int value = 0; + int i; + int offset; - if (gUnknown_0202FFA4) + if (sShouldStopWaveTask) { DestroyTask(taskId); - gScanlineEffect.taskId = 0xFF; + gScanlineEffect.waveTaskId = 0xFF; } else { - if (gTasks[taskId].data[7]) + if (gTasks[taskId].tApplyBattleBgOffsets) { switch (gTasks[taskId].tRegOffset) { - case 0x0: + case SCANLINE_EFFECT_REG_BG0HOFS: value = gBattle_BG0_X; break; - case 0x2: + case SCANLINE_EFFECT_REG_BG0VOFS: value = gBattle_BG0_Y; break; - case 0x4: + case SCANLINE_EFFECT_REG_BG1HOFS: value = gBattle_BG1_X; break; - case 0x6: + case SCANLINE_EFFECT_REG_BG1VOFS: value = gBattle_BG1_Y; break; - case 0x8: + case SCANLINE_EFFECT_REG_BG2HOFS: value = gBattle_BG2_X; break; - case 0xA: + case SCANLINE_EFFECT_REG_BG2VOFS: value = gBattle_BG2_Y; break; - case 0xC: - value = gUnknown_030041B0; + case SCANLINE_EFFECT_REG_BG3HOFS: + value = gBattle_BG3_X; break; - case 0xE: - value = gUnknown_030041B8; + case SCANLINE_EFFECT_REG_BG3VOFS: + value = gBattle_BG3_Y; break; } } - if (gTasks[taskId].framesUntilMove != 0) + if (gTasks[taskId].tFramesUntilMove != 0) { - int i; - int offset; - - gTasks[taskId].framesUntilMove--; - offset = gTasks[taskId].data[3] + 320; + gTasks[taskId].tFramesUntilMove--; + offset = gTasks[taskId].tSrcBufferOffset + 320; for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } } else { - int i; - int offset; - - gTasks[taskId].framesUntilMove = gTasks[taskId].tDelayInterval; - offset = gTasks[taskId].data[3] + 320; + gTasks[taskId].tFramesUntilMove = gTasks[taskId].tDelayInterval; + offset = gTasks[taskId].tSrcBufferOffset + 320; for (i = gTasks[taskId].tStartLine; i < gTasks[taskId].tEndLine; i++) { - gScanlineEffectRegBuffers[gScanlineEffect.srcBank][i] = gScanlineEffectRegBuffers[0][offset] + value; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gScanlineEffectRegBuffers[0][offset] + value; offset++; } - gTasks[taskId].data[3]++; - if (gTasks[taskId].data[3] == gTasks[taskId].data[2]) - gTasks[taskId].data[3] = 0; + + // increment src buffer offset + gTasks[taskId].tSrcBufferOffset++; + if (gTasks[taskId].tSrcBufferOffset == gTasks[taskId].tWaveLength) + gTasks[taskId].tSrcBufferOffset = 0; } } } @@ -216,39 +218,38 @@ static void GenerateWave(u16 *buffer, u8 frequency, u8 amplitude, u8 unused) // 'frequency' and 'amplitude' control the frequency and amplitude of the wave. // 'delayInterval' controls how fast the wave travels up the screen. The wave will shift upwards one scanline every 'delayInterval'+1 frames. // 'regOffset' is the offset of the video register to modify. -u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 a7) +u8 ScanlineEffect_InitWave(u8 startLine, u8 endLine, u8 frequency, u8 amplitude, u8 delayInterval, u8 regOffset, bool8 applyBattleBgOffsets) { int i; int offset; struct ScanlineEffectParams params; u8 taskId; - dp12_8087EA4(); + ScanlineEffect_Clear(); params.dmaDest = (void *)(REG_ADDR_BG0HOFS + regOffset); params.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; - params.unk8 = 1; - params.unk9 = 0; + params.initState = 1; + params.unused9 = 0; ScanlineEffect_SetParams(params); taskId = CreateTask(TaskFunc_UpdateWavePerFrame, 0); - gTasks[taskId].tStartLine = startLine; - gTasks[taskId].tEndLine = endLine; - gTasks[taskId].data[2] = 256 / frequency; - gTasks[taskId].data[3] = 0; - gTasks[taskId].framesUntilMove = delayInterval; - gTasks[taskId].tDelayInterval = delayInterval; - gTasks[taskId].tRegOffset = regOffset; - gTasks[taskId].data[7] = a7; + gTasks[taskId].tStartLine = startLine; + gTasks[taskId].tEndLine = endLine; + gTasks[taskId].tWaveLength = 256 / frequency; + gTasks[taskId].tSrcBufferOffset = 0; + gTasks[taskId].tFramesUntilMove = delayInterval; + gTasks[taskId].tDelayInterval = delayInterval; + gTasks[taskId].tRegOffset = regOffset; + gTasks[taskId].tApplyBattleBgOffsets = applyBattleBgOffsets; - gScanlineEffect.taskId = taskId; - gUnknown_0202FFA4 = 0; + gScanlineEffect.waveTaskId = taskId; + sShouldStopWaveTask = FALSE; GenerateWave(&gScanlineEffectRegBuffers[0][320], frequency, amplitude, endLine - startLine); offset = 320; - for (i = startLine; i < endLine; i++) { gScanlineEffectRegBuffers[0][i] = gScanlineEffectRegBuffers[0][offset]; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index aeea3e292..53eb2f1e8 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -71,8 +71,8 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; -extern u16 gUnknown_030041B0; -extern u16 gUnknown_030041B8; +extern u16 gBattle_BG3_X; +extern u16 gBattle_BG3_Y; extern u8 gBattleTerrain; extern u8 gReservedSpritePaletteCount; extern u16 gMoveToLearn; @@ -206,8 +206,8 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; @@ -314,8 +314,8 @@ static void CB2_EvolutionSceneLoadGraphics(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); gBattleTerrain = BATTLE_TERRAIN_PLAIN; @@ -368,8 +368,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gBattle_BG1_Y = 0; gBattle_BG2_X = 0; gBattle_BG2_Y = 0; - gUnknown_030041B0 = 256; - gUnknown_030041B8 = 0; + gBattle_BG3_X = 256; + gBattle_BG3_Y = 0; gMain.state++; break; case 1: @@ -3929,8 +3929,8 @@ static void VBlankCB_EvolutionScene(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -3945,8 +3945,8 @@ static void VBlankCB_TradeEvolutionScene(void) REG_BG1VOFS = gBattle_BG1_Y; REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - REG_BG3HOFS = gUnknown_030041B0; - REG_BG3VOFS = gUnknown_030041B8; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index f39745c02..303dcf3e0 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -16,6 +16,7 @@ #include "data2.h" #include "decompress.h" #include "random.h" +#include "scanline_effect.h" #include "trig.h" #include "ewram.h" @@ -95,7 +96,6 @@ bool8 sub_80C5DCC(void); bool8 sub_80C5F98(void); void ReturnFromHallOfFamePC(void); u16 SpeciesToPokedexNum(u16 species); -void ScanlineEffect_Stop(void); // data and gfx diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 2de3554fe..202b752a6 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -711,7 +711,7 @@ void CB2_InitTitleScreen(void) if (!UpdatePaletteFade()) { StartPokemonLogoShine(FALSE); - ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, 4, 1); + ScanlineEffect_InitWave(0, DISPLAY_HEIGHT, 4, 4, 0, SCANLINE_EFFECT_REG_BG1HOFS, TRUE); SetMainCallback2(MainCB2); } break; -- cgit v1.2.3 From 8d658666a14f8364df32d3f14c6923ebe194153e Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Wed, 10 Jan 2018 17:03:17 -0500 Subject: decompiled up to sub_80DFBD8 --- src/battle/anim/dragon.c | 262 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100755 src/battle/anim/dragon.c (limited to 'src') diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c new file mode 100755 index 000000000..04859e39f --- /dev/null +++ b/src/battle/anim/dragon.c @@ -0,0 +1,262 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "unknown_task.h" + +void sub_80DF81C(struct Sprite *sprite); +void sub_80DFBD8(struct Sprite *sprite); + +void sub_80DF9F4(u8 taskId); + +void sub_80DFAB0(struct Task *task); + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gBankAttacker; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG2_X; +extern u16 gUnknown_03000730[]; + + +// Outrage +void sub_80DF5A0(struct Sprite *sprite) +{ + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); + if (GetBankSide(gAnimBankAttacker)) + { + sprite->pos1.x -= gBattleAnimArgs[0]; + gBattleAnimArgs[3] = -gBattleAnimArgs[3]; + gBattleAnimArgs[4] = -gBattleAnimArgs[4]; + } + else + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->data[3] = gBattleAnimArgs[4]; + sprite->data[5] = gBattleAnimArgs[5]; + sprite->invisible = 1; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078504; +} + +void sub_80DF63C(struct Sprite *sprite) +{ + sub_8078650(sprite); + sprite->data[2] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[4] = GetBankPosition(gAnimBankTarget, 3); + if (GetBankSide(gAnimBankAttacker)) + { + sprite->pos1.x -= gBattleAnimArgs[1]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[2] -= gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + } + else + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + sprite->data[2] += gBattleAnimArgs[2]; + sprite->data[4] += gBattleAnimArgs[3]; + StartSpriteAnim(sprite, 1); + } + sprite->data[0] = gBattleAnimArgs[4]; + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} + +void sub_80DF6F0(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1); + } + else + { + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1); + } + sub_807867C(sprite, gBattleAnimArgs[1]); + sprite->pos1.y += gBattleAnimArgs[2]; + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} + +void sub_80DF760(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker)) + StartSpriteAffineAnim(sprite, 1); + sub_80DF63C(sprite); +} + +void sub_80DF78C(struct Sprite *sprite) +{ + u16 r5; + u16 r0; + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); + sprite->data[4] = 0; + sprite->data[5] = 1; + sprite->data[6] = gBattleAnimArgs[0]; + r5 = sub_807A100(gBankAttacker, 0); + r0 = sub_807A100(gBankAttacker, 1); + if (r5 > r0) + sprite->data[7] = r5 / 2; + else + sprite->data[7] = r0 / 2; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + sprite->callback = sub_80DF81C; +} + +void sub_80DF81C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + if (++sprite->data[4] > 5) + { + sprite->data[4] = 0; + if (sprite->data[5] <= 15 && ++sprite->data[5] > 15) + sprite->data[5] = 16; + } + if (++sprite->data[3] > 0x3C) + { + sprite->data[3] = 0; + sprite->data[0]++; + } + break; + case 1: + sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; + if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95) + sprite->data[7] = 0x96; + sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); + sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); + if (++sprite->data[4] > 5) + { + sprite->data[4] = 0; + if (sprite->data[5] <= 15 && ++sprite->data[5] > 15) + sprite->data[5] = 16; + } + if (++sprite->data[3] > 20) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_80DF924(u8 taskId) +{ + struct UnknownTaskStruct sp; + struct Task *task = &gTasks[taskId]; + u16 i; + u8 r1; + if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) + { + sp.dest = ®_BG1HOFS; + task->data[2] = gBattle_BG1_X; + } + else + { + sp.dest = ®_BG2HOFS; + task->data[2] = gBattle_BG2_X; + } + sp.control = 0xA2600001; + sp.unk8 = 1; + sp.unk9 = 0; + r1 = sub_8077FC0(gAnimBankAttacker); + task->data[3] = r1 - 32; + task->data[4] = r1 + 32; + if (task->data[3] < 0) + task->data[3] = 0; + for(i = task->data[3];i <= task->data[4];i++) + { + gUnknown_03004DE0[0][i] = task->data[2]; + gUnknown_03004DE0[1][i] = task->data[2]; + } + sub_80895F8(sp); + task->func = sub_80DF9F4; +} + +void sub_80DF9F4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (++task->data[6] == 3) + task->data[0]++; + } + sub_80DFAB0(task); + break; + case 1: + if (++task->data[1] > 0x3C) + task->data[0]++; + sub_80DFAB0(task); + break; + case 2: + if (++task->data[7] > 1) + { + task->data[7] = 0; + if (--task->data[6] == 0) + task->data[0]++; + } + sub_80DFAB0(task); + break; + case 3: + gUnknown_03004DC0.unk15 = 3; + task->data[0]++; + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80DFAB0(struct Task *task) +{ + u16 r3 = task->data[5]; + u16 i; + for (i = task->data[3]; i <= task->data[4]; i++) + { + gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; + r3 = (r3 + 8) & 0xFF; + } + task->data[5] = (task->data[5] + 9) & 0xFF; +} + +void sub_80DFB28(struct Sprite *sprite) +{ + int r6 = (gBattleAnimArgs[2] * 3) / 5; + int i; + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[4]; + sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]); + sprite->data[2] = Sin(gBattleAnimArgs[1], r6); + sprite->pos1.x += sprite->data[1] * gBattleAnimArgs[0]; + sprite->pos1.y += sprite->data[2] * gBattleAnimArgs[0]; + sprite->data[3] = gBattleAnimArgs[3]; + sprite->callback = sub_80DFBD8; + for (i = 0; i <= 6; i++) + gUnknown_03000730[i] = sprite->data[i]; +} + +void sub_80DFBD8(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->data[5] += sprite->data[2]; + sprite->pos2.x = sprite->data[4] / 10; + sprite->pos2.y = sprite->data[5] / 10; + if (++sprite->data[0] > sprite->data[3]) + DestroyAnimSprite(sprite); +} \ No newline at end of file -- cgit v1.2.3 From e0726bf8d6af39f287c65ad22ce192988e8468bb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Jan 2018 20:20:16 -0500 Subject: through sub_8099374 --- src/pokemon/pokemon_storage_system_2.c | 4 +- src/pokemon/pokemon_storage_system_3.c | 101 +++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index dbb1cf992..a158b29a9 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -1703,7 +1703,7 @@ void sub_8098400(void) if (gUnknown_0203847C) { sub_8098690(TRUE); - sub_8099200(1); + sub_8099200(TRUE); sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22); } else @@ -1719,7 +1719,7 @@ void sub_80984E8(void) gPokemonStorageSystemPtr->unk_08a8 = 20; gPokemonStorageSystemPtr->unk_08aa = 2; gPokemonStorageSystemPtr->unk_08ad = 0; - sub_8099200(0); + sub_8099200(FALSE); } bool8 sub_8098520(void) diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index af050d324..230e9445b 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -13,6 +13,7 @@ // Static ROM declarations void sub_8098E68(struct Sprite *sprite); +void sub_8099388(struct Sprite *sprite, u16 a0); void sub_80999C4(struct Sprite *sprite); struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 a2, s16 a3, u8 a4, u8 a5); void sub_8099BE0(struct Sprite *sprite); @@ -209,3 +210,103 @@ void sub_809900C(u8 a0, s8 a1) gPokemonStorageSystemPtr->unk_1174 = 24 * gPokemonStorageSystemPtr->unk_117a + 0x64; sub_8098DE0(gPokemonStorageSystemPtr->unk_1176); } + +bool8 sub_80990AC(void) +{ + if (gPokemonStorageSystemPtr->unk_1172) + gPokemonStorageSystemPtr->unk_1172--; + switch (gPokemonStorageSystemPtr->unk_117c) + { + case 0: + gPokemonStorageSystemPtr->unk_1174 += gPokemonStorageSystemPtr->unk_1176; + if (gPokemonStorageSystemPtr->unk_1174 < 0x41 || gPokemonStorageSystemPtr->unk_1174 > 0xfb) + { + sub_8098EA0(gPokemonStorageSystemPtr->unk_117a); + gPokemonStorageSystemPtr->unk_1174 += 24 * gPokemonStorageSystemPtr->unk_117b; + gPokemonStorageSystemPtr->unk_117c++; + } + break; + case 1: + gPokemonStorageSystemPtr->unk_1174 += gPokemonStorageSystemPtr->unk_1176; + gPokemonStorageSystemPtr->unk_1178 += sub_8098EE0(gPokemonStorageSystemPtr->unk_117a, gPokemonStorageSystemPtr->unk_1172, gPokemonStorageSystemPtr->unk_1176); + if ((gPokemonStorageSystemPtr->unk_117b > 0 && gPokemonStorageSystemPtr->unk_117a == 5) || (gPokemonStorageSystemPtr->unk_117b < 0 && gPokemonStorageSystemPtr->unk_117a == 0)) + { + gPokemonStorageSystemPtr->unk_117c++; + } + else + { + gPokemonStorageSystemPtr->unk_117a += gPokemonStorageSystemPtr->unk_117b; + gPokemonStorageSystemPtr->unk_117c = 0; + } + break; + case 2: + if (gPokemonStorageSystemPtr->unk_1178 == 0) + { + gPokemonStorageSystemPtr->unk_1172++; + return FALSE; + } + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_8099200(bool8 a0) +{ + u16 count; + u16 i; + u16 species = GetMonData(gPlayerParty + 0, MON_DATA_SPECIES2); + u32 personality = GetMonData(gPlayerParty + 0, MON_DATA_PERSONALITY); + gPokemonStorageSystemPtr->unk_1038[0] = PSS_SpawnMonIconSprite(species, personality, 0x68, 0x40, 1, 11); + count = 1; + for (i = 1; i < PARTY_SIZE; i++) + { + species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES2); + if (species != SPECIES_NONE) + { + personality = GetMonData(gPlayerParty + i, MON_DATA_PERSONALITY); + gPokemonStorageSystemPtr->unk_1038[i] = PSS_SpawnMonIconSprite(species, personality, 0x98, (i - 1) * 24 + 0x10, 1, 11); + count++; + } + else + { + gPokemonStorageSystemPtr->unk_1038[i] = NULL; + } + } + if (!a0) + { + for (i = 0; i < count; i++) + { + // this routine assumes party_compaction has been called + gPokemonStorageSystemPtr->unk_1038[i]->pos1.y -= 0xa0; + gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE; + } + } +} + +void sub_8099310(void) +{ + u16 i; + u16 count; + + gPokemonStorageSystemPtr->unk_1171 = 0; + for (i = 0, count = 0; i < PARTY_SIZE; i++) + { + if (gPokemonStorageSystemPtr->unk_1038[i]) + { + if (i != count) + { + sub_8099388(gPokemonStorageSystemPtr->unk_1038[i], count); + gPokemonStorageSystemPtr->unk_1038[i] = NULL; + gPokemonStorageSystemPtr->unk_1171++; + } + count++; + } + } +} + +u8 sub_8099374(void) +{ + return gPokemonStorageSystemPtr->unk_1171; +} -- cgit v1.2.3 From e44c0f897d2d02f153d5adf139be3bac25e1ee93 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Jan 2018 21:33:54 -0500 Subject: through sub_809960C --- src/pokemon/pokemon_storage_system_3.c | 145 ++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 230e9445b..28b9e2655 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -13,7 +13,8 @@ // Static ROM declarations void sub_8098E68(struct Sprite *sprite); -void sub_8099388(struct Sprite *sprite, u16 a0); +void sub_8099388(struct Sprite *sprite, u16 a1); +void sub_80993F4(struct Sprite *sprite); void sub_80999C4(struct Sprite *sprite); struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 a2, s16 a3, u8 a4, u8 a5); void sub_8099BE0(struct Sprite *sprite); @@ -310,3 +311,145 @@ u8 sub_8099374(void) { return gPokemonStorageSystemPtr->unk_1171; } + +void sub_8099388(struct Sprite *sprite, u16 a1) +{ + s16 r3; + s16 r4; + + sprite->data[1] = a1; + if (a1 == 0) + { + r3 = 0x68; + r4 = 0x40; + } + else + { + r3 = 0x98; + r4 = 24 * (a1 - 1) + 0x10; + } + sprite->data[2] = sprite->pos1.x << 3; + sprite->data[3] = sprite->pos1.y << 3; + sprite->data[4] = (r3 * 8 - sprite->data[2]) / 8; + sprite->data[5] = (r4 * 8 - sprite->data[3]) / 8; + sprite->data[6] = 8; + sprite->callback = sub_80993F4; +} + +void sub_80993F4(struct Sprite *sprite) +{ + if (sprite->data[6]) + { + sprite->data[2] += sprite->data[4]; + sprite->data[3] += sprite->data[5]; + sprite->pos1.x = sprite->data[2] >> 3; + sprite->pos1.y = sprite->data[3] >> 3; + sprite->data[6]--; + } + else + { + if (sprite->data[1] == 0) + { + sprite->pos1.x = 0x68; + sprite->pos1.y = 0x40; + } + else + { + sprite->pos1.x = 0x98; + sprite->pos1.y = (sprite->data[1] - 1) * 24 + 0x10; + } + sprite->callback = SpriteCallbackDummy; + gPokemonStorageSystemPtr->unk_1038[sprite->data[1]] = sprite; + gPokemonStorageSystemPtr->unk_1171--; + } +} + +void sub_8099480(void) +{ + if (gPokemonStorageSystemPtr->unk_1034) + { + sub_8099BE0(gPokemonStorageSystemPtr->unk_1034); + gPokemonStorageSystemPtr->unk_1034 = NULL; + } +} + +void sub_80994A8(s16 y) +{ + u16 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (gPokemonStorageSystemPtr->unk_1038[i]) + { + s16 yy; + gPokemonStorageSystemPtr->unk_1038[i]->pos1.y += y; + yy = gPokemonStorageSystemPtr->unk_1038[i]->pos1.y + gPokemonStorageSystemPtr->unk_1038[i]->pos2.y + gPokemonStorageSystemPtr->unk_1038[i]->centerToCornerVecY; + if (yy < -0x10 || yy > 0xb0) + gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE; + else + gPokemonStorageSystemPtr->unk_1038[i]->invisible = FALSE; + } + } +} + +void sub_8099520(u8 a0) +{ + if (gPokemonStorageSystemPtr->unk_1038[a0]) + { + sub_8099BE0(gPokemonStorageSystemPtr->unk_1038[a0]); + gPokemonStorageSystemPtr->unk_1038[a0] = NULL; + } +} + +void sub_809954C(void) +{ + u16 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (gPokemonStorageSystemPtr->unk_1038[i]) + { + sub_8099BE0(gPokemonStorageSystemPtr->unk_1038[i]); + gPokemonStorageSystemPtr->unk_1038[i] = NULL; + } + } +} + +void sub_8099584(u8 a0, u8 a1) +{ + if (a0 == 0) + { + gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1038[a1]; + gPokemonStorageSystemPtr->unk_1038[a1] = NULL; + } + else if (a0 == 1) + { + gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1050[a1]; + gPokemonStorageSystemPtr->unk_1050[a1] = NULL; + } + else + { + return; + } + gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4; + gPokemonStorageSystemPtr->unk_1034->oam.priority = 1; + gPokemonStorageSystemPtr->unk_1034->subpriority = 7; +} + +void sub_809960C(u8 a0, u8 a1) +{ + if (a0 == 14) + { + gPokemonStorageSystemPtr->unk_1038[a1] = gPokemonStorageSystemPtr->unk_1034; + gPokemonStorageSystemPtr->unk_1038[a1]->oam.priority = 1; + gPokemonStorageSystemPtr->unk_1038[a1]->subpriority = 11; + } + else + { + gPokemonStorageSystemPtr->unk_1050[a1] = gPokemonStorageSystemPtr->unk_1034; + gPokemonStorageSystemPtr->unk_1050[a1]->oam.priority = 2; + gPokemonStorageSystemPtr->unk_1050[a1]->subpriority = 18 - (a1 % 6); + } + gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy; + gPokemonStorageSystemPtr->unk_1034 = NULL; +} -- cgit v1.2.3 From d6464c7c40f5ac1b9da557d5990e2b7e83997720 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Jan 2018 21:53:25 -0500 Subject: through sub_809971C --- src/pokemon/pokemon_storage_system_3.c | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 28b9e2655..7f5c84b49 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -3,6 +3,7 @@ #include "global.h" #include "constants/species.h" #include "sprite.h" +#include "trig.h" #include "pokemon_icon.h" #include "pokemon_storage_system.h" @@ -453,3 +454,43 @@ void sub_809960C(u8 a0, u8 a1) gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy; gPokemonStorageSystemPtr->unk_1034 = NULL; } + +void sub_80996B0(u8 a0, u8 a1) +{ + if (a0 == 14) + gPokemonStorageSystemPtr->unk_10c8 = gPokemonStorageSystemPtr->unk_1038 + a1; + else + gPokemonStorageSystemPtr->unk_10c8 = gPokemonStorageSystemPtr->unk_1050 + a1; + gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy; + gPokemonStorageSystemPtr->unk_1170 = 0; +} + +bool8 sub_809971C(void) +{ + if (gPokemonStorageSystemPtr->unk_1170 == 16) + return FALSE; + gPokemonStorageSystemPtr->unk_1170++; + if (gPokemonStorageSystemPtr->unk_1170 & 1) + { + (*gPokemonStorageSystemPtr->unk_10c8)->pos1.y--; + gPokemonStorageSystemPtr->unk_1034->pos1.y++; + } + (*gPokemonStorageSystemPtr->unk_10c8)->pos2.x = gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16; + gPokemonStorageSystemPtr->unk_1034->pos2.x = -(gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16); + if (gPokemonStorageSystemPtr->unk_1170 == 8) + { + gPokemonStorageSystemPtr->unk_1034->oam.priority = (*gPokemonStorageSystemPtr->unk_10c8)->oam.priority; + gPokemonStorageSystemPtr->unk_1034->subpriority = (*gPokemonStorageSystemPtr->unk_10c8)->subpriority; + (*gPokemonStorageSystemPtr->unk_10c8)->oam.priority = 1; + (*gPokemonStorageSystemPtr->unk_10c8)->subpriority = 7; + } + if (gPokemonStorageSystemPtr->unk_1170 == 16) + { + struct Sprite *sprite = gPokemonStorageSystemPtr->unk_1034; + gPokemonStorageSystemPtr->unk_1034 = *(gPokemonStorageSystemPtr->unk_10c8); + (*gPokemonStorageSystemPtr->unk_10c8) = sprite; + gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4; + (*gPokemonStorageSystemPtr->unk_10c8)->callback = SpriteCallbackDummy; + } + return TRUE; +} -- cgit v1.2.3 From a1ccd03edd90601759a04f223c9558181a657728 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Jan 2018 22:08:58 -0500 Subject: Refine struct at 02000028 --- src/pokemon/pokemon_storage_system_2.c | 2 +- src/pokemon/pokemon_storage_system_5.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index a158b29a9..e5466ea70 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -176,7 +176,7 @@ void sub_8096804(void) FreeAllSpritePalettes(); ResetTasks(); gReservedSpriteTileCount = 0x280; - sub_809CFDC(gPokemonStorageSystemPtr->unk_0020, gPokemonStorageSystemPtr->unk_0020 + 1, 8); + sub_809CFDC(&gPokemonStorageSystemPtr->unk_0020, gPokemonStorageSystemPtr->unk_0028, 8); gKeyRepeatStartDelay = 20; } diff --git a/src/pokemon/pokemon_storage_system_5.c b/src/pokemon/pokemon_storage_system_5.c index f809439ff..b7c3d42f5 100644 --- a/src/pokemon/pokemon_storage_system_5.c +++ b/src/pokemon/pokemon_storage_system_5.c @@ -7,7 +7,7 @@ // Static RAM declarations -EWRAM_DATA u32 gUnknown_020384EC = 0; +EWRAM_DATA struct UnkStruct_2000020 *gUnknown_020384EC = NULL; // Static ROM declarations -- cgit v1.2.3 From b5667bd097347c1d3958fa8f9eb6d39788c0ff50 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 Jan 2018 23:20:32 -0600 Subject: refactor build system --- src/crt0.s | 227 ++++++ src/libs/libagbsyscall.s | 91 +++ src/libs/libgcnmultiboot.s | 641 +++++++++++++++ src/libs/m4a_1.s | 1911 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 2870 insertions(+) create mode 100644 src/crt0.s create mode 100644 src/libs/libagbsyscall.s create mode 100644 src/libs/libgcnmultiboot.s create mode 100644 src/libs/m4a_1.s (limited to 'src') diff --git a/src/crt0.s b/src/crt0.s new file mode 100644 index 000000000..049392be9 --- /dev/null +++ b/src/crt0.s @@ -0,0 +1,227 @@ + .include "constants/gba_constants.inc" + .include "constants/misc_constants.inc" + .include "constants/version.inc" + + .syntax unified + + .global Start + + .text + + .arm + +Start: @ 8000000 + b Init + + .include "asm/rom_header.inc" + +@ 80000C0 + .word 0 + + .global GPIOPortData +GPIOPortData: @ 80000C4 + .hword 0 + + .global GPIOPortDirection +GPIOPortDirection: @ 80000C6 + .hword 0 + + .global GPIOPortReadEnable +GPIOPortReadEnable: @ 80000C8 + .hword 0 + + .space 6 + +@ 80000D0 + +@ TODO: figure out what this data is + + .ifdef GERMAN + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte 0xFFFFFFFF + .4byte GAME_VERSION + .4byte GAME_LANGUAGE + .ifdef SAPPHIRE + .ascii "pokemon sapphire version" + .space 8 + .else + .ascii "pokemon ruby version" + .space 12 + .endif + .4byte gMonFrontPicTable + .4byte gMonBackPicTable + .4byte gMonPaletteTable + .4byte gMonShinyPaletteTable + .4byte gMonIconTable + .4byte gMonIconPaletteIndices + .4byte gMonIconPaletteTable + .4byte gSpeciesNames + .4byte gMoveNames + .4byte gDecorations + .4byte 0x1220 + .4byte 0x1340 + .4byte 0x18 + .4byte 0x938 + .4byte 0x3A8C + .4byte 0x46 + .4byte 0x836 + .4byte 0x84C + .4byte 0x182 + .4byte 0xA0A0A07 + .4byte 0xC060C0C + .4byte 0xC121006 + .4byte 0x8010B0F + .4byte 0xC + .4byte 0x890 + .4byte 0x3AC0 + .4byte 0x234 + .4byte 0x238 + .4byte 9 + .4byte 0xA + .4byte 0 + .4byte 8 + .4byte 0x556 + .4byte 0x557 + .4byte 0x312F + .4byte 0x311B + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0 + .4byte 0xFFFFFFFF + .endif + + .arm + .align 2, 0 + .global Init +Init: + mov r0, PSR_IRQ_MODE + msr cpsr_cf, r0 + ldr sp, sp_irq + mov r0, PSR_SYS_MODE + msr cpsr_cf, r0 + ldr sp, sp_sys + ldr r1, =INTR_VECTOR + adr r0, IntrMain + str r0, [r1] + ldr r1, =AgbMain + mov lr, pc + bx r1 + b Init + + .align 2, 0 +sp_sys: .word IWRAM_END - 0x1a0 +sp_irq: .word IWRAM_END - 0x60 + + .arm + .align 2, 0 + .global IntrMain +IntrMain: + mov r3, REG_BASE + add r3, r3, 0x200 + ldr r2, [r3, OFFSET_REG_IE - 0x200] + ldrh r1, [r3, OFFSET_REG_IME - 0x200] + mrs r0, spsr + stmdb sp!, {r0-r3,lr} + mov r0, 1 + strh r0, [r3, OFFSET_REG_IME - 0x200] + and r1, r2, r2, lsr 16 + mov r12, 0 + ands r0, r1, INTR_FLAG_SERIAL + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER3 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_HBLANK + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_VBLANK + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_VCOUNT + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER0 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER1 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_TIMER2 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA0 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA1 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA2 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_DMA3 + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_KEYPAD + bne IntrMain_FoundIntr + add r12, r12, 0x4 + ands r0, r1, INTR_FLAG_GAMEPAK + strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200] +IntrMain_Loop: + bne IntrMain_Loop +IntrMain_FoundIntr: + strh r0, [r3, OFFSET_REG_IF - 0x200] + mov r1, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_HBLANK + bic r2, r2, r0 + and r1, r1, r2 + strh r1, [r3, OFFSET_REG_IE - 0x200] + mrs r3, cpsr + bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, PSR_SYS_MODE + msr cpsr_cf, r3 + ldr r1, =gIntrTable + add r1, r1, r12 + ldr r0, [r1] + stmdb sp!, {lr} + adr lr, IntrMain_RetAddr + bx r0 +IntrMain_RetAddr: + ldmia sp!, {lr} + mrs r3, cpsr + bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE + msr cpsr_cf, r3 + ldmia sp!, {r0-r3,lr} + strh r2, [r3, OFFSET_REG_IE - 0x200] + strh r1, [r3, OFFSET_REG_IME - 0x200] + msr spsr_cf, r0 + bx lr + + .pool + + .align 2, 0 @ Don't pad with nop. diff --git a/src/libs/libagbsyscall.s b/src/libs/libagbsyscall.s new file mode 100644 index 000000000..cdf6ca905 --- /dev/null +++ b/src/libs/libagbsyscall.s @@ -0,0 +1,91 @@ + .include "include/macros.inc" + .syntax unified + + .text + + thumb_func_start ArcTan2 +ArcTan2: @ 81E07E0 + swi 0xA + bx lr + thumb_func_end ArcTan2 + + thumb_func_start BgAffineSet +BgAffineSet: @ 81E07E4 + swi 0xE + bx lr + thumb_func_end BgAffineSet + + thumb_func_start CpuFastSet +CpuFastSet: @ 81E07E8 + swi 0xC + bx lr + thumb_func_end CpuFastSet + + thumb_func_start CpuSet +CpuSet: @ 81E07EC + swi 0xB + bx lr + thumb_func_end CpuSet + + thumb_func_start LZ77UnCompVram +LZ77UnCompVram: @ 81E07F4 + swi 0x12 + bx lr + thumb_func_end LZ77UnCompVram + + thumb_func_start LZ77UnCompWram +LZ77UnCompWram: @ 81E07F8 + swi 0x11 + bx lr + thumb_func_end LZ77UnCompWram + + thumb_func_start ObjAffineSet +ObjAffineSet: @ 81E0804 + swi 0xF + bx lr + thumb_func_end ObjAffineSet + + thumb_func_start RLUnCompVram +RLUnCompVram: @ 81E0808 + swi 0x15 + bx lr + thumb_func_end RLUnCompVram + + thumb_func_start RLUnCompWram +RLUnCompWram: @ 81E080C + swi 0x14 + bx lr + thumb_func_end RLUnCompWram + + thumb_func_start RegisterRamReset +RegisterRamReset: @ 81E0810 + swi 0x1 + bx lr + thumb_func_end RegisterRamReset + + thumb_func_start SoftReset +SoftReset: @ 81E0814 + ldr r3, =0x04000208 + movs r2, 0 + strb r2, [r3] + ldr r1, =0x03007f00 @ User Stack + mov sp, r1 + swi 0x1 + swi 0 + .pool + thumb_func_end SoftReset + + thumb_func_start Sqrt +Sqrt: @ 81E082C + swi 0x8 + bx lr + thumb_func_end Sqrt + + thumb_func_start VBlankIntrWait +VBlankIntrWait: @ 81E0830 + movs r2, 0 + swi 0x5 + bx lr + thumb_func_end VBlankIntrWait + + .align 2, 0 @ Don't pad with nop. diff --git a/src/libs/libgcnmultiboot.s b/src/libs/libgcnmultiboot.s new file mode 100644 index 000000000..8c8b94998 --- /dev/null +++ b/src/libs/libgcnmultiboot.s @@ -0,0 +1,641 @@ +@ This library can be used to download and execute a multi-boot image from +@ a GameCube using the JOY Bus protocol over the link cable. + + .include "include/macros.inc" + .include "constants/constants.inc" + + .equiv GCMB_STRUCT_COUNTER1, 0x00 + .equiv GCMB_STRUCT_COUNTER2, 0x01 + .equiv GCMB_STRUCT_MBPROGRESS, 0x02 + .equiv GCMB_STRUCT_SAVEDVCOUNT, 0x03 + .equiv GCMB_STRUCT_KEYA, 0x04 + .equiv GCMB_STRUCT_KEYB, 0x08 + .equiv GCMB_STRUCT_KEYC, 0x0C + .equiv GCMB_STRUCT_BOOT_KEY, 0x10 + .equiv GCMB_STRUCT_IMAGE_SIZE, 0x12 + .equiv GCMB_STRUCT_SESSION_KEY, 0x14 + .equiv GCMB_STRUCT_HASH_VAL, 0x18 + .equiv GCMB_STRUCT_KEYC_DERIVATION, 0x1C + .equiv GCMB_STRUCT_BASE_DEST_PTR, 0x20 + .equiv GCMB_STRUCT_CUR_DEST_PTR, 0x24 + .equiv GCMB_STRUCT_SERIAL_INTR_HANDLER, 0x28 + + .equiv ROM_HEADER_NINTENDO_LOGO_OFFSET, 0x04 + .equiv ROM_HEADER_NINTENDO_LOGO_LENGTH, 0x98 + .equiv ROM_HEADER_NINTENDO_LOGO_END, 0xA0 + + .equiv MBPROGRESS_NONE, 0x00 + .equiv MBPROGRESS_LOGO_CORRECT, 0x01 + .equiv MBPROGRESS_READY_TO_BOOT, 0x02 + + .equiv GCMB_MAGIC_BOOTKEY_HASHVAL, 0xBB + .equiv GCMB_MAGIC_BOOTKEY, 0xBB + .equiv GCMB_MAGIC_COUNTER2, 0xCC + .equiv GCMB_MAGIC_KEYA, 0xDD + .equiv GCMB_MAGIC_KEYB, 0xEE + .equiv GCMB_MAGIC_KEYCDERIVATION, 0xFF + + .syntax unified + + .text + + thumb_func_start GameCubeMultiBoot_Hash +GameCubeMultiBoot_Hash: @ 81DCB38 + push {r4,lr} + ldr r4, pool_HashVal + eors r3, r1 + movs r2, 0x20 + +GameCubeMultiBoot_Hash_Loop: + lsrs r3, 1 + bcc GameCubeMultiBoot_Hash_SkipEor + + eors r3, r4 + +GameCubeMultiBoot_Hash_SkipEor: + subs r2, 0x1 + bne GameCubeMultiBoot_Hash_Loop + + pop {r4,pc} + thumb_func_end GameCubeMultiBoot_Hash + + thumb_func_start GameCubeMultiBoot_Main +@ void GameCubeMultiBoot_Main(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_Main: @ 81DCB4C + @ If there is no interrupt handler, skip counter manipulation + ldr r1, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + cmp r1, 0 + beq GameCubeMultiBoot_Main_SkipCounters + @ Increment the second counter + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + adds r1, 0x1 + strb r1, [r0, GCMB_STRUCT_COUNTER2] + @ If there is nothing more to do, bail out + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_READY_TO_BOOT + beq GameCubeMultiBoot_Main_Return + @ Save current interrupt master register value + ldr r3, pool_InterruptRegs + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + @ Disable all interrupts + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + @ Increment the first counter, if it's less than or equal to 10. + ldrb r1, [r0, GCMB_STRUCT_COUNTER1] + cmp r1, 0xA + bgt GameCubeMultiBoot_Main_SkipCounter1Inc + adds r1, 0x1 + strb r1, [r0, GCMB_STRUCT_COUNTER1] +GameCubeMultiBoot_Main_SkipCounter1Inc: + @ Load the saved interrupt master register value (re-enables interrupts if they were enabled before) + strh r2, [r3, OFFSET_REG_IME - 0x200] +GameCubeMultiBoot_Main_SkipCounters: + @ Initialise multiboot structures if required + bcs GameCubeMultiBoot_Init + @ Skip this section (check Nintendo logo) if the check has already passed + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_NONE + bne GameCubeMultiBoot_Main_SkipLogoCheck + @ Bail out if no multiboot image data has been transferred yet + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] + subs r1, r2 + beq GameCubeMultiBoot_Main_Return2 + @ Also bail out if not enough data has been transferred + cmp r1, ROM_HEADER_NINTENDO_LOGO_END + bcc GameCubeMultiBoot_Main_Return2 + @ Compare the Nintendo logo of the transferred multiboot image header, with the one in the ROM image of the inserted cart + push {r4-r6} + movs r1, ROM_HEADER_NINTENDO_LOGO_LENGTH + adds r2, ROM_HEADER_NINTENDO_LOGO_OFFSET + ldr r4, pool_NintendoLogo +GameCubeMultiBoot_Main_LogoCmpLoop: + ldm r2!, {r5} + ldm r4!, {r6} + cmp r5, r6 + bne GameCubeMultiBoot_Main_LogoCmpEnd + subs r1, 0x4 + bne GameCubeMultiBoot_Main_LogoCmpLoop + ldm r2!, {r5} + ldm r4!, {r6} + eors r5, r6 + lsrs r5, 8 + str r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] +GameCubeMultiBoot_Main_LogoCmpEnd: + pop {r4-r6} + @ Throw everything away if the logo data didn't match + bne GameCubeMultiBoot_Init + @ Logo matched, set the relevent multiboot progress bit + movs r1, MBPROGRESS_LOGO_CORRECT + strb r1, [r0, GCMB_STRUCT_MBPROGRESS] + @ XOR together KeyA and KeyB to get the initial multiboot image checksum value + ldr r1, [r0, GCMB_STRUCT_KEYA] + ldr r2, [r0, GCMB_STRUCT_KEYB] + eors r1, r2 + str r1, [r0, GCMB_STRUCT_HASH_VAL] + @ ...also use it as the initial value for the image encryption session key. Algorithm is the same as the GBA BIOS multiboot: sessionkey = (initialvalue * 0x6177614b) + 1 + ldr r2, pool_Kawa + muls r1, r2 + adds r1, 0x1 + str r1, [r0, GCMB_STRUCT_SESSION_KEY] +GameCubeMultiBoot_Main_Return: + bx lr +GameCubeMultiBoot_Main_SkipLogoCheck: + @ If this code is executed, then the logo check has passed, and the data being transferred in is encrypted. + @ Set up registers. + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + mov r12, r1 + ldr r3, [r0, GCMB_STRUCT_HASH_VAL] + push {r4-r7} + ldr r4, [r0, GCMB_STRUCT_BASE_DEST_PTR] + ldr r5, pool_Kawa + ldr r6, [r0, GCMB_STRUCT_SESSION_KEY] + ldr r7, pool_HashVal +GameCubeMultiBoot_Main_ImageDecryptHashLoop: + @ If there's no more data, break out of the loop + cmp r4, r12 + bcs GameCubeMultiBoot_Main_ImageDecryptHashEnd + @ Get the next uint32 + ldr r1, [r4] + @ Decrypt the ciphertext: plaintext = (ciphertext ^ sessionkey) + hashval + eors r1, r6 + adds r1, r3 + @ Save the current uint32 of plaintext and advance the pointer + stm r4!, {r1} + @ Advance the hashval with this uint32 of plaintext -- this is the same code as GameCubeMultiBoot_Hash. + eors r3, r1 + movs r2, 0x20 +GameCubeMultiBoot_Main_HashLoop: + lsrs r3, 1 + bcc GameCubeMultiBoot_Main_HashSkipEor + eors r3, r7 +GameCubeMultiBoot_Main_HashSkipEor: + subs r2, 0x1 + bne GameCubeMultiBoot_Main_HashLoop + @ Advance the sessionkey with the usual algorithm: sessionkey = (sessionkey * 0x6177614b) + 1 + muls r6, r5 + adds r6, 0x1 + b GameCubeMultiBoot_Main_ImageDecryptHashLoop +GameCubeMultiBoot_Main_ImageDecryptHashEnd: + @ Save the new pointer, sessionkey, hashval + str r4, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r6, [r0, GCMB_STRUCT_SESSION_KEY] + pop {r4-r7} + str r3, [r0, GCMB_STRUCT_HASH_VAL] + @ Bail out if the image size is unknown + ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + cmp r1, 0 + bne GameCubeMultiBoot_Main_Return2 + @ Bail out if no image data has been transferred + ldr r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + ldr r2, [r0, GCMB_STRUCT_BASE_DEST_PTR] + cmp r1, r2 + bne GameCubeMultiBoot_Main_Return2 + @ If KeyC hasn't been generated yet, go generate it + ldr r1, [r0, GCMB_STRUCT_KEYC] + cmp r1, 0 + beq GameCubeMultiBoot_Main_GenerateKeyC + @ If the other side hasn't sent its boot key yet, bail out + ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY] + cmp r1, 0 + beq GameCubeMultiBoot_Main_Return + @ Save off LR so it doesn't get clobbered by the upcoming function call + mov r12, lr + @ Generate the real boot key, which is the checksum of a hardcoded value and KeyC + movs r1, GCMB_MAGIC_BOOTKEY_HASHVAL + ldr r3, [r0, GCMB_STRUCT_KEYC] + bl GameCubeMultiBoot_Hash + ldrh r1, [r0, GCMB_STRUCT_BOOT_KEY] + @ Restore the saved LR value + mov lr, r12 + @ Compare the two boot keys (real and passed in), if they don't match then throw everything away + subs r1, r3 + bne GameCubeMultiBoot_Init + @ The two boot keys matched, tell the caller that the image is ready to boot + movs r1, MBPROGRESS_READY_TO_BOOT + strb r1, [r0, GCMB_STRUCT_MBPROGRESS] + @ Nothing more to do, return. + bx lr +GameCubeMultiBoot_Main_GenerateKeyC: + @ Save off LR so it doesn't get clobbered by the upcoming function call + mov r12, lr + @ KeyC = (SavedVCount << 24) - 1 + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + lsls r1, 24 + subs r1, 0x1 + str r1, [r0, GCMB_STRUCT_KEYC] + @ Hash the KeyC with the multiboot image checksum to generate the KeyC derivation material to be sent to the other side of the link + bl GameCubeMultiBoot_Hash + @ Make sure the sent KeyC derivation material contains a magic value so that the other side can detect it + lsls r3, 8 + adds r3, GCMB_MAGIC_KEYCDERIVATION + @ Save off the KeyC derivation material and return to caller + str r3, [r0, GCMB_STRUCT_KEYC_DERIVATION] + bx r12 +GameCubeMultiBoot_Main_Return2: + bx lr + thumb_func_end GameCubeMultiBoot_Main + + .align 2, 0 + +pool_HashVal: .4byte 0xa1c1 + +pool_Kawa: .ascii "Kawa" @ name of BIOS developer + +pool_NintendoLogo: .4byte RomHeaderNintendoLogo + + thumb_func_start GameCubeMultiBoot_ExecuteProgram +@ void GameCubeMultiBoot_ExecuteProgram(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_ExecuteProgram: @ 81DCC4C + @ If there's no multiboot image ready, just return to caller + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, MBPROGRESS_READY_TO_BOOT + bne GameCubeMultiBoot_ExecuteProgram_Fail + @ Disable interrupts + ldr r3, pool_InterruptRegs + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + @ Jump to the real entry point of the multiboot image (past the image header), in ARM mode + ldr r1, pool_MultiBootLoadAddr + adds r1, 0xC0 + bx r1 +GameCubeMultiBoot_ExecuteProgram_Fail: + bx lr + thumb_func_end GameCubeMultiBoot_ExecuteProgram + + thumb_func_start GameCubeMultiBoot_Init +@ void GameCubeMultiBoot_Init(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_Init: @ 81DCC60 + ldr r3, pool_InterruptRegs + +@ Save IME register. + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + +@ Disable interrupts. + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + +@ Set the handler to the "Stop" routine. +@ Unless the first command that is received is a device reset command, the +@ "Stop" routine will be executed and no further commands will be processed. + adr r3, GcMbIntrHandler_Stop + str r3, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + + ldrb r3, [r0, 0x3] + push {r3} + ldrb r3, [r0, 0x1] + push {r0,r3} + + adds r3, r0, 0 + adds r3, GCMB_STRUCT_BASE_DEST_PTR + +@ clear all but the last 3 fields of the struct +GameCubeMultiBoot_Init_ClearStructLoop: + stm r0!, {r1} + cmp r0, r3 + blo GameCubeMultiBoot_Init_ClearStructLoop + + pop {r0,r3} + lsrs r3, 1 + strb r3, [r0, 0x3] + pop {r3} + strb r3, [r0, 0x1] + + ldr r3, pool_SerialRegs + +@ Turn off JOY Bus mode. + lsls r0, r3, 10 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] + +@ Turn on JOY Bus mode. + movs r0, 0xC0 + lsls r0, 8 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] + +@ Init JOY Bus registers. + movs r0, 0x47 + strh r0, [r3, OFFSET_REG_JOYCNT - 0x120] + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + + ldr r3, pool_InterruptRegs + +@ Acknowledge serial interrupt. + movs r0, INTR_FLAG_SERIAL + strh r0, [r3, OFFSET_REG_IF - 0x200] + +@ Enable serial interrupt. + ldrh r1, [r3, OFFSET_REG_IE - 0x200] + orrs r1, r0 + strh r1, [r3, OFFSET_REG_IE - 0x200] + +@ Restore IME register. + strh r2, [r3, OFFSET_REG_IME - 0x200] + + bx lr + thumb_func_end GameCubeMultiBoot_Init + + non_word_aligned_thumb_func_start GameCubeMultiBoot_HandleSerialInterrupt +@ void GameCubeMultiBoot_HandleSerialInterrupt(struct GameCubeMultiBoot *mb)@ +GameCubeMultiBoot_HandleSerialInterrupt: @ 81DCCAA + ldr r3, pool_SerialRegs + +@ Acknowledge reset/receive/send flags. + ldrh r1, [r3, OFFSET_REG_JOYCNT - 0x120] + strh r1, [r3, OFFSET_REG_JOYCNT - 0x120] + + movs r2, 0 + strb r2, [r0] + + ldr r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + cmp r2, 0 + beq GameCubeMultiBoot_HandleSerialInterruptDone + + lsrs r1, 1 @ was a device reset command received? + bcs GameCubeMultiBoot_BeginHandshake @ branch if so + + mov pc, r2 + + .align 2, 0 + +@ Zero the status and the interrupt handler pointer. +@ Commands from the GameCube will not be processed after this is executed +@ unless GameCubeMultiBoot_Init() is called again. +GcMbIntrHandler_Stop: + movs r2, 0 + strh r2, [r3, OFFSET_REG_JOYSTAT - 0x120] + +GameCubeMultiBoot_SetInterruptHandler: + str r2, [r0, GCMB_STRUCT_SERIAL_INTR_HANDLER] + +GameCubeMultiBoot_ReadVCount: + ldr r3, pool_RegDispstat + ldrh r1, [r3, OFFSET_REG_VCOUNT - OFFSET_REG_DISPSTAT] + strb r1, [r0, 0x3] + +GameCubeMultiBoot_HandleSerialInterruptDone: + bx lr + +GameCubeMultiBoot_BeginHandshake: + @ Throw away anything that got sent + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ Send the game code, the other side of the link must send back the same game code + ldr r1, pool_RubyUSAGameCode + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + movs r1, 0x10 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ Use the saved VCount value to provide 8 bits of entropy for KeyB + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + strb r1, [r0, GCMB_STRUCT_KEYB + 1] + @ If a multiboot image has been transferred at least enough such that the Nintendo logo check has passed, stop everything. + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, 0 + bne GcMbIntrHandler_Stop + @ Set the image destination pointers. + ldr r1, pool_MultiBootLoadAddr + str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + @ Set the new interrupt handler. + adr r2, GcMbIntrHandler_CheckGameCodeSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckGameCodeSent: @ 81DCCEC + lsls r1, 31 + bcc GcMbIntrHandler_Stop @ stop if send failed + bmi GameCubeMultiBoot_CheckHandshakeResponse @ branch if receive is complete + +@ If the response hasn't been fully received yet, +@ check again upon the next interrupt. + adr r2, GcMbIntrHandler_CheckHandshakeResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckHandshakeResponse: @ 81DCCF8 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ stop if not + +GameCubeMultiBoot_CheckHandshakeResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + ldr r2, pool_RubyUSAGameCode + cmp r1, r2 + bne GcMbIntrHandler_Stop @ stop if the GameCube didn't reply with the same game code + @ Use the saved VCount value to provide another 8 bits of entropy for KeyB. + ldrb r1, [r0, GCMB_STRUCT_SAVEDVCOUNT] + strb r1, [r0, GCMB_STRUCT_KEYB + 3] + adr r2, GcMbIntrHandler_ReceiveKeyA + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_ReceiveKeyA: @ 81DCD0C + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ make sure top 8 bits of the received value is the KeyA magic number, stop if KeyA is invalid + lsrs r2, r1, 24 + cmp r2, GCMB_MAGIC_KEYA + bne GcMbIntrHandler_Stop + @ save received KeyA + str r1, [r0, GCMB_STRUCT_KEYA] + @ use the second GameCubeMultiBoot_Main() counter as another 8 bits of entropy for KeyB + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + strb r1, [r0, GCMB_STRUCT_KEYB + 2] + movs r2, 0 + movs r3, 0 + ldr r1, [r0, GCMB_STRUCT_KEYB] + lsrs r1, 8 + @ make sure KeyB is valid (other side of the link is supposed to check KeyB too), if it's not then change the byte that was just set so it is +GameCubeMultiBoot_KeyBCheckLoop: + lsrs r1, 1 + adcs r2, r3 + cmp r1, 0 + bne GameCubeMultiBoot_KeyBCheckLoop + cmp r2, 0xE + bgt GameCubeMultiBoot_KeyBSaveNewByte + cmp r2, 0x7 + bge GameCubeMultiBoot_KeyBCheckEnd + movs r1, 0xFF +GameCubeMultiBoot_KeyBSaveNewByte: + strb r1, [r0, GCMB_STRUCT_KEYB + 2] +GameCubeMultiBoot_KeyBCheckEnd: + @ add in the KeyB magic number and send off KeyB + ldr r1, [r0, GCMB_STRUCT_KEYB] + adds r1, GCMB_MAGIC_KEYB + ldr r3, pool_SerialRegs + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + movs r1, 0x30 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ set new interrupt handler + adr r2, GcMbIntrHandler_CheckKeyBSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckKeyBSent: @ 81DCD4C + lsls r1, 31 + bcc GcMbIntrHandler_Stop @ stop if send failed + bmi GameCubeMultiBoot_CheckImageSizeResponse @ branch if receive is complete + adr r2, GcMbIntrHandler_CheckImageSizeResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckImageSizeResponse: @ 81DCD58 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not +GameCubeMultiBoot_CheckImageSizeResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + ldr r2, GameCubeMultiBoot_MaximumImageSizeUInt32s + cmp r1, r2 + bhs GcMbIntrHandler_Stop + adds r1, 0x1 + adds r1, r1 + strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + ldrb r1, [r0, GCMB_STRUCT_MBPROGRESS] + cmp r1, 0 +GcMbIntrHandler_StopIfNotEqual: + bne GcMbIntrHandler_Stop + ldr r1, pool_MultiBootLoadAddr + str r1, [r0, GCMB_STRUCT_BASE_DEST_PTR] + str r1, [r0, GCMB_STRUCT_CUR_DEST_PTR] + adr r2, GcMbIntrHandler_CheckImageResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckImageResponse: @ 81DCD7C + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_Stop @ branch if not + ldr r2, [r0, GCMB_STRUCT_CUR_DEST_PTR] + movs r1, 0x4 + ands r1, r2 + adds r1, 0x8 + lsls r1, 2 + strh r1, [r3, OFFSET_REG_JOYSTAT - 0x120] + @ get the recieved uint32 + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ put it in the current destination pointer and advance that pointer + stm r2!, {r1} + @ save off the advanced pointer + str r2, [r0, GCMB_STRUCT_CUR_DEST_PTR] + @ decrease the image size (in uint32s) + ldrh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + subs r1, 0x1 + strh r1, [r0, GCMB_STRUCT_IMAGE_SIZE] + @ branch away if the transfer is not yet complete + bne GameCubeMultiBoot_ReadVCount + +GcMbIntrHandler_SendCounter2: + @ send counter2 with magic number + ldrb r1, [r0, GCMB_STRUCT_COUNTER2] + lsls r1, 8 + adds r1, GCMB_MAGIC_COUNTER2 + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + adr r2, GcMbIntrHandler_CheckCounter2Sent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckCounter2Sent: + lsls r1, 31 + +GcMbIntrHandler_StopIfSendFailed: + bcc GcMbIntrHandler_Stop @ stop if send failed + @ if KeyC derivation value has not yet been generated, send Counter2 again, otherwise, send KeyC derivation + ldr r1, [r0, GCMB_STRUCT_KEYC_DERIVATION] + cmp r1, 0 + beq GcMbIntrHandler_SendCounter2 + str r1, [r3, OFFSET_REG_JOY_TRANS - 0x120] + adr r2, GcMbIntrHandler_CheckKeyCDerivationSent + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckKeyCDerivationSent: @ 81DCDB8 + lsls r1, 31 + bcc GcMbIntrHandler_StopIfSendFailed @ branch if send failed + bmi GameCubeMultiBoot_CheckBootKeyResponse @ branch if receive is complete + adr r2, GcMbIntrHandler_CheckBootKeyResponse + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_CheckBootKeyResponse: @ 81DCDC4 + lsrs r1, 1 @ is receive complete? + bcc GcMbIntrHandler_StopIfSendFailed @ branch if not + +GameCubeMultiBoot_CheckBootKeyResponse: + ldr r1, [r3, OFFSET_REG_JOY_RECV - 0x120] + @ make sure received boot key contains expected magic number, stop if not + lsrs r2, r1, 24 + cmp r2, GCMB_MAGIC_BOOTKEY + bne GcMbIntrHandler_StopIfNotEqual + @ save received bootkey to be checked in GameCubeMultiBoot_Main() + strh r1, [r0, GCMB_STRUCT_BOOT_KEY] + @ stop if anything more gets sent + adr r2, GcMbIntrHandler_StopUnconditionally + b GameCubeMultiBoot_SetInterruptHandler + + .align 2, 0 + +GcMbIntrHandler_StopUnconditionally: @ 81DCDD8 + b GcMbIntrHandler_Stop + + thumb_func_end GameCubeMultiBoot_HandleSerialInterrupt + + non_word_aligned_thumb_func_start GameCubeMultiBoot_Quit +@ void GameCubeMultiBoot_Quit()@ +GameCubeMultiBoot_Quit: @ 81DCDDA + ldr r3, pool_InterruptRegs + +@ Save IME register. + ldrh r2, [r3, OFFSET_REG_IME - 0x200] + +@ Disable interrupts. + movs r1, 0 + strh r1, [r3, OFFSET_REG_IME - 0x200] + + ldr r3, pool_SerialRegs + +@ Acknowledge all JOYCNT flags. + movs r0, 0x7 + strh r0, [r3, OFFSET_REG_JOYCNT - 0x120] + +@ Turn off JOY Bus mode. + lsls r0, r3, 10 + strh r0, [r3, OFFSET_REG_RCNT - 0x120] @ store 0x8000 + + ldr r3, pool_InterruptRegs + +@ Acknowledge serial interrupt. + movs r0, INTR_FLAG_SERIAL + strh r0, [r3, OFFSET_REG_IF - 0x200] + +@ Disable serial interrupt. + ldrh r1, [r3, OFFSET_REG_IE - 0x200] + bics r1, r0 + strh r1, [r3, OFFSET_REG_IE - 0x200] + +@ Restore IME register. + strh r2, [r3, OFFSET_REG_IME - 0x200] + + bx lr + thumb_func_end GameCubeMultiBoot_Quit + + .align 2, 0 + +GameCubeMultiBoot_MaximumImageSizeUInt32s: .4byte 0x00004000 + +pool_InterruptRegs: .4byte REG_BASE + 0x200 + +pool_SerialRegs: .4byte REG_BASE + 0x120 + +pool_RegDispstat: .4byte REG_DISPSTAT + +pool_RubyUSAGameCode: .ascii "AXVE" + +pool_MultiBootLoadAddr: .4byte EWRAM_START + + .align 2, 0 @ Don't pad with nop. diff --git a/src/libs/m4a_1.s b/src/libs/m4a_1.s new file mode 100644 index 000000000..be8b44488 --- /dev/null +++ b/src/libs/m4a_1.s @@ -0,0 +1,1911 @@ + .include "include/macros.inc" + .include "constants/gba_constants.inc" + .include "constants/m4a_constants.inc" + + .syntax unified + + .lcomm gUnknown_030007B8, 0x770 + + .text + + thumb_func_start umul3232H32 +umul3232H32: + adr r2, __umul3232H32 + bx r2 + .arm +__umul3232H32: + umull r2, r3, r0, r1 + add r0, r3, 0 + bx lr + thumb_func_end umul3232H32 + + thumb_func_start SoundMain +SoundMain: + ldr r0, lt_SOUND_INFO_PTR + ldr r0, [r0] + ldr r2, lt_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + cmp r2, r3 + beq SoundMain_1 + bx lr @ Exit the function if ident doesn't match ID_NUMBER. +SoundMain_1: + adds r3, 1 + str r3, [r0, o_SoundInfo_ident] + push {r4-r7,lr} + mov r1, r8 + mov r2, r9 + mov r3, r10 + mov r4, r11 + push {r0-r4} + sub sp, 0x18 + ldrb r1, [r0, o_SoundInfo_maxLines] + cmp r1, 0 @ if maxLines is 0, there is no maximum + beq SoundMain_3 + ldr r2, lt_REG_VCOUNT + ldrb r2, [r2] + cmp r2, VCOUNT_VBLANK + bhs SoundMain_2 + adds r2, TOTAL_SCANLINES +SoundMain_2: + adds r1, r2 +SoundMain_3: + str r1, [sp, 0x14] + ldr r3, [r0, o_SoundInfo_func] + cmp r3, 0 + beq SoundMain_4 + ldr r0, [r0, o_SoundInfo_intp] + bl _081DD25E + ldr r0, [sp, 0x18] +SoundMain_4: + ldr r3, [r0, o_SoundInfo_CgbSound] + bl _081DD25E + ldr r0, [sp, 0x18] + ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank] + mov r8, r3 + ldr r5, lt_o_SoundInfo_pcmBuffer + adds r5, r0 + ldrb r4, [r0, o_SoundInfo_pcmDmaCounter] + subs r7, r4, 1 + bls SoundMain_5 + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + subs r1, r7 + mov r2, r8 + muls r2, r1 + adds r5, r2 +SoundMain_5: + str r5, [sp, 0x8] + ldr r6, lt_PCM_DMA_BUF_SIZE + ldr r3, lt_SoundMainRAM_Buffer + bx r3 + + .align 2, 0 +lt_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt_ID_NUMBER: .word ID_NUMBER +lt_SoundMainRAM_Buffer: .word SoundMainRAM_Buffer + 1 +lt_REG_VCOUNT: .word REG_VCOUNT +lt_o_SoundInfo_pcmBuffer: .word o_SoundInfo_pcmBuffer +lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE + thumb_func_end SoundMain + + thumb_func_start SoundMainRAM +SoundMainRAM: + ldrb r3, [r0, o_SoundInfo_reverb] + cmp r3, 0 + beq SoundMainRAM_NoReverb + adr r1, SoundMainRAM_Reverb + bx r1 + .arm +SoundMainRAM_Reverb: + cmp r4, 0x2 + addeq r7, r0, o_SoundInfo_pcmBuffer + addne r7, r5, r8 + mov r4, r8 +_081DCEC4: + ldrsb r0, [r5, r6] + ldrsb r1, [r5] + add r0, r0, r1 + ldrsb r1, [r7, r6] + add r0, r0, r1 + ldrsb r1, [r7], 0x1 + add r0, r0, r1 + mul r1, r0, r3 + mov r0, r1, asr 9 + tst r0, 0x80 + addne r0, r0, 0x1 + strb r0, [r5, r6] + strb r0, [r5], 0x1 + subs r4, r4, 0x1 + bgt _081DCEC4 + adr r0, _081DCF36 + 1 @ plus 1 because THUMB + bx r0 + .thumb +SoundMainRAM_NoReverb: + movs r0, 0 + mov r1, r8 + adds r6, r5 + lsrs r1, 3 + bcc SoundMainRAM_NoReverb_Ok + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Ok: + lsrs r1, 1 + bcc SoundMainRAM_NoReverb_Loop + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} +SoundMainRAM_NoReverb_Loop: + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + stm r5!, {r0} + stm r6!, {r0} + subs r1, 1 + bgt SoundMainRAM_NoReverb_Loop +_081DCF36: + ldr r4, [sp, 0x18] + ldr r0, [r4, o_SoundInfo_divFreq] + mov r12, r0 + ldrb r0, [r4, o_SoundInfo_maxChans] + adds r4, o_SoundInfo_chans + +SoundMainRAM_ChanLoop: + str r0, [sp, 0x4] + ldr r3, [r4, o_SoundChannel_wav] + ldr r0, [sp, 0x14] + cmp r0, 0 + beq _081DCF60 + ldr r1, =REG_VCOUNT + ldrb r1, [r1] + cmp r1, VCOUNT_VBLANK + bhs _081DCF54 + adds r1, TOTAL_SCANLINES +_081DCF54: + cmp r1, r0 + blo _081DCF60 + b _081DD24A + + .pool + +_081DCF60: + ldrb r6, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r6 + bne _081DCF6A + b _081DD240 +_081DCF6A: + movs r0, 0x80 + tst r0, r6 + beq _081DCFA0 + movs r0, 0x40 + tst r0, r6 + bne _081DCFB0 + movs r6, 0x3 + strb r6, [r4, o_SoundChannel_status] + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r4, o_SoundChannel_ct] + adds r0, r1 + str r0, [r4, o_SoundChannel_cp] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [r4, o_SoundChannel_ct] + movs r5, 0 + strb r5, [r4, o_SoundChannel_ev] + str r5, [r4, o_SoundChannel_fw] + ldrb r2, [r3, 0x3] + movs r0, 0xC0 + tst r0, r2 + beq _081DCFF8 + movs r0, 0x10 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _081DCFF8 +_081DCFA0: + ldrb r5, [r4, o_SoundChannel_ev] + movs r0, 0x4 + tst r0, r6 + beq _081DCFB6 + ldrb r0, [r4, o_SoundChannel_iel] + subs r0, 1 + strb r0, [r4, o_SoundChannel_iel] + bhi _081DD006 +_081DCFB0: + movs r0, 0 + strb r0, [r4, o_SoundChannel_status] + b _081DD240 +_081DCFB6: + movs r0, 0x40 + tst r0, r6 + beq _081DCFD6 + ldrb r0, [r4, o_SoundChannel_release] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_iev] + cmp r5, r0 + bhi _081DD006 +_081DCFC8: + ldrb r5, [r4, o_SoundChannel_iev] + cmp r5, 0 + beq _081DCFB0 + movs r0, 0x4 + orrs r6, r0 + strb r6, [r4, o_SoundChannel_status] + b _081DD006 +_081DCFD6: + movs r2, 0x3 + ands r2, r6 + cmp r2, 0x2 + bne _081DCFF4 + ldrb r0, [r4, o_SoundChannel_decay] + muls r5, r0 + lsrs r5, 8 + ldrb r0, [r4, o_SoundChannel_sustain] + cmp r5, r0 + bhi _081DD006 + adds r5, r0, 0 + beq _081DCFC8 + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] + b _081DD006 +_081DCFF4: + cmp r2, 0x3 + bne _081DD006 +_081DCFF8: + ldrb r0, [r4, o_SoundChannel_attack] + adds r5, r0 + cmp r5, 0xFF + bcc _081DD006 + movs r5, 0xFF + subs r6, 0x1 + strb r6, [r4, o_SoundChannel_status] +_081DD006: + strb r5, [r4, o_SoundChannel_ev] + ldr r0, [sp, 0x18] + ldrb r0, [r0, o_SoundChannel_release] + adds r0, 0x1 + muls r0, r5 + lsrs r5, r0, 4 + ldrb r0, [r4, o_SoundChannel_rightVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_er] + ldrb r0, [r4, o_SoundChannel_leftVolume] + muls r0, r5 + lsrs r0, 8 + strb r0, [r4, o_SoundChannel_el] + movs r0, 0x10 + ands r0, r6 + str r0, [sp, 0x10] + beq _081DD03A + adds r0, r3, 0 + adds r0, 0x10 + ldr r1, [r3, 0x8] + adds r0, r1 + str r0, [sp, 0xC] + ldr r0, [r3, 0xC] + subs r0, r1 + str r0, [sp, 0x10] +_081DD03A: + ldr r5, [sp, 0x8] + ldr r2, [r4, o_SoundChannel_ct] + ldr r3, [r4, o_SoundChannel_cp] + adr r0, _081DD044 + bx r0 + .arm +_081DD044: + str r8, [sp] + ldr r9, [r4, o_SoundChannel_fw] + ldrb r10, [r4, o_SoundChannel_er] + ldrb r11, [r4, o_SoundChannel_el] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x30 + beq _081DD068 + bl sub_81DD264 + b _081DD228 +_081DD068: + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + beq _081DD19C +_081DD07C: + cmp r2, 0x4 + ble _081DD0EC + subs r2, r2, r8 + movgt r9, 0 + bgt _081DD0A8 + mov r9, r8 + add r2, r2, r8 + sub r8, r2, 0x4 + sub r9, r9, r8 + ands r2, r2, 0x3 + moveq r2, 0x4 +_081DD0A8: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD0B0: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + adds r5, r5, 0x40000000 + bcc _081DD0B0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD0A8 + adds r8, r8, r9 + beq _081DD22C +_081DD0EC: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD0F4: + ldrsb r0, [r3], 0x1 + mul r1, r10, r0 + bic r1, r1, 0xFF0000 + add r6, r1, r6, ror 8 + mul r1, r11, r0 + bic r1, r1, 0xFF0000 + add r7, r1, r7, ror 8 + subs r2, r2, 0x1 + beq _081DD164 +_081DD118: + adds r5, r5, 0x40000000 + bcc _081DD0F4 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD07C + b _081DD22C +_081DD134: + ldr r0, [sp, 0x18] + cmp r0, 0 + beq _081DD158 + ldr r3, [sp, 0x14] + rsb lr, r2, 0 +_081DD148: + adds r2, r0, r2 + bgt _081DD1FC + sub lr, lr, r0 + b _081DD148 +_081DD158: + pop {r4,r12} + mov r2, 0 + b _081DD174 +_081DD164: + ldr r2, [sp, 0x10] + cmp r2, 0 + ldrne r3, [sp, 0xC] + bne _081DD118 +_081DD174: + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + b _081DD234 +_081DD19C: + push {r4,r12} + ldr r1, [r4, o_SoundChannel_freq] + mul r4, r12, r1 + ldrsb r0, [r3] + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_081DD1B4: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD1BC: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r4 + movs lr, r9, lsr 23 + beq _081DD208 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD134 + subs lr, lr, 0x1 + addeq r0, r0, r1 +_081DD1FC: + ldrsbne r0, [r3, lr]! + ldrsb r1, [r3, 0x1]! + sub r1, r1, r0 +_081DD208: + adds r5, r5, 0x40000000 + bcc _081DD1BC + str r7, [r5, 0x630] + str r6, [r5], 0x4 + subs r8, r8, 0x4 + bgt _081DD1B4 + sub r3, r3, 0x1 + pop {r4,r12} +_081DD228: + str r9, [r4, o_SoundChannel_fw] +_081DD22C: + str r2, [r4, o_SoundChannel_ct] + str r3, [r4, o_SoundChannel_cp] +_081DD234: + ldr r8, [sp] + add r0, pc, 0x1 + bx r0 + .thumb +_081DD240: + ldr r0, [sp, 0x4] + subs r0, 1 + ble _081DD24A + adds r4, SoundChannel_size + b SoundMainRAM_ChanLoop +_081DD24A: + ldr r0, [sp, 0x18] + ldr r3, =ID_NUMBER + str r3, [r0] + add sp, 0x1C + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} +_081DD25E: + bx r3 + .pool + thumb_func_end SoundMainRAM + + arm_func_start sub_81DD264 +sub_81DD264: + ldr r6, [r4, o_SoundChannel_wav] + ldrb r0, [r4, o_SoundChannel_status] + tst r0, 0x20 + bne _081DD2B4 + orr r0, r0, 0x20 + strb r0, [r4, o_SoundChannel_status] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + beq _081DD29C + ldr r1, [r6, 0xC] + add r1, r1, r6, lsl 1 + add r1, r1, 0x20 + sub r3, r1, r3 + str r3, [r4, o_SoundChannel_cp] +_081DD29C: + ldrh r0, [r6] + cmp r0, 0 + beq _081DD2B4 + sub r3, r3, r6 + sub r3, r3, 0x10 + str r3, [r4, o_SoundChannel_cp] +_081DD2B4: + push {r8,r12,lr} + mov r10, r10, lsl 16 + mov r11, r11, lsl 16 + ldr r1, [r4, o_SoundChannel_freq] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x8 + movne r8, 0x800000 + muleq r8, r12, r1 + ldrh r0, [r6] + cmp r0, 0 + beq _081DD468 + mov r0, 0xFF000000 + str r0, [r4, o_SoundChannel_xpi] + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + bne _081DD3C0 + bl sub_81DD520 + mov r0, r1 + add r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD308: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD310: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD370 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD398 + subs lr, lr, 0x1 + bne _081DD358 + add r0, r0, r1 + b _081DD364 +_081DD358: + add r3, r3, lr + bl sub_81DD520 + mov r0, r1 +_081DD364: + add r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD370: + adds r5, r5, 0x40000000 + bcc _081DD310 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD308 + sub r3, r3, 0x1 + b _081DD4F0 +_081DD398: + ldr r0, [sp, 0x1C] + cmp r0, 0 + beq _081DD4F4 + ldr r3, [r4, o_SoundChannel_wav] + ldr r3, [r3, 0x8] + rsb lr, r2, 0 +_081DD3B0: + adds r2, r2, r0 + bgt _081DD358 + sub lr, lr, r0 + b _081DD3B0 +_081DD3C0: + sub r3, r3, 0x1 + bl sub_81DD520 + mov r0, r1 + sub r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD3D8: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD3E0: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD440 + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD4F4 + subs lr, lr, 0x1 + bne _081DD428 + add r0, r0, r1 + b _081DD434 +_081DD428: + sub r3, r3, lr + bl sub_81DD520 + mov r0, r1 +_081DD434: + sub r3, r3, 0x1 + bl sub_81DD520 + sub r1, r1, r0 +_081DD440: + adds r5, r5, 0x40000000 + bcc _081DD3E0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD3D8 + add r3, r3, 0x2 + b _081DD4F0 +_081DD468: + ldrb r0, [r4, o_SoundChannel_type] + tst r0, 0x10 + beq _081DD4F0 + ldrsb r0, [r3, -0x1]! + ldrsb r1, [r3, -0x1] + sub r1, r1, r0 +_081DD480: + ldr r6, [r5] + ldr r7, [r5, 0x630] +_081DD488: + mul lr, r9, r1 + add lr, r0, lr, asr 23 + mul r12, r10, lr + bic r12, r12, 0xFF0000 + add r6, r12, r6, ror 8 + mul r12, r11, lr + bic r12, r12, 0xFF0000 + add r7, r12, r7, ror 8 + add r9, r9, r8 + movs lr, r9, lsr 23 + beq _081DD4CC + bic r9, r9, 0x3F800000 + subs r2, r2, lr + ble _081DD4F4 + ldrsb r0, [r3, -lr]! + ldrsb r1, [r3, -0x1] + sub r1, r1, r0 +_081DD4CC: + adds r5, r5, 0x40000000 + bcc _081DD488 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + ldr r6, [sp] + subs r6, r6, 0x4 + str r6, [sp] + bgt _081DD480 + add r3, r3, 0x1 +_081DD4F0: + pop {r8,r12,pc} +_081DD4F4: + mov r2, 0 + strb r2, [r4, o_SoundChannel_status] + mov r0, r5, lsr 30 + bic r5, r5, 0xC0000000 + rsb r0, r0, 0x3 + mov r0, r0, lsl 3 + mov r6, r6, ror r0 + mov r7, r7, ror r0 + str r7, [r5, 0x630] + str r6, [r5], 0x4 + pop {r8,r12,pc} + arm_func_end sub_81DD264 + + arm_func_start sub_81DD520 +sub_81DD520: + push {r0,r2,r5-r7,lr} + mov r0, r3, lsr 6 + ldr r1, [r4, o_SoundChannel_xpi] + cmp r0, r1 + beq _081DD594 + str r0, [r4, o_SoundChannel_xpi] + mov r1, 0x21 + mul r2, r1, r0 + ldr r1, [r4, o_SoundChannel_wav] + add r2, r2, r1 + add r2, r2, 0x10 + ldr r5, =gUnknown_030007B8 + ldr r6, =gDeltaEncodingTable + mov r7, 0x40 + ldrb lr, [r2], 1 + strb lr, [r5], 1 + ldrb r1, [r2], 1 + b _081DD57C +_081DD568: + ldrb r1, [r2], 1 + mov r0, r1, lsr 4 + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], 1 +_081DD57C: + and r0, r1, 0xF + ldrsb r0, [r6, r0] + add lr, lr, r0 + strb lr, [r5], 1 + subs r7, r7, 2 + bgt _081DD568 +_081DD594: + ldr r5, =gUnknown_030007B8 + and r0, r3, 0x3F + ldrsb r1, [r5, r0] + pop {r0,r2,r5-r7,pc} + .pool + arm_func_end sub_81DD520 + + thumb_func_start SoundMainBTM +SoundMainBTM: + mov r12, r4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + movs r4, 0 + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + stm r0!, {r1-r4} + mov r4, r12 + bx lr + thumb_func_end SoundMainBTM + + thumb_func_start RealClearChain +RealClearChain: + ldr r3, [r0, 0x2C] + cmp r3, 0 + beq _081DD5E2 + ldr r1, [r0, 0x34] + ldr r2, [r0, 0x30] + cmp r2, 0 + beq _081DD5D6 + str r1, [r2, 0x34] + b _081DD5D8 +_081DD5D6: + str r1, [r3, 0x20] +_081DD5D8: + cmp r1, 0 + beq _081DD5DE + str r2, [r1, 0x30] +_081DD5DE: + movs r1, 0 + str r1, [r0, 0x2C] +_081DD5E2: + bx lr + thumb_func_end RealClearChain + + thumb_func_start ply_fine +ply_fine: + push {r4,r5,lr} + adds r5, r1, 0 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq ply_fine_done +ply_fine_loop: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq ply_fine_ok + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] +ply_fine_ok: + adds r0, r4, 0 + bl RealClearChain + ldr r4, [r4, 0x34] + cmp r4, 0 + bne ply_fine_loop +ply_fine_done: + movs r0, 0 + strb r0, [r5] + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end ply_fine + + thumb_func_start MPlayJumpTableCopy +MPlayJumpTableCopy: + mov r12, lr + movs r1, 0x24 + ldr r2, lt_MPlayJumpTableTemplate +MPlayJumpTableCopy_Loop: + ldr r3, [r2] + bl chk_adr_r2 + stm r0!, {r3} + adds r2, 0x4 + subs r1, 0x1 + bgt MPlayJumpTableCopy_Loop + bx r12 + thumb_func_end MPlayJumpTableCopy + + .align 2, 0 + .thumb_func +ldrb_r3_r2: + ldrb r3, [r2] + +@ This attempts to protect against reading anything from the BIOS ROM +@ besides the jump table template. +@ It assumes that the jump table template is located at the end of the ROM. + .thumb_func +chk_adr_r2: + push {r0} + lsrs r0, r2, 25 + bne chk_adr_r2_done @ if adr >= 0x2000000 (i.e. not in BIOS ROM), accept it + ldr r0, lt_MPlayJumpTableTemplate + cmp r2, r0 + blo chk_adr_r2_reject @ if adr < gMPlayJumpTableTemplate, reject it + lsrs r0, r2, 14 + beq chk_adr_r2_done @ if adr < 0x40000 (i.e. in BIOS ROM), accept it +chk_adr_r2_reject: + movs r3, 0 +chk_adr_r2_done: + pop {r0} + bx lr + + .align 2, 0 +lt_MPlayJumpTableTemplate: .word gMPlayJumpTableTemplate + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i: + ldr r2, [r1, 0x40] +_081DD64A: + adds r3, r2, 0x1 + str r3, [r1, 0x40] + ldrb r3, [r2] + b chk_adr_r2 + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_goto +ply_goto: + push {lr} +ply_goto_1: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r2, 0x3] + lsls r0, 8 + ldrb r3, [r2, 0x2] + orrs r0, r3 + lsls r0, 8 + ldrb r3, [r2, 0x1] + orrs r0, r3 + lsls r0, 8 + bl ldrb_r3_r2 + orrs r0, r3 + str r0, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_goto + + thumb_func_start ply_patt +ply_patt: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 3 + bhs ply_patt_done + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r2, 0x4 + str r2, [r3, o_MusicPlayerTrack_patternStack] + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + adds r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + b ply_goto +ply_patt_done: + b ply_fine + thumb_func_end ply_patt + + thumb_func_start ply_pend +ply_pend: + ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + cmp r2, 0 + beq ply_pend_done + subs r2, 1 + strb r2, [r1, o_MusicPlayerTrack_patternLevel] + lsls r2, 2 + adds r3, r1, r2 + ldr r2, [r3, o_MusicPlayerTrack_patternStack] + str r2, [r1, o_MusicPlayerTrack_cmdPtr] +ply_pend_done: + bx lr + thumb_func_end ply_pend + + thumb_func_start ply_rept +ply_rept: + push {lr} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0 + bne ply_rept_1 + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b ply_goto_1 +ply_rept_1: + ldrb r3, [r1, o_MusicPlayerTrack_repN] + adds r3, 1 + strb r3, [r1, o_MusicPlayerTrack_repN] + mov r12, r3 + bl ld_r3_tp_adr_i + cmp r12, r3 + bhs ply_rept_2 + b ply_goto_1 +ply_rept_2: + movs r3, 0 + strb r3, [r1, o_MusicPlayerTrack_repN] + adds r2, 5 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + pop {r0} + bx r0 + thumb_func_end ply_rept + + thumb_func_start ply_prio +ply_prio: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_priority] + bx r12 + thumb_func_end ply_prio + + thumb_func_start ply_tempo +ply_tempo: + mov r12, lr + bl ld_r3_tp_adr_i + lsls r3, 1 + strh r3, [r0, o_MusicPlayerInfo_tempoD] + ldrh r2, [r0, o_MusicPlayerInfo_tempoU] + muls r3, r2 + lsrs r3, 8 + strh r3, [r0, o_MusicPlayerInfo_tempoI] + bx r12 + thumb_func_end ply_tempo + + thumb_func_start ply_keysh +ply_keysh: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_keyShift] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_keysh + + thumb_func_start ply_voice +ply_voice: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + lsls r2, r3, 1 + adds r2, r3 + lsls r2, 2 + ldr r3, [r0, o_MusicPlayerInfo_tone] + adds r2, r3 + ldr r3, [r2] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_type] + ldr r3, [r2, 0x4] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_wav] + ldr r3, [r2, 0x8] + bl chk_adr_r2 + str r3, [r1, o_MusicPlayerTrack_ToneData_attack] + bx r12 + thumb_func_end ply_voice + + thumb_func_start ply_vol +ply_vol: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_vol] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_vol + + thumb_func_start ply_pan +ply_pan: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_pan] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0x3 + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_pan + + thumb_func_start ply_bend +ply_bend: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_bend] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bend + + thumb_func_start ply_bendr +ply_bendr: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_bendRange] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_bendr + + thumb_func_start ply_lfodl +ply_lfodl: + mov r12, lr + bl ld_r3_tp_adr_i + strb r3, [r1, o_MusicPlayerTrack_lfoDelay] + bx r12 + thumb_func_end ply_lfodl + + thumb_func_start ply_modt +ply_modt: + mov r12, lr + bl ld_r3_tp_adr_i + ldrb r0, [r1, o_MusicPlayerTrack_modT] + cmp r0, r3 + beq _081DD7AA + strb r3, [r1, o_MusicPlayerTrack_modT] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xF + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] +_081DD7AA: + bx r12 + thumb_func_end ply_modt + + thumb_func_start ply_tune +ply_tune: + mov r12, lr + bl ld_r3_tp_adr_i + subs r3, 0x40 + strb r3, [r1, o_MusicPlayerTrack_tune] + ldrb r3, [r1, o_MusicPlayerTrack_flags] + movs r2, 0xC + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx r12 + thumb_func_end ply_tune + + thumb_func_start ply_port +ply_port: + mov r12, lr + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + adds r2, 1 + ldr r0, =REG_SOUND1CNT_L @ sound register base address + adds r0, r3 + bl _081DD64A + strb r3, [r0] + bx r12 + .pool + thumb_func_end ply_port + + thumb_func_start m4aSoundVSync +m4aSoundVSync: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + + @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_SoundInfo_ident] + subs r3, r2 + cmp r3, 1 + bhi m4aSoundVSync_Done + + @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. + ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] + subs r1, 1 + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + bgt m4aSoundVSync_Done + + @ Reload the PCM DMA counter. + ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + strb r1, [r0, o_SoundInfo_pcmDmaCounter] + + ldr r2, =REG_DMA1 + + ldr r1, [r2, 0x8] @ DMA1CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA1 @ branch if repeat bit isn't set + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0x8] @ DMA1CNT + +m4aSoundVSync_SkipDMA1: + ldr r1, [r2, 0xC + 0x8] @ DMA2CNT + lsls r1, 7 + bcc m4aSoundVSync_SkipDMA2 @ branch if repeat bit isn't set + + ldr r1, =((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4 + str r1, [r2, 0xC + 0x8] @ DMA2CNT + +m4aSoundVSync_SkipDMA2: + + @ turn off DMA1/DMA2 + movs r1, DMA_32BIT >> 8 + lsls r1, 8 + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + + @ turn on DMA1/DMA2 direct-sound FIFO mode + movs r1, (DMA_ENABLE | DMA_START_SPECIAL | DMA_32BIT | DMA_REPEAT) >> 8 + lsls r1, 8 @ LSB is 0, so DMA_SRC_INC is used (destination is always fixed in FIFO mode) + strh r1, [r2, 0xA] @ DMA1CNT_H + strh r1, [r2, 0xC + 0xA] @ DMA2CNT_H + +m4aSoundVSync_Done: + bx lr + + .pool + thumb_func_end m4aSoundVSync + + thumb_func_start MPlayMain +MPlayMain: + ldr r2, lt2_ID_NUMBER + ldr r3, [r0, o_MusicPlayerInfo_ident] + cmp r2, r3 + beq _081DD82E + bx lr +_081DD82E: + adds r3, 0x1 + str r3, [r0, o_MusicPlayerInfo_ident] + push {r0,lr} + ldr r3, [r0, o_MusicPlayerInfo_func] + cmp r3, 0 + beq _081DD840 + ldr r0, [r0, o_MusicPlayerInfo_intp] + bl call_r3 +_081DD840: + pop {r0} + push {r4-r7} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + adds r7, r0, 0 + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _081DD858 + b _081DDA6C +_081DD858: + ldr r0, lt2_SOUND_INFO_PTR + ldr r0, [r0] + mov r8, r0 + adds r0, r7, 0 + bl FadeOutBody + ldr r0, [r7, o_MusicPlayerInfo_status] + cmp r0, 0 + bge _081DD86C + b _081DDA6C +_081DD86C: + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + ldrh r1, [r7, o_MusicPlayerInfo_tempoI] + adds r0, r1 + b _081DD9BC +_081DD874: + ldrb r6, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] + movs r3, 0x1 + movs r4, 0 +_081DD87C: + ldrb r0, [r5] + movs r1, 0x80 + tst r1, r0 + bne _081DD886 + b _081DD998 +_081DD886: + mov r10, r3 + orrs r4, r3 + mov r11, r4 + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _081DD8BA +_081DD892: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DD8AE + ldrb r0, [r4, 0x10] + cmp r0, 0 + beq _081DD8B4 + subs r0, 0x1 + strb r0, [r4, 0x10] + bne _081DD8B4 + movs r0, 0x40 + orrs r1, r0 + strb r1, [r4] + b _081DD8B4 +_081DD8AE: + adds r0, r4, 0 + bl ClearChain +_081DD8B4: + ldr r4, [r4, 0x34] + cmp r4, 0 + bne _081DD892 +_081DD8BA: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x40 + tst r0, r3 + beq _081DD938 + adds r0, r5, 0 + bl Clear64byte + movs r0, 0x80 + strb r0, [r5] + movs r0, 0x2 + strb r0, [r5, o_MusicPlayerTrack_bendRange] + movs r0, 0x40 + strb r0, [r5, o_MusicPlayerTrack_volX] + movs r0, 0x16 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] + movs r0, 0x1 + adds r1, r5, 0x6 + strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] + b _081DD938 +_081DD8E0: + ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r1, [r2] + cmp r1, 0x80 + bhs _081DD8EC + ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] + b _081DD8F6 +_081DD8EC: + adds r2, 0x1 + str r2, [r5, o_MusicPlayerTrack_cmdPtr] + cmp r1, 0xBD + bcc _081DD8F6 + strb r1, [r5, o_MusicPlayerTrack_runningStatus] +_081DD8F6: + cmp r1, 0xCF + bcc _081DD90C + mov r0, r8 + ldr r3, [r0, o_SoundInfo_plynote] + adds r0, r1, 0 + subs r0, 0xCF + adds r1, r7, 0 + adds r2, r5, 0 + bl call_r3 + b _081DD938 +_081DD90C: + cmp r1, 0xB0 + bls _081DD92E + adds r0, r1, 0 + subs r0, 0xB1 + strb r0, [r7, o_MusicPlayerInfo_cmd] + mov r3, r8 + ldr r3, [r3, o_SoundInfo_MPlayJumpTable] + lsls r0, 2 + ldr r3, [r3, r0] + adds r0, r7, 0 + adds r1, r5, 0 + bl call_r3 + ldrb r0, [r5, o_MusicPlayerTrack_flags] + cmp r0, 0 + beq _081DD994 + b _081DD938 +_081DD92E: + ldr r0, lt_gClockTable + subs r1, 0x80 + adds r1, r0 + ldrb r0, [r1] + strb r0, [r5, o_MusicPlayerTrack_wait] +_081DD938: + ldrb r0, [r5, o_MusicPlayerTrack_wait] + cmp r0, 0 + beq _081DD8E0 + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_wait] + ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] + cmp r1, 0 + beq _081DD994 + ldrb r0, [r5, o_MusicPlayerTrack_mod] + cmp r0, 0 + beq _081DD994 + ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + cmp r0, 0 + beq _081DD95A + subs r0, 0x1 + strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + b _081DD994 +_081DD95A: + ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r0, r1 + strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + adds r1, r0, 0 + subs r0, 0x40 + lsls r0, 24 + bpl _081DD96E + lsls r2, r1, 24 + asrs r2, 24 + b _081DD972 +_081DD96E: + movs r0, 0x80 + subs r2, r0, r1 +_081DD972: + ldrb r0, [r5, o_MusicPlayerTrack_mod] + muls r0, r2 + asrs r2, r0, 6 + ldrb r0, [r5, o_MusicPlayerTrack_modM] + eors r0, r2 + lsls r0, 24 + beq _081DD994 + strb r2, [r5, o_MusicPlayerTrack_modM] + ldrb r0, [r5] + ldrb r1, [r5, o_MusicPlayerTrack_modT] + cmp r1, 0 + bne _081DD98E + movs r1, 0xC + b _081DD990 +_081DD98E: + movs r1, 0x3 +_081DD990: + orrs r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] +_081DD994: + mov r3, r10 + mov r4, r11 +_081DD998: + subs r6, 0x1 + ble _081DD9A4 + movs r0, 0x50 + adds r5, r0 + lsls r3, 1 + b _081DD87C +_081DD9A4: + ldr r0, [r7, o_MusicPlayerInfo_clock] + adds r0, 0x1 + str r0, [r7, o_MusicPlayerInfo_clock] + cmp r4, 0 + bne _081DD9B6 + movs r0, 0x80 + lsls r0, 24 + str r0, [r7, o_MusicPlayerInfo_status] + b _081DDA6C +_081DD9B6: + str r4, [r7, o_MusicPlayerInfo_status] + ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + subs r0, 0x96 +_081DD9BC: + strh r0, [r7, o_MusicPlayerInfo_tempoC] + cmp r0, 0x96 + bcc _081DD9C4 + b _081DD874 +_081DD9C4: + ldrb r2, [r7, o_MusicPlayerInfo_trackCount] + ldr r5, [r7, o_MusicPlayerInfo_tracks] +_081DD9C8: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0x80 + tst r1, r0 + beq _081DDA62 + movs r1, 0xF + tst r1, r0 + beq _081DDA62 + mov r9, r2 + adds r0, r7, 0 + adds r1, r5, 0 + bl TrkVolPitSet + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq _081DDA58 +_081DD9E6: + ldrb r1, [r4, o_SoundChannel_status] + movs r0, 0xC7 + tst r0, r1 + bne _081DD9F6 + adds r0, r4, 0 + bl ClearChain + b _081DDA52 +_081DD9F6: + ldrb r0, [r4, o_SoundChannel_type] + movs r6, 0x7 + ands r6, r0 + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x3 + tst r0, r3 + beq _081DDA14 + bl ChnVolSetAsm + cmp r6, 0 + beq _081DDA14 + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] +_081DDA14: + ldrb r3, [r5, o_MusicPlayerTrack_flags] + movs r0, 0xC + tst r0, r3 + beq _081DDA52 + ldrb r1, [r4, o_SoundChannel_ky] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r2, r1, r0 + bpl _081DDA28 + movs r2, 0 +_081DDA28: + cmp r6, 0 + beq _081DDA46 + mov r0, r8 + ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + adds r0, r6, 0 + bl call_r3 + str r0, [r4, o_CgbChannel_fr] + ldrb r0, [r4, o_CgbChannel_mo] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, o_CgbChannel_mo] + b _081DDA52 +_081DDA46: + adds r1, r2, 0 + ldrb r2, [r5, o_MusicPlayerTrack_pitM] + ldr r0, [r4, o_SoundChannel_wav] + bl MidiKeyToFreq + str r0, [r4, o_SoundChannel_freq] +_081DDA52: + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne _081DD9E6 +_081DDA58: + ldrb r0, [r5, o_MusicPlayerTrack_flags] + movs r1, 0xF0 + ands r0, r1 + strb r0, [r5, o_MusicPlayerTrack_flags] + mov r2, r9 +_081DDA62: + subs r2, 0x1 + ble _081DDA6C + movs r0, 0x50 + adds r5, r0 + bgt _081DD9C8 +_081DDA6C: + ldr r0, lt2_ID_NUMBER + str r0, [r7, o_MusicPlayerInfo_ident] + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r3} + +call_r3: + bx r3 + + .align 2, 0 +lt_gClockTable: .word gClockTable +lt2_SOUND_INFO_PTR: .word SOUND_INFO_PTR +lt2_ID_NUMBER: .word ID_NUMBER + thumb_func_end MPlayMain + + thumb_func_start TrackStop +TrackStop: + push {r4-r6,lr} + adds r5, r1, 0 + ldrb r1, [r5, o_MusicPlayerTrack_flags] + movs r0, 0x80 + tst r0, r1 + beq TrackStop_Done + ldr r4, [r5, o_MusicPlayerTrack_chan] + cmp r4, 0 + beq TrackStop_3 + movs r6, 0 +TrackStop_Loop: + ldrb r0, [r4, o_SoundChannel_status] + cmp r0, 0 + beq TrackStop_2 + ldrb r0, [r4, o_SoundChannel_type] + movs r3, 0x7 + ands r0, r3 + beq TrackStop_1 + ldr r3, =SOUND_INFO_PTR + ldr r3, [r3] + ldr r3, [r3, o_SoundInfo_CgbOscOff] + bl call_r3 +TrackStop_1: + strb r6, [r4, o_SoundChannel_status] +TrackStop_2: + str r6, [r4, o_SoundChannel_track] + ldr r4, [r4, o_SoundChannel_np] + cmp r4, 0 + bne TrackStop_Loop +TrackStop_3: + str r4, [r5, o_MusicPlayerTrack_chan] +TrackStop_Done: + pop {r4-r6} + pop {r0} + bx r0 + .pool + thumb_func_end TrackStop + + thumb_func_start ChnVolSetAsm +ChnVolSetAsm: + ldrb r1, [r4, 0x12] + movs r0, 0x14 + ldrsb r2, [r4, r0] + movs r3, 0x80 + adds r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x10] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _081DDAE8 + movs r0, 0xFF +_081DDAE8: + strb r0, [r4, 0x2] + movs r3, 0x7F + subs r3, r2 + muls r3, r1 + ldrb r0, [r5, 0x11] + muls r0, r3 + asrs r0, 14 + cmp r0, 0xFF + bls _081DDAFC + movs r0, 0xFF +_081DDAFC: + strb r0, [r4, 0x3] + bx lr + thumb_func_end ChnVolSetAsm + + thumb_func_start ply_note +ply_note: + push {r4-r7,lr} + mov r4, r8 + mov r5, r9 + mov r6, r10 + mov r7, r11 + push {r4-r7} + sub sp, 0x18 + str r1, [sp] + adds r5, r2, 0 + ldr r1, =SOUND_INFO_PTR + ldr r1, [r1] + str r1, [sp, 0x4] + ldr r1, =gClockTable + adds r0, r1 + ldrb r0, [r0] + strb r0, [r5, o_MusicPlayerTrack_gateTime] + ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB46 + strb r0, [r5, o_MusicPlayerTrack_key] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB44 + strb r0, [r5, o_MusicPlayerTrack_velocity] + adds r3, 0x1 + ldrb r0, [r3] + cmp r0, 0x80 + bhs _081DDB44 + ldrb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r1, r0 + strb r1, [r5, o_MusicPlayerTrack_gateTime] + adds r3, 0x1 +_081DDB44: + str r3, [r5, o_MusicPlayerTrack_cmdPtr] +_081DDB46: + movs r0, 0 + str r0, [sp, 0x14] + adds r4, r5, 0 + adds r4, o_MusicPlayerTrack_ToneData_type + ldrb r2, [r4] + movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL + tst r0, r2 + beq _081DDB98 + ldrb r3, [r5, o_MusicPlayerTrack_key] + movs r0, TONEDATA_TYPE_SPL + tst r0, r2 + beq _081DDB66 + ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] + adds r1, r3 + ldrb r0, [r1] + b _081DDB68 +_081DDB66: + adds r0, r3, 0 +_081DDB68: + lsls r1, r0, 1 + adds r1, r0 + lsls r1, 2 + ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] + adds r1, r0 + mov r9, r1 + mov r6, r9 + ldrb r1, [r6] + movs r0, 0xC0 + tst r0, r1 + beq _081DDB80 + b _081DDCEA +_081DDB80: + movs r0, 0x80 + tst r0, r2 + beq _081DDB9C + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + beq _081DDB94 + subs r1, 0xC0 + lsls r1, 1 + str r1, [sp, 0x14] +_081DDB94: + ldrb r3, [r6, 0x1] + b _081DDB9C +_081DDB98: + mov r9, r4 + ldrb r3, [r5, 0x5] +_081DDB9C: + str r3, [sp, 0x8] + ldr r6, [sp] + ldrb r1, [r6, 0x9] + ldrb r0, [r5, 0x1D] + adds r0, r1 + cmp r0, 0xFF + bls _081DDBAC + movs r0, 0xFF +_081DDBAC: + str r0, [sp, 0x10] + mov r6, r9 + ldrb r0, [r6] + movs r6, 0x7 + ands r6, r0 + str r6, [sp, 0xC] + beq _081DDBEC + ldr r0, [sp, 0x4] + ldr r4, [r0, 0x1C] + cmp r4, 0 + bne _081DDBC4 + b _081DDCEA +_081DDBC4: + subs r6, 0x1 + lsls r0, r6, 6 + adds r4, r0 + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DDC40 + movs r0, 0x40 + tst r0, r1 + bne _081DDC40 + ldrb r1, [r4, 0x13] + ldr r0, [sp, 0x10] + cmp r1, r0 + bcc _081DDC40 + beq _081DDBE4 + b _081DDCEA +_081DDBE4: + ldr r0, [r4, 0x2C] + cmp r0, r5 + bcs _081DDC40 + b _081DDCEA +_081DDBEC: + ldr r6, [sp, 0x10] + adds r7, r5, 0 + movs r2, 0 + mov r8, r2 + ldr r4, [sp, 0x4] + ldrb r3, [r4, 0x6] + adds r4, 0x50 +_081DDBFA: + ldrb r1, [r4] + movs r0, 0xC7 + tst r0, r1 + beq _081DDC40 + movs r0, 0x40 + tst r0, r1 + beq _081DDC14 + cmp r2, 0 + bne _081DDC18 + adds r2, 0x1 + ldrb r6, [r4, 0x13] + ldr r7, [r4, 0x2C] + b _081DDC32 +_081DDC14: + cmp r2, 0 + bne _081DDC34 +_081DDC18: + ldrb r0, [r4, 0x13] + cmp r0, r6 + bcs _081DDC24 + adds r6, r0, 0 + ldr r7, [r4, 0x2C] + b _081DDC32 +_081DDC24: + bhi _081DDC34 + ldr r0, [r4, 0x2C] + cmp r0, r7 + bls _081DDC30 + adds r7, r0, 0 + b _081DDC32 +_081DDC30: + bcc _081DDC34 +_081DDC32: + mov r8, r4 +_081DDC34: + adds r4, 0x40 + subs r3, 0x1 + bgt _081DDBFA + mov r4, r8 + cmp r4, 0 + beq _081DDCEA +_081DDC40: + adds r0, r4, 0 + bl ClearChain + movs r1, 0 + str r1, [r4, 0x30] + ldr r3, [r5, 0x20] + str r3, [r4, 0x34] + cmp r3, 0 + beq _081DDC54 + str r4, [r3, 0x30] +_081DDC54: + str r4, [r5, 0x20] + str r5, [r4, 0x2C] + ldrb r0, [r5, 0x1B] + strb r0, [r5, 0x1C] + cmp r0, r1 + beq _081DDC66 + adds r1, r5, 0 + bl clear_modM +_081DDC66: + ldr r0, [sp] + adds r1, r5, 0 + bl TrkVolPitSet + ldr r0, [r5, 0x4] + str r0, [r4, 0x10] + ldr r0, [sp, 0x10] + strb r0, [r4, 0x13] + ldr r0, [sp, 0x8] + strb r0, [r4, 0x8] + ldr r0, [sp, 0x14] + strb r0, [r4, 0x14] + mov r6, r9 + ldrb r0, [r6] + strb r0, [r4, 0x1] + ldr r7, [r6, 0x4] + str r7, [r4, 0x24] + ldr r0, [r6, 0x8] + str r0, [r4, 0x4] + ldrh r0, [r5, 0x1E] + strh r0, [r4, 0xC] + bl ChnVolSetAsm + ldrb r1, [r4, 0x8] + movs r0, 0x8 + ldrsb r0, [r5, r0] + adds r3, r1, r0 + bpl _081DDCA0 + movs r3, 0 +_081DDCA0: + ldr r6, [sp, 0xC] + cmp r6, 0 + beq _081DDCCE + mov r6, r9 + ldrb r0, [r6, 0x2] + strb r0, [r4, 0x1E] + ldrb r1, [r6, 0x3] + movs r0, 0x80 + tst r0, r1 + bne _081DDCBA + movs r0, 0x70 + tst r0, r1 + bne _081DDCBC +_081DDCBA: + movs r1, 0x8 +_081DDCBC: + strb r1, [r4, 0x1F] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + ldr r0, [sp, 0xC] + ldr r3, [sp, 0x4] + ldr r3, [r3, 0x30] + bl call_r3 + b _081DDCDC +_081DDCCE: + ldr r0, [r5, o_MusicPlayerTrack_unk_3C] + str r0, [r4, 0x18] + ldrb r2, [r5, 0x9] + adds r1, r3, 0 + adds r0, r7, 0 + bl MidiKeyToFreq +_081DDCDC: + str r0, [r4, 0x20] + movs r0, 0x80 + strb r0, [r4] + ldrb r1, [r5] + movs r0, 0xF0 + ands r0, r1 + strb r0, [r5] +_081DDCEA: + add sp, 0x18 + pop {r0-r7} + mov r8, r0 + mov r9, r1 + mov r10, r2 + mov r11, r3 + pop {r0} + bx r0 + .pool + thumb_func_end ply_note + + thumb_func_start ply_endtie +ply_endtie: + push {r4,r5} + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + cmp r3, 0x80 + bhs _081DDD16 + strb r3, [r1, o_MusicPlayerTrack_key] + adds r2, 0x1 + str r2, [r1, o_MusicPlayerTrack_cmdPtr] + b _081DDD18 +_081DDD16: + ldrb r3, [r1, o_MusicPlayerTrack_key] +_081DDD18: + ldr r1, [r1, o_MusicPlayerTrack_chan] + cmp r1, 0 + beq _081DDD40 + movs r4, 0x83 + movs r5, 0x40 +_081DDD22: + ldrb r2, [r1, o_SoundChannel_status] + tst r2, r4 + beq _081DDD3A + tst r2, r5 + bne _081DDD3A + ldrb r0, [r1, o_SoundChannel_mk] + cmp r0, r3 + bne _081DDD3A + movs r0, 0x40 + orrs r2, r0 + strb r2, [r1, o_SoundChannel_status] + b _081DDD40 +_081DDD3A: + ldr r1, [r1, o_SoundChannel_np] + cmp r1, 0 + bne _081DDD22 +_081DDD40: + pop {r4,r5} + bx lr + thumb_func_end ply_endtie + + thumb_func_start clear_modM +clear_modM: + movs r2, 0 + strb r2, [r1, o_MusicPlayerTrack_modM] + strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] + ldrb r2, [r1, o_MusicPlayerTrack_modT] + cmp r2, 0 + bne _081DDD54 + movs r2, 0xC + b _081DDD56 +_081DDD54: + movs r2, 0x3 +_081DDD56: + ldrb r3, [r1, o_MusicPlayerTrack_flags] + orrs r3, r2 + strb r3, [r1, o_MusicPlayerTrack_flags] + bx lr + thumb_func_end clear_modM + + thumb_func_start ld_r3_tp_adr_i +ld_r3_tp_adr_i_unchecked: + ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + adds r3, r2, 1 + str r3, [r1, o_MusicPlayerTrack_cmdPtr] + ldrb r3, [r2] + bx lr + thumb_func_end ld_r3_tp_adr_i + + thumb_func_start ply_lfos +ply_lfos: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] + cmp r3, 0 + bne _081DDD7C + bl clear_modM +_081DDD7C: + bx r12 + thumb_func_end ply_lfos + + thumb_func_start ply_mod +ply_mod: + mov r12, lr + bl ld_r3_tp_adr_i_unchecked + strb r3, [r1, o_MusicPlayerTrack_mod] + cmp r3, 0 + bne _081DDD90 + bl clear_modM +_081DDD90: + bx r12 + thumb_func_end ply_mod + + .align 2, 0 @ Don't pad with nop. -- cgit v1.2.3 From bde368e439b3a279df18efcf563ec908f3e84330 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Thu, 11 Jan 2018 11:41:33 -0500 Subject: finish splitting and decompiling dragon.s --- src/battle/anim/dark.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++ src/battle/anim/dragon.c | 42 ++++++++++----- 2 files changed, 166 insertions(+), 14 deletions(-) create mode 100755 src/battle/anim/dark.c (limited to 'src') diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c new file mode 100755 index 000000000..306784609 --- /dev/null +++ b/src/battle/anim/dark.c @@ -0,0 +1,138 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" +#include "scanline_effect.h" + +void sub_80DFE90(struct Sprite *sprite); + +void sub_80DFC9C(u8 taskId); +void sub_80DFD58(u8 taskId); + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u8 gObjectBankIDs[]; + +// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage + +void sub_80DFC24(u8 taskId) +{ + int bank; + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + bank = gAnimBankAttacker; + gTasks[taskId].data[1] = 16; + REG_BLDALPHA = 16; + if (GetBankIdentity_permutated(bank) == 1) + REG_BLDCNT = 0x3F42; + else + REG_BLDCNT = 0x3F44; + gTasks[taskId].func = sub_80DFC9C; +} + +void sub_80DFC9C(u8 taskId) +{ + u8 r2 = gTasks[taskId].data[1] >> 8; + u8 r1 = gTasks[taskId].data[1]; + if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0]) + { + r2++; + r1--; + gTasks[taskId].data[1] = (r2 << 8) | r1; + REG_BLDALPHA = (r2 << 8) | r1; + gTasks[taskId].data[2] = 0; + if (r2 == 16) + { + gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1; + DestroyAnimVisualTask(taskId); + } + } + else + gTasks[taskId].data[2]++; +} + +void sub_80DFD24(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[1] = 0x1000; + gTasks[taskId].func = sub_80DFD58; + REG_BLDALPHA = 0x1000; +} + +void sub_80DFD58(u8 taskId) +{ + u8 r1 = gTasks[taskId].data[1] >> 8; + u8 r5 = gTasks[taskId].data[1]; + if (gTasks[taskId].data[2] == (u8)gTasks[taskId].data[0]) + { + r1--; + r5++; + gTasks[taskId].data[1] = (r1 << 8) | r5; + REG_BLDALPHA = (r1 << 8) | r5; + gTasks[taskId].data[2] = 0; + if (r1 == 0) + { + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimVisualTask(taskId); + } + } + else + gTasks[taskId].data[2]++; +} + +// unlike the above is only used in Feint Attack + +void sub_80DFDC0(u8 taskId) +{ + REG_BLDALPHA = 0x1000; + if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) + REG_BLDCNT = 0x3F42; + else + REG_BLDCNT = 0x3F44; + DestroyAnimVisualTask(taskId); +} + +// unused sprite template's callback + +void sub_80DFE14(struct Sprite *sprite) +{ + sprite->data[1] = GetBankPosition(gAnimBankTarget, 2); + sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2); + sprite->data[3] = GetBankPosition(gAnimBankTarget, 3); + sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3); + sprite->data[0] = 0x7E; + sub_8078A5C(sprite); + sprite->data[3] = -sprite->data[1]; + sprite->data[4] = -sprite->data[2]; + sprite->data[6] = 0xFFD8; + sprite->callback = sub_80DFE90; + sub_80DFE90(sprite); +} + +void sub_80DFE90(struct Sprite *sprite) +{ + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + if (sprite->data[7] == 0) + { + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x = sprite->data[3] >> 8; + sprite->pos2.y = sprite->data[4] >> 8; + sprite->data[0]--; + } + sprite->pos2.y += Sin(sprite->data[5], sprite->data[6]); + sprite->data[5] = (sprite->data[5] + 3) & 0xFF; + if (sprite->data[5] > 0x7F) + { + sprite->data[5] = 0; + sprite->data[6] += 20; + sprite->data[7]++; + } + if (--sprite->data[0] == 0) + DestroyAnimSprite(sprite); +} \ No newline at end of file diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index 04859e39f..0feb27dac 100755 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -3,7 +3,7 @@ #include "trig.h" #include "battle_anim.h" #include "sound.h" -#include "unknown_task.h" +#include "scanline_effect.h" void sub_80DF81C(struct Sprite *sprite); void sub_80DFBD8(struct Sprite *sprite); @@ -19,9 +19,10 @@ extern u8 gBankAttacker; extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; extern u16 gUnknown_03000730[]; - +extern u8 gObjectBankIDs[]; // Outrage + void sub_80DF5A0(struct Sprite *sprite) { sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); @@ -44,6 +45,8 @@ void sub_80DF5A0(struct Sprite *sprite) sprite->callback = sub_8078504; } +// part of Dragon Breath + void sub_80DF63C(struct Sprite *sprite) { sub_8078650(sprite); @@ -69,6 +72,8 @@ void sub_80DF63C(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } +// Dragon Rage + void sub_80DF6F0(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) @@ -87,6 +92,8 @@ void sub_80DF6F0(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, move_anim_8074EE0); } +// Dragon Breath init + void sub_80DF760(struct Sprite *sprite) { if (GetBankSide(gAnimBankAttacker)) @@ -94,6 +101,8 @@ void sub_80DF760(struct Sprite *sprite) sub_80DF63C(sprite); } +//next 2 tasks might be Dragon Dance orbs? + void sub_80DF78C(struct Sprite *sprite) { u16 r5; @@ -152,25 +161,27 @@ void sub_80DF81C(struct Sprite *sprite) } } +// Dragon Dance scanline eff + void sub_80DF924(u8 taskId) { - struct UnknownTaskStruct sp; + struct ScanlineEffectParams sp; struct Task *task = &gTasks[taskId]; u16 i; u8 r1; if (GetBankIdentity_permutated(gAnimBankAttacker) == 1) { - sp.dest = ®_BG1HOFS; + sp.dmaDest = ®_BG1HOFS; task->data[2] = gBattle_BG1_X; } else { - sp.dest = ®_BG2HOFS; + sp.dmaDest = ®_BG2HOFS; task->data[2] = gBattle_BG2_X; } - sp.control = 0xA2600001; - sp.unk8 = 1; - sp.unk9 = 0; + sp.dmaControl = 0xA2600001; + sp.initState = 1; + sp.unused9 = 0; r1 = sub_8077FC0(gAnimBankAttacker); task->data[3] = r1 - 32; task->data[4] = r1 + 32; @@ -178,10 +189,10 @@ void sub_80DF924(u8 taskId) task->data[3] = 0; for(i = task->data[3];i <= task->data[4];i++) { - gUnknown_03004DE0[0][i] = task->data[2]; - gUnknown_03004DE0[1][i] = task->data[2]; + gScanlineEffectRegBuffers[0][i] = task->data[2]; + gScanlineEffectRegBuffers[1][i] = task->data[2]; } - sub_80895F8(sp); + ScanlineEffect_SetParams(sp); task->func = sub_80DF9F4; } @@ -214,7 +225,7 @@ void sub_80DF9F4(u8 taskId) sub_80DFAB0(task); break; case 3: - gUnknown_03004DC0.unk15 = 3; + gScanlineEffect.state = 3; task->data[0]++; break; case 4: @@ -229,12 +240,14 @@ void sub_80DFAB0(struct Task *task) u16 i; for (i = task->data[3]; i <= task->data[4]; i++) { - gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; r3 = (r3 + 8) & 0xFF; } task->data[5] = (task->data[5] + 9) & 0xFF; } +// Overheat + void sub_80DFB28(struct Sprite *sprite) { int r6 = (gBattleAnimArgs[2] * 3) / 5; @@ -259,4 +272,5 @@ void sub_80DFBD8(struct Sprite *sprite) sprite->pos2.y = sprite->data[5] / 10; if (++sprite->data[0] > sprite->data[3]) DestroyAnimSprite(sprite); -} \ No newline at end of file +} + -- cgit v1.2.3 From bed652ee5411efbbbdf7e0920d9fd13646ec39c1 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Thu, 11 Jan 2018 13:21:20 -0500 Subject: fixing things --- src/battle/anim/dark.c | 2 +- src/battle/anim/dragon.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 306784609..8ceb00298 100755 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -135,4 +135,4 @@ void sub_80DFE90(struct Sprite *sprite) } if (--sprite->data[0] == 0) DestroyAnimSprite(sprite); -} \ No newline at end of file +} diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c index 0feb27dac..bf39e01c0 100755 --- a/src/battle/anim/dragon.c +++ b/src/battle/anim/dragon.c @@ -127,7 +127,7 @@ void sub_80DF81C(struct Sprite *sprite) { switch (sprite->data[0]) { - case 0: + case 0: sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; sprite->pos2.x = Cos(sprite->data[6], sprite->data[7]); sprite->pos2.y = Sin(sprite->data[6], sprite->data[7]); @@ -143,7 +143,7 @@ void sub_80DF81C(struct Sprite *sprite) sprite->data[0]++; } break; - case 1: + case 1: sprite->data[6] = (sprite->data[6] - sprite->data[5]) & 0xFF; if (sprite->data[7] <= 0x95 && (sprite->data[7] += 8) > 0x95) sprite->data[7] = 0x96; @@ -201,7 +201,7 @@ void sub_80DF9F4(u8 taskId) struct Task *task = &gTasks[taskId]; switch (task->data[0]) { - case 0: + case 0: if (++task->data[7] > 1) { task->data[7] = 0; @@ -210,12 +210,12 @@ void sub_80DF9F4(u8 taskId) } sub_80DFAB0(task); break; - case 1: + case 1: if (++task->data[1] > 0x3C) task->data[0]++; sub_80DFAB0(task); break; - case 2: + case 2: if (++task->data[7] > 1) { task->data[7] = 0; @@ -224,11 +224,11 @@ void sub_80DF9F4(u8 taskId) } sub_80DFAB0(task); break; - case 3: + case 3: gScanlineEffect.state = 3; task->data[0]++; break; - case 4: + case 4: DestroyAnimVisualTask(taskId); break; } @@ -273,4 +273,3 @@ void sub_80DFBD8(struct Sprite *sprite) if (++sprite->data[0] > sprite->data[3]) DestroyAnimSprite(sprite); } - -- cgit v1.2.3 From 7a65953ccc2313db6de0ec061220b1a5f8751b36 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jan 2018 08:53:01 -0500 Subject: through sub_80999C4 --- src/pokemon/pokemon_storage_system_3.c | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 7f5c84b49..2af88e8cd 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -494,3 +494,89 @@ bool8 sub_809971C(void) } return TRUE; } + +const union AffineAnimCmd gSpriteAffineAnim_83B6F34[] = { + AFFINEANIMCMD_FRAME(-2, -2, 0, 120), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_83B6F44[] = { + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(16, 16, 0, 15), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[] = { + gSpriteAffineAnim_83B6F34, + gSpriteAffineAnim_83B6F44 +}; + +void sub_809981C(u8 mode, u8 idx) +{ + switch (mode) + { + case 0: + gPokemonStorageSystemPtr->unk_10cc = gPokemonStorageSystemPtr->unk_1038 + idx; + break; + case 1: + gPokemonStorageSystemPtr->unk_10cc = gPokemonStorageSystemPtr->unk_1050 + idx; + break; + case 2: + gPokemonStorageSystemPtr->unk_10cc = &gPokemonStorageSystemPtr->unk_1034; + break; + default: + return; + } + if (*gPokemonStorageSystemPtr->unk_10cc) + { + InitSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc); + (*gPokemonStorageSystemPtr->unk_10cc)->oam.affineMode = ST_OAM_AFFINE_NORMAL; + (*gPokemonStorageSystemPtr->unk_10cc)->affineAnims = gSpriteAffineAnimTable_83B6F5C; + StartSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc, 0); + } +} + +bool8 sub_80998D8(void) +{ + if (*gPokemonStorageSystemPtr->unk_10cc == NULL || (*gPokemonStorageSystemPtr->unk_10cc)->invisible) + return FALSE; + if ((*gPokemonStorageSystemPtr->unk_10cc)->affineAnimEnded) + { + (*gPokemonStorageSystemPtr->unk_10cc)->invisible = TRUE; + } + return TRUE; +} + +void sub_8099920(void) +{ + if (*gPokemonStorageSystemPtr->unk_10cc) + { + FreeOamMatrix((*gPokemonStorageSystemPtr->unk_10cc)->oam.matrixNum); + sub_8099BE0(*gPokemonStorageSystemPtr->unk_10cc); + *gPokemonStorageSystemPtr->unk_10cc = NULL; + } +} + +void sub_8099958(void) +{ + if (*gPokemonStorageSystemPtr->unk_10cc) + { + (*gPokemonStorageSystemPtr->unk_10cc)->invisible = FALSE; + StartSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc, 1); + } +} + +bool8 sub_8099990(void) +{ + if (gPokemonStorageSystemPtr->unk_10cc == NULL) + return FALSE; + if ((*gPokemonStorageSystemPtr->unk_10cc)->affineAnimEnded) + gPokemonStorageSystemPtr->unk_10cc = NULL; + return TRUE; +} + +void sub_80999C4(struct Sprite *sprite) +{ + sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x; + sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + gPokemonStorageSystemPtr->unk_11c0->pos2.y + 4; +} -- cgit v1.2.3 From 12ec094b4b3641cf33fc1cf45634090e067c70b6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jan 2018 09:46:31 -0500 Subject: Remaining functions and data in pss3 --- src/pokemon/pokemon_storage_system_3.c | 131 +++++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 2af88e8cd..9d4b88b5d 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -24,20 +24,6 @@ void sub_8099BE0(struct Sprite *sprite); const struct OamData gOamData_83B6F2C; -const struct SpriteTemplate gSpriteTemplate_83B6F14 = { - 0x000f, - 0xdac0, - &gOamData_83B6F2C, - gDummySpriteAnimTable, - NULL, - gDummySpriteAffineAnimTable, - SpriteCallbackDummy -}; - -const struct OamData gOamData_83B6F2C = { - .size = 2 -}; - // .text u8 get_preferred_box(void) @@ -495,21 +481,7 @@ bool8 sub_809971C(void) return TRUE; } -const union AffineAnimCmd gSpriteAffineAnim_83B6F34[] = { - AFFINEANIMCMD_FRAME(-2, -2, 0, 120), - AFFINEANIMCMD_END -}; - -const union AffineAnimCmd gSpriteAffineAnim_83B6F44[] = { - AFFINEANIMCMD_FRAME(16, 16, 0, 0), - AFFINEANIMCMD_FRAME(16, 16, 0, 15), - AFFINEANIMCMD_END -}; - -const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[] = { - gSpriteAffineAnim_83B6F34, - gSpriteAffineAnim_83B6F44 -}; +const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[]; void sub_809981C(u8 mode, u8 idx) { @@ -580,3 +552,104 @@ void sub_80999C4(struct Sprite *sprite) sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x; sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + gPokemonStorageSystemPtr->unk_11c0->pos2.y + 4; } + +u16 sub_80999E8(u16 a0) +{ + u16 i; + u16 retval; + + for (i = 0; i < 40; i++) + { + if (gPokemonStorageSystemPtr->unk_1120[i] == a0) + break; + } + if (i == 40) + { + for (i = 0; i < 40; i++) + { + if (gPokemonStorageSystemPtr->unk_1120[i] == 0) + break; + } + } + if (i != 40) + { + gPokemonStorageSystemPtr->unk_1120[i] = a0; + gPokemonStorageSystemPtr->unk_10d0[i]++; + retval = i * 16; + CpuCopy32(gMonIconTable[a0], BG_CHAR_ADDR(4) + 32 * retval, 0x200); + return retval; + } + return -1; +} + +void sub_8099AAC(u16 a0) +{ + u16 i; + + for (i = 0; i < 40; i++) + { + if (gPokemonStorageSystemPtr->unk_1120[i] == a0) + { + if (--gPokemonStorageSystemPtr->unk_10d0[i] == 0) + gPokemonStorageSystemPtr->unk_1120[i] = 0; + break; + } + } +} + +struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority) +{ + struct SpriteTemplate template = { + 0x000f, + 0xdac0, + &gOamData_83B6F2C, + gDummySpriteAnimTable, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy + }; + u16 tileNum; + u8 spriteId; + + species = mon_icon_convert_unown_species_id(species, personality); + template.paletteTag = 0xdac0 + gMonIconPaletteIndices[species]; + tileNum = sub_80999E8(species); + if (tileNum == 0xFFFF) + return NULL; + spriteId = CreateSprite(&template, x, y, subpriority); + if (spriteId == MAX_SPRITES) + { + sub_8099AAC(species); + return NULL; + } + gSprites[spriteId].oam.tileNum = tileNum; + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].data[0] = species; + return gSprites + spriteId; +} + +void sub_8099BE0(struct Sprite *sprite) +{ + sub_8099AAC(sprite->data[0]); + DestroySprite(sprite); +} + +const struct OamData gOamData_83B6F2C = { + .size = 2 +}; + +const union AffineAnimCmd gSpriteAffineAnim_83B6F34[] = { + AFFINEANIMCMD_FRAME(-2, -2, 0, 120), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gSpriteAffineAnim_83B6F44[] = { + AFFINEANIMCMD_FRAME(16, 16, 0, 0), + AFFINEANIMCMD_FRAME(16, 16, 0, 15), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[] = { + gSpriteAffineAnim_83B6F34, + gSpriteAffineAnim_83B6F44 +}; -- cgit v1.2.3 From 3b8f6133865af6ede3628f3df8dd71648b43b3bc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jan 2018 09:57:20 -0500 Subject: some renaming in pss3 --- src/pokemon/pokemon_storage_system_2.c | 6 +-- src/pokemon/pokemon_storage_system_3.c | 78 +++++++++++++++++----------------- 2 files changed, 42 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index e5466ea70..f5eaa2166 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -872,7 +872,7 @@ void sub_809746C(void) gPokemonStorageSystemPtr->unk_0004++; break; case 3: - if (!sub_8099374()) + if (sub_8099374() == 0) { sub_809B6BC(); BoxSetMosaic(); @@ -965,7 +965,7 @@ void sub_8097594(void) } break; case 6: - if (!sub_8099374()) + if (sub_8099374() == 0) { sub_809B440(); BoxSetMosaic(); @@ -1073,7 +1073,7 @@ void sub_8097858(void) gPokemonStorageSystemPtr->unk_0004++; break; case 1: - if (!sub_8099374()) + if (sub_8099374() == 0) { sub_80987DC(); SetPSSCallback(sub_8096C84); diff --git a/src/pokemon/pokemon_storage_system_3.c b/src/pokemon/pokemon_storage_system_3.c index 9d4b88b5d..da26c6fc5 100644 --- a/src/pokemon/pokemon_storage_system_3.c +++ b/src/pokemon/pokemon_storage_system_3.c @@ -13,12 +13,12 @@ // Static ROM declarations -void sub_8098E68(struct Sprite *sprite); -void sub_8099388(struct Sprite *sprite, u16 a1); -void sub_80993F4(struct Sprite *sprite); -void sub_80999C4(struct Sprite *sprite); -struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 a2, s16 a3, u8 a4, u8 a5); -void sub_8099BE0(struct Sprite *sprite); +static void sub_8098E68(struct Sprite *sprite); +static void sub_8099388(struct Sprite *sprite, u16 a1); +static void sub_80993F4(struct Sprite *sprite); +static void sub_80999C4(struct Sprite *sprite); +static struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority); +static void PSS_DestroyMonIconSprite(struct Sprite *sprite); // .rodata @@ -88,7 +88,7 @@ void sub_8098D20(u8 monId) } } -void sub_8098DE0(s16 a0) +static void sub_8098DE0(s16 a0) { u16 monId; for (monId = 0; monId < 30; monId++) @@ -102,7 +102,7 @@ void sub_8098DE0(s16 a0) } } -void sub_8098E24(struct Sprite *sprite) +static void sub_8098E24(struct Sprite *sprite) { if (sprite->data[1] != 0) { @@ -117,7 +117,7 @@ void sub_8098E24(struct Sprite *sprite) } } -void sub_8098E68(struct Sprite *sprite) +static void sub_8098E68(struct Sprite *sprite) { if (sprite->data[4] != 0) { @@ -132,7 +132,7 @@ void sub_8098E68(struct Sprite *sprite) } } -void sub_8098EA0(u8 col) +static void sub_8098EA0(u8 col) { u16 i; @@ -140,44 +140,44 @@ void sub_8098EA0(u8 col) { if (gPokemonStorageSystemPtr->unk_1050[col]) { - sub_8099BE0(gPokemonStorageSystemPtr->unk_1050[col]); + PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1050[col]); gPokemonStorageSystemPtr->unk_1050[col] = NULL; } col += 6; } } -u8 sub_8098EE0(u8 a0, u16 a1, s16 a2) +static u8 sub_8098EE0(u8 col, u16 a1, s16 a2) { u16 i; u16 x; u16 y; u8 count; u8 x1; - u16 sp1c; + u16 curX; y = 0x2c; - x = 24 * a0 + 0x64; - sp1c = x - (a1 + 1) * a2; - x1 = 18 - a0; + x = 24 * col + 0x64; + curX = x - (a1 + 1) * a2; + x1 = 18 - col; count = 0; for (i = 0; i < 5; i++) { - u16 species = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + a0, MON_DATA_SPECIES2); + u16 species = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + col, MON_DATA_SPECIES2); if (species != SPECIES_NONE) { - gPokemonStorageSystemPtr->unk_1050[a0] = PSS_SpawnMonIconSprite(species, GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + a0, MON_DATA_PERSONALITY), sp1c, y, 2, x1); - if (gPokemonStorageSystemPtr->unk_1050[a0]) + gPokemonStorageSystemPtr->unk_1050[col] = PSS_SpawnMonIconSprite(species, GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + col, MON_DATA_PERSONALITY), curX, y, 2, x1); + if (gPokemonStorageSystemPtr->unk_1050[col]) { - gPokemonStorageSystemPtr->unk_1050[a0]->data[1] = a1; - gPokemonStorageSystemPtr->unk_1050[a0]->data[2] = a2; - gPokemonStorageSystemPtr->unk_1050[a0]->data[3] = x; - gPokemonStorageSystemPtr->unk_1050[a0]->callback = sub_8098E24; + gPokemonStorageSystemPtr->unk_1050[col]->data[1] = a1; + gPokemonStorageSystemPtr->unk_1050[col]->data[2] = a2; + gPokemonStorageSystemPtr->unk_1050[col]->data[3] = x; + gPokemonStorageSystemPtr->unk_1050[col]->callback = sub_8098E24; count++; } } - a0 += 6; + col += 6; y += 24; } return count; @@ -299,7 +299,7 @@ u8 sub_8099374(void) return gPokemonStorageSystemPtr->unk_1171; } -void sub_8099388(struct Sprite *sprite, u16 a1) +static void sub_8099388(struct Sprite *sprite, u16 a1) { s16 r3; s16 r4; @@ -323,7 +323,7 @@ void sub_8099388(struct Sprite *sprite, u16 a1) sprite->callback = sub_80993F4; } -void sub_80993F4(struct Sprite *sprite) +static void sub_80993F4(struct Sprite *sprite) { if (sprite->data[6]) { @@ -355,7 +355,7 @@ void sub_8099480(void) { if (gPokemonStorageSystemPtr->unk_1034) { - sub_8099BE0(gPokemonStorageSystemPtr->unk_1034); + PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1034); gPokemonStorageSystemPtr->unk_1034 = NULL; } } @@ -383,7 +383,7 @@ void sub_8099520(u8 a0) { if (gPokemonStorageSystemPtr->unk_1038[a0]) { - sub_8099BE0(gPokemonStorageSystemPtr->unk_1038[a0]); + PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1038[a0]); gPokemonStorageSystemPtr->unk_1038[a0] = NULL; } } @@ -396,7 +396,7 @@ void sub_809954C(void) { if (gPokemonStorageSystemPtr->unk_1038[i]) { - sub_8099BE0(gPokemonStorageSystemPtr->unk_1038[i]); + PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1038[i]); gPokemonStorageSystemPtr->unk_1038[i] = NULL; } } @@ -524,7 +524,7 @@ void sub_8099920(void) if (*gPokemonStorageSystemPtr->unk_10cc) { FreeOamMatrix((*gPokemonStorageSystemPtr->unk_10cc)->oam.matrixNum); - sub_8099BE0(*gPokemonStorageSystemPtr->unk_10cc); + PSS_DestroyMonIconSprite(*gPokemonStorageSystemPtr->unk_10cc); *gPokemonStorageSystemPtr->unk_10cc = NULL; } } @@ -547,13 +547,13 @@ bool8 sub_8099990(void) return TRUE; } -void sub_80999C4(struct Sprite *sprite) +static void sub_80999C4(struct Sprite *sprite) { sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x; sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + gPokemonStorageSystemPtr->unk_11c0->pos2.y + 4; } -u16 sub_80999E8(u16 a0) +static u16 PSS_LoadSpeciesIconGfx(u16 a0) { u16 i; u16 retval; @@ -579,10 +579,10 @@ u16 sub_80999E8(u16 a0) CpuCopy32(gMonIconTable[a0], BG_CHAR_ADDR(4) + 32 * retval, 0x200); return retval; } - return -1; + return 0xFFFF; } -void sub_8099AAC(u16 a0) +static void PSS_ForgetSpeciesIcon(u16 a0) { u16 i; @@ -597,7 +597,7 @@ void sub_8099AAC(u16 a0) } } -struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority) +static struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority) { struct SpriteTemplate template = { 0x000f, @@ -613,13 +613,13 @@ struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y species = mon_icon_convert_unown_species_id(species, personality); template.paletteTag = 0xdac0 + gMonIconPaletteIndices[species]; - tileNum = sub_80999E8(species); + tileNum = PSS_LoadSpeciesIconGfx(species); if (tileNum == 0xFFFF) return NULL; spriteId = CreateSprite(&template, x, y, subpriority); if (spriteId == MAX_SPRITES) { - sub_8099AAC(species); + PSS_ForgetSpeciesIcon(species); return NULL; } gSprites[spriteId].oam.tileNum = tileNum; @@ -628,9 +628,9 @@ struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y return gSprites + spriteId; } -void sub_8099BE0(struct Sprite *sprite) +static void PSS_DestroyMonIconSprite(struct Sprite *sprite) { - sub_8099AAC(sprite->data[0]); + PSS_ForgetSpeciesIcon(sprite->data[0]); DestroySprite(sprite); } -- cgit v1.2.3 From f37add5cfb4bb369ec096d91f62915ee4f88a1d7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jan 2018 12:13:35 -0500 Subject: through sub_8099D90 --- src/pokemon/pokemon_storage_system_4.c | 71 ++++++++++++++++++++++++++++++++++ src/pokemon/pokemon_storage_system_6.c | 14 +++++++ 2 files changed, 85 insertions(+) create mode 100644 src/pokemon/pokemon_storage_system_6.c (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index f7a008db2..697292d5c 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -18,6 +18,77 @@ EWRAM_DATA u16 gUnknown_020384EA = 0; // Static ROM declarations +void sub_809900C(u8 boxId, s8 a1); +s8 sub_8099D90(u8 boxId); +void sub_8099EB0(u8 boxId, s8 a1); +void sub_809A23C(u8 boxId); +void sub_809A3D0(u8 boxId, s8 a1); +void sub_809A598(void); +void sub_809A6DC(void); +void sub_809A774(s8 a0); +void sub_809A810(void); + // .rodata // .text + +void sub_8099BF8(u8 boxId) +{ + gPokemonStorageSystemPtr->unk_08ba = 0; + gPokemonStorageSystemPtr->unk_08b4 = 0; + DmaFill32(3, 0, BG_SCREEN_ADDR(26), 0x1000); + sub_8099EB0(boxId, 0); + sub_809A23C(boxId); + sub_809A6DC(); + SpawnBoxIconSprites(boxId); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_TXT512x256; +} + +void sub_8099C70(u8 whichBox) +{ + s8 r4 = sub_8099D90(whichBox); + sub_8099EB0(whichBox, r4); + gPokemonStorageSystemPtr->unk_08b6 = r4 * 6; + gPokemonStorageSystemPtr->unk_08b8 = 0x20; + gPokemonStorageSystemPtr->unk_08bb = whichBox; + gPokemonStorageSystemPtr->unk_08bc = r4 > 0 ? 0 : 5; + gPokemonStorageSystemPtr->unk_08be = r4; + gPokemonStorageSystemPtr->unk_08c0 = r4 > 0 ? 0x108 : 0x38; + gPokemonStorageSystemPtr->unk_08c2 = r4 > 0 ? 0 : 5; + gPokemonStorageSystemPtr->unk_08c4 = r4; + gPokemonStorageSystemPtr->unk_08c6 = 0; + gPokemonStorageSystemPtr->unk_08c8 = 2; + sub_809900C(whichBox, r4); + sub_809A3D0(whichBox, r4); + sub_809A774(r4); +} + +bool8 sub_8099D34(void) +{ + bool8 retVal = sub_80990AC(); + if (gPokemonStorageSystemPtr->unk_08b8 != 0) + { + gPokemonStorageSystemPtr->unk_08b4 += gPokemonStorageSystemPtr->unk_08b6; + gPokemonStorageSystemPtr->unk_08b4 &= 0x1ff; + if (--gPokemonStorageSystemPtr->unk_08b8 == 0) + { + sub_809A598(); + sub_809A810(); + } + return TRUE; + } + return retVal; +} + +s8 sub_8099D90(u8 boxId) +{ + u8 curBox = get_preferred_box(); + u8 i; + + for (i = 0; curBox != boxId; i++) + { + if (++curBox >= 14) + curBox = 0; + } + return i <= 6 ? 1 : -1; +} diff --git a/src/pokemon/pokemon_storage_system_6.c b/src/pokemon/pokemon_storage_system_6.c new file mode 100644 index 000000000..a781c1ed2 --- /dev/null +++ b/src/pokemon/pokemon_storage_system_6.c @@ -0,0 +1,14 @@ + +// Includes +#include "global.h" +#include "pokemon_storage_system.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations + +// .rodata + +// .text -- cgit v1.2.3 From 8c2c8ed3a9e377382a0ac645053e4b7b4ab41c4e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jan 2018 12:50:59 -0500 Subject: match unref_sub_8095D08 --- src/pokemon/pokemon_storage_system.c | 149 ++++++----------------------------- 1 file changed, 22 insertions(+), 127 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 80081c963..c02fdfb3a 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -177,7 +177,27 @@ void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src } } -#ifdef NONMATCHING +#define MAX_DMA_BLOCK_SIZE 0x1000 +#define Dma3FillLarge_(value, dest, size, bit) \ +{ \ + void *_dest = dest; \ + u32 _size = size; \ + while (1) \ + { \ + if (_size <= MAX_DMA_BLOCK_SIZE) \ + { \ + DmaFill##bit(3, value, _dest, _size); \ + break; \ + } \ + DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \ + _dest += MAX_DMA_BLOCK_SIZE; \ + _size -= MAX_DMA_BLOCK_SIZE; \ + } \ +} + +#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16) +#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32) + void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) { u16 i; @@ -185,133 +205,8 @@ void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 he dest += dest_top * 0x20 + dest_left; width *= 2; for (i = 0; i < height; dest += 0x20, i++) - { - void *_dest = dest; - size_t _size = width; - if (_size <= 0x1000) - { - DmaFill16(3, 0, _dest, _size); - } - else - { - while (1) - { - DmaFill16(3, 0, _dest, 0x1000); - _dest += 0x1000; - _size -= 0x1000; - if (_size <= 0x1000) - { - DmaFill16(3, 0, _dest, _size); - break; - } - } - } - } -} -#else -__attribute__((naked)) void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tadds r4, r0, 0\n" - "\tldr r0, [sp, 0x28]\n" - "\tlsls r1, 16\n" - "\tlsrs r1, 16\n" - "\tlsls r2, 16\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tmov r10, r0\n" - "\tlsrs r2, 11\n" - "\tadds r2, r1\n" - "\tlsls r2, 1\n" - "\tadds r4, r2\n" - "\tlsls r3, 17\n" - "\tlsrs r0, r3, 16\n" - "\tstr r0, [sp, 0x4]\n" - "\tmovs r0, 0\n" - "\tcmp r0, r10\n" - "\tbcs _08095DB2\n" - "\tmovs r6, 0x80\n" - "\tlsls r6, 5\n" - "\tmov r5, sp\n" - "\tldr r7, _08095D74 @ =0x040000d4\n" - "\tlsrs r3, 17\n" - "\tmov r9, r3\n" - "\tmov r1, r9\n" - "\tmovs r2, 0x81\n" - "\tlsls r2, 24\n" - "\torrs r1, r2\n" - "\tmov r9, r1\n" - "_08095D4E:\n" - "\tadds r3, r4, 0\n" - "\tldr r2, [sp, 0x4]\n" - "\tmovs r1, 0x40\n" - "\tadds r1, r4\n" - "\tmov r8, r1\n" - "\tadds r0, 0x1\n" - "\tmov r12, r0\n" - "\tcmp r2, r6\n" - "\tbhi _08095D78\n" - "\tmovs r0, 0\n" - "\tstrh r0, [r5]\n" - "\tmov r2, sp\n" - "\tstr r2, [r7]\n" - "\tstr r4, [r7, 0x4]\n" - "\tmov r0, r9\n" - "\tstr r0, [r7, 0x8]\n" - "\tldr r0, [r7, 0x8]\n" - "\tb _08095DA6\n" - "\t.align 2, 0\n" - "_08095D74: .4byte 0x040000d4\n" - "_08095D78:\n" - "\tmovs r4, 0\n" - "\tstrh r4, [r5]\n" - "\tldr r1, _08095DC4 @ =0x040000d4\n" - "\tmov r0, sp\n" - "\tstr r0, [r1]\n" - "\tstr r3, [r1, 0x4]\n" - "\tldr r0, _08095DC8 @ =0x81000800\n" - "\tstr r0, [r1, 0x8]\n" - "\tldr r0, [r1, 0x8]\n" - "\tadds r3, r6\n" - "\tsubs r2, r6\n" - "\tcmp r2, r6\n" - "\tbhi _08095D78\n" - "\tstrh r4, [r5]\n" - "\tmov r0, sp\n" - "\tstr r0, [r1]\n" - "\tstr r3, [r1, 0x4]\n" - "\tlsrs r0, r2, 1\n" - "\tmovs r2, 0x81\n" - "\tlsls r2, 24\n" - "\torrs r0, r2\n" - "\tstr r0, [r1, 0x8]\n" - "\tldr r0, [r1, 0x8]\n" - "_08095DA6:\n" - "\tmov r4, r8\n" - "\tmov r1, r12\n" - "\tlsls r0, r1, 16\n" - "\tlsrs r0, 16\n" - "\tcmp r0, r10\n" - "\tbcc _08095D4E\n" - "_08095DB2:\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_08095DC4: .4byte 0x040000d4\n" - "_08095DC8: .4byte 0x81000800"); + Dma3FillLarge16_(0, dest, width); } -#endif s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) { -- cgit v1.2.3 From aadd5c8ac07ef5967d8e2cf58fbdd04f79d5b82a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jan 2018 13:41:32 -0500 Subject: through sub_8099EB0 and relevant data --- src/pokemon/pokemon_storage_system_4.c | 233 ++++++++++++++++++++++++++++++++- 1 file changed, 232 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 697292d5c..8982ce461 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "palette.h" #include "pokemon_storage_system.h" // Static type declarations @@ -16,14 +17,24 @@ EWRAM_DATA u8 gUnknown_020384E8 = 0; EWRAM_DATA u8 gUnknown_020384E9 = 0; EWRAM_DATA u16 gUnknown_020384EA = 0; +struct WallpaperTable { + const u8 *tiles; + u32 size; + const u8 *tileMap; + const u16 *palettes; +}; + // Static ROM declarations void sub_809900C(u8 boxId, s8 a1); s8 sub_8099D90(u8 boxId); void sub_8099EB0(u8 boxId, s8 a1); +void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3); +void sub_809A14C(u16 *vdest); void sub_809A23C(u8 boxId); void sub_809A3D0(u8 boxId, s8 a1); void sub_809A598(void); +void sub_809A654(void); void sub_809A6DC(void); void sub_809A774(s8 a0); void sub_809A810(void); @@ -34,7 +45,7 @@ void sub_809A810(void); void sub_8099BF8(u8 boxId) { - gPokemonStorageSystemPtr->unk_08ba = 0; + gPokemonStorageSystemPtr->unk_08ba = FALSE; gPokemonStorageSystemPtr->unk_08b4 = 0; DmaFill32(3, 0, BG_SCREEN_ADDR(26), 0x1000); sub_8099EB0(boxId, 0); @@ -92,3 +103,223 @@ s8 sub_8099D90(u8 boxId) } return i <= 6 ? 1 : -1; } + +void sub_8099DCC(u8 wallpaperId) +{ + u8 curBox = get_preferred_box(); + gPokemonStorage.wallpaper[curBox] = wallpaperId; + gPokemonStorageSystemPtr->unk_1032 = 0; +} + +bool8 sub_8099E08(void) +{ + switch (gPokemonStorageSystemPtr->unk_1032) + { + case 0: + BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0, 0x10, 0xffff); + gPokemonStorageSystemPtr->unk_1032++; + break; + case 1: + if (!UpdatePaletteFade()) + { + u8 curBox = get_preferred_box(); + sub_8099EB0(curBox, 0); + sub_809A654(); + BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0x10, 0, 0xffff); + gPokemonStorageSystemPtr->unk_1032++; + } + break; + case 2: + if (!UpdatePaletteFade()) + gPokemonStorageSystemPtr->unk_1032++; + break; + case 3: + return FALSE; + } + return TRUE; +} + +const u16 gWallpaperPalettes_Forest[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Forest_2[] = INCBIN_U16("graphics/pokemon_storage/forest_frame.gbapal"); +const u16 gWallpaperPalettes_Forest_2_3[] = INCBIN_U16("graphics/pokemon_storage/forest_bg.gbapal"); + +const u8 gWallpaperTiles_Forest[] = INCBIN_U8("graphics/pokemon_storage/forest.4bpp.lz"); + +const u8 gWallpaperTilemap_Forest[] = INCBIN_U8("graphics/pokemon_storage/forest.bin.lz"); + +const u16 gWallpaperPalettes_City[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_City_2[] = INCBIN_U16("graphics/pokemon_storage/city_frame.gbapal"); +const u16 gWallpaperPalettes_City_2_3[] = INCBIN_U16("graphics/pokemon_storage/city_bg.gbapal"); + +const u8 gWallpaperTiles_City[] = INCBIN_U8("graphics/pokemon_storage/city.4bpp.lz"); + +const u8 gWallpaperTilemap_City[] = INCBIN_U8("graphics/pokemon_storage/city.bin.lz"); + +const u16 gWallpaperPalettes_Desert[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Desert_2[] = INCBIN_U16("graphics/pokemon_storage/desert_frame.gbapal"); +const u16 gWallpaperPalettes_Desert_2_3[] = INCBIN_U16("graphics/pokemon_storage/desert_bg.gbapal"); + +const u8 gWallpaperTiles_Desert[] = INCBIN_U8("graphics/pokemon_storage/desert.4bpp.lz"); + +const u8 gWallpaperTilemap_Desert[] = INCBIN_U8("graphics/pokemon_storage/desert.bin.lz"); + +const u16 gWallpaperPalettes_Savanna[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Savanna_2[] = INCBIN_U16("graphics/pokemon_storage/savanna_frame.gbapal"); +const u16 gWallpaperPalettes_Savanna_2_3[] = INCBIN_U16("graphics/pokemon_storage/savanna_bg.gbapal"); + +const u8 gWallpaperTiles_Savanna[] = INCBIN_U8("graphics/pokemon_storage/savanna.4bpp.lz"); + +const u8 gWallpaperTilemap_Savanna[] = INCBIN_U8("graphics/pokemon_storage/savanna.bin.lz"); + +const u16 gWallpaperPalettes_Crag[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Crag_2[] = INCBIN_U16("graphics/pokemon_storage/crag_frame.gbapal"); +const u16 gWallpaperPalettes_Crag_2_3[] = INCBIN_U16("graphics/pokemon_storage/crag_bg.gbapal"); + +const u8 gWallpaperTiles_Crag[] = INCBIN_U8("graphics/pokemon_storage/crag.4bpp.lz"); + +const u8 gWallpaperTilemap_Crag[] = INCBIN_U8("graphics/pokemon_storage/crag.bin.lz"); + +const u16 gWallpaperPalettes_Volcano[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Volcano_2[] = INCBIN_U16("graphics/pokemon_storage/volcano_frame.gbapal"); +const u16 gWallpaperPalettes_Volcano_2_3[] = INCBIN_U16("graphics/pokemon_storage/volcano_bg.gbapal"); + +const u8 gWallpaperTiles_Volcano[] = INCBIN_U8("graphics/pokemon_storage/volcano.4bpp.lz"); +const u32 filler_83b871c = 0; // needed to match but otherwise garbage + +const u8 gWallpaperTilemap_Volcano[] = INCBIN_U8("graphics/pokemon_storage/volcano.bin.lz"); + +const u16 gWallpaperPalettes_Snow[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Snow_2[] = INCBIN_U16("graphics/pokemon_storage/snow_frame.gbapal"); +const u16 gWallpaperPalettes_Snow_2_3[] = INCBIN_U16("graphics/pokemon_storage/snow_bg.gbapal"); + +const u8 gWallpaperTiles_Snow[] = INCBIN_U8("graphics/pokemon_storage/snow.4bpp.lz"); + +const u8 gWallpaperTilemap_Snow[] = INCBIN_U8("graphics/pokemon_storage/snow.bin.lz"); + +const u16 gWallpaperPalettes_Cave[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Cave_2[] = INCBIN_U16("graphics/pokemon_storage/cave_frame.gbapal"); +const u16 gWallpaperPalettes_Cave_2_3[] = INCBIN_U16("graphics/pokemon_storage/cave_bg.gbapal"); + +const u8 gWallpaperTiles_Cave[] = INCBIN_U8("graphics/pokemon_storage/cave.4bpp.lz"); + +const u8 gWallpaperTilemap_Cave[] = INCBIN_U8("graphics/pokemon_storage/cave.bin.lz"); + +const u16 gWallpaperPalettes_Beach[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Beach_2[] = INCBIN_U16("graphics/pokemon_storage/beach_frame.gbapal"); +const u16 gWallpaperPalettes_Beach_2_3[] = INCBIN_U16("graphics/pokemon_storage/beach_bg.gbapal"); + +const u8 gWallpaperTiles_Beach[] = INCBIN_U8("graphics/pokemon_storage/beach.4bpp.lz"); + +const u8 gWallpaperTilemap_Beach[] = INCBIN_U8("graphics/pokemon_storage/beach.bin.lz"); + +const u16 gWallpaperPalettes_Seafloor[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Seafloor_2[] = INCBIN_U16("graphics/pokemon_storage/seafloor_frame.gbapal"); +const u16 gWallpaperPalettes_Seafloor_2_3[] = INCBIN_U16("graphics/pokemon_storage/seafloor_bg.gbapal"); + +const u8 gWallpaperTiles_Seafloor[] = INCBIN_U8("graphics/pokemon_storage/seafloor.4bpp.lz"); + +const u8 gWallpaperTilemap_Seafloor[] = INCBIN_U8("graphics/pokemon_storage/seafloor.bin.lz"); + +const u16 gWallpaperPalettes_River[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_River_2[] = INCBIN_U16("graphics/pokemon_storage/river_frame.gbapal"); +const u16 gWallpaperPalettes_River_2_3[] = INCBIN_U16("graphics/pokemon_storage/river_bg.gbapal"); + +const u8 gWallpaperTiles_River[] = INCBIN_U8("graphics/pokemon_storage/river.4bpp.lz"); + +const u8 gWallpaperTilemap_River[] = INCBIN_U8("graphics/pokemon_storage/river.bin.lz"); + +const u16 gWallpaperPalettes_Sky[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); +const u16 gWallpaperPalettes_Sky_2[] = INCBIN_U16("graphics/pokemon_storage/sky_frame.gbapal"); +const u16 gWallpaperPalettes_Sky_2_3[] = INCBIN_U16("graphics/pokemon_storage/sky_bg.gbapal"); + +const u8 gWallpaperTiles_Sky[] = INCBIN_U8("graphics/pokemon_storage/sky.4bpp.lz"); + +const u8 gWallpaperTilemap_Sky[] = INCBIN_U8("graphics/pokemon_storage/sky.bin.lz"); + +const u16 gWallpaperPalettes_Polkadot[] = INCBIN_U16("graphics/pokemon_storage/box_bg2.gbapal"); +const u16 gWallpaperPalettes_Polkadot_2[] = INCBIN_U16("graphics/pokemon_storage/polkadot_frame.gbapal"); +const u16 gWallpaperPalettes_Polkadot_2_3[] = INCBIN_U16("graphics/pokemon_storage/polkadot_bg.gbapal"); + +const u8 gWallpaperTiles_Polkadot[] = INCBIN_U8("graphics/pokemon_storage/polkadot.4bpp.lz"); + +const u8 gWallpaperTilemap_Polkadot[] = INCBIN_U8("graphics/pokemon_storage/polkadot.bin.lz"); + +const u16 gWallpaperPalettes_Pokecenter[] = INCBIN_U16("graphics/pokemon_storage/box_bg2.gbapal"); +const u16 gWallpaperPalettes_Pokecenter_2[] = INCBIN_U16("graphics/pokemon_storage/pokecenter_frame.gbapal"); +const u16 gWallpaperPalettes_Pokecenter_2_3[] = INCBIN_U16("graphics/pokemon_storage/pokecenter_bg.gbapal"); + +const u8 gWallpaperTiles_Pokecenter[] = INCBIN_U8("graphics/pokemon_storage/pokecenter.4bpp.lz"); + +const u8 gWallpaperTilemap_Pokecenter[] = INCBIN_U8("graphics/pokemon_storage/pokecenter.bin.lz"); + +const u16 gWallpaperPalettes_Machine[] = INCBIN_U16("graphics/pokemon_storage/box_bg3.gbapal"); +const u16 gWallpaperPalettes_Machine_2[] = INCBIN_U16("graphics/pokemon_storage/machine_frame.gbapal"); +const u16 gWallpaperPalettes_Machine_2_3[] = INCBIN_U16("graphics/pokemon_storage/machine_bg.gbapal"); + +const u8 gWallpaperTiles_Machine[] = INCBIN_U8("graphics/pokemon_storage/machine.4bpp.lz"); + +const u8 gWallpaperTilemap_Machine[] = INCBIN_U8("graphics/pokemon_storage/machine.bin.lz"); + +const u16 gWallpaperPalettes_Plain[] = INCBIN_U16("graphics/pokemon_storage/box_bg4.gbapal"); +const u16 gWallpaperPalettes_Plain_2[] = INCBIN_U16("graphics/pokemon_storage/plain_frame.gbapal"); +const u16 gWallpaperPalettes_Plain_2_3[] = INCBIN_U16("graphics/pokemon_storage/plain_bg.gbapal"); + +const u8 gWallpaperTiles_Plain[] = INCBIN_U8("graphics/pokemon_storage/plain.4bpp.lz"); + +const u8 gWallpaperTilemap_Plain[] = INCBIN_U8("graphics/pokemon_storage/plain.bin.lz"); + +const u16 gUnknown_083BAEF8[] = INCBIN_U16("graphics/unused/tilemap_3BAEF8.bin"); + +const u16 gUnknown_083BB0A8[][2] = { + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF}, + {0x1CE7, 0x7FFF} +}; + +const struct WallpaperTable gWallpaperTable[] = { + {gWallpaperTiles_Forest, 0x3D0, gWallpaperTilemap_Forest, gWallpaperPalettes_Forest}, // Forest + {gWallpaperTiles_City, 0x208, gWallpaperTilemap_City, gWallpaperPalettes_City}, // City + {gWallpaperTiles_Desert, 0x2EC, gWallpaperTilemap_Desert, gWallpaperPalettes_Desert}, // Desert + {gWallpaperTiles_Savanna, 0x220, gWallpaperTilemap_Savanna, gWallpaperPalettes_Savanna}, // Savanna + {gWallpaperTiles_Crag, 0x350, gWallpaperTilemap_Crag, gWallpaperPalettes_Crag}, // Crag + {gWallpaperTiles_Volcano, 0x334, gWallpaperTilemap_Volcano, gWallpaperPalettes_Volcano}, // Volcano + {gWallpaperTiles_Snow, 0x2B8, gWallpaperTilemap_Snow, gWallpaperPalettes_Snow}, // Snow + {gWallpaperTiles_Cave, 0x344, gWallpaperTilemap_Cave, gWallpaperPalettes_Cave}, // Cave + {gWallpaperTiles_Beach, 0x384, gWallpaperTilemap_Beach, gWallpaperPalettes_Beach}, // Beach + {gWallpaperTiles_Seafloor, 0x2B4, gWallpaperTilemap_Seafloor, gWallpaperPalettes_Seafloor}, // Seafloor + {gWallpaperTiles_River, 0x294, gWallpaperTilemap_River, gWallpaperPalettes_River}, // River + {gWallpaperTiles_Sky, 0x298, gWallpaperTilemap_Sky, gWallpaperPalettes_Sky}, // Sky + {gWallpaperTiles_Polkadot, 0x1FC, gWallpaperTilemap_Polkadot, gWallpaperPalettes_Polkadot}, // Polkadot + {gWallpaperTiles_Pokecenter, 0x3A4, gWallpaperTilemap_Pokecenter, gWallpaperPalettes_Pokecenter}, // Pokecenter + {gWallpaperTiles_Machine, 0x2F0, gWallpaperTilemap_Machine, gWallpaperPalettes_Machine}, // Machine + {gWallpaperTiles_Plain, 0xFC, gWallpaperTilemap_Plain, gWallpaperPalettes_Plain} // Plain +}; + +void sub_8099EB0(u8 boxId, s8 a1) +{ + const struct WallpaperTable *wallpaperTable; + + if (a1) + { + gPokemonStorageSystemPtr->unk_08ba = gPokemonStorageSystemPtr->unk_08ba ? FALSE : TRUE; + sub_809A14C(BG_SCREEN_ADDR(26)); + } + wallpaperTable = gWallpaperTable +gPokemonStorage.wallpaper[boxId]; + LoadPalette(wallpaperTable->palettes, gPokemonStorageSystemPtr->unk_08ba * 0x30 + 0x40, 0x60); + LZ77UnCompWram(wallpaperTable->tileMap, gPokemonStorageSystemPtr->unk_0d62); + sub_8099F58(BG_SCREEN_ADDR(26), gPokemonStorageSystemPtr->unk_0d62, a1, gPokemonStorageSystemPtr->unk_08ba); + LZ77UnCompVram(wallpaperTable->tiles, BG_CHAR_ADDR(2) + (gPokemonStorageSystemPtr->unk_08ba << 13)); +} -- cgit v1.2.3 From af5da267ee02fcc5b6cdd8ef0fac880b7487cc56 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 12 Jan 2018 22:15:01 +0200 Subject: Labeled most of trainer_card.c --- src/engine/cable_club.c | 6 +- src/engine/save_menu_util.c | 6 +- src/engine/trainer_card.c | 555 ++++++++++++++++++++++---------------------- src/field/start_menu.c | 4 +- 4 files changed, 288 insertions(+), 283 deletions(-) (limited to 'src') diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index b12ee38ce..44d832e2b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -374,7 +374,7 @@ void sub_80831F8(u8 taskId) gFieldLinkPlayerCount = GetLinkPlayerCount_2(); gUnknown_03004860 = GetMultiplayerId(); sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *)gBlockSendBuffer); + TrainerCard_GenerateCardForPlayer((struct TrainerCard *)gBlockSendBuffer); gTasks[taskId].func = sub_8083314; } } @@ -395,7 +395,7 @@ static void sub_8083288(u8 taskId) gFieldLinkPlayerCount = GetLinkPlayerCount_2(); gUnknown_03004860 = GetMultiplayerId(); sub_80081C8(gFieldLinkPlayerCount); - sub_8093390((struct TrainerCard *)gBlockSendBuffer); + TrainerCard_GenerateCardForPlayer((struct TrainerCard *)gBlockSendBuffer); gTasks[taskId].func = sub_8083314; sub_8007E9C(2); } @@ -874,7 +874,7 @@ void unref_sub_8083BB0(void) void sub_8083BDC(void) { - sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); + TrainerCard_ShowLinkCard(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music); } bool32 sub_8083BF4(u8 linkPlayerIndex) diff --git a/src/engine/save_menu_util.c b/src/engine/save_menu_util.c index 2c5eb6afe..ccf4d9f6f 100644 --- a/src/engine/save_menu_util.c +++ b/src/engine/save_menu_util.c @@ -125,9 +125,9 @@ u16 GetPokedexSeenCount() return pokedexSeenCount; } -void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 unk) +void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 colon) { - s16 colon = unk; + s16 _colon = colon; playtime = ConvertIntToDecimalString(playtime, hours); // playtime[0] is hours. @@ -136,7 +136,7 @@ void FormatPlayTime(char *playtime, u16 hours, u16 minutes, u16 unk) playtime[0] = 0; - if (colon) + if (_colon) playtime[1] = 0xF0; // set middle character to ":" else playtime[1] = 0; diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index ab43ac716..9d09575c8 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -26,25 +26,25 @@ typedef void (*Callback)(void); struct Struct2000000 { - /*0x00*/ u8 var_0; - /*0x01*/ bool8 var_1; - /*0x02*/ u8 var_2; - /*0x03*/ bool8 var_3; + /*0x00*/ u8 current_state; + /*0x01*/ bool8 isShowingLinkCard; + /*0x02*/ u8 starCount; + /*0x03*/ bool8 backSideShown; /*0x04*/ u8 var_4; - /*0x05*/ u8 var_5; - /*0x06*/ u8 var_6; - /*0x07*/ bool8 var_7; - /*0x08*/ bool8 var_8; - /*0x09*/ bool8 var_9; - /*0x0A*/ bool8 var_a; - /*0x0B*/ bool8 var_b; - /*0x0C*/ bool8 var_c; - /*0x0D*/ bool8 var_d; - /*0x0E*/ u8 var_e[8]; + /*0x05*/ bool8 showColon; + /*0x06*/ u8 frameCounter; /* Used to flash colon */ + /*0x07*/ bool8 showPokedexCount; + /*0x08*/ bool8 showHallOfFame; + /*0x09*/ bool8 showLinkBattleStatus; + /*0x0A*/ bool8 showBattleTowerStatus; + /*0x0B*/ bool8 showContestRecord; + /*0x0C*/ bool8 showMixingRecord; + /*0x0D*/ bool8 showTradingRecord; + /*0x0E*/ bool8 ownedBadges[8]; /*0x16*/ u8 filler_16[10]; - /*0x20*/ u8 var_20[4][0x10]; + /*0x20*/ u8 easyChatPhrase[4][0x10]; /*0x60*/ Callback *var_60; - /*0x64*/ struct TrainerCard var_64; + /*0x64*/ struct TrainerCard displayedCard; /*0x9C*/ u8 language; // 0x9C }; @@ -57,44 +57,44 @@ extern const u16 gUnknown_083B5F0C[]; extern const u16 gBadgesPalette[]; extern const u16 gUnknown_083B5F4C[]; extern const u16 gUnknown_083B5F6C[]; -extern const u16 gUnknown_083B5F8C[][4]; +extern const u16 gTrainerCardBadgesMap[][4]; const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); // XXX: what is this? u8 *const ewram_ = gSharedMem; -bool8 sub_8093864(struct Task *); -bool8 sub_80938A8(struct Task *); -bool8 sub_80938CC(struct Task *); -bool8 sub_8093918(struct Task *); -bool8 sub_8093938(struct Task *); -bool8 sub_8093954(struct Task *); -bool8 sub_8093980(struct Task *); - -bool8 (*const gUnknown_083B5EBC[])(struct Task *) = -{ - sub_8093864, - sub_80938A8, - sub_80938CC, - sub_8093918, - sub_8093938, - sub_8093954, - sub_8093980, +bool8 TrainerCard_Init(struct Task *); +bool8 TrainerCard_WaitForFadeInToFinish(struct Task *); +bool8 TrainerCard_WaitForKeys(struct Task *); +bool8 TrainerCard_StartFlipAntimation(struct Task *); +bool8 TrainerCard_WaitForFlipToFinish(struct Task *); +bool8 TrainerCard_FadeOut(struct Task *); +bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *); + +bool8 (*const TrainerCard_StateMachine[])(struct Task *) = +{ + TrainerCard_Init, + TrainerCard_WaitForFadeInToFinish, + TrainerCard_WaitForKeys, + TrainerCard_StartFlipAntimation, + TrainerCard_WaitForFlipToFinish, + TrainerCard_FadeOut, + TrainerCard_WaitForFadeOutToFinishAndQuit, }; -bool8 sub_8093AA0(struct Task *); -bool8 sub_8093AF0(struct Task *); -bool8 sub_8093C0C(struct Task *); -bool8 sub_8093C38(struct Task *); -bool8 sub_8093D50(struct Task *); +bool8 TrainerCard_InitFlipAnimation(struct Task *); +bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *); +bool8 TrainerCard_SwitchToNewSide(struct Task *); +bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *); +bool8 TrainerCard_FinishFlipAnimation(struct Task *); -bool8 (*const gUnknown_083B5ED8[])(struct Task *) = +bool8 (*const TrainerCard_FlipAnimationStateMachine[])(struct Task *) = { - sub_8093AA0, - sub_8093AF0, - sub_8093C0C, - sub_8093C38, - sub_8093D50, + TrainerCard_InitFlipAnimation, + TrainerCard_ScaleDownFlipAnimation, + TrainerCard_SwitchToNewSide, + TrainerCard_ScaleUpFlipAnimation, + TrainerCard_FinishFlipAnimation, }; // FIXME: Other signature than on save_menu_util.h @@ -103,64 +103,64 @@ u16 GetPokedexSeenCount(void); enum { - TD_0, - TD_1, + TD_SHOWING_LINK_CARD, + TD_CARD_INDEX, TD_CALLBACK, }; static void sub_8093174(void); static void sub_809323C(void); static void sub_8093254(void); -static void sub_80932AC(Callback callBack); -static void sub_80932E4(u8 arg1, Callback callBack); -void sub_8093324(void); +static void TrainerCard_InitScreenForPlayer(Callback callBack); +static void TrainerCard_InitScreenForLinkPlayer(u8 arg1, Callback callBack); +void TrainerCard_FillTrainerCardStruct(void); static void nullsub_60(u8); static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal); -static u8 sub_80934F4(struct TrainerCard *); +static u8 TrainerCard_GetStarCount(struct TrainerCard *); static void sub_8093534(void); static void sub_8093550(void); static void sub_8093598(void); static void sub_80935EC(void); static void sub_8093610(void); static void sub_8093688(void); -void sub_80936D4(void); +static void TrainerCard_FillFlags(void); static void sub_80937A4(void); static void sub_80937BC(void); static void sub_80937D8(void); static void sub_80937F0(void); static void nullsub_15(void); static void sub_8093800(void); -static void sub_809380C(); -static void sub_809382C(u8 taskId); -static void sub_80939A4(void); -static void sub_80939C0(void); -static void sub_80939DC(u8 taskId); -static void sub_8093A28(void); -static u8 sub_8093A48(void); -static void sub_8093A68(u8 taskId); -void sub_8093D7C(void); -static void sub_8093DAC(void); -static void sub_8093DC8(void); -static void sub_8093DEC(void); -static void sub_8093E04(void); -static void sub_8093E28(void); -void sub_8093EA0(void); -static void sub_8093EF8(void); +static void TrainerCard_CreateStateMachine(void); +static void TrainerCard_RunStateMachine(u8 taskId); +static void TrainerCard_CreatePrintPlayTimeTask(void); +static void TrainerCard_DestoryPlayTimeTask(void); +static void TrainerCard_Front_PrintPlayTime(u8 taskId); +static void TrainerCard_CreateFlipAnimationTask(void); +static u8 TrainerCard_HasFlipAnimationFinished(void); +static void TrainerCard_RunFlipAnimationStateMachine(u8 taskId); +static void TrainerCard_FlipAnimationHBlankCallback(void); +static void TrainerCard_DrawCard(void); +static void TrainerCard_DrawCardFront(void); +static void TrainerCard_DrawCardBack(void); +static void TrainerCard_ResetOffsetRegisters(void); +static void TrainerCard_CopyGraphics(void); +static void TrainerCard_LoadPalettes(void); +static void TrainerCard_LoadTrainerGraphics(void); static void sub_8093F14(void); static void sub_8093F48(void); static void sub_8093F64(void); -static void sub_8093F80(void); -static void sub_8093FD0(void); -static void sub_8094038(void); -static void sub_80940E4(void); -static void sub_8094110(void); -static void sub_8094140(void); -static void sub_8094188(void); +static void TrainerCard_LoadTrainerTilemap(void); +static void TrainerCard_DrawStars(void); +static void TrainerCard_DisplayBadges(void); +static void TrainerCard_ClearTrainerGraphics(void); +static void TrainerCard_ClearPokedexLabel(void); +static void TrainerCard_Front_PrintTexts(void); +static void TrainerCard_Back_PrintTexts(void); static void TrainerCard_Front_PrintTrainerID(void); static void TrainerCard_Front_PrintMoney(void); static void TrainerCard_Front_PrintPokedexCount(void); -static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon); -static void sub_809429C(void); +static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon); +static void TrainerCard_PrintEasyChatPhrase(void); static void TrainerCard_Back_PrintName(void); static void TrainerCard_Back_PrintHallOfFameTime_Label(void); static void TrainerCard_Back_PrintHallOfFameTime(void); @@ -176,16 +176,16 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void); static void TrainerCard_Back_PrintPokemonTrades(void); void unref_sub_8094588(u16 left, u16 top); -void sub_8093110(Callback arg1) +void TrainerCard_ShowPlayerCard(Callback arg1) { - sub_80932AC(arg1); + TrainerCard_InitScreenForPlayer(arg1); SetMainCallback2(sub_8093174); ewram0_2.language = GAME_LANGUAGE; } -void sub_8093130(u8 playerIndex, Callback arg2) +void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) { - sub_80932E4(playerIndex, arg2); + TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2); SetMainCallback2(sub_8093174); ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language; } @@ -249,49 +249,49 @@ static void sub_8093254(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - ewram0_2.var_6++; - if (ewram0_2.var_6 >= 60) + ewram0_2.frameCounter++; + if (ewram0_2.frameCounter >= 60) { - ewram0_2.var_6 = 0; - ewram0_2.var_5 ^= 1; + ewram0_2.frameCounter = 0; + ewram0_2.showColon ^= 1; } if (ewram0_2.var_4) DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); } -static void sub_80932AC(Callback callBack) +static void TrainerCard_InitScreenForPlayer(Callback callBack) { u8 taskId = CreateTask(nullsub_60, 0xFF); struct Task *task = &gTasks[taskId]; - task->data[TD_0] = FALSE; + task->data[TD_SHOWING_LINK_CARD] = FALSE; StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack); } -static void sub_80932E4(u8 arg1, Callback callBack) +static void TrainerCard_InitScreenForLinkPlayer(u8 arg1, Callback callBack) { u8 taskId = CreateTask(nullsub_60, 0xFF); struct Task *task = &gTasks[taskId]; - task->data[TD_0] = TRUE; - task->data[TD_1] = arg1; + task->data[TD_SHOWING_LINK_CARD] = TRUE; + task->data[TD_CARD_INDEX] = arg1; StoreWordInTwoHalfwords(&task->data[TD_CALLBACK], (u32)callBack); } -void sub_8093324(void) +void TrainerCard_FillTrainerCardStruct(void) { u8 taskId = FindTaskIdByFunc(nullsub_60); struct Task *task = &gTasks[taskId]; - ewram0_2.var_1 = task->data[TD_0]; + ewram0_2.isShowingLinkCard = task->data[TD_SHOWING_LINK_CARD]; LoadWordFromTwoHalfwords((u16 *)&task->data[TD_CALLBACK], (u32 *)&ewram0_2.var_60); - if (ewram0_2.var_1) + if (ewram0_2.isShowingLinkCard) { - ewram0_2.var_64 = gTrainerCards[task->data[TD_1]]; + ewram0_2.displayedCard = gTrainerCards[task->data[TD_CARD_INDEX]]; } else { - sub_8093390(&ewram0_2.var_64); + TrainerCard_GenerateCardForPlayer(&ewram0_2.displayedCard); } } @@ -299,7 +299,7 @@ static void nullsub_60(u8 taskid) { } -void sub_8093390(struct TrainerCard *trainerCard) +void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard) { u32 playTime; bool32 enteredHallOfFame; @@ -370,7 +370,7 @@ void sub_8093390(struct TrainerCard *trainerCard) trainerCard->playerName[i] = gSaveBlock2.playerName[i]; } - trainerCard->stars = sub_80934F4(trainerCard); + trainerCard->stars = TrainerCard_GetStarCount(trainerCard); } u8 sub_80934C4(u8 id) @@ -390,7 +390,7 @@ static u32 sav12_xor_get_clamped_above(u8 index, u32 maxVal) return value; } -static u8 sub_80934F4(struct TrainerCard *trainerCard) +static u8 TrainerCard_GetStarCount(struct TrainerCard *trainerCard) { u8 value = 0; @@ -489,53 +489,53 @@ static void sub_8093688(void) { u8 i; - sub_8093324(); - ewram0_2.var_0 = 0; - ewram0_2.var_3 = 0; + TrainerCard_FillTrainerCardStruct(); + ewram0_2.current_state = 0; + ewram0_2.backSideShown = FALSE; ewram0_2.var_4 = FALSE; - ewram0_2.var_2 = ewram0_2.var_64.stars; - ewram0_2.var_5 = 0; - ewram0_2.var_6 = 0; + ewram0_2.starCount = ewram0_2.displayedCard.stars; + ewram0_2.showColon = 0; + ewram0_2.frameCounter = 0; for (i = 0; i < 4; i++) - EasyChat_GetWordText(ewram0_2.var_20[i], ewram0_2.var_64.var_28[i]); - sub_80936D4(); + EasyChat_GetWordText(ewram0_2.easyChatPhrase[i], ewram0_2.displayedCard.var_28[i]); + TrainerCard_FillFlags(); } -void sub_80936D4(void) +static void TrainerCard_FillFlags(void) { - ewram0_2.var_7 = 0; - ewram0_2.var_8 = 0; - ewram0_2.var_9 = 0; - ewram0_2.var_a = 0; - ewram0_2.var_b = 0; - ewram0_2.var_c = 0; - ewram0_2.var_d = 0; - memset(ewram0_2.var_e, 0, sizeof(ewram0_2.var_e)); + ewram0_2.showPokedexCount = 0; + ewram0_2.showHallOfFame = 0; + ewram0_2.showLinkBattleStatus = 0; + ewram0_2.showBattleTowerStatus = 0; + ewram0_2.showContestRecord = 0; + ewram0_2.showMixingRecord = 0; + ewram0_2.showTradingRecord = 0; + memset(ewram0_2.ownedBadges, 0, sizeof(ewram0_2.ownedBadges)); - if (ewram0_2.var_64.hasPokedex) - ewram0_2.var_7++; + if (ewram0_2.displayedCard.hasPokedex) + ewram0_2.showPokedexCount++; - if (ewram0_2.var_64.firstHallOfFameA != 0 - || ewram0_2.var_64.firstHallOfFameB != 0 - || ewram0_2.var_64.firstHallOfFameC != 0) - ewram0_2.var_8++; + if (ewram0_2.displayedCard.firstHallOfFameA != 0 + || ewram0_2.displayedCard.firstHallOfFameB != 0 + || ewram0_2.displayedCard.firstHallOfFameC != 0) + ewram0_2.showHallOfFame++; - if (ewram0_2.var_64.linkBattleWins != 0 || ewram0_2.var_64.linkBattleLosses != 0) - ewram0_2.var_9++; + if (ewram0_2.displayedCard.linkBattleWins != 0 || ewram0_2.displayedCard.linkBattleLosses != 0) + ewram0_2.showLinkBattleStatus++; - if (ewram0_2.var_64.battleTowerWins != 0 || ewram0_2.var_64.battleTowerLosses != 0) - ewram0_2.var_a++; + if (ewram0_2.displayedCard.battleTowerWins != 0 || ewram0_2.displayedCard.battleTowerLosses != 0) + ewram0_2.showBattleTowerStatus++; - if (ewram0_2.var_64.contestsWithFriends != 0) - ewram0_2.var_b++; + if (ewram0_2.displayedCard.contestsWithFriends != 0) + ewram0_2.showContestRecord++; - if (ewram0_2.var_64.pokeblocksWithFriends != 0) - ewram0_2.var_c++; + if (ewram0_2.displayedCard.pokeblocksWithFriends != 0) + ewram0_2.showMixingRecord++; - if (ewram0_2.var_64.pokemonTrades != 0) - ewram0_2.var_d++; + if (ewram0_2.displayedCard.pokemonTrades != 0) + ewram0_2.showTradingRecord++; - if (!ewram0_2.var_1) + if (!ewram0_2.isShowingLinkCard) { u32 badgeFlag; int i = 0; @@ -544,7 +544,7 @@ void sub_80936D4(void) while (1) { if (FlagGet(badgeFlag)) - ewram0_2.var_e[i]++; + ewram0_2.ownedBadges[i]++; badgeFlag++; i++; if (badgeFlag > FLAG_BADGE08_GET) @@ -571,15 +571,15 @@ void sub_80937BC() static void sub_80937D8() { - sub_8093E04(); - sub_8093E28(); + TrainerCard_ResetOffsetRegisters(); + TrainerCard_CopyGraphics(); sub_8093F64(); - sub_8093DAC(); + TrainerCard_DrawCard(); } static void sub_80937F0() { - sub_8093EF8(); + TrainerCard_LoadTrainerGraphics(); } static void nullsub_15(void) @@ -588,144 +588,147 @@ static void nullsub_15(void) static void sub_8093800() { - sub_809380C(); + TrainerCard_CreateStateMachine(); } -static void sub_809380C() +static void TrainerCard_CreateStateMachine(void) { u8 taskId; - taskId = CreateTask(sub_809382C, 0); - sub_809382C(taskId); + taskId = CreateTask(TrainerCard_RunStateMachine, 0); + TrainerCard_RunStateMachine(taskId); } -static void sub_809382C(u8 taskId) +static void TrainerCard_RunStateMachine(u8 taskId) { - while (gUnknown_083B5EBC[ewram0_2.var_0](&gTasks[taskId]) != 0) + while (TrainerCard_StateMachine[ewram0_2.current_state](&gTasks[taskId]) != 0) ; } -bool8 sub_8093864(struct Task *task) +bool8 TrainerCard_Init(struct Task *task) { - ewram0_2.var_5 = gSaveBlock2.playTimeSeconds & 1; - ewram0_2.var_6 = gSaveBlock2.playTimeVBlanks; - sub_80939A4(); + ewram0_2.showColon = gSaveBlock2.playTimeSeconds & 1; + ewram0_2.frameCounter = gSaveBlock2.playTimeVBlanks; + TrainerCard_CreatePrintPlayTimeTask(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_80938A8(struct Task *task) +bool8 TrainerCard_WaitForFadeInToFinish(struct Task *task) { if (!gPaletteFade.active) - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_80938CC(struct Task *task) +bool8 TrainerCard_WaitForKeys(struct Task *task) { if (gMain.newKeys & B_BUTTON) { - ewram0_2.var_0 = 5; + ewram0_2.current_state = 5; /* Jump to fadeout state */ return TRUE; } else if (gMain.newKeys & A_BUTTON) { - if (ewram0_2.var_3 != 0) + /* It appears that it was previously possible to return the the front side + after viewing the back side. This was probably removed due to being + unintuitive. */ + if (ewram0_2.backSideShown) { - ewram0_2.var_0 = 5; + ewram0_2.current_state = 5; /* Jump to fadeout state */ } else { - ewram0_2.var_3 ^= 1; - ewram0_2.var_0 = 3; + ewram0_2.backSideShown ^= 1; /* Switch to back side */ + ewram0_2.current_state = 3; /* Jump to start flip animation state */ } return TRUE; } return FALSE; } -bool8 sub_8093918(struct Task *task) +bool8 TrainerCard_StartFlipAntimation(struct Task *task) { - sub_8093A28(); + TrainerCard_CreateFlipAnimationTask(); PlaySE(SE_CARD); - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_8093938(struct Task *task) +bool8 TrainerCard_WaitForFlipToFinish(struct Task *task) { - if (sub_8093A48()) - ewram0_2.var_0 = 2; + if (TrainerCard_HasFlipAnimationFinished()) + ewram0_2.current_state = 2; /* Return to wait for keys state */ return FALSE; } -bool8 sub_8093954(struct Task *task) +bool8 TrainerCard_FadeOut(struct Task *task) { - sub_80939C0(); + TrainerCard_DestoryPlayTimeTask(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0_2.var_0++; + ewram0_2.current_state++; /* Advance state machine */ return FALSE; } -bool8 sub_8093980(struct Task *task) +bool8 TrainerCard_WaitForFadeOutToFinishAndQuit(struct Task *task) { if (!gPaletteFade.active) SetMainCallback2((MainCallback)ewram0_2.var_60); return FALSE; } -static void sub_80939A4(void) +static void TrainerCard_CreatePrintPlayTimeTask(void) { - CreateTask(sub_80939DC, 0); + CreateTask(TrainerCard_Front_PrintPlayTime, 0); BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); } -static void sub_80939C0(void) +static void TrainerCard_DestoryPlayTimeTask(void) { - u8 taskId = FindTaskIdByFunc(sub_80939DC); + u8 taskId = FindTaskIdByFunc(TrainerCard_Front_PrintPlayTime); if (taskId != 0xFF) DestroyTask(taskId); } -static void sub_80939DC(u8 taskId) +static void TrainerCard_Front_PrintPlayTime(u8 taskId) { u8 buffer[32]; struct Task *task = &gTasks[taskId]; - if (ewram0_2.var_5 != task->data[TD_1]) + if (ewram0_2.showColon != task->data[TD_CARD_INDEX]) { - task->data[TD_1] = ewram0_2.var_5; - task->data[TD_0] ^= TRUE; + task->data[TD_CARD_INDEX] = ewram0_2.showColon; + task->data[TD_SHOWING_LINK_CARD] ^= TRUE; } - TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]); + TrainerCard_Front_GetPlayTimeString(buffer, task->data[TD_SHOWING_LINK_CARD]); Menu_PrintText(buffer, 10, 12); } -static void sub_8093A28(void) +static void TrainerCard_CreateFlipAnimationTask(void) { u8 taskId; - taskId = CreateTask(sub_8093A68, 0); - sub_8093A68(taskId); + taskId = CreateTask(TrainerCard_RunFlipAnimationStateMachine, 0); + TrainerCard_RunFlipAnimationStateMachine(taskId); } -static u8 sub_8093A48(void) +static u8 TrainerCard_HasFlipAnimationFinished(void) { - if (FindTaskIdByFunc(sub_8093A68) == 0xFF) + if (FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine) == 0xFF) return TRUE; else return FALSE; } -static void sub_8093A68(u8 taskId) +static void TrainerCard_RunFlipAnimationStateMachine(u8 taskId) { - while (gUnknown_083B5ED8[gTasks[taskId].data[0]](&gTasks[taskId]) != 0) + while (TrainerCard_FlipAnimationStateMachine[gTasks[taskId].data[0]](&gTasks[taskId]) != 0) ; } -bool8 sub_8093AA0(struct Task *task) +bool8 TrainerCard_InitFlipAnimation(struct Task *task) { u32 i; @@ -733,14 +736,14 @@ bool8 sub_8093AA0(struct Task *task) ScanlineEffect_Clear(); for (i = 0; i < 0xA0; i++) gScanlineEffectRegBuffers[1][i] = -4; - SetHBlankCallback(sub_8093D7C); + SetHBlankCallback(TrainerCard_FlipAnimationHBlankCallback); ewram0_2.var_4 = TRUE; task->data[0]++; return FALSE; } /* -bool8 sub_8093AF0(struct Task *task) +bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { u32 r7; u16 r9; @@ -788,7 +791,7 @@ bool8 sub_8093AF0(struct Task *task) */ __attribute__((naked)) -bool8 sub_8093AF0(struct Task *task) +bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -939,18 +942,20 @@ _08093C08: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093C0C(struct Task *task) +bool8 TrainerCard_SwitchToNewSide(struct Task *task) { - sub_80939C0(); - sub_8093DAC(); - if (!ewram0_2.var_3) - sub_80939A4(); + TrainerCard_DestoryPlayTimeTask(); + TrainerCard_DrawCard(); + if (!ewram0_2.backSideShown) { + /* This code never runs because it is impossible to flip the back side back to the front side */ + TrainerCard_CreatePrintPlayTimeTask(); + } task->data[0]++; return TRUE; } __attribute__((naked)) -bool8 sub_8093C38(struct Task *task) +bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1099,19 +1104,19 @@ _08093D4C: .4byte 0x0000fffc\n\ .syntax divided\n"); } -bool8 sub_8093D50(struct Task *task) +bool8 TrainerCard_FinishFlipAnimation(struct Task *task) { u8 taskId; ewram0_2.var_4 = FALSE; SetHBlankCallback(NULL); - sub_8093E04(); - taskId = FindTaskIdByFunc(sub_8093A68); + TrainerCard_ResetOffsetRegisters(); + taskId = FindTaskIdByFunc(TrainerCard_RunFlipAnimationStateMachine); DestroyTask(taskId); return FALSE; } -void sub_8093D7C(void) +static void TrainerCard_FlipAnimationHBlankCallback(void) { u16 bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF]; @@ -1120,34 +1125,34 @@ void sub_8093D7C(void) REG_BG2VOFS = bgVOffset; } -static void sub_8093DAC(void) +static void TrainerCard_DrawCard(void) { - if (ewram0_2.var_3) - sub_8093DEC(); + if (ewram0_2.backSideShown) + TrainerCard_DrawCardBack(); else - sub_8093DC8(); + TrainerCard_DrawCardFront(); } -static void sub_8093DC8(void) +static void TrainerCard_DrawCardFront(void) { Menu_EraseScreen(); - sub_80940E4(); + TrainerCard_ClearTrainerGraphics(); sub_8093F14(); - sub_8093F80(); - sub_8093FD0(); - sub_8094038(); - sub_8094140(); + TrainerCard_LoadTrainerTilemap(); + TrainerCard_DrawStars(); + TrainerCard_DisplayBadges(); + TrainerCard_Front_PrintTexts(); } -static void sub_8093DEC(void) +static void TrainerCard_DrawCardBack(void) { Menu_EraseScreen(); - sub_80940E4(); + TrainerCard_ClearTrainerGraphics(); sub_8093F48(); - sub_8094188(); + TrainerCard_Back_PrintTexts(); } -static void sub_8093E04(void) +static void TrainerCard_ResetOffsetRegisters(void) { REG_BG0VOFS = -4; REG_BG1HOFS = 0; @@ -1156,13 +1161,13 @@ static void sub_8093E04(void) REG_BG2VOFS = -4; } -static void sub_8093E28(void) +static void TrainerCard_CopyGraphics(void) { const u8 *src; u8 *dst; u32 size; - sub_8093EA0(); + TrainerCard_LoadPalettes(); LoadPalette(gUnknown_083B5F6C, 0xE0, 32); src = gMenuTrainerCard_Gfx; dst = (void *)VRAM; @@ -1187,34 +1192,34 @@ static void sub_8093E28(void) } } -extern const u16 *const gUnknown_083B5EF8[]; +extern const u16 *const gTrainerCardPalettes[]; -void sub_8093EA0(void) +static void TrainerCard_LoadPalettes(void) { - LoadPalette(gUnknown_083B5EF8[ewram0_2.var_2], 0, 48 * 2); + LoadPalette(gTrainerCardPalettes[ewram0_2.starCount], 0, 48 * 2); LoadPalette(gBadgesPalette, 48, 16 * 2); LoadPalette(gUnknown_083B5F4C, 64, 16 * 2); - if (ewram0_2.var_64.gender != MALE) + if (ewram0_2.displayedCard.gender != MALE) LoadPalette(gUnknown_083B5F0C, 16, 16 * 2); } -static void sub_8093EF8(void) +static void TrainerCard_LoadTrainerGraphics(void) { - LoadTrainerGfx_TrainerCard(ewram0_2.var_64.gender, 80, (void *)(VRAM + 0x1880)); + LoadTrainerGfx_TrainerCard(ewram0_2.displayedCard.gender, 80, (void *)(VRAM + 0x1880)); } static void sub_8093F14(void) { const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0}; - CpuFastSet(arr[ewram0_2.var_1], (void *)(VRAM + 0x4800), 0x140); + CpuFastSet(arr[ewram0_2.isShowingLinkCard], (void *)(VRAM + 0x4800), 0x140); } // I don't really know where to put the data. It's in such a weird order. const u8 gUnknown_083B5EF4[] = _(" : "); -const u16 *const gUnknown_083B5EF8[] = +const u16 *const gTrainerCardPalettes[] = { gMenuTrainerCard0Star_Pal, gMenuTrainerCard1Star_Pal, @@ -1227,7 +1232,7 @@ const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal"); const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal"); const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal"); -const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin"); +const u16 gTrainerCardBadgesMap[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin"); static void sub_8093F48(void) { @@ -1239,7 +1244,7 @@ static void sub_8093F64(void) CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320); } -static void sub_8093F80(void) +static void TrainerCard_LoadTrainerTilemap(void) { u16 r5 = 0xC4; u16 *ptr = (u16 *)(VRAM + 0x4000); @@ -1253,11 +1258,11 @@ static void sub_8093F80(void) } } -static void sub_8093FD0(void) +static void TrainerCard_DrawStars(void) { u16 *ptr = (u16 *)(VRAM + 0x4000); s16 i = 15; - s16 var = 15 + ewram0_2.var_2; + s16 var = 15 + ewram0_2.starCount; while (i < var) { @@ -1271,9 +1276,9 @@ static void sub_8093FD0(void) } } -static void sub_8094038(void) +static void TrainerCard_DisplayBadges(void) { - if (ewram0_2.var_1 == 0) + if (!ewram0_2.isShowingLinkCard) { u16 *ptr = (u16 *)(VRAM + 0x4000); s16 i; @@ -1281,18 +1286,18 @@ static void sub_8094038(void) for (i = 0, r2 = 4; i < 8; i++, r2 += 3) { - if (ewram0_2.var_e[i] != 0) + if (ewram0_2.ownedBadges[i] != 0) { - ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000; - ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000; - ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000; - ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000; + ptr[15 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][0] | 0x3000; + ptr[15 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][1] | 0x3000; + ptr[16 * 32 + r2 + 0] = gTrainerCardBadgesMap[i][2] | 0x3000; + ptr[16 * 32 + r2 + 1] = gTrainerCardBadgesMap[i][3] | 0x3000; } } } } -static void sub_80940E4(void) +static void TrainerCard_ClearTrainerGraphics(void) { s16 i; u16 *ptr; @@ -1301,7 +1306,7 @@ static void sub_80940E4(void) *ptr = 0; } -static void sub_8094110(void) +static void TrainerCard_ClearPokedexLabel(void) { u16 *ptr = (u16 *)(VRAM + 0x4800); u16 i; @@ -1313,24 +1318,24 @@ static void sub_8094110(void) } } -static void sub_8094140(void) +static void TrainerCard_Front_PrintTexts(void) { u8 *buffer; BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); buffer = gStringVar1; - StringCopy(buffer, ewram0_2.var_64.playerName); + StringCopy(buffer, ewram0_2.displayedCard.playerName); ConvertInternationalString(buffer, ewram0_2.language); Menu_PrintText(buffer, 7, 5); TrainerCard_Front_PrintTrainerID(); TrainerCard_Front_PrintMoney(); TrainerCard_Front_PrintPokedexCount(); - sub_809429C(); + TrainerCard_PrintEasyChatPhrase(); } -static void sub_8094188(void) +static void TrainerCard_Back_PrintTexts(void) { BasicInitMenuWindow(&gWindowTemplate_TrainerCard_Back_Values); TrainerCard_Back_PrintName(); @@ -1354,31 +1359,31 @@ static void TrainerCard_Front_PrintTrainerID(void) { u8 buffer[8]; - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); Menu_PrintText(buffer, 20, 2); } static void TrainerCard_Front_PrintMoney(void) { - sub_80B7AEC(ewram0_2.var_64.money, 16, 8); + sub_80B7AEC(ewram0_2.displayedCard.money, 16, 8); } static void TrainerCard_Front_PrintPokedexCount(void) { u8 buffer[16]; - if (ewram0_2.var_7 == FALSE) + if (!ewram0_2.showPokedexCount) { - sub_8094110(); + TrainerCard_ClearPokedexLabel(); } else { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3); MenuPrint_RightAligned(buffer, 16, 10); } } -static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) +static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon) { u8 buffer[16]; u16 playTimeHours; @@ -1386,33 +1391,33 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon) playTimeHours = gSaveBlock2.playTimeHours; playTimeMinutes = gSaveBlock2.playTimeMinutes; - if (ewram0_2.var_1 != 0) + if (ewram0_2.isShowingLinkCard != 0) { - playTimeHours = ewram0_2.var_64.playTimeHours; - playTimeMinutes = ewram0_2.var_64.playTimeMinutes; + playTimeHours = ewram0_2.displayedCard.playTimeHours; + playTimeMinutes = ewram0_2.displayedCard.playTimeMinutes; } FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon); sub_8072C74(arg1, buffer, 48, 1); } -static void sub_809429C(void) +static void TrainerCard_PrintEasyChatPhrase(void) { u8 *str; - if (ewram0_2.var_1 != 0) + if (ewram0_2.isShowingLinkCard != 0) { str = gStringVar1; - str = StringCopy(str, ewram0_2.var_20[0]); + str = StringCopy(str, ewram0_2.easyChatPhrase[0]); str[0] = 00; str++; - str = StringCopy(str, ewram0_2.var_20[1]); + str = StringCopy(str, ewram0_2.easyChatPhrase[1]); Menu_PrintText(gStringVar1, 2, 14); str = gStringVar1; - str = StringCopy(str, ewram0_2.var_20[2]); + str = StringCopy(str, ewram0_2.easyChatPhrase[2]); str[0] = 00; str++; - str = StringCopy(str, ewram0_2.var_20[3]); + str = StringCopy(str, ewram0_2.easyChatPhrase[3]); Menu_PrintText(gStringVar1, 2, 16); } } @@ -1422,7 +1427,7 @@ static void TrainerCard_Back_PrintName(void) u8 *str; str = gStringVar1; - StringCopy(str, ewram0_2.var_64.playerName); + StringCopy(str, ewram0_2.displayedCard.playerName); ConvertInternationalString(str, ewram0_2.language); #if ENGLISH @@ -1436,7 +1441,7 @@ static void TrainerCard_Back_PrintName(void) static void TrainerCard_Back_PrintHallOfFameTime_Label(void) { - if (ewram0_2.var_8 != 0) + if (ewram0_2.showHallOfFame != 0) Menu_PrintText(gOtherText_FirstHOF, 3, 5); } @@ -1444,21 +1449,21 @@ static void TrainerCard_Back_PrintHallOfFameTime(void) { u8 *str; - if (ewram0_2.var_8 != 0) + if (ewram0_2.showHallOfFame != 0) { str = gStringVar1; - str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); + str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3); str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); + str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2); str = StringCopy(str, gUnknown_083B5EF4); - str = ConvertIntToDecimalStringN(str, ewram0_2.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); + str = ConvertIntToDecimalStringN(str, ewram0_2.displayedCard.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2); MenuPrint_RightAligned(gStringVar1, 28, 5); } } static void TrainerCard_Back_PrintLinkBattlesLabel(void) { - if (ewram0_2.var_9 != 0) + if (ewram0_2.showLinkBattleStatus != 0) Menu_PrintText(gOtherText_LinkCableBattles, 3, 7); } @@ -1466,19 +1471,19 @@ static void TrainerCard_Back_PrintLinkBattles(void) { u8 buffer[16]; - if (ewram0_2.var_9 != 0) + if (ewram0_2.showLinkBattleStatus != 0) { - ConvertIntToDecimalString(buffer, ewram0_2.var_64.linkBattleWins); + ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleWins); MenuPrint_RightAligned(buffer, 22, 7); - ConvertIntToDecimalString(buffer, ewram0_2.var_64.linkBattleLosses); + ConvertIntToDecimalString(buffer, ewram0_2.displayedCard.linkBattleLosses); MenuPrint_RightAligned(buffer, 28, 7); } } static void TrainerCard_Back_PrintBattleTower_Label(void) { - if (ewram0_2.var_a != 0) + if (ewram0_2.showBattleTowerStatus != 0) Menu_PrintText(gOtherText_BattleTowerWinRecord, 3, 15); } @@ -1486,19 +1491,19 @@ static void TrainerCard_Back_PrintBattleTower(void) { u8 buffer[16]; - if (ewram0_2.var_a != 0) + if (ewram0_2.showBattleTowerStatus != 0) { - sub_8072C44(buffer, ewram0_2.var_64.battleTowerWins, 24, 1); + sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1); Menu_PrintTextPixelCoords(buffer, 112, 120, 0); - sub_8072C44(buffer, ewram0_2.var_64.battleTowerLosses, 24, 1); + sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1); Menu_PrintTextPixelCoords(buffer, 149, 120, 0); } } static void TrainerCard_Back_PrintLinkContests_Label(void) { - if (ewram0_2.var_b != 0) + if (ewram0_2.showContestRecord != 0) Menu_PrintText(gOtherText_ContestRecord, 3, 13); } @@ -1506,16 +1511,16 @@ static void TrainerCard_Back_PrintLinkContests(void) { u8 buffer[8]; - if (ewram0_2.var_b != 0) + if (ewram0_2.showContestRecord != 0) { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3); MenuPrint_RightAligned(buffer, 28, 13); } } static void TrainerCard_Back_PrintLinkPokeblocks_Label(void) { - if (ewram0_2.var_c != 0) + if (ewram0_2.showMixingRecord != 0) Menu_PrintText(gOtherText_MixingRecord, 3, 11); } @@ -1523,16 +1528,16 @@ static void TrainerCard_Back_PrintLinkPokeblocks(void) { u8 buffer[8]; - if (ewram0_2.var_c != 0) + if (ewram0_2.showMixingRecord != 0) { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); MenuPrint_RightAligned(buffer, 28, 11); } } static void TrainerCard_Back_PrintPokemonTrades_Label(void) { - if (ewram0_2.var_d != 0) + if (ewram0_2.showTradingRecord != 0) Menu_PrintText(gOtherText_TradeRecord, 3, 9); } @@ -1540,9 +1545,9 @@ static void TrainerCard_Back_PrintPokemonTrades(void) { u8 buffer[8]; - if (ewram0_2.var_d != 0) + if (ewram0_2.showTradingRecord != 0) { - ConvertIntToDecimalStringN(buffer, ewram0_2.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); + ConvertIntToDecimalStringN(buffer, ewram0_2.displayedCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); MenuPrint_RightAligned(buffer, 28, 9); } } diff --git a/src/field/start_menu.c b/src/field/start_menu.c index d6881cb01..2f6f1e7dd 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -395,7 +395,7 @@ static u8 StartMenu_PlayerCallback(void) if (!gPaletteFade.active) { PlayRainSoundEffect(); - sub_8093110(sub_805469C); + TrainerCard_ShowPlayerCard(sub_805469C); return 1; } return 0; @@ -443,7 +443,7 @@ static u8 StartMenu_PlayerLinkCallback(void) if (!gPaletteFade.active) { PlayRainSoundEffect(); - sub_8093130(gUnknown_03004860, sub_805469C); + TrainerCard_ShowLinkCard(gUnknown_03004860, sub_805469C); return 1; } return 0; -- cgit v1.2.3 From 5d393adfcc1a994f9885a2720f3a0bb29afd5a6e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 Jan 2018 18:16:52 -0500 Subject: start decompiling contest_ai --- src/contest.c | 10 ++--- src/contest_ai.c | 113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 5 deletions(-) create mode 100755 src/contest_ai.c (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 875fe4502..6a8887fb1 100644 --- a/src/contest.c +++ b/src/contest.c @@ -36,8 +36,8 @@ extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool extern void sub_80C8A38(u8); extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); -extern void sub_81288F4(); -extern u8 sub_8128944(void); +extern void ContestAI_ResetAI(); +extern u8 ContestAI_GetActionToUse(void); extern struct MusicPlayerInfo gMPlay_SE1; extern u16 gSpecialVar_ContestCategory; @@ -391,7 +391,7 @@ void ClearContestVars(void) } memset(&shared192D0, 0, sizeof(shared192D0)); - memset(shared192E4, 0, 0x44 * sizeof(*shared192E4)); + memset(eContestAI, 0, sizeof(struct ContestAIInfo)); memset(&shared19328, 0, sizeof(shared19328)); memset(shared19338, 0, 4 * sizeof(*shared19338)); if (!(gIsLinkContest & 1)) @@ -2629,8 +2629,8 @@ u16 GetChosenMove(u8 a) { u8 moveChoice; - sub_81288F4(a); - moveChoice = sub_8128944(); + ContestAI_ResetAI(a); + moveChoice = ContestAI_GetActionToUse(); return gContestMons[a].moves[moveChoice]; } } diff --git a/src/contest_ai.c b/src/contest_ai.c new file mode 100755 index 000000000..9dfa6c2b9 --- /dev/null +++ b/src/contest_ai.c @@ -0,0 +1,113 @@ +#include "global.h" +#include "contest.h" +#include "random.h" +#include "ewram.h" + +enum +{ + ContestAI_SettingUp, + ContestAI_Processing, + ContestAI_FinishedProcessing, + ContestAI_DoNotProcess +}; + +extern u8 *gAIScriptPtr; +extern u8 *gContestAIs[]; + +typedef void (* ContestAICmdFunc)(void); + +extern const ContestAICmdFunc sContestAICmdTable[]; // TODO: Move table to C file + +void ContestAI_DoAIProcessing(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; + } +} + +void ContestAI_DoAIProcessing(void) +{ + while(eContestAI->aiState != ContestAI_FinishedProcessing) + { + switch(eContestAI->aiState) + { + case ContestAI_DoNotProcess: + break; + case ContestAI_SettingUp: + 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; + } + } +} + +u8 sub_8128A7C(u8 var) +{ + int i; + + for(i = 0; i < 4; i++) + if(shared192D0.unk0[i] == var) + break; + + return i; +} -- cgit v1.2.3 From fdeee269791ba9e163f32522d44526b0e2b58f29 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 Jan 2018 20:44:49 -0500 Subject: up to ContestAICmd_unk_14 --- src/contest_ai.c | 198 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 9dfa6c2b9..124ec6357 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -111,3 +111,201 @@ u8 sub_8128A7C(u8 var) return i; } + +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; +} + +void ContestAICmd_get_turn(void) +{ + eContestAI->scriptResult = sContest.turnNumber; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_02(void) +{ + ContestAICmd_get_turn(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_03(void) +{ + ContestAICmd_get_turn(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_04(void) +{ + ContestAICmd_get_turn(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_05(void) +{ + ContestAICmd_get_turn(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_excitement(void) +{ + eContestAI->scriptResult = sContest.applauseLevel; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_07(void) +{ + ContestAICmd_get_excitement(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_08(void) +{ + ContestAICmd_get_excitement(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_09(void) +{ + ContestAICmd_get_excitement(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_0A(void) +{ + ContestAICmd_get_excitement(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_user_order(void) +{ + eContestAI->scriptResult = shared192D0.unk0[eContestAI->unk41]; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_0C(void) +{ + ContestAICmd_get_user_order(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_0D(void) +{ + ContestAICmd_get_user_order(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_0E(void) +{ + ContestAICmd_get_user_order(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_0F(void) +{ + ContestAICmd_get_user_order(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_user_condition_maybe(void) +{ + eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unkD / 10; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_11(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_12(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_13(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_14(void) +{ + ContestAICmd_get_user_condition_maybe(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} -- cgit v1.2.3 From d6b0b3d62f80d97a8721cfe23b794ec068078d65 Mon Sep 17 00:00:00 2001 From: golem galvanize Date: Thu, 11 Jan 2018 18:30:41 -0500 Subject: un-hard code max item define --- src/field/item.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/item.c b/src/field/item.c index 66d7d65df..6ff7a7cbe 100644 --- a/src/field/item.c +++ b/src/field/item.c @@ -571,7 +571,7 @@ void SwapRegisteredBike(void) static u16 SanitizeItemId(u16 itemId) { - if (itemId > 0x15C) + if (itemId >= ARRAY_COUNT(gItems)) return 0; else return itemId; -- cgit v1.2.3 From 2be2b22589de437ae5f53df8e380533958da9e70 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 12 Jan 2018 21:24:21 -0600 Subject: decompile battle_intro.s --- src/battle/anim/battle_intro.c | 480 +++++++++++++++++++++++++++++++++++++++++ src/scene/evolution_scene.c | 3 +- 2 files changed, 481 insertions(+), 2 deletions(-) create mode 100644 src/battle/anim/battle_intro.c (limited to 'src') diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c new file mode 100644 index 000000000..46ea292bd --- /dev/null +++ b/src/battle/anim/battle_intro.c @@ -0,0 +1,480 @@ +#include "global.h" +#include "constants/battle_constants.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_anim_80CA710.h" +#include "data2.h" +#include "ewram.h" +#include "main.h" +#include "rom_8077ABC.h" +#include "scanline_effect.h" +#include "task.h" +#include "trig.h" + +extern u16 gBattleTypeFlags; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_WIN0V; +extern u16 gUnknown_02024DE8; +extern u8 gBattleMonForms[]; + +extern void sub_800FE20(struct Sprite *); + +static void task_battle_intro_80BC47C(u8); +static void task00_battle_intro_80BC6C8(u8); +static void task_battle_intro_anim(u8); +static void sub_80E4C34(u8); + +static const TaskFunc gUnknown_083DB56C[] = +{ + task_battle_intro_80BC47C, + task_battle_intro_80BC47C, + task00_battle_intro_80BC6C8, + task00_battle_intro_80BC6C8, + task00_battle_intro_80BC6C8, + task_battle_intro_80BC47C, + task_battle_intro_80BC47C, + task_battle_intro_80BC47C, + task_battle_intro_anim, + task_battle_intro_anim, +}; + +void sub_80E43C0(u8 a) +{ + u8 taskId; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + taskId = CreateTask(sub_80E4C34, 0); + } + else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) + { + a = 3; + taskId = CreateTask(task00_battle_intro_80BC6C8, 0); + } + else + { + taskId = CreateTask(gUnknown_083DB56C[a], 0); + } + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = a; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[6] = 0; +} + +static void sub_80E443C(u8 taskId) +{ + DestroyTask(taskId); + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_WININ = WIN_RANGE(63, 63); + REG_WINOUT = WIN_RANGE(63, 63); +} + +static void task_battle_intro_80BC47C(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 6; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + } + break; + case 1: + gTasks[taskId].data[2]--; + if (gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + REG_WININ = 0x3F; + } + break; + case 2: + gBattle_WIN0V -= 255; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = DISPLAY_WIDTH; + gTasks[taskId].data[3] = 32; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3] != 0) + { + gTasks[taskId].data[3]--; + } + else if (gTasks[taskId].data[1] == 1) + { + if (gBattle_BG1_Y != 0xFFB0) + gBattle_BG1_Y -= 2; + } + else + { + if (gBattle_BG1_Y != 0xFFC8) + gBattle_BG1_Y -= 1; + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].data[2] != 0) + gTasks[taskId].data[2] -= 2; + + // Set the x offset for the the top half of the screen. + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + // Set the x offset for the bottom half of the screen. + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (gTasks[taskId].data[2] == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + sub_80E443C(taskId); + break; + } +} + +static void task00_battle_intro_80BC6C8(u8 taskId) +{ + s32 i; + + switch (gTasks[taskId].data[1]) + { + case 2: + case 4: + gBattle_BG1_X += 8; + break; + case 3: + gBattle_BG1_X += 6; + break; + } + + if (gTasks[taskId].data[1] == 4) + { + gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8; + if (gTasks[taskId].data[6] < 0xB4) + gTasks[taskId].data[6] += 4; + else + gTasks[taskId].data[6] += 6; + if (gTasks[taskId].data[6] == 0x168) + gTasks[taskId].data[6] = 0; + } + + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[4] = 16; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + } + break; + case 1: + gTasks[taskId].data[2]--; + if (gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + REG_WININ = 0x3F; + } + break; + case 2: + gBattle_WIN0V -= 255; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gTasks[taskId].data[5] = 1; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3] != 0) + { + gTasks[taskId].data[3]--; + if (gTasks[taskId].data[3] == 0) + { + REG_BLDCNT = 0x1842; + REG_BLDALPHA = 0xF; + REG_BLDY = 0; + } + } + else + { + if ((gTasks[taskId].data[4] & 0x1F) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 4; + } + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].data[2] != 0) + gTasks[taskId].data[2] -= 2; + + // Set the x offset for the the top half of the screen. + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + // Set the x offset for the bottom half of the screen. + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (gTasks[taskId].data[2] == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + sub_80E443C(taskId); + break; + } + + if (gTasks[taskId].data[0] != 4) + REG_BLDALPHA = gTasks[taskId].data[4]; +} + +static void task_battle_intro_anim(u8 taskId) +{ + s32 i; + + gBattle_BG1_X += 8; + + switch (gTasks[taskId].data[0]) + { + case 0: + REG_BLDCNT = 0x1842; + REG_BLDALPHA = 0x0808; + REG_BLDY = 0; + gTasks[taskId].data[4] = 0x0808; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[0]++; + } + break; + case 1: + gTasks[taskId].data[2]--; + if (gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + REG_WININ = 0x3F; + } + break; + case 2: + gBattle_WIN0V -= 255; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gTasks[taskId].data[5] = 1; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if (gTasks[taskId].data[3] != 0) + { + gTasks[taskId].data[3]--; + } + else if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 6; + } + + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].data[2] != 0) + gTasks[taskId].data[2] -= 2; + + // Set the x offset for the the top half of the screen. + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + // Set the x offset for the bottom half of the screen. + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (gTasks[taskId].data[2] == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + sub_80E443C(taskId); + break; + } + + if (gTasks[taskId].data[0] != 4) + REG_BLDALPHA = gTasks[taskId].data[4]; +} + +static void sub_80E4C34(u8 taskId) +{ + s32 i; + + if (gTasks[taskId].data[0] > 1 && gTasks[taskId].data[4] == 0) + { + if ((gBattle_BG1_X & 0x8000) || gBattle_BG1_X < 80) // hmm... + { + gBattle_BG1_X += 3; + gBattle_BG2_X -= 3; + } + else + { + CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); + CpuFill32(0, (void *)(VRAM + 0xF000), 0x800); + gTasks[taskId].data[4] = 1; + } + } + + switch (gTasks[taskId].data[0]) + { + case 0: + gTasks[taskId].data[2] = 16; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[2]--; + if (gTasks[taskId].data[2] == 0) + { + gTasks[taskId].data[0]++; + gSprites[ewram1608A].oam.objMode = 2; + gSprites[ewram1608A].callback = sub_800FE20; + gSprites[ewram1608B].oam.objMode = 2; + gSprites[ewram1608B].callback = sub_800FE20; + REG_WININ = 0x3F; + REG_WINOUT = 0x3F06; + } + break; + case 2: + gBattle_WIN0V -= 255; + if ((gBattle_WIN0V & 0xFF00) == 0x3000) + { + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = 240; + gTasks[taskId].data[3] = 32; + gUnknown_02024DE8 &= ~1; + } + break; + case 3: + if ((gBattle_WIN0V & 0xFF00) != 0) + gBattle_WIN0V -= 1020; + + if (gTasks[taskId].data[2] != 0) + gTasks[taskId].data[2] -= 2; + + // Set the x offset for the the top half of the screen. + for (i = 0; i < DISPLAY_HEIGHT / 2; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; + // Set the x offset for the bottom half of the screen. + for (; i < DISPLAY_HEIGHT; i++) + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + + if (gTasks[taskId].data[2] == 0) + { + gScanlineEffect.state = 3; + gTasks[taskId].data[0]++; + REG_BG1CNT = 0x9C00; + REG_BG2CNT = 0x5E00; + } + break; + case 4: + sub_80E443C(taskId); + break; + } +} + +void unref_sub_80E4EC8(u8 a, u8 b, u8 c, u8 d) +{ + sub_80E4EF8(a, b, c, d, 0x4000, 30, 1); +} + +// draws some 8x8 tilemap +void sub_80E4EF8(u8 left, u8 top, u8 c, u8 paletteNum, u16 e, u8 bgMap, u8 g) +{ + u32 tileNum; + s32 x; + s32 y; + u8 bank = GetBankByIdentity(c); + + DmaCopy16(3, gUnknown_081FAF4C[c] + gBattleMonForms[bank] * 0x800, (void *)(VRAM + e), 0x800); + tileNum = e / 32 - g * 512; + for (y = top; y < top + 8; y++) + { + for (x = left; x < left + 8; x++) + { + *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12); + tileNum++; + } + } +} + +void unref_sub_80E4FDC(u8 left, u8 top, u8 c, u8 form, u8 paletteNum, u16 f, u8 bgMap, u8 h) +{ + u32 tileNum; + s32 x; + s32 y; + + DmaCopy16(3, gUnknown_081FAF4C[c] + form * 0x800, (void *)(VRAM + f), 0x800); + tileNum = f / 32 - h * 512; + for (y = top; y < top + 8; y++) + { + for (x = left; x < left + 8; x++) + { + *(u16 *)(VRAM + x * 2 + bgMap * 0x800 + y * 64) = tileNum | (paletteNum << 12); + tileNum++; + } + } +} diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 53eb2f1e8..697806ee1 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -88,8 +88,7 @@ extern u8 gBattleCommunication[]; extern const u8 BattleText_StartEvo[]; extern const u8 BattleText_FinishEvo[]; extern const u8 BattleText_StopEvo[]; -extern void * const gUnknown_081FAF4C[]; -extern const u8* const gBattleStringsTable[]; +extern const u8 *const gBattleStringsTable[]; // this file's functions static void Task_EvolutionScene(u8 taskID); -- cgit v1.2.3 From e33a9b2b535b401a47455065dd4cb9364ed9c9f7 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 12 Jan 2018 22:48:47 -0500 Subject: up to ContestAICmd_unk_2C --- src/contest_ai.c | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 124ec6357..3ddac5550 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -11,6 +11,9 @@ enum ContestAI_DoNotProcess }; +extern s16 gUnknown_02038670[]; +extern u16 gSpecialVar_ContestCategory; + extern u8 *gAIScriptPtr; extern u8 *gContestAIs[]; @@ -309,3 +312,223 @@ void ContestAICmd_unk_14(void) else gAIScriptPtr += 5; } + +void ContestAICmd_unk_15(void) +{ + eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_16(void) +{ + ContestAICmd_unk_15(); + + if((s16)eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_17(void) +{ + ContestAICmd_unk_15(); + + if((s16)eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_18(void) +{ + ContestAICmd_unk_15(); + + if((s16)eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_19(void) +{ + ContestAICmd_unk_15(); + + if((s16)eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_1A(void) +{ + eContestAI->scriptResult = gUnknown_02038670[eContestAI->unk41]; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_1B(void) +{ + ContestAICmd_unk_1A(); + + if((s16)eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_1C(void) +{ + ContestAICmd_unk_1A(); + + if((s16)eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_1D(void) +{ + ContestAICmd_unk_1A(); + + if((s16)eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_1E(void) +{ + ContestAICmd_unk_1A(); + + if((s16)eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_get_contest_type(void) +{ + eContestAI->scriptResult = gSpecialVar_ContestCategory; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_20(void) +{ + ContestAICmd_get_contest_type(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_21(void) +{ + ContestAICmd_get_contest_type(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_move_excitement(void) +{ + eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[eContestAI->unk4]); + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_23(void) +{ + ContestAICmd_get_move_excitement(); + + if((s16)eContestAI->scriptResult < (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_24(void) +{ + ContestAICmd_get_move_excitement(); + + if((s16)eContestAI->scriptResult > (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_25(void) +{ + ContestAICmd_get_move_excitement(); + + if((s16)eContestAI->scriptResult == (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_26(void) +{ + ContestAICmd_get_move_excitement(); + + if((s16)eContestAI->scriptResult != (s8)gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_move_effect(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestMoves[move].effect; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_28(void) +{ + ContestAICmd_get_move_effect(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_29(void) +{ + ContestAICmd_get_move_effect(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_move_effect_type(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_2B(void) +{ + ContestAICmd_get_move_effect_type(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_2C(void) +{ + ContestAICmd_get_move_effect_type(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} -- cgit v1.2.3 From 39575a7e6c15bc0d69f990fe1b9c3492f684c15e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 13 Jan 2018 01:11:13 -0500 Subject: up to ContestAICmd_unk_3F --- src/contest_ai.c | 212 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 3ddac5550..2fce17cbe 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -532,3 +532,215 @@ void ContestAICmd_unk_2C(void) else gAIScriptPtr += 5; } + +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; +} + +void ContestAICmd_unk_2E(void) +{ + ContestAICmd_check_move_has_highest_appeal(); + + if((s16)eContestAI->scriptResult != FALSE) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +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; +} + +void ContestAICmd_unk_30(void) +{ + ContestAICmd_unk_2F(); + + if((s16)eContestAI->scriptResult != FALSE) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_31(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].appeal / 10; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_32(void) +{ + ContestAICmd_unk_31(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_33(void) +{ + ContestAICmd_unk_31(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_34(void) +{ + ContestAICmd_unk_31(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_35(void) +{ + ContestAICmd_unk_31(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_36(void) +{ + u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].jam / 10; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_37(void) +{ + ContestAICmd_unk_36(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_38(void) +{ + ContestAICmd_unk_36(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_39(void) +{ + ContestAICmd_unk_36(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_3A(void) +{ + ContestAICmd_unk_36(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +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; +} + +void ContestAICmd_unk_3C(void) +{ + ContestAICmd_get_move_used_count(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_3D(void) +{ + ContestAICmd_get_move_used_count(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_3E(void) +{ + ContestAICmd_get_move_used_count(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_3F(void) +{ + ContestAICmd_get_move_used_count(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} -- cgit v1.2.3 From 82e7961ec47071b4259fdaea16ee2707907b1143 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 13 Jan 2018 02:39:10 -0500 Subject: up to ContestAICmd_unk_3F --- src/contest_ai.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 2fce17cbe..a62a69194 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -744,3 +744,97 @@ void ContestAICmd_unk_3F(void) else gAIScriptPtr += 5; } + +extern u8 AreMovesContestCombo(u16, u16); + +/* +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++) + { + u16 newMove = gContestMons[eContestAI->unk41].moves[i]; + u16 isCombo = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); + if(newMove && isCombo) + { + result = 1; + break; + } + if(isCombo) // dumb double r5 check? + { + result = 1; + break; + } + } + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +}*/ + +/* + thumb_func_start ContestAICmd_check_combo_starter +ContestAICmd_check_combo_starter: @ 8129B44 + push {r4-r7,lr} + mov r7, r8 + push {r7} + movs r5, 0 + ldr r3, _08129BAC @ =gContestMons + ldr r2, _08129BB0 @ =gSharedMem + 0x192E4 + ldrb r1, [r2, 0x4] + lsls r1, 1 + adds r2, 0x41 + ldrb r0, [r2] + lsls r0, 6 + adds r1, r0 + adds r3, 0x1E + adds r1, r3 + ldrh r6, [r1] + movs r4, 0 + mov r8, r2 + adds r7, r3, 0 +_08129B68: + lsls r0, r4, 1 + mov r2, r8 + ldrb r1, [r2] + lsls r1, 6 + adds r0, r1 + adds r1, r0, r7 + ldrh r0, [r1] + cmp r0, 0 + beq _08129B8A + adds r1, r0, 0 + adds r0, r6, 0 + bl AreMovesContestCombo + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _08129B94 +_08129B8A: + adds r4, 0x1 + cmp r4, 0x3 + ble _08129B68 + cmp r5, 0 + beq _08129B96 +_08129B94: + movs r5, 0x1 +_08129B96: + ldr r0, _08129BB0 @ =gSharedMem + 0x192E4 + strh r5, [r0, 0x18] + ldr r1, _08129BB4 @ =gAIScriptPtr + ldr r0, [r1] + adds r0, 0x1 + str r0, [r1] + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08129BAC: .4byte gContestMons +_08129BB0: .4byte gSharedMem + 0x192E4 +_08129BB4: .4byte gAIScriptPtr + thumb_func_end ContestAICmd_check_combo_starter +*/ -- cgit v1.2.3 From e9c74d2472bc322b9d60f1b7033268efbd0bd159 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jan 2018 13:02:57 -0500 Subject: nonmatching sub_8099F58 --- src/pokemon/pokemon_storage_system_4.c | 350 +++++++++++++++++++++++++++++++++ 1 file changed, 350 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 8982ce461..9f19814a5 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -323,3 +323,353 @@ void sub_8099EB0(u8 boxId, s8 a1) sub_8099F58(BG_SCREEN_ADDR(26), gPokemonStorageSystemPtr->unk_0d62, a1, gPokemonStorageSystemPtr->unk_08ba); LZ77UnCompVram(wallpaperTable->tiles, BG_CHAR_ADDR(2) + (gPokemonStorageSystemPtr->unk_08ba << 13)); } + +#ifdef NONMATCHING +void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) +{ + s16 r6; + s16 r3; + u16 sp0 = a3 << 8; + u16 sp4 = (a3 * 3 + 4) << 12; + u16 *r4; + u16 *r7; + u16 i; + u16 j; + s16 sp8 = ((gPokemonStorageSystemPtr->unk_08b4 >> 3) + 10 + a2 * 24) & 0x3f; + if (sp8 < 13) + { + r6 = 20; + r3 = 0; + r4 = vdest + sp8 + 0x40; + r7 = NULL; + } + else if (sp8 < 32) + { + r6 = 32 - sp8; + r3 = 20 - r6; + r4 = vdest + sp8 + 0x40; + r7 = vdest + 0x440; + } + else if (sp8 < 45) + { + r6 = 20; + r3 = 0; + r4 = vdest + sp8 + 0x420; + r7 = NULL; + } + else + { + r6 = 64 - sp8; + r3 = 20 - r6; + r4 = vdest + sp8 + 0x420; + r7 = vdest + 0x40; + } + for (i = 0; i < 18; i++) + { + for (j = 0; j < r6; j++) + { + u16 tile = ((*src & 0xfff) + sp0) | ((*src & 0xf000) + sp4); + r4[j] = tile; + src++; + } + for (j = 0; j < r3; j++) + { + u16 tile = ((*src & 0xfff) + sp0) | ((*src & 0xf000) + sp4); + r7[j] = tile; + src++; + } + r4 += 0x20; + r7 += 0x20; + } + if (a2) + { + s16 r4_2; + u16 *r2; + if (a2 > 0) + r4_2 = (sp8 + 20) & 0x3f; + else + r4_2 = (sp8 - 4) & 0x3f; + r2 = r4_2 < 0x20 ? vdest + r4_2 + 0x40 : vdest + r4_2 + 0x420; + for (i = 0; i < 4; i++) + { + for (j = 0; j < 18; j++) + { + *r2 = 0; + r2 += 0x20; + } + r4_2++; + r4_2 &= 0x3f; + r2 = r4_2 < 0x20 ? vdest + r4_2 + 0x40 : vdest + r4_2 + 0x420; + } + } +} +#else +__attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x20\n" + "\tmov r9, r0\n" + "\tadds r5, r1, 0\n" + "\tlsls r2, 24\n" + "\tlsls r3, 24\n" + "\tlsrs r3, 24\n" + "\tlsls r0, r3, 8\n" + "\tstr r0, [sp]\n" + "\tlsls r0, r3, 1\n" + "\tadds r0, r3\n" + "\tadds r0, 0x4\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 16\n" + "\tstr r0, [sp, 0x4]\n" + "\tldr r0, _08099FB8 @ =gPokemonStorageSystemPtr\n" + "\tldr r0, [r0]\n" + "\tldr r1, _08099FBC @ =0x000008b4\n" + "\tadds r0, r1\n" + "\tldrh r1, [r0]\n" + "\tlsrs r1, 3\n" + "\tadds r1, 0xA\n" + "\tlsrs r0, r2, 24\n" + "\tmov r8, r0\n" + "\tasrs r2, 24\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, r2\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "\tmovs r0, 0x3F\n" + "\tands r1, r0\n" + "\tstr r1, [sp, 0x8]\n" + "\tadds r2, r1, 0\n" + "\tcmp r2, 0xC\n" + "\tbgt _08099FC0\n" + "\tmovs r6, 0x14\n" + "\tmovs r3, 0\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, 0x80\n" + "\tmov r1, r9\n" + "\tadds r4, r1, r0\n" + "\tmovs r7, 0\n" + "\tb _0809A020\n" + "\t.align 2, 0\n" + "_08099FB8: .4byte gPokemonStorageSystemPtr\n" + "_08099FBC: .4byte 0x000008b4\n" + "_08099FC0:\n" + "\tcmp r2, 0x1F\n" + "\tbgt _08099FE6\n" + "\tmovs r0, 0x20\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tmovs r1, 0x14\n" + "\tlsrs r6, r0, 16\n" + "\tasrs r0, 16\n" + "\tsubs r1, r0\n" + "\tlsls r1, 16\n" + "\tlsrs r3, r1, 16\n" + "\tlsls r0, r2, 1\n" + "\tadds r0, 0x80\n" + "\tmov r2, r9\n" + "\tadds r4, r2, r0\n" + "\tmovs r7, 0x88\n" + "\tlsls r7, 4\n" + "\tadd r7, r9\n" + "\tb _0809A020\n" + "_08099FE6:\n" + "\tcmp r2, 0x2C\n" + "\tbgt _08099FFE\n" + "\tmovs r6, 0x14\n" + "\tmovs r3, 0\n" + "\tlsls r0, r2, 1\n" + "\tmovs r1, 0x84\n" + "\tlsls r1, 4\n" + "\tadds r0, r1\n" + "\tmov r2, r9\n" + "\tadds r4, r2, r0\n" + "\tmovs r7, 0\n" + "\tb _0809A020\n" + "_08099FFE:\n" + "\tmovs r0, 0x40\n" + "\tsubs r0, r2\n" + "\tlsls r0, 16\n" + "\tmovs r1, 0x14\n" + "\tlsrs r6, r0, 16\n" + "\tasrs r0, 16\n" + "\tsubs r1, r0\n" + "\tlsls r1, 16\n" + "\tlsrs r3, r1, 16\n" + "\tlsls r0, r2, 1\n" + "\tmovs r1, 0x84\n" + "\tlsls r1, 4\n" + "\tadds r0, r1\n" + "\tmov r2, r9\n" + "\tadds r4, r2, r0\n" + "\tmov r7, r9\n" + "\tadds r7, 0x80\n" + "_0809A020:\n" + "\tmovs r1, 0\n" + "\tmov r0, r8\n" + "\tlsls r0, 24\n" + "\tstr r0, [sp, 0x14]\n" + "\tlsls r0, r6, 16\n" + "\tasrs r0, 16\n" + "\tmov r8, r0\n" + "\tlsls r3, 16\n" + "\tstr r3, [sp, 0xC]\n" + "\tasrs r2, r3, 16\n" + "\tstr r2, [sp, 0x10]\n" + "_0809A036:\n" + "\tmovs r3, 0\n" + "\tadds r0, r4, 0\n" + "\tadds r0, 0x40\n" + "\tstr r0, [sp, 0x18]\n" + "\tadds r2, r7, 0\n" + "\tadds r2, 0x40\n" + "\tstr r2, [sp, 0x1C]\n" + "\tadds r1, 0x1\n" + "\tmov r10, r1\n" + "\tcmp r3, r8\n" + "\tbge _0809A07A\n" + "\tldr r0, _0809A0D4 @ =0x00000fff\n" + "\tmov r12, r0\n" + "\tmovs r6, 0xF0\n" + "\tlsls r6, 8\n" + "_0809A054:\n" + "\tldrh r2, [r5]\n" + "\tmov r0, r12\n" + "\tands r0, r2\n" + "\tldr r1, [sp]\n" + "\tadds r0, r1, r0\n" + "\tadds r1, r6, 0\n" + "\tands r1, r2\n" + "\tldr r2, [sp, 0x4]\n" + "\tadds r1, r2, r1\n" + "\torrs r1, r0\n" + "\tlsls r0, r3, 1\n" + "\tadds r0, r4\n" + "\tstrh r1, [r0]\n" + "\tadds r5, 0x2\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tcmp r3, r8\n" + "\tblt _0809A054\n" + "_0809A07A:\n" + "\tmovs r3, 0\n" + "\tldr r0, [sp, 0x10]\n" + "\tcmp r3, r0\n" + "\tbge _0809A0B4\n" + "\tldr r1, _0809A0D4 @ =0x00000fff\n" + "\tmov r12, r1\n" + "\tmovs r6, 0xF0\n" + "\tlsls r6, 8\n" + "\tldr r2, [sp, 0xC]\n" + "\tasrs r4, r2, 16\n" + "_0809A08E:\n" + "\tldrh r2, [r5]\n" + "\tmov r0, r12\n" + "\tands r0, r2\n" + "\tldr r1, [sp]\n" + "\tadds r0, r1, r0\n" + "\tadds r1, r6, 0\n" + "\tands r1, r2\n" + "\tldr r2, [sp, 0x4]\n" + "\tadds r1, r2, r1\n" + "\torrs r1, r0\n" + "\tlsls r0, r3, 1\n" + "\tadds r0, r7\n" + "\tstrh r1, [r0]\n" + "\tadds r5, 0x2\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r3, r0, 16\n" + "\tcmp r3, r4\n" + "\tblt _0809A08E\n" + "_0809A0B4:\n" + "\tldr r4, [sp, 0x18]\n" + "\tldr r7, [sp, 0x1C]\n" + "\tmov r1, r10\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r1, r0, 16\n" + "\tcmp r1, 0x11\n" + "\tbls _0809A036\n" + "\tldr r0, [sp, 0x14]\n" + "\tasrs r2, r0, 24\n" + "\tcmp r2, 0\n" + "\tbeq _0809A13A\n" + "\tcmp r2, 0\n" + "\tble _0809A0D8\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r1, 0x14\n" + "\tb _0809A0DC\n" + "\t.align 2, 0\n" + "_0809A0D4: .4byte 0x00000fff\n" + "_0809A0D8:\n" + "\tldr r1, [sp, 0x8]\n" + "\tsubs r1, 0x4\n" + "_0809A0DC:\n" + "\tmovs r0, 0x3F\n" + "\tands r1, r0\n" + "\tadds r4, r1, 0\n" + "\tadds r0, r4, 0\n" + "\tcmp r0, 0x1F\n" + "\tbgt _0809A0EE\n" + "\tlsls r0, 1\n" + "\tadds r0, 0x80\n" + "\tb _0809A0F6\n" + "_0809A0EE:\n" + "\tlsls r0, 1\n" + "\tmovs r2, 0x84\n" + "\tlsls r2, 4\n" + "\tadds r0, r2\n" + "_0809A0F6:\n" + "\tmov r1, r9\n" + "\tadds r2, r1, r0\n" + "\tmovs r3, 0\n" + "\tmovs r6, 0\n" + "_0809A0FE:\n" + "\tmovs r1, 0\n" + "\tadds r5, r3, 0x1\n" + "\tlsls r3, r4, 16\n" + "_0809A104:\n" + "\tstrh r6, [r2]\n" + "\tadds r2, 0x40\n" + "\tadds r0, r1, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tcmp r1, 0x11\n" + "\tbls _0809A104\n" + "\tasrs r0, r3, 16\n" + "\tadds r4, r0, 0x1\n" + "\tmovs r0, 0x3F\n" + "\tands r4, r0\n" + "\tadds r0, r4, 0\n" + "\tcmp r0, 0x1F\n" + "\tbgt _0809A126\n" + "\tlsls r0, 1\n" + "\tadds r0, 0x80\n" + "\tb _0809A12E\n" + "_0809A126:\n" + "\tlsls r0, 1\n" + "\tmovs r2, 0x84\n" + "\tlsls r2, 4\n" + "\tadds r0, r2\n" + "_0809A12E:\n" + "\tmov r1, r9\n" + "\tadds r2, r1, r0\n" + "\tlsls r0, r5, 16\n" + "\tlsrs r3, r0, 16\n" + "\tcmp r3, 0x3\n" + "\tbls _0809A0FE\n" + "_0809A13A:\n" + "\tadd sp, 0x20\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif -- cgit v1.2.3 From a5721ffd736f30d424da8aede5c52071365f3850 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jan 2018 16:40:15 -0500 Subject: nonmatching sub_809A14C --- src/pokemon/pokemon_storage_system_4.c | 84 ++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 9f19814a5..1ccaa01f1 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -673,3 +673,87 @@ __attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3 "\tbx r0"); } #endif + +#ifdef NONMATCHING +void sub_809A14C(u16 *vdest) +{ + u16 *r2; + u16 i; + int r3 = ((gPokemonStorageSystemPtr->unk_08b4 >> 3) + 30) & 0x3f; + r2 = vdest + (r3 < 0x20 ? r3 + 0x260 : r3 + 0x640); + for (i = 0; i < 0x2b; i++) + { + *r2++ = 0; + r3++; + r3 &= 0x3f; + if (r3 == 0) + r2 -= 0x420; + if (r3 == 0x20) + r2 += 0x3e0; + } +} +#else +__attribute__((naked)) void sub_809A14C(u16 *vdest) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r2, r0, 0\n" + "\tldr r0, _0809A174 @ =gPokemonStorageSystemPtr\n" + "\tldr r0, [r0]\n" + "\tldr r1, _0809A178 @ =0x000008b4\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0]\n" + "\tlsrs r0, 3\n" + "\tadds r3, r0, 0\n" + "\tadds r3, 0x1E\n" + "\tmovs r0, 0x3F\n" + "\tands r3, r0\n" + "\tadds r0, r3, 0\n" + "\tcmp r0, 0x1F\n" + "\tbgt _0809A17C\n" + "\tlsls r0, 1\n" + "\tmovs r6, 0x98\n" + "\tlsls r6, 3\n" + "\tadds r0, r6\n" + "\tb _0809A184\n" + "\t.align 2, 0\n" + "_0809A174: .4byte gPokemonStorageSystemPtr\n" + "_0809A178: .4byte 0x000008b4\n" + "_0809A17C:\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0xC8\n" + "\tlsls r1, 4\n" + "\tadds r0, r1\n" + "_0809A184:\n" + "\tadds r2, r0\n" + "\tmovs r0, 0\n" + "\tmovs r5, 0\n" + "\tmovs r4, 0x3F\n" + "_0809A18C:\n" + "\tstrh r5, [r2]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x1\n" + "\tands r3, r4\n" + "\tadds r1, r3, 0\n" + "\tcmp r1, 0\n" + "\tbne _0809A19E\n" + "\tldr r6, _0809A1B8 @ =0xfffff7c0\n" + "\tadds r2, r6\n" + "_0809A19E:\n" + "\tcmp r1, 0x20\n" + "\tbne _0809A1A8\n" + "\tmovs r1, 0xF8\n" + "\tlsls r1, 3\n" + "\tadds r2, r1\n" + "_0809A1A8:\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x2B\n" + "\tbls _0809A18C\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0809A1B8: .4byte 0xfffff7c0"); +} +#endif -- cgit v1.2.3 From 2e8f0cd4b33a7a3ea92b2b42742d78d98959d1e5 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 13 Jan 2018 16:00:39 -0600 Subject: label battle_intro.c --- src/battle/anim/battle_intro.c | 281 +++++++++++++++------------- src/battle/battle_controller_linkopponent.c | 4 +- src/battle/battle_controller_linkpartner.c | 4 +- src/battle/battle_controller_opponent.c | 4 +- src/battle/battle_controller_player.c | 4 +- src/battle/battle_controller_safari.c | 4 +- src/battle/battle_controller_wally.c | 4 +- 7 files changed, 162 insertions(+), 143 deletions(-) (limited to 'src') diff --git a/src/battle/anim/battle_intro.c b/src/battle/anim/battle_intro.c index 46ea292bd..01f823fa7 100644 --- a/src/battle/anim/battle_intro.c +++ b/src/battle/anim/battle_intro.c @@ -22,53 +22,57 @@ extern u8 gBattleMonForms[]; extern void sub_800FE20(struct Sprite *); -static void task_battle_intro_80BC47C(u8); -static void task00_battle_intro_80BC6C8(u8); -static void task_battle_intro_anim(u8); -static void sub_80E4C34(u8); +static void BattleIntroTask_ScrollScenery(u8); +static void BattleIntroTask_FadeScenery(u8); +static void BattleIntroTask_ScrollAndFadeScenery(u8); +static void BattleIntroTask_80E4C34(u8); -static const TaskFunc gUnknown_083DB56C[] = +static const TaskFunc sBattleIntroTaskFuncs[] = { - task_battle_intro_80BC47C, - task_battle_intro_80BC47C, - task00_battle_intro_80BC6C8, - task00_battle_intro_80BC6C8, - task00_battle_intro_80BC6C8, - task_battle_intro_80BC47C, - task_battle_intro_80BC47C, - task_battle_intro_80BC47C, - task_battle_intro_anim, - task_battle_intro_anim, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_FadeScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollScenery, + BattleIntroTask_ScrollAndFadeScenery, + BattleIntroTask_ScrollAndFadeScenery, }; -void sub_80E43C0(u8 a) +#define tState data[0] +#define tBgXOffset data[2] +#define tFramesUntilBg1Slide data[3] + +void StartBattleIntroAnim(u8 a) { u8 taskId; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - taskId = CreateTask(sub_80E4C34, 0); + taskId = CreateTask(BattleIntroTask_80E4C34, 0); } else if ((gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) && gGameVersion != VERSION_RUBY) { a = 3; - taskId = CreateTask(task00_battle_intro_80BC6C8, 0); + taskId = CreateTask(BattleIntroTask_FadeScenery, 0); } else { - taskId = CreateTask(gUnknown_083DB56C[a], 0); + taskId = CreateTask(sBattleIntroTaskFuncs[a], 0); } - gTasks[taskId].data[0] = 0; + gTasks[taskId].tState = 0; gTasks[taskId].data[1] = a; - gTasks[taskId].data[2] = 0; - gTasks[taskId].data[3] = 0; + gTasks[taskId].tBgXOffset = 0; + gTasks[taskId].tFramesUntilBg1Slide = 0; gTasks[taskId].data[4] = 0; gTasks[taskId].data[5] = 0; gTasks[taskId].data[6] = 0; } -static void sub_80E443C(u8 taskId) +static void EndBattleIntroTask(u8 taskId) { DestroyTask(taskId); gBattle_BG1_X = 0; @@ -78,93 +82,98 @@ static void sub_80E443C(u8 taskId) REG_BLDCNT = 0; REG_BLDALPHA = 0; REG_BLDY = 0; - REG_WININ = WIN_RANGE(63, 63); - REG_WINOUT = WIN_RANGE(63, 63); + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; } -static void task_battle_intro_80BC47C(u8 taskId) +static void BattleIntroTask_ScrollScenery(u8 taskId) { s32 i; gBattle_BG1_X += 6; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - gTasks[taskId].data[2] = 16; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; } else { - gTasks[taskId].data[2] = 1; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; } break; case 1: - gTasks[taskId].data[2]--; - if (gTasks[taskId].data[2] == 0) + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) { - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; REG_WININ = 0x3F; } break; case 2: - gBattle_WIN0V -= 255; + // Open up the window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y if ((gBattle_WIN0V & 0xFF00) == 0x3000) { - gTasks[taskId].data[0]++; - gTasks[taskId].data[2] = DISPLAY_WIDTH; - gTasks[taskId].data[3] = 32; + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; gUnknown_02024DE8 &= ~1; } break; case 3: - if (gTasks[taskId].data[3] != 0) - { - gTasks[taskId].data[3]--; - } - else if (gTasks[taskId].data[1] == 1) + if (gTasks[taskId].tFramesUntilBg1Slide != 0) { - if (gBattle_BG1_Y != 0xFFB0) - gBattle_BG1_Y -= 2; + gTasks[taskId].tFramesUntilBg1Slide--; } else { - if (gBattle_BG1_Y != 0xFFC8) - gBattle_BG1_Y -= 1; + if (gTasks[taskId].data[1] == 1) + { + if (gBattle_BG1_Y != 0xFFB0) + gBattle_BG1_Y -= 2; + } + else + { + if (gBattle_BG1_Y != 0xFFC8) + gBattle_BG1_Y -= 1; + } } if ((gBattle_WIN0V & 0xFF00) != 0) gBattle_WIN0V -= 1020; - if (gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; - // Set the x offset for the the top half of the screen. + // Slide in the top half of the BG from the left for (i = 0; i < DISPLAY_HEIGHT / 2; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; - // Set the x offset for the bottom half of the screen. + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right for (; i < DISPLAY_HEIGHT; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; - if (gTasks[taskId].data[2] == 0) + if (gTasks[taskId].tBgXOffset == 0) { gScanlineEffect.state = 3; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); REG_BG1CNT = 0x9C00; REG_BG2CNT = 0x5E00; } break; case 4: - sub_80E443C(taskId); + EndBattleIntroTask(taskId); break; } } -static void task00_battle_intro_80BC6C8(u8 taskId) +static void BattleIntroTask_FadeScenery(u8 taskId) { s32 i; @@ -190,45 +199,47 @@ static void task00_battle_intro_80BC6C8(u8 taskId) gTasks[taskId].data[6] = 0; } - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: gTasks[taskId].data[4] = 16; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - gTasks[taskId].data[2] = 16; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; } else { - gTasks[taskId].data[2] = 1; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; } break; case 1: - gTasks[taskId].data[2]--; - if (gTasks[taskId].data[2] == 0) + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) { - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; REG_WININ = 0x3F; } break; case 2: - gBattle_WIN0V -= 255; + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y if ((gBattle_WIN0V & 0xFF00) == 0x3000) { - gTasks[taskId].data[0]++; - gTasks[taskId].data[2] = 240; - gTasks[taskId].data[3] = 32; + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; gTasks[taskId].data[5] = 1; gUnknown_02024DE8 &= ~1; } break; case 3: - if (gTasks[taskId].data[3] != 0) + if (gTasks[taskId].tFramesUntilBg1Slide != 0) { - gTasks[taskId].data[3]--; - if (gTasks[taskId].data[3] == 0) + gTasks[taskId].tFramesUntilBg1Slide--; + if (gTasks[taskId].tFramesUntilBg1Slide == 0) { REG_BLDCNT = 0x1842; REG_BLDALPHA = 0xF; @@ -247,41 +258,41 @@ static void task00_battle_intro_80BC6C8(u8 taskId) if ((gBattle_WIN0V & 0xFF00) != 0) gBattle_WIN0V -= 1020; - if (gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; - // Set the x offset for the the top half of the screen. + // Slide in the top half of the BG from the left for (i = 0; i < DISPLAY_HEIGHT / 2; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; - // Set the x offset for the bottom half of the screen. + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right for (; i < DISPLAY_HEIGHT; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; - if (gTasks[taskId].data[2] == 0) + if (gTasks[taskId].tBgXOffset == 0) { gScanlineEffect.state = 3; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); REG_BG1CNT = 0x9C00; REG_BG2CNT = 0x5E00; } break; case 4: - sub_80E443C(taskId); + EndBattleIntroTask(taskId); break; } - if (gTasks[taskId].data[0] != 4) + if (gTasks[taskId].tState != 4) REG_BLDALPHA = gTasks[taskId].data[4]; } -static void task_battle_intro_anim(u8 taskId) +static void BattleIntroTask_ScrollAndFadeScenery(u8 taskId) { s32 i; gBattle_BG1_X += 8; - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: REG_BLDCNT = 0x1842; @@ -290,81 +301,87 @@ static void task_battle_intro_anim(u8 taskId) gTasks[taskId].data[4] = 0x0808; if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - gTasks[taskId].data[2] = 16; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; } else { - gTasks[taskId].data[2] = 1; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 1; + gTasks[taskId].tState++; } break; case 1: - gTasks[taskId].data[2]--; - if (gTasks[taskId].data[2] == 0) + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) { - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; REG_WININ = 0x3F; } break; case 2: - gBattle_WIN0V -= 255; + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y if ((gBattle_WIN0V & 0xFF00) == 0x3000) { - gTasks[taskId].data[0]++; - gTasks[taskId].data[2] = 240; - gTasks[taskId].data[3] = 32; + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; gTasks[taskId].data[5] = 1; gUnknown_02024DE8 &= ~1; } break; case 3: - if (gTasks[taskId].data[3] != 0) + if (gTasks[taskId].tFramesUntilBg1Slide != 0) { - gTasks[taskId].data[3]--; + gTasks[taskId].tFramesUntilBg1Slide--; } - else if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + else { - gTasks[taskId].data[4] += 255; - gTasks[taskId].data[5] = 6; + if ((gTasks[taskId].data[4] & 0xF) && --gTasks[taskId].data[5] == 0) + { + gTasks[taskId].data[4] += 255; + gTasks[taskId].data[5] = 6; + } } if ((gBattle_WIN0V & 0xFF00) != 0) gBattle_WIN0V -= 1020; - if (gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; - // Set the x offset for the the top half of the screen. + // Slide in the top half of the BG from the left for (i = 0; i < DISPLAY_HEIGHT / 2; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; - // Set the x offset for the bottom half of the screen. + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right for (; i < DISPLAY_HEIGHT; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; - if (gTasks[taskId].data[2] == 0) + if (gTasks[taskId].tBgXOffset == 0) { gScanlineEffect.state = 3; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; CpuFill32(0, (void *)(VRAM + 0xE000), 0x800); REG_BG1CNT = 0x9C00; REG_BG2CNT = 0x5E00; } break; case 4: - sub_80E443C(taskId); + EndBattleIntroTask(taskId); break; } - if (gTasks[taskId].data[0] != 4) + if (gTasks[taskId].tState != 4) REG_BLDALPHA = gTasks[taskId].data[4]; } -static void sub_80E4C34(u8 taskId) +// Seems to only be used for link battles. +static void BattleIntroTask_80E4C34(u8 taskId) { s32 i; - if (gTasks[taskId].data[0] > 1 && gTasks[taskId].data[4] == 0) + if (gTasks[taskId].tState > 1 && gTasks[taskId].data[4] == 0) { if ((gBattle_BG1_X & 0x8000) || gBattle_BG1_X < 80) // hmm... { @@ -379,17 +396,17 @@ static void sub_80E4C34(u8 taskId) } } - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { case 0: - gTasks[taskId].data[2] = 16; - gTasks[taskId].data[0]++; + gTasks[taskId].tBgXOffset = 16; + gTasks[taskId].tState++; break; case 1: - gTasks[taskId].data[2]--; - if (gTasks[taskId].data[2] == 0) + gTasks[taskId].tBgXOffset--; + if (gTasks[taskId].tBgXOffset == 0) { - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; gSprites[ewram1608A].oam.objMode = 2; gSprites[ewram1608A].callback = sub_800FE20; gSprites[ewram1608B].oam.objMode = 2; @@ -399,12 +416,14 @@ static void sub_80E4C34(u8 taskId) } break; case 2: - gBattle_WIN0V -= 255; + // Open up window + gBattle_WIN0V -= WIN_RANGE(1, 0); // decrement min Y + gBattle_WIN0V += WIN_RANGE(0, 1); // increment max Y if ((gBattle_WIN0V & 0xFF00) == 0x3000) { - gTasks[taskId].data[0]++; - gTasks[taskId].data[2] = 240; - gTasks[taskId].data[3] = 32; + gTasks[taskId].tState++; + gTasks[taskId].tBgXOffset = DISPLAY_WIDTH; + gTasks[taskId].tFramesUntilBg1Slide = 32; gUnknown_02024DE8 &= ~1; } break; @@ -412,26 +431,26 @@ static void sub_80E4C34(u8 taskId) if ((gBattle_WIN0V & 0xFF00) != 0) gBattle_WIN0V -= 1020; - if (gTasks[taskId].data[2] != 0) - gTasks[taskId].data[2] -= 2; + if (gTasks[taskId].tBgXOffset != 0) + gTasks[taskId].tBgXOffset -= 2; - // Set the x offset for the the top half of the screen. + // Slide in the top half of the BG from the left for (i = 0; i < DISPLAY_HEIGHT / 2; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; - // Set the x offset for the bottom half of the screen. + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].tBgXOffset; + // Slide in the bottom half of the BG from the right for (; i < DISPLAY_HEIGHT; i++) - gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].data[2]; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = -gTasks[taskId].tBgXOffset; - if (gTasks[taskId].data[2] == 0) + if (gTasks[taskId].tBgXOffset == 0) { gScanlineEffect.state = 3; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; REG_BG1CNT = 0x9C00; REG_BG2CNT = 0x5E00; } break; case 4: - sub_80E443C(taskId); + EndBattleIntroTask(taskId); break; } } diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 69306b725..40f50d7ff 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -93,7 +93,7 @@ extern void move_anim_start_t2_for_situation(); extern void dp01t_0F_4_move_anim(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_803A3A8(struct Sprite *); extern void sub_8044CA0(u8); extern void nullsub_47(void); @@ -1620,7 +1620,7 @@ void LinkOpponentHandleFaintingCry(void) void LinkOpponentHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkOpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index c86c337d9..e39d98997 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -62,7 +62,7 @@ extern u8 move_anim_start_t3(); extern u8 IsBankSpritePresent(); extern void sub_8044CA0(u8); extern void sub_8030E38(struct Sprite *); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_8047858(); extern void move_anim_start_t2_for_situation(); extern void load_gfxc_health_bar(); @@ -1565,7 +1565,7 @@ void LinkPartnerHandleFaintingCry(void) void LinkPartnerHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; LinkPartnerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 622e3e9f9..5947053b6 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -108,7 +108,7 @@ extern void move_anim_start_t2_for_situation(); extern void bx_blink_t7(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_8044CA0(u8); extern void nullsub_45(void); extern void sub_8031B74(); @@ -1892,7 +1892,7 @@ void OpponentHandleFaintingCry(void) void OpponentHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; OpponentBufferExecCompleted(); } diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index a5f833b6c..2bdf448db 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -98,7 +98,7 @@ extern void move_anim_start_t2_for_situation(); extern void bx_blink_t1(void); extern void sub_8047858(); extern u8 GetBankSide(u8); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void StoreSpriteCallbackInData(); @@ -2875,7 +2875,7 @@ void PlayerHandleFaintingCry(void) void PlayerHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; PlayerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index a4b610752..0d193d68f 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -47,7 +47,7 @@ extern u8 sub_8079E90(); extern void sub_80313A0(struct Sprite *); extern void sub_810BADC(void); extern void sub_8045A5C(); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void sub_804777C(); extern void sub_8043DFC(); extern bool8 move_anim_start_t3(); @@ -641,7 +641,7 @@ void SafariHandleFaintingCry(void) void SafariHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; SafariBufferExecCompleted(); } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 6266d955c..4c0adab5e 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -85,7 +85,7 @@ extern void BufferStringBattle(); extern u8 GetBankSide(u8); extern void sub_80304A8(void); extern void sub_8047858(); -extern void sub_80E43C0(); +extern void StartBattleIntroAnim(); extern void oamt_add_pos2_onto_pos1(); extern void sub_8078B34(struct Sprite *); extern void sub_8030E38(struct Sprite *); @@ -1470,7 +1470,7 @@ void WallyHandleFaintingCry(void) void WallyHandleIntroSlide(void) { - sub_80E43C0(gBattleBufferA[gActiveBank][1]); + StartBattleIntroAnim(gBattleBufferA[gActiveBank][1]); gUnknown_02024DE8 |= 1; WallyBufferExecCompleted(); } -- cgit v1.2.3 From 71848fc5fe7185dfcd3e048dee34d9a682b9ead5 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 13 Jan 2018 18:13:53 -0600 Subject: clean up save.c --- src/engine/clear_save_data_menu.c | 2 +- src/engine/link.c | 2 +- src/engine/main_menu.c | 16 +- src/engine/mystery_event_menu.c | 2 +- src/engine/reset_rtc_screen.c | 2 +- src/engine/save.c | 462 ++++++++++++++++++++++---------------- src/engine/save_failed_screen.c | 2 +- src/field/battle_tower.c | 2 +- src/field/start_menu.c | 8 +- src/scene/hall_of_fame.c | 2 +- src/scene/intro.c | 2 +- 11 files changed, 282 insertions(+), 220 deletions(-) (limited to 'src') diff --git a/src/engine/clear_save_data_menu.c b/src/engine/clear_save_data_menu.c index 08fd5cd18..b6053715a 100644 --- a/src/engine/clear_save_data_menu.c +++ b/src/engine/clear_save_data_menu.c @@ -73,7 +73,7 @@ static void Task_ProcessMenuInput(u8 taskId) static void Task_ClearSaveData(u8 taskId) { - ClearSaveData(); + Save_EraseAllData(); DestroyTask(taskId); SetMainCallback2(CB2_SoftReset); } diff --git a/src/engine/link.c b/src/engine/link.c index 34016d607..ec94295d7 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -409,7 +409,7 @@ static void LinkTestProcessKeyInput(void) if (gMain.newKeys & START_BUTTON) SetSuppressLinkErrorMessage(TRUE); if (gMain.newKeys & R_BUTTON) - TrySavingData(LINK_SAVE); + Save_WriteData(SAVE_LINK); if (gMain.newKeys & SELECT_BUTTON) sub_800832C(); if (gLinkTestDebugValuesEnabled) diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c index a0b8b7020..5a3f55b29 100644 --- a/src/engine/main_menu.c +++ b/src/engine/main_menu.c @@ -1,4 +1,6 @@ #include "global.h" +#include "constants/songs.h" +#include "constants/species.h" #include "main_menu.h" #include "data2.h" #include "decompress.h" @@ -13,9 +15,8 @@ #include "overworld.h" #include "rtc.h" #include "save_menu_util.h" -#include "constants/songs.h" +#include "save.h" #include "sound.h" -#include "constants/species.h" #include "string_util.h" #include "strings.h" #include "task.h" @@ -28,8 +29,6 @@ extern struct PaletteFadeControl gPaletteFade; -extern u16 gSaveFileStatus; - extern const u8 gBirchSpeech_Welcome[]; extern const u8 gBirchSpeech_ThisIsPokemon[]; extern const u8 gBirchSpeech_WorldInhabitedByPokemon[]; @@ -284,12 +283,11 @@ void Task_MainMenuCheckSave(u8 taskId) switch (gSaveFileStatus) { - case 1: + case SAVE_STATUS_OK: if (IsMysteryGiftEnabled() == TRUE) gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT; else gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; - gTasks[taskId].func = Task_MainMenuCheckRtc; break; case 2: @@ -300,7 +298,7 @@ void Task_MainMenuCheckSave(u8 taskId) gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck; break; - case 255: + case SAVE_STATUS_ERROR: Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gSaveFileCorruptMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); @@ -313,12 +311,12 @@ void Task_MainMenuCheckSave(u8 taskId) else gTasks[taskId].tMenuLayout = HAS_SAVED_GAME; break; - case 0: + case SAVE_STATUS_EMPTY: default: gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME; gTasks[taskId].func = Task_MainMenuCheckRtc; break; - case 4: + case SAVE_STATUS_NO_FLASH: Menu_DrawStdWindowFrame(2, 14, 27, 19); MenuPrintMessage(gBoardNotInstalledMessage, 3, 15); REG_WIN0H = WIN_RANGE(17, 223); diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index b7b7c047e..8fad563e6 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -289,7 +289,7 @@ static void CB2_MysteryEventMenu(void) unkVal = RunMysteryEventScript(gSharedMem); CpuFill32(0, gSharedMem, 0x7D4); if (!GetEventLoadMessage(gStringVar4, unkVal)) - TrySavingData(NORMAL_SAVE); + Save_WriteData(SAVE_NORMAL); gMain.state++; break; case 12: diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index a8b49a8eb..c7d45e929 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -576,7 +576,7 @@ void Task_ResetRtcScreen(u8 taskId) } break; case 4: - if (TrySavingData(0) == TRUE) + if (Save_WriteData(0) == SAVE_STATUS_OK) { ResetRtcScreen_ShowMessage(gSystemText_SaveCompleted); PlaySE(SE_PINPON); diff --git a/src/engine/save.c b/src/engine/save.c index d5de2e408..f1010c69e 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -7,10 +7,53 @@ #include "save_failed_screen.h" #include "ewram.h" -#define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1) -#define GETCHUNKSIZE(chunk, n) ((sizeof(chunk) - (0xF80 * (n - 1))) >= 0xF80 ? 0xF80 : (sizeof(chunk) - (0xF80 * (n - 1)))) -#define GETBLOCKOFFSET(n) (0xF80 * (n - 1)) -#define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum. +#define FILE_SIGNATURE 0x08012025 // signature value to determine if a sector is in use + +#define TOTALNUMSECTORS ((ARRAY_COUNT(sSaveBlockChunks) * 2) + (ARRAY_COUNT(sHallOfFameChunks) * 2)) // there are 2 slots, so double each array count and get the sum. + +struct SaveBlockChunk +{ + u8 *data; + u16 size; +}; + +struct SaveSection +{ + u8 data[0xFF4]; + u16 id; + u16 checksum; + u32 signature; + u32 counter; +}; // size is 0x1000 + +// headless save section? +struct UnkSaveSection +{ + u8 data[0xFF4]; + u32 signature; +}; // size is 0xFF8 + +static u8 WriteChunk(u16, const struct SaveBlockChunk *); +static u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size); +static u8 TryWriteSector(u8, u8 *); +static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *location); +static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *location); +static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *location); +static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *location); +static u8 sub_81255B8(u16, const struct SaveBlockChunk *location); +static u8 sub_8125758(u16 a1, const struct SaveBlockChunk *location); +static u8 sub_81257F0(u16 a1, const struct SaveBlockChunk *location); +static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *location); +static u8 sub_81258BC(u16, const struct SaveBlockChunk *location); +static u8 GetSaveValidStatus(const struct SaveBlockChunk *location); +static u8 sub_8125B88(u8 a1, u8 *data, u16 size); +static u8 DoReadFlashWholeSection(u8, struct SaveSection *); +static u16 CalculateChecksum(void *, u16); +bool8 unref_sub_8125F4C(struct UnkSaveSection *a1); +u8 unref_sub_8125FA0(void); +u8 unref_sub_8125FF0(u8 *data, u16 size); +u8 unref_sub_8126068(u8 sector, u8 *data, u32 size); +u8 unref_sub_8126080(u8 sector, u8 *data); u16 gLastWrittenSector; u32 gLastSaveCounter; @@ -26,33 +69,47 @@ extern struct PokemonStorage gPokemonStorage; static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused -const struct SaveSectionLocation gSaveSectionLocations[] = -{ - {((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)}, - {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock1, 1)}, - {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gSaveBlock1, 2)}, - {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gSaveBlock1, 3)}, - {((u8 *) &gSaveBlock1) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gSaveBlock1, 4)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gPokemonStorage, 1)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(2), GETCHUNKSIZE(gPokemonStorage, 2)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(3), GETCHUNKSIZE(gPokemonStorage, 3)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(4), GETCHUNKSIZE(gPokemonStorage, 4)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(5), GETCHUNKSIZE(gPokemonStorage, 5)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(6), GETCHUNKSIZE(gPokemonStorage, 6)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(7), GETCHUNKSIZE(gPokemonStorage, 7)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(8), GETCHUNKSIZE(gPokemonStorage, 8)}, - {((u8 *) &gPokemonStorage) + GETBLOCKOFFSET(9), GETCHUNKSIZE(gPokemonStorage, 9)} +// Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer +#define SECTOR_DATA_SIZE 3968 +#define SECTOR_FOOTER_SIZE 128 + +// Divide save blocks into individual chunks to be written to flash sectors + +#define SAVEBLOCK_CHUNK(structure, chunkNum) \ +{ \ + (u8 *)&structure + chunkNum * SECTOR_DATA_SIZE, \ + min(sizeof(structure) - chunkNum * SECTOR_DATA_SIZE, SECTOR_DATA_SIZE) \ +} \ + +static const struct SaveBlockChunk sSaveBlockChunks[] = +{ + SAVEBLOCK_CHUNK(gSaveBlock2, 0), + + SAVEBLOCK_CHUNK(gSaveBlock1, 0), + SAVEBLOCK_CHUNK(gSaveBlock1, 1), + SAVEBLOCK_CHUNK(gSaveBlock1, 2), + SAVEBLOCK_CHUNK(gSaveBlock1, 3), + + SAVEBLOCK_CHUNK(gPokemonStorage, 0), + SAVEBLOCK_CHUNK(gPokemonStorage, 1), + SAVEBLOCK_CHUNK(gPokemonStorage, 2), + SAVEBLOCK_CHUNK(gPokemonStorage, 3), + SAVEBLOCK_CHUNK(gPokemonStorage, 4), + SAVEBLOCK_CHUNK(gPokemonStorage, 5), + SAVEBLOCK_CHUNK(gPokemonStorage, 6), + SAVEBLOCK_CHUNK(gPokemonStorage, 7), + SAVEBLOCK_CHUNK(gPokemonStorage, 8), }; -const struct SaveSectionLocation gHallOfFameSaveSectionLocations[] = +static const struct SaveBlockChunk sHallOfFameChunks[] = { - {((u8 *) eHallOfFame) + GETBLOCKOFFSET(1), GETCHUNKSIZE(struct HallOfFame, 1)}, // eHallOfFame is not a proper sym, so the struct must be used. - {((u8 *) eHallOfFame) + GETBLOCKOFFSET(2), GETCHUNKSIZE(struct HallOfFame, 2)} + SAVEBLOCK_CHUNK(*eHallOfFame, 0), + SAVEBLOCK_CHUNK(*eHallOfFame, 1), }; const u8 gFlashSectors[] = { 0x1E, 0x1F }; -void ClearSaveData(void) +void Save_EraseAllData(void) { u16 i; @@ -60,27 +117,34 @@ void ClearSaveData(void) EraseFlashSector(i); } -void ResetSaveCounters(void) +void Save_ResetSaveCounters(void) { gSaveCounter = 0; gLastWrittenSector = 0; gDamagedSaveSectors = 0; } -bool32 SetDamagedSectorBits(u8 op, u8 bit) +enum +{ + ENABLE, + DISABLE, + CHECK // unused +}; + +static bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum) { bool32 retVal = FALSE; switch (op) { case ENABLE: - gDamagedSaveSectors |= (1 << bit); + gDamagedSaveSectors |= (1 << sectorNum); break; case DISABLE: - gDamagedSaveSectors &= ~(1 << bit); + gDamagedSaveSectors &= ~(1 << sectorNum); break; case CHECK: // unused - if (gDamagedSaveSectors & (1 << bit)) + if (gDamagedSaveSectors & (1 << sectorNum)) retVal = TRUE; break; } @@ -88,7 +152,7 @@ bool32 SetDamagedSectorBits(u8 op, u8 bit) return retVal; } -u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location) +static u8 WriteSaveBlockChunks(u16 a1, const struct SaveBlockChunk *chunks) { u32 retVal; u16 i; @@ -97,23 +161,24 @@ u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location) if (a1 != 0xFFFF) // for link { - retVal = HandleWriteSector(a1, location); + retVal = WriteChunk(a1, chunks); } else { gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write. gLastSaveCounter = gSaveCounter; gLastWrittenSector++; - gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations); + gLastWrittenSector %= ARRAY_COUNT(sSaveBlockChunks); gSaveCounter++; - retVal = 1; + retVal = SAVE_STATUS_OK; - for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) - HandleWriteSector(i, location); + for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) + WriteChunk(i, chunks); + // Check for any bad sectors if (gDamagedSaveSectors != 0) // skip the damaged sector. { - retVal = 0xFF; + retVal = SAVE_STATUS_ERROR; gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; } @@ -122,36 +187,35 @@ u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location) return retVal; } -u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location) +static u8 WriteChunk(u16 chunkId, const struct SaveBlockChunk *chunks) { u16 i; - u16 sector; + u16 sectorNum; u8 *data; u16 size; - sector = a1 + gLastWrittenSector; - sector %= ARRAY_COUNT(gSaveSectionLocations); - sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); + sectorNum = chunkId + gLastWrittenSector; + sectorNum %= ARRAY_COUNT(sSaveBlockChunks); + sectorNum += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); - data = location[a1].data; - size = location[a1].size; + data = chunks[chunkId].data; + size = chunks[chunkId].size; // clear save section. for (i = 0; i < sizeof(struct SaveSection); i++) - ((char *)gFastSaveSection)[i] = 0; + ((u8 *)gFastSaveSection)[i] = 0; - gFastSaveSection->id = a1; - gFastSaveSection->security = UNKNOWN_CHECK_VALUE; + gFastSaveSection->id = chunkId; + gFastSaveSection->signature = FILE_SIGNATURE; gFastSaveSection->counter = gSaveCounter; - for (i = 0; i < size; i++) gFastSaveSection->data[i] = data[i]; - gFastSaveSection->checksum = CalculateChecksum(data, size); - return TryWriteSector(sector, gFastSaveSection->data); + + return TryWriteSector(sectorNum, gFastSaveSection->data); } -u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size) +static u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size) { u16 i; struct SaveSection *section = eSaveSection; @@ -159,43 +223,42 @@ u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size) for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)section)[i] = 0; - section->security = UNKNOWN_CHECK_VALUE; - + section->signature = FILE_SIGNATURE; for (i = 0; i < size; i++) section->data[i] = data[i]; - section->id = CalculateChecksum(data, size); // though this appears to be incorrect, it might be some sector checksum instead of a whole save checksum and only appears to be relevent to HOF data, if used. - return TryWriteSector(sector, section->data); + + return TryWriteSector(sectorNum, section->data); } -u8 TryWriteSector(u8 sector, u8 *data) +static u8 TryWriteSector(u8 sectorNum, u8 *data) { - if (ProgramFlashSectorAndVerify(sector, data) != 0) // is damaged? + if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged? { - SetDamagedSectorBits(ENABLE, sector); // set damaged sector bits. - return 0xFF; + SetSectorDamagedStatus(ENABLE, sectorNum); // set damaged sector bits. + return SAVE_STATUS_ERROR; } else { - SetDamagedSectorBits(DISABLE, sector); // unset damaged sector bits. it's safe now. - return 1; + SetSectorDamagedStatus(DISABLE, sectorNum); // unset damaged sector bits. it's safe now. + return SAVE_STATUS_OK; } } -u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location) // location is unused +static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused { gFastSaveSection = eSaveSection; gLastKnownGoodSector = gLastWrittenSector; gLastSaveCounter = gSaveCounter; gLastWrittenSector++; - gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(gSaveSectionLocations); + gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(sSaveBlockChunks); gSaveCounter++; gUnknown_03005EB4 = 0; gDamagedSaveSectors = 0; return 0; } -u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ever called once, and gSaveBlock2 is passed to this function. location is unused +static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) // only ever called once, and gSaveBlock2 is passed to this function. chunk is unused { gFastSaveSection = eSaveSection; gLastKnownGoodSector = gLastWrittenSector; @@ -205,14 +268,14 @@ u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location) // only ev return 0; } -u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *chunk) { u8 retVal; if (gUnknown_03005EB4 < a1 - 1) { retVal = 1; - HandleWriteSector(gUnknown_03005EB4, location); + WriteChunk(gUnknown_03005EB4, chunk); gUnknown_03005EB4++; if (gDamagedSaveSectors) { @@ -229,11 +292,11 @@ u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location) return retVal; } -u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *chunk) { u8 retVal = 1; - sub_81255B8(a1 - 1, location); + sub_81255B8(a1 - 1, chunk); if (gDamagedSaveSectors) { @@ -244,7 +307,7 @@ u8 sub_812556C(u16 a1, const struct SaveSectionLocation *location) return retVal; } -u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_81255B8(u16 chunkId, const struct SaveBlockChunk *chunks) { u16 i; u16 sector; @@ -252,19 +315,19 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location) u16 size; u8 status; - sector = a1 + gLastWrittenSector; - sector %= ARRAY_COUNT(gSaveSectionLocations); - sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); + sector = chunkId + gLastWrittenSector; + sector %= ARRAY_COUNT(sSaveBlockChunks); + sector += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); - data = location[a1].data; - size = location[a1].size; + data = chunks[chunkId].data; + size = chunks[chunkId].size; // clear temp save section. for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)gFastSaveSection)[i] = 0; - gFastSaveSection->id = a1; - gFastSaveSection->security = UNKNOWN_CHECK_VALUE; + gFastSaveSection->id = chunkId; + gFastSaveSection->signature = FILE_SIGNATURE; gFastSaveSection->counter = gSaveCounter; // set temp section's data. @@ -289,7 +352,7 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location) if (status == 0xFF) { - SetDamagedSectorBits(ENABLE, sector); + SetSectorDamagedStatus(ENABLE, sector); return 0xFF; } else @@ -307,224 +370,220 @@ u8 sub_81255B8(u16 a1, const struct SaveSectionLocation *location) if (status == 0xFF) { - SetDamagedSectorBits(ENABLE, sector); + SetSectorDamagedStatus(ENABLE, sector); return 0xFF; } else { - SetDamagedSectorBits(DISABLE, sector); + SetSectorDamagedStatus(DISABLE, sector); return 1; } } } -u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_8125758(u16 a1, const struct SaveBlockChunk *chunk) { u16 sector; sector = a1 + gLastWrittenSector - 1; - sector %= ARRAY_COUNT(gSaveSectionLocations); - sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); + sector %= ARRAY_COUNT(sSaveBlockChunks); + sector += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)])) { // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. - SetDamagedSectorBits(ENABLE, sector); + SetSectorDamagedStatus(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { - SetDamagedSectorBits(DISABLE, sector); - return 1; + SetSectorDamagedStatus(DISABLE, sector); + return SAVE_STATUS_OK; } } -u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_81257F0(u16 a1, const struct SaveBlockChunk *chunk) { u16 sector; sector = a1 + gLastWrittenSector - 1; - sector %= ARRAY_COUNT(gSaveSectionLocations); - sector += ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); + sector %= ARRAY_COUNT(sSaveBlockChunks); + sector += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25)) { // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. - SetDamagedSectorBits(ENABLE, sector); + SetSectorDamagedStatus(ENABLE, sector); gLastWrittenSector = gLastKnownGoodSector; gSaveCounter = gLastSaveCounter; - return 0xFF; + return SAVE_STATUS_ERROR; } else { - SetDamagedSectorBits(DISABLE, sector); - return 1; + SetSectorDamagedStatus(DISABLE, sector); + return SAVE_STATUS_OK; } } -u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *chunk) { u8 retVal; gFastSaveSection = eSaveSection; if (a1 != 0xFFFF) { - retVal = 0xFF; + retVal = SAVE_STATUS_ERROR; } else { - retVal = GetSaveValidStatus(location); - sub_81258BC(0xFFFF, location); + retVal = GetSaveValidStatus(chunk); + sub_81258BC(0xFFFF, chunk); } return retVal; } -u8 sub_81258BC(u16 a1, const struct SaveSectionLocation *location) +static u8 sub_81258BC(u16 a1, const struct SaveBlockChunk *chunks) { u16 i; u16 checksum; - u16 v3 = ARRAY_COUNT(gSaveSectionLocations) * (gSaveCounter % 2); + u16 v3 = ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); u16 id; - for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) + for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) { DoReadFlashWholeSection(i + v3, gFastSaveSection); id = gFastSaveSection->id; if (id == 0) gLastWrittenSector = i; - checksum = CalculateChecksum(gFastSaveSection->data, location[id].size); - if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE + checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size); + if (gFastSaveSection->signature == FILE_SIGNATURE && gFastSaveSection->checksum == checksum) { u16 j; - for (j = 0; j < location[id].size; j++) - location[id].data[j] = gFastSaveSection->data[j]; + for (j = 0; j < chunks[id].size; j++) + chunks[id].data[j] = gFastSaveSection->data[j]; } } return 1; } -u8 GetSaveValidStatus(const struct SaveSectionLocation *location) +static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) { u16 i; + bool8 signatureValid; u16 checksum; u32 saveSlot1Counter = 0; u32 saveSlot2Counter = 0; - u32 slotCheckField = 0; - bool8 securityPassed = FALSE; - u8 saveSlot1Status; - u8 saveSlot2Status; + u8 slot1Status; + u8 slot2Status; + u32 validChunks; + const u32 ALL_CHUNKS = (1 << ARRAY_COUNT(sSaveBlockChunks)) - 1; // bitmask of all saveblock chunks // check save slot 1. - for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) + validChunks = 0; + signatureValid = FALSE; + for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) { DoReadFlashWholeSection(i, gFastSaveSection); - if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE) + if (gFastSaveSection->signature == FILE_SIGNATURE) { - securityPassed = TRUE; - checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size); + signatureValid = TRUE; + checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); if (gFastSaveSection->checksum == checksum) { saveSlot1Counter = gFastSaveSection->counter; - slotCheckField |= 1 << gFastSaveSection->id; + validChunks |= 1 << gFastSaveSection->id; } } } - if (securityPassed) + if (signatureValid) { - if (slotCheckField == GETVALIDSTATUSBITFIELD) - saveSlot1Status = 1; + if (validChunks == ALL_CHUNKS) + slot1Status = SAVE_STATUS_OK; else - saveSlot1Status = 255; + slot1Status = SAVE_STATUS_ERROR; } else { - saveSlot1Status = 0; + slot1Status = SAVE_STATUS_EMPTY; } - slotCheckField = 0; - securityPassed = FALSE; - // check save slot 2. - for (i = 0; i < ARRAY_COUNT(gSaveSectionLocations); i++) + validChunks = 0; + signatureValid = FALSE; + for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) { - DoReadFlashWholeSection(i + ARRAY_COUNT(gSaveSectionLocations), gFastSaveSection); - if (gFastSaveSection->security == UNKNOWN_CHECK_VALUE) + DoReadFlashWholeSection(i + ARRAY_COUNT(sSaveBlockChunks), gFastSaveSection); + if (gFastSaveSection->signature == FILE_SIGNATURE) { - securityPassed = TRUE; - checksum = CalculateChecksum(gFastSaveSection->data, location[gFastSaveSection->id].size); + signatureValid = TRUE; + checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); if (gFastSaveSection->checksum == checksum) { saveSlot2Counter = gFastSaveSection->counter; - slotCheckField |= 1 << gFastSaveSection->id; + validChunks |= 1 << gFastSaveSection->id; } } } - if (securityPassed) + if (signatureValid) { - if (slotCheckField == GETVALIDSTATUSBITFIELD) - saveSlot2Status = 1; + if (validChunks == ALL_CHUNKS) + slot2Status = SAVE_STATUS_OK; else - saveSlot2Status = 255; + slot2Status = SAVE_STATUS_ERROR; } else { - saveSlot2Status = 0; + slot2Status = SAVE_STATUS_EMPTY; } - if (saveSlot1Status == 1 && saveSlot2Status == 1) + if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK) { if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1)) { if ((unsigned)(saveSlot1Counter + 1) < (unsigned)(saveSlot2Counter + 1)) - { gSaveCounter = saveSlot2Counter; - } else - { gSaveCounter = saveSlot1Counter; - } } else { if (saveSlot1Counter < saveSlot2Counter) - { gSaveCounter = saveSlot2Counter; - } else - { gSaveCounter = saveSlot1Counter; - } } - return 1; + return SAVE_STATUS_OK; } - if (saveSlot1Status == 1) + if (slot1Status == SAVE_STATUS_OK) { gSaveCounter = saveSlot1Counter; - if (saveSlot2Status == 255) - return 255; - return 1; + if (slot2Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + else + return SAVE_STATUS_OK; } - if (saveSlot2Status == 1) + if (slot2Status == SAVE_STATUS_OK) { gSaveCounter = saveSlot2Counter; - if (saveSlot1Status == 255) - return 255; - return 1; + if (slot1Status == SAVE_STATUS_ERROR) + return SAVE_STATUS_ERROR; + else + return SAVE_STATUS_OK; } - if (saveSlot1Status == 0 && saveSlot2Status == 0) + if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY) { gSaveCounter = 0; gLastWrittenSector = 0; - return 0; + return SAVE_STATUS_EMPTY; } gSaveCounter = 0; @@ -532,12 +591,13 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location) return 2; } -u8 sub_8125B88(u8 a1, u8 *data, u16 size) +static u8 sub_8125B88(u8 a1, u8 *data, u16 size) { u16 i; struct SaveSection *section = eSaveSection; + DoReadFlashWholeSection(a1, section); - if (section->security == UNKNOWN_CHECK_VALUE) + if (section->signature == FILE_SIGNATURE) { u16 checksum = CalculateChecksum(section->data, size); if (section->id == checksum) @@ -557,13 +617,13 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size) } } -u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) +static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) { ReadFlash(sector, 0, section->data, sizeof(struct SaveSection)); return 1; } -u16 CalculateChecksum(void *data, u16 size) +static u16 CalculateChecksum(void *data, u16 size) { u16 i; u32 checksum = 0; @@ -574,55 +634,59 @@ u16 CalculateChecksum(void *data, u16 size) return ((checksum >> 16) + checksum); } -u8 HandleSavingData(u8 saveType) +u8 Save_WriteDataInternal(u8 saveType) { u8 i; + switch (saveType) { - case HOF_DELETE_SAVE: // deletes HOF before overwriting HOF completely. unused - for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++) + case SAVE_HALL_OF_FAME_ERASE_BEFORE: // wipes all normal save data, then saves hall of fame, unused + for (i = (ARRAY_COUNT(sSaveBlockChunks) * 2 + 0); i < TOTALNUMSECTORS; i++) EraseFlashSector(i); - case HOF_SAVE: // hall of fame. + // fall through + case SAVE_HALL_OF_FAME: // hall of fame. if (GetGameStat(10) < 999) IncrementGameStat(10); - for (i = 0; i < ARRAY_COUNT(gHallOfFameSaveSectionLocations); i++) - HandleWriteSectorNBytes((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0) + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size); + for (i = 0; i < ARRAY_COUNT(sHallOfFameChunks); i++) + HandleWriteSectorNBytes((ARRAY_COUNT(sSaveBlockChunks) * 2 + 0) + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size); SaveSerializedGame(); - save_write_to_flash(0xFFFF, gSaveSectionLocations); + WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); break; - case NORMAL_SAVE: // normal save. also called by overwriting your own save. + case SAVE_NORMAL: // normal save. also called by overwriting your own save. default: SaveSerializedGame(); - save_write_to_flash(0xFFFF, gSaveSectionLocations); + WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); break; - case LINK_SAVE: // link save. updates only gSaveBlock1 and gSaveBlock2. + case SAVE_LINK: // link save. updates only gSaveBlock1 and gSaveBlock2. SaveSerializedGame(); for (i = 0; i < 5; i++) - save_write_to_flash(i, gSaveSectionLocations); + WriteSaveBlockChunks(i, sSaveBlockChunks); break; - case EREADER_SAVE: // used in mossdeep "game corner" before/after battling old man e-reader trainer + case SAVE_EREADER: // used in mossdeep "game corner" before/after battling old man e-reader trainer SaveSerializedGame(); - save_write_to_flash(0, gSaveSectionLocations); + WriteSaveBlockChunks(0, sSaveBlockChunks); break; - case DIFFERENT_FILE_SAVE: // there is a different file, so erase the file and overwrite it completely. - for (i = (ARRAY_COUNT(gSaveSectionLocations) * 2 + 0); i < TOTALNUMSECTORS; i++) + case SAVE_OVERWRITE_DIFFERENT_FILE: // there is a different file, so erase the file and overwrite it completely. + for (i = (ARRAY_COUNT(sSaveBlockChunks) * 2 + 0); i < TOTALNUMSECTORS; i++) EraseFlashSector(i); // erase HOF. SaveSerializedGame(); - save_write_to_flash(0xFFFF, gSaveSectionLocations); + WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); break; } return 0; } -u8 TrySavingData(u8 saveType) // TrySave +u8 Save_WriteData(u8 saveType) // TrySave { if (gFlashMemoryPresent != TRUE) - return 0xFF; - HandleSavingData(saveType); + return SAVE_STATUS_ERROR; + + Save_WriteDataInternal(saveType); if (!gDamagedSaveSectors) - return 1; + return SAVE_STATUS_OK; + DoSaveFailedScreen(saveType); - return 0xFF; + return SAVE_STATUS_ERROR; } u8 sub_8125D80(void) // trade.s save @@ -630,16 +694,16 @@ u8 sub_8125D80(void) // trade.s save if (gFlashMemoryPresent != TRUE) return 1; SaveSerializedGame(); - RestoreSaveBackupVarsAndIncrement(gSaveSectionLocations); + RestoreSaveBackupVarsAndIncrement(sSaveBlockChunks); return 0; } bool8 sub_8125DA8(void) // trade.s save { - u8 retVal = sub_812550C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations); + u8 retVal = sub_812550C(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks); if (gDamagedSaveSectors) DoSaveFailedScreen(0); - if (retVal == 0xFF) + if (retVal == SAVE_STATUS_ERROR) return 1; else return 0; @@ -647,7 +711,7 @@ bool8 sub_8125DA8(void) // trade.s save u8 sub_8125DDC(void) // trade.s save { - sub_812556C(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations); + sub_812556C(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks); if (gDamagedSaveSectors) DoSaveFailedScreen(0); return 0; @@ -655,7 +719,7 @@ u8 sub_8125DDC(void) // trade.s save u8 sub_8125E04(void) // trade.s save { - sub_8125758(ARRAY_COUNT(gSaveSectionLocations), gSaveSectionLocations); + sub_8125758(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks); if (gDamagedSaveSectors) DoSaveFailedScreen(0); return 0; @@ -667,8 +731,8 @@ u8 sub_8125E2C(void) return 1; SaveSerializedGame(); - RestoreSaveBackupVars(gSaveSectionLocations); - sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations); + RestoreSaveBackupVars(sSaveBlockChunks); + sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks); return 0; } @@ -678,12 +742,12 @@ bool8 sub_8125E6C(void) u16 val = ++gUnknown_03005EB4; if (val <= 4) { - sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations); - sub_81257F0(val, gSaveSectionLocations); + sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks); + sub_81257F0(val, sSaveBlockChunks); } else { - sub_81257F0(val, gSaveSectionLocations); + sub_81257F0(val, sSaveBlockChunks); retVal = TRUE; } if (gDamagedSaveSectors) @@ -697,23 +761,23 @@ u8 sub_8125EC8(u8 a1) if (gFlashMemoryPresent != TRUE) { - gSaveFileStatus = 4; - return 0xFF; + gSaveFileStatus = SAVE_STATUS_NO_FLASH; + return SAVE_STATUS_ERROR; } switch (a1) { case 0: default: - result = sub_812587C(0xFFFF, gSaveSectionLocations); + result = sub_812587C(0xFFFF, sSaveBlockChunks); LoadSerializedGame(); gSaveFileStatus = result; gGameContinueCallback = 0; break; case 3: - result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 0), gHallOfFameSaveSectionLocations[0].data, gHallOfFameSaveSectionLocations[0].size); + result = sub_8125B88((ARRAY_COUNT(sSaveBlockChunks) * 2 + 0), sHallOfFameChunks[0].data, sHallOfFameChunks[0].size); if (result == 1) - result = sub_8125B88((ARRAY_COUNT(gSaveSectionLocations) * 2 + 1), gHallOfFameSaveSectionLocations[1].data, gHallOfFameSaveSectionLocations[1].size); + result = sub_8125B88((ARRAY_COUNT(sSaveBlockChunks) * 2 + 1), sHallOfFameChunks[1].data, sHallOfFameChunks[1].size); break; } @@ -730,7 +794,7 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) ReadFlash(gFlashSectors[0], 0, a1->data, 4096); - if (a1->security != UNKNOWN_CHECK_VALUE) + if (a1->signature != FILE_SIGNATURE) return FALSE; return TRUE; @@ -739,7 +803,7 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) u8 unref_sub_8125FA0(void) { u16 i; - u8 v0 = TrySavingData(0); + u8 v0 = Save_WriteData(0); for (i = 0; i < 2; i++) EraseFlashSector(gFlashSectors[i]); @@ -767,7 +831,7 @@ u8 unref_sub_8125FF0(u8 *data, u16 size) for (i = 0; i < sizeof(struct SaveSection); i++) ((char *)section)[i] = 0; - section->security = UNKNOWN_CHECK_VALUE; + section->signature = FILE_SIGNATURE; for (i = 0; i < size; i++) section->data[i] = data[i]; @@ -775,17 +839,17 @@ u8 unref_sub_8125FF0(u8 *data, u16 size) gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(gFlashSectors[0], section, sizeof(struct SaveSection)); if (gLastSaveSectorStatus) - return 0xFF; + return SAVE_STATUS_ERROR; else - return 1; + return SAVE_STATUS_OK; } u8 unref_sub_8126068(u8 sector, u8 *data, u32 size) { if (ProgramFlashSectorAndVerify(sector, data)) - return 255; + return SAVE_STATUS_ERROR; else - return 1; + return SAVE_STATUS_OK; } u8 unref_sub_8126080(u8 sector, u8 *data) diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 64b84a2f7..74a1e9612 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -166,7 +166,7 @@ static void CB2_WipeSave(void) Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); Menu_PrintText(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1); - HandleSavingData(gSaveFailedType); + Save_WriteDataInternal(gSaveFailedType); if (gDamagedSaveSectors != 0) { diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 11c05e478..ab2a818a7 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -1895,7 +1895,7 @@ void SaveBattleTowerProgress(void) VarSet(VAR_TEMP_0, 0); gSaveBlock2.battleTower.unk_554 = 1; - TrySavingData(EREADER_SAVE); + Save_WriteData(SAVE_EREADER); } void BattleTower_SoftReset(void) diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 2f6f1e7dd..87597eb6a 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -664,20 +664,20 @@ static u8 SaveDialogCB_DisplaySavingMessage(void) static u8 SaveDialogCB_DoSave(void) { - bool8 saveSucceeded; + u8 saveStatus; IncrementGameStat(0); if (gDifferentSaveFile == TRUE) { - saveSucceeded = TrySavingData(DIFFERENT_FILE_SAVE); + saveStatus = Save_WriteData(SAVE_OVERWRITE_DIFFERENT_FILE); gDifferentSaveFile = FALSE; } else { - saveSucceeded = TrySavingData(NORMAL_SAVE); + saveStatus = Save_WriteData(SAVE_NORMAL); } - if (saveSucceeded == TRUE) + if (saveStatus == SAVE_STATUS_OK) { //"(Player) saved the game." DisplaySaveMessageWithCallback(gSaveText_PlayerSavedTheGame, SaveDialogCB_SaveSuccess); diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 303dcf3e0..9e7e50d43 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -566,7 +566,7 @@ static void sub_814217C(u8 taskID) static void sub_8142274(u8 taskID) { gGameContinueCallback = sub_8141FC4; - TrySavingData(3); + Save_WriteData(3); PlaySE(SE_SAVE); gTasks[taskID].func = sub_81422B8; gTasks[taskID].tFrameCount = 32; diff --git a/src/scene/intro.c b/src/scene/intro.c index d7d772a40..d680e4a98 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -930,7 +930,7 @@ void CB2_InitCopyrightScreenAfterBootup(void) if (!SetUpCopyrightScreen()) { sub_8052E4C(); - ResetSaveCounters(); + Save_ResetSaveCounters(); sub_8125EC8(0); if (gSaveFileStatus == 0 || gSaveFileStatus == 2) ClearSav2(); -- cgit v1.2.3 From 29d16a0af10c2de52de8ff37c13dd5aa3401c98f Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 14 Jan 2018 01:17:02 +0100 Subject: started decompiling data/battle_anim.s --- src/battle/battle_anim.c | 4 +- src/data/battle_anim.h | 326 +++++++++++++++++++++++++++++++++++++++++++++ src/data/graphics.h | 338 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 666 insertions(+), 2 deletions(-) create mode 100644 src/data/battle_anim.h create mode 100644 src/data/graphics.h (limited to 'src') diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a0c74be1d..05a2e5752 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -13,6 +13,7 @@ #include "sprite.h" #include "task.h" #include "ewram.h" +#include "../data/battle_anim.h" // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) (i - 10000) @@ -64,8 +65,7 @@ extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern const u8 *const gBattleAnims_Moves[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; -extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; +// extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; static void RunAnimScriptCommand(void); static void ScriptCmd_loadspritegfx(void); diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h new file mode 100644 index 000000000..fb7ed0e6c --- /dev/null +++ b/src/data/battle_anim.h @@ -0,0 +1,326 @@ +#include "global.h" +#include "../data/graphics.h" + +const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +{ + { .data = (u8 *) &gBattleAnimSpritePalette_000, .tag = 10000}, + { .data = (u8 *) &gBattleAnimSpritePalette_001, .tag = 10001}, + { .data = (u8 *) &gBattleAnimSpritePalette_002, .tag = 10002}, + { .data = (u8 *) &gBattleAnimSpritePalette_003, .tag = 10003}, + { .data = (u8 *) &gBattleAnimSpritePalette_004, .tag = 10004}, + { .data = (u8 *) &gBattleAnimSpritePalette_005, .tag = 10005}, + { .data = (u8 *) &gBattleAnimSpritePalette_006, .tag = 10006}, + { .data = (u8 *) &gBattleAnimSpritePalette_007, .tag = 10007}, + { .data = (u8 *) &gBattleAnimSpritePalette_008, .tag = 10008}, + { .data = (u8 *) &gBattleAnimSpritePalette_009, .tag = 10009}, + { .data = (u8 *) &gBattleAnimSpritePalette_010, .tag = 10010}, + { .data = (u8 *) &gBattleAnimSpritePalette_011, .tag = 10011}, + { .data = (u8 *) &gBattleAnimSpritePalette_012, .tag = 10012}, + { .data = (u8 *) &gBattleAnimSpritePalette_013, .tag = 10013}, + { .data = (u8 *) &gBattleAnimSpritePalette_014, .tag = 10014}, + { .data = (u8 *) &gBattleAnimSpritePalette_015, .tag = 10015}, + { .data = (u8 *) &gBattleAnimSpritePalette_016, .tag = 10016}, + { .data = (u8 *) &gBattleAnimSpritePalette_016, .tag = 10017}, + { .data = (u8 *) &gBattleAnimSpritePalette_018, .tag = 10018}, + { .data = (u8 *) &gBattleAnimSpritePalette_019, .tag = 10019}, + { .data = (u8 *) &gBattleAnimSpritePalette_020, .tag = 10020}, + { .data = (u8 *) &gBattleAnimSpritePalette_021, .tag = 10021}, + { .data = (u8 *) &gBattleAnimSpritePalette_022, .tag = 10022}, + { .data = (u8 *) &gBattleAnimSpritePalette_023, .tag = 10023}, + { .data = (u8 *) &gBattleAnimSpritePalette_024, .tag = 10024}, + { .data = (u8 *) &gBattleAnimSpritePalette_025, .tag = 10025}, + { .data = (u8 *) &gBattleAnimSpritePalette_026, .tag = 10026}, + { .data = (u8 *) &gBattleAnimSpritePalette_027, .tag = 10027}, + { .data = (u8 *) &gBattleAnimSpritePalette_028, .tag = 10028}, + { .data = (u8 *) &gBattleAnimSpritePalette_029, .tag = 10029}, + { .data = (u8 *) &gBattleAnimSpritePalette_030, .tag = 10030}, + { .data = (u8 *) &gBattleAnimSpritePalette_031, .tag = 10031}, + { .data = (u8 *) &gBattleAnimSpritePalette_032, .tag = 10032}, + { .data = (u8 *) &gBattleAnimSpritePalette_033, .tag = 10033}, + { .data = (u8 *) &gBattleAnimSpritePalette_033, .tag = 10034}, + { .data = (u8 *) &gBattleAnimSpritePalette_033, .tag = 10035}, + { .data = (u8 *) &gBattleAnimSpritePalette_036, .tag = 10036}, + { .data = (u8 *) &gBattleAnimSpritePalette_036, .tag = 10037}, + { .data = (u8 *) &gBattleAnimSpritePalette_038, .tag = 10038}, + { .data = (u8 *) &gBattleAnimSpritePalette_039, .tag = 10039}, + { .data = (u8 *) &gBattleAnimSpritePalette_038, .tag = 10040}, + { .data = (u8 *) &gBattleAnimSpritePalette_038, .tag = 10041}, + { .data = (u8 *) &gBattleAnimSpritePalette_042, .tag = 10042}, + { .data = (u8 *) &gBattleAnimSpritePalette_043, .tag = 10043}, + { .data = (u8 *) &gBattleAnimSpritePalette_044, .tag = 10044}, + { .data = (u8 *) &gBattleAnimSpritePalette_045, .tag = 10045}, + { .data = (u8 *) &gBattleAnimSpritePalette_046, .tag = 10046}, + { .data = (u8 *) &gBattleAnimSpritePalette_047, .tag = 10046}, + { .data = (u8 *) &gBattleAnimSpritePalette_048, .tag = 10048}, + { .data = (u8 *) &gBattleAnimSpritePalette_049, .tag = 10049}, + { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10050}, + { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10051}, + { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10052}, + { .data = (u8 *) &gBattleAnimSpritePalette_026, .tag = 10053}, + { .data = (u8 *) &gBattleAnimSpritePalette_054, .tag = 10054}, + { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10055}, + { .data = (u8 *) &gBattleAnimSpritePalette_056, .tag = 10056}, + { .data = (u8 *) &gBattleAnimSpritePalette_057, .tag = 10057}, + { .data = (u8 *) &gBattleAnimSpritePalette_058, .tag = 10058}, + { .data = (u8 *) &gBattleAnimSpritePalette_059, .tag = 10059}, + { .data = (u8 *) &gBattleAnimSpritePalette_060, .tag = 10060}, + { .data = (u8 *) &gBattleAnimSpritePalette_061, .tag = 10061}, + { .data = (u8 *) &gBattleAnimSpritePalette_062, .tag = 10062}, + { .data = (u8 *) &gBattleAnimSpritePalette_063, .tag = 10063}, + { .data = (u8 *) &gBattleAnimSpritePalette_064, .tag = 10064}, + { .data = (u8 *) &gBattleAnimSpritePalette_065, .tag = 10065}, + { .data = (u8 *) &gBattleAnimSpritePalette_066, .tag = 10066}, + { .data = (u8 *) &gBattleAnimSpritePalette_067, .tag = 10067}, + { .data = (u8 *) &gBattleAnimSpritePalette_068, .tag = 10068}, + { .data = (u8 *) &gBattleAnimSpritePalette_065, .tag = 10069}, + { .data = (u8 *) &gBattleAnimSpritePalette_070, .tag = 10070}, + { .data = (u8 *) &gBattleAnimSpritePalette_070, .tag = 10071}, + { .data = (u8 *) &gBattleAnimSpritePalette_072, .tag = 10072}, + { .data = (u8 *) &gBattleAnimSpritePalette_073, .tag = 10073}, + { .data = (u8 *) &gBattleAnimSpritePalette_074, .tag = 10074}, + { .data = (u8 *) &gBattleAnimSpritePalette_075, .tag = 10075}, + { .data = (u8 *) &gBattleAnimSpritePalette_076, .tag = 10076}, + { .data = (u8 *) &gBattleAnimSpritePalette_076, .tag = 10077}, + { .data = (u8 *) &gBattleAnimSpritePalette_078, .tag = 10078}, + { .data = (u8 *) &gBattleAnimSpritePalette_078, .tag = 10079}, + { .data = (u8 *) &gBattleAnimSpritePalette_080, .tag = 10080}, + { .data = (u8 *) &gBattleAnimSpritePalette_081, .tag = 10081}, + { .data = (u8 *) &gBattleAnimSpritePalette_082, .tag = 10082}, + { .data = (u8 *) &gBattleAnimSpritePalette_083, .tag = 10083}, + { .data = (u8 *) &gBattleAnimSpritePalette_084, .tag = 10084}, + { .data = (u8 *) &gBattleAnimSpritePalette_085, .tag = 10085}, + { .data = (u8 *) &gBattleAnimSpritePalette_086, .tag = 10086}, + { .data = (u8 *) &gBattleAnimSpritePalette_087, .tag = 10087}, + { .data = (u8 *) &gBattleAnimSpritePalette_088, .tag = 10088}, + { .data = (u8 *) &gBattleAnimSpritePalette_089, .tag = 10089}, + { .data = (u8 *) &gBattleAnimSpritePalette_090, .tag = 10090}, + { .data = (u8 *) &gBattleAnimSpritePalette_091, .tag = 10091}, + { .data = (u8 *) &gBattleAnimSpritePalette_092, .tag = 10092}, + { .data = (u8 *) &gBattleAnimSpritePalette_093, .tag = 10093}, + { .data = (u8 *) &gBattleAnimSpritePalette_094, .tag = 10094}, + { .data = (u8 *) &gBattleAnimSpritePalette_095, .tag = 10095}, + { .data = (u8 *) &gBattleAnimSpritePalette_096, .tag = 10096}, + { .data = (u8 *) &gBattleAnimSpritePalette_097, .tag = 10097}, + { .data = (u8 *) &gBattleAnimSpritePalette_094, .tag = 10098}, + { .data = (u8 *) &gBattleAnimSpritePalette_099, .tag = 10099}, + { .data = (u8 *) &gBattleAnimSpritePalette_100, .tag = 10100}, + { .data = (u8 *) &gBattleAnimSpritePalette_101, .tag = 10101}, + { .data = (u8 *) &gBattleAnimSpritePalette_101, .tag = 10102}, + { .data = (u8 *) &gBattleAnimSpritePalette_103, .tag = 10103}, + { .data = (u8 *) &gBattleAnimSpritePalette_104, .tag = 10104}, + { .data = (u8 *) &gBattleAnimSpritePalette_105, .tag = 10105}, + { .data = (u8 *) &gBattleAnimSpritePalette_105, .tag = 10106}, + { .data = (u8 *) &gBattleAnimSpritePalette_107, .tag = 10107}, + { .data = (u8 *) &gBattleAnimSpritePalette_107, .tag = 10108}, + { .data = (u8 *) &gBattleAnimSpritePalette_109, .tag = 10109}, + { .data = (u8 *) &gBattleAnimSpritePalette_109, .tag = 10110}, + { .data = (u8 *) &gBattleAnimSpritePalette_111, .tag = 10111}, + { .data = (u8 *) &gBattleAnimSpritePalette_112, .tag = 10112}, + { .data = (u8 *) &gBattleAnimSpritePalette_113, .tag = 10113}, + { .data = (u8 *) &gBattleAnimSpritePalette_114, .tag = 10114}, + { .data = (u8 *) &gBattleAnimSpritePalette_115, .tag = 10115}, + { .data = (u8 *) &gBattleAnimSpritePalette_116, .tag = 10116}, + { .data = (u8 *) &gBattleAnimSpritePalette_117, .tag = 10117}, + { .data = (u8 *) &gBattleAnimSpritePalette_118, .tag = 10118}, + { .data = (u8 *) &gBattleAnimSpritePalette_119, .tag = 10119}, + { .data = (u8 *) &gBattleAnimSpritePalette_120, .tag = 10120}, + { .data = (u8 *) &gBattleAnimSpritePalette_121, .tag = 10121}, + { .data = (u8 *) &gBattleAnimSpritePalette_122, .tag = 10122}, + { .data = (u8 *) &gBattleAnimSpritePalette_122, .tag = 10123}, + { .data = (u8 *) &gBattleAnimSpritePalette_124, .tag = 10124}, + { .data = (u8 *) &gBattleAnimSpritePalette_125, .tag = 10125}, + { .data = (u8 *) &gBattleAnimSpritePalette_126, .tag = 10126}, + { .data = (u8 *) &gBattleAnimSpritePalette_127, .tag = 10127}, + { .data = (u8 *) &gBattleAnimSpritePalette_128, .tag = 10128}, + { .data = (u8 *) &gBattleAnimSpritePalette_128, .tag = 10129}, + { .data = (u8 *) &gBattleAnimSpritePalette_130, .tag = 10130}, + { .data = (u8 *) &gBattleAnimSpritePalette_130, .tag = 10131}, + { .data = (u8 *) &gBattleAnimSpritePalette_132, .tag = 10132}, + { .data = (u8 *) &gBattleAnimSpritePalette_133, .tag = 10133}, + { .data = (u8 *) &gBattleAnimSpritePalette_133, .tag = 10134}, + { .data = (u8 *) &gBattleAnimSpritePalette_135, .tag = 10135}, + { .data = (u8 *) &gBattleAnimSpritePalette_136, .tag = 10136}, + { .data = (u8 *) &gBattleAnimSpritePalette_135, .tag = 10137}, + { .data = (u8 *) &gBattleAnimSpritePalette_135, .tag = 10138}, + { .data = (u8 *) &gBattleAnimSpritePalette_139, .tag = 10139}, + { .data = (u8 *) &gBattleAnimSpritePalette_140, .tag = 10140}, + { .data = (u8 *) &gBattleAnimSpritePalette_141, .tag = 10141}, + { .data = (u8 *) &gBattleAnimSpritePalette_141, .tag = 10142}, + { .data = (u8 *) &gBattleAnimSpritePalette_143, .tag = 10143}, + { .data = (u8 *) &gBattleAnimSpritePalette_144, .tag = 10144}, + { .data = (u8 *) &gBattleAnimSpritePalette_139, .tag = 10145}, + { .data = (u8 *) &gBattleAnimSpritePalette_115, .tag = 10146}, + { .data = (u8 *) &gBattleAnimSpritePalette_147, .tag = 10147}, + { .data = (u8 *) &gBattleAnimSpritePalette_148, .tag = 10148}, + { .data = (u8 *) &gBattleAnimSpritePalette_148, .tag = 10149}, + { .data = (u8 *) &gBattleAnimSpritePalette_150, .tag = 10150}, + { .data = (u8 *) &gBattleAnimSpritePalette_150, .tag = 10151}, + { .data = (u8 *) &gBattleAnimSpritePalette_152, .tag = 10152}, + { .data = (u8 *) &gBattleAnimSpritePalette_153, .tag = 10153}, + { .data = (u8 *) &gBattleAnimSpritePalette_154, .tag = 10154}, + { .data = (u8 *) &gBattleAnimSpritePalette_155, .tag = 10155}, + { .data = (u8 *) &gBattleAnimSpritePalette_156, .tag = 10156}, + { .data = (u8 *) &gBattleAnimSpritePalette_157, .tag = 10157}, + { .data = (u8 *) &gBattleAnimSpritePalette_158, .tag = 10158}, + { .data = (u8 *) &gBattleAnimSpritePalette_159, .tag = 10159}, + { .data = (u8 *) &gBattleAnimSpritePalette_160, .tag = 10160}, + { .data = (u8 *) &gBattleAnimSpritePalette_161, .tag = 10161}, + { .data = (u8 *) &gBattleAnimSpritePalette_162, .tag = 10162}, + { .data = (u8 *) &gBattleAnimSpritePalette_163, .tag = 10163}, + { .data = (u8 *) &gBattleAnimSpritePalette_164, .tag = 10164}, + { .data = (u8 *) &gBattleAnimSpritePalette_165, .tag = 10165}, + { .data = (u8 *) &gBattleAnimSpritePalette_166, .tag = 10166}, + { .data = (u8 *) &gBattleAnimSpritePalette_167, .tag = 10167}, + { .data = (u8 *) &gBattleAnimSpritePalette_168, .tag = 10168}, + { .data = (u8 *) &gBattleAnimSpritePalette_169, .tag = 10169}, + { .data = (u8 *) &gBattleAnimSpritePalette_170, .tag = 10170}, + { .data = (u8 *) &gBattleAnimSpritePalette_171, .tag = 10171}, + { .data = (u8 *) &gBattleAnimSpritePalette_172, .tag = 10172}, + { .data = (u8 *) &gBattleAnimSpritePalette_001, .tag = 10173}, + { .data = (u8 *) &gBattleAnimSpritePalette_174, .tag = 10174}, + { .data = (u8 *) &gBattleAnimSpritePalette_175, .tag = 10175}, + { .data = (u8 *) &gBattleAnimSpritePalette_176, .tag = 10176}, + { .data = (u8 *) &gBattleAnimSpritePalette_177, .tag = 10177}, + { .data = (u8 *) &gBattleAnimSpritePalette_178, .tag = 10178}, + { .data = (u8 *) &gBattleAnimSpritePalette_179, .tag = 10179}, + { .data = (u8 *) &gBattleAnimSpritePalette_179, .tag = 10180}, + { .data = (u8 *) &gBattleAnimSpritePalette_179, .tag = 10181}, + { .data = (u8 *) &gBattleAnimSpritePalette_182, .tag = 10182}, + { .data = (u8 *) &gBattleAnimSpritePalette_183, .tag = 10183}, + { .data = (u8 *) &gBattleAnimSpritePalette_184, .tag = 10184}, + { .data = (u8 *) &gBattleAnimSpritePalette_185, .tag = 10185}, + { .data = (u8 *) &gBattleAnimSpritePalette_186, .tag = 10186}, + { .data = (u8 *) &gBattleAnimSpritePalette_187, .tag = 10187}, + { .data = (u8 *) &gBattleAnimSpritePalette_188, .tag = 10188}, + { .data = (u8 *) &gBattleAnimSpritePalette_189, .tag = 10189}, + { .data = (u8 *) &gBattleAnimSpritePalette_190, .tag = 10190}, + { .data = (u8 *) &gBattleAnimSpritePalette_191, .tag = 10191}, + { .data = (u8 *) &gBattleAnimSpritePalette_192, .tag = 10192}, + { .data = (u8 *) &gBattleAnimSpritePalette_193, .tag = 10193}, + { .data = (u8 *) &gBattleAnimSpritePalette_194, .tag = 10194}, + { .data = (u8 *) &gBattleAnimSpritePalette_195, .tag = 10195}, + { .data = (u8 *) &gBattleAnimSpritePalette_196, .tag = 10196}, + { .data = (u8 *) &gBattleAnimSpritePalette_197, .tag = 10197}, + { .data = (u8 *) &gBattleAnimSpritePalette_198, .tag = 10198}, + { .data = (u8 *) &gBattleAnimSpritePalette_199, .tag = 10199}, + { .data = (u8 *) &gBattleAnimSpritePalette_200, .tag = 10200}, + { .data = (u8 *) &gBattleAnimSpritePalette_201, .tag = 10201}, + { .data = (u8 *) &gBattleAnimSpritePalette_202, .tag = 10202}, + { .data = (u8 *) &gBattleAnimSpritePalette_203, .tag = 10203}, + { .data = (u8 *) &gBattleAnimSpritePalette_204, .tag = 10204}, + { .data = (u8 *) &gBattleAnimSpritePalette_205, .tag = 10205}, + { .data = (u8 *) &gBattleAnimSpritePalette_206, .tag = 10206}, + { .data = (u8 *) &gBattleAnimSpritePalette_207, .tag = 10207}, + { .data = (u8 *) &gBattleAnimSpritePalette_167, .tag = 10208}, + { .data = (u8 *) &gBattleAnimSpritePalette_209, .tag = 10209}, + { .data = (u8 *) &gBattleAnimSpritePalette_210, .tag = 10210}, + { .data = (u8 *) &gBattleAnimSpritePalette_211, .tag = 10211}, + { .data = (u8 *) &gBattleAnimSpritePalette_211, .tag = 10212}, + { .data = (u8 *) &gBattleAnimSpritePalette_211, .tag = 10213}, + { .data = (u8 *) &gBattleAnimSpritePalette_064, .tag = 10214}, + { .data = (u8 *) &gBattleAnimSpritePalette_215, .tag = 10215}, + { .data = (u8 *) &gBattleAnimSpritePalette_216, .tag = 10216}, + { .data = (u8 *) &gBattleAnimSpritePalette_217, .tag = 10217}, + { .data = (u8 *) &gBattleAnimSpritePalette_218, .tag = 10218}, + { .data = (u8 *) &gBattleAnimSpritePalette_219, .tag = 10219}, + { .data = (u8 *) &gBattleAnimSpritePalette_220, .tag = 10220}, + { .data = (u8 *) &gBattleAnimSpritePalette_221, .tag = 10221}, + { .data = (u8 *) &gBattleAnimSpritePalette_222, .tag = 10222}, + { .data = (u8 *) &gBattleAnimSpritePalette_223, .tag = 10223}, + { .data = (u8 *) &gBattleAnimSpritePalette_224, .tag = 10224}, + { .data = (u8 *) &gBattleAnimSpritePalette_225, .tag = 10225}, + { .data = (u8 *) &gBattleAnimSpritePalette_226, .tag = 10226}, + { .data = (u8 *) &gBattleAnimSpritePalette_226, .tag = 10227}, + { .data = (u8 *) &gBattleAnimSpritePalette_228, .tag = 10228}, + { .data = (u8 *) &gBattleAnimSpritePalette_229, .tag = 10229}, + { .data = (u8 *) &gBattleAnimSpritePalette_230, .tag = 10230}, + { .data = (u8 *) &gBattleAnimSpritePalette_231, .tag = 10231}, + { .data = (u8 *) &gBattleAnimSpritePalette_231, .tag = 10232}, + { .data = (u8 *) &gBattleAnimSpritePalette_233, .tag = 10233}, + { .data = (u8 *) &gBattleAnimSpritePalette_234, .tag = 10234}, + { .data = (u8 *) &gBattleAnimSpritePalette_235, .tag = 10235}, + { .data = (u8 *) &gBattleAnimSpritePalette_236, .tag = 10236}, + { .data = (u8 *) &gBattleAnimSpritePalette_237, .tag = 10237}, + { .data = (u8 *) &gBattleAnimSpritePalette_238, .tag = 10238}, + { .data = (u8 *) &gBattleAnimSpritePalette_239, .tag = 10239}, + { .data = (u8 *) &gBattleAnimSpritePalette_240, .tag = 10240}, + { .data = (u8 *) &gBattleAnimSpritePalette_241, .tag = 10241}, + { .data = (u8 *) &gBattleAnimSpritePalette_242, .tag = 10242}, + { .data = (u8 *) &gBattleAnimSpritePalette_243, .tag = 10243}, + { .data = (u8 *) &gBattleAnimSpritePalette_244, .tag = 10244}, + { .data = (u8 *) &gBattleAnimSpritePalette_245, .tag = 10245}, + { .data = (u8 *) &gBattleAnimSpritePalette_245, .tag = 10246}, + { .data = (u8 *) &gBattleAnimSpritePalette_064, .tag = 10247}, + { .data = (u8 *) &gBattleAnimSpritePalette_248, .tag = 10248}, + { .data = (u8 *) &gBattleAnimSpritePalette_249, .tag = 10249}, + { .data = (u8 *) &gBattleAnimSpritePalette_249, .tag = 10250}, + { .data = (u8 *) &gBattleAnimSpritePalette_251, .tag = 10251}, + { .data = (u8 *) &gBattleAnimSpritePalette_252, .tag = 10252}, + { .data = (u8 *) &gBattleAnimSpritePalette_253, .tag = 10253}, + { .data = (u8 *) &gBattleAnimSpritePalette_254, .tag = 10254}, + { .data = (u8 *) &gBattleAnimSpritePalette_255, .tag = 10255}, + { .data = (u8 *) &gBattleAnimSpritePalette_256, .tag = 10256}, + { .data = (u8 *) &gBattleAnimSpritePalette_257, .tag = 10257}, + { .data = (u8 *) &gBattleAnimSpritePalette_258, .tag = 10258}, + { .data = (u8 *) &gBattleAnimSpritePalette_259, .tag = 10259}, + { .data = (u8 *) &gBattleAnimSpritePalette_260, .tag = 10260}, + { .data = (u8 *) &gBattleAnimSpritePalette_261, .tag = 10261}, + { .data = (u8 *) &gBattleAnimSpritePalette_262, .tag = 10262}, + { .data = (u8 *) &gBattleAnimSpritePalette_263, .tag = 10263}, + { .data = (u8 *) &gBattleAnimSpritePalette_264, .tag = 10264}, + { .data = (u8 *) &gBattleAnimSpritePalette_265, .tag = 10265}, + { .data = (u8 *) &gBattleAnimSpritePalette_266, .tag = 10266}, + { .data = (u8 *) &gBattleAnimSpritePalette_267, .tag = 10267}, + { .data = (u8 *) &gBattleAnimSpritePalette_268, .tag = 10268}, + { .data = (u8 *) &gBattleAnimSpritePalette_269, .tag = 10269}, + { .data = (u8 *) &gBattleAnimSpritePalette_270, .tag = 10270}, + { .data = (u8 *) &gBattleAnimSpritePalette_271, .tag = 10271}, + { .data = (u8 *) &gBattleAnimSpritePalette_272, .tag = 10272}, + { .data = (u8 *) &gBattleAnimSpritePalette_272, .tag = 10273}, + { .data = (u8 *) &gBattleAnimSpritePalette_274, .tag = 10274}, + { .data = (u8 *) &gBattleAnimSpritePalette_274, .tag = 10275}, + { .data = (u8 *) &gBattleAnimSpritePalette_274, .tag = 10276}, + { .data = (u8 *) &gBattleAnimSpritePalette_277, .tag = 10277}, + { .data = (u8 *) &gBattleAnimSpritePalette_278, .tag = 10278}, + { .data = (u8 *) &gBattleAnimSpritePalette_279, .tag = 10279}, + { .data = (u8 *) &gBattleAnimSpritePalette_280, .tag = 10280}, + { .data = (u8 *) &gBattleAnimSpritePalette_281, .tag = 10281}, + { .data = (u8 *) &gBattleAnimSpritePalette_282, .tag = 10282}, + { .data = (u8 *) &gBattleAnimSpritePalette_283, .tag = 10283}, + { .data = (u8 *) &gBattleAnimSpritePalette_284, .tag = 10284}, + { .data = (u8 *) &gBattleAnimSpritePalette_285, .tag = 10285}, + { .data = (u8 *) &gBattleAnimSpritePalette_286, .tag = 10286}, + { .data = (u8 *) &gBattleAnimSpritePalette_287, .tag = 10287}, + { .data = (u8 *) &gBattleAnimSpritePalette_288, .tag = 10288}, +}; + +const struct BattleAnimBackground gBattleAnimBackgroundTable[] = +{ + &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, + &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, + &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02, + &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10, + &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14, + &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15, + &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16, + &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08, + &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20, + &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06, +}; diff --git a/src/data/graphics.h b/src/data/graphics.h new file mode 100644 index 000000000..d305c4afb --- /dev/null +++ b/src/data/graphics.h @@ -0,0 +1,338 @@ +extern struct CompressedSpritePalette gBattleAnimSpritePalette_000; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_001; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_002; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_003; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_004; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_005; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_006; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_007; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_008; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_009; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_010; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_011; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_012; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_013; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_014; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_015; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_016; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_016; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_018; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_019; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_020; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_021; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_022; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_023; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_024; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_025; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_026; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_027; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_028; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_029; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_030; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_031; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_032; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_033; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_033; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_033; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_036; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_036; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_038; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_039; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_038; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_038; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_042; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_043; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_044; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_045; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_046; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_047; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_048; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_049; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_026; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_054; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_056; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_057; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_058; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_059; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_060; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_061; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_062; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_063; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_064; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_065; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_066; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_067; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_068; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_065; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_070; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_070; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_072; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_073; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_074; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_075; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_076; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_076; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_078; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_078; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_080; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_081; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_082; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_083; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_084; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_085; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_086; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_087; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_088; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_089; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_090; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_091; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_092; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_093; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_094; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_095; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_096; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_097; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_094; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_099; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_100; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_101; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_101; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_103; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_104; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_105; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_105; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_107; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_107; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_109; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_109; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_111; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_112; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_113; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_114; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_115; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_116; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_117; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_118; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_119; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_120; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_121; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_122; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_122; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_124; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_125; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_126; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_127; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_128; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_128; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_130; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_130; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_132; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_133; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_133; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_135; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_136; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_135; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_135; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_139; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_140; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_141; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_141; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_143; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_144; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_139; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_115; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_147; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_148; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_148; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_150; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_150; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_152; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_153; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_154; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_155; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_156; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_157; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_158; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_159; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_160; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_161; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_162; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_163; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_164; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_165; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_166; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_167; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_168; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_169; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_170; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_171; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_172; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_001; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_174; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_175; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_176; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_177; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_178; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_179; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_179; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_179; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_182; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_183; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_184; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_185; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_186; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_187; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_188; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_189; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_190; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_191; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_192; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_193; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_194; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_195; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_196; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_197; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_198; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_199; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_200; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_201; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_202; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_203; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_204; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_205; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_206; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_207; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_167; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_209; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_210; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_211; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_211; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_211; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_064; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_215; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_216; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_217; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_218; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_219; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_220; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_221; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_222; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_223; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_224; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_225; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_226; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_226; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_228; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_229; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_230; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_231; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_231; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_233; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_234; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_235; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_236; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_237; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_238; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_239; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_240; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_241; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_242; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_243; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_244; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_245; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_245; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_064; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_248; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_249; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_249; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_251; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_252; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_253; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_254; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_255; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_256; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_257; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_258; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_259; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_260; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_261; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_262; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_263; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_264; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_265; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_266; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_267; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_268; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_269; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_270; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_271; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_272; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_272; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_274; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_274; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_274; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_277; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_278; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_279; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_280; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_281; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_282; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_283; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_284; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_285; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_286; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_287; +extern struct CompressedSpritePalette gBattleAnimSpritePalette_288; + +extern struct BattleAnimBackground gBattleAnimBackgroundImage_00; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_02; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_03; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_04; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_07; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_09; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_11; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_12; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_15; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_16; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_17; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_20; +extern struct BattleAnimBackground gBattleAnimBackgroundImage_21; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_00; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_02; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_03; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_04; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_07; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_09; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_11; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_12; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_15; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_16; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_17; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_18; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_20; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_21; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_22; +extern struct BattleAnimBackground gBattleAnimBackgroundPalette_24; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_00; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_02; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_03; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_04; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_05; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_06; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_07; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_08; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_09; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_10; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_11; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_12; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_13; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_14; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_15; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_16; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_17; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_20; +extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_21; \ No newline at end of file -- cgit v1.2.3 From bbd91594f99d0a4eacfb7b6b4e9f46d57f8e9fad Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 14 Jan 2018 01:41:54 +0100 Subject: Fixings --- src/data/battle_anim.h | 580 ++++++++++++++++++++++++------------------------- src/data/graphics.h | 338 ---------------------------- 2 files changed, 290 insertions(+), 628 deletions(-) delete mode 100644 src/data/graphics.h (limited to 'src') diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h index fb7ed0e6c..1e12e2011 100644 --- a/src/data/battle_anim.h +++ b/src/data/battle_anim.h @@ -1,297 +1,297 @@ #include "global.h" -#include "../data/graphics.h" +#include "graphics.h" const struct CompressedSpritePalette gBattleAnimPaletteTable[] = { - { .data = (u8 *) &gBattleAnimSpritePalette_000, .tag = 10000}, - { .data = (u8 *) &gBattleAnimSpritePalette_001, .tag = 10001}, - { .data = (u8 *) &gBattleAnimSpritePalette_002, .tag = 10002}, - { .data = (u8 *) &gBattleAnimSpritePalette_003, .tag = 10003}, - { .data = (u8 *) &gBattleAnimSpritePalette_004, .tag = 10004}, - { .data = (u8 *) &gBattleAnimSpritePalette_005, .tag = 10005}, - { .data = (u8 *) &gBattleAnimSpritePalette_006, .tag = 10006}, - { .data = (u8 *) &gBattleAnimSpritePalette_007, .tag = 10007}, - { .data = (u8 *) &gBattleAnimSpritePalette_008, .tag = 10008}, - { .data = (u8 *) &gBattleAnimSpritePalette_009, .tag = 10009}, - { .data = (u8 *) &gBattleAnimSpritePalette_010, .tag = 10010}, - { .data = (u8 *) &gBattleAnimSpritePalette_011, .tag = 10011}, - { .data = (u8 *) &gBattleAnimSpritePalette_012, .tag = 10012}, - { .data = (u8 *) &gBattleAnimSpritePalette_013, .tag = 10013}, - { .data = (u8 *) &gBattleAnimSpritePalette_014, .tag = 10014}, - { .data = (u8 *) &gBattleAnimSpritePalette_015, .tag = 10015}, - { .data = (u8 *) &gBattleAnimSpritePalette_016, .tag = 10016}, - { .data = (u8 *) &gBattleAnimSpritePalette_016, .tag = 10017}, - { .data = (u8 *) &gBattleAnimSpritePalette_018, .tag = 10018}, - { .data = (u8 *) &gBattleAnimSpritePalette_019, .tag = 10019}, - { .data = (u8 *) &gBattleAnimSpritePalette_020, .tag = 10020}, - { .data = (u8 *) &gBattleAnimSpritePalette_021, .tag = 10021}, - { .data = (u8 *) &gBattleAnimSpritePalette_022, .tag = 10022}, - { .data = (u8 *) &gBattleAnimSpritePalette_023, .tag = 10023}, - { .data = (u8 *) &gBattleAnimSpritePalette_024, .tag = 10024}, - { .data = (u8 *) &gBattleAnimSpritePalette_025, .tag = 10025}, - { .data = (u8 *) &gBattleAnimSpritePalette_026, .tag = 10026}, - { .data = (u8 *) &gBattleAnimSpritePalette_027, .tag = 10027}, - { .data = (u8 *) &gBattleAnimSpritePalette_028, .tag = 10028}, - { .data = (u8 *) &gBattleAnimSpritePalette_029, .tag = 10029}, - { .data = (u8 *) &gBattleAnimSpritePalette_030, .tag = 10030}, - { .data = (u8 *) &gBattleAnimSpritePalette_031, .tag = 10031}, - { .data = (u8 *) &gBattleAnimSpritePalette_032, .tag = 10032}, - { .data = (u8 *) &gBattleAnimSpritePalette_033, .tag = 10033}, - { .data = (u8 *) &gBattleAnimSpritePalette_033, .tag = 10034}, - { .data = (u8 *) &gBattleAnimSpritePalette_033, .tag = 10035}, - { .data = (u8 *) &gBattleAnimSpritePalette_036, .tag = 10036}, - { .data = (u8 *) &gBattleAnimSpritePalette_036, .tag = 10037}, - { .data = (u8 *) &gBattleAnimSpritePalette_038, .tag = 10038}, - { .data = (u8 *) &gBattleAnimSpritePalette_039, .tag = 10039}, - { .data = (u8 *) &gBattleAnimSpritePalette_038, .tag = 10040}, - { .data = (u8 *) &gBattleAnimSpritePalette_038, .tag = 10041}, - { .data = (u8 *) &gBattleAnimSpritePalette_042, .tag = 10042}, - { .data = (u8 *) &gBattleAnimSpritePalette_043, .tag = 10043}, - { .data = (u8 *) &gBattleAnimSpritePalette_044, .tag = 10044}, - { .data = (u8 *) &gBattleAnimSpritePalette_045, .tag = 10045}, - { .data = (u8 *) &gBattleAnimSpritePalette_046, .tag = 10046}, - { .data = (u8 *) &gBattleAnimSpritePalette_047, .tag = 10046}, - { .data = (u8 *) &gBattleAnimSpritePalette_048, .tag = 10048}, - { .data = (u8 *) &gBattleAnimSpritePalette_049, .tag = 10049}, - { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10050}, - { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10051}, - { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10052}, - { .data = (u8 *) &gBattleAnimSpritePalette_026, .tag = 10053}, - { .data = (u8 *) &gBattleAnimSpritePalette_054, .tag = 10054}, - { .data = (u8 *) &gBattleAnimSpritePalette_050, .tag = 10055}, - { .data = (u8 *) &gBattleAnimSpritePalette_056, .tag = 10056}, - { .data = (u8 *) &gBattleAnimSpritePalette_057, .tag = 10057}, - { .data = (u8 *) &gBattleAnimSpritePalette_058, .tag = 10058}, - { .data = (u8 *) &gBattleAnimSpritePalette_059, .tag = 10059}, - { .data = (u8 *) &gBattleAnimSpritePalette_060, .tag = 10060}, - { .data = (u8 *) &gBattleAnimSpritePalette_061, .tag = 10061}, - { .data = (u8 *) &gBattleAnimSpritePalette_062, .tag = 10062}, - { .data = (u8 *) &gBattleAnimSpritePalette_063, .tag = 10063}, - { .data = (u8 *) &gBattleAnimSpritePalette_064, .tag = 10064}, - { .data = (u8 *) &gBattleAnimSpritePalette_065, .tag = 10065}, - { .data = (u8 *) &gBattleAnimSpritePalette_066, .tag = 10066}, - { .data = (u8 *) &gBattleAnimSpritePalette_067, .tag = 10067}, - { .data = (u8 *) &gBattleAnimSpritePalette_068, .tag = 10068}, - { .data = (u8 *) &gBattleAnimSpritePalette_065, .tag = 10069}, - { .data = (u8 *) &gBattleAnimSpritePalette_070, .tag = 10070}, - { .data = (u8 *) &gBattleAnimSpritePalette_070, .tag = 10071}, - { .data = (u8 *) &gBattleAnimSpritePalette_072, .tag = 10072}, - { .data = (u8 *) &gBattleAnimSpritePalette_073, .tag = 10073}, - { .data = (u8 *) &gBattleAnimSpritePalette_074, .tag = 10074}, - { .data = (u8 *) &gBattleAnimSpritePalette_075, .tag = 10075}, - { .data = (u8 *) &gBattleAnimSpritePalette_076, .tag = 10076}, - { .data = (u8 *) &gBattleAnimSpritePalette_076, .tag = 10077}, - { .data = (u8 *) &gBattleAnimSpritePalette_078, .tag = 10078}, - { .data = (u8 *) &gBattleAnimSpritePalette_078, .tag = 10079}, - { .data = (u8 *) &gBattleAnimSpritePalette_080, .tag = 10080}, - { .data = (u8 *) &gBattleAnimSpritePalette_081, .tag = 10081}, - { .data = (u8 *) &gBattleAnimSpritePalette_082, .tag = 10082}, - { .data = (u8 *) &gBattleAnimSpritePalette_083, .tag = 10083}, - { .data = (u8 *) &gBattleAnimSpritePalette_084, .tag = 10084}, - { .data = (u8 *) &gBattleAnimSpritePalette_085, .tag = 10085}, - { .data = (u8 *) &gBattleAnimSpritePalette_086, .tag = 10086}, - { .data = (u8 *) &gBattleAnimSpritePalette_087, .tag = 10087}, - { .data = (u8 *) &gBattleAnimSpritePalette_088, .tag = 10088}, - { .data = (u8 *) &gBattleAnimSpritePalette_089, .tag = 10089}, - { .data = (u8 *) &gBattleAnimSpritePalette_090, .tag = 10090}, - { .data = (u8 *) &gBattleAnimSpritePalette_091, .tag = 10091}, - { .data = (u8 *) &gBattleAnimSpritePalette_092, .tag = 10092}, - { .data = (u8 *) &gBattleAnimSpritePalette_093, .tag = 10093}, - { .data = (u8 *) &gBattleAnimSpritePalette_094, .tag = 10094}, - { .data = (u8 *) &gBattleAnimSpritePalette_095, .tag = 10095}, - { .data = (u8 *) &gBattleAnimSpritePalette_096, .tag = 10096}, - { .data = (u8 *) &gBattleAnimSpritePalette_097, .tag = 10097}, - { .data = (u8 *) &gBattleAnimSpritePalette_094, .tag = 10098}, - { .data = (u8 *) &gBattleAnimSpritePalette_099, .tag = 10099}, - { .data = (u8 *) &gBattleAnimSpritePalette_100, .tag = 10100}, - { .data = (u8 *) &gBattleAnimSpritePalette_101, .tag = 10101}, - { .data = (u8 *) &gBattleAnimSpritePalette_101, .tag = 10102}, - { .data = (u8 *) &gBattleAnimSpritePalette_103, .tag = 10103}, - { .data = (u8 *) &gBattleAnimSpritePalette_104, .tag = 10104}, - { .data = (u8 *) &gBattleAnimSpritePalette_105, .tag = 10105}, - { .data = (u8 *) &gBattleAnimSpritePalette_105, .tag = 10106}, - { .data = (u8 *) &gBattleAnimSpritePalette_107, .tag = 10107}, - { .data = (u8 *) &gBattleAnimSpritePalette_107, .tag = 10108}, - { .data = (u8 *) &gBattleAnimSpritePalette_109, .tag = 10109}, - { .data = (u8 *) &gBattleAnimSpritePalette_109, .tag = 10110}, - { .data = (u8 *) &gBattleAnimSpritePalette_111, .tag = 10111}, - { .data = (u8 *) &gBattleAnimSpritePalette_112, .tag = 10112}, - { .data = (u8 *) &gBattleAnimSpritePalette_113, .tag = 10113}, - { .data = (u8 *) &gBattleAnimSpritePalette_114, .tag = 10114}, - { .data = (u8 *) &gBattleAnimSpritePalette_115, .tag = 10115}, - { .data = (u8 *) &gBattleAnimSpritePalette_116, .tag = 10116}, - { .data = (u8 *) &gBattleAnimSpritePalette_117, .tag = 10117}, - { .data = (u8 *) &gBattleAnimSpritePalette_118, .tag = 10118}, - { .data = (u8 *) &gBattleAnimSpritePalette_119, .tag = 10119}, - { .data = (u8 *) &gBattleAnimSpritePalette_120, .tag = 10120}, - { .data = (u8 *) &gBattleAnimSpritePalette_121, .tag = 10121}, - { .data = (u8 *) &gBattleAnimSpritePalette_122, .tag = 10122}, - { .data = (u8 *) &gBattleAnimSpritePalette_122, .tag = 10123}, - { .data = (u8 *) &gBattleAnimSpritePalette_124, .tag = 10124}, - { .data = (u8 *) &gBattleAnimSpritePalette_125, .tag = 10125}, - { .data = (u8 *) &gBattleAnimSpritePalette_126, .tag = 10126}, - { .data = (u8 *) &gBattleAnimSpritePalette_127, .tag = 10127}, - { .data = (u8 *) &gBattleAnimSpritePalette_128, .tag = 10128}, - { .data = (u8 *) &gBattleAnimSpritePalette_128, .tag = 10129}, - { .data = (u8 *) &gBattleAnimSpritePalette_130, .tag = 10130}, - { .data = (u8 *) &gBattleAnimSpritePalette_130, .tag = 10131}, - { .data = (u8 *) &gBattleAnimSpritePalette_132, .tag = 10132}, - { .data = (u8 *) &gBattleAnimSpritePalette_133, .tag = 10133}, - { .data = (u8 *) &gBattleAnimSpritePalette_133, .tag = 10134}, - { .data = (u8 *) &gBattleAnimSpritePalette_135, .tag = 10135}, - { .data = (u8 *) &gBattleAnimSpritePalette_136, .tag = 10136}, - { .data = (u8 *) &gBattleAnimSpritePalette_135, .tag = 10137}, - { .data = (u8 *) &gBattleAnimSpritePalette_135, .tag = 10138}, - { .data = (u8 *) &gBattleAnimSpritePalette_139, .tag = 10139}, - { .data = (u8 *) &gBattleAnimSpritePalette_140, .tag = 10140}, - { .data = (u8 *) &gBattleAnimSpritePalette_141, .tag = 10141}, - { .data = (u8 *) &gBattleAnimSpritePalette_141, .tag = 10142}, - { .data = (u8 *) &gBattleAnimSpritePalette_143, .tag = 10143}, - { .data = (u8 *) &gBattleAnimSpritePalette_144, .tag = 10144}, - { .data = (u8 *) &gBattleAnimSpritePalette_139, .tag = 10145}, - { .data = (u8 *) &gBattleAnimSpritePalette_115, .tag = 10146}, - { .data = (u8 *) &gBattleAnimSpritePalette_147, .tag = 10147}, - { .data = (u8 *) &gBattleAnimSpritePalette_148, .tag = 10148}, - { .data = (u8 *) &gBattleAnimSpritePalette_148, .tag = 10149}, - { .data = (u8 *) &gBattleAnimSpritePalette_150, .tag = 10150}, - { .data = (u8 *) &gBattleAnimSpritePalette_150, .tag = 10151}, - { .data = (u8 *) &gBattleAnimSpritePalette_152, .tag = 10152}, - { .data = (u8 *) &gBattleAnimSpritePalette_153, .tag = 10153}, - { .data = (u8 *) &gBattleAnimSpritePalette_154, .tag = 10154}, - { .data = (u8 *) &gBattleAnimSpritePalette_155, .tag = 10155}, - { .data = (u8 *) &gBattleAnimSpritePalette_156, .tag = 10156}, - { .data = (u8 *) &gBattleAnimSpritePalette_157, .tag = 10157}, - { .data = (u8 *) &gBattleAnimSpritePalette_158, .tag = 10158}, - { .data = (u8 *) &gBattleAnimSpritePalette_159, .tag = 10159}, - { .data = (u8 *) &gBattleAnimSpritePalette_160, .tag = 10160}, - { .data = (u8 *) &gBattleAnimSpritePalette_161, .tag = 10161}, - { .data = (u8 *) &gBattleAnimSpritePalette_162, .tag = 10162}, - { .data = (u8 *) &gBattleAnimSpritePalette_163, .tag = 10163}, - { .data = (u8 *) &gBattleAnimSpritePalette_164, .tag = 10164}, - { .data = (u8 *) &gBattleAnimSpritePalette_165, .tag = 10165}, - { .data = (u8 *) &gBattleAnimSpritePalette_166, .tag = 10166}, - { .data = (u8 *) &gBattleAnimSpritePalette_167, .tag = 10167}, - { .data = (u8 *) &gBattleAnimSpritePalette_168, .tag = 10168}, - { .data = (u8 *) &gBattleAnimSpritePalette_169, .tag = 10169}, - { .data = (u8 *) &gBattleAnimSpritePalette_170, .tag = 10170}, - { .data = (u8 *) &gBattleAnimSpritePalette_171, .tag = 10171}, - { .data = (u8 *) &gBattleAnimSpritePalette_172, .tag = 10172}, - { .data = (u8 *) &gBattleAnimSpritePalette_001, .tag = 10173}, - { .data = (u8 *) &gBattleAnimSpritePalette_174, .tag = 10174}, - { .data = (u8 *) &gBattleAnimSpritePalette_175, .tag = 10175}, - { .data = (u8 *) &gBattleAnimSpritePalette_176, .tag = 10176}, - { .data = (u8 *) &gBattleAnimSpritePalette_177, .tag = 10177}, - { .data = (u8 *) &gBattleAnimSpritePalette_178, .tag = 10178}, - { .data = (u8 *) &gBattleAnimSpritePalette_179, .tag = 10179}, - { .data = (u8 *) &gBattleAnimSpritePalette_179, .tag = 10180}, - { .data = (u8 *) &gBattleAnimSpritePalette_179, .tag = 10181}, - { .data = (u8 *) &gBattleAnimSpritePalette_182, .tag = 10182}, - { .data = (u8 *) &gBattleAnimSpritePalette_183, .tag = 10183}, - { .data = (u8 *) &gBattleAnimSpritePalette_184, .tag = 10184}, - { .data = (u8 *) &gBattleAnimSpritePalette_185, .tag = 10185}, - { .data = (u8 *) &gBattleAnimSpritePalette_186, .tag = 10186}, - { .data = (u8 *) &gBattleAnimSpritePalette_187, .tag = 10187}, - { .data = (u8 *) &gBattleAnimSpritePalette_188, .tag = 10188}, - { .data = (u8 *) &gBattleAnimSpritePalette_189, .tag = 10189}, - { .data = (u8 *) &gBattleAnimSpritePalette_190, .tag = 10190}, - { .data = (u8 *) &gBattleAnimSpritePalette_191, .tag = 10191}, - { .data = (u8 *) &gBattleAnimSpritePalette_192, .tag = 10192}, - { .data = (u8 *) &gBattleAnimSpritePalette_193, .tag = 10193}, - { .data = (u8 *) &gBattleAnimSpritePalette_194, .tag = 10194}, - { .data = (u8 *) &gBattleAnimSpritePalette_195, .tag = 10195}, - { .data = (u8 *) &gBattleAnimSpritePalette_196, .tag = 10196}, - { .data = (u8 *) &gBattleAnimSpritePalette_197, .tag = 10197}, - { .data = (u8 *) &gBattleAnimSpritePalette_198, .tag = 10198}, - { .data = (u8 *) &gBattleAnimSpritePalette_199, .tag = 10199}, - { .data = (u8 *) &gBattleAnimSpritePalette_200, .tag = 10200}, - { .data = (u8 *) &gBattleAnimSpritePalette_201, .tag = 10201}, - { .data = (u8 *) &gBattleAnimSpritePalette_202, .tag = 10202}, - { .data = (u8 *) &gBattleAnimSpritePalette_203, .tag = 10203}, - { .data = (u8 *) &gBattleAnimSpritePalette_204, .tag = 10204}, - { .data = (u8 *) &gBattleAnimSpritePalette_205, .tag = 10205}, - { .data = (u8 *) &gBattleAnimSpritePalette_206, .tag = 10206}, - { .data = (u8 *) &gBattleAnimSpritePalette_207, .tag = 10207}, - { .data = (u8 *) &gBattleAnimSpritePalette_167, .tag = 10208}, - { .data = (u8 *) &gBattleAnimSpritePalette_209, .tag = 10209}, - { .data = (u8 *) &gBattleAnimSpritePalette_210, .tag = 10210}, - { .data = (u8 *) &gBattleAnimSpritePalette_211, .tag = 10211}, - { .data = (u8 *) &gBattleAnimSpritePalette_211, .tag = 10212}, - { .data = (u8 *) &gBattleAnimSpritePalette_211, .tag = 10213}, - { .data = (u8 *) &gBattleAnimSpritePalette_064, .tag = 10214}, - { .data = (u8 *) &gBattleAnimSpritePalette_215, .tag = 10215}, - { .data = (u8 *) &gBattleAnimSpritePalette_216, .tag = 10216}, - { .data = (u8 *) &gBattleAnimSpritePalette_217, .tag = 10217}, - { .data = (u8 *) &gBattleAnimSpritePalette_218, .tag = 10218}, - { .data = (u8 *) &gBattleAnimSpritePalette_219, .tag = 10219}, - { .data = (u8 *) &gBattleAnimSpritePalette_220, .tag = 10220}, - { .data = (u8 *) &gBattleAnimSpritePalette_221, .tag = 10221}, - { .data = (u8 *) &gBattleAnimSpritePalette_222, .tag = 10222}, - { .data = (u8 *) &gBattleAnimSpritePalette_223, .tag = 10223}, - { .data = (u8 *) &gBattleAnimSpritePalette_224, .tag = 10224}, - { .data = (u8 *) &gBattleAnimSpritePalette_225, .tag = 10225}, - { .data = (u8 *) &gBattleAnimSpritePalette_226, .tag = 10226}, - { .data = (u8 *) &gBattleAnimSpritePalette_226, .tag = 10227}, - { .data = (u8 *) &gBattleAnimSpritePalette_228, .tag = 10228}, - { .data = (u8 *) &gBattleAnimSpritePalette_229, .tag = 10229}, - { .data = (u8 *) &gBattleAnimSpritePalette_230, .tag = 10230}, - { .data = (u8 *) &gBattleAnimSpritePalette_231, .tag = 10231}, - { .data = (u8 *) &gBattleAnimSpritePalette_231, .tag = 10232}, - { .data = (u8 *) &gBattleAnimSpritePalette_233, .tag = 10233}, - { .data = (u8 *) &gBattleAnimSpritePalette_234, .tag = 10234}, - { .data = (u8 *) &gBattleAnimSpritePalette_235, .tag = 10235}, - { .data = (u8 *) &gBattleAnimSpritePalette_236, .tag = 10236}, - { .data = (u8 *) &gBattleAnimSpritePalette_237, .tag = 10237}, - { .data = (u8 *) &gBattleAnimSpritePalette_238, .tag = 10238}, - { .data = (u8 *) &gBattleAnimSpritePalette_239, .tag = 10239}, - { .data = (u8 *) &gBattleAnimSpritePalette_240, .tag = 10240}, - { .data = (u8 *) &gBattleAnimSpritePalette_241, .tag = 10241}, - { .data = (u8 *) &gBattleAnimSpritePalette_242, .tag = 10242}, - { .data = (u8 *) &gBattleAnimSpritePalette_243, .tag = 10243}, - { .data = (u8 *) &gBattleAnimSpritePalette_244, .tag = 10244}, - { .data = (u8 *) &gBattleAnimSpritePalette_245, .tag = 10245}, - { .data = (u8 *) &gBattleAnimSpritePalette_245, .tag = 10246}, - { .data = (u8 *) &gBattleAnimSpritePalette_064, .tag = 10247}, - { .data = (u8 *) &gBattleAnimSpritePalette_248, .tag = 10248}, - { .data = (u8 *) &gBattleAnimSpritePalette_249, .tag = 10249}, - { .data = (u8 *) &gBattleAnimSpritePalette_249, .tag = 10250}, - { .data = (u8 *) &gBattleAnimSpritePalette_251, .tag = 10251}, - { .data = (u8 *) &gBattleAnimSpritePalette_252, .tag = 10252}, - { .data = (u8 *) &gBattleAnimSpritePalette_253, .tag = 10253}, - { .data = (u8 *) &gBattleAnimSpritePalette_254, .tag = 10254}, - { .data = (u8 *) &gBattleAnimSpritePalette_255, .tag = 10255}, - { .data = (u8 *) &gBattleAnimSpritePalette_256, .tag = 10256}, - { .data = (u8 *) &gBattleAnimSpritePalette_257, .tag = 10257}, - { .data = (u8 *) &gBattleAnimSpritePalette_258, .tag = 10258}, - { .data = (u8 *) &gBattleAnimSpritePalette_259, .tag = 10259}, - { .data = (u8 *) &gBattleAnimSpritePalette_260, .tag = 10260}, - { .data = (u8 *) &gBattleAnimSpritePalette_261, .tag = 10261}, - { .data = (u8 *) &gBattleAnimSpritePalette_262, .tag = 10262}, - { .data = (u8 *) &gBattleAnimSpritePalette_263, .tag = 10263}, - { .data = (u8 *) &gBattleAnimSpritePalette_264, .tag = 10264}, - { .data = (u8 *) &gBattleAnimSpritePalette_265, .tag = 10265}, - { .data = (u8 *) &gBattleAnimSpritePalette_266, .tag = 10266}, - { .data = (u8 *) &gBattleAnimSpritePalette_267, .tag = 10267}, - { .data = (u8 *) &gBattleAnimSpritePalette_268, .tag = 10268}, - { .data = (u8 *) &gBattleAnimSpritePalette_269, .tag = 10269}, - { .data = (u8 *) &gBattleAnimSpritePalette_270, .tag = 10270}, - { .data = (u8 *) &gBattleAnimSpritePalette_271, .tag = 10271}, - { .data = (u8 *) &gBattleAnimSpritePalette_272, .tag = 10272}, - { .data = (u8 *) &gBattleAnimSpritePalette_272, .tag = 10273}, - { .data = (u8 *) &gBattleAnimSpritePalette_274, .tag = 10274}, - { .data = (u8 *) &gBattleAnimSpritePalette_274, .tag = 10275}, - { .data = (u8 *) &gBattleAnimSpritePalette_274, .tag = 10276}, - { .data = (u8 *) &gBattleAnimSpritePalette_277, .tag = 10277}, - { .data = (u8 *) &gBattleAnimSpritePalette_278, .tag = 10278}, - { .data = (u8 *) &gBattleAnimSpritePalette_279, .tag = 10279}, - { .data = (u8 *) &gBattleAnimSpritePalette_280, .tag = 10280}, - { .data = (u8 *) &gBattleAnimSpritePalette_281, .tag = 10281}, - { .data = (u8 *) &gBattleAnimSpritePalette_282, .tag = 10282}, - { .data = (u8 *) &gBattleAnimSpritePalette_283, .tag = 10283}, - { .data = (u8 *) &gBattleAnimSpritePalette_284, .tag = 10284}, - { .data = (u8 *) &gBattleAnimSpritePalette_285, .tag = 10285}, - { .data = (u8 *) &gBattleAnimSpritePalette_286, .tag = 10286}, - { .data = (u8 *) &gBattleAnimSpritePalette_287, .tag = 10287}, - { .data = (u8 *) &gBattleAnimSpritePalette_288, .tag = 10288}, + { (u8 *) &gBattleAnimSpritePalette_000, 10000}, + { (u8 *) &gBattleAnimSpritePalette_001, 10001}, + { (u8 *) &gBattleAnimSpritePalette_002, 10002}, + { (u8 *) &gBattleAnimSpritePalette_003, 10003}, + { (u8 *) &gBattleAnimSpritePalette_004, 10004}, + { (u8 *) &gBattleAnimSpritePalette_005, 10005}, + { (u8 *) &gBattleAnimSpritePalette_006, 10006}, + { (u8 *) &gBattleAnimSpritePalette_007, 10007}, + { (u8 *) &gBattleAnimSpritePalette_008, 10008}, + { (u8 *) &gBattleAnimSpritePalette_009, 10009}, + { (u8 *) &gBattleAnimSpritePalette_010, 10010}, + { (u8 *) &gBattleAnimSpritePalette_011, 10011}, + { (u8 *) &gBattleAnimSpritePalette_012, 10012}, + { (u8 *) &gBattleAnimSpritePalette_013, 10013}, + { (u8 *) &gBattleAnimSpritePalette_014, 10014}, + { (u8 *) &gBattleAnimSpritePalette_015, 10015}, + { (u8 *) &gBattleAnimSpritePalette_016, 10016}, + { (u8 *) &gBattleAnimSpritePalette_016, 10017}, + { (u8 *) &gBattleAnimSpritePalette_018, 10018}, + { (u8 *) &gBattleAnimSpritePalette_019, 10019}, + { (u8 *) &gBattleAnimSpritePalette_020, 10020}, + { (u8 *) &gBattleAnimSpritePalette_021, 10021}, + { (u8 *) &gBattleAnimSpritePalette_022, 10022}, + { (u8 *) &gBattleAnimSpritePalette_023, 10023}, + { (u8 *) &gBattleAnimSpritePalette_024, 10024}, + { (u8 *) &gBattleAnimSpritePalette_025, 10025}, + { (u8 *) &gBattleAnimSpritePalette_026, 10026}, + { (u8 *) &gBattleAnimSpritePalette_027, 10027}, + { (u8 *) &gBattleAnimSpritePalette_028, 10028}, + { (u8 *) &gBattleAnimSpritePalette_029, 10029}, + { (u8 *) &gBattleAnimSpritePalette_030, 10030}, + { (u8 *) &gBattleAnimSpritePalette_031, 10031}, + { (u8 *) &gBattleAnimSpritePalette_032, 10032}, + { (u8 *) &gBattleAnimSpritePalette_033, 10033}, + { (u8 *) &gBattleAnimSpritePalette_033, 10034}, + { (u8 *) &gBattleAnimSpritePalette_033, 10035}, + { (u8 *) &gBattleAnimSpritePalette_036, 10036}, + { (u8 *) &gBattleAnimSpritePalette_036, 10037}, + { (u8 *) &gBattleAnimSpritePalette_038, 10038}, + { (u8 *) &gBattleAnimSpritePalette_039, 10039}, + { (u8 *) &gBattleAnimSpritePalette_038, 10040}, + { (u8 *) &gBattleAnimSpritePalette_038, 10041}, + { (u8 *) &gBattleAnimSpritePalette_042, 10042}, + { (u8 *) &gBattleAnimSpritePalette_043, 10043}, + { (u8 *) &gBattleAnimSpritePalette_044, 10044}, + { (u8 *) &gBattleAnimSpritePalette_045, 10045}, + { (u8 *) &gBattleAnimSpritePalette_046, 10046}, + { (u8 *) &gBattleAnimSpritePalette_047, 10046}, + { (u8 *) &gBattleAnimSpritePalette_048, 10048}, + { (u8 *) &gBattleAnimSpritePalette_049, 10049}, + { (u8 *) &gBattleAnimSpritePalette_050, 10050}, + { (u8 *) &gBattleAnimSpritePalette_050, 10051}, + { (u8 *) &gBattleAnimSpritePalette_050, 10052}, + { (u8 *) &gBattleAnimSpritePalette_026, 10053}, + { (u8 *) &gBattleAnimSpritePalette_054, 10054}, + { (u8 *) &gBattleAnimSpritePalette_050, 10055}, + { (u8 *) &gBattleAnimSpritePalette_056, 10056}, + { (u8 *) &gBattleAnimSpritePalette_057, 10057}, + { (u8 *) &gBattleAnimSpritePalette_058, 10058}, + { (u8 *) &gBattleAnimSpritePalette_059, 10059}, + { (u8 *) &gBattleAnimSpritePalette_060, 10060}, + { (u8 *) &gBattleAnimSpritePalette_061, 10061}, + { (u8 *) &gBattleAnimSpritePalette_062, 10062}, + { (u8 *) &gBattleAnimSpritePalette_063, 10063}, + { (u8 *) &gBattleAnimSpritePalette_064, 10064}, + { (u8 *) &gBattleAnimSpritePalette_065, 10065}, + { (u8 *) &gBattleAnimSpritePalette_066, 10066}, + { (u8 *) &gBattleAnimSpritePalette_067, 10067}, + { (u8 *) &gBattleAnimSpritePalette_068, 10068}, + { (u8 *) &gBattleAnimSpritePalette_065, 10069}, + { (u8 *) &gBattleAnimSpritePalette_070, 10070}, + { (u8 *) &gBattleAnimSpritePalette_070, 10071}, + { (u8 *) &gBattleAnimSpritePalette_072, 10072}, + { (u8 *) &gBattleAnimSpritePalette_073, 10073}, + { (u8 *) &gBattleAnimSpritePalette_074, 10074}, + { (u8 *) &gBattleAnimSpritePalette_075, 10075}, + { (u8 *) &gBattleAnimSpritePalette_076, 10076}, + { (u8 *) &gBattleAnimSpritePalette_076, 10077}, + { (u8 *) &gBattleAnimSpritePalette_078, 10078}, + { (u8 *) &gBattleAnimSpritePalette_078, 10079}, + { (u8 *) &gBattleAnimSpritePalette_080, 10080}, + { (u8 *) &gBattleAnimSpritePalette_081, 10081}, + { (u8 *) &gBattleAnimSpritePalette_082, 10082}, + { (u8 *) &gBattleAnimSpritePalette_083, 10083}, + { (u8 *) &gBattleAnimSpritePalette_084, 10084}, + { (u8 *) &gBattleAnimSpritePalette_085, 10085}, + { (u8 *) &gBattleAnimSpritePalette_086, 10086}, + { (u8 *) &gBattleAnimSpritePalette_087, 10087}, + { (u8 *) &gBattleAnimSpritePalette_088, 10088}, + { (u8 *) &gBattleAnimSpritePalette_089, 10089}, + { (u8 *) &gBattleAnimSpritePalette_090, 10090}, + { (u8 *) &gBattleAnimSpritePalette_091, 10091}, + { (u8 *) &gBattleAnimSpritePalette_092, 10092}, + { (u8 *) &gBattleAnimSpritePalette_093, 10093}, + { (u8 *) &gBattleAnimSpritePalette_094, 10094}, + { (u8 *) &gBattleAnimSpritePalette_095, 10095}, + { (u8 *) &gBattleAnimSpritePalette_096, 10096}, + { (u8 *) &gBattleAnimSpritePalette_097, 10097}, + { (u8 *) &gBattleAnimSpritePalette_094, 10098}, + { (u8 *) &gBattleAnimSpritePalette_099, 10099}, + { (u8 *) &gBattleAnimSpritePalette_100, 10100}, + { (u8 *) &gBattleAnimSpritePalette_101, 10101}, + { (u8 *) &gBattleAnimSpritePalette_101, 10102}, + { (u8 *) &gBattleAnimSpritePalette_103, 10103}, + { (u8 *) &gBattleAnimSpritePalette_104, 10104}, + { (u8 *) &gBattleAnimSpritePalette_105, 10105}, + { (u8 *) &gBattleAnimSpritePalette_105, 10106}, + { (u8 *) &gBattleAnimSpritePalette_107, 10107}, + { (u8 *) &gBattleAnimSpritePalette_107, 10108}, + { (u8 *) &gBattleAnimSpritePalette_109, 10109}, + { (u8 *) &gBattleAnimSpritePalette_109, 10110}, + { (u8 *) &gBattleAnimSpritePalette_111, 10111}, + { (u8 *) &gBattleAnimSpritePalette_112, 10112}, + { (u8 *) &gBattleAnimSpritePalette_113, 10113}, + { (u8 *) &gBattleAnimSpritePalette_114, 10114}, + { (u8 *) &gBattleAnimSpritePalette_115, 10115}, + { (u8 *) &gBattleAnimSpritePalette_116, 10116}, + { (u8 *) &gBattleAnimSpritePalette_117, 10117}, + { (u8 *) &gBattleAnimSpritePalette_118, 10118}, + { (u8 *) &gBattleAnimSpritePalette_119, 10119}, + { (u8 *) &gBattleAnimSpritePalette_120, 10120}, + { (u8 *) &gBattleAnimSpritePalette_121, 10121}, + { (u8 *) &gBattleAnimSpritePalette_122, 10122}, + { (u8 *) &gBattleAnimSpritePalette_122, 10123}, + { (u8 *) &gBattleAnimSpritePalette_124, 10124}, + { (u8 *) &gBattleAnimSpritePalette_125, 10125}, + { (u8 *) &gBattleAnimSpritePalette_126, 10126}, + { (u8 *) &gBattleAnimSpritePalette_127, 10127}, + { (u8 *) &gBattleAnimSpritePalette_128, 10128}, + { (u8 *) &gBattleAnimSpritePalette_128, 10129}, + { (u8 *) &gBattleAnimSpritePalette_130, 10130}, + { (u8 *) &gBattleAnimSpritePalette_130, 10131}, + { (u8 *) &gBattleAnimSpritePalette_132, 10132}, + { (u8 *) &gBattleAnimSpritePalette_133, 10133}, + { (u8 *) &gBattleAnimSpritePalette_133, 10134}, + { (u8 *) &gBattleAnimSpritePalette_135, 10135}, + { (u8 *) &gBattleAnimSpritePalette_136, 10136}, + { (u8 *) &gBattleAnimSpritePalette_135, 10137}, + { (u8 *) &gBattleAnimSpritePalette_135, 10138}, + { (u8 *) &gBattleAnimSpritePalette_139, 10139}, + { (u8 *) &gBattleAnimSpritePalette_140, 10140}, + { (u8 *) &gBattleAnimSpritePalette_141, 10141}, + { (u8 *) &gBattleAnimSpritePalette_141, 10142}, + { (u8 *) &gBattleAnimSpritePalette_143, 10143}, + { (u8 *) &gBattleAnimSpritePalette_144, 10144}, + { (u8 *) &gBattleAnimSpritePalette_139, 10145}, + { (u8 *) &gBattleAnimSpritePalette_115, 10146}, + { (u8 *) &gBattleAnimSpritePalette_147, 10147}, + { (u8 *) &gBattleAnimSpritePalette_148, 10148}, + { (u8 *) &gBattleAnimSpritePalette_148, 10149}, + { (u8 *) &gBattleAnimSpritePalette_150, 10150}, + { (u8 *) &gBattleAnimSpritePalette_150, 10151}, + { (u8 *) &gBattleAnimSpritePalette_152, 10152}, + { (u8 *) &gBattleAnimSpritePalette_153, 10153}, + { (u8 *) &gBattleAnimSpritePalette_154, 10154}, + { (u8 *) &gBattleAnimSpritePalette_155, 10155}, + { (u8 *) &gBattleAnimSpritePalette_156, 10156}, + { (u8 *) &gBattleAnimSpritePalette_157, 10157}, + { (u8 *) &gBattleAnimSpritePalette_158, 10158}, + { (u8 *) &gBattleAnimSpritePalette_159, 10159}, + { (u8 *) &gBattleAnimSpritePalette_160, 10160}, + { (u8 *) &gBattleAnimSpritePalette_161, 10161}, + { (u8 *) &gBattleAnimSpritePalette_162, 10162}, + { (u8 *) &gBattleAnimSpritePalette_163, 10163}, + { (u8 *) &gBattleAnimSpritePalette_164, 10164}, + { (u8 *) &gBattleAnimSpritePalette_165, 10165}, + { (u8 *) &gBattleAnimSpritePalette_166, 10166}, + { (u8 *) &gBattleAnimSpritePalette_167, 10167}, + { (u8 *) &gBattleAnimSpritePalette_168, 10168}, + { (u8 *) &gBattleAnimSpritePalette_169, 10169}, + { (u8 *) &gBattleAnimSpritePalette_170, 10170}, + { (u8 *) &gBattleAnimSpritePalette_171, 10171}, + { (u8 *) &gBattleAnimSpritePalette_172, 10172}, + { (u8 *) &gBattleAnimSpritePalette_001, 10173}, + { (u8 *) &gBattleAnimSpritePalette_174, 10174}, + { (u8 *) &gBattleAnimSpritePalette_175, 10175}, + { (u8 *) &gBattleAnimSpritePalette_176, 10176}, + { (u8 *) &gBattleAnimSpritePalette_177, 10177}, + { (u8 *) &gBattleAnimSpritePalette_178, 10178}, + { (u8 *) &gBattleAnimSpritePalette_179, 10179}, + { (u8 *) &gBattleAnimSpritePalette_179, 10180}, + { (u8 *) &gBattleAnimSpritePalette_179, 10181}, + { (u8 *) &gBattleAnimSpritePalette_182, 10182}, + { (u8 *) &gBattleAnimSpritePalette_183, 10183}, + { (u8 *) &gBattleAnimSpritePalette_184, 10184}, + { (u8 *) &gBattleAnimSpritePalette_185, 10185}, + { (u8 *) &gBattleAnimSpritePalette_186, 10186}, + { (u8 *) &gBattleAnimSpritePalette_187, 10187}, + { (u8 *) &gBattleAnimSpritePalette_188, 10188}, + { (u8 *) &gBattleAnimSpritePalette_189, 10189}, + { (u8 *) &gBattleAnimSpritePalette_190, 10190}, + { (u8 *) &gBattleAnimSpritePalette_191, 10191}, + { (u8 *) &gBattleAnimSpritePalette_192, 10192}, + { (u8 *) &gBattleAnimSpritePalette_193, 10193}, + { (u8 *) &gBattleAnimSpritePalette_194, 10194}, + { (u8 *) &gBattleAnimSpritePalette_195, 10195}, + { (u8 *) &gBattleAnimSpritePalette_196, 10196}, + { (u8 *) &gBattleAnimSpritePalette_197, 10197}, + { (u8 *) &gBattleAnimSpritePalette_198, 10198}, + { (u8 *) &gBattleAnimSpritePalette_199, 10199}, + { (u8 *) &gBattleAnimSpritePalette_200, 10200}, + { (u8 *) &gBattleAnimSpritePalette_201, 10201}, + { (u8 *) &gBattleAnimSpritePalette_202, 10202}, + { (u8 *) &gBattleAnimSpritePalette_203, 10203}, + { (u8 *) &gBattleAnimSpritePalette_204, 10204}, + { (u8 *) &gBattleAnimSpritePalette_205, 10205}, + { (u8 *) &gBattleAnimSpritePalette_206, 10206}, + { (u8 *) &gBattleAnimSpritePalette_207, 10207}, + { (u8 *) &gBattleAnimSpritePalette_167, 10208}, + { (u8 *) &gBattleAnimSpritePalette_209, 10209}, + { (u8 *) &gBattleAnimSpritePalette_210, 10210}, + { (u8 *) &gBattleAnimSpritePalette_211, 10211}, + { (u8 *) &gBattleAnimSpritePalette_211, 10212}, + { (u8 *) &gBattleAnimSpritePalette_211, 10213}, + { (u8 *) &gBattleAnimSpritePalette_064, 10214}, + { (u8 *) &gBattleAnimSpritePalette_215, 10215}, + { (u8 *) &gBattleAnimSpritePalette_216, 10216}, + { (u8 *) &gBattleAnimSpritePalette_217, 10217}, + { (u8 *) &gBattleAnimSpritePalette_218, 10218}, + { (u8 *) &gBattleAnimSpritePalette_219, 10219}, + { (u8 *) &gBattleAnimSpritePalette_220, 10220}, + { (u8 *) &gBattleAnimSpritePalette_221, 10221}, + { (u8 *) &gBattleAnimSpritePalette_222, 10222}, + { (u8 *) &gBattleAnimSpritePalette_223, 10223}, + { (u8 *) &gBattleAnimSpritePalette_224, 10224}, + { (u8 *) &gBattleAnimSpritePalette_225, 10225}, + { (u8 *) &gBattleAnimSpritePalette_226, 10226}, + { (u8 *) &gBattleAnimSpritePalette_226, 10227}, + { (u8 *) &gBattleAnimSpritePalette_228, 10228}, + { (u8 *) &gBattleAnimSpritePalette_229, 10229}, + { (u8 *) &gBattleAnimSpritePalette_230, 10230}, + { (u8 *) &gBattleAnimSpritePalette_231, 10231}, + { (u8 *) &gBattleAnimSpritePalette_231, 10232}, + { (u8 *) &gBattleAnimSpritePalette_233, 10233}, + { (u8 *) &gBattleAnimSpritePalette_234, 10234}, + { (u8 *) &gBattleAnimSpritePalette_235, 10235}, + { (u8 *) &gBattleAnimSpritePalette_236, 10236}, + { (u8 *) &gBattleAnimSpritePalette_237, 10237}, + { (u8 *) &gBattleAnimSpritePalette_238, 10238}, + { (u8 *) &gBattleAnimSpritePalette_239, 10239}, + { (u8 *) &gBattleAnimSpritePalette_240, 10240}, + { (u8 *) &gBattleAnimSpritePalette_241, 10241}, + { (u8 *) &gBattleAnimSpritePalette_242, 10242}, + { (u8 *) &gBattleAnimSpritePalette_243, 10243}, + { (u8 *) &gBattleAnimSpritePalette_244, 10244}, + { (u8 *) &gBattleAnimSpritePalette_245, 10245}, + { (u8 *) &gBattleAnimSpritePalette_245, 10246}, + { (u8 *) &gBattleAnimSpritePalette_064, 10247}, + { (u8 *) &gBattleAnimSpritePalette_248, 10248}, + { (u8 *) &gBattleAnimSpritePalette_249, 10249}, + { (u8 *) &gBattleAnimSpritePalette_249, 10250}, + { (u8 *) &gBattleAnimSpritePalette_251, 10251}, + { (u8 *) &gBattleAnimSpritePalette_252, 10252}, + { (u8 *) &gBattleAnimSpritePalette_253, 10253}, + { (u8 *) &gBattleAnimSpritePalette_254, 10254}, + { (u8 *) &gBattleAnimSpritePalette_255, 10255}, + { (u8 *) &gBattleAnimSpritePalette_256, 10256}, + { (u8 *) &gBattleAnimSpritePalette_257, 10257}, + { (u8 *) &gBattleAnimSpritePalette_258, 10258}, + { (u8 *) &gBattleAnimSpritePalette_259, 10259}, + { (u8 *) &gBattleAnimSpritePalette_260, 10260}, + { (u8 *) &gBattleAnimSpritePalette_261, 10261}, + { (u8 *) &gBattleAnimSpritePalette_262, 10262}, + { (u8 *) &gBattleAnimSpritePalette_263, 10263}, + { (u8 *) &gBattleAnimSpritePalette_264, 10264}, + { (u8 *) &gBattleAnimSpritePalette_265, 10265}, + { (u8 *) &gBattleAnimSpritePalette_266, 10266}, + { (u8 *) &gBattleAnimSpritePalette_267, 10267}, + { (u8 *) &gBattleAnimSpritePalette_268, 10268}, + { (u8 *) &gBattleAnimSpritePalette_269, 10269}, + { (u8 *) &gBattleAnimSpritePalette_270, 10270}, + { (u8 *) &gBattleAnimSpritePalette_271, 10271}, + { (u8 *) &gBattleAnimSpritePalette_272, 10272}, + { (u8 *) &gBattleAnimSpritePalette_272, 10273}, + { (u8 *) &gBattleAnimSpritePalette_274, 10274}, + { (u8 *) &gBattleAnimSpritePalette_274, 10275}, + { (u8 *) &gBattleAnimSpritePalette_274, 10276}, + { (u8 *) &gBattleAnimSpritePalette_277, 10277}, + { (u8 *) &gBattleAnimSpritePalette_278, 10278}, + { (u8 *) &gBattleAnimSpritePalette_279, 10279}, + { (u8 *) &gBattleAnimSpritePalette_280, 10280}, + { (u8 *) &gBattleAnimSpritePalette_281, 10281}, + { (u8 *) &gBattleAnimSpritePalette_282, 10282}, + { (u8 *) &gBattleAnimSpritePalette_283, 10283}, + { (u8 *) &gBattleAnimSpritePalette_284, 10284}, + { (u8 *) &gBattleAnimSpritePalette_285, 10285}, + { (u8 *) &gBattleAnimSpritePalette_286, 10286}, + { (u8 *) &gBattleAnimSpritePalette_287, 10287}, + { (u8 *) &gBattleAnimSpritePalette_288, 10288}, }; const struct BattleAnimBackground gBattleAnimBackgroundTable[] = diff --git a/src/data/graphics.h b/src/data/graphics.h deleted file mode 100644 index d305c4afb..000000000 --- a/src/data/graphics.h +++ /dev/null @@ -1,338 +0,0 @@ -extern struct CompressedSpritePalette gBattleAnimSpritePalette_000; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_001; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_002; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_003; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_004; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_005; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_006; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_007; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_008; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_009; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_010; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_011; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_012; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_013; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_014; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_015; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_016; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_016; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_018; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_019; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_020; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_021; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_022; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_023; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_024; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_025; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_026; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_027; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_028; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_029; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_030; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_031; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_032; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_033; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_033; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_033; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_036; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_036; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_038; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_039; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_038; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_038; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_042; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_043; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_044; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_045; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_046; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_047; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_048; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_049; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_026; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_054; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_050; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_056; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_057; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_058; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_059; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_060; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_061; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_062; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_063; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_064; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_065; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_066; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_067; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_068; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_065; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_070; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_070; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_072; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_073; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_074; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_075; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_076; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_076; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_078; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_078; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_080; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_081; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_082; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_083; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_084; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_085; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_086; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_087; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_088; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_089; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_090; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_091; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_092; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_093; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_094; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_095; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_096; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_097; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_094; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_099; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_100; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_101; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_101; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_103; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_104; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_105; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_105; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_107; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_107; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_109; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_109; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_111; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_112; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_113; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_114; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_115; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_116; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_117; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_118; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_119; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_120; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_121; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_122; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_122; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_124; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_125; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_126; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_127; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_128; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_128; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_130; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_130; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_132; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_133; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_133; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_135; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_136; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_135; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_135; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_139; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_140; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_141; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_141; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_143; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_144; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_139; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_115; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_147; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_148; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_148; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_150; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_150; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_152; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_153; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_154; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_155; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_156; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_157; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_158; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_159; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_160; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_161; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_162; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_163; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_164; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_165; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_166; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_167; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_168; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_169; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_170; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_171; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_172; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_001; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_174; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_175; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_176; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_177; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_178; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_179; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_179; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_179; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_182; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_183; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_184; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_185; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_186; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_187; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_188; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_189; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_190; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_191; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_192; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_193; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_194; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_195; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_196; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_197; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_198; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_199; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_200; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_201; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_202; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_203; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_204; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_205; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_206; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_207; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_167; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_209; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_210; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_211; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_211; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_211; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_064; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_215; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_216; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_217; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_218; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_219; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_220; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_221; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_222; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_223; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_224; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_225; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_226; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_226; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_228; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_229; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_230; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_231; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_231; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_233; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_234; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_235; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_236; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_237; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_238; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_239; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_240; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_241; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_242; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_243; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_244; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_245; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_245; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_064; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_248; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_249; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_249; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_251; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_252; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_253; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_254; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_255; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_256; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_257; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_258; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_259; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_260; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_261; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_262; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_263; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_264; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_265; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_266; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_267; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_268; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_269; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_270; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_271; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_272; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_272; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_274; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_274; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_274; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_277; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_278; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_279; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_280; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_281; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_282; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_283; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_284; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_285; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_286; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_287; -extern struct CompressedSpritePalette gBattleAnimSpritePalette_288; - -extern struct BattleAnimBackground gBattleAnimBackgroundImage_00; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_02; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_03; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_04; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_07; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_09; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_11; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_12; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_15; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_16; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_17; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_20; -extern struct BattleAnimBackground gBattleAnimBackgroundImage_21; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_00; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_02; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_03; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_04; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_07; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_09; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_11; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_12; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_15; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_16; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_17; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_18; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_20; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_21; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_22; -extern struct BattleAnimBackground gBattleAnimBackgroundPalette_24; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_00; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_02; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_03; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_04; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_05; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_06; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_07; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_08; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_09; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_10; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_11; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_12; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_13; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_14; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_15; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_16; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_17; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_20; -extern struct BattleAnimBackground gBattleAnimBackgroundTilemap_21; \ No newline at end of file -- cgit v1.2.3 From daa0a98ee0129be1797274de318a35df30d39020 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jan 2018 20:07:32 -0500 Subject: through sub_809A23C --- src/pokemon/pokemon_storage_system_4.c | 90 ++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 1ccaa01f1..836a3433f 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -2,6 +2,8 @@ // Includes #include "global.h" #include "palette.h" +#include "text.h" +#include "menu.h" #include "pokemon_storage_system.h" // Static type declarations @@ -35,6 +37,7 @@ void sub_809A23C(u8 boxId); void sub_809A3D0(u8 boxId, s8 a1); void sub_809A598(void); void sub_809A654(void); +s16 sub_809A6D0(u8 width); void sub_809A6DC(void); void sub_809A774(s8 a0); void sub_809A810(void); @@ -757,3 +760,90 @@ __attribute__((naked)) void sub_809A14C(u16 *vdest) "_0809A1B8: .4byte 0xfffff7c0"); } #endif + +void sub_809A1BC(const u8 *a0, const u8 *text) +{ + u8 *r5 = gUnknown_083B6DB8; + DmaClear16(3, r5, 0x200); + Text_InitWindow8004E3C(&gWindowTemplate_81E6D38, r5, text); + DmaCopy16(3, r5 + 0x000, a0 + 0x000, 0x80); + DmaCopy16(3, r5 + 0x100, a0 + 0x080, 0x80); + DmaCopy16(3, r5 + 0x080, a0 + 0x100, 0x80); + DmaCopy16(3, r5 + 0x180, a0 + 0x180, 0x80); +} + +const struct SpriteTemplate gSpriteTemplate_83BB2B8; + +void sub_809A23C(u8 boxId) +{ + u8 tagIdx; + s16 r6; + u16 i; + + struct SpriteSheet spriteSheet = {gPokemonStorageSystemPtr->unk_08ca, 0x200, 3}; + struct SpritePalette palettes[] = { + {gPokemonStorageSystemPtr->unk_0ccc, 0xdac8}, + {gPokemonStorageSystemPtr->unk_0ccc, 0xdac9}, + {} + }; + + u16 wallpaper = gPokemonStorage.wallpaper[boxId]; + gPokemonStorageSystemPtr->unk_0ccc[14] = gUnknown_083BB0A8[wallpaper][0]; + gPokemonStorageSystemPtr->unk_0ccc[15] = gUnknown_083BB0A8[wallpaper][1]; + LoadSpritePalettes(palettes); + gPokemonStorageSystemPtr->unk_0d08 = 0x3f0; + tagIdx = IndexOfSpritePaletteTag(0xdac8); + gPokemonStorageSystemPtr->unk_0cec = 0x10e + 16 * tagIdx; + gPokemonStorageSystemPtr->unk_0d08 |= 0x10000 << tagIdx; + tagIdx = IndexOfSpritePaletteTag(0xdac9); + gPokemonStorageSystemPtr->unk_0cee = 0x10e + 16 * tagIdx; + gPokemonStorageSystemPtr->unk_0d08 |= 0x10000 << tagIdx; + sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]); + LoadSpriteSheet(&spriteSheet); + r6 = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId])); + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2B8, r6 + i * 32, 0x1c, 23); + gPokemonStorageSystemPtr->unk_0cf0[i] = gSprites + spriteId; + StartSpriteAnim(gPokemonStorageSystemPtr->unk_0cf0[i], i); + } + gPokemonStorageSystemPtr->unk_0cca = 0; +} + + +const u16 PCPal_Arrow[] = INCBIN_U16("graphics/pokemon_storage/arrow.gbapal"); +const u8 PCGfx_Arrow[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp"); + +const struct SpriteSheet gUnknown_083BB288 = {PCGfx_Arrow, 0x80, 6}; +const struct SpritePalette gUnknown_083BB290 = {PCPal_Arrow, 0xdacf}; + +const struct OamData gOamData_83BB298 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 2, + .priority = 2 +}; + +const union AnimCmd gSpriteAnim_83BB2A0[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83BB2A8[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83BB2B0[] = { + gSpriteAnim_83BB2A0, + gSpriteAnim_83BB2A8 +}; + +const struct SpriteTemplate gSpriteTemplate_83BB2B8 = { + 3, + 0xdac8, + &gOamData_83BB298, + gSpriteAnimTable_83BB2B0, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; -- cgit v1.2.3 From 94a1fbf1d90bb9d033b112c97d58f0885582578e Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 14 Jan 2018 02:42:10 +0100 Subject: finished decompiling data/battle_anim.s --- src/battle/battle_anim.c | 1845 +++++++++++++++++++++++++++++++++++++++++++++- src/data/battle_anim.h | 326 -------- 2 files changed, 1842 insertions(+), 329 deletions(-) delete mode 100644 src/data/battle_anim.h (limited to 'src') diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 05a2e5752..5239e239d 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -13,7 +13,7 @@ #include "sprite.h" #include "task.h" #include "ewram.h" -#include "../data/battle_anim.h" +#include "graphics.h" // sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. #define GET_TRUE_SPRITE_INDEX(i) (i - 10000) @@ -21,6 +21,1847 @@ #define ANIM_SPRITE_INDEX_COUNT 8 #define ANIM_ARGS_COUNT 8 +const struct OamData gOamData_837DF24 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF2C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF34 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF3C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF44 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF4C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF54 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF5C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF64 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF6C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF74 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF7C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF84 = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF8C = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF94 = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DF9C = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFA4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFAC = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFB4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFBC = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFC4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFCC = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFD4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFDC = +{ + .y = 0, + .affineMode = 1, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFE4 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFEC = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFF4 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837DFFC = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837D004 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837D00C = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E014 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E01C = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E024 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E02C = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E034 = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E03C = +{ + .y = 0, + .affineMode = 3, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E044 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E04C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E054 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E05C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E064 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E06C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E074 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E07C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E084 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E08C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E094 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E09C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0A4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0AC = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0B4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0BC = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0C4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0CC = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0D4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0DC = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0E4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0EC = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0F4 = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E0FC = +{ + .y = 0, + .affineMode = 1, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E104 = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E10C = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E114 = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E11C = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E124 = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E12C = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E134 = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E13C = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E144 = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E14C = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E154 = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct OamData gOamData_837E15C = +{ + .y = 0, + .affineMode = 3, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct CompressedSpriteSheet gBattleAnimPicTable[] = +{ + { (u8 *) &gBattleAnimSpriteSheet_000, 0x200, 10000 }, + { (u8 *) &gBattleAnimSpriteSheet_001, 0x300, 10001 }, + { (u8 *) &gBattleAnimSpriteSheet_002, 0x200, 10002 }, + { (u8 *) &gBattleAnimSpriteSheet_003, 0x100, 10003 }, + { (u8 *) &gBattleAnimSpriteSheet_004, 0x200, 10004 }, + { (u8 *) &gBattleAnimSpriteSheet_005, 0x400, 10005 }, + { (u8 *) &gBattleAnimSpriteSheet_006, 0x180, 10006 }, + { (u8 *) &gBattleAnimSpriteSheet_007, 0x800, 10007 }, + { (u8 *) &gBattleAnimSpriteSheet_008, 0x20, 10008 }, + { (u8 *) &gBattleAnimSpriteSheet_009, 0x400, 10009 }, + { (u8 *) &gBattleAnimSpriteSheet_010, 0x1200, 10010 }, + { (u8 *) &gBattleAnimSpriteSheet_011, 0x180, 10011 }, + { (u8 *) &gBattleAnimSpriteSheet_012, 0x80, 10012 }, + { (u8 *) &gBattleAnimSpriteSheet_013, 0x80, 10013 }, + { (u8 *) &gBattleAnimSpriteSheet_014, 0x280, 10014 }, + { (u8 *) &gBattleAnimSpriteSheet_015, 0x80, 10015 }, + { (u8 *) &gBattleAnimSpriteSheet_016, 0x100, 10016 }, + { (u8 *) &gBattleAnimSpriteSheet_017, 0x20, 10017 }, + { (u8 *) &gBattleAnimSpriteSheet_018, 0x80, 10018 }, + { (u8 *) &gBattleAnimSpriteSheet_019, 0x400, 10019 }, + { (u8 *) &gBattleAnimSpriteSheet_020, 0x200, 10020 }, + { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10021 }, + { (u8 *) &gBattleAnimSpriteSheet_021, 0xA00, 10022 }, + { (u8 *) &gBattleAnimSpriteSheet_023, 0x380, 10023 }, + { (u8 *) &gBattleAnimSpriteSheet_024, 0x300, 10024 }, + { (u8 *) &gBattleAnimSpriteSheet_025, 0xA00, 10025 }, + { (u8 *) &gBattleAnimSpriteSheet_026, 0xA00, 10026 }, + { (u8 *) &gBattleAnimSpriteSheet_027, 0xA00, 10027 }, + { (u8 *) &gBattleAnimSpriteSheet_028, 0xA00, 10028 }, + { (u8 *) &gBattleAnimSpriteSheet_029, 0xA00, 10029 }, + { (u8 *) &gBattleAnimSpriteSheet_030, 0xA00, 10030 }, + { (u8 *) &gBattleAnimSpriteSheet_031, 0xE00, 10031 }, + { (u8 *) &gBattleAnimSpriteSheet_032, 0x380, 10032 }, + { (u8 *) &gBattleAnimSpriteSheet_033, 0x1000, 10033 }, + { (u8 *) &gBattleAnimSpriteSheet_034, 0x800, 10034 }, + { (u8 *) &gBattleAnimSpriteSheet_035, 0xA00, 10035 }, + { (u8 *) &gBattleAnimSpriteSheet_036, 0x800, 10036 }, + { (u8 *) &gBattleAnimSpriteSheet_037, 0xA00, 10037 }, + { (u8 *) &gBattleAnimSpriteSheet_038, 0xA00, 10038 }, + { (u8 *) &gBattleAnimSpriteSheet_039, 0xA00, 10039 }, + { (u8 *) &gBattleAnimSpriteSheet_040, 0xA00, 10040 }, + { (u8 *) &gBattleAnimSpriteSheet_041, 0xA00, 10041 }, + { (u8 *) &gBattleAnimSpriteSheet_042, 0xA00, 10042 }, + { (u8 *) &gBattleAnimSpriteSheet_043, 0xA00, 10043 }, + { (u8 *) &gBattleAnimSpriteSheet_044, 0xA00, 10044 }, + { (u8 *) &gBattleAnimSpriteSheet_045, 0xA00, 10045 }, + { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10046 }, + { (u8 *) &gBattleAnimSpriteSheet_046, 0x1000, 10047 }, + { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10048 }, + { (u8 *) &gBattleAnimSpriteSheet_048, 0x1000, 10049 }, + { (u8 *) &gBattleAnimSpriteSheet_050, 0x200, 10050 }, + { (u8 *) &gBattleAnimSpriteSheet_051, 0x200, 10051 }, + { (u8 *) &gBattleAnimSpriteSheet_052, 0x200, 10052 }, + { (u8 *) &gBattleAnimSpriteSheet_053, 0x800, 10053 }, + { (u8 *) &gBattleAnimSpriteSheet_054, 0x80, 10054 }, + { (u8 *) &gBattleAnimSpriteSheet_055, 0x200, 10055 }, + { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10056 }, + { (u8 *) &gBattleAnimSpriteSheet_057, 0x180, 10057 }, + { (u8 *) &gBattleAnimSpriteSheet_058, 0xC00, 10058 }, + { (u8 *) &gBattleAnimSpriteSheet_059, 0x100, 10059 }, + { (u8 *) &gBattleAnimSpriteSheet_060, 0x40, 10060 }, + { (u8 *) &gBattleAnimSpriteSheet_061, 0x180, 10061 }, + { (u8 *) &gBattleAnimSpriteSheet_062, 0x800, 10062 }, + { (u8 *) &gBattleAnimSpriteSheet_063, 0x480, 10063 }, + { (u8 *) &gBattleAnimSpriteSheet_064, 0x200, 10064 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10065 }, + { (u8 *) &gBattleAnimSpriteSheet_066, 0x100, 10066 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10067 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10068 }, + { (u8 *) &gBattleAnimSpriteSheet_065, 0x200, 10069 }, + { (u8 *) &gBattleAnimSpriteSheet_070, 0x200, 10070 }, + { (u8 *) &gBattleAnimSpriteSheet_071, 0xA00, 10071 }, + { (u8 *) &gBattleAnimSpriteSheet_072, 0x300, 10072 }, + { (u8 *) &gBattleAnimSpriteSheet_073, 0x180, 10073 }, + { (u8 *) &gBattleAnimSpriteSheet_074, 0xA0, 10074 }, + { (u8 *) &gBattleAnimSpriteSheet_075, 0x700, 10075 }, + { (u8 *) &gBattleAnimSpriteSheet_076, 0x400, 10076 }, + { (u8 *) &gBattleAnimSpriteSheet_077, 0x200, 10077 }, + { (u8 *) &gBattleAnimSpriteSheet_078, 0x300, 10078 }, + { (u8 *) &gBattleAnimSpriteSheet_079, 0xC00, 10079 }, + { (u8 *) &gBattleAnimSpriteSheet_080, 0xA00, 10080 }, + { (u8 *) &gBattleAnimSpriteSheet_081, 0x80, 10081 }, + { (u8 *) &gBattleAnimSpriteSheet_082, 0x40, 10082 }, + { (u8 *) &gBattleAnimSpriteSheet_083, 0xE00, 10083 }, + { (u8 *) &gBattleAnimSpriteSheet_084, 0xE00, 10084 }, + { (u8 *) &gBattleAnimSpriteSheet_085, 0x280, 10085 }, + { (u8 *) &gBattleAnimSpriteSheet_086, 0x200, 10086 }, + { (u8 *) &gBattleAnimSpriteSheet_087, 0x80, 10087 }, + { (u8 *) &gBattleAnimSpriteSheet_088, 0xC0, 10088 }, + { (u8 *) &gBattleAnimSpriteSheet_089, 0xA00, 10089 }, + { (u8 *) &gBattleAnimSpriteSheet_090, 0x200, 10090 }, + { (u8 *) &gBattleAnimSpriteSheet_091, 0x180, 10091 }, + { (u8 *) &gBattleAnimSpriteSheet_092, 0x80, 10092 }, + { (u8 *) &gBattleAnimSpriteSheet_093, 0x1000, 10093 }, + { (u8 *) &gBattleAnimSpriteSheet_094, 0xA00, 10094 }, + { (u8 *) &gBattleAnimSpriteSheet_095, 0x180, 10095 }, + { (u8 *) &gBattleAnimSpriteSheet_096, 0x380, 10096 }, + { (u8 *) &gBattleAnimSpriteSheet_097, 0xC00, 10097 }, + { (u8 *) &gBattleAnimSpriteSheet_098, 0x200, 10098 }, + { (u8 *) &gBattleAnimSpriteSheet_099, 0x200, 10099 }, + { (u8 *) &gBattleAnimSpriteSheet_100, 0x200, 10100 }, + { (u8 *) &gBattleAnimSpriteSheet_101, 0x200, 10101 }, + { (u8 *) &gBattleAnimSpriteSheet_102, 0x400, 10102 }, + { (u8 *) &gBattleAnimSpriteSheet_103, 0x80, 10103 }, + { (u8 *) &gBattleAnimSpriteSheet_104, 0x400, 10104 }, + { (u8 *) &gBattleAnimSpriteSheet_105, 0xC00, 10105 }, + { (u8 *) &gBattleAnimSpriteSheet_106, 0x200, 10106 }, + { (u8 *) &gBattleAnimSpriteSheet_107, 0x1000, 10107 }, + { (u8 *) &gBattleAnimSpriteSheet_108, 0xA00, 10108 }, + { (u8 *) &gBattleAnimSpriteSheet_109, 0x20, 10109 }, + { (u8 *) &gBattleAnimSpriteSheet_110, 0xE00, 10110 }, + { (u8 *) &gBattleAnimSpriteSheet_111, 0x80, 10111 }, + { (u8 *) &gBattleAnimSpriteSheet_112, 0xA00, 10112 }, + { (u8 *) &gBattleAnimSpriteSheet_113, 0x400, 10113 }, + { (u8 *) &gBattleAnimSpriteSheet_114, 0x200, 10114 }, + { (u8 *) &gBattleAnimSpriteSheet_115, 0x700, 10115 }, + { (u8 *) &gBattleAnimSpriteSheet_116, 0x800, 10116 }, + { (u8 *) &gBattleAnimSpriteSheet_117, 0xA00, 10117 }, + { (u8 *) &gBattleAnimSpriteSheet_118, 0x600, 10118 }, + { (u8 *) &gBattleAnimSpriteSheet_119, 0x800, 10119 }, + { (u8 *) &gBattleAnimSpriteSheet_120, 0x200, 10120 }, + { (u8 *) &gBattleAnimSpriteSheet_121, 0x40, 10121 }, + { (u8 *) &gBattleAnimSpriteSheet_122, 0x180, 10122 }, + { (u8 *) &gBattleAnimSpriteSheet_123, 0x600, 10123 }, + { (u8 *) &gBattleAnimSpriteSheet_124, 0x600, 10124 }, + { (u8 *) &gBattleAnimSpriteSheet_125, 0x200, 10125 }, + { (u8 *) &gBattleAnimSpriteSheet_126, 0x80, 10126 }, + { (u8 *) &gBattleAnimSpriteSheet_127, 0x200, 10127 }, + { (u8 *) &gBattleAnimSpriteSheet_128, 0x800, 10128 }, + { (u8 *) &gBattleAnimSpriteSheet_129, 0x80, 10129 }, + { (u8 *) &gBattleAnimSpriteSheet_130, 0xA00, 10130 }, + { (u8 *) &gBattleAnimSpriteSheet_131, 0x280, 10131 }, + { (u8 *) &gBattleAnimSpriteSheet_132, 0x280, 10132 }, + { (u8 *) &gBattleAnimSpriteSheet_133, 0x100, 10133 }, + { (u8 *) &gBattleAnimSpriteSheet_134, 0x200, 10134 }, + { (u8 *) &gBattleAnimSpriteSheet_135, 0x200, 10135 }, + { (u8 *) &gBattleAnimSpriteSheet_136, 0x20, 10136 }, + { (u8 *) &gBattleAnimSpriteSheet_137, 0xA00, 10137 }, + { (u8 *) &gBattleAnimSpriteSheet_138, 0x800, 10138 }, + { (u8 *) &gBattleAnimSpriteSheet_139, 0x800, 10139 }, + { (u8 *) &gBattleAnimSpriteSheet_140, 0xC0, 10140 }, + { (u8 *) &gBattleAnimSpriteSheet_141, 0x1C0, 10141 }, + { (u8 *) &gBattleAnimSpriteSheet_142, 0x100, 10142 }, + { (u8 *) &gBattleAnimSpriteSheet_143, 0x800, 10143 }, + { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10144 }, + { (u8 *) &gBattleAnimSpriteSheet_145, 0x800, 10145 }, + { (u8 *) &gBattleAnimSpriteSheet_146, 0x180, 10146 }, + { (u8 *) &gBattleAnimSpriteSheet_147, 0x180, 10147 }, + { (u8 *) &gBattleAnimSpriteSheet_148, 0x200, 10148 }, + { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10149 }, + { (u8 *) &gBattleAnimSpriteSheet_150, 0x180, 10150 }, + { (u8 *) &gBattleAnimSpriteSheet_151, 0x400, 10151 }, + { (u8 *) &gBattleAnimSpriteSheet_152, 0x80, 10152 }, + { (u8 *) &gBattleAnimSpriteSheet_153, 0x100, 10153 }, + { (u8 *) &gBattleAnimSpriteSheet_154, 0x100, 10154 }, + { (u8 *) &gBattleAnimSpriteSheet_155, 0x140, 10155 }, + { (u8 *) &gBattleAnimSpriteSheet_156, 0x800, 10156 }, + { (u8 *) &gBattleAnimSpriteSheet_157, 0x200, 10157 }, + { (u8 *) &gBattleAnimSpriteSheet_158, 0x100, 10158 }, + { (u8 *) &gBattleAnimSpriteSheet_159, 0xA0, 10159 }, + { (u8 *) &gBattleAnimSpriteSheet_160, 0x100, 10160 }, + { (u8 *) &gBattleAnimSpriteSheet_161, 0x80, 10161 }, + { (u8 *) &gBattleAnimSpriteSheet_162, 0x300, 10162 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10163 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10164 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10165 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10166 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10167 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10168 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10169 }, + { (u8 *) &gBattleAnimSpriteSheet_166, 0x800, 10170 }, + { (u8 *) &gBattleAnimSpriteSheet_171, 0x80, 10171 }, + { (u8 *) &gBattleAnimSpriteSheet_144, 0x200, 10172 }, + { (u8 *) &gBattleAnimSpriteSheet_173, 0x200, 10173 }, + { (u8 *) &gBattleAnimSpriteSheet_174, 0x200, 10174 }, + { (u8 *) &gBattleAnimSpriteSheet_175, 0x80, 10175 }, + { (u8 *) &gBattleAnimSpriteSheet_176, 0x200, 10176 }, + { (u8 *) &gBattleAnimSpriteSheet_177, 0x500, 10177 }, + { (u8 *) &gBattleAnimSpriteSheet_178, 0x800, 10178 }, + { (u8 *) &gBattleAnimSpriteSheet_179, 0x400, 10179 }, + { (u8 *) &gBattleAnimSpriteSheet_180, 0x20, 10180 }, + { (u8 *) &gBattleAnimSpriteSheet_181, 0x800, 10181 }, + { (u8 *) &gBattleAnimSpriteSheet_182, 0x100, 10182 }, + { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10183 }, + { (u8 *) &gBattleAnimSpriteSheet_184, 0x400, 10184 }, + { (u8 *) &gBattleAnimSpriteSheet_185, 0xA00, 10185 }, + { (u8 *) &gBattleAnimSpriteSheet_186, 0x1000, 10186 }, + { (u8 *) &gBattleAnimSpriteSheet_187, 0x800, 10187 }, + { (u8 *) &gBattleAnimSpriteSheet_188, 0x400, 10188 }, + { (u8 *) &gBattleAnimSpriteSheet_189, 0x200, 10189 }, + { (u8 *) &gBattleAnimSpriteSheet_190, 0x800, 10190 }, + { (u8 *) &gBattleAnimSpriteSheet_191, 0x800, 10191 }, + { (u8 *) &gBattleAnimSpriteSheet_192, 0x800, 10192 }, + { (u8 *) &gBattleAnimSpriteSheet_193, 0x200, 10193 }, + { (u8 *) &gBattleAnimSpriteSheet_194, 0x800, 10194 }, + { (u8 *) &gBattleAnimSpriteSheet_195, 0x200, 10195 }, + { (u8 *) &gBattleAnimSpriteSheet_196, 0x800, 10196 }, + { (u8 *) &gBattleAnimSpriteSheet_197, 0x200, 10197 }, + { (u8 *) &gBattleAnimSpriteSheet_198, 0x800, 10198 }, + { (u8 *) &gBattleAnimSpriteSheet_199, 0x400, 10199 }, + { (u8 *) &gBattleAnimSpriteSheet_200, 0x200, 10200 }, + { (u8 *) &gBattleAnimSpriteSheet_201, 0xA80, 10201 }, + { (u8 *) &gBattleAnimSpriteSheet_202, 0x600, 10202 }, + { (u8 *) &gBattleAnimSpriteSheet_203, 0x800, 10203 }, + { (u8 *) &gBattleAnimSpriteSheet_204, 0x200, 10204 }, + { (u8 *) &gBattleAnimSpriteSheet_205, 0x600, 10205 }, + { (u8 *) &gBattleAnimSpriteSheet_206, 0x800, 10206 }, + { (u8 *) &gBattleAnimSpriteSheet_207, 0x180, 10207 }, + { (u8 *) &gBattleAnimSpriteSheet_208, 0x800, 10208 }, + { (u8 *) &gBattleAnimSpriteSheet_209, 0x800, 10209 }, + { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10210 }, + { (u8 *) &gBattleAnimSpriteSheet_211, 0x80, 10211 }, + { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10212 }, + { (u8 *) &gBattleAnimSpriteSheet_213, 0x800, 10213 }, + { (u8 *) &gBattleAnimSpriteSheet_214, 0x600, 10214 }, + { (u8 *) &gBattleAnimSpriteSheet_215, 0x600, 10215 }, + { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10216 }, + { (u8 *) &gBattleAnimSpriteSheet_217, 0x80, 10217 }, + { (u8 *) &gBattleAnimSpriteSheet_218, 0x180, 10218 }, + { (u8 *) &gBattleAnimSpriteSheet_210, 0x80, 10219 }, + { (u8 *) &gBattleAnimSpriteSheet_220, 0x200, 10220 }, + { (u8 *) &gBattleAnimSpriteSheet_221, 0x400, 10221 }, + { (u8 *) &gBattleAnimSpriteSheet_222, 0xA00, 10222 }, + { (u8 *) &gBattleAnimSpriteSheet_223, 0x800, 10223 }, + { (u8 *) &gBattleAnimSpriteSheet_224, 0x200, 10224 }, + { (u8 *) &gBattleAnimSpriteSheet_225, 0x400, 10225 }, + { (u8 *) &gBattleAnimSpriteSheet_226, 0x80, 10226 }, + { (u8 *) &gBattleAnimSpriteSheet_227, 0x800, 10227 }, + { (u8 *) &gBattleAnimSpriteSheet_228, 0x200, 10228 }, + { (u8 *) &gBattleAnimSpriteSheet_229, 0x300, 10229 }, + { (u8 *) &gBattleAnimSpriteSheet_230, 0x800, 10230 }, + { (u8 *) &gBattleAnimSpriteSheet_231, 0x380, 10231 }, + { (u8 *) &gBattleAnimSpriteSheet_232, 0x800, 10232 }, + { (u8 *) &gBattleAnimSpriteSheet_233, 0xC0, 10233 }, + { (u8 *) &gBattleAnimSpriteSheet_234, 0x800, 10234 }, + { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10235 }, + { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10236 }, + { (u8 *) &gBattleAnimSpriteSheet_235, 0x60, 10237 }, + { (u8 *) &gBattleAnimSpriteSheet_238, 0x80, 10238 }, + { (u8 *) &gBattleAnimSpriteSheet_239, 0x180, 10239 }, + { (u8 *) &gBattleAnimSpriteSheet_240, 0x180, 10240 }, + { (u8 *) &gBattleAnimSpriteSheet_241, 0x200, 10241 }, + { (u8 *) &gBattleAnimSpriteSheet_242, 0x200, 10242 }, + { (u8 *) &gBattleAnimSpriteSheet_243, 0x20, 10243 }, + { (u8 *) &gBattleAnimSpriteSheet_244, 0x400, 10244 }, + { (u8 *) &gBattleAnimSpriteSheet_245, 0x600, 10245 }, + { (u8 *) &gBattleAnimSpriteSheet_246, 0x1000, 10246 }, + { (u8 *) &gBattleAnimSpriteSheet_247, 0x400, 10247 }, + { (u8 *) &gBattleAnimSpriteSheet_248, 0x20, 10248 }, + { (u8 *) &gBattleAnimSpriteSheet_249, 0x80, 10249 }, + { (u8 *) &gBattleAnimSpriteSheet_250, 0x800, 10250 }, + { (u8 *) &gBattleAnimSpriteSheet_251, 0x80, 10251 }, + { (u8 *) &gBattleAnimSpriteSheet_252, 0x200, 10252 }, + { (u8 *) &gBattleAnimSpriteSheet_253, 0x400, 10253 }, + { (u8 *) &gBattleAnimSpriteSheet_254, 0x200, 10254 }, + { (u8 *) &gBattleAnimSpriteSheet_255, 0x200, 10255 }, + { (u8 *) &gBattleAnimSpriteSheet_256, 0x800, 10256 }, + { (u8 *) &gBattleAnimSpriteSheet_257, 0x280, 10257 }, + { (u8 *) &gBattleAnimSpriteSheet_258, 0x200, 10258 }, + { (u8 *) &gBattleAnimSpriteSheet_149, 0x200, 10259 }, + { (u8 *) &gBattleAnimSpriteSheet_260, 0x400, 10260 }, + { (u8 *) &gBattleAnimSpriteSheet_261, 0x200, 10261 }, + { (u8 *) &gBattleAnimSpriteSheet_262, 0x200, 10262 }, + { (u8 *) &gBattleAnimSpriteSheet_263, 0x80, 10263 }, + { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10264 }, + { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10265 }, + { (u8 *) &gBattleAnimSpriteSheet_266, 0x80, 10266 }, + { (u8 *) &gBattleAnimSpriteSheet_212, 0x800, 10267 }, + { (u8 *) &gBattleAnimSpriteSheet_264, 0x20, 10268 }, + { (u8 *) &gBattleAnimSpriteSheet_269, 0x80, 10269 }, + { (u8 *) &gBattleAnimSpriteSheet_270, 0x400, 10270 }, + { (u8 *) &gBattleAnimSpriteSheet_271, 0x80, 10271 }, + { (u8 *) &gBattleAnimSpriteSheet_272, 0x800, 10272 }, + { (u8 *) &gBattleAnimSpriteSheet_273, 0x20, 10273 }, + { (u8 *) &gBattleAnimSpriteSheet_274, 0x800, 10274 }, + { (u8 *) &gBattleAnimSpriteSheet_275, 0x800, 10275 }, + { (u8 *) &gBattleAnimSpriteSheet_276, 0x800, 10276 }, + { (u8 *) &gBattleAnimSpriteSheet_277, 0x1000, 10277 }, + { (u8 *) &gBattleAnimSpriteSheet_278, 0x800, 10278 }, + { (u8 *) &gBattleAnimSpriteSheet_279, 0xA0, 10279 }, + { (u8 *) &gBattleAnimSpriteSheet_280, 0x800, 10280 }, + { (u8 *) &gBattleAnimSpriteSheet_281, 0x200, 10281 }, + { (u8 *) &gBattleAnimSpriteSheet_282, 0x600, 10282 }, + { (u8 *) &gBattleAnimSpriteSheet_283, 0x200, 10283 }, + { (u8 *) &gBattleAnimSpriteSheet_284, 0x800, 10284 }, + { (u8 *) &gBattleAnimSpriteSheet_285, 0x200, 10285 }, + { (u8 *) &gBattleAnimSpriteSheet_183, 0x800, 10286 }, + { (u8 *) &gBattleAnimSpriteSheet_056, 0x1000, 10287 }, + { (u8 *) &gBattleAnimSpriteSheet_163, 0x100, 10288 }, +}; + +const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +{ + { (u8 *) &gBattleAnimSpritePalette_000, 10000 }, + { (u8 *) &gBattleAnimSpritePalette_001, 10001 }, + { (u8 *) &gBattleAnimSpritePalette_002, 10002 }, + { (u8 *) &gBattleAnimSpritePalette_003, 10003 }, + { (u8 *) &gBattleAnimSpritePalette_004, 10004 }, + { (u8 *) &gBattleAnimSpritePalette_005, 10005 }, + { (u8 *) &gBattleAnimSpritePalette_006, 10006 }, + { (u8 *) &gBattleAnimSpritePalette_007, 10007 }, + { (u8 *) &gBattleAnimSpritePalette_008, 10008 }, + { (u8 *) &gBattleAnimSpritePalette_009, 10009 }, + { (u8 *) &gBattleAnimSpritePalette_010, 10010 }, + { (u8 *) &gBattleAnimSpritePalette_011, 10011 }, + { (u8 *) &gBattleAnimSpritePalette_012, 10012 }, + { (u8 *) &gBattleAnimSpritePalette_013, 10013 }, + { (u8 *) &gBattleAnimSpritePalette_014, 10014 }, + { (u8 *) &gBattleAnimSpritePalette_015, 10015 }, + { (u8 *) &gBattleAnimSpritePalette_016, 10016 }, + { (u8 *) &gBattleAnimSpritePalette_016, 10017 }, + { (u8 *) &gBattleAnimSpritePalette_018, 10018 }, + { (u8 *) &gBattleAnimSpritePalette_019, 10019 }, + { (u8 *) &gBattleAnimSpritePalette_020, 10020 }, + { (u8 *) &gBattleAnimSpritePalette_021, 10021 }, + { (u8 *) &gBattleAnimSpritePalette_022, 10022 }, + { (u8 *) &gBattleAnimSpritePalette_023, 10023 }, + { (u8 *) &gBattleAnimSpritePalette_024, 10024 }, + { (u8 *) &gBattleAnimSpritePalette_025, 10025 }, + { (u8 *) &gBattleAnimSpritePalette_026, 10026 }, + { (u8 *) &gBattleAnimSpritePalette_027, 10027 }, + { (u8 *) &gBattleAnimSpritePalette_028, 10028 }, + { (u8 *) &gBattleAnimSpritePalette_029, 10029 }, + { (u8 *) &gBattleAnimSpritePalette_030, 10030 }, + { (u8 *) &gBattleAnimSpritePalette_031, 10031 }, + { (u8 *) &gBattleAnimSpritePalette_032, 10032 }, + { (u8 *) &gBattleAnimSpritePalette_033, 10033 }, + { (u8 *) &gBattleAnimSpritePalette_033, 10034 }, + { (u8 *) &gBattleAnimSpritePalette_033, 10035 }, + { (u8 *) &gBattleAnimSpritePalette_036, 10036 }, + { (u8 *) &gBattleAnimSpritePalette_036, 10037 }, + { (u8 *) &gBattleAnimSpritePalette_038, 10038 }, + { (u8 *) &gBattleAnimSpritePalette_039, 10039 }, + { (u8 *) &gBattleAnimSpritePalette_038, 10040 }, + { (u8 *) &gBattleAnimSpritePalette_038, 10041 }, + { (u8 *) &gBattleAnimSpritePalette_042, 10042 }, + { (u8 *) &gBattleAnimSpritePalette_043, 10043 }, + { (u8 *) &gBattleAnimSpritePalette_044, 10044 }, + { (u8 *) &gBattleAnimSpritePalette_045, 10045 }, + { (u8 *) &gBattleAnimSpritePalette_046, 10046 }, + { (u8 *) &gBattleAnimSpritePalette_047, 10046 }, + { (u8 *) &gBattleAnimSpritePalette_048, 10048 }, + { (u8 *) &gBattleAnimSpritePalette_049, 10049 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10050 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10051 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10052 }, + { (u8 *) &gBattleAnimSpritePalette_026, 10053 }, + { (u8 *) &gBattleAnimSpritePalette_054, 10054 }, + { (u8 *) &gBattleAnimSpritePalette_050, 10055 }, + { (u8 *) &gBattleAnimSpritePalette_056, 10056 }, + { (u8 *) &gBattleAnimSpritePalette_057, 10057 }, + { (u8 *) &gBattleAnimSpritePalette_058, 10058 }, + { (u8 *) &gBattleAnimSpritePalette_059, 10059 }, + { (u8 *) &gBattleAnimSpritePalette_060, 10060 }, + { (u8 *) &gBattleAnimSpritePalette_061, 10061 }, + { (u8 *) &gBattleAnimSpritePalette_062, 10062 }, + { (u8 *) &gBattleAnimSpritePalette_063, 10063 }, + { (u8 *) &gBattleAnimSpritePalette_064, 10064 }, + { (u8 *) &gBattleAnimSpritePalette_065, 10065 }, + { (u8 *) &gBattleAnimSpritePalette_066, 10066 }, + { (u8 *) &gBattleAnimSpritePalette_067, 10067 }, + { (u8 *) &gBattleAnimSpritePalette_068, 10068 }, + { (u8 *) &gBattleAnimSpritePalette_065, 10069 }, + { (u8 *) &gBattleAnimSpritePalette_070, 10070 }, + { (u8 *) &gBattleAnimSpritePalette_070, 10071 }, + { (u8 *) &gBattleAnimSpritePalette_072, 10072 }, + { (u8 *) &gBattleAnimSpritePalette_073, 10073 }, + { (u8 *) &gBattleAnimSpritePalette_074, 10074 }, + { (u8 *) &gBattleAnimSpritePalette_075, 10075 }, + { (u8 *) &gBattleAnimSpritePalette_076, 10076 }, + { (u8 *) &gBattleAnimSpritePalette_076, 10077 }, + { (u8 *) &gBattleAnimSpritePalette_078, 10078 }, + { (u8 *) &gBattleAnimSpritePalette_078, 10079 }, + { (u8 *) &gBattleAnimSpritePalette_080, 10080 }, + { (u8 *) &gBattleAnimSpritePalette_081, 10081 }, + { (u8 *) &gBattleAnimSpritePalette_082, 10082 }, + { (u8 *) &gBattleAnimSpritePalette_083, 10083 }, + { (u8 *) &gBattleAnimSpritePalette_084, 10084 }, + { (u8 *) &gBattleAnimSpritePalette_085, 10085 }, + { (u8 *) &gBattleAnimSpritePalette_086, 10086 }, + { (u8 *) &gBattleAnimSpritePalette_087, 10087 }, + { (u8 *) &gBattleAnimSpritePalette_088, 10088 }, + { (u8 *) &gBattleAnimSpritePalette_089, 10089 }, + { (u8 *) &gBattleAnimSpritePalette_090, 10090 }, + { (u8 *) &gBattleAnimSpritePalette_091, 10091 }, + { (u8 *) &gBattleAnimSpritePalette_092, 10092 }, + { (u8 *) &gBattleAnimSpritePalette_093, 10093 }, + { (u8 *) &gBattleAnimSpritePalette_094, 10094 }, + { (u8 *) &gBattleAnimSpritePalette_095, 10095 }, + { (u8 *) &gBattleAnimSpritePalette_096, 10096 }, + { (u8 *) &gBattleAnimSpritePalette_097, 10097 }, + { (u8 *) &gBattleAnimSpritePalette_094, 10098 }, + { (u8 *) &gBattleAnimSpritePalette_099, 10099 }, + { (u8 *) &gBattleAnimSpritePalette_100, 10100 }, + { (u8 *) &gBattleAnimSpritePalette_101, 10101 }, + { (u8 *) &gBattleAnimSpritePalette_101, 10102 }, + { (u8 *) &gBattleAnimSpritePalette_103, 10103 }, + { (u8 *) &gBattleAnimSpritePalette_104, 10104 }, + { (u8 *) &gBattleAnimSpritePalette_105, 10105 }, + { (u8 *) &gBattleAnimSpritePalette_105, 10106 }, + { (u8 *) &gBattleAnimSpritePalette_107, 10107 }, + { (u8 *) &gBattleAnimSpritePalette_107, 10108 }, + { (u8 *) &gBattleAnimSpritePalette_109, 10109 }, + { (u8 *) &gBattleAnimSpritePalette_109, 10110 }, + { (u8 *) &gBattleAnimSpritePalette_111, 10111 }, + { (u8 *) &gBattleAnimSpritePalette_112, 10112 }, + { (u8 *) &gBattleAnimSpritePalette_113, 10113 }, + { (u8 *) &gBattleAnimSpritePalette_114, 10114 }, + { (u8 *) &gBattleAnimSpritePalette_115, 10115 }, + { (u8 *) &gBattleAnimSpritePalette_116, 10116 }, + { (u8 *) &gBattleAnimSpritePalette_117, 10117 }, + { (u8 *) &gBattleAnimSpritePalette_118, 10118 }, + { (u8 *) &gBattleAnimSpritePalette_119, 10119 }, + { (u8 *) &gBattleAnimSpritePalette_120, 10120 }, + { (u8 *) &gBattleAnimSpritePalette_121, 10121 }, + { (u8 *) &gBattleAnimSpritePalette_122, 10122 }, + { (u8 *) &gBattleAnimSpritePalette_122, 10123 }, + { (u8 *) &gBattleAnimSpritePalette_124, 10124 }, + { (u8 *) &gBattleAnimSpritePalette_125, 10125 }, + { (u8 *) &gBattleAnimSpritePalette_126, 10126 }, + { (u8 *) &gBattleAnimSpritePalette_127, 10127 }, + { (u8 *) &gBattleAnimSpritePalette_128, 10128 }, + { (u8 *) &gBattleAnimSpritePalette_128, 10129 }, + { (u8 *) &gBattleAnimSpritePalette_130, 10130 }, + { (u8 *) &gBattleAnimSpritePalette_130, 10131 }, + { (u8 *) &gBattleAnimSpritePalette_132, 10132 }, + { (u8 *) &gBattleAnimSpritePalette_133, 10133 }, + { (u8 *) &gBattleAnimSpritePalette_133, 10134 }, + { (u8 *) &gBattleAnimSpritePalette_135, 10135 }, + { (u8 *) &gBattleAnimSpritePalette_136, 10136 }, + { (u8 *) &gBattleAnimSpritePalette_135, 10137 }, + { (u8 *) &gBattleAnimSpritePalette_135, 10138 }, + { (u8 *) &gBattleAnimSpritePalette_139, 10139 }, + { (u8 *) &gBattleAnimSpritePalette_140, 10140 }, + { (u8 *) &gBattleAnimSpritePalette_141, 10141 }, + { (u8 *) &gBattleAnimSpritePalette_141, 10142 }, + { (u8 *) &gBattleAnimSpritePalette_143, 10143 }, + { (u8 *) &gBattleAnimSpritePalette_144, 10144 }, + { (u8 *) &gBattleAnimSpritePalette_139, 10145 }, + { (u8 *) &gBattleAnimSpritePalette_115, 10146 }, + { (u8 *) &gBattleAnimSpritePalette_147, 10147 }, + { (u8 *) &gBattleAnimSpritePalette_148, 10148 }, + { (u8 *) &gBattleAnimSpritePalette_148, 10149 }, + { (u8 *) &gBattleAnimSpritePalette_150, 10150 }, + { (u8 *) &gBattleAnimSpritePalette_150, 10151 }, + { (u8 *) &gBattleAnimSpritePalette_152, 10152 }, + { (u8 *) &gBattleAnimSpritePalette_153, 10153 }, + { (u8 *) &gBattleAnimSpritePalette_154, 10154 }, + { (u8 *) &gBattleAnimSpritePalette_155, 10155 }, + { (u8 *) &gBattleAnimSpritePalette_156, 10156 }, + { (u8 *) &gBattleAnimSpritePalette_157, 10157 }, + { (u8 *) &gBattleAnimSpritePalette_158, 10158 }, + { (u8 *) &gBattleAnimSpritePalette_159, 10159 }, + { (u8 *) &gBattleAnimSpritePalette_160, 10160 }, + { (u8 *) &gBattleAnimSpritePalette_161, 10161 }, + { (u8 *) &gBattleAnimSpritePalette_162, 10162 }, + { (u8 *) &gBattleAnimSpritePalette_163, 10163 }, + { (u8 *) &gBattleAnimSpritePalette_164, 10164 }, + { (u8 *) &gBattleAnimSpritePalette_165, 10165 }, + { (u8 *) &gBattleAnimSpritePalette_166, 10166 }, + { (u8 *) &gBattleAnimSpritePalette_167, 10167 }, + { (u8 *) &gBattleAnimSpritePalette_168, 10168 }, + { (u8 *) &gBattleAnimSpritePalette_169, 10169 }, + { (u8 *) &gBattleAnimSpritePalette_170, 10170 }, + { (u8 *) &gBattleAnimSpritePalette_171, 10171 }, + { (u8 *) &gBattleAnimSpritePalette_172, 10172 }, + { (u8 *) &gBattleAnimSpritePalette_001, 10173 }, + { (u8 *) &gBattleAnimSpritePalette_174, 10174 }, + { (u8 *) &gBattleAnimSpritePalette_175, 10175 }, + { (u8 *) &gBattleAnimSpritePalette_176, 10176 }, + { (u8 *) &gBattleAnimSpritePalette_177, 10177 }, + { (u8 *) &gBattleAnimSpritePalette_178, 10178 }, + { (u8 *) &gBattleAnimSpritePalette_179, 10179 }, + { (u8 *) &gBattleAnimSpritePalette_179, 10180 }, + { (u8 *) &gBattleAnimSpritePalette_179, 10181 }, + { (u8 *) &gBattleAnimSpritePalette_182, 10182 }, + { (u8 *) &gBattleAnimSpritePalette_183, 10183 }, + { (u8 *) &gBattleAnimSpritePalette_184, 10184 }, + { (u8 *) &gBattleAnimSpritePalette_185, 10185 }, + { (u8 *) &gBattleAnimSpritePalette_186, 10186 }, + { (u8 *) &gBattleAnimSpritePalette_187, 10187 }, + { (u8 *) &gBattleAnimSpritePalette_188, 10188 }, + { (u8 *) &gBattleAnimSpritePalette_189, 10189 }, + { (u8 *) &gBattleAnimSpritePalette_190, 10190 }, + { (u8 *) &gBattleAnimSpritePalette_191, 10191 }, + { (u8 *) &gBattleAnimSpritePalette_192, 10192 }, + { (u8 *) &gBattleAnimSpritePalette_193, 10193 }, + { (u8 *) &gBattleAnimSpritePalette_194, 10194 }, + { (u8 *) &gBattleAnimSpritePalette_195, 10195 }, + { (u8 *) &gBattleAnimSpritePalette_196, 10196 }, + { (u8 *) &gBattleAnimSpritePalette_197, 10197 }, + { (u8 *) &gBattleAnimSpritePalette_198, 10198 }, + { (u8 *) &gBattleAnimSpritePalette_199, 10199 }, + { (u8 *) &gBattleAnimSpritePalette_200, 10200 }, + { (u8 *) &gBattleAnimSpritePalette_201, 10201 }, + { (u8 *) &gBattleAnimSpritePalette_202, 10202 }, + { (u8 *) &gBattleAnimSpritePalette_203, 10203 }, + { (u8 *) &gBattleAnimSpritePalette_204, 10204 }, + { (u8 *) &gBattleAnimSpritePalette_205, 10205 }, + { (u8 *) &gBattleAnimSpritePalette_206, 10206 }, + { (u8 *) &gBattleAnimSpritePalette_207, 10207 }, + { (u8 *) &gBattleAnimSpritePalette_167, 10208 }, + { (u8 *) &gBattleAnimSpritePalette_209, 10209 }, + { (u8 *) &gBattleAnimSpritePalette_210, 10210 }, + { (u8 *) &gBattleAnimSpritePalette_211, 10211 }, + { (u8 *) &gBattleAnimSpritePalette_211, 10212 }, + { (u8 *) &gBattleAnimSpritePalette_211, 10213 }, + { (u8 *) &gBattleAnimSpritePalette_064, 10214 }, + { (u8 *) &gBattleAnimSpritePalette_215, 10215 }, + { (u8 *) &gBattleAnimSpritePalette_216, 10216 }, + { (u8 *) &gBattleAnimSpritePalette_217, 10217 }, + { (u8 *) &gBattleAnimSpritePalette_218, 10218 }, + { (u8 *) &gBattleAnimSpritePalette_219, 10219 }, + { (u8 *) &gBattleAnimSpritePalette_220, 10220 }, + { (u8 *) &gBattleAnimSpritePalette_221, 10221 }, + { (u8 *) &gBattleAnimSpritePalette_222, 10222 }, + { (u8 *) &gBattleAnimSpritePalette_223, 10223 }, + { (u8 *) &gBattleAnimSpritePalette_224, 10224 }, + { (u8 *) &gBattleAnimSpritePalette_225, 10225 }, + { (u8 *) &gBattleAnimSpritePalette_226, 10226 }, + { (u8 *) &gBattleAnimSpritePalette_226, 10227 }, + { (u8 *) &gBattleAnimSpritePalette_228, 10228 }, + { (u8 *) &gBattleAnimSpritePalette_229, 10229 }, + { (u8 *) &gBattleAnimSpritePalette_230, 10230 }, + { (u8 *) &gBattleAnimSpritePalette_231, 10231 }, + { (u8 *) &gBattleAnimSpritePalette_231, 10232 }, + { (u8 *) &gBattleAnimSpritePalette_233, 10233 }, + { (u8 *) &gBattleAnimSpritePalette_234, 10234 }, + { (u8 *) &gBattleAnimSpritePalette_235, 10235 }, + { (u8 *) &gBattleAnimSpritePalette_236, 10236 }, + { (u8 *) &gBattleAnimSpritePalette_237, 10237 }, + { (u8 *) &gBattleAnimSpritePalette_238, 10238 }, + { (u8 *) &gBattleAnimSpritePalette_239, 10239 }, + { (u8 *) &gBattleAnimSpritePalette_240, 10240 }, + { (u8 *) &gBattleAnimSpritePalette_241, 10241 }, + { (u8 *) &gBattleAnimSpritePalette_242, 10242 }, + { (u8 *) &gBattleAnimSpritePalette_243, 10243 }, + { (u8 *) &gBattleAnimSpritePalette_244, 10244 }, + { (u8 *) &gBattleAnimSpritePalette_245, 10245 }, + { (u8 *) &gBattleAnimSpritePalette_245, 10246 }, + { (u8 *) &gBattleAnimSpritePalette_064, 10247 }, + { (u8 *) &gBattleAnimSpritePalette_248, 10248 }, + { (u8 *) &gBattleAnimSpritePalette_249, 10249 }, + { (u8 *) &gBattleAnimSpritePalette_249, 10250 }, + { (u8 *) &gBattleAnimSpritePalette_251, 10251 }, + { (u8 *) &gBattleAnimSpritePalette_252, 10252 }, + { (u8 *) &gBattleAnimSpritePalette_253, 10253 }, + { (u8 *) &gBattleAnimSpritePalette_254, 10254 }, + { (u8 *) &gBattleAnimSpritePalette_255, 10255 }, + { (u8 *) &gBattleAnimSpritePalette_256, 10256 }, + { (u8 *) &gBattleAnimSpritePalette_257, 10257 }, + { (u8 *) &gBattleAnimSpritePalette_258, 10258 }, + { (u8 *) &gBattleAnimSpritePalette_259, 10259 }, + { (u8 *) &gBattleAnimSpritePalette_260, 10260 }, + { (u8 *) &gBattleAnimSpritePalette_261, 10261 }, + { (u8 *) &gBattleAnimSpritePalette_262, 10262 }, + { (u8 *) &gBattleAnimSpritePalette_263, 10263 }, + { (u8 *) &gBattleAnimSpritePalette_264, 10264 }, + { (u8 *) &gBattleAnimSpritePalette_265, 10265 }, + { (u8 *) &gBattleAnimSpritePalette_266, 10266 }, + { (u8 *) &gBattleAnimSpritePalette_267, 10267 }, + { (u8 *) &gBattleAnimSpritePalette_268, 10268 }, + { (u8 *) &gBattleAnimSpritePalette_269, 10269 }, + { (u8 *) &gBattleAnimSpritePalette_270, 10270 }, + { (u8 *) &gBattleAnimSpritePalette_271, 10271 }, + { (u8 *) &gBattleAnimSpritePalette_272, 10272 }, + { (u8 *) &gBattleAnimSpritePalette_272, 10273 }, + { (u8 *) &gBattleAnimSpritePalette_274, 10274 }, + { (u8 *) &gBattleAnimSpritePalette_274, 10275 }, + { (u8 *) &gBattleAnimSpritePalette_274, 10276 }, + { (u8 *) &gBattleAnimSpritePalette_277, 10277 }, + { (u8 *) &gBattleAnimSpritePalette_278, 10278 }, + { (u8 *) &gBattleAnimSpritePalette_279, 10279 }, + { (u8 *) &gBattleAnimSpritePalette_280, 10280 }, + { (u8 *) &gBattleAnimSpritePalette_281, 10281 }, + { (u8 *) &gBattleAnimSpritePalette_282, 10282 }, + { (u8 *) &gBattleAnimSpritePalette_283, 10283 }, + { (u8 *) &gBattleAnimSpritePalette_284, 10284 }, + { (u8 *) &gBattleAnimSpritePalette_285, 10285 }, + { (u8 *) &gBattleAnimSpritePalette_286, 10286 }, + { (u8 *) &gBattleAnimSpritePalette_287, 10287 }, + { (u8 *) &gBattleAnimSpritePalette_288, 10288 }, +}; + +const struct BattleAnimBackground gBattleAnimBackgroundTable[] = +{ + &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, + &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, + &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02, + &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10, + &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13, + &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14, + &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15, + &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16, + &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07, + &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08, + &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20, + &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09, + &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05, + &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06, +}; + extern u16 gBattlePartyID[4]; extern u8 gObjectBankIDs[]; extern u8 gBankAttacker; @@ -64,8 +1905,6 @@ extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern const u8 *const gBattleAnims_Moves[]; -extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; -// extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; static void RunAnimScriptCommand(void); static void ScriptCmd_loadspritegfx(void); diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h deleted file mode 100644 index 1e12e2011..000000000 --- a/src/data/battle_anim.h +++ /dev/null @@ -1,326 +0,0 @@ -#include "global.h" -#include "graphics.h" - -const struct CompressedSpritePalette gBattleAnimPaletteTable[] = -{ - { (u8 *) &gBattleAnimSpritePalette_000, 10000}, - { (u8 *) &gBattleAnimSpritePalette_001, 10001}, - { (u8 *) &gBattleAnimSpritePalette_002, 10002}, - { (u8 *) &gBattleAnimSpritePalette_003, 10003}, - { (u8 *) &gBattleAnimSpritePalette_004, 10004}, - { (u8 *) &gBattleAnimSpritePalette_005, 10005}, - { (u8 *) &gBattleAnimSpritePalette_006, 10006}, - { (u8 *) &gBattleAnimSpritePalette_007, 10007}, - { (u8 *) &gBattleAnimSpritePalette_008, 10008}, - { (u8 *) &gBattleAnimSpritePalette_009, 10009}, - { (u8 *) &gBattleAnimSpritePalette_010, 10010}, - { (u8 *) &gBattleAnimSpritePalette_011, 10011}, - { (u8 *) &gBattleAnimSpritePalette_012, 10012}, - { (u8 *) &gBattleAnimSpritePalette_013, 10013}, - { (u8 *) &gBattleAnimSpritePalette_014, 10014}, - { (u8 *) &gBattleAnimSpritePalette_015, 10015}, - { (u8 *) &gBattleAnimSpritePalette_016, 10016}, - { (u8 *) &gBattleAnimSpritePalette_016, 10017}, - { (u8 *) &gBattleAnimSpritePalette_018, 10018}, - { (u8 *) &gBattleAnimSpritePalette_019, 10019}, - { (u8 *) &gBattleAnimSpritePalette_020, 10020}, - { (u8 *) &gBattleAnimSpritePalette_021, 10021}, - { (u8 *) &gBattleAnimSpritePalette_022, 10022}, - { (u8 *) &gBattleAnimSpritePalette_023, 10023}, - { (u8 *) &gBattleAnimSpritePalette_024, 10024}, - { (u8 *) &gBattleAnimSpritePalette_025, 10025}, - { (u8 *) &gBattleAnimSpritePalette_026, 10026}, - { (u8 *) &gBattleAnimSpritePalette_027, 10027}, - { (u8 *) &gBattleAnimSpritePalette_028, 10028}, - { (u8 *) &gBattleAnimSpritePalette_029, 10029}, - { (u8 *) &gBattleAnimSpritePalette_030, 10030}, - { (u8 *) &gBattleAnimSpritePalette_031, 10031}, - { (u8 *) &gBattleAnimSpritePalette_032, 10032}, - { (u8 *) &gBattleAnimSpritePalette_033, 10033}, - { (u8 *) &gBattleAnimSpritePalette_033, 10034}, - { (u8 *) &gBattleAnimSpritePalette_033, 10035}, - { (u8 *) &gBattleAnimSpritePalette_036, 10036}, - { (u8 *) &gBattleAnimSpritePalette_036, 10037}, - { (u8 *) &gBattleAnimSpritePalette_038, 10038}, - { (u8 *) &gBattleAnimSpritePalette_039, 10039}, - { (u8 *) &gBattleAnimSpritePalette_038, 10040}, - { (u8 *) &gBattleAnimSpritePalette_038, 10041}, - { (u8 *) &gBattleAnimSpritePalette_042, 10042}, - { (u8 *) &gBattleAnimSpritePalette_043, 10043}, - { (u8 *) &gBattleAnimSpritePalette_044, 10044}, - { (u8 *) &gBattleAnimSpritePalette_045, 10045}, - { (u8 *) &gBattleAnimSpritePalette_046, 10046}, - { (u8 *) &gBattleAnimSpritePalette_047, 10046}, - { (u8 *) &gBattleAnimSpritePalette_048, 10048}, - { (u8 *) &gBattleAnimSpritePalette_049, 10049}, - { (u8 *) &gBattleAnimSpritePalette_050, 10050}, - { (u8 *) &gBattleAnimSpritePalette_050, 10051}, - { (u8 *) &gBattleAnimSpritePalette_050, 10052}, - { (u8 *) &gBattleAnimSpritePalette_026, 10053}, - { (u8 *) &gBattleAnimSpritePalette_054, 10054}, - { (u8 *) &gBattleAnimSpritePalette_050, 10055}, - { (u8 *) &gBattleAnimSpritePalette_056, 10056}, - { (u8 *) &gBattleAnimSpritePalette_057, 10057}, - { (u8 *) &gBattleAnimSpritePalette_058, 10058}, - { (u8 *) &gBattleAnimSpritePalette_059, 10059}, - { (u8 *) &gBattleAnimSpritePalette_060, 10060}, - { (u8 *) &gBattleAnimSpritePalette_061, 10061}, - { (u8 *) &gBattleAnimSpritePalette_062, 10062}, - { (u8 *) &gBattleAnimSpritePalette_063, 10063}, - { (u8 *) &gBattleAnimSpritePalette_064, 10064}, - { (u8 *) &gBattleAnimSpritePalette_065, 10065}, - { (u8 *) &gBattleAnimSpritePalette_066, 10066}, - { (u8 *) &gBattleAnimSpritePalette_067, 10067}, - { (u8 *) &gBattleAnimSpritePalette_068, 10068}, - { (u8 *) &gBattleAnimSpritePalette_065, 10069}, - { (u8 *) &gBattleAnimSpritePalette_070, 10070}, - { (u8 *) &gBattleAnimSpritePalette_070, 10071}, - { (u8 *) &gBattleAnimSpritePalette_072, 10072}, - { (u8 *) &gBattleAnimSpritePalette_073, 10073}, - { (u8 *) &gBattleAnimSpritePalette_074, 10074}, - { (u8 *) &gBattleAnimSpritePalette_075, 10075}, - { (u8 *) &gBattleAnimSpritePalette_076, 10076}, - { (u8 *) &gBattleAnimSpritePalette_076, 10077}, - { (u8 *) &gBattleAnimSpritePalette_078, 10078}, - { (u8 *) &gBattleAnimSpritePalette_078, 10079}, - { (u8 *) &gBattleAnimSpritePalette_080, 10080}, - { (u8 *) &gBattleAnimSpritePalette_081, 10081}, - { (u8 *) &gBattleAnimSpritePalette_082, 10082}, - { (u8 *) &gBattleAnimSpritePalette_083, 10083}, - { (u8 *) &gBattleAnimSpritePalette_084, 10084}, - { (u8 *) &gBattleAnimSpritePalette_085, 10085}, - { (u8 *) &gBattleAnimSpritePalette_086, 10086}, - { (u8 *) &gBattleAnimSpritePalette_087, 10087}, - { (u8 *) &gBattleAnimSpritePalette_088, 10088}, - { (u8 *) &gBattleAnimSpritePalette_089, 10089}, - { (u8 *) &gBattleAnimSpritePalette_090, 10090}, - { (u8 *) &gBattleAnimSpritePalette_091, 10091}, - { (u8 *) &gBattleAnimSpritePalette_092, 10092}, - { (u8 *) &gBattleAnimSpritePalette_093, 10093}, - { (u8 *) &gBattleAnimSpritePalette_094, 10094}, - { (u8 *) &gBattleAnimSpritePalette_095, 10095}, - { (u8 *) &gBattleAnimSpritePalette_096, 10096}, - { (u8 *) &gBattleAnimSpritePalette_097, 10097}, - { (u8 *) &gBattleAnimSpritePalette_094, 10098}, - { (u8 *) &gBattleAnimSpritePalette_099, 10099}, - { (u8 *) &gBattleAnimSpritePalette_100, 10100}, - { (u8 *) &gBattleAnimSpritePalette_101, 10101}, - { (u8 *) &gBattleAnimSpritePalette_101, 10102}, - { (u8 *) &gBattleAnimSpritePalette_103, 10103}, - { (u8 *) &gBattleAnimSpritePalette_104, 10104}, - { (u8 *) &gBattleAnimSpritePalette_105, 10105}, - { (u8 *) &gBattleAnimSpritePalette_105, 10106}, - { (u8 *) &gBattleAnimSpritePalette_107, 10107}, - { (u8 *) &gBattleAnimSpritePalette_107, 10108}, - { (u8 *) &gBattleAnimSpritePalette_109, 10109}, - { (u8 *) &gBattleAnimSpritePalette_109, 10110}, - { (u8 *) &gBattleAnimSpritePalette_111, 10111}, - { (u8 *) &gBattleAnimSpritePalette_112, 10112}, - { (u8 *) &gBattleAnimSpritePalette_113, 10113}, - { (u8 *) &gBattleAnimSpritePalette_114, 10114}, - { (u8 *) &gBattleAnimSpritePalette_115, 10115}, - { (u8 *) &gBattleAnimSpritePalette_116, 10116}, - { (u8 *) &gBattleAnimSpritePalette_117, 10117}, - { (u8 *) &gBattleAnimSpritePalette_118, 10118}, - { (u8 *) &gBattleAnimSpritePalette_119, 10119}, - { (u8 *) &gBattleAnimSpritePalette_120, 10120}, - { (u8 *) &gBattleAnimSpritePalette_121, 10121}, - { (u8 *) &gBattleAnimSpritePalette_122, 10122}, - { (u8 *) &gBattleAnimSpritePalette_122, 10123}, - { (u8 *) &gBattleAnimSpritePalette_124, 10124}, - { (u8 *) &gBattleAnimSpritePalette_125, 10125}, - { (u8 *) &gBattleAnimSpritePalette_126, 10126}, - { (u8 *) &gBattleAnimSpritePalette_127, 10127}, - { (u8 *) &gBattleAnimSpritePalette_128, 10128}, - { (u8 *) &gBattleAnimSpritePalette_128, 10129}, - { (u8 *) &gBattleAnimSpritePalette_130, 10130}, - { (u8 *) &gBattleAnimSpritePalette_130, 10131}, - { (u8 *) &gBattleAnimSpritePalette_132, 10132}, - { (u8 *) &gBattleAnimSpritePalette_133, 10133}, - { (u8 *) &gBattleAnimSpritePalette_133, 10134}, - { (u8 *) &gBattleAnimSpritePalette_135, 10135}, - { (u8 *) &gBattleAnimSpritePalette_136, 10136}, - { (u8 *) &gBattleAnimSpritePalette_135, 10137}, - { (u8 *) &gBattleAnimSpritePalette_135, 10138}, - { (u8 *) &gBattleAnimSpritePalette_139, 10139}, - { (u8 *) &gBattleAnimSpritePalette_140, 10140}, - { (u8 *) &gBattleAnimSpritePalette_141, 10141}, - { (u8 *) &gBattleAnimSpritePalette_141, 10142}, - { (u8 *) &gBattleAnimSpritePalette_143, 10143}, - { (u8 *) &gBattleAnimSpritePalette_144, 10144}, - { (u8 *) &gBattleAnimSpritePalette_139, 10145}, - { (u8 *) &gBattleAnimSpritePalette_115, 10146}, - { (u8 *) &gBattleAnimSpritePalette_147, 10147}, - { (u8 *) &gBattleAnimSpritePalette_148, 10148}, - { (u8 *) &gBattleAnimSpritePalette_148, 10149}, - { (u8 *) &gBattleAnimSpritePalette_150, 10150}, - { (u8 *) &gBattleAnimSpritePalette_150, 10151}, - { (u8 *) &gBattleAnimSpritePalette_152, 10152}, - { (u8 *) &gBattleAnimSpritePalette_153, 10153}, - { (u8 *) &gBattleAnimSpritePalette_154, 10154}, - { (u8 *) &gBattleAnimSpritePalette_155, 10155}, - { (u8 *) &gBattleAnimSpritePalette_156, 10156}, - { (u8 *) &gBattleAnimSpritePalette_157, 10157}, - { (u8 *) &gBattleAnimSpritePalette_158, 10158}, - { (u8 *) &gBattleAnimSpritePalette_159, 10159}, - { (u8 *) &gBattleAnimSpritePalette_160, 10160}, - { (u8 *) &gBattleAnimSpritePalette_161, 10161}, - { (u8 *) &gBattleAnimSpritePalette_162, 10162}, - { (u8 *) &gBattleAnimSpritePalette_163, 10163}, - { (u8 *) &gBattleAnimSpritePalette_164, 10164}, - { (u8 *) &gBattleAnimSpritePalette_165, 10165}, - { (u8 *) &gBattleAnimSpritePalette_166, 10166}, - { (u8 *) &gBattleAnimSpritePalette_167, 10167}, - { (u8 *) &gBattleAnimSpritePalette_168, 10168}, - { (u8 *) &gBattleAnimSpritePalette_169, 10169}, - { (u8 *) &gBattleAnimSpritePalette_170, 10170}, - { (u8 *) &gBattleAnimSpritePalette_171, 10171}, - { (u8 *) &gBattleAnimSpritePalette_172, 10172}, - { (u8 *) &gBattleAnimSpritePalette_001, 10173}, - { (u8 *) &gBattleAnimSpritePalette_174, 10174}, - { (u8 *) &gBattleAnimSpritePalette_175, 10175}, - { (u8 *) &gBattleAnimSpritePalette_176, 10176}, - { (u8 *) &gBattleAnimSpritePalette_177, 10177}, - { (u8 *) &gBattleAnimSpritePalette_178, 10178}, - { (u8 *) &gBattleAnimSpritePalette_179, 10179}, - { (u8 *) &gBattleAnimSpritePalette_179, 10180}, - { (u8 *) &gBattleAnimSpritePalette_179, 10181}, - { (u8 *) &gBattleAnimSpritePalette_182, 10182}, - { (u8 *) &gBattleAnimSpritePalette_183, 10183}, - { (u8 *) &gBattleAnimSpritePalette_184, 10184}, - { (u8 *) &gBattleAnimSpritePalette_185, 10185}, - { (u8 *) &gBattleAnimSpritePalette_186, 10186}, - { (u8 *) &gBattleAnimSpritePalette_187, 10187}, - { (u8 *) &gBattleAnimSpritePalette_188, 10188}, - { (u8 *) &gBattleAnimSpritePalette_189, 10189}, - { (u8 *) &gBattleAnimSpritePalette_190, 10190}, - { (u8 *) &gBattleAnimSpritePalette_191, 10191}, - { (u8 *) &gBattleAnimSpritePalette_192, 10192}, - { (u8 *) &gBattleAnimSpritePalette_193, 10193}, - { (u8 *) &gBattleAnimSpritePalette_194, 10194}, - { (u8 *) &gBattleAnimSpritePalette_195, 10195}, - { (u8 *) &gBattleAnimSpritePalette_196, 10196}, - { (u8 *) &gBattleAnimSpritePalette_197, 10197}, - { (u8 *) &gBattleAnimSpritePalette_198, 10198}, - { (u8 *) &gBattleAnimSpritePalette_199, 10199}, - { (u8 *) &gBattleAnimSpritePalette_200, 10200}, - { (u8 *) &gBattleAnimSpritePalette_201, 10201}, - { (u8 *) &gBattleAnimSpritePalette_202, 10202}, - { (u8 *) &gBattleAnimSpritePalette_203, 10203}, - { (u8 *) &gBattleAnimSpritePalette_204, 10204}, - { (u8 *) &gBattleAnimSpritePalette_205, 10205}, - { (u8 *) &gBattleAnimSpritePalette_206, 10206}, - { (u8 *) &gBattleAnimSpritePalette_207, 10207}, - { (u8 *) &gBattleAnimSpritePalette_167, 10208}, - { (u8 *) &gBattleAnimSpritePalette_209, 10209}, - { (u8 *) &gBattleAnimSpritePalette_210, 10210}, - { (u8 *) &gBattleAnimSpritePalette_211, 10211}, - { (u8 *) &gBattleAnimSpritePalette_211, 10212}, - { (u8 *) &gBattleAnimSpritePalette_211, 10213}, - { (u8 *) &gBattleAnimSpritePalette_064, 10214}, - { (u8 *) &gBattleAnimSpritePalette_215, 10215}, - { (u8 *) &gBattleAnimSpritePalette_216, 10216}, - { (u8 *) &gBattleAnimSpritePalette_217, 10217}, - { (u8 *) &gBattleAnimSpritePalette_218, 10218}, - { (u8 *) &gBattleAnimSpritePalette_219, 10219}, - { (u8 *) &gBattleAnimSpritePalette_220, 10220}, - { (u8 *) &gBattleAnimSpritePalette_221, 10221}, - { (u8 *) &gBattleAnimSpritePalette_222, 10222}, - { (u8 *) &gBattleAnimSpritePalette_223, 10223}, - { (u8 *) &gBattleAnimSpritePalette_224, 10224}, - { (u8 *) &gBattleAnimSpritePalette_225, 10225}, - { (u8 *) &gBattleAnimSpritePalette_226, 10226}, - { (u8 *) &gBattleAnimSpritePalette_226, 10227}, - { (u8 *) &gBattleAnimSpritePalette_228, 10228}, - { (u8 *) &gBattleAnimSpritePalette_229, 10229}, - { (u8 *) &gBattleAnimSpritePalette_230, 10230}, - { (u8 *) &gBattleAnimSpritePalette_231, 10231}, - { (u8 *) &gBattleAnimSpritePalette_231, 10232}, - { (u8 *) &gBattleAnimSpritePalette_233, 10233}, - { (u8 *) &gBattleAnimSpritePalette_234, 10234}, - { (u8 *) &gBattleAnimSpritePalette_235, 10235}, - { (u8 *) &gBattleAnimSpritePalette_236, 10236}, - { (u8 *) &gBattleAnimSpritePalette_237, 10237}, - { (u8 *) &gBattleAnimSpritePalette_238, 10238}, - { (u8 *) &gBattleAnimSpritePalette_239, 10239}, - { (u8 *) &gBattleAnimSpritePalette_240, 10240}, - { (u8 *) &gBattleAnimSpritePalette_241, 10241}, - { (u8 *) &gBattleAnimSpritePalette_242, 10242}, - { (u8 *) &gBattleAnimSpritePalette_243, 10243}, - { (u8 *) &gBattleAnimSpritePalette_244, 10244}, - { (u8 *) &gBattleAnimSpritePalette_245, 10245}, - { (u8 *) &gBattleAnimSpritePalette_245, 10246}, - { (u8 *) &gBattleAnimSpritePalette_064, 10247}, - { (u8 *) &gBattleAnimSpritePalette_248, 10248}, - { (u8 *) &gBattleAnimSpritePalette_249, 10249}, - { (u8 *) &gBattleAnimSpritePalette_249, 10250}, - { (u8 *) &gBattleAnimSpritePalette_251, 10251}, - { (u8 *) &gBattleAnimSpritePalette_252, 10252}, - { (u8 *) &gBattleAnimSpritePalette_253, 10253}, - { (u8 *) &gBattleAnimSpritePalette_254, 10254}, - { (u8 *) &gBattleAnimSpritePalette_255, 10255}, - { (u8 *) &gBattleAnimSpritePalette_256, 10256}, - { (u8 *) &gBattleAnimSpritePalette_257, 10257}, - { (u8 *) &gBattleAnimSpritePalette_258, 10258}, - { (u8 *) &gBattleAnimSpritePalette_259, 10259}, - { (u8 *) &gBattleAnimSpritePalette_260, 10260}, - { (u8 *) &gBattleAnimSpritePalette_261, 10261}, - { (u8 *) &gBattleAnimSpritePalette_262, 10262}, - { (u8 *) &gBattleAnimSpritePalette_263, 10263}, - { (u8 *) &gBattleAnimSpritePalette_264, 10264}, - { (u8 *) &gBattleAnimSpritePalette_265, 10265}, - { (u8 *) &gBattleAnimSpritePalette_266, 10266}, - { (u8 *) &gBattleAnimSpritePalette_267, 10267}, - { (u8 *) &gBattleAnimSpritePalette_268, 10268}, - { (u8 *) &gBattleAnimSpritePalette_269, 10269}, - { (u8 *) &gBattleAnimSpritePalette_270, 10270}, - { (u8 *) &gBattleAnimSpritePalette_271, 10271}, - { (u8 *) &gBattleAnimSpritePalette_272, 10272}, - { (u8 *) &gBattleAnimSpritePalette_272, 10273}, - { (u8 *) &gBattleAnimSpritePalette_274, 10274}, - { (u8 *) &gBattleAnimSpritePalette_274, 10275}, - { (u8 *) &gBattleAnimSpritePalette_274, 10276}, - { (u8 *) &gBattleAnimSpritePalette_277, 10277}, - { (u8 *) &gBattleAnimSpritePalette_278, 10278}, - { (u8 *) &gBattleAnimSpritePalette_279, 10279}, - { (u8 *) &gBattleAnimSpritePalette_280, 10280}, - { (u8 *) &gBattleAnimSpritePalette_281, 10281}, - { (u8 *) &gBattleAnimSpritePalette_282, 10282}, - { (u8 *) &gBattleAnimSpritePalette_283, 10283}, - { (u8 *) &gBattleAnimSpritePalette_284, 10284}, - { (u8 *) &gBattleAnimSpritePalette_285, 10285}, - { (u8 *) &gBattleAnimSpritePalette_286, 10286}, - { (u8 *) &gBattleAnimSpritePalette_287, 10287}, - { (u8 *) &gBattleAnimSpritePalette_288, 10288}, -}; - -const struct BattleAnimBackground gBattleAnimBackgroundTable[] = -{ - &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, - &gBattleAnimBackgroundImage_00, &gBattleAnimBackgroundPalette_00, &gBattleAnimBackgroundTilemap_00, - &gBattleAnimBackgroundImage_02, &gBattleAnimBackgroundPalette_02, &gBattleAnimBackgroundTilemap_02, - &gBattleAnimBackgroundImage_03, &gBattleAnimBackgroundPalette_03, &gBattleAnimBackgroundTilemap_03, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_04, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_05, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_04, &gBattleAnimBackgroundTilemap_06, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_07, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_07, &gBattleAnimBackgroundTilemap_08, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_09, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_09, &gBattleAnimBackgroundTilemap_10, - &gBattleAnimBackgroundImage_11, &gBattleAnimBackgroundPalette_11, &gBattleAnimBackgroundTilemap_11, - &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_12, - &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_13, - &gBattleAnimBackgroundImage_12, &gBattleAnimBackgroundPalette_12, &gBattleAnimBackgroundTilemap_14, - &gBattleAnimBackgroundImage_15, &gBattleAnimBackgroundPalette_15, &gBattleAnimBackgroundTilemap_15, - &gBattleAnimBackgroundImage_16, &gBattleAnimBackgroundPalette_16, &gBattleAnimBackgroundTilemap_16, - &gBattleAnimBackgroundImage_17, &gBattleAnimBackgroundPalette_17, &gBattleAnimBackgroundTilemap_17, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_07, - &gBattleAnimBackgroundImage_07, &gBattleAnimBackgroundPalette_18, &gBattleAnimBackgroundTilemap_08, - &gBattleAnimBackgroundImage_20, &gBattleAnimBackgroundPalette_20, &gBattleAnimBackgroundTilemap_20, - &gBattleAnimBackgroundImage_21, &gBattleAnimBackgroundPalette_21, &gBattleAnimBackgroundTilemap_21, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_09, - &gBattleAnimBackgroundImage_09, &gBattleAnimBackgroundPalette_22, &gBattleAnimBackgroundTilemap_10, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_04, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_05, - &gBattleAnimBackgroundImage_04, &gBattleAnimBackgroundPalette_24, &gBattleAnimBackgroundTilemap_06, -}; -- cgit v1.2.3 From 378443528451875e5436814780a0420086bf5935 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 13 Jan 2018 21:02:12 -0600 Subject: refactor more of save.c --- src/engine/save.c | 361 ++++++++++++++++++++++++++--------------------- src/scene/hall_of_fame.c | 4 +- src/scene/intro.c | 2 +- 3 files changed, 200 insertions(+), 167 deletions(-) (limited to 'src') diff --git a/src/engine/save.c b/src/engine/save.c index f1010c69e..be907edcc 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -4,12 +4,14 @@ #include "save.h" #include "load_save.h" #include "overworld.h" +#include "pokemon.h" #include "save_failed_screen.h" #include "ewram.h" #define FILE_SIGNATURE 0x08012025 // signature value to determine if a sector is in use -#define TOTALNUMSECTORS ((ARRAY_COUNT(sSaveBlockChunks) * 2) + (ARRAY_COUNT(sHallOfFameChunks) * 2)) // there are 2 slots, so double each array count and get the sum. +//#define TOTAL_FLASH_SECTORS ((ARRAY_COUNT(sSaveBlockChunks) * 2) + (ARRAY_COUNT(sHallOfFameChunks) * 2)) // there are 2 slots, so double each array count and get the sum. +#define TOTAL_FLASH_SECTORS 32 struct SaveBlockChunk { @@ -17,7 +19,7 @@ struct SaveBlockChunk u16 size; }; -struct SaveSection +struct SaveSector { u8 data[0xFF4]; u16 id; @@ -33,7 +35,7 @@ struct UnkSaveSection u32 signature; }; // size is 0xFF8 -static u8 WriteChunk(u16, const struct SaveBlockChunk *); +static u8 WriteSingleChunk(u16, const struct SaveBlockChunk *); static u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size); static u8 TryWriteSector(u8, u8 *); static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *location); @@ -41,13 +43,13 @@ static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *location); static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *location); static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *location); static u8 sub_81255B8(u16, const struct SaveBlockChunk *location); -static u8 sub_8125758(u16 a1, const struct SaveBlockChunk *location); -static u8 sub_81257F0(u16 a1, const struct SaveBlockChunk *location); +static u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *location); +static u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *location); static u8 sub_812587C(u16 a1, const struct SaveBlockChunk *location); static u8 sub_81258BC(u16, const struct SaveBlockChunk *location); static u8 GetSaveValidStatus(const struct SaveBlockChunk *location); -static u8 sub_8125B88(u8 a1, u8 *data, u16 size); -static u8 DoReadFlashWholeSection(u8, struct SaveSection *); +static u8 ReadSomeUnknownSectorAndVerify(u8 a1, u8 *data, u16 size); +static u8 DoReadFlashWholeSection(u8, struct SaveSector *); static u16 CalculateChecksum(void *, u16); bool8 unref_sub_8125F4C(struct UnkSaveSection *a1); u8 unref_sub_8125FA0(void); @@ -55,24 +57,44 @@ u8 unref_sub_8125FF0(u8 *data, u16 size); u8 unref_sub_8126068(u8 sector, u8 *data, u32 size); u8 unref_sub_8126080(u8 sector, u8 *data); -u16 gLastWrittenSector; -u32 gLastSaveCounter; +// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?) +u16 gFirstSaveSector; +u32 gPrevSaveCounter; u16 gLastKnownGoodSector; u32 gDamagedSaveSectors; u32 gSaveCounter; -struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM. +struct SaveSector *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM. u16 gUnknown_03005EB4; u16 gSaveFileStatus; u32 gGameContinueCallback; -extern struct PokemonStorage gPokemonStorage; - static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused // Each 4 KiB flash sector contains 3968 bytes of actual data followed by a 128 byte footer #define SECTOR_DATA_SIZE 3968 #define SECTOR_FOOTER_SIZE 128 +/* + * Sector Layout: + * + * Sectors 0 - 13: Save Slot 1 + * Sectors 14 - 27: Save Slot 2 + * Sectors 28 - 29: Hall of Fame + * Sectors 30 - 31: e-Reader battle tower data, maybe? + * + * There are two save slots for saving the player's game data. We alternate between + * them each time the game is saved, so that if the current save slot is corrupt, + * we can load the previous one. We also rotate the sectors in each save slot + * so that the same data is not always being written to the same sector. This + * might be done to reduce wear on the flash memory, but I'm not sure, since all + * 14 sectors get written anyway. + */ + +#define HALL_OF_FAME_SECTOR 28 + +#define NUM_SECTORS_PER_SAVE_SLOT 14 // Number of sectors occupied by a save slot +#define NUM_HALL_OF_FAME_SECTORS 2 + // Divide save blocks into individual chunks to be written to flash sectors #define SAVEBLOCK_CHUNK(structure, chunkNum) \ @@ -107,8 +129,6 @@ static const struct SaveBlockChunk sHallOfFameChunks[] = SAVEBLOCK_CHUNK(*eHallOfFame, 1), }; -const u8 gFlashSectors[] = { 0x1E, 0x1F }; - void Save_EraseAllData(void) { u16 i; @@ -120,15 +140,15 @@ void Save_EraseAllData(void) void Save_ResetSaveCounters(void) { gSaveCounter = 0; - gLastWrittenSector = 0; + gFirstSaveSector = 0; gDamagedSaveSectors = 0; } enum { - ENABLE, - DISABLE, - CHECK // unused + SECTOR_DAMAGED, + SECTOR_OK, + SECTOR_CHECK, // unused }; static bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum) @@ -137,13 +157,13 @@ static bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum) switch (op) { - case ENABLE: + case SECTOR_DAMAGED: gDamagedSaveSectors |= (1 << sectorNum); break; - case DISABLE: + case SECTOR_OK: gDamagedSaveSectors &= ~(1 << sectorNum); break; - case CHECK: // unused + case SECTOR_CHECK: // unused if (gDamagedSaveSectors & (1 << sectorNum)) retVal = TRUE; break; @@ -152,65 +172,69 @@ static bool32 SetSectorDamagedStatus(u8 op, u8 sectorNum) return retVal; } -static u8 WriteSaveBlockChunks(u16 a1, const struct SaveBlockChunk *chunks) +// If chunkId is 0xFFFF, this function will write all of the chunks pointed to by 'chunks'. +// Otherwise, it will write a single chunk with the given 'chunkId'. +static u8 WriteSaveBlockChunks(u16 chunkId, const struct SaveBlockChunk *chunks) { u32 retVal; u16 i; gFastSaveSection = eSaveSection; - if (a1 != 0xFFFF) // for link + if (chunkId != 0xFFFF) // write single chunk { - retVal = WriteChunk(a1, chunks); + retVal = WriteSingleChunk(chunkId, chunks); } - else + else // write all chunks { - gLastKnownGoodSector = gLastWrittenSector; // backup the current written sector before attempting to write. - gLastSaveCounter = gSaveCounter; - gLastWrittenSector++; - gLastWrittenSector %= ARRAY_COUNT(sSaveBlockChunks); + gLastKnownGoodSector = gFirstSaveSector; + gPrevSaveCounter = gSaveCounter; + gFirstSaveSector++; + gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT; gSaveCounter++; retVal = SAVE_STATUS_OK; - for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) - WriteChunk(i, chunks); + for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++) + WriteSingleChunk(i, chunks); // Check for any bad sectors if (gDamagedSaveSectors != 0) // skip the damaged sector. { retVal = SAVE_STATUS_ERROR; - gLastWrittenSector = gLastKnownGoodSector; - gSaveCounter = gLastSaveCounter; + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; } } return retVal; } -static u8 WriteChunk(u16 chunkId, const struct SaveBlockChunk *chunks) +static u8 WriteSingleChunk(u16 chunkId, const struct SaveBlockChunk *chunks) { u16 i; u16 sectorNum; - u8 *data; - u16 size; + u8 *chunkData; + u16 chunkSize; - sectorNum = chunkId + gLastWrittenSector; - sectorNum %= ARRAY_COUNT(sSaveBlockChunks); - sectorNum += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); + // select sector number + sectorNum = chunkId + gFirstSaveSector; + sectorNum %= NUM_SECTORS_PER_SAVE_SLOT; + // select save slot + sectorNum += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); - data = chunks[chunkId].data; - size = chunks[chunkId].size; + chunkData = chunks[chunkId].data; + chunkSize = chunks[chunkId].size; // clear save section. - for (i = 0; i < sizeof(struct SaveSection); i++) + for (i = 0; i < sizeof(struct SaveSector); i++) ((u8 *)gFastSaveSection)[i] = 0; gFastSaveSection->id = chunkId; gFastSaveSection->signature = FILE_SIGNATURE; gFastSaveSection->counter = gSaveCounter; - for (i = 0; i < size; i++) - gFastSaveSection->data[i] = data[i]; - gFastSaveSection->checksum = CalculateChecksum(data, size); + for (i = 0; i < chunkSize; i++) + gFastSaveSection->data[i] = chunkData[i]; + gFastSaveSection->checksum = CalculateChecksum(chunkData, chunkSize); return TryWriteSector(sectorNum, gFastSaveSection->data); } @@ -218,9 +242,9 @@ static u8 WriteChunk(u16 chunkId, const struct SaveBlockChunk *chunks) static u8 HandleWriteSectorNBytes(u8 sectorNum, u8 *data, u16 size) { u16 i; - struct SaveSection *section = eSaveSection; + struct SaveSector *section = eSaveSection; - for (i = 0; i < sizeof(struct SaveSection); i++) + for (i = 0; i < sizeof(struct SaveSector); i++) ((char *)section)[i] = 0; section->signature = FILE_SIGNATURE; @@ -235,12 +259,12 @@ static u8 TryWriteSector(u8 sectorNum, u8 *data) { if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) // is damaged? { - SetSectorDamagedStatus(ENABLE, sectorNum); // set damaged sector bits. + SetSectorDamagedStatus(SECTOR_DAMAGED, sectorNum); // set damaged sector bits. return SAVE_STATUS_ERROR; } else { - SetSectorDamagedStatus(DISABLE, sectorNum); // unset damaged sector bits. it's safe now. + SetSectorDamagedStatus(SECTOR_OK, sectorNum); // unset damaged sector bits. it's safe now. return SAVE_STATUS_OK; } } @@ -248,21 +272,21 @@ static u8 TryWriteSector(u8 sectorNum, u8 *data) static u32 RestoreSaveBackupVarsAndIncrement(const struct SaveBlockChunk *chunk) // chunk is unused { gFastSaveSection = eSaveSection; - gLastKnownGoodSector = gLastWrittenSector; - gLastSaveCounter = gSaveCounter; - gLastWrittenSector++; - gLastWrittenSector = gLastWrittenSector % ARRAY_COUNT(sSaveBlockChunks); + gLastKnownGoodSector = gFirstSaveSector; + gPrevSaveCounter = gSaveCounter; + gFirstSaveSector++; + gFirstSaveSector %= NUM_SECTORS_PER_SAVE_SLOT; gSaveCounter++; gUnknown_03005EB4 = 0; gDamagedSaveSectors = 0; return 0; } -static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) // only ever called once, and gSaveBlock2 is passed to this function. chunk is unused +static u32 RestoreSaveBackupVars(const struct SaveBlockChunk *chunk) // chunk is unused { gFastSaveSection = eSaveSection; - gLastKnownGoodSector = gLastWrittenSector; - gLastSaveCounter = gSaveCounter; + gLastKnownGoodSector = gFirstSaveSector; + gPrevSaveCounter = gSaveCounter; gUnknown_03005EB4 = 0; gDamagedSaveSectors = 0; return 0; @@ -274,19 +298,19 @@ static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *chunk) if (gUnknown_03005EB4 < a1 - 1) { - retVal = 1; - WriteChunk(gUnknown_03005EB4, chunk); + retVal = SAVE_STATUS_OK; + WriteSingleChunk(gUnknown_03005EB4, chunk); gUnknown_03005EB4++; if (gDamagedSaveSectors) { - retVal = 0xFF; - gLastWrittenSector = gLastKnownGoodSector; - gSaveCounter = gLastSaveCounter; + retVal = SAVE_STATUS_ERROR; + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; } } else { - retVal = 0xFF; + retVal = SAVE_STATUS_ERROR; } return retVal; @@ -294,15 +318,15 @@ static u8 sub_812550C(u16 a1, const struct SaveBlockChunk *chunk) static u8 sub_812556C(u16 a1, const struct SaveBlockChunk *chunk) { - u8 retVal = 1; + u8 retVal = SAVE_STATUS_OK; sub_81255B8(a1 - 1, chunk); if (gDamagedSaveSectors) { - retVal = 0xFF; - gLastWrittenSector = gLastKnownGoodSector; - gSaveCounter = gLastSaveCounter; + retVal = SAVE_STATUS_ERROR; + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; } return retVal; } @@ -315,15 +339,17 @@ static u8 sub_81255B8(u16 chunkId, const struct SaveBlockChunk *chunks) u16 size; u8 status; - sector = chunkId + gLastWrittenSector; - sector %= ARRAY_COUNT(sSaveBlockChunks); - sector += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); + // select sector number + sector = chunkId + gFirstSaveSector; + sector %= NUM_SECTORS_PER_SAVE_SLOT; + // select save slot + sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); data = chunks[chunkId].data; size = chunks[chunkId].size; // clear temp save section. - for (i = 0; i < sizeof(struct SaveSection); i++) + for (i = 0; i < sizeof(struct SaveSector); i++) ((char *)gFastSaveSection)[i] = 0; gFastSaveSection->id = chunkId; @@ -339,90 +365,92 @@ static u8 sub_81255B8(u16 chunkId, const struct SaveBlockChunk *chunks) EraseFlashSector(sector); - status = 1; + status = SAVE_STATUS_OK; for (i = 0; i < sizeof(struct UnkSaveSection); i++) { if (ProgramFlashByte(sector, i, gFastSaveSection->data[i])) { - status = 0xFF; + status = SAVE_STATUS_ERROR; break; } } - if (status == 0xFF) + if (status == SAVE_STATUS_ERROR) { - SetSectorDamagedStatus(ENABLE, sector); - return 0xFF; + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + return SAVE_STATUS_ERROR; } else { - status = 1; + status = SAVE_STATUS_OK; for (i = 0; i < 7; i++) { if (ProgramFlashByte(sector, 0xFF9 + i, ((u8 *)gFastSaveSection)[0xFF9 + i])) { - status = 0xFF; + status = SAVE_STATUS_ERROR; break; } } - if (status == 0xFF) + if (status == SAVE_STATUS_ERROR) { - SetSectorDamagedStatus(ENABLE, sector); - return 0xFF; + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + return SAVE_STATUS_ERROR; } else { - SetSectorDamagedStatus(DISABLE, sector); - return 1; + SetSectorDamagedStatus(SECTOR_OK, sector); + return SAVE_STATUS_OK; } } } -static u8 sub_8125758(u16 a1, const struct SaveBlockChunk *chunk) +static u8 WriteSomeFlashByteToPrevSector(u16 a1, const struct SaveBlockChunk *chunk) { u16 sector; - sector = a1 + gLastWrittenSector - 1; - sector %= ARRAY_COUNT(sSaveBlockChunks); - sector += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); + // select sector number + sector = a1 + gFirstSaveSector - 1; + sector %= NUM_SECTORS_PER_SAVE_SLOT; + // select save slot + sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), ((u8 *)gFastSaveSection)[sizeof(struct UnkSaveSection)])) { // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. - SetSectorDamagedStatus(ENABLE, sector); - gLastWrittenSector = gLastKnownGoodSector; - gSaveCounter = gLastSaveCounter; + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; return SAVE_STATUS_ERROR; } else { - SetSectorDamagedStatus(DISABLE, sector); + SetSectorDamagedStatus(SECTOR_OK, sector); return SAVE_STATUS_OK; } } -static u8 sub_81257F0(u16 a1, const struct SaveBlockChunk *chunk) +static u8 WriteSomeFlashByte0x25ToPrevSector(u16 a1, const struct SaveBlockChunk *chunk) { u16 sector; - sector = a1 + gLastWrittenSector - 1; - sector %= ARRAY_COUNT(sSaveBlockChunks); - sector += ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); + sector = a1 + gFirstSaveSector - 1; + sector %= NUM_SECTORS_PER_SAVE_SLOT; + sector += NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); if (ProgramFlashByte(sector, sizeof(struct UnkSaveSection), 0x25)) { // sector is damaged, so enable the bit in gDamagedSaveSectors and restore the last written sector and save counter. - SetSectorDamagedStatus(ENABLE, sector); - gLastWrittenSector = gLastKnownGoodSector; - gSaveCounter = gLastSaveCounter; + SetSectorDamagedStatus(SECTOR_DAMAGED, sector); + gFirstSaveSector = gLastKnownGoodSector; + gSaveCounter = gPrevSaveCounter; return SAVE_STATUS_ERROR; } else { - SetSectorDamagedStatus(DISABLE, sector); + SetSectorDamagedStatus(SECTOR_OK, sector); return SAVE_STATUS_OK; } } @@ -448,15 +476,15 @@ static u8 sub_81258BC(u16 a1, const struct SaveBlockChunk *chunks) { u16 i; u16 checksum; - u16 v3 = ARRAY_COUNT(sSaveBlockChunks) * (gSaveCounter % 2); + u16 sector = NUM_SECTORS_PER_SAVE_SLOT * (gSaveCounter % 2); u16 id; - for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) + for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT; i++) { - DoReadFlashWholeSection(i + v3, gFastSaveSection); + DoReadFlashWholeSection(i + sector, gFastSaveSection); id = gFastSaveSection->id; if (id == 0) - gLastWrittenSector = i; + gFirstSaveSector = i; checksum = CalculateChecksum(gFastSaveSection->data, chunks[id].size); if (gFastSaveSection->signature == FILE_SIGNATURE && gFastSaveSection->checksum == checksum) @@ -472,37 +500,37 @@ static u8 sub_81258BC(u16 a1, const struct SaveBlockChunk *chunks) static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) { - u16 i; + u16 sector; bool8 signatureValid; u16 checksum; - u32 saveSlot1Counter = 0; - u32 saveSlot2Counter = 0; + u32 slot1saveCounter = 0; + u32 slot2saveCounter = 0; u8 slot1Status; u8 slot2Status; - u32 validChunks; - const u32 ALL_CHUNKS = (1 << ARRAY_COUNT(sSaveBlockChunks)) - 1; // bitmask of all saveblock chunks + u32 validSectors; + const u32 ALL_SECTORS = (1 << NUM_SECTORS_PER_SAVE_SLOT) - 1; // bitmask of all saveblock sectors // check save slot 1. - validChunks = 0; + validSectors = 0; signatureValid = FALSE; - for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) + for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++) { - DoReadFlashWholeSection(i, gFastSaveSection); + DoReadFlashWholeSection(sector, gFastSaveSection); if (gFastSaveSection->signature == FILE_SIGNATURE) { signatureValid = TRUE; checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); if (gFastSaveSection->checksum == checksum) { - saveSlot1Counter = gFastSaveSection->counter; - validChunks |= 1 << gFastSaveSection->id; + slot1saveCounter = gFastSaveSection->counter; + validSectors |= 1 << gFastSaveSection->id; } } } if (signatureValid) { - if (validChunks == ALL_CHUNKS) + if (validSectors == ALL_SECTORS) slot1Status = SAVE_STATUS_OK; else slot1Status = SAVE_STATUS_ERROR; @@ -513,26 +541,26 @@ static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) } // check save slot 2. - validChunks = 0; + validSectors = 0; signatureValid = FALSE; - for (i = 0; i < ARRAY_COUNT(sSaveBlockChunks); i++) + for (sector = 0; sector < NUM_SECTORS_PER_SAVE_SLOT; sector++) { - DoReadFlashWholeSection(i + ARRAY_COUNT(sSaveBlockChunks), gFastSaveSection); + DoReadFlashWholeSection(NUM_SECTORS_PER_SAVE_SLOT + sector, gFastSaveSection); if (gFastSaveSection->signature == FILE_SIGNATURE) { signatureValid = TRUE; checksum = CalculateChecksum(gFastSaveSection->data, chunks[gFastSaveSection->id].size); if (gFastSaveSection->checksum == checksum) { - saveSlot2Counter = gFastSaveSection->counter; - validChunks |= 1 << gFastSaveSection->id; + slot2saveCounter = gFastSaveSection->counter; + validSectors |= 1 << gFastSaveSection->id; } } } if (signatureValid) { - if (validChunks == ALL_CHUNKS) + if (validSectors == ALL_SECTORS) slot2Status = SAVE_STATUS_OK; else slot2Status = SAVE_STATUS_ERROR; @@ -544,26 +572,27 @@ static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) if (slot1Status == SAVE_STATUS_OK && slot2Status == SAVE_STATUS_OK) { - if ((saveSlot1Counter == -1 && saveSlot2Counter == 0) || (saveSlot1Counter == 0 && saveSlot2Counter == -1)) + // Choose counter of the most recent save file + if ((slot1saveCounter == -1 && slot2saveCounter == 0) || (slot1saveCounter == 0 && slot2saveCounter == -1)) { - if ((unsigned)(saveSlot1Counter + 1) < (unsigned)(saveSlot2Counter + 1)) - gSaveCounter = saveSlot2Counter; + if ((unsigned)(slot1saveCounter + 1) < (unsigned)(slot2saveCounter + 1)) + gSaveCounter = slot2saveCounter; else - gSaveCounter = saveSlot1Counter; + gSaveCounter = slot1saveCounter; } else { - if (saveSlot1Counter < saveSlot2Counter) - gSaveCounter = saveSlot2Counter; + if (slot1saveCounter < slot2saveCounter) + gSaveCounter = slot2saveCounter; else - gSaveCounter = saveSlot1Counter; + gSaveCounter = slot1saveCounter; } return SAVE_STATUS_OK; } if (slot1Status == SAVE_STATUS_OK) { - gSaveCounter = saveSlot1Counter; + gSaveCounter = slot1saveCounter; if (slot2Status == SAVE_STATUS_ERROR) return SAVE_STATUS_ERROR; else @@ -572,7 +601,7 @@ static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) if (slot2Status == SAVE_STATUS_OK) { - gSaveCounter = saveSlot2Counter; + gSaveCounter = slot2saveCounter; if (slot1Status == SAVE_STATUS_ERROR) return SAVE_STATUS_ERROR; else @@ -582,21 +611,21 @@ static u8 GetSaveValidStatus(const struct SaveBlockChunk *chunks) if (slot1Status == SAVE_STATUS_EMPTY && slot2Status == SAVE_STATUS_EMPTY) { gSaveCounter = 0; - gLastWrittenSector = 0; + gFirstSaveSector = 0; return SAVE_STATUS_EMPTY; } gSaveCounter = 0; - gLastWrittenSector = 0; + gFirstSaveSector = 0; return 2; } -static u8 sub_8125B88(u8 a1, u8 *data, u16 size) +static u8 ReadSomeUnknownSectorAndVerify(u8 sector, u8 *data, u16 size) { u16 i; - struct SaveSection *section = eSaveSection; + struct SaveSector *section = eSaveSection; - DoReadFlashWholeSection(a1, section); + DoReadFlashWholeSection(sector, section); if (section->signature == FILE_SIGNATURE) { u16 checksum = CalculateChecksum(section->data, size); @@ -604,7 +633,7 @@ static u8 sub_8125B88(u8 a1, u8 *data, u16 size) { for (i = 0; i < size; i++) data[i] = section->data[i]; - return 1; + return SAVE_STATUS_OK; } else { @@ -613,13 +642,13 @@ static u8 sub_8125B88(u8 a1, u8 *data, u16 size) } else { - return 0; + return SAVE_STATUS_EMPTY; } } -static u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section) +static u8 DoReadFlashWholeSection(u8 sector, struct SaveSector *section) { - ReadFlash(sector, 0, section->data, sizeof(struct SaveSection)); + ReadFlash(sector, 0, section->data, sizeof(struct SaveSector)); return 1; } @@ -640,15 +669,15 @@ u8 Save_WriteDataInternal(u8 saveType) switch (saveType) { - case SAVE_HALL_OF_FAME_ERASE_BEFORE: // wipes all normal save data, then saves hall of fame, unused - for (i = (ARRAY_COUNT(sSaveBlockChunks) * 2 + 0); i < TOTALNUMSECTORS; i++) + case SAVE_HALL_OF_FAME_ERASE_BEFORE: // wipes all hall of fame data, then saves hall of fame. unused + for (i = HALL_OF_FAME_SECTOR; i < TOTAL_FLASH_SECTORS; i++) EraseFlashSector(i); // fall through case SAVE_HALL_OF_FAME: // hall of fame. if (GetGameStat(10) < 999) IncrementGameStat(10); - for (i = 0; i < ARRAY_COUNT(sHallOfFameChunks); i++) - HandleWriteSectorNBytes((ARRAY_COUNT(sSaveBlockChunks) * 2 + 0) + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size); + for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++) + HandleWriteSectorNBytes(HALL_OF_FAME_SECTOR + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size); SaveSerializedGame(); WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); break; @@ -666,9 +695,10 @@ u8 Save_WriteDataInternal(u8 saveType) SaveSerializedGame(); WriteSaveBlockChunks(0, sSaveBlockChunks); break; - case SAVE_OVERWRITE_DIFFERENT_FILE: // there is a different file, so erase the file and overwrite it completely. - for (i = (ARRAY_COUNT(sSaveBlockChunks) * 2 + 0); i < TOTALNUMSECTORS; i++) - EraseFlashSector(i); // erase HOF. + case SAVE_OVERWRITE_DIFFERENT_FILE: // there is a different file, so overwrite it completely. + // Erase Hall of Fame. + for (i = HALL_OF_FAME_SECTOR; i < TOTAL_FLASH_SECTORS; i++) + EraseFlashSector(i); SaveSerializedGame(); WriteSaveBlockChunks(0xFFFF, sSaveBlockChunks); break; @@ -719,7 +749,7 @@ u8 sub_8125DDC(void) // trade.s save u8 sub_8125E04(void) // trade.s save { - sub_8125758(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks); + WriteSomeFlashByteToPrevSector(ARRAY_COUNT(sSaveBlockChunks), sSaveBlockChunks); if (gDamagedSaveSectors) DoSaveFailedScreen(0); return 0; @@ -736,6 +766,7 @@ u8 sub_8125E2C(void) return 0; } +// something to do with multiplayer. Possibly record mizing? bool8 sub_8125E6C(void) { u8 retVal = FALSE; @@ -743,11 +774,11 @@ bool8 sub_8125E6C(void) if (val <= 4) { sub_812556C(gUnknown_03005EB4 + 1, sSaveBlockChunks); - sub_81257F0(val, sSaveBlockChunks); + WriteSomeFlashByte0x25ToPrevSector(val, sSaveBlockChunks); } else { - sub_81257F0(val, sSaveBlockChunks); + WriteSomeFlashByte0x25ToPrevSector(val, sSaveBlockChunks); retVal = TRUE; } if (gDamagedSaveSectors) @@ -755,7 +786,7 @@ bool8 sub_8125E6C(void) return retVal; } -u8 sub_8125EC8(u8 a1) +u8 Save_LoadGameData(u8 saveType) { u8 result; @@ -765,34 +796,36 @@ u8 sub_8125EC8(u8 a1) return SAVE_STATUS_ERROR; } - switch (a1) + switch (saveType) { - case 0: + case SAVE_NORMAL: default: result = sub_812587C(0xFFFF, sSaveBlockChunks); LoadSerializedGame(); gSaveFileStatus = result; gGameContinueCallback = 0; break; - case 3: - result = sub_8125B88((ARRAY_COUNT(sSaveBlockChunks) * 2 + 0), sHallOfFameChunks[0].data, sHallOfFameChunks[0].size); - if (result == 1) - result = sub_8125B88((ARRAY_COUNT(sSaveBlockChunks) * 2 + 1), sHallOfFameChunks[1].data, sHallOfFameChunks[1].size); + case SAVE_HALL_OF_FAME: + result = ReadSomeUnknownSectorAndVerify(HALL_OF_FAME_SECTOR, sHallOfFameChunks[0].data, sHallOfFameChunks[0].size); + if (result == SAVE_STATUS_OK) + result = ReadSomeUnknownSectorAndVerify(HALL_OF_FAME_SECTOR + 1, sHallOfFameChunks[1].data, sHallOfFameChunks[1].size); break; } return result; } +static const u8 sUnusedFlashSectors[] = { 30, 31 }; + bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) { u16 i; char *raw = (char *)a1; - for (i = 0; i < sizeof(struct SaveSection); i++) + for (i = 0; i < sizeof(struct SaveSector); i++) raw[i] = 0; - ReadFlash(gFlashSectors[0], 0, a1->data, 4096); + ReadFlash(sUnusedFlashSectors[0], 0, a1->data, 4096); if (a1->signature != FILE_SIGNATURE) return FALSE; @@ -803,22 +836,22 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) u8 unref_sub_8125FA0(void) { u16 i; - u8 v0 = Save_WriteData(0); + u8 status = Save_WriteData(SAVE_NORMAL); for (i = 0; i < 2; i++) - EraseFlashSector(gFlashSectors[i]); + EraseFlashSector(sUnusedFlashSectors[i]); - if (v0 == 255) + if (status == SAVE_STATUS_ERROR) { return 3; } - else if (v0 == 3) + else if (status == 3) { return 2; } else { - sub_8125EC8(0); + Save_LoadGameData(SAVE_NORMAL); return 1; } } @@ -828,7 +861,7 @@ u8 unref_sub_8125FF0(u8 *data, u16 size) u16 i; struct UnkSaveSection *section = (struct UnkSaveSection *)eSaveSection; - for (i = 0; i < sizeof(struct SaveSection); i++) + for (i = 0; i < sizeof(struct SaveSector); i++) ((char *)section)[i] = 0; section->signature = FILE_SIGNATURE; @@ -836,7 +869,7 @@ u8 unref_sub_8125FF0(u8 *data, u16 size) for (i = 0; i < size; i++) section->data[i] = data[i]; - gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(gFlashSectors[0], section, sizeof(struct SaveSection)); + gLastSaveSectorStatus = ProgramFlashSectorAndVerifyNBytes(sUnusedFlashSectors[0], section, sizeof(struct SaveSector)); if (gLastSaveSectorStatus) return SAVE_STATUS_ERROR; @@ -854,6 +887,6 @@ u8 unref_sub_8126068(u8 sector, u8 *data, u32 size) u8 unref_sub_8126080(u8 sector, u8 *data) { - ReadFlash(sector, 0, data, sizeof(struct SaveSection)); + ReadFlash(sector, 0, data, sizeof(struct SaveSector)); return 1; } diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index 9e7e50d43..a9532fd09 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -539,7 +539,7 @@ static void sub_814217C(u8 taskID) ewram1E000(i) = 0; } else - sub_8125EC8(3); + Save_LoadGameData(SAVE_HALL_OF_FAME); for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++) { @@ -840,7 +840,7 @@ void sub_81428CC(void) static void sub_8142A28(u8 taskID) { - if (sub_8125EC8(3) != 1) + if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK) gTasks[taskID].func = sub_8142FEC; else { diff --git a/src/scene/intro.c b/src/scene/intro.c index d680e4a98..f7e196133 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -931,7 +931,7 @@ void CB2_InitCopyrightScreenAfterBootup(void) { sub_8052E4C(); Save_ResetSaveCounters(); - sub_8125EC8(0); + Save_LoadGameData(SAVE_NORMAL); if (gSaveFileStatus == 0 || gSaveFileStatus == 2) ClearSav2(); SetPokemonCryStereo(gSaveBlock2.optionsSound); -- cgit v1.2.3 From b9388f078ed95e80ac73b35eeb206e52ce376b0c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 13 Jan 2018 22:38:40 -0600 Subject: format base_stats.h --- src/data/pokemon/base_stats.h | 21389 +++++++++++++++++++++++++--------------- 1 file changed, 13569 insertions(+), 7820 deletions(-) (limited to 'src') diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index 37f59e1c6..be902635e 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -1,7823 +1,13572 @@ -// - -// - -#ifndef POKERUBY_BASE_STATS_H -#define POKERUBY_BASE_STATS_H - -const struct BaseStats gBaseStats[] = { - { // ?????????? - }, { - // Bulbasaur - 45, 49, 49, 45, 65, 65, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 64, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Ivysaur - 60, 62, 63, 60, 80, 80, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 141, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Venusaur - 80, 82, 83, 80, 100, 100, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 208, // base exp. yield - 0, 0, 0, 0, 2, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Charmander - 39, 52, 43, 65, 60, 50, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Charmeleon - 58, 64, 58, 80, 80, 65, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 142, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Charizard - 78, 84, 78, 100, 109, 85, - TYPE_FIRE, - TYPE_FLYING, - 45, // catch rate - 209, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Squirtle - 44, 48, 65, 43, 50, 64, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 66, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wartortle - 59, 63, 80, 58, 65, 80, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 143, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Blastoise - 79, 83, 100, 78, 85, 105, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 210, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Caterpie - 45, 30, 35, 45, 20, 20, - TYPE_BUG, - TYPE_BUG, - 255, // catch rate - 53, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Metapod - 50, 20, 55, 30, 25, 25, - TYPE_BUG, - TYPE_BUG, - 120, // catch rate - 72, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Butterfree - 60, 45, 50, 70, 80, 80, - TYPE_BUG, - TYPE_FLYING, - 45, // catch rate - 160, // base exp. yield - 0, 0, 0, 0, 2, 1, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_COMPOUND_EYES, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Weedle - 40, 35, 30, 50, 20, 20, - TYPE_BUG, - TYPE_POISON, - 255, // catch rate - 52, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Kakuna - 45, 25, 50, 35, 25, 25, - TYPE_BUG, - TYPE_POISON, - 120, // catch rate - 71, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Beedrill - 65, 80, 40, 75, 45, 80, - TYPE_BUG, - TYPE_POISON, - 45, // catch rate - 159, // base exp. yield - 0, 2, 0, 0, 0, 1, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Pidgey - 40, 45, 40, 56, 35, 35, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 55, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Pidgeotto - 63, 60, 55, 71, 50, 50, - TYPE_NORMAL, - TYPE_FLYING, - 120, // catch rate - 113, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Pidgeot - 83, 80, 75, 91, 70, 70, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 172, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Rattata - 30, 56, 35, 72, 25, 35, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 57, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Raticate - 55, 81, 60, 97, 50, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 127, // catch rate - 116, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Spearow - 40, 60, 30, 70, 31, 31, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 58, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Fearow - 65, 90, 65, 100, 61, 61, - TYPE_NORMAL, - TYPE_FLYING, - 90, // catch rate - 162, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_SHARP_BEAK, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ekans - 35, 60, 44, 55, 40, 54, - TYPE_POISON, - TYPE_POISON, - 255, // catch rate - 62, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_SHED_SKIN, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Arbok - 60, 85, 69, 80, 65, 79, - TYPE_POISON, - TYPE_POISON, - 90, // catch rate - 147, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_SHED_SKIN, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Pikachu - 35, 55, 30, 90, 50, 40, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 190, // catch rate - 82, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_ORAN_BERRY, - ITEM_LIGHT_BALL, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_STATIC, - ABILITY_NONE, - 6, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Raichu - 60, 90, 55, 100, 90, 80, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 75, // catch rate - 122, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Sandshrew - 50, 75, 85, 40, 20, 30, - TYPE_GROUND, - TYPE_GROUND, - 255, // catch rate - 93, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_QUICK_CLAW, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Sandslash - 75, 100, 110, 65, 45, 55, - TYPE_GROUND, - TYPE_GROUND, - 90, // catch rate - 163, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_QUICK_CLAW, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Nidoran♀ - 55, 47, 52, 41, 40, 40, - TYPE_POISON, - TYPE_POISON, - 235, // catch rate - 59, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Nidorina - 70, 62, 67, 56, 55, 55, - TYPE_POISON, - TYPE_POISON, - 120, // catch rate - 117, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Nidoqueen - 90, 82, 87, 76, 75, 85, - TYPE_POISON, - TYPE_GROUND, - 45, // catch rate - 194, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Nidoran♂ - 46, 57, 40, 50, 40, 40, - TYPE_POISON, - TYPE_POISON, - 235, // catch rate - 60, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Nidorino - 61, 72, 57, 65, 55, 55, - TYPE_POISON, - TYPE_POISON, - 120, // catch rate - 118, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Nidoking - 81, 92, 77, 85, 85, 75, - TYPE_POISON, - TYPE_GROUND, - 45, // catch rate - 195, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Clefairy - 70, 45, 48, 35, 60, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 150, // catch rate - 68, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_LEPPA_BERRY, - ITEM_MOON_STONE, - 191, // gender - 10, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Clefable - 95, 70, 73, 60, 85, 90, - TYPE_NORMAL, - TYPE_NORMAL, - 25, // catch rate - 129, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_LEPPA_BERRY, - ITEM_MOON_STONE, - 191, // gender - 10, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Vulpix - 38, 41, 40, 65, 50, 65, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 63, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_FLASH_FIRE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ninetales - 73, 76, 75, 100, 81, 100, - TYPE_FIRE, - TYPE_FIRE, - 75, // catch rate - 178, // base exp. yield - 0, 0, 0, 1, 0, 1, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_FLASH_FIRE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Jigglypuff - 115, 45, 20, 20, 45, 25, - TYPE_NORMAL, - TYPE_NORMAL, - 170, // catch rate - 76, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Wigglytuff - 140, 70, 45, 45, 75, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 50, // catch rate - 109, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Zubat - 40, 45, 35, 55, 30, 40, - TYPE_POISON, - TYPE_FLYING, - 255, // catch rate - 54, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Golbat - 75, 80, 70, 90, 65, 75, - TYPE_POISON, - TYPE_FLYING, - 90, // catch rate - 171, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Oddish - 45, 50, 55, 30, 75, 65, - TYPE_GRASS, - TYPE_POISON, - 255, // catch rate - 78, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 4, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Gloom - 60, 65, 70, 40, 85, 75, - TYPE_GRASS, - TYPE_POISON, - 120, // catch rate - 132, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 6, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Vileplume - 75, 80, 85, 50, 100, 90, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 184, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Paras - 35, 70, 55, 25, 45, 55, - TYPE_BUG, - TYPE_GRASS, - 190, // catch rate - 70, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_TINY_MUSHROOM, - ITEM_BIG_MUSHROOM, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Parasect - 60, 95, 80, 30, 60, 80, - TYPE_BUG, - TYPE_GRASS, - 75, // catch rate - 128, // base exp. yield - 0, 2, 1, 0, 0, 0, - ITEM_TINY_MUSHROOM, - ITEM_BIG_MUSHROOM, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Venonat - 60, 55, 50, 45, 40, 55, - TYPE_BUG, - TYPE_POISON, - 190, // catch rate - 75, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_COMPOUND_EYES, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Venomoth - 70, 65, 60, 90, 90, 75, - TYPE_BUG, - TYPE_POISON, - 75, // catch rate - 138, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Diglett - 10, 55, 25, 95, 35, 45, - TYPE_GROUND, - TYPE_GROUND, - 255, // catch rate - 81, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_ARENA_TRAP, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Dugtrio - 35, 80, 50, 120, 50, 70, - TYPE_GROUND, - TYPE_GROUND, - 50, // catch rate - 153, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_ARENA_TRAP, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Meowth - 40, 45, 35, 90, 40, 40, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 69, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Persian - 65, 70, 60, 115, 65, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 148, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_LIMBER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Psyduck - 50, 52, 48, 55, 65, 50, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 80, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_CLOUD_NINE, - 6, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Golduck - 80, 82, 78, 85, 95, 80, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 174, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_CLOUD_NINE, - 8, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Mankey - 40, 80, 35, 70, 35, 45, - TYPE_FIGHTING, - TYPE_FIGHTING, - 190, // catch rate - 74, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Primeape - 65, 105, 60, 95, 60, 70, - TYPE_FIGHTING, - TYPE_FIGHTING, - 75, // catch rate - 149, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Growlithe - 55, 70, 45, 60, 70, 50, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 91, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Arcanine - 90, 110, 80, 95, 100, 80, - TYPE_FIRE, - TYPE_FIRE, - 75, // catch rate - 213, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Poliwag - 40, 50, 40, 90, 40, 40, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 77, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Poliwhirl - 65, 65, 65, 90, 50, 50, - TYPE_WATER, - TYPE_WATER, - 120, // catch rate - 131, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Poliwrath - 90, 85, 95, 70, 70, 90, - TYPE_WATER, - TYPE_FIGHTING, - 45, // catch rate - 185, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Abra - 25, 20, 15, 90, 105, 55, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 200, // catch rate - 73, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_TWISTED_SPOON, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SYNCHRONIZE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Kadabra - 40, 35, 30, 105, 120, 70, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 100, // catch rate - 145, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_TWISTED_SPOON, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SYNCHRONIZE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Alakazam - 55, 50, 45, 120, 135, 85, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 50, // catch rate - 186, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_TWISTED_SPOON, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SYNCHRONIZE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Machop - 70, 80, 50, 35, 35, 35, - TYPE_FIGHTING, - TYPE_FIGHTING, - 180, // catch rate - 88, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Machoke - 80, 100, 70, 45, 50, 60, - TYPE_FIGHTING, - TYPE_FIGHTING, - 90, // catch rate - 146, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Machamp - 90, 130, 80, 55, 65, 85, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 193, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Bellsprout - 50, 75, 35, 40, 70, 30, - TYPE_GRASS, - TYPE_POISON, - 255, // catch rate - 84, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Weepinbell - 65, 90, 50, 55, 85, 45, - TYPE_GRASS, - TYPE_POISON, - 120, // catch rate - 151, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Victreebel - 80, 105, 65, 70, 100, 60, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 191, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Tentacool - 40, 40, 35, 70, 50, 100, - TYPE_WATER, - TYPE_POISON, - 190, // catch rate - 105, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_CLEAR_BODY, - ABILITY_LIQUID_OOZE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Tentacruel - 80, 70, 65, 100, 80, 120, - TYPE_WATER, - TYPE_POISON, - 60, // catch rate - 205, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_CLEAR_BODY, - ABILITY_LIQUID_OOZE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Geodude - 40, 80, 100, 20, 30, 30, - TYPE_ROCK, - TYPE_GROUND, - 255, // catch rate - 86, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_EVERSTONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 4, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Graveler - 55, 95, 115, 35, 45, 45, - TYPE_ROCK, - TYPE_GROUND, - 120, // catch rate - 134, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_EVERSTONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Golem - 80, 110, 130, 45, 55, 65, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 177, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_EVERSTONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ponyta - 50, 85, 55, 90, 65, 65, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 152, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Rapidash - 65, 100, 70, 105, 80, 80, - TYPE_FIRE, - TYPE_FIRE, - 60, // catch rate - 192, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Slowpoke - 90, 65, 65, 15, 40, 40, - TYPE_WATER, - TYPE_PSYCHIC, - 190, // catch rate - 99, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_OBLIVIOUS, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Slowbro - 95, 75, 110, 30, 100, 80, - TYPE_WATER, - TYPE_PSYCHIC, - 75, // catch rate - 164, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_OBLIVIOUS, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Magnemite - 25, 35, 70, 45, 95, 55, - TYPE_ELECTRIC, - TYPE_STEEL, - 190, // catch rate - 89, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_MAGNET_PULL, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Magneton - 50, 60, 95, 70, 120, 70, - TYPE_ELECTRIC, - TYPE_STEEL, - 60, // catch rate - 161, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_MAGNET_PULL, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Farfetch'd - 52, 65, 55, 60, 58, 62, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 94, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_STICK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FIELD, - ABILITY_KEEN_EYE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Doduo - 35, 85, 45, 75, 35, 35, - TYPE_NORMAL, - TYPE_FLYING, - 190, // catch rate - 96, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SHARP_BEAK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_RUN_AWAY, - ABILITY_EARLY_BIRD, - 8, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Dodrio - 60, 110, 70, 100, 60, 60, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 158, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SHARP_BEAK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_RUN_AWAY, - ABILITY_EARLY_BIRD, - 10, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Seel - 65, 45, 55, 45, 45, 70, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 100, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Dewgong - 90, 70, 80, 70, 70, 95, - TYPE_WATER, - TYPE_ICE, - 75, // catch rate - 176, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Grimer - 80, 80, 50, 25, 40, 50, - TYPE_POISON, - TYPE_POISON, - 190, // catch rate - 90, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NUGGET, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_STENCH, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Muk - 105, 105, 75, 50, 65, 100, - TYPE_POISON, - TYPE_POISON, - 75, // catch rate - 157, // base exp. yield - 1, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NUGGET, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_STENCH, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Shellder - 30, 65, 100, 40, 45, 25, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 97, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_PEARL, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SHELL_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Cloyster - 50, 95, 180, 70, 85, 45, - TYPE_WATER, - TYPE_ICE, - 60, // catch rate - 203, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_PEARL, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SHELL_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Gastly - 30, 35, 30, 80, 100, 35, - TYPE_GHOST, - TYPE_POISON, - 190, // catch rate - 95, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Haunter - 45, 50, 45, 95, 115, 55, - TYPE_GHOST, - TYPE_POISON, - 90, // catch rate - 126, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Gengar - 60, 65, 60, 110, 130, 75, - TYPE_GHOST, - TYPE_POISON, - 45, // catch rate - 190, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Onix - 35, 45, 160, 70, 30, 45, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 108, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Drowzee - 60, 48, 45, 42, 43, 90, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 190, // catch rate - 102, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Hypno - 85, 73, 70, 67, 73, 115, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 75, // catch rate - 165, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Krabby - 30, 105, 90, 50, 25, 25, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 115, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Kingler - 55, 130, 115, 75, 50, 50, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 206, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED, TRUE - }, { // Voltorb - 40, 30, 50, 100, 55, 55, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 190, // catch rate - 103, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_SOUNDPROOF, - ABILITY_STATIC, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Electrode - 60, 50, 70, 140, 80, 80, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 60, // catch rate - 150, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_SOUNDPROOF, - ABILITY_STATIC, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Exeggcute - 60, 40, 80, 40, 60, 45, - TYPE_GRASS, - TYPE_PSYCHIC, - 90, // catch rate - 98, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Exeggutor - 95, 95, 85, 55, 125, 65, - TYPE_GRASS, - TYPE_PSYCHIC, - 45, // catch rate - 212, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Cubone - 50, 50, 95, 35, 40, 50, - TYPE_GROUND, - TYPE_GROUND, - 190, // catch rate - 87, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_THICK_CLUB, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_ROCK_HEAD, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Marowak - 60, 80, 110, 45, 50, 80, - TYPE_GROUND, - TYPE_GROUND, - 75, // catch rate - 124, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_THICK_CLUB, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_ROCK_HEAD, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Hitmonlee - 50, 120, 53, 87, 35, 110, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 139, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_LIMBER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Hitmonchan - 50, 105, 79, 76, 35, 110, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 140, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Lickitung - 90, 55, 75, 30, 60, 75, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 127, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_OWN_TEMPO, - ABILITY_OBLIVIOUS, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Koffing - 40, 65, 95, 35, 60, 45, - TYPE_POISON, - TYPE_POISON, - 190, // catch rate - 114, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_SMOKE_BALL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Weezing - 65, 90, 120, 60, 85, 70, - TYPE_POISON, - TYPE_POISON, - 60, // catch rate - 173, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_SMOKE_BALL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Rhyhorn - 80, 85, 95, 25, 30, 30, - TYPE_GROUND, - TYPE_ROCK, - 120, // catch rate - 135, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_LIGHTNING_ROD, - ABILITY_ROCK_HEAD, - 4, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Rhydon - 105, 130, 120, 40, 45, 45, - TYPE_GROUND, - TYPE_ROCK, - 60, // catch rate - 204, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_LIGHTNING_ROD, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Chansey - 250, 5, 5, 50, 35, 105, - TYPE_NORMAL, - TYPE_NORMAL, - 30, // catch rate - 255, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_LUCKY_EGG, - 254, // gender - 40, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_NATURAL_CURE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Tangela - 65, 55, 115, 60, 100, 40, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 166, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Kangaskhan - 105, 95, 80, 90, 40, 80, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 175, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_EARLY_BIRD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Horsea - 30, 40, 70, 60, 70, 25, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 83, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Seadra - 55, 65, 95, 85, 95, 45, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 155, // base exp. yield - 0, 0, 1, 0, 1, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Goldeen - 45, 67, 60, 63, 35, 50, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 111, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_WATER_VEIL, - 4, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Seaking - 80, 92, 65, 68, 65, 80, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 170, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_WATER_VEIL, - 6, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Staryu - 30, 45, 55, 85, 70, 55, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 106, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_STARDUST, - ITEM_STAR_PIECE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_ILLUMINATE, - ABILITY_NATURAL_CURE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Starmie - 60, 75, 85, 115, 100, 85, - TYPE_WATER, - TYPE_PSYCHIC, - 60, // catch rate - 207, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_STARDUST, - ITEM_STAR_PIECE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_ILLUMINATE, - ABILITY_NATURAL_CURE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Mr. mime - 40, 45, 65, 90, 100, 120, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 136, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_LEPPA_BERRY, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Scyther - 70, 110, 80, 105, 55, 80, - TYPE_BUG, - TYPE_FLYING, - 45, // catch rate - 187, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Jynx - 65, 50, 35, 95, 115, 95, - TYPE_ICE, - TYPE_PSYCHIC, - 45, // catch rate - 137, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_ASPEAR_BERRY, - ITEM_ASPEAR_BERRY, - 254, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Electabuzz - 65, 83, 57, 105, 95, 85, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 156, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW, TRUE - }, { // Magmar - 65, 95, 57, 93, 100, 85, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 167, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_FLAME_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Pinsir - 65, 125, 100, 85, 55, 70, - TYPE_BUG, - TYPE_BUG, - 45, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_HYPER_CUTTER, - ABILITY_NONE, - 8, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Tauros - 75, 100, 95, 110, 40, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 211, // base exp. yield - 0, 1, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Magikarp - 20, 10, 55, 80, 15, 20, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 20, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 5, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 4, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Gyarados - 95, 125, 79, 81, 60, 100, - TYPE_WATER, - TYPE_FLYING, - 45, // catch rate - 214, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 5, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Lapras - 130, 85, 80, 60, 85, 95, - TYPE_WATER, - TYPE_ICE, - 45, // catch rate - 219, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Ditto - 48, 48, 48, 48, 48, 48, - TYPE_NORMAL, - TYPE_NORMAL, - 35, // catch rate - 61, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_POWDER, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_DITTO, - EGG_GROUP_DITTO, - ABILITY_LIMBER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Eevee - 55, 55, 50, 55, 45, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 92, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Vaporeon - 130, 65, 60, 65, 110, 95, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 196, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_WATER_ABSORB, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Jolteon - 65, 65, 60, 130, 110, 95, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 197, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VOLT_ABSORB, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Flareon - 65, 130, 60, 65, 95, 110, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 198, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_FLASH_FIRE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Porygon - 65, 60, 70, 40, 85, 75, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 130, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_TRACE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Omanyte - 35, 40, 100, 35, 90, 55, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 120, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Omastar - 70, 60, 125, 55, 115, 70, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 199, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Kabuto - 30, 80, 90, 55, 55, 45, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 119, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_BATTLE_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Kabutops - 60, 115, 105, 80, 65, 70, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 201, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_BATTLE_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Aerodactyl - 80, 105, 65, 130, 60, 75, - TYPE_ROCK, - TYPE_FLYING, - 45, // catch rate - 202, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_ROCK_HEAD, - ABILITY_PRESSURE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Snorlax - 160, 110, 65, 30, 65, 110, - TYPE_NORMAL, - TYPE_NORMAL, - 25, // catch rate - 154, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_LEFTOVERS, - ITEM_LEFTOVERS, - 31, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_IMMUNITY, - ABILITY_THICK_FAT, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Articuno - 90, 85, 100, 85, 95, 125, - TYPE_ICE, - TYPE_FLYING, - 3, // catch rate - 215, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Zapdos - 90, 90, 85, 100, 125, 90, - TYPE_ELECTRIC, - TYPE_FLYING, - 3, // catch rate - 216, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Moltres - 90, 100, 90, 90, 125, 85, - TYPE_FIRE, - TYPE_FLYING, - 3, // catch rate - 217, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Dratini - 41, 64, 45, 50, 50, 50, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 67, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Dragonair - 61, 84, 65, 70, 70, 70, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 144, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Dragonite - 91, 134, 95, 80, 100, 100, - TYPE_DRAGON, - TYPE_FLYING, - 45, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Mewtwo - 106, 110, 90, 130, 154, 90, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 3, // catch rate - 220, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Mew - 100, 100, 100, 100, 100, 100, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 64, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_LUM_BERRY, - ITEM_LUM_BERRY, - 255, // gender - 120, // egg cycles - 100, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_SYNCHRONIZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Chikorita - 45, 49, 65, 45, 49, 65, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 64, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Bayleef - 60, 62, 80, 60, 63, 80, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 141, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Meganium - 80, 82, 100, 80, 83, 100, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 208, // base exp. yield - 0, 0, 1, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Cyndaquil - 39, 52, 43, 65, 60, 50, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Quilava - 58, 64, 58, 80, 80, 65, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 142, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Typhlosion - 78, 84, 78, 100, 109, 85, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 209, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Totodile - 50, 65, 64, 43, 44, 48, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 66, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Croconaw - 65, 80, 80, 58, 59, 63, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 143, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Feraligatr - 85, 105, 100, 78, 79, 83, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 210, // base exp. yield - 0, 2, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sentret - 35, 46, 34, 20, 35, 45, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 57, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Furret - 85, 76, 64, 90, 45, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 116, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_ORAN_BERRY, - ITEM_SITRUS_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Hoothoot - 60, 30, 30, 50, 36, 56, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 58, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INSOMNIA, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Noctowl - 100, 50, 50, 70, 76, 96, - TYPE_NORMAL, - TYPE_FLYING, - 90, // catch rate - 162, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INSOMNIA, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ledyba - 40, 20, 30, 55, 40, 80, - TYPE_BUG, - TYPE_FLYING, - 255, // catch rate - 54, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Ledian - 55, 35, 50, 85, 55, 110, - TYPE_BUG, - TYPE_FLYING, - 90, // catch rate - 134, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Spinarak - 40, 60, 40, 30, 40, 40, - TYPE_BUG, - TYPE_POISON, - 255, // catch rate - 54, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_INSOMNIA, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Ariados - 70, 90, 70, 40, 60, 60, - TYPE_BUG, - TYPE_POISON, - 90, // catch rate - 134, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_INSOMNIA, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Crobat - 85, 90, 80, 130, 70, 80, - TYPE_POISON, - TYPE_FLYING, - 90, // catch rate - 204, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Chinchou - 75, 38, 38, 67, 56, 56, - TYPE_WATER, - TYPE_ELECTRIC, - 190, // catch rate - 90, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_YELLOW_SHARD, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_VOLT_ABSORB, - ABILITY_ILLUMINATE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Lanturn - 125, 58, 58, 67, 76, 76, - TYPE_WATER, - TYPE_ELECTRIC, - 75, // catch rate - 156, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_YELLOW_SHARD, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_VOLT_ABSORB, - ABILITY_ILLUMINATE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Pichu - 20, 40, 15, 60, 35, 35, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 190, // catch rate - 42, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Cleffa - 50, 25, 28, 15, 45, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 150, // catch rate - 37, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_LEPPA_BERRY, - ITEM_MOON_STONE, - 191, // gender - 10, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Igglybuff - 90, 30, 15, 15, 40, 20, - TYPE_NORMAL, - TYPE_NORMAL, - 170, // catch rate - 39, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK, TRUE - }, { // Togepi - 35, 20, 65, 20, 40, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_HUSTLE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Togetic - 55, 40, 85, 40, 80, 105, - TYPE_NORMAL, - TYPE_FLYING, - 75, // catch rate - 114, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FAIRY, - ABILITY_HUSTLE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Natu - 40, 50, 45, 70, 70, 45, - TYPE_PSYCHIC, - TYPE_FLYING, - 190, // catch rate - 73, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_SYNCHRONIZE, - ABILITY_EARLY_BIRD, - 6, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Xatu - 65, 75, 70, 95, 95, 70, - TYPE_PSYCHIC, - TYPE_FLYING, - 75, // catch rate - 171, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_SYNCHRONIZE, - ABILITY_EARLY_BIRD, - 8, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Mareep - 55, 40, 40, 35, 65, 45, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 235, // catch rate - 59, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Flaaffy - 70, 55, 55, 45, 80, 60, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 120, // catch rate - 117, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Ampharos - 90, 75, 75, 55, 115, 90, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 194, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Bellossom - 75, 80, 85, 50, 90, 100, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 184, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Marill - 70, 20, 50, 40, 20, 50, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 58, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FAIRY, - ABILITY_THICK_FAT, - ABILITY_HUGE_POWER, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Azumarill - 100, 50, 80, 50, 50, 80, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 153, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FAIRY, - ABILITY_THICK_FAT, - ABILITY_HUGE_POWER, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sudowoodo - 70, 100, 115, 30, 30, 65, - TYPE_ROCK, - TYPE_ROCK, - 65, // catch rate - 135, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Politoed - 90, 75, 75, 70, 90, 100, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 185, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN, TRUE - }, { // Hoppip - 35, 35, 40, 50, 35, 55, - TYPE_GRASS, - TYPE_FLYING, - 255, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Skiploom - 55, 45, 50, 80, 45, 65, - TYPE_GRASS, - TYPE_FLYING, - 120, // catch rate - 136, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Jumpluff - 75, 55, 70, 110, 55, 85, - TYPE_GRASS, - TYPE_FLYING, - 45, // catch rate - 176, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Aipom - 55, 70, 55, 85, 40, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 94, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_PICKUP, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Sunkern - 30, 30, 30, 30, 30, 30, - TYPE_GRASS, - TYPE_GRASS, - 235, // catch rate - 52, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Sunflora - 75, 75, 55, 30, 105, 85, - TYPE_GRASS, - TYPE_GRASS, - 120, // catch rate - 146, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Yanma - 65, 65, 45, 95, 75, 45, - TYPE_BUG, - TYPE_FLYING, - 75, // catch rate - 147, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SPEED_BOOST, - ABILITY_COMPOUND_EYES, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Wooper - 55, 45, 45, 15, 25, 25, - TYPE_WATER, - TYPE_GROUND, - 255, // catch rate - 52, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_WATER_ABSORB, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Quagsire - 95, 85, 85, 35, 65, 65, - TYPE_WATER, - TYPE_GROUND, - 90, // catch rate - 137, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_WATER_ABSORB, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Espeon - 65, 65, 60, 110, 130, 95, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 197, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SYNCHRONIZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Umbreon - 95, 65, 110, 65, 60, 130, - TYPE_DARK, - TYPE_DARK, - 45, // catch rate - 197, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SYNCHRONIZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Murkrow - 60, 85, 42, 91, 85, 42, - TYPE_DARK, - TYPE_FLYING, - 30, // catch rate - 107, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Slowking - 95, 75, 80, 30, 100, 110, - TYPE_WATER, - TYPE_PSYCHIC, - 70, // catch rate - 164, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_OBLIVIOUS, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Misdreavus - 60, 60, 60, 85, 85, 85, - TYPE_GHOST, - TYPE_GHOST, - 45, // catch rate - 147, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Unown - 48, 72, 48, 48, 72, 48, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 225, // catch rate - 61, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK, TRUE - }, { // Wobbuffet - 190, 33, 58, 33, 33, 58, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 177, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SHADOW_TAG, - ABILITY_NONE, - 4, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Girafarig - 70, 80, 65, 85, 90, 65, - TYPE_NORMAL, - TYPE_PSYCHIC, - 60, // catch rate - 149, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_PERSIM_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INNER_FOCUS, - ABILITY_EARLY_BIRD, - 4, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Pineco - 50, 65, 90, 15, 35, 35, - TYPE_BUG, - TYPE_BUG, - 190, // catch rate - 60, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Forretress - 75, 90, 140, 40, 60, 60, - TYPE_BUG, - TYPE_STEEL, - 75, // catch rate - 118, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Dunsparce - 100, 70, 70, 45, 65, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 75, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SERENE_GRACE, - ABILITY_RUN_AWAY, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Gligar - 65, 75, 105, 85, 35, 65, - TYPE_GROUND, - TYPE_FLYING, - 60, // catch rate - 108, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_HYPER_CUTTER, - ABILITY_SAND_VEIL, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Steelix - 75, 85, 200, 30, 55, 65, - TYPE_STEEL, - TYPE_GROUND, - 25, // catch rate - 196, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Snubbull - 60, 80, 50, 30, 40, 40, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 63, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_INTIMIDATE, - ABILITY_RUN_AWAY, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Granbull - 90, 120, 75, 45, 60, 60, - TYPE_NORMAL, - TYPE_NORMAL, - 75, // catch rate - 178, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_INTIMIDATE, - ABILITY_INTIMIDATE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Qwilfish - 65, 95, 75, 85, 55, 55, - TYPE_WATER, - TYPE_POISON, - 45, // catch rate - 100, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_POISON_POINT, - ABILITY_SWIFT_SWIM, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Scizor - 70, 130, 100, 65, 55, 80, - TYPE_BUG, - TYPE_STEEL, - 25, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Shuckle - 20, 10, 230, 5, 10, 230, - TYPE_BUG, - TYPE_ROCK, - 190, // catch rate - 80, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_ORAN_BERRY, - ITEM_ORAN_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Heracross - 80, 125, 75, 85, 40, 95, - TYPE_BUG, - TYPE_FIGHTING, - 45, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_GUTS, - 8, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sneasel - 55, 95, 55, 115, 35, 75, - TYPE_DARK, - TYPE_ICE, - 60, // catch rate - 132, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_QUICK_CLAW, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INNER_FOCUS, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK, TRUE - }, { // Teddiursa - 60, 80, 50, 40, 50, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 120, // catch rate - 124, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN, TRUE - }, { // Ursaring - 90, 130, 75, 55, 75, 75, - TYPE_NORMAL, - TYPE_NORMAL, - 60, // catch rate - 189, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Slugma - 40, 40, 40, 20, 70, 40, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 78, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_MAGMA_ARMOR, - ABILITY_FLAME_BODY, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Magcargo - 50, 50, 120, 30, 80, 80, - TYPE_FIRE, - TYPE_ROCK, - 75, // catch rate - 154, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_MAGMA_ARMOR, - ABILITY_FLAME_BODY, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Swinub - 50, 50, 40, 50, 30, 30, - TYPE_ICE, - TYPE_GROUND, - 225, // catch rate - 78, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Piloswine - 100, 100, 80, 50, 60, 60, - TYPE_ICE, - TYPE_GROUND, - 75, // catch rate - 160, // base exp. yield - 1, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Corsola - 55, 55, 85, 35, 65, 85, - TYPE_WATER, - TYPE_ROCK, - 60, // catch rate - 113, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_RED_SHARD, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_HUSTLE, - ABILITY_NATURAL_CURE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Remoraid - 35, 65, 35, 65, 65, 35, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 78, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_2, - ABILITY_HUSTLE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Octillery - 75, 105, 75, 45, 105, 75, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 164, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_2, - ABILITY_SUCTION_CUPS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Delibird - 45, 55, 45, 75, 65, 45, - TYPE_ICE, - TYPE_FLYING, - 45, // catch rate - 183, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_HUSTLE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Mantine - 65, 40, 70, 70, 80, 140, - TYPE_WATER, - TYPE_FLYING, - 25, // catch rate - 168, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SWIFT_SWIM, - ABILITY_WATER_ABSORB, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Skarmory - 65, 80, 140, 70, 40, 70, - TYPE_STEEL, - TYPE_FLYING, - 25, // catch rate - 168, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Houndour - 45, 60, 30, 65, 80, 50, - TYPE_DARK, - TYPE_FIRE, - 120, // catch rate - 114, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_EARLY_BIRD, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Houndoom - 75, 90, 50, 95, 110, 80, - TYPE_DARK, - TYPE_FIRE, - 45, // catch rate - 204, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_EARLY_BIRD, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Kingdra - 75, 95, 95, 85, 95, 95, - TYPE_WATER, - TYPE_DRAGON, - 45, // catch rate - 207, // base exp. yield - 0, 1, 0, 0, 1, 1, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Phanpy - 90, 60, 60, 40, 40, 40, - TYPE_GROUND, - TYPE_GROUND, - 120, // catch rate - 124, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 10, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Donphan - 90, 120, 120, 50, 60, 60, - TYPE_GROUND, - TYPE_GROUND, - 60, // catch rate - 189, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Porygon2 - 85, 80, 90, 60, 105, 95, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 180, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_TRACE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Stantler - 73, 95, 62, 85, 85, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 165, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Smeargle - 55, 20, 35, 75, 20, 45, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 106, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OWN_TEMPO, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Tyrogue - 35, 35, 35, 35, 35, 35, - TYPE_FIGHTING, - TYPE_FIGHTING, - 75, // catch rate - 91, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Hitmontop - 50, 95, 95, 70, 35, 110, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 138, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Smoochum - 45, 30, 15, 65, 85, 65, - TYPE_ICE, - TYPE_PSYCHIC, - 45, // catch rate - 87, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_ASPEAR_BERRY, - ITEM_ASPEAR_BERRY, - 254, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Elekid - 45, 63, 37, 95, 65, 55, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 106, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW, TRUE - }, { // Magby - 45, 75, 37, 83, 70, 55, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 117, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_FLAME_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Miltank - 95, 80, 105, 100, 40, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 200, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_MOOMOO_MILK, - ITEM_MOOMOO_MILK, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Blissey - 255, 10, 10, 55, 75, 135, - TYPE_NORMAL, - TYPE_NORMAL, - 30, // catch rate - 255, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_LUCKY_EGG, - 254, // gender - 40, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_NATURAL_CURE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Raikou - 90, 85, 75, 115, 115, 100, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 3, // catch rate - 216, // base exp. yield - 0, 0, 0, 2, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Entei - 115, 115, 85, 100, 90, 75, - TYPE_FIRE, - TYPE_FIRE, - 3, // catch rate - 217, // base exp. yield - 1, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Suicune - 100, 75, 115, 85, 90, 115, - TYPE_WATER, - TYPE_WATER, - 3, // catch rate - 215, // base exp. yield - 0, 0, 1, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Larvitar - 50, 64, 50, 41, 45, 50, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 67, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Pupitar - 70, 84, 70, 51, 65, 70, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 144, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Tyranitar - 100, 134, 110, 61, 95, 100, - TYPE_ROCK, - TYPE_DARK, - 45, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_SAND_STREAM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Lugia - 106, 90, 130, 110, 90, 154, - TYPE_PSYCHIC, - TYPE_FLYING, - 3, // catch rate - 220, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Ho-Oh - 106, 130, 90, 90, 110, 154, - TYPE_FIRE, - TYPE_FLYING, - 3, // catch rate - 220, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_SACRED_ASH, - ITEM_SACRED_ASH, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Celebi - 100, 100, 100, 100, 100, 100, - TYPE_PSYCHIC, - TYPE_GRASS, - 45, // catch rate - 64, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_LUM_BERRY, - ITEM_LUM_BERRY, - 255, // gender - 120, // egg cycles - 100, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NATURAL_CURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Treecko - 40, 45, 35, 70, 65, 55, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Grovyle - 50, 65, 45, 95, 85, 65, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 141, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Sceptile - 70, 85, 65, 120, 105, 85, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 208, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Torchic - 45, 60, 40, 45, 70, 50, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Combusken - 60, 85, 60, 55, 85, 60, - TYPE_FIRE, - TYPE_FIGHTING, - 45, // catch rate - 142, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Blaziken - 80, 120, 70, 80, 110, 70, - TYPE_FIRE, - TYPE_FIGHTING, - 45, // catch rate - 209, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Mudkip - 50, 70, 50, 40, 50, 50, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 65, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Marshtomp - 70, 85, 70, 50, 60, 70, - TYPE_WATER, - TYPE_GROUND, - 45, // catch rate - 143, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Swampert - 100, 110, 90, 60, 85, 90, - TYPE_WATER, - TYPE_GROUND, - 45, // catch rate - 210, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Poochyena - 35, 55, 35, 35, 30, 30, - TYPE_DARK, - TYPE_DARK, - 255, // catch rate - 55, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_PECHA_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Mightyena - 70, 90, 70, 70, 60, 60, - TYPE_DARK, - TYPE_DARK, - 127, // catch rate - 128, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_PECHA_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Zigzagoon - 38, 30, 41, 60, 30, 41, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 60, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Linoone - 78, 70, 61, 100, 50, 61, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 128, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_ORAN_BERRY, - ITEM_SITRUS_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Wurmple - 45, 45, 35, 20, 20, 30, - TYPE_BUG, - TYPE_BUG, - 255, // catch rate - 54, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Silcoon - 50, 35, 55, 15, 25, 25, - TYPE_BUG, - TYPE_BUG, - 120, // catch rate - 71, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Beautifly - 60, 70, 50, 65, 90, 50, - TYPE_BUG, - TYPE_FLYING, - 45, // catch rate - 161, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Cascoon - 50, 35, 55, 15, 25, 25, - TYPE_BUG, - TYPE_BUG, - 120, // catch rate - 72, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Dustox - 60, 50, 70, 65, 50, 90, - TYPE_BUG, - TYPE_POISON, - 45, // catch rate - 160, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Lotad - 40, 30, 30, 30, 40, 50, - TYPE_WATER, - TYPE_GRASS, - 255, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_GRASS, - ABILITY_SWIFT_SWIM, - ABILITY_RAIN_DISH, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Lombre - 60, 50, 50, 50, 60, 70, - TYPE_WATER, - TYPE_GRASS, - 120, // catch rate - 141, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_GRASS, - ABILITY_SWIFT_SWIM, - ABILITY_RAIN_DISH, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Ludicolo - 80, 70, 70, 70, 90, 100, - TYPE_WATER, - TYPE_GRASS, - 45, // catch rate - 181, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_GRASS, - ABILITY_SWIFT_SWIM, - ABILITY_RAIN_DISH, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Seedot - 40, 40, 50, 30, 30, 30, - TYPE_GRASS, - TYPE_GRASS, - 255, // catch rate - 74, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Nuzleaf - 70, 70, 40, 60, 60, 40, - TYPE_GRASS, - TYPE_DARK, - 120, // catch rate - 141, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Shiftry - 90, 100, 60, 80, 90, 60, - TYPE_GRASS, - TYPE_DARK, - 45, // catch rate - 181, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Nincada - 31, 45, 90, 40, 30, 30, - TYPE_BUG, - TYPE_GROUND, - 255, // catch rate - 65, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_COMPOUND_EYES, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Ninjask - 61, 90, 45, 160, 50, 50, - TYPE_BUG, - TYPE_FLYING, - 120, // catch rate - 155, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SPEED_BOOST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Shedinja - 1, 90, 45, 40, 30, 30, - TYPE_BUG, - TYPE_GHOST, - 45, // catch rate - 95, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_WONDER_GUARD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Taillow - 40, 55, 30, 85, 30, 30, - TYPE_NORMAL, - TYPE_FLYING, - 200, // catch rate - 59, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Swellow - 60, 85, 60, 125, 50, 50, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 162, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Shroomish - 60, 40, 60, 35, 40, 60, - TYPE_GRASS, - TYPE_GRASS, - 255, // catch rate - 65, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Breloom - 60, 130, 80, 70, 60, 60, - TYPE_GRASS, - TYPE_FIGHTING, - 90, // catch rate - 165, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Spinda - 60, 60, 60, 60, 60, 60, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 85, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_HUMAN_LIKE, - ABILITY_OWN_TEMPO, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN, TRUE - }, { // Wingull - 40, 30, 30, 85, 55, 30, - TYPE_WATER, - TYPE_FLYING, - 190, // catch rate - 64, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Pelipper - 60, 50, 100, 65, 85, 70, - TYPE_WATER, - TYPE_FLYING, - 45, // catch rate - 164, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Surskit - 40, 30, 32, 65, 50, 52, - TYPE_BUG, - TYPE_WATER, - 200, // catch rate - 63, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_BUG, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Masquerain - 70, 60, 62, 60, 80, 82, - TYPE_BUG, - TYPE_FLYING, - 75, // catch rate - 128, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_BUG, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wailmer - 130, 70, 35, 60, 70, 35, - TYPE_WATER, - TYPE_WATER, - 125, // catch rate - 137, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FIELD, - EGG_GROUP_WATER_2, - ABILITY_WATER_VEIL, - ABILITY_OBLIVIOUS, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wailord - 170, 90, 45, 60, 90, 45, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 206, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FIELD, - EGG_GROUP_WATER_2, - ABILITY_WATER_VEIL, - ABILITY_OBLIVIOUS, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Skitty - 50, 45, 45, 50, 35, 35, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_LEPPA_BERRY, - 191, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Delcatty - 70, 65, 65, 70, 55, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 60, // catch rate - 138, // base exp. yield - 1, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_LEPPA_BERRY, - 191, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Kecleon - 60, 90, 70, 40, 60, 120, - TYPE_NORMAL, - TYPE_NORMAL, - 200, // catch rate - 132, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_PERSIM_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_COLOR_CHANGE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Baltoy - 40, 40, 55, 55, 40, 70, - TYPE_GROUND, - TYPE_PSYCHIC, - 255, // catch rate - 58, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Claydol - 60, 70, 105, 75, 70, 120, - TYPE_GROUND, - TYPE_PSYCHIC, - 90, // catch rate - 189, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Nosepass - 30, 45, 135, 30, 45, 90, - TYPE_ROCK, - TYPE_ROCK, - 255, // catch rate - 108, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_STURDY, - ABILITY_MAGNET_PULL, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Torkoal - 70, 85, 140, 20, 85, 70, - TYPE_FIRE, - TYPE_FIRE, - 90, // catch rate - 161, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_WHITE_SMOKE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Sableye - 50, 75, 75, 50, 65, 65, - TYPE_DARK, - TYPE_GHOST, - 45, // catch rate - 98, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Barboach - 50, 48, 43, 60, 46, 41, - TYPE_WATER, - TYPE_GROUND, - 190, // catch rate - 92, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Whiscash - 110, 78, 73, 60, 76, 71, - TYPE_WATER, - TYPE_GROUND, - 75, // catch rate - 158, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Luvdisc - 43, 30, 55, 97, 40, 65, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 110, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_HEART_SCALE, - ITEM_NONE, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Corphish - 43, 80, 65, 35, 50, 35, - TYPE_WATER, - TYPE_WATER, - 205, // catch rate - 111, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Crawdaunt - 63, 120, 85, 55, 90, 55, - TYPE_WATER, - TYPE_DARK, - 155, // catch rate - 161, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Feebas - 20, 15, 20, 80, 10, 55, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 61, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Milotic - 95, 60, 79, 81, 100, 125, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 213, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_MARVEL_SCALE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Carvanha - 45, 90, 20, 65, 65, 20, - TYPE_WATER, - TYPE_DARK, - 225, // catch rate - 88, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_ROUGH_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Sharpedo - 70, 120, 40, 95, 95, 40, - TYPE_WATER, - TYPE_DARK, - 60, // catch rate - 175, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_ROUGH_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Trapinch - 45, 100, 45, 10, 45, 45, - TYPE_GROUND, - TYPE_GROUND, - 255, // catch rate - 73, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SOFT_SAND, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_HYPER_CUTTER, - ABILITY_ARENA_TRAP, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Vibrava - 50, 70, 50, 70, 50, 50, - TYPE_GROUND, - TYPE_DRAGON, - 120, // catch rate - 126, // base exp. yield - 0, 1, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_LEVITATE, - ABILITY_LEVITATE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Flygon - 80, 100, 80, 100, 80, 80, - TYPE_GROUND, - TYPE_DRAGON, - 45, // catch rate - 197, // base exp. yield - 0, 1, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_LEVITATE, - ABILITY_LEVITATE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Makuhita - 72, 60, 30, 25, 20, 30, - TYPE_FIGHTING, - TYPE_FIGHTING, - 180, // catch rate - 87, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_THICK_FAT, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Hariyama - 144, 120, 60, 50, 40, 60, - TYPE_FIGHTING, - TYPE_FIGHTING, - 200, // catch rate - 184, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_THICK_FAT, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Electrike - 40, 45, 40, 65, 65, 40, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 120, // catch rate - 104, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Manectric - 70, 75, 60, 105, 105, 60, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 168, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Numel - 60, 60, 40, 35, 65, 45, - TYPE_FIRE, - TYPE_GROUND, - 255, // catch rate - 88, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Camerupt - 70, 100, 70, 40, 105, 75, - TYPE_FIRE, - TYPE_GROUND, - 150, // catch rate - 175, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_MAGMA_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Spheal - 70, 40, 50, 25, 55, 50, - TYPE_ICE, - TYPE_WATER, - 255, // catch rate - 75, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sealeo - 90, 60, 70, 45, 75, 70, - TYPE_ICE, - TYPE_WATER, - 120, // catch rate - 128, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Walrein - 110, 80, 90, 65, 95, 90, - TYPE_ICE, - TYPE_WATER, - 45, // catch rate - 192, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Cacnea - 50, 85, 40, 35, 85, 40, - TYPE_GRASS, - TYPE_GRASS, - 190, // catch rate - 97, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Cacturne - 70, 115, 60, 55, 115, 60, - TYPE_GRASS, - TYPE_DARK, - 60, // catch rate - 177, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Snorunt - 50, 50, 50, 50, 50, 50, - TYPE_ICE, - TYPE_ICE, - 190, // catch rate - 74, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_MINERAL, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Glalie - 80, 80, 80, 80, 80, 80, - TYPE_ICE, - TYPE_ICE, - 75, // catch rate - 187, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NEVER_MELT_ICE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_MINERAL, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Lunatone - 70, 55, 65, 70, 95, 85, - TYPE_ROCK, - TYPE_PSYCHIC, - 45, // catch rate - 150, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_MOON_STONE, - 255, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Solrock - 70, 95, 85, 70, 55, 65, - TYPE_ROCK, - TYPE_PSYCHIC, - 45, // catch rate - 150, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SUN_STONE, - 255, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Azurill - 50, 20, 40, 20, 20, 40, - TYPE_NORMAL, - TYPE_NORMAL, - 150, // catch rate - 33, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_THICK_FAT, - ABILITY_HUGE_POWER, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Spoink - 60, 25, 35, 60, 70, 80, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 255, // catch rate - 89, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Grumpig - 80, 45, 65, 80, 90, 110, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 60, // catch rate - 164, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Plusle - 60, 50, 40, 95, 85, 75, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 200, // catch rate - 120, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_PLUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Minun - 60, 40, 50, 95, 75, 85, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 200, // catch rate - 120, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_MINUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Mawile - 50, 85, 85, 50, 55, 55, - TYPE_STEEL, - TYPE_STEEL, - 45, // catch rate - 98, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_HYPER_CUTTER, - ABILITY_INTIMIDATE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Meditite - 30, 40, 55, 60, 40, 55, - TYPE_FIGHTING, - TYPE_PSYCHIC, - 180, // catch rate - 91, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_PURE_POWER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Medicham - 60, 60, 75, 80, 60, 75, - TYPE_FIGHTING, - TYPE_PSYCHIC, - 90, // catch rate - 153, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_PURE_POWER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Swablu - 45, 40, 60, 50, 40, 75, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_FLYING, - EGG_GROUP_DRAGON, - ABILITY_NATURAL_CURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Altaria - 75, 70, 90, 80, 70, 105, - TYPE_DRAGON, - TYPE_FLYING, - 45, // catch rate - 188, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_FLYING, - EGG_GROUP_DRAGON, - ABILITY_NATURAL_CURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wynaut - 95, 23, 48, 23, 23, 48, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 125, // catch rate - 44, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_SHADOW_TAG, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Duskull - 20, 40, 90, 25, 30, 90, - TYPE_GHOST, - TYPE_GHOST, - 190, // catch rate - 97, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Dusclops - 40, 70, 130, 25, 60, 130, - TYPE_GHOST, - TYPE_GHOST, - 90, // catch rate - 179, // base exp. yield - 0, 0, 1, 0, 0, 2, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Roselia - 50, 60, 45, 65, 100, 80, - TYPE_GRASS, - TYPE_POISON, - 150, // catch rate - 152, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_NATURAL_CURE, - ABILITY_POISON_POINT, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN, TRUE - }, { // Slakoth - 60, 60, 60, 30, 35, 35, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 83, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_TRUANT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Vigoroth - 80, 80, 80, 90, 55, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 120, // catch rate - 126, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Slaking - 150, 160, 100, 100, 95, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 210, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_TRUANT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Gulpin - 70, 43, 53, 40, 43, 53, - TYPE_POISON, - TYPE_POISON, - 225, // catch rate - 75, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LIQUID_OOZE, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Swalot - 100, 73, 83, 55, 73, 83, - TYPE_POISON, - TYPE_POISON, - 75, // catch rate - 168, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LIQUID_OOZE, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Tropius - 99, 68, 83, 51, 72, 87, - TYPE_GRASS, - TYPE_FLYING, - 200, // catch rate - 169, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Whismur - 64, 51, 23, 28, 51, 23, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 68, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Loudred - 84, 71, 43, 48, 71, 43, - TYPE_NORMAL, - TYPE_NORMAL, - 120, // catch rate - 126, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Exploud - 104, 91, 63, 68, 91, 63, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 184, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Clamperl - 35, 64, 85, 32, 74, 55, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 142, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_BLUE_SHARD, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SHELL_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Huntail - 55, 104, 105, 52, 94, 75, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 178, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Gorebyss - 55, 84, 105, 52, 114, 75, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 178, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Absol - 65, 130, 60, 75, 75, 60, - TYPE_DARK, - TYPE_DARK, - 30, // catch rate - 174, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE, TRUE - }, { // Shuppet - 44, 75, 35, 45, 63, 33, - TYPE_GHOST, - TYPE_GHOST, - 225, // catch rate - 97, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Banette - 64, 115, 65, 65, 83, 63, - TYPE_GHOST, - TYPE_GHOST, - 45, // catch rate - 179, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Seviper - 73, 100, 60, 65, 100, 60, - TYPE_POISON, - TYPE_POISON, - 90, // catch rate - 165, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FIELD, - EGG_GROUP_DRAGON, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK, TRUE - }, { // Zangoose - 73, 115, 60, 90, 60, 60, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 165, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_IMMUNITY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE, TRUE - }, { // Relicanth - 100, 90, 130, 55, 45, 65, - TYPE_WATER, - TYPE_ROCK, - 25, // catch rate - 198, // base exp. yield - 1, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_GREEN_SHARD, - 31, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Aron - 50, 70, 100, 30, 40, 40, - TYPE_STEEL, - TYPE_ROCK, - 180, // catch rate - 96, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_HARD_STONE, - 127, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Lairon - 60, 90, 140, 40, 50, 50, - TYPE_STEEL, - TYPE_ROCK, - 90, // catch rate - 152, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_HARD_STONE, - 127, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Aggron - 70, 110, 180, 50, 60, 60, - TYPE_STEEL, - TYPE_ROCK, - 45, // catch rate - 205, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_HARD_STONE, - 127, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Castform - 70, 70, 70, 70, 70, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 145, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_MYSTIC_WATER, - ITEM_MYSTIC_WATER, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_AMORPHOUS, - ABILITY_FORECAST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Volbeat - 65, 73, 55, 85, 47, 75, - TYPE_BUG, - TYPE_BUG, - 150, // catch rate - 146, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_BUG, - EGG_GROUP_HUMAN_LIKE, - ABILITY_ILLUMINATE, - ABILITY_SWARM, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Illumise - 65, 47, 55, 85, 73, 75, - TYPE_BUG, - TYPE_BUG, - 150, // catch rate - 146, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_BUG, - EGG_GROUP_HUMAN_LIKE, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Lileep - 66, 41, 77, 23, 61, 87, - TYPE_ROCK, - TYPE_GRASS, - 45, // catch rate - 121, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SUCTION_CUPS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Cradily - 86, 81, 97, 43, 81, 107, - TYPE_ROCK, - TYPE_GRASS, - 45, // catch rate - 201, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SUCTION_CUPS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Anorith - 45, 95, 50, 75, 40, 50, - TYPE_ROCK, - TYPE_BUG, - 45, // catch rate - 119, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_BATTLE_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Armaldo - 75, 125, 100, 45, 70, 80, - TYPE_ROCK, - TYPE_BUG, - 45, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_BATTLE_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Ralts - 28, 25, 25, 40, 45, 35, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 235, // catch rate - 70, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SYNCHRONIZE, - ABILITY_TRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Kirlia - 38, 35, 35, 50, 65, 55, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 120, // catch rate - 140, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SYNCHRONIZE, - ABILITY_TRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Gardevoir - 68, 65, 65, 80, 125, 115, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 208, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SYNCHRONIZE, - ABILITY_TRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Bagon - 45, 75, 60, 50, 40, 30, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 89, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_DRAGON, - EGG_GROUP_DRAGON, - ABILITY_ROCK_HEAD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Shelgon - 65, 95, 100, 50, 60, 50, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 144, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_DRAGON, - EGG_GROUP_DRAGON, - ABILITY_ROCK_HEAD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Salamence - 95, 135, 80, 100, 110, 80, - TYPE_DRAGON, - TYPE_FLYING, - 45, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_DRAGON, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Beldum - 40, 55, 80, 30, 35, 60, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 103, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Metang - 60, 75, 100, 50, 55, 80, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 153, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Metagross - 80, 135, 130, 70, 95, 90, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 210, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Regirock - 80, 100, 200, 50, 50, 100, - TYPE_ROCK, - TYPE_ROCK, - 3, // catch rate - 217, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Regice - 80, 50, 100, 50, 100, 200, - TYPE_ICE, - TYPE_ICE, - 3, // catch rate - 216, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Registeel - 80, 75, 150, 50, 75, 150, - TYPE_STEEL, - TYPE_STEEL, - 3, // catch rate - 215, // base exp. yield - 0, 0, 2, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Kyogre - 100, 100, 90, 90, 150, 140, - TYPE_WATER, - TYPE_WATER, - 5, // catch rate - 218, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_DRIZZLE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Groudon - 100, 150, 140, 90, 100, 90, - TYPE_GROUND, - TYPE_GROUND, - 5, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_DROUGHT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Rayquaza - 105, 150, 90, 95, 150, 90, - TYPE_DRAGON, - TYPE_FLYING, - 3, // catch rate - 220, // base exp. yield - 0, 2, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_AIR_LOCK, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Latias - 80, 80, 90, 110, 110, 130, - TYPE_DRAGON, - TYPE_PSYCHIC, - 3, // catch rate - 211, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 120, // egg cycles - 90, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Latios - 80, 90, 80, 110, 130, 110, - TYPE_DRAGON, - TYPE_PSYCHIC, - 3, // catch rate - 211, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 120, // egg cycles - 90, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Jirachi - 100, 100, 100, 100, 100, 100, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 215, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_STAR_PIECE, - ITEM_STAR_PIECE, - 255, // gender - 120, // egg cycles - 100, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_SERENE_GRACE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Deoxys - 50, 150, 50, 150, 150, 50, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 3, // catch rate - 215, // base exp. yield - 0, 1, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED, TRUE - }, { // Chimecho - 65, 50, 70, 65, 95, 80, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 147, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE +#ifndef GUARD_BASE_STATS_H +#define GUARD_BASE_STATS_H + +const struct BaseStats gBaseStats[] = +{ + [SPECIES_NONE] = {0}, + + [SPECIES_BULBASAUR] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 49, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_IVYSAUR] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 63, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_VENUSAUR] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 83, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CHARMANDER] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CHARMELEON] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CHARIZARD] = + { + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SQUIRTLE] = + { + .baseHP = 44, + .baseAttack = 48, + .baseDefense = 65, + .baseSpeed = 43, + .baseSpAttack = 50, + .baseSpDefense = 64, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 66, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WARTORTLE] = + { + .baseHP = 59, + .baseAttack = 63, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 65, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_BLASTOISE] = + { + .baseHP = 79, + .baseAttack = 83, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 85, + .baseSpDefense = 105, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CATERPIE] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 20, + .baseSpDefense = 20, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 255, + .expYield = 53, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_METAPOD] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 72, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BUTTERFREE] = + { + .baseHP = 60, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 160, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_WEEDLE] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 20, + .baseSpDefense = 20, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KAKUNA] = + { + .baseHP = 45, + .baseAttack = 25, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 71, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_BEEDRILL] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 40, + .baseSpeed = 75, + .baseSpAttack = 45, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 159, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEY] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 56, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEOTTO] = + { + .baseHP = 63, + .baseAttack = 60, + .baseDefense = 55, + .baseSpeed = 71, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 113, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PIDGEOT] = + { + .baseHP = 83, + .baseAttack = 80, + .baseDefense = 75, + .baseSpeed = 91, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 172, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_RATTATA] = + { + .baseHP = 30, + .baseAttack = 56, + .baseDefense = 35, + .baseSpeed = 72, + .baseSpAttack = 25, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 57, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_RATICATE] = + { + .baseHP = 55, + .baseAttack = 81, + .baseDefense = 60, + .baseSpeed = 97, + .baseSpAttack = 50, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 127, + .expYield = 116, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SPEAROW] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 70, + .baseSpAttack = 31, + .baseSpDefense = 31, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_FEAROW] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 61, + .baseSpDefense = 61, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 162, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_EKANS] = + { + .baseHP = 35, + .baseAttack = 60, + .baseDefense = 44, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 54, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 62, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_SHED_SKIN, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ARBOK] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 69, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 79, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_SHED_SKIN, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_PIKACHU] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 40, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 82, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_LIGHT_BALL, + .genderRatio = 127, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_RAICHU] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 55, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 80, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 75, + .expYield = 122, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = 127, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SANDSHREW] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 93, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SANDSLASH] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 90, + .expYield = 163, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_NIDORAN_F] = + { + .baseHP = 55, + .baseAttack = 47, + .baseDefense = 52, + .baseSpeed = 41, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 235, + .expYield = 59, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 254, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORINA] = + { + .baseHP = 70, + .baseAttack = 62, + .baseDefense = 67, + .baseSpeed = 56, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 117, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 254, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDOQUEEN] = + { + .baseHP = 90, + .baseAttack = 82, + .baseDefense = 87, + .baseSpeed = 76, + .baseSpAttack = 75, + .baseSpDefense = 85, + .type1 = TYPE_POISON, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 194, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 254, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORAN_M] = + { + .baseHP = 46, + .baseAttack = 57, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 235, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_NIDORINO] = + { + .baseHP = 61, + .baseAttack = 72, + .baseDefense = 57, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 118, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_NIDOKING] = + { + .baseHP = 81, + .baseAttack = 92, + .baseDefense = 77, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 195, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CLEFAIRY] = + { + .baseHP = 70, + .baseAttack = 45, + .baseDefense = 48, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 68, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CLEFABLE] = + { + .baseHP = 95, + .baseAttack = 70, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 25, + .expYield = 129, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_VULPIX] = + { + .baseHP = 38, + .baseAttack = 41, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 191, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NINETALES] = + { + .baseHP = 73, + .baseAttack = 76, + .baseDefense = 75, + .baseSpeed = 100, + .baseSpAttack = 81, + .baseSpDefense = 100, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 75, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 191, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_JIGGLYPUFF] = + { + .baseHP = 115, + .baseAttack = 45, + .baseDefense = 20, + .baseSpeed = 20, + .baseSpAttack = 45, + .baseSpDefense = 25, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 170, + .expYield = 76, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_WIGGLYTUFF] = + { + .baseHP = 140, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 50, + .expYield = 109, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ZUBAT] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 55, + .baseSpAttack = 30, + .baseSpDefense = 40, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GOLBAT] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 70, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 75, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 171, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ODDISH] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 75, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GLOOM] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_VILEPLUME] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 90, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PARAS] = + { + .baseHP = 35, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 25, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_BUG, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 70, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PARASECT] = + { + .baseHP = 60, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_GRASS, + .catchRate = 75, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_TINY_MUSHROOM, + .item2 = ITEM_BIG_MUSHROOM, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_VENONAT] = + { + .baseHP = 60, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 45, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 75, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_VENOMOTH] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 90, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 138, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DIGLETT] = + { + .baseHP = 10, + .baseAttack = 55, + .baseDefense = 25, + .baseSpeed = 95, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 81, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DUGTRIO] = + { + .baseHP = 35, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 120, + .baseSpAttack = 50, + .baseSpDefense = 70, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 50, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MEOWTH] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 69, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PERSIAN] = + { + .baseHP = 65, + .baseAttack = 70, + .baseDefense = 60, + .baseSpeed = 115, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 148, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PSYDUCK] = + { + .baseHP = 50, + .baseAttack = 52, + .baseDefense = 48, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 80, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_CLOUD_NINE, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_GOLDUCK] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 78, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 174, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_CLOUD_NINE, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MANKEY] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PRIMEAPE] = + { + .baseHP = 65, + .baseAttack = 105, + .baseDefense = 60, + .baseSpeed = 95, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 149, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GROWLITHE] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ARCANINE] = + { + .baseHP = 90, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 95, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 75, + .expYield = 213, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_POLIWAG] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 77, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_POLIWHIRL] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 120, + .expYield = 131, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_POLIWRATH] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 90, + .type1 = TYPE_WATER, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 185, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_ABRA] = + { + .baseHP = 25, + .baseAttack = 20, + .baseDefense = 15, + .baseSpeed = 90, + .baseSpAttack = 105, + .baseSpDefense = 55, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 200, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KADABRA] = + { + .baseHP = 40, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 105, + .baseSpAttack = 120, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 100, + .expYield = 145, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ALAKAZAM] = + { + .baseHP = 55, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 120, + .baseSpAttack = 135, + .baseSpDefense = 85, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 50, + .expYield = 186, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_TWISTED_SPOON, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MACHOP] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 180, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MACHOKE] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 60, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 90, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MACHAMP] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 55, + .baseSpAttack = 65, + .baseSpDefense = 85, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 193, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_BELLSPROUT] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 40, + .baseSpAttack = 70, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 84, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_WEEPINBELL] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 45, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 120, + .expYield = 151, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_VICTREEBEL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 100, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 191, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_TENTACOOL] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 105, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_LIQUID_OOZE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_TENTACRUEL] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 65, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 120, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 60, + .expYield = 205, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_LIQUID_OOZE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GEODUDE] = + { + .baseHP = 40, + .baseAttack = 80, + .baseDefense = 100, + .baseSpeed = 20, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 86, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GRAVELER] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 115, + .baseSpeed = 35, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 120, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GOLEM] = + { + .baseHP = 80, + .baseAttack = 110, + .baseDefense = 130, + .baseSpeed = 45, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 177, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_EVERSTONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PONYTA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 55, + .baseSpeed = 90, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_RAPIDASH] = + { + .baseHP = 65, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 105, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 60, + .expYield = 192, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SLOWPOKE] = + { + .baseHP = 90, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 190, + .expYield = 99, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SLOWBRO] = + { + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 110, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_MAGNEMITE] = + { + .baseHP = 25, + .baseAttack = 35, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 95, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_STEEL, + .catchRate = 190, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_MAGNET_PULL, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MAGNETON] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 120, + .baseSpDefense = 70, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_STEEL, + .catchRate = 60, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_MAGNET_PULL, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_FARFETCHD] = + { + .baseHP = 52, + .baseAttack = 65, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 58, + .baseSpDefense = 62, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 94, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_STICK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_INNER_FOCUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DODUO] = + { + .baseHP = 35, + .baseAttack = 85, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 96, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_DODRIO] = + { + .baseHP = 60, + .baseAttack = 110, + .baseDefense = 70, + .baseSpeed = 100, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 158, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SHARP_BEAK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 10, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SEEL] = + { + .baseHP = 65, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 45, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 100, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_DEWGONG] = + { + .baseHP = 90, + .baseAttack = 70, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 75, + .expYield = 176, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_GRIMER] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 90, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_STENCH, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MUK] = + { + .baseHP = 105, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 100, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 157, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NUGGET, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_STENCH, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SHELLDER] = + { + .baseHP = 30, + .baseAttack = 65, + .baseDefense = 100, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CLOYSTER] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 180, + .baseSpeed = 70, + .baseSpAttack = 85, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 60, + .expYield = 203, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_PEARL, + .item2 = ITEM_BIG_PEARL, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GASTLY] = + { + .baseHP = 30, + .baseAttack = 35, + .baseDefense = 30, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 35, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 95, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_HAUNTER] = + { + .baseHP = 45, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 55, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_GENGAR] = + { + .baseHP = 60, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 75, + .type1 = TYPE_GHOST, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 190, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_ONIX] = + { + .baseHP = 35, + .baseAttack = 45, + .baseDefense = 160, + .baseSpeed = 70, + .baseSpAttack = 30, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_DROWZEE] = + { + .baseHP = 60, + .baseAttack = 48, + .baseDefense = 45, + .baseSpeed = 42, + .baseSpAttack = 43, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 190, + .expYield = 102, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HYPNO] = + { + .baseHP = 85, + .baseAttack = 73, + .baseDefense = 70, + .baseSpeed = 67, + .baseSpAttack = 73, + .baseSpDefense = 115, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 75, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_KRABBY] = + { + .baseHP = 30, + .baseAttack = 105, + .baseDefense = 90, + .baseSpeed = 50, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 115, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_KINGLER] = + { + .baseHP = 55, + .baseAttack = 130, + .baseDefense = 115, + .baseSpeed = 75, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 206, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + }, + + [SPECIES_VOLTORB] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 50, + .baseSpeed = 100, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 103, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_STATIC, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_ELECTRODE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 140, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 60, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_STATIC, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_EXEGGCUTE] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 80, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 45, + .type1 = TYPE_GRASS, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_EXEGGUTOR] = + { + .baseHP = 95, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 125, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 212, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CUBONE] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 190, + .expYield = 87, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MAROWAK] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 110, + .baseSpeed = 45, + .baseSpAttack = 50, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 124, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_THICK_CLUB, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HITMONLEE] = + { + .baseHP = 50, + .baseAttack = 120, + .baseDefense = 53, + .baseSpeed = 87, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 139, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HITMONCHAN] = + { + .baseHP = 50, + .baseAttack = 105, + .baseDefense = 79, + .baseSpeed = 76, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 140, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LICKITUNG] = + { + .baseHP = 90, + .baseAttack = 55, + .baseDefense = 75, + .baseSpeed = 30, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 127, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_KOFFING] = + { + .baseHP = 40, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 35, + .baseSpAttack = 60, + .baseSpDefense = 45, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 190, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_WEEZING] = + { + .baseHP = 65, + .baseAttack = 90, + .baseDefense = 120, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 60, + .expYield = 173, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SMOKE_BALL, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_RHYHORN] = + { + .baseHP = 80, + .baseAttack = 85, + .baseDefense = 95, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GROUND, + .type2 = TYPE_ROCK, + .catchRate = 120, + .expYield = 135, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIGHTNING_ROD, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_RHYDON] = + { + .baseHP = 105, + .baseAttack = 130, + .baseDefense = 120, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_ROCK, + .catchRate = 60, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_LIGHTNING_ROD, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_CHANSEY] = + { + .baseHP = 250, + .baseAttack = 5, + .baseDefense = 5, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 105, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 30, + .expYield = 255, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, + .genderRatio = 254, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_TANGELA] = + { + .baseHP = 65, + .baseAttack = 55, + .baseDefense = 115, + .baseSpeed = 60, + .baseSpAttack = 100, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 166, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_KANGASKHAN] = + { + .baseHP = 105, + .baseAttack = 95, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 175, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 254, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HORSEA] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 83, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SEADRA] = + { + .baseHP = 55, + .baseAttack = 65, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 155, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GOLDEEN] = + { + .baseHP = 45, + .baseAttack = 67, + .baseDefense = 60, + .baseSpeed = 63, + .baseSpAttack = 35, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 111, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_VEIL, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SEAKING] = + { + .baseHP = 80, + .baseAttack = 92, + .baseDefense = 65, + .baseSpeed = 68, + .baseSpAttack = 65, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 170, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_VEIL, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_STARYU] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 70, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_STARMIE] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 85, + .baseSpeed = 115, + .baseSpAttack = 100, + .baseSpDefense = 85, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 207, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STARDUST, + .item2 = ITEM_STAR_PIECE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MR_MIME] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 120, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 136, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SCYTHER] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 80, + .baseSpeed = 105, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 187, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_JYNX] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 35, + .baseSpeed = 95, + .baseSpAttack = 115, + .baseSpDefense = 95, + .type1 = TYPE_ICE, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 137, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, + .genderRatio = 254, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_ELECTABUZZ] = + { + .baseHP = 65, + .baseAttack = 83, + .baseDefense = 57, + .baseSpeed = 105, + .baseSpAttack = 95, + .baseSpDefense = 85, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 156, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 63, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + }, + + [SPECIES_MAGMAR] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 57, + .baseSpeed = 93, + .baseSpAttack = 100, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 167, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 63, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_FLAME_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PINSIR] = + { + .baseHP = 65, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 70, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_TAUROS] = + { + .baseHP = 75, + .baseAttack = 100, + .baseDefense = 95, + .baseSpeed = 110, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MAGIKARP] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 55, + .baseSpeed = 80, + .baseSpAttack = 15, + .baseSpDefense = 20, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 20, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 5, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_GYARADOS] = + { + .baseHP = 95, + .baseAttack = 125, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 60, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 214, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 5, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LAPRAS] = + { + .baseHP = 130, + .baseAttack = 85, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_ICE, + .catchRate = 45, + .expYield = 219, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DITTO] = + { + .baseHP = 48, + .baseAttack = 48, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 48, + .baseSpDefense = 48, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 35, + .expYield = 61, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_POWDER, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_DITTO, + .eggGroup2 = EGG_GROUP_DITTO, + .ability1 = ABILITY_LIMBER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_EEVEE] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 50, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 92, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VAPOREON] = + { + .baseHP = 130, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 110, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 196, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_JOLTEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 130, + .baseSpAttack = 110, + .baseSpDefense = 95, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_FLAREON] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 110, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 198, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_FLASH_FIRE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_PORYGON] = + { + .baseHP = 65, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 130, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_TRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_OMANYTE] = + { + .baseHP = 35, + .baseAttack = 40, + .baseDefense = 100, + .baseSpeed = 35, + .baseSpAttack = 90, + .baseSpDefense = 55, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_OMASTAR] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 125, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 199, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_KABUTO] = + { + .baseHP = 30, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 55, + .baseSpAttack = 55, + .baseSpDefense = 45, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 119, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_BATTLE_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_KABUTOPS] = + { + .baseHP = 60, + .baseAttack = 115, + .baseDefense = 105, + .baseSpeed = 80, + .baseSpAttack = 65, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 201, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_BATTLE_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_AERODACTYL] = + { + .baseHP = 80, + .baseAttack = 105, + .baseDefense = 65, + .baseSpeed = 130, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_ROCK, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 202, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_PRESSURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SNORLAX] = + { + .baseHP = 160, + .baseAttack = 110, + .baseDefense = 65, + .baseSpeed = 30, + .baseSpAttack = 65, + .baseSpDefense = 110, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 25, + .expYield = 154, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LEFTOVERS, + .item2 = ITEM_LEFTOVERS, + .genderRatio = 31, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_IMMUNITY, + .ability2 = ABILITY_THICK_FAT, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ARTICUNO] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 100, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 125, + .type1 = TYPE_ICE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ZAPDOS] = + { + .baseHP = 90, + .baseAttack = 90, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 125, + .baseSpDefense = 90, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MOLTRES] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 125, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_DRATINI] = + { + .baseHP = 41, + .baseAttack = 64, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 67, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DRAGONAIR] = + { + .baseHP = 61, + .baseAttack = 84, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DRAGONITE] = + { + .baseHP = 91, + .baseAttack = 134, + .baseDefense = 95, + .baseSpeed = 80, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MEWTWO] = + { + .baseHP = 106, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 130, + .baseSpAttack = 154, + .baseSpDefense = 90, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_MEW] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CHIKORITA] = + { + .baseHP = 45, + .baseAttack = 49, + .baseDefense = 65, + .baseSpeed = 45, + .baseSpAttack = 49, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BAYLEEF] = + { + .baseHP = 60, + .baseAttack = 62, + .baseDefense = 80, + .baseSpeed = 60, + .baseSpAttack = 63, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MEGANIUM] = + { + .baseHP = 80, + .baseAttack = 82, + .baseDefense = 100, + .baseSpeed = 80, + .baseSpAttack = 83, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CYNDAQUIL] = + { + .baseHP = 39, + .baseAttack = 52, + .baseDefense = 43, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_QUILAVA] = + { + .baseHP = 58, + .baseAttack = 64, + .baseDefense = 58, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 65, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_TYPHLOSION] = + { + .baseHP = 78, + .baseAttack = 84, + .baseDefense = 78, + .baseSpeed = 100, + .baseSpAttack = 109, + .baseSpDefense = 85, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_TOTODILE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 64, + .baseSpeed = 43, + .baseSpAttack = 44, + .baseSpDefense = 48, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 66, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CROCONAW] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 58, + .baseSpAttack = 59, + .baseSpDefense = 63, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = TRUE, + }, + + [SPECIES_FERALIGATR] = + { + .baseHP = 85, + .baseAttack = 105, + .baseDefense = 100, + .baseSpeed = 78, + .baseSpAttack = 79, + .baseSpDefense = 83, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SENTRET] = + { + .baseHP = 35, + .baseAttack = 46, + .baseDefense = 34, + .baseSpeed = 20, + .baseSpAttack = 35, + .baseSpDefense = 45, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 57, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_FURRET] = + { + .baseHP = 85, + .baseAttack = 76, + .baseDefense = 64, + .baseSpeed = 90, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 116, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_HOOTHOOT] = + { + .baseHP = 60, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 50, + .baseSpAttack = 36, + .baseSpDefense = 56, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NOCTOWL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 76, + .baseSpDefense = 96, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 162, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LEDYBA] = + { + .baseHP = 40, + .baseAttack = 20, + .baseDefense = 30, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_LEDIAN] = + { + .baseHP = 55, + .baseAttack = 35, + .baseDefense = 50, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 110, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SPINARAK] = + { + .baseHP = 40, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_INSOMNIA, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_ARIADOS] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 134, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_INSOMNIA, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CROBAT] = + { + .baseHP = 85, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 130, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_POISON, + .type2 = TYPE_FLYING, + .catchRate = 90, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CHINCHOU] = + { + .baseHP = 75, + .baseAttack = 38, + .baseDefense = 38, + .baseSpeed = 67, + .baseSpAttack = 56, + .baseSpDefense = 56, + .type1 = TYPE_WATER, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 90, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_ILLUMINATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LANTURN] = + { + .baseHP = 125, + .baseAttack = 58, + .baseDefense = 58, + .baseSpeed = 67, + .baseSpAttack = 76, + .baseSpDefense = 76, + .type1 = TYPE_WATER, + .type2 = TYPE_ELECTRIC, + .catchRate = 75, + .expYield = 156, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_YELLOW_SHARD, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_VOLT_ABSORB, + .ability2 = ABILITY_ILLUMINATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_PICHU] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 15, + .baseSpeed = 60, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 190, + .expYield = 42, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = 127, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CLEFFA] = + { + .baseHP = 50, + .baseAttack = 25, + .baseDefense = 28, + .baseSpeed = 15, + .baseSpAttack = 45, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 37, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_LEPPA_BERRY, + .item2 = ITEM_MOON_STONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_IGGLYBUFF] = + { + .baseHP = 90, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 15, + .baseSpAttack = 40, + .baseSpDefense = 20, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 170, + .expYield = 39, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = TRUE, + }, + + [SPECIES_TOGEPI] = + { + .baseHP = 35, + .baseAttack = 20, + .baseDefense = 65, + .baseSpeed = 20, + .baseSpAttack = 40, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_TOGETIC] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 85, + .baseSpeed = 40, + .baseSpAttack = 80, + .baseSpDefense = 105, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_NATU] = + { + .baseHP = 40, + .baseAttack = 50, + .baseDefense = 45, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 45, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 6, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_XATU] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 70, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 70, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 171, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MAREEP] = + { + .baseHP = 55, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 235, + .expYield = 59, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_FLAAFFY] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 55, + .baseSpeed = 45, + .baseSpAttack = 80, + .baseSpDefense = 60, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 120, + .expYield = 117, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_AMPHAROS] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 90, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 194, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_BELLOSSOM] = + { + .baseHP = 75, + .baseAttack = 80, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MARILL] = + { + .baseHP = 70, + .baseAttack = 20, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 20, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 58, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_AZUMARILL] = + { + .baseHP = 100, + .baseAttack = 50, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 80, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 153, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SUDOWOODO] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 115, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 65, + .expYield = 135, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_POLITOED] = + { + .baseHP = 90, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 185, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_WATER_ABSORB, + .ability2 = ABILITY_DAMP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + }, + + [SPECIES_HOPPIP] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 55, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_SKIPLOOM] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 50, + .baseSpeed = 80, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 136, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_JUMPLUFF] = + { + .baseHP = 75, + .baseAttack = 55, + .baseDefense = 70, + .baseSpeed = 110, + .baseSpAttack = 55, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 176, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_AIPOM] = + { + .baseHP = 55, + .baseAttack = 70, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 94, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_PICKUP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SUNKERN] = + { + .baseHP = 30, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 235, + .expYield = 52, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SUNFLORA] = + { + .baseHP = 75, + .baseAttack = 75, + .baseDefense = 55, + .baseSpeed = 30, + .baseSpAttack = 105, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 120, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_YANMA] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 45, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SPEED_BOOST, + .ability2 = ABILITY_COMPOUND_EYES, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_WOOPER] = + { + .baseHP = 55, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 52, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_QUAGSIRE] = + { + .baseHP = 95, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 90, + .expYield = 137, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_DAMP, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ESPEON] = + { + .baseHP = 65, + .baseAttack = 65, + .baseDefense = 60, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 95, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_UMBREON] = + { + .baseHP = 95, + .baseAttack = 65, + .baseDefense = 110, + .baseSpeed = 65, + .baseSpAttack = 60, + .baseSpDefense = 130, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_MURKROW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 42, + .baseSpeed = 91, + .baseSpAttack = 85, + .baseSpDefense = 42, + .type1 = TYPE_DARK, + .type2 = TYPE_FLYING, + .catchRate = 30, + .expYield = 107, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_SLOWKING] = + { + .baseHP = 95, + .baseAttack = 75, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 100, + .baseSpDefense = 110, + .type1 = TYPE_WATER, + .type2 = TYPE_PSYCHIC, + .catchRate = 70, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_MISDREAVUS] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 85, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_UNOWN] = + { + .baseHP = 48, + .baseAttack = 72, + .baseDefense = 48, + .baseSpeed = 48, + .baseSpAttack = 72, + .baseSpDefense = 48, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 225, + .expYield = 61, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_WOBBUFFET] = + { + .baseHP = 190, + .baseAttack = 33, + .baseDefense = 58, + .baseSpeed = 33, + .baseSpAttack = 33, + .baseSpDefense = 58, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 177, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SHADOW_TAG, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GIRAFARIG] = + { + .baseHP = 70, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 149, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 4, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_PINECO] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 90, + .baseSpeed = 15, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 190, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_FORRETRESS] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_BUG, + .type2 = TYPE_STEEL, + .catchRate = 75, + .expYield = 118, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DUNSPARCE] = + { + .baseHP = 100, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SERENE_GRACE, + .ability2 = ABILITY_RUN_AWAY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_GLIGAR] = + { + .baseHP = 65, + .baseAttack = 75, + .baseDefense = 105, + .baseSpeed = 85, + .baseSpAttack = 35, + .baseSpDefense = 65, + .type1 = TYPE_GROUND, + .type2 = TYPE_FLYING, + .catchRate = 60, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SAND_VEIL, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_STEELIX] = + { + .baseHP = 75, + .baseAttack = 85, + .baseDefense = 200, + .baseSpeed = 30, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_STEEL, + .type2 = TYPE_GROUND, + .catchRate = 25, + .expYield = 196, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_SNUBBULL] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_RUN_AWAY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_GRANBULL] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 75, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_INTIMIDATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_QWILFISH] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 100, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_POISON_POINT, + .ability2 = ABILITY_SWIFT_SWIM, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_SCIZOR] = + { + .baseHP = 70, + .baseAttack = 130, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_BUG, + .type2 = TYPE_STEEL, + .catchRate = 25, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SHUCKLE] = + { + .baseHP = 20, + .baseAttack = 10, + .baseDefense = 230, + .baseSpeed = 5, + .baseSpAttack = 10, + .baseSpDefense = 230, + .type1 = TYPE_BUG, + .type2 = TYPE_ROCK, + .catchRate = 190, + .expYield = 80, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HERACROSS] = + { + .baseHP = 80, + .baseAttack = 125, + .baseDefense = 75, + .baseSpeed = 85, + .baseSpAttack = 40, + .baseSpDefense = 95, + .type1 = TYPE_BUG, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 8, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SNEASEL] = + { + .baseHP = 55, + .baseAttack = 95, + .baseDefense = 55, + .baseSpeed = 115, + .baseSpAttack = 35, + .baseSpDefense = 75, + .type1 = TYPE_DARK, + .type2 = TYPE_ICE, + .catchRate = 60, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_QUICK_CLAW, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_KEEN_EYE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_TEDDIURSA] = + { + .baseHP = 60, + .baseAttack = 80, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 124, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + }, + + [SPECIES_URSARING] = + { + .baseHP = 90, + .baseAttack = 130, + .baseDefense = 75, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 60, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SLUGMA] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 70, + .baseSpDefense = 40, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 190, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_FLAME_BODY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MAGCARGO] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 120, + .baseSpeed = 30, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_FIRE, + .type2 = TYPE_ROCK, + .catchRate = 75, + .expYield = 154, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_FLAME_BODY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SWINUB] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 50, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_ICE, + .type2 = TYPE_GROUND, + .catchRate = 225, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_PILOSWINE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_ICE, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 160, + .evYield_HP = 1, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_CORSOLA] = + { + .baseHP = 55, + .baseAttack = 55, + .baseDefense = 85, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 85, + .type1 = TYPE_WATER, + .type2 = TYPE_ROCK, + .catchRate = 60, + .expYield = 113, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_RED_SHARD, + .genderRatio = 191, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_NATURAL_CURE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_REMORAID] = + { + .baseHP = 35, + .baseAttack = 65, + .baseDefense = 35, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 190, + .expYield = 78, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_HUSTLE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_OCTILLERY] = + { + .baseHP = 75, + .baseAttack = 105, + .baseDefense = 75, + .baseSpeed = 45, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 75, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_DELIBIRD] = + { + .baseHP = 45, + .baseAttack = 55, + .baseDefense = 45, + .baseSpeed = 75, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_ICE, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 183, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_HUSTLE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MANTINE] = + { + .baseHP = 65, + .baseAttack = 40, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 80, + .baseSpDefense = 140, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 25, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_WATER_ABSORB, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_SKARMORY] = + { + .baseHP = 65, + .baseAttack = 80, + .baseDefense = 140, + .baseSpeed = 70, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_STEEL, + .type2 = TYPE_FLYING, + .catchRate = 25, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_STURDY, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_HOUNDOUR] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 65, + .baseSpAttack = 80, + .baseSpDefense = 50, + .type1 = TYPE_DARK, + .type2 = TYPE_FIRE, + .catchRate = 120, + .expYield = 114, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_HOUNDOOM] = + { + .baseHP = 75, + .baseAttack = 90, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 110, + .baseSpDefense = 80, + .type1 = TYPE_DARK, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 204, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_EARLY_BIRD, + .ability2 = ABILITY_FLASH_FIRE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_KINGDRA] = + { + .baseHP = 75, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 85, + .baseSpAttack = 95, + .baseSpDefense = 95, + .type1 = TYPE_WATER, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 207, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_PHANPY] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 40, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 120, + .expYield = 124, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 10, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DONPHAN] = + { + .baseHP = 90, + .baseAttack = 120, + .baseDefense = 120, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 60, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_PORYGON2] = + { + .baseHP = 85, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 105, + .baseSpDefense = 95, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 180, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_TRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_STANTLER] = + { + .baseHP = 73, + .baseAttack = 95, + .baseDefense = 62, + .baseSpeed = 85, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SMEARGLE] = + { + .baseHP = 55, + .baseAttack = 20, + .baseDefense = 35, + .baseSpeed = 75, + .baseSpAttack = 20, + .baseSpDefense = 45, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_TYROGUE] = + { + .baseHP = 35, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 75, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_HITMONTOP] = + { + .baseHP = 50, + .baseAttack = 95, + .baseDefense = 95, + .baseSpeed = 70, + .baseSpAttack = 35, + .baseSpDefense = 110, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 138, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SMOOCHUM] = + { + .baseHP = 45, + .baseAttack = 30, + .baseDefense = 15, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_ICE, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 87, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_ASPEAR_BERRY, + .item2 = ITEM_ASPEAR_BERRY, + .genderRatio = 254, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ELEKID] = + { + .baseHP = 45, + .baseAttack = 63, + .baseDefense = 37, + .baseSpeed = 95, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 106, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 63, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = TRUE, + }, + + [SPECIES_MAGBY] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 37, + .baseSpeed = 83, + .baseSpAttack = 70, + .baseSpDefense = 55, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 117, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 63, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_FLAME_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MILTANK] = + { + .baseHP = 95, + .baseAttack = 80, + .baseDefense = 105, + .baseSpeed = 100, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_MOOMOO_MILK, + .item2 = ITEM_MOOMOO_MILK, + .genderRatio = 254, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_BLISSEY] = + { + .baseHP = 255, + .baseAttack = 10, + .baseDefense = 10, + .baseSpeed = 55, + .baseSpAttack = 75, + .baseSpDefense = 135, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 30, + .expYield = 255, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LUCKY_EGG, + .genderRatio = 254, + .eggCycles = 40, + .friendship = 140, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_SERENE_GRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_RAIKOU] = + { + .baseHP = 90, + .baseAttack = 85, + .baseDefense = 75, + .baseSpeed = 115, + .baseSpAttack = 115, + .baseSpDefense = 100, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_ENTEI] = + { + .baseHP = 115, + .baseAttack = 115, + .baseDefense = 85, + .baseSpeed = 100, + .baseSpAttack = 90, + .baseSpDefense = 75, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 1, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SUICUNE] = + { + .baseHP = 100, + .baseAttack = 75, + .baseDefense = 115, + .baseSpeed = 85, + .baseSpAttack = 90, + .baseSpDefense = 115, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LARVITAR] = + { + .baseHP = 50, + .baseAttack = 64, + .baseDefense = 50, + .baseSpeed = 41, + .baseSpAttack = 45, + .baseSpDefense = 50, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 67, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_PUPITAR] = + { + .baseHP = 70, + .baseAttack = 84, + .baseDefense = 70, + .baseSpeed = 51, + .baseSpAttack = 65, + .baseSpDefense = 70, + .type1 = TYPE_ROCK, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_TYRANITAR] = + { + .baseHP = 100, + .baseAttack = 134, + .baseDefense = 110, + .baseSpeed = 61, + .baseSpAttack = 95, + .baseSpDefense = 100, + .type1 = TYPE_ROCK, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_SAND_STREAM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LUGIA] = + { + .baseHP = 106, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 110, + .baseSpAttack = 90, + .baseSpDefense = 154, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_HO_OH] = + { + .baseHP = 106, + .baseAttack = 130, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 110, + .baseSpDefense = 154, + .type1 = TYPE_FIRE, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_SACRED_ASH, + .item2 = ITEM_SACRED_ASH, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CELEBI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 64, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_LUM_BERRY, + .item2 = ITEM_LUM_BERRY, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_B] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_C] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_D] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_E] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_F] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_G] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_H] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_I] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_J] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_K] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_L] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_M] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_N] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_O] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_P] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Q] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_R] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_S] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_T] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_U] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_V] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_W] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_X] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Y] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_OLD_UNOWN_Z] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 3, + .expYield = 1, + .evYield_HP = 2, + .evYield_Attack = 2, + .evYield_Defense = 2, + .evYield_Speed = 2, + .evYield_SpAttack = 2, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_NONE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_TREECKO] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 70, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_GROVYLE] = + { + .baseHP = 50, + .baseAttack = 65, + .baseDefense = 45, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 65, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SCEPTILE] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 65, + .baseSpeed = 120, + .baseSpAttack = 105, + .baseSpDefense = 85, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 3, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_OVERGROW, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_TORCHIC] = + { + .baseHP = 45, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 50, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_COMBUSKEN] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 85, + .baseSpDefense = 60, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_BLAZIKEN] = + { + .baseHP = 80, + .baseAttack = 120, + .baseDefense = 70, + .baseSpeed = 80, + .baseSpAttack = 110, + .baseSpDefense = 70, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIGHTING, + .catchRate = 45, + .expYield = 209, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_BLAZE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_MUDKIP] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MARSHTOMP] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 70, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 143, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SWAMPERT] = + { + .baseHP = 100, + .baseAttack = 110, + .baseDefense = 90, + .baseSpeed = 60, + .baseSpAttack = 85, + .baseSpDefense = 90, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_TORRENT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_POOCHYENA] = + { + .baseHP = 35, + .baseAttack = 55, + .baseDefense = 35, + .baseSpeed = 35, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 255, + .expYield = 55, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_RUN_AWAY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_MIGHTYENA] = + { + .baseHP = 70, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 127, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_PECHA_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ZIGZAGOON] = + { + .baseHP = 38, + .baseAttack = 30, + .baseDefense = 41, + .baseSpeed = 60, + .baseSpAttack = 30, + .baseSpDefense = 41, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 60, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_ORAN_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_LINOONE] = + { + .baseHP = 78, + .baseAttack = 70, + .baseDefense = 61, + .baseSpeed = 100, + .baseSpAttack = 50, + .baseSpDefense = 61, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_ORAN_BERRY, + .item2 = ITEM_SITRUS_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PICKUP, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_WURMPLE] = + { + .baseHP = 45, + .baseAttack = 45, + .baseDefense = 35, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 255, + .expYield = 54, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SILCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 71, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_BEAUTIFLY] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 65, + .baseSpAttack = 90, + .baseSpDefense = 50, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CASCOON] = + { + .baseHP = 50, + .baseAttack = 35, + .baseDefense = 55, + .baseSpeed = 15, + .baseSpAttack = 25, + .baseSpDefense = 25, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 120, + .expYield = 72, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_DUSTOX] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 90, + .type1 = TYPE_BUG, + .type2 = TYPE_POISON, + .catchRate = 45, + .expYield = 160, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SHIELD_DUST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LOTAD] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LOMBRE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 120, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LUDICOLO] = + { + .baseHP = 80, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 90, + .baseSpDefense = 100, + .type1 = TYPE_WATER, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 181, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_RAIN_DISH, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SEEDOT] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 30, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NUZLEAF] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 40, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 120, + .expYield = 141, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SHIFTRY] = + { + .baseHP = 90, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 45, + .expYield = 181, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_EARLY_BIRD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_NINCADA] = + { + .baseHP = 31, + .baseAttack = 45, + .baseDefense = 90, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_COMPOUND_EYES, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_NINJASK] = + { + .baseHP = 61, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 160, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 120, + .expYield = 155, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SPEED_BOOST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SHEDINJA] = + { + .baseHP = 1, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 40, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_BUG, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 95, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_WONDER_GUARD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_TAILLOW] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 30, + .baseSpDefense = 30, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 200, + .expYield = 59, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SWELLOW] = + { + .baseHP = 60, + .baseAttack = 85, + .baseDefense = 60, + .baseSpeed = 125, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 162, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_GUTS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SHROOMISH] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 35, + .baseSpAttack = 40, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_BRELOOM] = + { + .baseHP = 60, + .baseAttack = 130, + .baseDefense = 80, + .baseSpeed = 70, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_FIGHTING, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_EFFECT_SPORE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SPINDA] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 60, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 85, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OWN_TEMPO, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = TRUE, + }, + + [SPECIES_WINGULL] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 30, + .baseSpeed = 85, + .baseSpAttack = 55, + .baseSpDefense = 30, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 190, + .expYield = 64, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_PELIPPER] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 65, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_WATER, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FLYING, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SURSKIT] = + { + .baseHP = 40, + .baseAttack = 30, + .baseDefense = 32, + .baseSpeed = 65, + .baseSpAttack = 50, + .baseSpDefense = 52, + .type1 = TYPE_BUG, + .type2 = TYPE_WATER, + .catchRate = 200, + .expYield = 63, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MASQUERAIN] = + { + .baseHP = 70, + .baseAttack = 60, + .baseDefense = 62, + .baseSpeed = 60, + .baseSpAttack = 80, + .baseSpDefense = 82, + .type1 = TYPE_BUG, + .type2 = TYPE_FLYING, + .catchRate = 75, + .expYield = 128, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SILVER_POWDER, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WAILMER] = + { + .baseHP = 130, + .baseAttack = 70, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 125, + .expYield = 137, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_WATER_VEIL, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WAILORD] = + { + .baseHP = 170, + .baseAttack = 90, + .baseDefense = 45, + .baseSpeed = 60, + .baseSpAttack = 90, + .baseSpDefense = 45, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 206, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_WATER_VEIL, + .ability2 = ABILITY_OBLIVIOUS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SKITTY] = + { + .baseHP = 50, + .baseAttack = 45, + .baseDefense = 45, + .baseSpeed = 50, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 65, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = 191, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_DELCATTY] = + { + .baseHP = 70, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 60, + .expYield = 138, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_LEPPA_BERRY, + .genderRatio = 191, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_CUTE_CHARM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_KECLEON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 60, + .baseSpDefense = 120, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 200, + .expYield = 132, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_PERSIM_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_COLOR_CHANGE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_BALTOY] = + { + .baseHP = 40, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 55, + .baseSpAttack = 40, + .baseSpDefense = 70, + .type1 = TYPE_GROUND, + .type2 = TYPE_PSYCHIC, + .catchRate = 255, + .expYield = 58, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_CLAYDOL] = + { + .baseHP = 60, + .baseAttack = 70, + .baseDefense = 105, + .baseSpeed = 75, + .baseSpAttack = 70, + .baseSpDefense = 120, + .type1 = TYPE_GROUND, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 189, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_NOSEPASS] = + { + .baseHP = 30, + .baseAttack = 45, + .baseDefense = 135, + .baseSpeed = 30, + .baseSpAttack = 45, + .baseSpDefense = 90, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 255, + .expYield = 108, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_MAGNET_PULL, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_TORKOAL] = + { + .baseHP = 70, + .baseAttack = 85, + .baseDefense = 140, + .baseSpeed = 20, + .baseSpAttack = 85, + .baseSpDefense = 70, + .type1 = TYPE_FIRE, + .type2 = TYPE_FIRE, + .catchRate = 90, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_WHITE_SMOKE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_SABLEYE] = + { + .baseHP = 50, + .baseAttack = 75, + .baseDefense = 75, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 65, + .type1 = TYPE_DARK, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_KEEN_EYE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_BARBOACH] = + { + .baseHP = 50, + .baseAttack = 48, + .baseDefense = 43, + .baseSpeed = 60, + .baseSpAttack = 46, + .baseSpDefense = 41, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 190, + .expYield = 92, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_WHISCASH] = + { + .baseHP = 110, + .baseAttack = 78, + .baseDefense = 73, + .baseSpeed = 60, + .baseSpAttack = 76, + .baseSpDefense = 71, + .type1 = TYPE_WATER, + .type2 = TYPE_GROUND, + .catchRate = 75, + .expYield = 158, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_LUVDISC] = + { + .baseHP = 43, + .baseAttack = 30, + .baseDefense = 55, + .baseSpeed = 97, + .baseSpAttack = 40, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 225, + .expYield = 110, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_HEART_SCALE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CORPHISH] = + { + .baseHP = 43, + .baseAttack = 80, + .baseDefense = 65, + .baseSpeed = 35, + .baseSpAttack = 50, + .baseSpDefense = 35, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 205, + .expYield = 111, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_CRAWDAUNT] = + { + .baseHP = 63, + .baseAttack = 120, + .baseDefense = 85, + .baseSpeed = 55, + .baseSpAttack = 90, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 155, + .expYield = 161, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_SHELL_ARMOR, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_FEEBAS] = + { + .baseHP = 20, + .baseAttack = 15, + .baseDefense = 20, + .baseSpeed = 80, + .baseSpAttack = 10, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 61, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_MILOTIC] = + { + .baseHP = 95, + .baseAttack = 60, + .baseDefense = 79, + .baseSpeed = 81, + .baseSpAttack = 100, + .baseSpDefense = 125, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 213, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_MARVEL_SCALE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_CARVANHA] = + { + .baseHP = 45, + .baseAttack = 90, + .baseDefense = 20, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 20, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 225, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_ROUGH_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SHARPEDO] = + { + .baseHP = 70, + .baseAttack = 120, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 95, + .baseSpDefense = 40, + .type1 = TYPE_WATER, + .type2 = TYPE_DARK, + .catchRate = 60, + .expYield = 175, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_2, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_ROUGH_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_TRAPINCH] = + { + .baseHP = 45, + .baseAttack = 100, + .baseDefense = 45, + .baseSpeed = 10, + .baseSpAttack = 45, + .baseSpDefense = 45, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 73, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SOFT_SAND, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_ARENA_TRAP, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VIBRAVA] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 50, + .baseSpeed = 70, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_GROUND, + .type2 = TYPE_DRAGON, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_LEVITATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_FLYGON] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_GROUND, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 197, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_BUG, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_LEVITATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MAKUHITA] = + { + .baseHP = 72, + .baseAttack = 60, + .baseDefense = 30, + .baseSpeed = 25, + .baseSpAttack = 20, + .baseSpDefense = 30, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 180, + .expYield = 87, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_HARIYAMA] = + { + .baseHP = 144, + .baseAttack = 120, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 60, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_FIGHTING, + .catchRate = 200, + .expYield = 184, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_KINGS_ROCK, + .genderRatio = 63, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_GUTS, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_ELECTRIKE] = + { + .baseHP = 40, + .baseAttack = 45, + .baseDefense = 40, + .baseSpeed = 65, + .baseSpAttack = 65, + .baseSpDefense = 40, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 120, + .expYield = 104, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_MANECTRIC] = + { + .baseHP = 70, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 105, + .baseSpAttack = 105, + .baseSpDefense = 60, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 45, + .expYield = 168, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_STATIC, + .ability2 = ABILITY_LIGHTNING_ROD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_NUMEL] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 65, + .baseSpDefense = 45, + .type1 = TYPE_FIRE, + .type2 = TYPE_GROUND, + .catchRate = 255, + .expYield = 88, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_CAMERUPT] = + { + .baseHP = 70, + .baseAttack = 100, + .baseDefense = 70, + .baseSpeed = 40, + .baseSpAttack = 105, + .baseSpDefense = 75, + .type1 = TYPE_FIRE, + .type2 = TYPE_GROUND, + .catchRate = 150, + .expYield = 175, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_RAWST_BERRY, + .item2 = ITEM_RAWST_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_MAGMA_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SPHEAL] = + { + .baseHP = 70, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 25, + .baseSpAttack = 55, + .baseSpDefense = 50, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SEALEO] = + { + .baseHP = 90, + .baseAttack = 60, + .baseDefense = 70, + .baseSpeed = 45, + .baseSpAttack = 75, + .baseSpDefense = 70, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 120, + .expYield = 128, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WALREIN] = + { + .baseHP = 110, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_ICE, + .type2 = TYPE_WATER, + .catchRate = 45, + .expYield = 192, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CACNEA] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 40, + .baseSpeed = 35, + .baseSpAttack = 85, + .baseSpDefense = 40, + .type1 = TYPE_GRASS, + .type2 = TYPE_GRASS, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_CACTURNE] = + { + .baseHP = 70, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 55, + .baseSpAttack = 115, + .baseSpDefense = 60, + .type1 = TYPE_GRASS, + .type2 = TYPE_DARK, + .catchRate = 60, + .expYield = 177, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_GRASS, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_SAND_VEIL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SNORUNT] = + { + .baseHP = 50, + .baseAttack = 50, + .baseDefense = 50, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 190, + .expYield = 74, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_GLALIE] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 80, + .baseSpAttack = 80, + .baseSpDefense = 80, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 75, + .expYield = 187, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NEVER_MELT_ICE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_INNER_FOCUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_LUNATONE] = + { + .baseHP = 70, + .baseAttack = 55, + .baseDefense = 65, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 85, + .type1 = TYPE_ROCK, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_MOON_STONE, + .genderRatio = 255, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_SOLROCK] = + { + .baseHP = 70, + .baseAttack = 95, + .baseDefense = 85, + .baseSpeed = 70, + .baseSpAttack = 55, + .baseSpDefense = 65, + .type1 = TYPE_ROCK, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 150, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SUN_STONE, + .genderRatio = 255, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_AZURILL] = + { + .baseHP = 50, + .baseAttack = 20, + .baseDefense = 40, + .baseSpeed = 20, + .baseSpAttack = 20, + .baseSpDefense = 40, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 150, + .expYield = 33, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 191, + .eggCycles = 10, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_HUGE_POWER, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SPOINK] = + { + .baseHP = 60, + .baseAttack = 25, + .baseDefense = 35, + .baseSpeed = 60, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 255, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_GRUMPIG] = + { + .baseHP = 80, + .baseAttack = 45, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 90, + .baseSpDefense = 110, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 60, + .expYield = 164, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_THICK_FAT, + .ability2 = ABILITY_OWN_TEMPO, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_PLUSLE] = + { + .baseHP = 60, + .baseAttack = 50, + .baseDefense = 40, + .baseSpeed = 95, + .baseSpAttack = 85, + .baseSpDefense = 75, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 200, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_PLUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MINUN] = + { + .baseHP = 60, + .baseAttack = 40, + .baseDefense = 50, + .baseSpeed = 95, + .baseSpAttack = 75, + .baseSpDefense = 85, + .type1 = TYPE_ELECTRIC, + .type2 = TYPE_ELECTRIC, + .catchRate = 200, + .expYield = 120, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_MINUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_MAWILE] = + { + .baseHP = 50, + .baseAttack = 85, + .baseDefense = 85, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + .catchRate = 45, + .expYield = 98, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FAIRY, + .ability1 = ABILITY_HYPER_CUTTER, + .ability2 = ABILITY_INTIMIDATE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_MEDITITE] = + { + .baseHP = 30, + .baseAttack = 40, + .baseDefense = 55, + .baseSpeed = 60, + .baseSpAttack = 40, + .baseSpDefense = 55, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_PSYCHIC, + .catchRate = 180, + .expYield = 91, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_PURE_POWER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_MEDICHAM] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 75, + .baseSpeed = 80, + .baseSpAttack = 60, + .baseSpDefense = 75, + .type1 = TYPE_FIGHTING, + .type2 = TYPE_PSYCHIC, + .catchRate = 90, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_HUMAN_LIKE, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_PURE_POWER, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_SWABLU] = + { + .baseHP = 45, + .baseAttack = 40, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 75, + .type1 = TYPE_NORMAL, + .type2 = TYPE_FLYING, + .catchRate = 255, + .expYield = 74, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_ALTARIA] = + { + .baseHP = 75, + .baseAttack = 70, + .baseDefense = 90, + .baseSpeed = 80, + .baseSpAttack = 70, + .baseSpDefense = 105, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 188, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FLYING, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_WYNAUT] = + { + .baseHP = 95, + .baseAttack = 23, + .baseDefense = 48, + .baseSpeed = 23, + .baseSpAttack = 23, + .baseSpDefense = 48, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 125, + .expYield = 44, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SHADOW_TAG, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_DUSKULL] = + { + .baseHP = 20, + .baseAttack = 40, + .baseDefense = 90, + .baseSpeed = 25, + .baseSpAttack = 30, + .baseSpDefense = 90, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 190, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_DUSCLOPS] = + { + .baseHP = 40, + .baseAttack = 70, + .baseDefense = 130, + .baseSpeed = 25, + .baseSpAttack = 60, + .baseSpDefense = 130, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 90, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_ROSELIA] = + { + .baseHP = 50, + .baseAttack = 60, + .baseDefense = 45, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 80, + .type1 = TYPE_GRASS, + .type2 = TYPE_POISON, + .catchRate = 150, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_POISON_BARB, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_NATURAL_CURE, + .ability2 = ABILITY_POISON_POINT, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = TRUE, + }, + + [SPECIES_SLAKOTH] = + { + .baseHP = 60, + .baseAttack = 60, + .baseDefense = 60, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 35, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 255, + .expYield = 83, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_TRUANT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_VIGOROTH] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 80, + .baseSpeed = 90, + .baseSpAttack = 55, + .baseSpDefense = 55, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 2, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_VITAL_SPIRIT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_SLAKING] = + { + .baseHP = 150, + .baseAttack = 160, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 95, + .baseSpDefense = 65, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 210, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_TRUANT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_GULPIN] = + { + .baseHP = 70, + .baseAttack = 43, + .baseDefense = 53, + .baseSpeed = 40, + .baseSpAttack = 43, + .baseSpDefense = 53, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 225, + .expYield = 75, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LIQUID_OOZE, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_SWALOT] = + { + .baseHP = 100, + .baseAttack = 73, + .baseDefense = 83, + .baseSpeed = 55, + .baseSpAttack = 73, + .baseSpDefense = 83, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 75, + .expYield = 168, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BIG_PEARL, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LIQUID_OOZE, + .ability2 = ABILITY_STICKY_HOLD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_TROPIUS] = + { + .baseHP = 99, + .baseAttack = 68, + .baseDefense = 83, + .baseSpeed = 51, + .baseSpAttack = 72, + .baseSpDefense = 87, + .type1 = TYPE_GRASS, + .type2 = TYPE_FLYING, + .catchRate = 200, + .expYield = 169, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_GRASS, + .ability1 = ABILITY_CHLOROPHYLL, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_WHISMUR] = + { + .baseHP = 64, + .baseAttack = 51, + .baseDefense = 23, + .baseSpeed = 28, + .baseSpAttack = 51, + .baseSpDefense = 23, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 190, + .expYield = 68, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_LOUDRED] = + { + .baseHP = 84, + .baseAttack = 71, + .baseDefense = 43, + .baseSpeed = 48, + .baseSpAttack = 71, + .baseSpDefense = 43, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 120, + .expYield = 126, + .evYield_HP = 2, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_EXPLOUD] = + { + .baseHP = 104, + .baseAttack = 91, + .baseDefense = 63, + .baseSpeed = 68, + .baseSpAttack = 91, + .baseSpDefense = 63, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 184, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_CHESTO_BERRY, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_SOUNDPROOF, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_CLAMPERL] = + { + .baseHP = 35, + .baseAttack = 64, + .baseDefense = 85, + .baseSpeed = 32, + .baseSpAttack = 74, + .baseSpDefense = 55, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 255, + .expYield = 142, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_BLUE_SHARD, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SHELL_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_HUNTAIL] = + { + .baseHP = 55, + .baseAttack = 104, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 94, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GOREBYSS] = + { + .baseHP = 55, + .baseAttack = 84, + .baseDefense = 105, + .baseSpeed = 52, + .baseSpAttack = 114, + .baseSpDefense = 75, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 60, + .expYield = 178, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_1, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PINK, + .noFlip = FALSE, + }, + + [SPECIES_ABSOL] = + { + .baseHP = 65, + .baseAttack = 130, + .baseDefense = 60, + .baseSpeed = 75, + .baseSpAttack = 75, + .baseSpDefense = 60, + .type1 = TYPE_DARK, + .type2 = TYPE_DARK, + .catchRate = 30, + .expYield = 174, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_MEDIUM_SLOW, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + }, + + [SPECIES_SHUPPET] = + { + .baseHP = 44, + .baseAttack = 75, + .baseDefense = 35, + .baseSpeed = 45, + .baseSpAttack = 63, + .baseSpDefense = 33, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 225, + .expYield = 97, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_BANETTE] = + { + .baseHP = 64, + .baseAttack = 115, + .baseDefense = 65, + .baseSpeed = 65, + .baseSpAttack = 83, + .baseSpDefense = 63, + .type1 = TYPE_GHOST, + .type2 = TYPE_GHOST, + .catchRate = 45, + .expYield = 179, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_SPELL_TAG, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 35, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_INSOMNIA, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = FALSE, + }, + + [SPECIES_SEVIPER] = + { + .baseHP = 73, + .baseAttack = 100, + .baseDefense = 60, + .baseSpeed = 65, + .baseSpAttack = 100, + .baseSpDefense = 60, + .type1 = TYPE_POISON, + .type2 = TYPE_POISON, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_SHED_SKIN, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLACK, + .noFlip = TRUE, + }, + + [SPECIES_ZANGOOSE] = + { + .baseHP = 73, + .baseAttack = 115, + .baseDefense = 60, + .baseSpeed = 90, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 90, + .expYield = 165, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_FIELD, + .eggGroup2 = EGG_GROUP_FIELD, + .ability1 = ABILITY_IMMUNITY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = TRUE, + }, + + [SPECIES_RELICANTH] = + { + .baseHP = 100, + .baseAttack = 90, + .baseDefense = 130, + .baseSpeed = 55, + .baseSpAttack = 45, + .baseSpDefense = 65, + .type1 = TYPE_WATER, + .type2 = TYPE_ROCK, + .catchRate = 25, + .expYield = 198, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_GREEN_SHARD, + .genderRatio = 31, + .eggCycles = 40, + .friendship = 70, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_WATER_1, + .eggGroup2 = EGG_GROUP_WATER_2, + .ability1 = ABILITY_SWIFT_SWIM, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ARON] = + { + .baseHP = 50, + .baseAttack = 70, + .baseDefense = 100, + .baseSpeed = 30, + .baseSpAttack = 40, + .baseSpDefense = 40, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 180, + .expYield = 96, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = 127, + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_LAIRON] = + { + .baseHP = 60, + .baseAttack = 90, + .baseDefense = 140, + .baseSpeed = 40, + .baseSpAttack = 50, + .baseSpDefense = 50, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 90, + .expYield = 152, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = 127, + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_AGGRON] = + { + .baseHP = 70, + .baseAttack = 110, + .baseDefense = 180, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 60, + .type1 = TYPE_STEEL, + .type2 = TYPE_ROCK, + .catchRate = 45, + .expYield = 205, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_HARD_STONE, + .genderRatio = 127, + .eggCycles = 35, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MONSTER, + .eggGroup2 = EGG_GROUP_MONSTER, + .ability1 = ABILITY_STURDY, + .ability2 = ABILITY_ROCK_HEAD, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_CASTFORM] = + { + .baseHP = 70, + .baseAttack = 70, + .baseDefense = 70, + .baseSpeed = 70, + .baseSpAttack = 70, + .baseSpDefense = 70, + .type1 = TYPE_NORMAL, + .type2 = TYPE_NORMAL, + .catchRate = 45, + .expYield = 145, + .evYield_HP = 1, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_MYSTIC_WATER, + .item2 = ITEM_MYSTIC_WATER, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_MEDIUM_FAST, + .eggGroup1 = EGG_GROUP_FAIRY, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_FORECAST, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_VOLBEAT] = + { + .baseHP = 65, + .baseAttack = 73, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 47, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 150, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_ILLUMINATE, + .ability2 = ABILITY_SWARM, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ILLUMISE] = + { + .baseHP = 65, + .baseAttack = 47, + .baseDefense = 55, + .baseSpeed = 85, + .baseSpAttack = 73, + .baseSpDefense = 75, + .type1 = TYPE_BUG, + .type2 = TYPE_BUG, + .catchRate = 150, + .expYield = 146, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 254, + .eggCycles = 15, + .friendship = 70, + .growthRate = GROWTH_FLUCTUATING, + .eggGroup1 = EGG_GROUP_BUG, + .eggGroup2 = EGG_GROUP_HUMAN_LIKE, + .ability1 = ABILITY_OBLIVIOUS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_LILEEP] = + { + .baseHP = 66, + .baseAttack = 41, + .baseDefense = 77, + .baseSpeed = 23, + .baseSpAttack = 61, + .baseSpDefense = 87, + .type1 = TYPE_ROCK, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 121, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_PURPLE, + .noFlip = FALSE, + }, + + [SPECIES_CRADILY] = + { + .baseHP = 86, + .baseAttack = 81, + .baseDefense = 97, + .baseSpeed = 43, + .baseSpAttack = 81, + .baseSpDefense = 107, + .type1 = TYPE_ROCK, + .type2 = TYPE_GRASS, + .catchRate = 45, + .expYield = 201, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 2, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_SUCTION_CUPS, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_ANORITH] = + { + .baseHP = 45, + .baseAttack = 95, + .baseDefense = 50, + .baseSpeed = 75, + .baseSpAttack = 40, + .baseSpDefense = 50, + .type1 = TYPE_ROCK, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 119, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_BATTLE_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_ARMALDO] = + { + .baseHP = 75, + .baseAttack = 125, + .baseDefense = 100, + .baseSpeed = 45, + .baseSpAttack = 70, + .baseSpDefense = 80, + .type1 = TYPE_ROCK, + .type2 = TYPE_BUG, + .catchRate = 45, + .expYield = 200, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 31, + .eggCycles = 30, + .friendship = 70, + .growthRate = GROWTH_ERRATIC, + .eggGroup1 = EGG_GROUP_WATER_3, + .eggGroup2 = EGG_GROUP_WATER_3, + .ability1 = ABILITY_BATTLE_ARMOR, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_RALTS] = + { + .baseHP = 28, + .baseAttack = 25, + .baseDefense = 25, + .baseSpeed = 40, + .baseSpAttack = 45, + .baseSpDefense = 35, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 235, + .expYield = 70, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_KIRLIA] = + { + .baseHP = 38, + .baseAttack = 35, + .baseDefense = 35, + .baseSpeed = 50, + .baseSpAttack = 65, + .baseSpDefense = 55, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 120, + .expYield = 140, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 2, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_GARDEVOIR] = + { + .baseHP = 68, + .baseAttack = 65, + .baseDefense = 65, + .baseSpeed = 80, + .baseSpAttack = 125, + .baseSpDefense = 115, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 208, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 20, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_SYNCHRONIZE, + .ability2 = ABILITY_TRACE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_BAGON] = + { + .baseHP = 45, + .baseAttack = 75, + .baseDefense = 60, + .baseSpeed = 50, + .baseSpAttack = 40, + .baseSpDefense = 30, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 89, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_SHELGON] = + { + .baseHP = 65, + .baseAttack = 95, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 60, + .baseSpDefense = 50, + .type1 = TYPE_DRAGON, + .type2 = TYPE_DRAGON, + .catchRate = 45, + .expYield = 144, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_ROCK_HEAD, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_WHITE, + .noFlip = FALSE, + }, + + [SPECIES_SALAMENCE] = + { + .baseHP = 95, + .baseAttack = 135, + .baseDefense = 80, + .baseSpeed = 100, + .baseSpAttack = 110, + .baseSpDefense = 80, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 45, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_DRAGON_SCALE, + .genderRatio = 127, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_DRAGON, + .eggGroup2 = EGG_GROUP_DRAGON, + .ability1 = ABILITY_INTIMIDATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_BELDUM] = + { + .baseHP = 40, + .baseAttack = 55, + .baseDefense = 80, + .baseSpeed = 30, + .baseSpAttack = 35, + .baseSpDefense = 60, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 103, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 1, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = 255, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_METANG] = + { + .baseHP = 60, + .baseAttack = 75, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 55, + .baseSpDefense = 80, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 153, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = 255, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_METAGROSS] = + { + .baseHP = 80, + .baseAttack = 135, + .baseDefense = 130, + .baseSpeed = 70, + .baseSpAttack = 95, + .baseSpDefense = 90, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 210, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_METAL_COAT, + .genderRatio = 255, + .eggCycles = 40, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_MINERAL, + .eggGroup2 = EGG_GROUP_MINERAL, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_REGIROCK] = + { + .baseHP = 80, + .baseAttack = 100, + .baseDefense = 200, + .baseSpeed = 50, + .baseSpAttack = 50, + .baseSpDefense = 100, + .type1 = TYPE_ROCK, + .type2 = TYPE_ROCK, + .catchRate = 3, + .expYield = 217, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 3, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BROWN, + .noFlip = FALSE, + }, + + [SPECIES_REGICE] = + { + .baseHP = 80, + .baseAttack = 50, + .baseDefense = 100, + .baseSpeed = 50, + .baseSpAttack = 100, + .baseSpDefense = 200, + .type1 = TYPE_ICE, + .type2 = TYPE_ICE, + .catchRate = 3, + .expYield = 216, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_REGISTEEL] = + { + .baseHP = 80, + .baseAttack = 75, + .baseDefense = 150, + .baseSpeed = 50, + .baseSpAttack = 75, + .baseSpDefense = 150, + .type1 = TYPE_STEEL, + .type2 = TYPE_STEEL, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 2, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 80, + .friendship = 35, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_CLEAR_BODY, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GRAY, + .noFlip = FALSE, + }, + + [SPECIES_KYOGRE] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 90, + .baseSpeed = 90, + .baseSpAttack = 150, + .baseSpDefense = 140, + .type1 = TYPE_WATER, + .type2 = TYPE_WATER, + .catchRate = 5, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_DRIZZLE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_GROUDON] = + { + .baseHP = 100, + .baseAttack = 150, + .baseDefense = 140, + .baseSpeed = 90, + .baseSpAttack = 100, + .baseSpDefense = 90, + .type1 = TYPE_GROUND, + .type2 = TYPE_GROUND, + .catchRate = 5, + .expYield = 218, + .evYield_HP = 0, + .evYield_Attack = 3, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_DROUGHT, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_RAYQUAZA] = + { + .baseHP = 105, + .baseAttack = 150, + .baseDefense = 90, + .baseSpeed = 95, + .baseSpAttack = 150, + .baseSpDefense = 90, + .type1 = TYPE_DRAGON, + .type2 = TYPE_FLYING, + .catchRate = 3, + .expYield = 220, + .evYield_HP = 0, + .evYield_Attack = 2, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_AIR_LOCK, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_GREEN, + .noFlip = FALSE, + }, + + [SPECIES_LATIAS] = + { + .baseHP = 80, + .baseAttack = 80, + .baseDefense = 90, + .baseSpeed = 110, + .baseSpAttack = 110, + .baseSpDefense = 130, + .type1 = TYPE_DRAGON, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 3, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 254, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = FALSE, + }, + + [SPECIES_LATIOS] = + { + .baseHP = 80, + .baseAttack = 90, + .baseDefense = 80, + .baseSpeed = 110, + .baseSpAttack = 130, + .baseSpDefense = 110, + .type1 = TYPE_DRAGON, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 211, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 3, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 0, + .eggCycles = 120, + .friendship = 90, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, + }, + + [SPECIES_JIRACHI] = + { + .baseHP = 100, + .baseAttack = 100, + .baseDefense = 100, + .baseSpeed = 100, + .baseSpAttack = 100, + .baseSpDefense = 100, + .type1 = TYPE_STEEL, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 3, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 0, + .evYield_SpDefense = 0, + .item1 = ITEM_STAR_PIECE, + .item2 = ITEM_STAR_PIECE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 100, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_SERENE_GRACE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_YELLOW, + .noFlip = FALSE, + }, + + [SPECIES_DEOXYS] = + { + .baseHP = 50, + .baseAttack = 150, + .baseDefense = 50, + .baseSpeed = 150, + .baseSpAttack = 150, + .baseSpDefense = 50, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 3, + .expYield = 215, + .evYield_HP = 0, + .evYield_Attack = 1, + .evYield_Defense = 0, + .evYield_Speed = 1, + .evYield_SpAttack = 1, + .evYield_SpDefense = 0, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 255, + .eggCycles = 120, + .friendship = 0, + .growthRate = GROWTH_SLOW, + .eggGroup1 = EGG_GROUP_UNDISCOVERED, + .eggGroup2 = EGG_GROUP_UNDISCOVERED, + .ability1 = ABILITY_PRESSURE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_RED, + .noFlip = TRUE, + }, + + [SPECIES_CHIMECHO] = + { + .baseHP = 65, + .baseAttack = 50, + .baseDefense = 70, + .baseSpeed = 65, + .baseSpAttack = 95, + .baseSpDefense = 80, + .type1 = TYPE_PSYCHIC, + .type2 = TYPE_PSYCHIC, + .catchRate = 45, + .expYield = 147, + .evYield_HP = 0, + .evYield_Attack = 0, + .evYield_Defense = 0, + .evYield_Speed = 0, + .evYield_SpAttack = 1, + .evYield_SpDefense = 1, + .item1 = ITEM_NONE, + .item2 = ITEM_NONE, + .genderRatio = 127, + .eggCycles = 25, + .friendship = 70, + .growthRate = GROWTH_FAST, + .eggGroup1 = EGG_GROUP_AMORPHOUS, + .eggGroup2 = EGG_GROUP_AMORPHOUS, + .ability1 = ABILITY_LEVITATE, + .ability2 = ABILITY_NONE, + .safariZoneFleeRate = 0, + .bodyColor = BODY_COLOR_BLUE, + .noFlip = FALSE, } }; -#endif //POKERUBY_BASE_STATS_H +#endif //GUARD_BASE_STATS_H -- cgit v1.2.3 From e0f8841fbd434c06bba7471566629e197b896957 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 13 Jan 2018 23:43:36 -0500 Subject: up to ContestAICmd_unk_52 --- src/contest_ai.c | 291 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 214 insertions(+), 77 deletions(-) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index a62a69194..7c704be0a 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -3,6 +3,10 @@ #include "random.h" #include "ewram.h" +extern u8 AreMovesContestCombo(u16, u16); +extern bool8 sub_8128A7C(u8); +extern bool8 sub_80B214C(u8); + enum { ContestAI_SettingUp, @@ -745,9 +749,6 @@ void ContestAICmd_unk_3F(void) gAIScriptPtr += 5; } -extern u8 AreMovesContestCombo(u16, u16); - -/* void ContestAICmd_check_combo_starter(void) { u8 result = 0; @@ -756,85 +757,221 @@ void ContestAICmd_check_combo_starter(void) for(i = 0; i < 4; i++) { - u16 newMove = gContestMons[eContestAI->unk41].moves[i]; - u16 isCombo = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); - if(newMove && isCombo) + if (gContestMons[eContestAI->unk41].moves[i]) { - result = 1; - break; + result = AreMovesContestCombo(move, gContestMons[eContestAI->unk41].moves[i]); + if (result) + { + result = 1; + break; + } } - if(isCombo) // dumb double r5 check? + } + + if (result) + result = 1; + + eContestAI->scriptResult = result; + gAIScriptPtr += 1; +} + +void ContestAICmd_unk_41(void) +{ + ContestAICmd_check_combo_starter(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_42(void) +{ + ContestAICmd_check_combo_starter(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +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 = 1; - break; + result = AreMovesContestCombo(gContestMons[eContestAI->unk41].moves[i], move); + if (result) + { + result = 1; + break; + } } } + if (result) + result = 1; + eContestAI->scriptResult = result; gAIScriptPtr += 1; -}*/ - -/* - thumb_func_start ContestAICmd_check_combo_starter -ContestAICmd_check_combo_starter: @ 8129B44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r5, 0 - ldr r3, _08129BAC @ =gContestMons - ldr r2, _08129BB0 @ =gSharedMem + 0x192E4 - ldrb r1, [r2, 0x4] - lsls r1, 1 - adds r2, 0x41 - ldrb r0, [r2] - lsls r0, 6 - adds r1, r0 - adds r3, 0x1E - adds r1, r3 - ldrh r6, [r1] - movs r4, 0 - mov r8, r2 - adds r7, r3, 0 -_08129B68: - lsls r0, r4, 1 - mov r2, r8 - ldrb r1, [r2] - lsls r1, 6 - adds r0, r1 - adds r1, r0, r7 - ldrh r0, [r1] - cmp r0, 0 - beq _08129B8A - adds r1, r0, 0 - adds r0, r6, 0 - bl AreMovesContestCombo - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08129B94 -_08129B8A: - adds r4, 0x1 - cmp r4, 0x3 - ble _08129B68 - cmp r5, 0 - beq _08129B96 -_08129B94: - movs r5, 0x1 -_08129B96: - ldr r0, _08129BB0 @ =gSharedMem + 0x192E4 - strh r5, [r0, 0x18] - ldr r1, _08129BB4 @ =gAIScriptPtr - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08129BAC: .4byte gContestMons -_08129BB0: .4byte gSharedMem + 0x192E4 -_08129BB4: .4byte gAIScriptPtr - thumb_func_end ContestAICmd_check_combo_starter -*/ +} + +void ContestAICmd_unk_44(void) +{ + ContestAICmd_check_combo_finisher(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_45(void) +{ + ContestAICmd_check_combo_finisher(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +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; +} + +void ContestAICmd_unk_47(void) +{ + ContestAICmd_check_would_finish_combo(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_48(void) +{ + ContestAICmd_check_would_finish_combo(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_get_condition(void) +{ + int var = sub_8128A7C(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unkD / 10; + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_4A(void) +{ + ContestAICmd_get_condition(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_4B(void) +{ + ContestAICmd_get_condition(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_4C(void) +{ + ContestAICmd_get_condition(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_4D(void) +{ + ContestAICmd_get_condition(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_get_used_combo_starter(void) +{ + u16 result = 0; + u8 var = sub_8128A7C(gAIScriptPtr[1]); + + if(sub_80B214C(var)) + result = gContestMoves[sContestantStatus[var].prevMove].comboStarterId ? 1 : 0; + + eContestAI->scriptResult = result; + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_4F(void) +{ + ContestAICmd_get_used_combo_starter(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_50(void) +{ + ContestAICmd_get_used_combo_starter(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_51(void) +{ + ContestAICmd_get_used_combo_starter(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_52(void) +{ + ContestAICmd_get_used_combo_starter(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} -- cgit v1.2.3 From 74f4ece9184fc388528a775bd31f2cd4d3efe626 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 02:05:32 -0500 Subject: up to ContestAICmd_unk_67 --- src/contest_ai.c | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 7c704be0a..037564a9b 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -6,6 +6,7 @@ extern u8 AreMovesContestCombo(u16, u16); extern bool8 sub_8128A7C(u8); extern bool8 sub_80B214C(u8); +extern bool8 Contest_IsMonsTurnDisabled(u8); enum { @@ -975,3 +976,207 @@ void ContestAICmd_unk_52(void) else gAIScriptPtr += 5; } + +void ContestAICmd_check_can_participate(void) +{ + if(Contest_IsMonsTurnDisabled(sub_8128A7C(gAIScriptPtr[1]))) + eContestAI->scriptResult = FALSE; + else + eContestAI->scriptResult = TRUE; + + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_54(void) +{ + ContestAICmd_check_can_participate(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_55(void) +{ + ContestAICmd_check_can_participate(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_get_val_812A188(void) +{ + u8 var = sub_8128A7C(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unk15_3; + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_57(void) +{ + ContestAICmd_get_val_812A188(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_58(void) +{ + ContestAICmd_get_val_812A188(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_59(void) +{ + u8 var = sub_8128A7C(gAIScriptPtr[1]); + + eContestAI->scriptResult = sContestantStatus[var].unk4 - sContestantStatus[eContestAI->unk41].unk4; + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_5A(void) +{ + ContestAICmd_unk_59(); + + if((s16)eContestAI->scriptResult < 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_5B(void) +{ + ContestAICmd_unk_59(); + + if((s16)eContestAI->scriptResult > 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_5C(void) +{ + ContestAICmd_unk_59(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_5D(void) +{ + ContestAICmd_unk_59(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_5E(void) +{ + u8 var = sub_8128A7C(gAIScriptPtr[1]); + + eContestAI->scriptResult = gUnknown_02038670[var] - gUnknown_02038670[eContestAI->unk41]; + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_5F(void) +{ + ContestAICmd_unk_5E(); + + if((s16)eContestAI->scriptResult < 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_60(void) +{ + ContestAICmd_unk_5E(); + + if((s16)eContestAI->scriptResult > 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_61(void) +{ + ContestAICmd_unk_5E(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_62(void) +{ + ContestAICmd_unk_5E(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_63(void) +{ + u8 var = sub_8128A7C(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + u16 move = sContest.unk19220[var2][var]; + + eContestAI->scriptResult = gContestMoves[move].effect; + gAIScriptPtr += 3; +} + +void ContestAICmd_unk_64(void) +{ + ContestAICmd_unk_63(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_65(void) +{ + ContestAICmd_unk_63(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_66(void) +{ + ContestAICmd_unk_63(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_67(void) +{ + ContestAICmd_unk_63(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} -- cgit v1.2.3 From bc2abc39f6a8b47e844136a43fbc729eb5568833 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 04:46:09 -0500 Subject: up to ContestAICmd_unk_7E --- src/contest_ai.c | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 037564a9b..3fc7cec3b 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -1180,3 +1180,194 @@ void ContestAICmd_unk_67(void) else gAIScriptPtr += 5; } + +void ContestAICmd_unk_68(void) +{ + u8 var = sub_8128A7C(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + s8 result = sContest.unk19248[var2][var]; + + eContestAI->scriptResult = result; + gAIScriptPtr += 3; +} + +void ContestAICmd_unk_69(void) +{ + ContestAICmd_unk_68(); + + if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_6A(void) +{ + ContestAICmd_unk_68(); + + if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_6B(void) +{ + ContestAICmd_unk_68(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_6C(void) +{ + ContestAICmd_unk_68(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_6D(void) +{ + u8 var = sub_8128A7C(gAIScriptPtr[1]); + u8 var2 = gAIScriptPtr[2]; + u16 move = sContest.unk19220[var2][var]; + + eContestAI->scriptResult = gContestEffects[gContestMoves[move].effect].effectType; + gAIScriptPtr += 3; +} + +void ContestAICmd_unk_6E(void) +{ + ContestAICmd_unk_6D(); + + if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_6F(void) +{ + ContestAICmd_unk_6D(); + + if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); + else + gAIScriptPtr += 5; +} + +void ContestAICmd_unk_70(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult; + gAIScriptPtr += 2; +} + +void ContestAICmd_unk_71(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2); + gAIScriptPtr += 4; +} + +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; +} + +void ContestAICmd_unk_73(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; + gAIScriptPtr += 3; +} + +void ContestAICmd_unk_74(void) +{ + eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; + gAIScriptPtr += 3; +} + +void ContestAICmd_unk_75(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +void ContestAICmd_unk_76(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +void ContestAICmd_unk_77(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +void ContestAICmd_unk_78(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); + else + gAIScriptPtr += 8; +} + +void ContestAICmd_unk_79(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] < ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +void ContestAICmd_unk_7A(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] > ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +void ContestAICmd_unk_7B(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] == ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +void ContestAICmd_unk_7C(void) +{ + if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] != ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); + else + gAIScriptPtr += 7; +} + +void ContestAICmd_unk_7D(void) +{ + if((Random() & 0xFF) < (s16)eContestAI->scriptArr[gAIScriptPtr[1]]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} + +void ContestAICmd_unk_7E(void) +{ + if((Random() & 0xFF) > (s16)eContestAI->scriptArr[gAIScriptPtr[1]]) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); + else + gAIScriptPtr += 6; +} -- cgit v1.2.3 From 72c90d9dd35b2e0cc8597cd1e10c6a767fea0f0e Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 14 Jan 2018 14:13:59 +0100 Subject: Decompiled data/battle_anim_80A7E7C.s --- src/battle/battle_anim_80A7E7C.c | 78 +++++++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c index c35434df0..f109333e3 100644 --- a/src/battle/battle_anim_80A7E7C.c +++ b/src/battle/battle_anim_80A7E7C.c @@ -20,17 +20,77 @@ static void sub_80A808C(u8 taskId); static void sub_80A81D8(u8 taskId); static void sub_80A8374(u8 taskId); static void sub_80A8488(u8 taskId); +static void sub_80A8530(struct Sprite *sprite); static void sub_80A85A4(struct Sprite *sprite); -void sub_80A8614(struct Sprite* sprite); +static void sub_80A85C8(struct Sprite *sprite); +static void sub_80A8614(struct Sprite* sprite); +static void sub_80A8638(struct Sprite *sprite); static void sub_80A86F4(struct Sprite *sprite); +static void sub_80A8764(struct Sprite *sprite); +static void sub_80A8818(struct Sprite *sprite); static void sub_80A88F0(struct Sprite *sprite); static void sub_80A89B4(u8 taskId); static void sub_80A8A18(u8 taskId); static void sub_80A8C0C(u8 taskId); static void sub_80A8D8C(u8 taskId); -void sub_80A8FD8(u8 taskId); +static void sub_80A8FD8(u8 taskId); static void sub_80A913C(u8 taskId); +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8530, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A85C8, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8638, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8764, +}; + +const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 = +{ + .tileTag = 0, + .paletteTag = 0, + .oam = &gDummyOamData, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A8818, +}; + void sub_80A7E7C(u8 taskId) { u8 sprite; @@ -335,7 +395,7 @@ void sub_80A8500(u8 taskId) sub_80A8408(taskId); } -void sub_80A8530(struct Sprite *sprite) +static void sub_80A8530(struct Sprite *sprite) { sprite->invisible = TRUE; if (GetBankSide(gAnimBankAttacker)) @@ -362,7 +422,7 @@ static void sub_80A85A4(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80A85C8(struct Sprite *sprite) +static void sub_80A85C8(struct Sprite *sprite) { u8 spriteId; sprite->invisible = TRUE; @@ -376,7 +436,7 @@ void sub_80A85C8(struct Sprite *sprite) sprite->callback = sub_8078458; } -void sub_80A8614(struct Sprite *sprite) +static void sub_80A8614(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; @@ -384,7 +444,7 @@ void sub_80A8614(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } -void sub_80A8638(struct Sprite *sprite) +static void sub_80A8638(struct Sprite *sprite) { int something; int spriteId; @@ -451,7 +511,7 @@ static void sub_80A86F4(struct Sprite *sprite) } } -void sub_80A8764(struct Sprite *sprite) +static void sub_80A8764(struct Sprite *sprite) { u8 v1; u8 spriteId; @@ -486,7 +546,7 @@ void sub_80A8764(struct Sprite *sprite) sprite->callback = sub_80784A8; } -void sub_80A8818(struct Sprite *sprite) +static void sub_80A8818(struct Sprite *sprite) { u8 spriteId; u8 v1; @@ -833,7 +893,7 @@ void sub_80A8EFC(u8 taskId) TASK.func = sub_80A8FD8; } -void sub_80A8FD8(u8 taskId) +static void sub_80A8FD8(u8 taskId) { TASK.data[3] += TASK.data[4]; obj_id_set_rotscale(TASK.data[5], 0x100, 0x100, TASK.data[3]); -- cgit v1.2.3 From 101f16355a222b0b58029a9ff77cf5e4f9287ca8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 10:36:07 -0600 Subject: format and arrange some Pokemon data --- src/battle/calculate_base_damage.c | 60 +- src/data/pokemon/base_stats.h | 826 +++++++++++++------------- src/data/pokemon/dex_order.h | 15 - src/data/pokemon/evolution.h | 788 ++++++------------------ src/data/pokemon/item_effects.h | 729 +++-------------------- src/data/pokemon/level_up_learnset_pointers.h | 2 +- src/data/pokemon/nature_stats.h | 37 -- src/data/pokemon/spinda_spots.h | 15 - src/field/daycare.c | 2 +- src/pokemon/pokemon_1.c | 60 +- src/pokemon/pokemon_2.c | 28 +- src/pokemon/pokemon_3.c | 104 ++-- src/pokemon/pokemon_data.c | 116 ---- src/pokemon/pokemon_item_effect.c | 11 + src/scene/evolution_scene.c | 30 +- 15 files changed, 893 insertions(+), 1930 deletions(-) delete mode 100644 src/data/pokemon/dex_order.h delete mode 100644 src/data/pokemon/nature_stats.h delete mode 100644 src/data/pokemon/spinda_spots.h create mode 100644 src/pokemon/pokemon_item_effect.c (limited to 'src') diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c index 5c91b3657..217ab28a3 100644 --- a/src/battle/calculate_base_damage.c +++ b/src/battle/calculate_base_damage.c @@ -1,16 +1,16 @@ #include "global.h" #include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" #include "battle.h" #include "berry.h" #include "data2.h" #include "event_data.h" -#include "constants/hold_effects.h" #include "item.h" -#include "constants/items.h" #include "pokemon.h" -#include "constants/species.h" -#include "constants/moves.h" -#include "constants/battle_move_effects.h" #include "ewram.h" extern u16 gBattleTypeFlags; @@ -22,8 +22,54 @@ extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBattleMovePower; extern u16 gTrainerBattleOpponent; -extern const u8 gHoldEffectToType[][2]; -extern const u8 gStatStageRatios[][2]; +// Masks for getting PP Up count, also PP Max values +const u8 gUnknown_08208238[] = {0x03, 0x0c, 0x30, 0xc0}; + +// Masks for setting PP Up count +const u8 gUnknown_0820823C[] = {0xFC, 0xF3, 0xCF, 0x3F}; + +// Values added to PP Up count +const u8 gUnknown_08208240[] = {0x01, 0x04, 0x10, 0x40}; + +const u8 gStatStageRatios[][2] = +{ + {10, 40}, // -6 + {10, 35}, // -5 + {10, 30}, // -4 + {10, 25}, // -3 + {10, 20}, // -2 + {10, 15}, // -1 + {10, 10}, // 0 + {15, 10}, // 1 + {20, 10}, // 2 + {25, 10}, // 3 + {30, 10}, // 4 + {35, 10}, // 5 + {40, 10} // 6 +}; + +const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ"); + +const u8 gHoldEffectToType[][2] = +{ + {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, + {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL}, + {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND}, + {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK}, + {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS}, + {HOLD_EFFECT_DARK_POWER, TYPE_DARK}, + {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING}, + {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC}, + {HOLD_EFFECT_WATER_POWER, TYPE_WATER}, + {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING}, + {HOLD_EFFECT_POISON_POWER, TYPE_POISON}, + {HOLD_EFFECT_ICE_POWER, TYPE_ICE}, + {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST}, + {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC}, + {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE}, + {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON}, + {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL} +}; u8 GetBankSide(u8 bank); diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/base_stats.h index be902635e..bc6572b46 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/base_stats.h @@ -1,6 +1,10 @@ #ifndef GUARD_BASE_STATS_H #define GUARD_BASE_STATS_H +// Maximum value for a female pokemon is 254 (MON_FEMALE) which is 100% female. +// 255 (MON_GENDERLESS) is reserved for genderless pokemon. +#define PERCENT_FEMALE(percent) min(254, ((percent * 255) / 100)) + const struct BaseStats gBaseStats[] = { [SPECIES_NONE] = {0}, @@ -25,7 +29,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -58,7 +62,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -91,7 +95,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -124,7 +128,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -157,7 +161,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -190,7 +194,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -223,7 +227,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -256,7 +260,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -289,7 +293,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -322,7 +326,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -355,7 +359,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -388,7 +392,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_SILVER_POWDER, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -421,7 +425,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -454,7 +458,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -487,7 +491,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_POISON_BARB, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -520,7 +524,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -553,7 +557,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -586,7 +590,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -619,7 +623,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -652,7 +656,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -685,7 +689,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -718,7 +722,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SHARP_BEAK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -751,7 +755,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -784,7 +788,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -817,7 +821,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_ORAN_BERRY, .item2 = ITEM_LIGHT_BALL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -850,7 +854,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_ORAN_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -883,7 +887,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_QUICK_CLAW, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -916,7 +920,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_QUICK_CLAW, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -949,7 +953,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -982,7 +986,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1015,7 +1019,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1048,7 +1052,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1081,7 +1085,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1114,7 +1118,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1147,7 +1151,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_LEPPA_BERRY, .item2 = ITEM_MOON_STONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, .growthRate = GROWTH_FAST, @@ -1180,7 +1184,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_LEPPA_BERRY, .item2 = ITEM_MOON_STONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, .growthRate = GROWTH_FAST, @@ -1213,7 +1217,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1246,7 +1250,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1279,7 +1283,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -1312,7 +1316,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -1345,7 +1349,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1378,7 +1382,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1411,7 +1415,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1444,7 +1448,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1477,7 +1481,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -1510,7 +1514,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_TINY_MUSHROOM, .item2 = ITEM_BIG_MUSHROOM, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1543,7 +1547,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_TINY_MUSHROOM, .item2 = ITEM_BIG_MUSHROOM, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1576,7 +1580,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1609,7 +1613,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1642,7 +1646,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1675,7 +1679,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1708,7 +1712,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1741,7 +1745,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1774,7 +1778,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1807,7 +1811,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1840,7 +1844,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1873,7 +1877,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -1906,7 +1910,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -1939,7 +1943,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -1972,7 +1976,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2005,7 +2009,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2038,7 +2042,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2071,7 +2075,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_TWISTED_SPOON, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2104,7 +2108,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_TWISTED_SPOON, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2137,7 +2141,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_TWISTED_SPOON, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2170,7 +2174,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2203,7 +2207,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2236,7 +2240,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2269,7 +2273,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2302,7 +2306,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2335,7 +2339,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2368,7 +2372,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -2401,7 +2405,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -2434,7 +2438,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_EVERSTONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2467,7 +2471,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_EVERSTONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2500,7 +2504,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_EVERSTONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -2533,7 +2537,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2566,7 +2570,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2599,7 +2603,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2632,7 +2636,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2665,7 +2669,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_COAT, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2698,7 +2702,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_COAT, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2731,7 +2735,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_STICK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2764,7 +2768,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SHARP_BEAK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2797,7 +2801,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SHARP_BEAK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2830,7 +2834,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2863,7 +2867,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2896,7 +2900,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NUGGET, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2929,7 +2933,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NUGGET, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -2962,7 +2966,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_PEARL, .item2 = ITEM_BIG_PEARL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -2995,7 +2999,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_PEARL, .item2 = ITEM_BIG_PEARL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -3028,7 +3032,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -3061,7 +3065,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -3094,7 +3098,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -3127,7 +3131,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3160,7 +3164,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3193,7 +3197,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3226,7 +3230,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3259,7 +3263,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3292,7 +3296,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3325,7 +3329,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3358,7 +3362,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -3391,7 +3395,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -3424,7 +3428,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_THICK_CLUB, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3457,7 +3461,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_THICK_CLUB, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3490,7 +3494,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3523,7 +3527,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3556,7 +3560,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3589,7 +3593,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SMOKE_BALL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3622,7 +3626,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SMOKE_BALL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3655,7 +3659,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -3688,7 +3692,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -3721,7 +3725,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_LUCKY_EGG, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, @@ -3754,7 +3758,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3787,7 +3791,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3820,7 +3824,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3853,7 +3857,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3886,7 +3890,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3919,7 +3923,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -3952,7 +3956,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_STARDUST, .item2 = ITEM_STAR_PIECE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -3985,7 +3989,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_STARDUST, .item2 = ITEM_STAR_PIECE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4018,7 +4022,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_LEPPA_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4051,7 +4055,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4084,7 +4088,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_ASPEAR_BERRY, .item2 = ITEM_ASPEAR_BERRY, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4117,7 +4121,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4150,7 +4154,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4183,7 +4187,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4216,7 +4220,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4249,7 +4253,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4282,7 +4286,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 5, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4315,7 +4319,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4348,7 +4352,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_POWDER, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4381,7 +4385,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4414,7 +4418,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4447,7 +4451,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4480,7 +4484,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4513,7 +4517,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4546,7 +4550,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4579,7 +4583,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4612,7 +4616,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4645,7 +4649,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -4678,7 +4682,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4711,7 +4715,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_LEFTOVERS, .item2 = ITEM_LEFTOVERS, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -4744,7 +4748,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -4777,7 +4781,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -4810,7 +4814,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -4843,7 +4847,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -4876,7 +4880,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -4909,7 +4913,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -4942,7 +4946,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -4975,7 +4979,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_LUM_BERRY, .item2 = ITEM_LUM_BERRY, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5008,7 +5012,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5041,7 +5045,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5074,7 +5078,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5107,7 +5111,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5140,7 +5144,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5173,7 +5177,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5206,7 +5210,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5239,7 +5243,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5272,7 +5276,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5305,7 +5309,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_ORAN_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5338,7 +5342,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_ORAN_BERRY, .item2 = ITEM_SITRUS_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5371,7 +5375,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5404,7 +5408,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5437,7 +5441,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5470,7 +5474,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5503,7 +5507,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5536,7 +5540,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5569,7 +5573,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5602,7 +5606,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_YELLOW_SHARD, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -5635,7 +5639,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_YELLOW_SHARD, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -5668,7 +5672,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_ORAN_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5701,7 +5705,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_LEPPA_BERRY, .item2 = ITEM_MOON_STONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 140, .growthRate = GROWTH_FAST, @@ -5734,7 +5738,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5767,7 +5771,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5800,7 +5804,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -5833,7 +5837,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5866,7 +5870,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -5899,7 +5903,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5932,7 +5936,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5965,7 +5969,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -5998,7 +6002,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6031,7 +6035,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -6064,7 +6068,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -6097,7 +6101,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6130,7 +6134,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6163,7 +6167,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6196,7 +6200,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6229,7 +6233,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6262,7 +6266,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -6295,7 +6299,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6328,7 +6332,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6361,7 +6365,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6394,7 +6398,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6427,7 +6431,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6460,7 +6464,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6493,7 +6497,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_MEDIUM_FAST, @@ -6526,7 +6530,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6559,7 +6563,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6592,7 +6596,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_SPELL_TAG, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, @@ -6625,7 +6629,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6658,7 +6662,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6691,7 +6695,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_PERSIM_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6724,7 +6728,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6757,7 +6761,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6790,7 +6794,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6823,7 +6827,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -6856,7 +6860,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_COAT, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6889,7 +6893,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -6922,7 +6926,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -6955,7 +6959,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -6988,7 +6992,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7021,7 +7025,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_ORAN_BERRY, .item2 = ITEM_ORAN_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -7054,7 +7058,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7087,7 +7091,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_QUICK_CLAW, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, @@ -7120,7 +7124,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7153,7 +7157,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7186,7 +7190,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7219,7 +7223,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7252,7 +7256,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7285,7 +7289,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7318,7 +7322,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_RED_SHARD, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -7351,7 +7355,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7384,7 +7388,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7417,7 +7421,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -7450,7 +7454,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7483,7 +7487,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7516,7 +7520,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -7549,7 +7553,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -7582,7 +7586,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7615,7 +7619,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7648,7 +7652,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7681,7 +7685,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7714,7 +7718,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7747,7 +7751,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -7780,7 +7784,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7813,7 +7817,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7846,7 +7850,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_ASPEAR_BERRY, .item2 = ITEM_ASPEAR_BERRY, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7879,7 +7883,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7912,7 +7916,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -7945,7 +7949,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_MOOMOO_MILK, .item2 = ITEM_MOOMOO_MILK, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -7978,7 +7982,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_LUCKY_EGG, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 40, .friendship = 140, .growthRate = GROWTH_FAST, @@ -8011,7 +8015,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -8044,7 +8048,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -8077,7 +8081,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -8110,7 +8114,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -8143,7 +8147,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -8176,7 +8180,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -8209,7 +8213,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -8242,7 +8246,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_SACRED_ASH, .item2 = ITEM_SACRED_ASH, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -8275,7 +8279,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_LUM_BERRY, .item2 = ITEM_LUM_BERRY, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_MEDIUM_SLOW, @@ -8308,7 +8312,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8341,7 +8345,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8374,7 +8378,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8407,7 +8411,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8440,7 +8444,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8473,7 +8477,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8506,7 +8510,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8539,7 +8543,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8572,7 +8576,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8605,7 +8609,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8638,7 +8642,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8671,7 +8675,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8704,7 +8708,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8737,7 +8741,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8770,7 +8774,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8803,7 +8807,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8836,7 +8840,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8869,7 +8873,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8902,7 +8906,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8935,7 +8939,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -8968,7 +8972,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -9001,7 +9005,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -9034,7 +9038,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -9067,7 +9071,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -9100,7 +9104,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_MEDIUM_FAST, @@ -9133,7 +9137,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9166,7 +9170,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9199,7 +9203,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9232,7 +9236,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9265,7 +9269,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9298,7 +9302,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9331,7 +9335,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9364,7 +9368,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9397,7 +9401,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9430,7 +9434,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_PECHA_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9463,7 +9467,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_PECHA_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9496,7 +9500,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_ORAN_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9529,7 +9533,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_ORAN_BERRY, .item2 = ITEM_SITRUS_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9562,7 +9566,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9595,7 +9599,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9628,7 +9632,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SILVER_POWDER, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9661,7 +9665,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9694,7 +9698,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_SILVER_POWDER, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -9727,7 +9731,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9760,7 +9764,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9793,7 +9797,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9826,7 +9830,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9859,7 +9863,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9892,7 +9896,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -9925,7 +9929,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -9958,7 +9962,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -9991,7 +9995,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -10024,7 +10028,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -10057,7 +10061,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -10090,7 +10094,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -10123,7 +10127,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -10156,7 +10160,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_CHESTO_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -10189,7 +10193,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10222,7 +10226,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10255,7 +10259,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10288,7 +10292,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_SILVER_POWDER, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10321,7 +10325,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -10354,7 +10358,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -10387,7 +10391,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_LEPPA_BERRY, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -10420,7 +10424,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_LEPPA_BERRY, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FAST, @@ -10453,7 +10457,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_PERSIM_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -10486,7 +10490,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10519,7 +10523,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10552,7 +10556,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10585,7 +10589,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10618,7 +10622,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, @@ -10651,7 +10655,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10684,7 +10688,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -10717,7 +10721,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_HEART_SCALE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -10750,7 +10754,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -10783,7 +10787,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -10816,7 +10820,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -10849,7 +10853,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -10882,7 +10886,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -10915,7 +10919,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -10948,7 +10952,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SOFT_SAND, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -10981,7 +10985,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11014,7 +11018,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11047,7 +11051,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -11080,7 +11084,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_KINGS_ROCK, - .genderRatio = 63, + .genderRatio = PERCENT_FEMALE(25), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -11113,7 +11117,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -11146,7 +11150,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -11179,7 +11183,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11212,7 +11216,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_RAWST_BERRY, .item2 = ITEM_RAWST_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11245,7 +11249,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11278,7 +11282,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11311,7 +11315,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11344,7 +11348,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_POISON_BARB, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11377,7 +11381,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_POISON_BARB, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, @@ -11410,7 +11414,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11443,7 +11447,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NEVER_MELT_ICE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11476,7 +11480,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_MOON_STONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, @@ -11509,7 +11513,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SUN_STONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, @@ -11542,7 +11546,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 191, + .genderRatio = PERCENT_FEMALE(75), .eggCycles = 10, .friendship = 70, .growthRate = GROWTH_FAST, @@ -11575,7 +11579,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -11608,7 +11612,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -11641,7 +11645,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11674,7 +11678,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11707,7 +11711,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FAST, @@ -11740,7 +11744,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11773,7 +11777,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11806,7 +11810,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -11839,7 +11843,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -11872,7 +11876,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -11905,7 +11909,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_SPELL_TAG, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, @@ -11938,7 +11942,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_SPELL_TAG, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, @@ -11971,7 +11975,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_POISON_BARB, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -12004,7 +12008,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -12037,7 +12041,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -12070,7 +12074,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -12103,7 +12107,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_BIG_PEARL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -12136,7 +12140,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_BIG_PEARL, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -12169,7 +12173,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -12202,7 +12206,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_CHESTO_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -12235,7 +12239,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_CHESTO_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -12268,7 +12272,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_CHESTO_BERRY, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_MEDIUM_SLOW, @@ -12301,7 +12305,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_BLUE_SHARD, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12334,7 +12338,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12367,7 +12371,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12400,7 +12404,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_MEDIUM_SLOW, @@ -12433,7 +12437,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SPELL_TAG, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, @@ -12466,7 +12470,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_SPELL_TAG, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 35, .growthRate = GROWTH_FAST, @@ -12499,7 +12503,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -12532,7 +12536,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12565,7 +12569,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_GREEN_SHARD, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 40, .friendship = 70, .growthRate = GROWTH_SLOW, @@ -12598,7 +12602,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_HARD_STONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -12631,7 +12635,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_HARD_STONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -12664,7 +12668,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_HARD_STONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 35, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -12697,7 +12701,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_MYSTIC_WATER, .item2 = ITEM_MYSTIC_WATER, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_MEDIUM_FAST, @@ -12730,7 +12734,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12763,7 +12767,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 15, .friendship = 70, .growthRate = GROWTH_FLUCTUATING, @@ -12796,7 +12800,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12829,7 +12833,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 2, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12862,7 +12866,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12895,7 +12899,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 31, + .genderRatio = PERCENT_FEMALE(12.5), .eggCycles = 30, .friendship = 70, .growthRate = GROWTH_ERRATIC, @@ -12928,7 +12932,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -12961,7 +12965,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -12994,7 +12998,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 20, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13027,7 +13031,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13060,7 +13064,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13093,7 +13097,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_DRAGON_SCALE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13126,7 +13130,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_COAT, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13159,7 +13163,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_COAT, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13192,7 +13196,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_METAL_COAT, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 40, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13225,7 +13229,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13258,7 +13262,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13291,7 +13295,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 80, .friendship = 35, .growthRate = GROWTH_SLOW, @@ -13324,7 +13328,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -13357,7 +13361,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -13390,7 +13394,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -13423,7 +13427,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 3, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 254, + .genderRatio = MON_FEMALE, .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, @@ -13456,7 +13460,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 0, + .genderRatio = MON_MALE, .eggCycles = 120, .friendship = 90, .growthRate = GROWTH_SLOW, @@ -13489,7 +13493,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_STAR_PIECE, .item2 = ITEM_STAR_PIECE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 100, .growthRate = GROWTH_SLOW, @@ -13522,7 +13526,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 0, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 255, + .genderRatio = MON_GENDERLESS, .eggCycles = 120, .friendship = 0, .growthRate = GROWTH_SLOW, @@ -13555,7 +13559,7 @@ const struct BaseStats gBaseStats[] = .evYield_SpDefense = 1, .item1 = ITEM_NONE, .item2 = ITEM_NONE, - .genderRatio = 127, + .genderRatio = PERCENT_FEMALE(50), .eggCycles = 25, .friendship = 70, .growthRate = GROWTH_FAST, diff --git a/src/data/pokemon/dex_order.h b/src/data/pokemon/dex_order.h deleted file mode 100644 index cbb7182ed..000000000 --- a/src/data/pokemon/dex_order.h +++ /dev/null @@ -1,15 +0,0 @@ -// - -// - -#ifndef POKERUBY_DEX_ORDER_H -#define POKERUBY_DEX_ORDER_H - -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}; - -#endif //POKERUBY_DEX_ORDER_H diff --git a/src/data/pokemon/evolution.h b/src/data/pokemon/evolution.h index 919416fee..b88e42cd2 100644 --- a/src/data/pokemon/evolution.h +++ b/src/data/pokemon/evolution.h @@ -1,608 +1,192 @@ -// - -// - #ifndef POKERUBY_EVOLUTION_H #define POKERUBY_EVOLUTION_H -const struct EvolutionData gEvolutionTable[] = { - {{ // ?????????? - }}, {{ // Bulbasaur - {EVO_LEVEL, 16, SPECIES_IVYSAUR}, - }}, {{ // Ivysaur - {EVO_LEVEL, 32, SPECIES_VENUSAUR}, - }}, {{ // Venusaur - }}, {{ // Charmander - {EVO_LEVEL, 16, SPECIES_CHARMELEON}, - }}, {{ // Charmeleon - {EVO_LEVEL, 36, SPECIES_CHARIZARD}, - }}, {{ // Charizard - }}, {{ // Squirtle - {EVO_LEVEL, 16, SPECIES_WARTORTLE}, - }}, {{ // Wartortle - {EVO_LEVEL, 36, SPECIES_BLASTOISE}, - }}, {{ // Blastoise - }}, {{ // Caterpie - {EVO_LEVEL, 7, SPECIES_METAPOD}, - }}, {{ // Metapod - {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, - }}, {{ // Butterfree - }}, {{ // Weedle - {EVO_LEVEL, 7, SPECIES_KAKUNA}, - }}, {{ // Kakuna - {EVO_LEVEL, 10, SPECIES_BEEDRILL}, - }}, {{ // Beedrill - }}, {{ // Pidgey - {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, - }}, {{ // Pidgeotto - {EVO_LEVEL, 36, SPECIES_PIDGEOT}, - }}, {{ // Pidgeot - }}, {{ // Rattata - {EVO_LEVEL, 20, SPECIES_RATICATE}, - }}, {{ // Raticate - }}, {{ // Spearow - {EVO_LEVEL, 20, SPECIES_FEAROW}, - }}, {{ // Fearow - }}, {{ // Ekans - {EVO_LEVEL, 22, SPECIES_ARBOK}, - }}, {{ // Arbok - }}, {{ // Pikachu - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, - }}, {{ // Raichu - }}, {{ // Sandshrew - {EVO_LEVEL, 22, SPECIES_SANDSLASH}, - }}, {{ // Sandslash - }}, {{ // Nidoran♀ - {EVO_LEVEL, 16, SPECIES_NIDORINA}, - }}, {{ // Nidorina - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, - }}, {{ // Nidoqueen - }}, {{ // Nidoran♂ - {EVO_LEVEL, 16, SPECIES_NIDORINO}, - }}, {{ // Nidorino - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, - }}, {{ // Nidoking - }}, {{ // Clefairy - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, - }}, {{ // Clefable - }}, {{ // Vulpix - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, - }}, {{ // Ninetales - }}, {{ // Jigglypuff - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, - }}, {{ // Wigglytuff - }}, {{ // Zubat - {EVO_LEVEL, 22, SPECIES_GOLBAT}, - }}, {{ // Golbat - {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, - }}, {{ // Oddish - {EVO_LEVEL, 21, SPECIES_GLOOM}, - }}, {{ // Gloom - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, - }}, {{ // Vileplume - }}, {{ // Paras - {EVO_LEVEL, 24, SPECIES_PARASECT}, - }}, {{ // Parasect - }}, {{ // Venonat - {EVO_LEVEL, 31, SPECIES_VENOMOTH}, - }}, {{ // Venomoth - }}, {{ // Diglett - {EVO_LEVEL, 26, SPECIES_DUGTRIO}, - }}, {{ // Dugtrio - }}, {{ // Meowth - {EVO_LEVEL, 28, SPECIES_PERSIAN}, - }}, {{ // Persian - }}, {{ // Psyduck - {EVO_LEVEL, 33, SPECIES_GOLDUCK}, - }}, {{ // Golduck - }}, {{ // Mankey - {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, - }}, {{ // Primeape - }}, {{ // Growlithe - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, - }}, {{ // Arcanine - }}, {{ // Poliwag - {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, - }}, {{ // Poliwhirl - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, - }}, {{ // Poliwrath - }}, {{ // Abra - {EVO_LEVEL, 16, SPECIES_KADABRA}, - }}, {{ // Kadabra - {EVO_TRADE, 0, SPECIES_ALAKAZAM}, - }}, {{ // Alakazam - }}, {{ // Machop - {EVO_LEVEL, 28, SPECIES_MACHOKE}, - }}, {{ // Machoke - {EVO_TRADE, 0, SPECIES_MACHAMP}, - }}, {{ // Machamp - }}, {{ // Bellsprout - {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, - }}, {{ // Weepinbell - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, - }}, {{ // Victreebel - }}, {{ // Tentacool - {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, - }}, {{ // Tentacruel - }}, {{ // Geodude - {EVO_LEVEL, 25, SPECIES_GRAVELER}, - }}, {{ // Graveler - {EVO_TRADE, 0, SPECIES_GOLEM}, - }}, {{ // Golem - }}, {{ // Ponyta - {EVO_LEVEL, 40, SPECIES_RAPIDASH}, - }}, {{ // Rapidash - }}, {{ // Slowpoke - {EVO_LEVEL, 37, SPECIES_SLOWBRO}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, - }}, {{ // Slowbro - }}, {{ // Magnemite - {EVO_LEVEL, 30, SPECIES_MAGNETON}, - }}, {{ // Magneton - }}, {{ // Farfetch'd - }}, {{ // Doduo - {EVO_LEVEL, 31, SPECIES_DODRIO}, - }}, {{ // Dodrio - }}, {{ // Seel - {EVO_LEVEL, 34, SPECIES_DEWGONG}, - }}, {{ // Dewgong - }}, {{ // Grimer - {EVO_LEVEL, 38, SPECIES_MUK}, - }}, {{ // Muk - }}, {{ // Shellder - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, - }}, {{ // Cloyster - }}, {{ // Gastly - {EVO_LEVEL, 25, SPECIES_HAUNTER}, - }}, {{ // Haunter - {EVO_TRADE, 0, SPECIES_GENGAR}, - }}, {{ // Gengar - }}, {{ // Onix - {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, - }}, {{ // Drowzee - {EVO_LEVEL, 26, SPECIES_HYPNO}, - }}, {{ // Hypno - }}, {{ // Krabby - {EVO_LEVEL, 28, SPECIES_KINGLER}, - }}, {{ // Kingler - }}, {{ // Voltorb - {EVO_LEVEL, 30, SPECIES_ELECTRODE}, - }}, {{ // Electrode - }}, {{ // Exeggcute - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, - }}, {{ // Exeggutor - }}, {{ // Cubone - {EVO_LEVEL, 28, SPECIES_MAROWAK}, - }}, {{ // Marowak - }}, {{ // Hitmonlee - }}, {{ // Hitmonchan - }}, {{ // Lickitung - }}, {{ // Koffing - {EVO_LEVEL, 35, SPECIES_WEEZING}, - }}, {{ // Weezing - }}, {{ // Rhyhorn - {EVO_LEVEL, 42, SPECIES_RHYDON}, - }}, {{ // Rhydon - }}, {{ // Chansey - {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, - }}, {{ // Tangela - }}, {{ // Kangaskhan - }}, {{ // Horsea - {EVO_LEVEL, 32, SPECIES_SEADRA}, - }}, {{ // Seadra - {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, - }}, {{ // Goldeen - {EVO_LEVEL, 33, SPECIES_SEAKING}, - }}, {{ // Seaking - }}, {{ // Staryu - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, - }}, {{ // Starmie - }}, {{ // Mr. mime - }}, {{ // Scyther - {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, - }}, {{ // Jynx - }}, {{ // Electabuzz - }}, {{ // Magmar - }}, {{ // Pinsir - }}, {{ // Tauros - }}, {{ // Magikarp - {EVO_LEVEL, 20, SPECIES_GYARADOS}, - }}, {{ // Gyarados - }}, {{ // Lapras - }}, {{ // Ditto - }}, {{ // Eevee - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, - {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, - {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, - }}, {{ // Vaporeon - }}, {{ // Jolteon - }}, {{ // Flareon - }}, {{ // Porygon - {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, - }}, {{ // Omanyte - {EVO_LEVEL, 40, SPECIES_OMASTAR}, - }}, {{ // Omastar - }}, {{ // Kabuto - {EVO_LEVEL, 40, SPECIES_KABUTOPS}, - }}, {{ // Kabutops - }}, {{ // Aerodactyl - }}, {{ // Snorlax - }}, {{ // Articuno - }}, {{ // Zapdos - }}, {{ // Moltres - }}, {{ // Dratini - {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, - }}, {{ // Dragonair - {EVO_LEVEL, 55, SPECIES_DRAGONITE}, - }}, {{ // Dragonite - }}, {{ // Mewtwo - }}, {{ // Mew - }}, {{ // Chikorita - {EVO_LEVEL, 16, SPECIES_BAYLEEF}, - }}, {{ // Bayleef - {EVO_LEVEL, 32, SPECIES_MEGANIUM}, - }}, {{ // Meganium - }}, {{ // Cyndaquil - {EVO_LEVEL, 14, SPECIES_QUILAVA}, - }}, {{ // Quilava - {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, - }}, {{ // Typhlosion - }}, {{ // Totodile - {EVO_LEVEL, 18, SPECIES_CROCONAW}, - }}, {{ // Croconaw - {EVO_LEVEL, 30, SPECIES_FERALIGATR}, - }}, {{ // Feraligatr - }}, {{ // Sentret - {EVO_LEVEL, 15, SPECIES_FURRET}, - }}, {{ // Furret - }}, {{ // Hoothoot - {EVO_LEVEL, 20, SPECIES_NOCTOWL}, - }}, {{ // Noctowl - }}, {{ // Ledyba - {EVO_LEVEL, 18, SPECIES_LEDIAN}, - }}, {{ // Ledian - }}, {{ // Spinarak - {EVO_LEVEL, 22, SPECIES_ARIADOS}, - }}, {{ // Ariados - }}, {{ // Crobat - }}, {{ // Chinchou - {EVO_LEVEL, 27, SPECIES_LANTURN}, - }}, {{ // Lanturn - }}, {{ // Pichu - {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, - }}, {{ // Cleffa - {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, - }}, {{ // Igglybuff - {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, - }}, {{ // Togepi - {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, - }}, {{ // Togetic - }}, {{ // Natu - {EVO_LEVEL, 25, SPECIES_XATU}, - }}, {{ // Xatu - }}, {{ // Mareep - {EVO_LEVEL, 15, SPECIES_FLAAFFY}, - }}, {{ // Flaaffy - {EVO_LEVEL, 30, SPECIES_AMPHAROS}, - }}, {{ // Ampharos - }}, {{ // Bellossom - }}, {{ // Marill - {EVO_LEVEL, 18, SPECIES_AZUMARILL}, - }}, {{ // Azumarill - }}, {{ // Sudowoodo - }}, {{ // Politoed - }}, {{ // Hoppip - {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, - }}, {{ // Skiploom - {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, - }}, {{ // Jumpluff - }}, {{ // Aipom - }}, {{ // Sunkern - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, - }}, {{ // Sunflora - }}, {{ // Yanma - }}, {{ // Wooper - {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, - }}, {{ // Quagsire - }}, {{ // Espeon - }}, {{ // Umbreon - }}, {{ // Murkrow - }}, {{ // Slowking - }}, {{ // Misdreavus - }}, {{ // Unown - }}, {{ // Wobbuffet - }}, {{ // Girafarig - }}, {{ // Pineco - {EVO_LEVEL, 31, SPECIES_FORRETRESS}, - }}, {{ // Forretress - }}, {{ // Dunsparce - }}, {{ // Gligar - }}, {{ // Steelix - }}, {{ // Snubbull - {EVO_LEVEL, 23, SPECIES_GRANBULL}, - }}, {{ // Granbull - }}, {{ // Qwilfish - }}, {{ // Scizor - }}, {{ // Shuckle - }}, {{ // Heracross - }}, {{ // Sneasel - }}, {{ // Teddiursa - {EVO_LEVEL, 30, SPECIES_URSARING}, - }}, {{ // Ursaring - }}, {{ // Slugma - {EVO_LEVEL, 38, SPECIES_MAGCARGO}, - }}, {{ // Magcargo - }}, {{ // Swinub - {EVO_LEVEL, 33, SPECIES_PILOSWINE}, - }}, {{ // Piloswine - }}, {{ // Corsola - }}, {{ // Remoraid - {EVO_LEVEL, 25, SPECIES_OCTILLERY}, - }}, {{ // Octillery - }}, {{ // Delibird - }}, {{ // Mantine - }}, {{ // Skarmory - }}, {{ // Houndour - {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, - }}, {{ // Houndoom - }}, {{ // Kingdra - }}, {{ // Phanpy - {EVO_LEVEL, 25, SPECIES_DONPHAN}, - }}, {{ // Donphan - }}, {{ // Porygon2 - }}, {{ // Stantler - }}, {{ // Smeargle - }}, {{ // Tyrogue - {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, - {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, - {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, - }}, {{ // Hitmontop - }}, {{ // Smoochum - {EVO_LEVEL, 30, SPECIES_JYNX}, - }}, {{ // Elekid - {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, - }}, {{ // Magby - {EVO_LEVEL, 30, SPECIES_MAGMAR}, - }}, {{ // Miltank - }}, {{ // Blissey - }}, {{ // Raikou - }}, {{ // Entei - }}, {{ // Suicune - }}, {{ // Larvitar - {EVO_LEVEL, 30, SPECIES_PUPITAR}, - }}, {{ // Pupitar - {EVO_LEVEL, 55, SPECIES_TYRANITAR}, - }}, {{ // Tyranitar - }}, {{ // Lugia - }}, {{ // Ho-Oh - }}, {{ // Celebi - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // Treecko - {EVO_LEVEL, 16, SPECIES_GROVYLE}, - }}, {{ // Grovyle - {EVO_LEVEL, 36, SPECIES_SCEPTILE}, - }}, {{ // Sceptile - }}, {{ // Torchic - {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, - }}, {{ // Combusken - {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, - }}, {{ // Blaziken - }}, {{ // Mudkip - {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, - }}, {{ // Marshtomp - {EVO_LEVEL, 36, SPECIES_SWAMPERT}, - }}, {{ // Swampert - }}, {{ // Poochyena - {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, - }}, {{ // Mightyena - }}, {{ // Zigzagoon - {EVO_LEVEL, 20, SPECIES_LINOONE}, - }}, {{ // Linoone - }}, {{ // Wurmple - {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, - {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, - }}, {{ // Silcoon - {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, - }}, {{ // Beautifly - }}, {{ // Cascoon - {EVO_LEVEL, 10, SPECIES_DUSTOX}, - }}, {{ // Dustox - }}, {{ // Lotad - {EVO_LEVEL, 14, SPECIES_LOMBRE}, - }}, {{ // Lombre - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, - }}, {{ // Ludicolo - }}, {{ // Seedot - {EVO_LEVEL, 14, SPECIES_NUZLEAF}, - }}, {{ // Nuzleaf - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, - }}, {{ // Shiftry - }}, {{ // Nincada - {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, - {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, - }}, {{ // Ninjask - }}, {{ // Shedinja - }}, {{ // Taillow - {EVO_LEVEL, 22, SPECIES_SWELLOW}, - }}, {{ // Swellow - }}, {{ // Shroomish - {EVO_LEVEL, 23, SPECIES_BRELOOM}, - }}, {{ // Breloom - }}, {{ // Spinda - }}, {{ // Wingull - {EVO_LEVEL, 25, SPECIES_PELIPPER}, - }}, {{ // Pelipper - }}, {{ // Surskit - {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, - }}, {{ // Masquerain - }}, {{ // Wailmer - {EVO_LEVEL, 40, SPECIES_WAILORD}, - }}, {{ // Wailord - }}, {{ // Skitty - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, - }}, {{ // Delcatty - }}, {{ // Kecleon - }}, {{ // Baltoy - {EVO_LEVEL, 36, SPECIES_CLAYDOL}, - }}, {{ // Claydol - }}, {{ // Nosepass - }}, {{ // Torkoal - }}, {{ // Sableye - }}, {{ // Barboach - {EVO_LEVEL, 30, SPECIES_WHISCASH}, - }}, {{ // Whiscash - }}, {{ // Luvdisc - }}, {{ // Corphish - {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, - }}, {{ // Crawdaunt - }}, {{ // Feebas - {EVO_BEAUTY, 170, SPECIES_MILOTIC}, - }}, {{ // Milotic - }}, {{ // Carvanha - {EVO_LEVEL, 30, SPECIES_SHARPEDO}, - }}, {{ // Sharpedo - }}, {{ // Trapinch - {EVO_LEVEL, 35, SPECIES_VIBRAVA}, - }}, {{ // Vibrava - {EVO_LEVEL, 45, SPECIES_FLYGON}, - }}, {{ // Flygon - }}, {{ // Makuhita - {EVO_LEVEL, 24, SPECIES_HARIYAMA}, - }}, {{ // Hariyama - }}, {{ // Electrike - {EVO_LEVEL, 26, SPECIES_MANECTRIC}, - }}, {{ // Manectric - }}, {{ // Numel - {EVO_LEVEL, 33, SPECIES_CAMERUPT}, - }}, {{ // Camerupt - }}, {{ // Spheal - {EVO_LEVEL, 32, SPECIES_SEALEO}, - }}, {{ // Sealeo - {EVO_LEVEL, 44, SPECIES_WALREIN}, - }}, {{ // Walrein - }}, {{ // Cacnea - {EVO_LEVEL, 32, SPECIES_CACTURNE}, - }}, {{ // Cacturne - }}, {{ // Snorunt - {EVO_LEVEL, 42, SPECIES_GLALIE}, - }}, {{ // Glalie - }}, {{ // Lunatone - }}, {{ // Solrock - }}, {{ // Azurill - {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, - }}, {{ // Spoink - {EVO_LEVEL, 32, SPECIES_GRUMPIG}, - }}, {{ // Grumpig - }}, {{ // Plusle - }}, {{ // Minun - }}, {{ // Mawile - }}, {{ // Meditite - {EVO_LEVEL, 37, SPECIES_MEDICHAM}, - }}, {{ // Medicham - }}, {{ // Swablu - {EVO_LEVEL, 35, SPECIES_ALTARIA}, - }}, {{ // Altaria - }}, {{ // Wynaut - {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, - }}, {{ // Duskull - {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, - }}, {{ // Dusclops - }}, {{ // Roselia - }}, {{ // Slakoth - {EVO_LEVEL, 18, SPECIES_VIGOROTH}, - }}, {{ // Vigoroth - {EVO_LEVEL, 36, SPECIES_SLAKING}, - }}, {{ // Slaking - }}, {{ // Gulpin - {EVO_LEVEL, 26, SPECIES_SWALOT}, - }}, {{ // Swalot - }}, {{ // Tropius - }}, {{ // Whismur - {EVO_LEVEL, 20, SPECIES_LOUDRED}, - }}, {{ // Loudred - {EVO_LEVEL, 40, SPECIES_EXPLOUD}, - }}, {{ // Exploud - }}, {{ // Clamperl - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, - }}, {{ // Huntail - }}, {{ // Gorebyss - }}, {{ // Absol - }}, {{ // Shuppet - {EVO_LEVEL, 37, SPECIES_BANETTE}, - }}, {{ // Banette - }}, {{ // Seviper - }}, {{ // Zangoose - }}, {{ // Relicanth - }}, {{ // Aron - {EVO_LEVEL, 32, SPECIES_LAIRON}, - }}, {{ // Lairon - {EVO_LEVEL, 42, SPECIES_AGGRON}, - }}, {{ // Aggron - }}, {{ // Castform - }}, {{ // Volbeat - }}, {{ // Illumise - }}, {{ // Lileep - {EVO_LEVEL, 40, SPECIES_CRADILY}, - }}, {{ // Cradily - }}, {{ // Anorith - {EVO_LEVEL, 40, SPECIES_ARMALDO}, - }}, {{ // Armaldo - }}, {{ // Ralts - {EVO_LEVEL, 20, SPECIES_KIRLIA}, - }}, {{ // Kirlia - {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, - }}, {{ // Gardevoir - }}, {{ // Bagon - {EVO_LEVEL, 30, SPECIES_SHELGON}, - }}, {{ // Shelgon - {EVO_LEVEL, 50, SPECIES_SALAMENCE}, - }}, {{ // Salamence - }}, {{ // Beldum - {EVO_LEVEL, 20, SPECIES_METANG}, - }}, {{ // Metang - {EVO_LEVEL, 45, SPECIES_METAGROSS}, - }}, {{ // Metagross - }}, {{ // Regirock - }}, {{ // Regice - }}, {{ // Registeel - }}, {{ // Kyogre - }}, {{ // Groudon - }}, {{ // Rayquaza - }}, {{ // Latias - }}, {{ // Latios - }}, {{ // Jirachi - }}, {{ // Deoxys - }}, {{ // Chimecho - }} +struct Evolution gEvolutionTable[NUM_SPECIES][5] = +{ + [SPECIES_BULBASAUR] = {{EVO_LEVEL, 16, SPECIES_IVYSAUR}}, + [SPECIES_IVYSAUR] = {{EVO_LEVEL, 32, SPECIES_VENUSAUR}}, + [SPECIES_CHARMANDER] = {{EVO_LEVEL, 16, SPECIES_CHARMELEON}}, + [SPECIES_CHARMELEON] = {{EVO_LEVEL, 36, SPECIES_CHARIZARD}}, + [SPECIES_SQUIRTLE] = {{EVO_LEVEL, 16, SPECIES_WARTORTLE}}, + [SPECIES_WARTORTLE] = {{EVO_LEVEL, 36, SPECIES_BLASTOISE}}, + [SPECIES_CATERPIE] = {{EVO_LEVEL, 7, SPECIES_METAPOD}}, + [SPECIES_METAPOD] = {{EVO_LEVEL, 10, SPECIES_BUTTERFREE}}, + [SPECIES_WEEDLE] = {{EVO_LEVEL, 7, SPECIES_KAKUNA}}, + [SPECIES_KAKUNA] = {{EVO_LEVEL, 10, SPECIES_BEEDRILL}}, + [SPECIES_PIDGEY] = {{EVO_LEVEL, 18, SPECIES_PIDGEOTTO}}, + [SPECIES_PIDGEOTTO] = {{EVO_LEVEL, 36, SPECIES_PIDGEOT}}, + [SPECIES_RATTATA] = {{EVO_LEVEL, 20, SPECIES_RATICATE}}, + [SPECIES_SPEAROW] = {{EVO_LEVEL, 20, SPECIES_FEAROW}}, + [SPECIES_EKANS] = {{EVO_LEVEL, 22, SPECIES_ARBOK}}, + [SPECIES_PIKACHU] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}}, + [SPECIES_SANDSHREW] = {{EVO_LEVEL, 22, SPECIES_SANDSLASH}}, + [SPECIES_NIDORAN_F] = {{EVO_LEVEL, 16, SPECIES_NIDORINA}}, + [SPECIES_NIDORINA] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}}, + [SPECIES_NIDORAN_M] = {{EVO_LEVEL, 16, SPECIES_NIDORINO}}, + [SPECIES_NIDORINO] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}}, + [SPECIES_CLEFAIRY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}}, + [SPECIES_VULPIX] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}}, + [SPECIES_JIGGLYPUFF] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}}, + [SPECIES_ZUBAT] = {{EVO_LEVEL, 22, SPECIES_GOLBAT}}, + [SPECIES_GOLBAT] = {{EVO_FRIENDSHIP, 0, SPECIES_CROBAT}}, + [SPECIES_ODDISH] = {{EVO_LEVEL, 21, SPECIES_GLOOM}}, + [SPECIES_GLOOM] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}}, + [SPECIES_PARAS] = {{EVO_LEVEL, 24, SPECIES_PARASECT}}, + [SPECIES_VENONAT] = {{EVO_LEVEL, 31, SPECIES_VENOMOTH}}, + [SPECIES_DIGLETT] = {{EVO_LEVEL, 26, SPECIES_DUGTRIO}}, + [SPECIES_MEOWTH] = {{EVO_LEVEL, 28, SPECIES_PERSIAN}}, + [SPECIES_PSYDUCK] = {{EVO_LEVEL, 33, SPECIES_GOLDUCK}}, + [SPECIES_MANKEY] = {{EVO_LEVEL, 28, SPECIES_PRIMEAPE}}, + [SPECIES_GROWLITHE] = {{EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}}, + [SPECIES_POLIWAG] = {{EVO_LEVEL, 25, SPECIES_POLIWHIRL}}, + [SPECIES_POLIWHIRL] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}}, + [SPECIES_ABRA] = {{EVO_LEVEL, 16, SPECIES_KADABRA}}, + [SPECIES_KADABRA] = {{EVO_TRADE, 0, SPECIES_ALAKAZAM}}, + [SPECIES_MACHOP] = {{EVO_LEVEL, 28, SPECIES_MACHOKE}}, + [SPECIES_MACHOKE] = {{EVO_TRADE, 0, SPECIES_MACHAMP}}, + [SPECIES_BELLSPROUT] = {{EVO_LEVEL, 21, SPECIES_WEEPINBELL}}, + [SPECIES_WEEPINBELL] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}}, + [SPECIES_TENTACOOL] = {{EVO_LEVEL, 30, SPECIES_TENTACRUEL}}, + [SPECIES_GEODUDE] = {{EVO_LEVEL, 25, SPECIES_GRAVELER}}, + [SPECIES_GRAVELER] = {{EVO_TRADE, 0, SPECIES_GOLEM}}, + [SPECIES_PONYTA] = {{EVO_LEVEL, 40, SPECIES_RAPIDASH}}, + [SPECIES_SLOWPOKE] = {{EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}}, + [SPECIES_MAGNEMITE] = {{EVO_LEVEL, 30, SPECIES_MAGNETON}}, + [SPECIES_DODUO] = {{EVO_LEVEL, 31, SPECIES_DODRIO}}, + [SPECIES_SEEL] = {{EVO_LEVEL, 34, SPECIES_DEWGONG}}, + [SPECIES_GRIMER] = {{EVO_LEVEL, 38, SPECIES_MUK}}, + [SPECIES_SHELLDER] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}}, + [SPECIES_GASTLY] = {{EVO_LEVEL, 25, SPECIES_HAUNTER}}, + [SPECIES_HAUNTER] = {{EVO_TRADE, 0, SPECIES_GENGAR}}, + [SPECIES_ONIX] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}}, + [SPECIES_DROWZEE] = {{EVO_LEVEL, 26, SPECIES_HYPNO}}, + [SPECIES_KRABBY] = {{EVO_LEVEL, 28, SPECIES_KINGLER}}, + [SPECIES_VOLTORB] = {{EVO_LEVEL, 30, SPECIES_ELECTRODE}}, + [SPECIES_EXEGGCUTE] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}}, + [SPECIES_CUBONE] = {{EVO_LEVEL, 28, SPECIES_MAROWAK}}, + [SPECIES_KOFFING] = {{EVO_LEVEL, 35, SPECIES_WEEZING}}, + [SPECIES_RHYHORN] = {{EVO_LEVEL, 42, SPECIES_RHYDON}}, + [SPECIES_CHANSEY] = {{EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}}, + [SPECIES_HORSEA] = {{EVO_LEVEL, 32, SPECIES_SEADRA}}, + [SPECIES_SEADRA] = {{EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}}, + [SPECIES_GOLDEEN] = {{EVO_LEVEL, 33, SPECIES_SEAKING}}, + [SPECIES_STARYU] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}}, + [SPECIES_SCYTHER] = {{EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}}, + [SPECIES_MAGIKARP] = {{EVO_LEVEL, 20, SPECIES_GYARADOS}}, + [SPECIES_EEVEE] = {{EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}}, + [SPECIES_PORYGON] = {{EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}}, + [SPECIES_OMANYTE] = {{EVO_LEVEL, 40, SPECIES_OMASTAR}}, + [SPECIES_KABUTO] = {{EVO_LEVEL, 40, SPECIES_KABUTOPS}}, + [SPECIES_DRATINI] = {{EVO_LEVEL, 30, SPECIES_DRAGONAIR}}, + [SPECIES_DRAGONAIR] = {{EVO_LEVEL, 55, SPECIES_DRAGONITE}}, + [SPECIES_CHIKORITA] = {{EVO_LEVEL, 16, SPECIES_BAYLEEF}}, + [SPECIES_BAYLEEF] = {{EVO_LEVEL, 32, SPECIES_MEGANIUM}}, + [SPECIES_CYNDAQUIL] = {{EVO_LEVEL, 14, SPECIES_QUILAVA}}, + [SPECIES_QUILAVA] = {{EVO_LEVEL, 36, SPECIES_TYPHLOSION}}, + [SPECIES_TOTODILE] = {{EVO_LEVEL, 18, SPECIES_CROCONAW}}, + [SPECIES_CROCONAW] = {{EVO_LEVEL, 30, SPECIES_FERALIGATR}}, + [SPECIES_SENTRET] = {{EVO_LEVEL, 15, SPECIES_FURRET}}, + [SPECIES_HOOTHOOT] = {{EVO_LEVEL, 20, SPECIES_NOCTOWL}}, + [SPECIES_LEDYBA] = {{EVO_LEVEL, 18, SPECIES_LEDIAN}}, + [SPECIES_SPINARAK] = {{EVO_LEVEL, 22, SPECIES_ARIADOS}}, + [SPECIES_CHINCHOU] = {{EVO_LEVEL, 27, SPECIES_LANTURN}}, + [SPECIES_PICHU] = {{EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}}, + [SPECIES_CLEFFA] = {{EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}}, + [SPECIES_IGGLYBUFF] = {{EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}}, + [SPECIES_TOGEPI] = {{EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}}, + [SPECIES_NATU] = {{EVO_LEVEL, 25, SPECIES_XATU}}, + [SPECIES_MAREEP] = {{EVO_LEVEL, 15, SPECIES_FLAAFFY}}, + [SPECIES_FLAAFFY] = {{EVO_LEVEL, 30, SPECIES_AMPHAROS}}, + [SPECIES_MARILL] = {{EVO_LEVEL, 18, SPECIES_AZUMARILL}}, + [SPECIES_HOPPIP] = {{EVO_LEVEL, 18, SPECIES_SKIPLOOM}}, + [SPECIES_SKIPLOOM] = {{EVO_LEVEL, 27, SPECIES_JUMPLUFF}}, + [SPECIES_SUNKERN] = {{EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}}, + [SPECIES_WOOPER] = {{EVO_LEVEL, 20, SPECIES_QUAGSIRE}}, + [SPECIES_PINECO] = {{EVO_LEVEL, 31, SPECIES_FORRETRESS}}, + [SPECIES_SNUBBULL] = {{EVO_LEVEL, 23, SPECIES_GRANBULL}}, + [SPECIES_TEDDIURSA] = {{EVO_LEVEL, 30, SPECIES_URSARING}}, + [SPECIES_SLUGMA] = {{EVO_LEVEL, 38, SPECIES_MAGCARGO}}, + [SPECIES_SWINUB] = {{EVO_LEVEL, 33, SPECIES_PILOSWINE}}, + [SPECIES_REMORAID] = {{EVO_LEVEL, 25, SPECIES_OCTILLERY}}, + [SPECIES_HOUNDOUR] = {{EVO_LEVEL, 24, SPECIES_HOUNDOOM}}, + [SPECIES_PHANPY] = {{EVO_LEVEL, 25, SPECIES_DONPHAN}}, + [SPECIES_TYROGUE] = {{EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}}, + [SPECIES_SMOOCHUM] = {{EVO_LEVEL, 30, SPECIES_JYNX}}, + [SPECIES_ELEKID] = {{EVO_LEVEL, 30, SPECIES_ELECTABUZZ}}, + [SPECIES_MAGBY] = {{EVO_LEVEL, 30, SPECIES_MAGMAR}}, + [SPECIES_LARVITAR] = {{EVO_LEVEL, 30, SPECIES_PUPITAR}}, + [SPECIES_PUPITAR] = {{EVO_LEVEL, 55, SPECIES_TYRANITAR}}, + [SPECIES_TREECKO] = {{EVO_LEVEL, 16, SPECIES_GROVYLE}}, + [SPECIES_GROVYLE] = {{EVO_LEVEL, 36, SPECIES_SCEPTILE}}, + [SPECIES_TORCHIC] = {{EVO_LEVEL, 16, SPECIES_COMBUSKEN}}, + [SPECIES_COMBUSKEN] = {{EVO_LEVEL, 36, SPECIES_BLAZIKEN}}, + [SPECIES_MUDKIP] = {{EVO_LEVEL, 16, SPECIES_MARSHTOMP}}, + [SPECIES_MARSHTOMP] = {{EVO_LEVEL, 36, SPECIES_SWAMPERT}}, + [SPECIES_POOCHYENA] = {{EVO_LEVEL, 18, SPECIES_MIGHTYENA}}, + [SPECIES_ZIGZAGOON] = {{EVO_LEVEL, 20, SPECIES_LINOONE}}, + [SPECIES_WURMPLE] = {{EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}}, + [SPECIES_SILCOON] = {{EVO_LEVEL, 10, SPECIES_BEAUTIFLY}}, + [SPECIES_CASCOON] = {{EVO_LEVEL, 10, SPECIES_DUSTOX}}, + [SPECIES_LOTAD] = {{EVO_LEVEL, 14, SPECIES_LOMBRE}}, + [SPECIES_LOMBRE] = {{EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}}, + [SPECIES_SEEDOT] = {{EVO_LEVEL, 14, SPECIES_NUZLEAF}}, + [SPECIES_NUZLEAF] = {{EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}}, + [SPECIES_NINCADA] = {{EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}}, + [SPECIES_TAILLOW] = {{EVO_LEVEL, 22, SPECIES_SWELLOW}}, + [SPECIES_SHROOMISH] = {{EVO_LEVEL, 23, SPECIES_BRELOOM}}, + [SPECIES_WINGULL] = {{EVO_LEVEL, 25, SPECIES_PELIPPER}}, + [SPECIES_SURSKIT] = {{EVO_LEVEL, 22, SPECIES_MASQUERAIN}}, + [SPECIES_WAILMER] = {{EVO_LEVEL, 40, SPECIES_WAILORD}}, + [SPECIES_SKITTY] = {{EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}}, + [SPECIES_BALTOY] = {{EVO_LEVEL, 36, SPECIES_CLAYDOL}}, + [SPECIES_BARBOACH] = {{EVO_LEVEL, 30, SPECIES_WHISCASH}}, + [SPECIES_CORPHISH] = {{EVO_LEVEL, 30, SPECIES_CRAWDAUNT}}, + [SPECIES_FEEBAS] = {{EVO_BEAUTY, 170, SPECIES_MILOTIC}}, + [SPECIES_CARVANHA] = {{EVO_LEVEL, 30, SPECIES_SHARPEDO}}, + [SPECIES_TRAPINCH] = {{EVO_LEVEL, 35, SPECIES_VIBRAVA}}, + [SPECIES_VIBRAVA] = {{EVO_LEVEL, 45, SPECIES_FLYGON}}, + [SPECIES_MAKUHITA] = {{EVO_LEVEL, 24, SPECIES_HARIYAMA}}, + [SPECIES_ELECTRIKE] = {{EVO_LEVEL, 26, SPECIES_MANECTRIC}}, + [SPECIES_NUMEL] = {{EVO_LEVEL, 33, SPECIES_CAMERUPT}}, + [SPECIES_SPHEAL] = {{EVO_LEVEL, 32, SPECIES_SEALEO}}, + [SPECIES_SEALEO] = {{EVO_LEVEL, 44, SPECIES_WALREIN}}, + [SPECIES_CACNEA] = {{EVO_LEVEL, 32, SPECIES_CACTURNE}}, + [SPECIES_SNORUNT] = {{EVO_LEVEL, 42, SPECIES_GLALIE}}, + [SPECIES_AZURILL] = {{EVO_FRIENDSHIP, 0, SPECIES_MARILL}}, + [SPECIES_SPOINK] = {{EVO_LEVEL, 32, SPECIES_GRUMPIG}}, + [SPECIES_MEDITITE] = {{EVO_LEVEL, 37, SPECIES_MEDICHAM}}, + [SPECIES_SWABLU] = {{EVO_LEVEL, 35, SPECIES_ALTARIA}}, + [SPECIES_WYNAUT] = {{EVO_LEVEL, 15, SPECIES_WOBBUFFET}}, + [SPECIES_DUSKULL] = {{EVO_LEVEL, 37, SPECIES_DUSCLOPS}}, + [SPECIES_SLAKOTH] = {{EVO_LEVEL, 18, SPECIES_VIGOROTH}}, + [SPECIES_VIGOROTH] = {{EVO_LEVEL, 36, SPECIES_SLAKING}}, + [SPECIES_GULPIN] = {{EVO_LEVEL, 26, SPECIES_SWALOT}}, + [SPECIES_WHISMUR] = {{EVO_LEVEL, 20, SPECIES_LOUDRED}}, + [SPECIES_LOUDRED] = {{EVO_LEVEL, 40, SPECIES_EXPLOUD}}, + [SPECIES_CLAMPERL] = {{EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}}, + [SPECIES_SHUPPET] = {{EVO_LEVEL, 37, SPECIES_BANETTE}}, + [SPECIES_ARON] = {{EVO_LEVEL, 32, SPECIES_LAIRON}}, + [SPECIES_LAIRON] = {{EVO_LEVEL, 42, SPECIES_AGGRON}}, + [SPECIES_LILEEP] = {{EVO_LEVEL, 40, SPECIES_CRADILY}}, + [SPECIES_ANORITH] = {{EVO_LEVEL, 40, SPECIES_ARMALDO}}, + [SPECIES_RALTS] = {{EVO_LEVEL, 20, SPECIES_KIRLIA}}, + [SPECIES_KIRLIA] = {{EVO_LEVEL, 30, SPECIES_GARDEVOIR}}, + [SPECIES_BAGON] = {{EVO_LEVEL, 30, SPECIES_SHELGON}}, + [SPECIES_SHELGON] = {{EVO_LEVEL, 50, SPECIES_SALAMENCE}}, + [SPECIES_BELDUM] = {{EVO_LEVEL, 20, SPECIES_METANG}}, + [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}}, }; #endif //POKERUBY_EVOLUTION_H diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h index cd06228dd..c7409f3b2 100644 --- a/src/data/pokemon/item_effects.h +++ b/src/data/pokemon/item_effects.h @@ -1,661 +1,72 @@ -// - -// - -#ifndef POKERUBY_ITEM_EFFECTS_H -#define POKERUBY_ITEM_EFFECTS_H - -const u8 gItemEffect_Potion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 20 -}; - -const u8 gItemEffect_Antidote[] = { - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00 -}; - -const u8 gItemEffect_BurnHeal[] = { - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00 -}; - -const u8 gItemEffect_IceHeal[] = { - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00 -}; - -const u8 gItemEffect_Awakening[] = { - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00 -}; - -const u8 gItemEffect_ParalyzeHeal[] = { - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00 -}; - -const u8 gItemEffect_FullRestore[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x04, - 0x00, - 0xff -}; - -const u8 gItemEffect_MaxPotion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0xff -}; - -const u8 gItemEffect_HyperPotion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 200 -}; - -const u8 gItemEffect_SuperPotion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 50 -}; - -const u8 gItemEffect_FullHeal[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00 -}; - -const u8 gItemEffect_Revive[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0xfe -}; - -const u8 gItemEffect_MaxRevive[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0xff -}; - -const u8 gItemEffect_FreshWater[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 50 -}; - -const u8 gItemEffect_SodaPop[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 60 -}; - -const u8 gItemEffect_Lemonade[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 80 -}; - -const u8 gItemEffect_MoomooMilk[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 100 -}; - -const u8 gItemEffect_EnergyPowder[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0xe0, - 50, - 0xfb, - 0xfb, - 0xf6 -}; - -const u8 gItemEffect_EnergyRoot[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0xe0, - 200, - 0xf6, - 0xf6, - 0xf1 -}; - -const u8 gItemEffect_HealPowder[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0xe0, - 0xfb, - 0xfb, - 0xf6 -}; - -const u8 gItemEffect_RevivalHerb[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0xe0, - 0xfe, - 0xf1, - 0xf1, - 0xec -}; - -const u8 gItemEffect_Ether[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x0a -}; - -const u8 gItemEffect_MaxEther[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x7f -}; - -const u8 gItemEffect_Elixir[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x0a -}; - -const u8 gItemEffect_MaxElixir[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x7f -}; - -const u8 gItemEffect_LavaCookie[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00 -}; - -const u8 gItemEffect_BlueFlute[] = { - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00 -}; - -const u8 gItemEffect_YellowFlute[] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00 -}; - -const u8 gItemEffect_RedFlute[] = { - 0x80, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00 -}; - -const u8 gItemEffect_BerryJuice[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 20 -}; - -const u8 gItemEffect_SacredAsh[] = { - 0x40, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0xff -}; - -const u8 gItemEffect_HPUp[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0xe0, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Protein[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x02, - 0xe0, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Iron[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe1, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Carbos[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Calcium[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe8, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_RareCandy[] = { - 0x00, - 0x00, - 0x00, - 0x40, - 0x44, - 0xe0, - 253, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_PPUp[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0xe0, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Zinc[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe4, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_PPMax[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xf0, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_GuardSpec[] = { - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_DireHit[] = { - 0x20, - 0x00, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XAttack[] = { - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XDefend[] = { - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XSpeed[] = { - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XAccuracy[] = { - 0x00, - 0x00, - 0x10, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XSpecial[] = { - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_SunStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_MoonStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_FireStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_ThunderStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_WaterStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_LeafStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_CheriBerry[] = { - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00 -}; - -const u8 gItemEffect_ChestoBerry[] = { - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00 -}; - -const u8 gItemEffect_PechaBerry[] = { - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00 -}; - -const u8 gItemEffect_RawstBerry[] = { - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00 -}; - -const u8 gItemEffect_AspearBerry[] = { - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00 -}; - -const u8 gItemEffect_LeppaBerry[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x0a -}; - -const u8 gItemEffect_OranBerry[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 10 -}; - -const u8 gItemEffect_PersimBerry[] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00 -}; - -const u8 gItemEffect_LumBerry[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00 -}; - -const u8 gItemEffect_SitrusBerry[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 30 -}; - -const u8 *const gItemEffectTable[] = { +#ifndef GUARD_ITEM_EFFECTS_H +#define GUARD_ITEM_EFFECTS_H + +const u8 gItemEffect_Potion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20}; +const u8 gItemEffect_Antidote[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}; +const u8 gItemEffect_BurnHeal[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00}; +const u8 gItemEffect_IceHeal[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00}; +const u8 gItemEffect_Awakening[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_ParalyzeHeal[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00}; +const u8 gItemEffect_FullRestore[] = {0x00, 0x00, 0x00, 0x3f, 0x04, 0x00, 0xff}; +const u8 gItemEffect_MaxPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xff}; +const u8 gItemEffect_HyperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 200}; +const u8 gItemEffect_SuperPotion[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50}; +const u8 gItemEffect_FullHeal[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_Revive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xfe}; +const u8 gItemEffect_MaxRevive[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff}; +const u8 gItemEffect_FreshWater[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 50}; +const u8 gItemEffect_SodaPop[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 60}; +const u8 gItemEffect_Lemonade[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 80}; +const u8 gItemEffect_MoomooMilk[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 100}; +const u8 gItemEffect_EnergyPowder[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 50, 0xfb, 0xfb, 0xf6}; +const u8 gItemEffect_EnergyRoot[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0xe0, 200, 0xf6, 0xf6, 0xf1}; +const u8 gItemEffect_HealPowder[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0xe0, 0xfb, 0xfb, 0xf6}; +const u8 gItemEffect_RevivalHerb[] = {0x00, 0x00, 0x00, 0x00, 0x44, 0xe0, 0xfe, 0xf1, 0xf1, 0xec}; +const u8 gItemEffect_Ether[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a}; +const u8 gItemEffect_MaxEther[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x7f}; +const u8 gItemEffect_Elixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a}; +const u8 gItemEffect_MaxElixir[] = {0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f}; +const u8 gItemEffect_LavaCookie[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_BlueFlute[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_YellowFlute[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; +const u8 gItemEffect_RedFlute[] = {0x80, 0x00, 0x00, 0x00, 0x00, 0x00}; +const u8 gItemEffect_BerryJuice[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 20}; +const u8 gItemEffect_SacredAsh[] = {0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0xff}; +const u8 gItemEffect_HPUp[] = {0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Protein[] = {0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Iron[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Carbos[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Calcium[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_RareCandy[] = {0x00, 0x00, 0x00, 0x40, 0x44, 0xe0, 253, 0x05, 0x03, 0x02}; +const u8 gItemEffect_PPUp[] = {0x00, 0x00, 0x00, 0x00, 0x20, 0xe0, 0x05, 0x03, 0x02}; +const u8 gItemEffect_Zinc[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x0a, 0x05, 0x03, 0x02}; +const u8 gItemEffect_PPMax[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x03, 0x02}; +const u8 gItemEffect_GuardSpec[] = {0x00, 0x00, 0x00, 0x80, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_DireHit[] = {0x20, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XAttack[] = {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XDefend[] = {0x00, 0x10, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XSpeed[] = {0x00, 0x01, 0x00, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XAccuracy[] = {0x00, 0x00, 0x10, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_XSpecial[] = {0x00, 0x00, 0x01, 0x00, 0x00, 0x60, 0x01, 0x01}; +const u8 gItemEffect_SunStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_MoonStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_FireStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_ThunderStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_WaterStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_LeafStone[] = {0x00, 0x00, 0x00, 0x00, 0x80, 0x00}; +const u8 gItemEffect_CheriBerry[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00}; +const u8 gItemEffect_ChestoBerry[] = {0x00, 0x00, 0x00, 0x20, 0x00, 0x00}; +const u8 gItemEffect_PechaBerry[] = {0x00, 0x00, 0x00, 0x10, 0x00, 0x00}; +const u8 gItemEffect_RawstBerry[] = {0x00, 0x00, 0x00, 0x08, 0x00, 0x00}; +const u8 gItemEffect_AspearBerry[] = {0x00, 0x00, 0x00, 0x04, 0x00, 0x00}; +const u8 gItemEffect_LeppaBerry[] = {0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x0a}; +const u8 gItemEffect_OranBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 10}; +const u8 gItemEffect_PersimBerry[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; +const u8 gItemEffect_LumBerry[] = {0x00, 0x00, 0x00, 0x3f, 0x00, 0x00}; +const u8 gItemEffect_SitrusBerry[] = {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 30}; + +const u8 *const gItemEffectTable[] = +{ gItemEffect_Potion, gItemEffect_Antidote, gItemEffect_BurnHeal, @@ -821,4 +232,4 @@ const u8 *const gItemEffectTable[] = { NULL }; -#endif //POKERUBY_ITEM_EFFECTS_H +#endif //GUARD_ITEM_EFFECTS_H diff --git a/src/data/pokemon/level_up_learnset_pointers.h b/src/data/pokemon/level_up_learnset_pointers.h index 19761c996..894a2b58e 100644 --- a/src/data/pokemon/level_up_learnset_pointers.h +++ b/src/data/pokemon/level_up_learnset_pointers.h @@ -5,7 +5,7 @@ #ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H #define POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H -const u16 *const gLevelUpLearnsets[] = { +const u16 *gLevelUpLearnsets[] = { gBulbasaurLevelUpLearnset, gBulbasaurLevelUpLearnset, gIvysaurLevelUpLearnset, diff --git a/src/data/pokemon/nature_stats.h b/src/data/pokemon/nature_stats.h deleted file mode 100644 index fcef2a0ac..000000000 --- a/src/data/pokemon/nature_stats.h +++ /dev/null @@ -1,37 +0,0 @@ -// - -// - -#ifndef POKERUBY_NATURE_STATS_H -#define POKERUBY_NATURE_STATS_H - -const s8 gNatureStatTable[][5] = { - // Atk Def Spd Sp.Atk Sp.Def - { 0, 0, 0, 0, 0}, // Hardy - { 1, -1, 0, 0, 0}, // Lonely - { 1, 0, -1, 0, 0}, // Brave - { 1, 0, 0, -1, 0}, // Adamant - { 1, 0, 0, 0, -1}, // Naughty - { -1, 1, 0, 0, 0}, // Bold - { 0, 0, 0, 0, 0}, // Docile - { 0, 1, -1, 0, 0}, // Relaxed - { 0, 1, 0, -1, 0}, // Impish - { 0, 1, 0, 0, -1}, // Lax - { -1, 0, 1, 0, 0}, // Timid - { 0, -1, 1, 0, 0}, // Hasty - { 0, 0, 0, 0, 0}, // Serious - { 0, 0, 1, -1, 0}, // Jolly - { 0, 0, 1, 0, -1}, // Naive - { -1, 0, 0, 1, 0}, // Modest - { 0, -1, 0, 1, 0}, // Mild - { 0, 0, -1, 1, 0}, // Quiet - { 0, 0, 0, 0, 0}, // Bashful - { 0, 0, 0, 1, -1}, // Rash - { -1, 0, 0, 0, 1}, // Calm - { 0, -1, 0, 0, 1}, // Gentle - { 0, 0, -1, 0, 1}, // Sassy - { 0, 0, 0, -1, 1}, // Careful - { 0, 0, 0, 0, 0} // Quirky -}; - -#endif //POKERUBY_NATURE_STATS_H diff --git a/src/data/pokemon/spinda_spots.h b/src/data/pokemon/spinda_spots.h deleted file mode 100644 index d045e0734..000000000 --- a/src/data/pokemon/spinda_spots.h +++ /dev/null @@ -1,15 +0,0 @@ -// - -// - -#ifndef POKERUBY_SPINDA_SPOTS_H -#define POKERUBY_SPINDA_SPOTS_H - -const struct SpindaSpot gSpindaSpotGraphics[] = { - {16, 14, INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, - {40, 15, INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, - {22, 32, INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, - {34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")} -}; - -#endif //POKERUBY_SPINDA_SPOTS_H diff --git a/src/field/daycare.c b/src/field/daycare.c index 5811461ae..7e4530906 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -341,7 +341,7 @@ u16 GetEggSpecies(u16 species) { for (k = 0; k < 5; k++) { - if (gEvolutionTable[j].evolutions[k].targetSpecies == species) + if (gEvolutionTable[j][k].targetSpecies == species) { species = j; found = TRUE; diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index bfd0bc972..0242e7444 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -1,13 +1,16 @@ #include "global.h" #include "data2.h" +#include "constants/abilities.h" #include "constants/items.h" +#include "constants/moves.h" +#include "constants/species.h" #include "main.h" #include "pokemon.h" #include "random.h" #include "overworld.h" -#include "constants/species.h" #include "sprite.h" #include "string_util.h" +#include "trainer.h" #include "text.h" #include "ewram.h" @@ -26,6 +29,59 @@ struct Pokemon gPlayerParty[6]; u8 gEnemyPartyCount; struct Pokemon gEnemyParty[6]; +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 struct SpindaSpot gSpindaSpotGraphics[] = +{ + {16, 14, INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, + {40, 15, INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, + {22, 32, INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, + {34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")} +}; + +#include "../data/pokemon/item_effects.h" + +const s8 gNatureStatTable[][5] = +{ + // Atk Def Spd Sp.Atk Sp.Def + { 0, 0, 0, 0, 0}, // Hardy + { +1, -1, 0, 0, 0}, // Lonely + { +1, 0, -1, 0, 0}, // Brave + { +1, 0, 0, -1, 0}, // Adamant + { +1, 0, 0, 0, -1}, // Naughty + { -1, +1, 0, 0, 0}, // Bold + { 0, 0, 0, 0, 0}, // Docile + { 0, +1, -1, 0, 0}, // Relaxed + { 0, +1, 0, -1, 0}, // Impish + { 0, +1, 0, 0, -1}, // Lax + { -1, 0, +1, 0, 0}, // Timid + { 0, -1, +1, 0, 0}, // Hasty + { 0, 0, 0, 0, 0}, // Serious + { 0, 0, +1, -1, 0}, // Jolly + { 0, 0, +1, 0, -1}, // Naive + { -1, 0, 0, +1, 0}, // Modest + { 0, -1, 0, +1, 0}, // Mild + { 0, 0, -1, +1, 0}, // Quiet + { 0, 0, 0, 0, 0}, // Bashful + { 0, 0, 0, +1, -1}, // Rash + { -1, 0, 0, 0, +1}, // Calm + { 0, -1, 0, 0, +1}, // Gentle + { 0, 0, -1, 0, +1}, // Sassy + { 0, 0, 0, -1, +1}, // Careful + { 0, 0, 0, 0, 0} // Quirky +}; + +#include "../data/pokemon/tmhm_learnsets.h" +#include "../data/pokemon/trainer_class_lookups.h" +#include "../data/pokemon/cry_ids.h" +#include "../data/pokemon/experience_tables.h" +#include "../data/pokemon/base_stats.h" +#include "../data/pokemon/level_up_learnsets.h" +#include "../data/pokemon/evolution.h" +#include "../data/pokemon/level_up_learnset_pointers.h" + void ZeroBoxMonData(struct BoxPokemon *boxMon) { u8 *raw = (u8 *)boxMon; @@ -401,7 +457,7 @@ u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon) s32 n = (((2 * baseStat + iv + ev / 4) * level) / 100) + 5; \ u8 nature = GetNature(mon); \ n = nature_stat_mod(nature, n, statIndex); \ - SetMonData(mon, field, &n); \ + SetMonData(mon, field, &n); \ } void CalculateMonStats(struct Pokemon *mon) diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c index eb56974cd..b941ed2ab 100644 --- a/src/pokemon/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/hold_effects.h" #include "battle.h" #include "battle_util.h" #include "data2.h" @@ -12,6 +13,7 @@ #include "string_util.h" #include "strings2.h" #include "text.h" +#include "trainer.h" #include "util.h" #include "ewram.h" @@ -40,11 +42,12 @@ extern const struct SpriteTemplate gSpriteTemplate_8208288[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; -extern u8 gSecretBaseTrainerClasses[][5]; -extern u8 gUnknown_08208238[]; -extern u8 gUnknown_0820823C[]; -extern u8 gStatStageRatios[][2]; -extern u8 gHoldEffectToType[][2]; + +extern const u8 gUnknown_08208238[]; +extern const u8 gUnknown_0820823C[]; + +extern void sub_80105A0(struct Sprite *); +extern void oac_poke_opponent(struct Sprite *); u8 CountAliveMons(u8 a1) { @@ -145,6 +148,14 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality) return MON_MALE; } +const struct SpriteTemplate gSpriteTemplate_8208288[] = +{ + {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, + {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, + {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, + {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, +}; + void GetMonSpriteTemplate_803C56C(u16 species, u8 a2) { gUnknown_02024E8C = gSpriteTemplate_8208288[a2]; @@ -1094,6 +1105,13 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord) gTrainerBattleOpponent = 1024; } +const u8 gSecretBaseTrainerClasses[][5] = { + // male + {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M}, + // female + {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F} +}; + u8 GetSecretBaseTrainerPicIndex(void) { u8 trainerClass = gSecretBaseTrainerClasses[eSecretBaseRecord->gender][eSecretBaseRecord->trainerId[0] % 5]; diff --git a/src/pokemon/pokemon_3.c b/src/pokemon/pokemon_3.c index d659ed680..221de831a 100644 --- a/src/pokemon/pokemon_3.c +++ b/src/pokemon/pokemon_3.c @@ -1,11 +1,12 @@ #include "global.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" #include "battle.h" #include "battle_message.h" #include "data2.h" #include "event_data.h" -#include "constants/hold_effects.h" #include "item.h" -#include "constants/items.h" #include "link.h" #include "m4a.h" #include "main.h" @@ -42,20 +43,16 @@ extern u8 gStringBank; extern u8 gBankInMenu; extern struct SpindaSpot gSpindaSpotGraphics[]; extern s8 gNatureStatTable[][5]; -extern s8 gUnknown_082082FE[][3]; extern u16 gTrainerBattleOpponent; extern u16 gBattleTypeFlags; extern u32 gTMHMLearnsets[][2]; extern u8 gBattleMonForms[]; extern const u8 BattleText_Wally[]; -extern const u16 gHMMoves[]; extern s8 gPokeblockFlavorCompatibilityTable[]; extern u8 gLastUsedAbility; extern const u8 BattleText_PreventedSwitch[]; extern u16 gBattlePartyID[]; -extern u8 gJapaneseNidoranNames[][11]; -extern u8 gUnknown_082082F8[]; extern u8 BattleText_Rose[]; extern u8 BattleText_UnknownString3[]; extern u8 BattleText_MistShroud[]; @@ -193,6 +190,8 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) return offset; } +const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6}; + void sub_803F324(int stat) { gBankTarget = gBankInMenu; @@ -290,56 +289,56 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) for (i = 0; i < 5; i++) { - switch (gEvolutionTable[species].evolutions[i].method) + switch (gEvolutionTable[species][i].method) { case EVO_FRIENDSHIP: if (friendship >= 220) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_DAY: RtcCalcLocalTime(); if (gLocalTime.hours >= 12 && gLocalTime.hours < 24 && friendship >= 220) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_FRIENDSHIP_NIGHT: RtcCalcLocalTime(); if (gLocalTime.hours >= 0 && gLocalTime.hours < 12 && friendship >= 220) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL: - if (gEvolutionTable[species].evolutions[i].param <= level) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_ATK_GT_DEF: - if (gEvolutionTable[species].evolutions[i].param <= level) + if (gEvolutionTable[species][i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) > GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_ATK_EQ_DEF: - if (gEvolutionTable[species].evolutions[i].param <= level) + if (gEvolutionTable[species][i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) == GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_ATK_LT_DEF: - if (gEvolutionTable[species].evolutions[i].param <= level) + if (gEvolutionTable[species][i].param <= level) if (GetMonData(mon, MON_DATA_ATK, 0) < GetMonData(mon, MON_DATA_DEF, 0)) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_SILCOON: - if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) <= 4) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) <= 4) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_CASCOON: - if (gEvolutionTable[species].evolutions[i].param <= level && (upperPersonality % 10) > 4) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level && (upperPersonality % 10) > 4) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_LEVEL_NINJASK: - if (gEvolutionTable[species].evolutions[i].param <= level) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= level) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_BEAUTY: - if (gEvolutionTable[species].evolutions[i].param <= beauty) - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + if (gEvolutionTable[species][i].param <= beauty) + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; } } @@ -347,17 +346,17 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) case 1: for (i = 0; i < 5; i++) { - switch (gEvolutionTable[species].evolutions[i].method) + switch (gEvolutionTable[species][i].method) { case EVO_TRADE: - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; case EVO_TRADE_ITEM: - if (gEvolutionTable[species].evolutions[i].param == heldItem) + if (gEvolutionTable[species][i].param == heldItem) { heldItem = 0; SetMonData(mon, MON_DATA_HELD_ITEM, &heldItem); - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; } break; } @@ -367,10 +366,10 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem) case 3: for (i = 0; i < 5; i++) { - if (gEvolutionTable[species].evolutions[i].method == EVO_ITEM - && gEvolutionTable[species].evolutions[i].param == evolutionItem) + if (gEvolutionTable[species][i].method == EVO_ITEM + && gEvolutionTable[species][i].param == evolutionItem) { - targetSpecies = gEvolutionTable[species].evolutions[i].targetSpecies; + targetSpecies = gEvolutionTable[species][i].targetSpecies; break; } } @@ -644,6 +643,20 @@ u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex) return n; } +const s8 gUnknown_082082FE[][3] = +{ + // Happiness deltas + { 5, 3, 2}, + { 5, 3, 2}, + { 1, 1, 0}, + { 3, 2, 1}, + { 1, 1, 0}, + { 1, 1, 1}, + {-1, -1, -1}, + {-5, -5, -10}, + {-5, -5, -10} +}; + void AdjustFriendship(struct Pokemon *mon, u8 event) { u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); @@ -653,13 +666,9 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) - { holdEffect = gEnigmaBerries[0].holdEffect; - } else - { holdEffect = gSaveBlock1.enigmaBerry.holdEffect; - } } else { @@ -758,13 +767,9 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies) if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) - { holdEffect = gEnigmaBerries[0].holdEffect; - } else - { holdEffect = gSaveBlock1.enigmaBerry.holdEffect; - } } else { @@ -1198,6 +1203,19 @@ const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u return &gMonPaletteTable[species]; } +const u16 gHMMoves[] = +{ + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + 0xffff +}; + bool32 IsHMMove2(u16 move) { int i = 0; @@ -1338,12 +1356,14 @@ u8 *sub_8040D08(void) return gLinkPlayers[sub_803FC34(gLinkPlayers[id].lp_field_18 ^ 2)].name; } +const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")}; + bool32 ShouldHideGenderIconForLanguage(u16 species, u8 *name, u8 language) { bool32 retVal = FALSE; if (species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) { - u8 *speciesName; + const u8 *speciesName; if (language == GAME_LANGUAGE) { speciesName = gSpeciesNames[species]; diff --git a/src/pokemon/pokemon_data.c b/src/pokemon/pokemon_data.c index 031f2ea24..3473b58c8 100644 --- a/src/pokemon/pokemon_data.c +++ b/src/pokemon/pokemon_data.c @@ -9,120 +9,4 @@ #include "sprite.h" #include "data2.h" -#include "../data/pokemon/dex_order.h" -#include "../data/pokemon/spinda_spots.h" -#include "../data/pokemon/item_effects.h" -#include "../data/pokemon/nature_stats.h" -#include "../data/pokemon/tmhm_learnsets.h" -#include "../data/pokemon/trainer_class_lookups.h" -#include "../data/pokemon/cry_ids.h" -#include "../data/pokemon/experience_tables.h" -#include "../data/pokemon/base_stats.h" -#include "../data/pokemon/level_up_learnsets.h" -#include "../data/pokemon/evolution.h" -#include "../data/pokemon/level_up_learnset_pointers.h" -const u8 gUnknown_08208238[] = { // Masks for getting PP Up count, also PP Max values - 0x03, 0x0c, 0x30, 0xc0 -}; - -const u8 gUnknown_0820823C[] = { // Masks for setting PP Up count - 0xFC, 0xF3, 0xCF, 0x3F -}; - -const u8 gUnknown_08208240[] = { // Values added to PP Up count - 0x01, 0x04, 0x10, 0x40 -}; - -const u8 gStatStageRatios[][2] = { - {10, 40}, // -6 - {10, 35}, // -5 - {10, 30}, // -4 - {10, 25}, // -3 - {10, 20}, // -2 - {10, 15}, // -1 - {10, 10}, // 0 - {15, 10}, // 1 - {20, 10}, // 2 - {25, 10}, // 3 - {30, 10}, // 4 - {35, 10}, // 5 - {40, 10} // 6 -}; - -const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ"); - -const u8 gHoldEffectToType[][2] = { - {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, - {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL}, - {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND}, - {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK}, - {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS}, - {HOLD_EFFECT_DARK_POWER, TYPE_DARK}, - {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING}, - {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC}, - {HOLD_EFFECT_WATER_POWER, TYPE_WATER}, - {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING}, - {HOLD_EFFECT_POISON_POWER, TYPE_POISON}, - {HOLD_EFFECT_ICE_POWER, TYPE_ICE}, - {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST}, - {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC}, - {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE}, - {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON}, - {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL} -}; - -extern void sub_80105A0(struct Sprite *); -extern void oac_poke_opponent(struct Sprite *); - -const struct SpriteTemplate gSpriteTemplate_8208288[] = { - {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, - {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, - {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, - {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, -}; - -const u8 gSecretBaseTrainerClasses[][5] = { - // male - {FACILITY_CLASS_YOUNGSTER, FACILITY_CLASS_BUG_CATCHER, FACILITY_CLASS_RICH_BOY, FACILITY_CLASS_CAMPER, FACILITY_CLASS_COOL_TRAINER_M}, - // female - {FACILITY_CLASS_LASS, FACILITY_CLASS_SCHOOL_KID_F, FACILITY_CLASS_LADY, FACILITY_CLASS_PICNICKER, FACILITY_CLASS_COOL_TRAINER_F} -}; - -const u8 gUnknown_082082F2[] = { - MON_DATA_HP_EV, - MON_DATA_ATK_EV, - MON_DATA_DEF_EV, - MON_DATA_SPEED_EV, - MON_DATA_SPDEF_EV, - MON_DATA_SPATK_EV -}; - -const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6}; - -const s8 gUnknown_082082FE[][3] = { - // Happiness deltas - { 5, 3, 2}, - { 5, 3, 2}, - { 1, 1, 0}, - { 3, 2, 1}, - { 1, 1, 0}, - { 1, 1, 1}, - {-1, -1, -1}, - {-5, -5, -10}, - {-5, -5, -10} -}; - -const u16 gHMMoves[] = { - MOVE_CUT, - MOVE_FLY, - MOVE_SURF, - MOVE_STRENGTH, - MOVE_FLASH, - MOVE_ROCK_SMASH, - MOVE_WATERFALL, - MOVE_DIVE, - 0xffff -}; - -const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")}; diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c new file mode 100644 index 000000000..66f2ff697 --- /dev/null +++ b/src/pokemon/pokemon_item_effect.c @@ -0,0 +1,11 @@ +#include "global.h" +#include "pokemon.h" + +const u8 gUnknown_082082F2[] = { + MON_DATA_HP_EV, + MON_DATA_ATK_EV, + MON_DATA_DEF_EV, + MON_DATA_SPEED_EV, + MON_DATA_SPDEF_EV, + MON_DATA_SPATK_EV +}; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 697806ee1..931ec0d4d 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -497,35 +497,31 @@ static void CB2_TradeEvolutionSceneUpdate(void) static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) { u32 data = 0; - if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) + + if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) { s32 i; struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount]; - const struct EvolutionData* EvoTable; - const struct EvolutionData* Evos; CopyMon(Shedinja, mon, sizeof(struct Pokemon)); - SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies)); - SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies])); - SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data)); - SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data)); - SetMonData(Shedinja, MON_DATA_10, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_SPECIES, (void*)&gEvolutionTable[preEvoSpecies][1].targetSpecies); + SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]); + SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)&data); + SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)&data); + SetMonData(Shedinja, MON_DATA_10, (void*)&data); for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) - SetMonData(Shedinja, i, (void*)(&data)); + SetMonData(Shedinja, i, (void*)&data); for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++) - SetMonData(Shedinja, i, (void*)(&data)); - SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data)); + SetMonData(Shedinja, i, (void*)&data); + SetMonData(Shedinja, MON_DATA_STATUS, (void*)&data); data = 0xFF; - SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data)); + SetMonData(Shedinja, MON_DATA_MAIL, (void*)&data); CalculateMonStats(Shedinja); CalculatePlayerPartyCount(); - // can't match it otherwise, ehh - EvoTable = gEvolutionTable; - Evos = EvoTable + preEvoSpecies; - GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2); - GetSetPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), 2); + GetSetPokedexFlag(SpeciesToNationalPokedexNum(gEvolutionTable[preEvoSpecies][1].targetSpecies), 3); if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE -- cgit v1.2.3 From c8ac9802a9e59d877a34321793387c188b3c2586 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 14 Jan 2018 18:19:05 +0100 Subject: truncated some data --- src/battle/battle_anim.c | 576 ----------------------------------------------- 1 file changed, 576 deletions(-) (limited to 'src') diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 5239e239d..4549d1fcb 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -23,1226 +23,650 @@ const struct OamData gOamData_837DF24 = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF2C = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF34 = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF3C = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF44 = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF4C = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF54 = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF5C = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF64 = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF6C = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF74 = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF7C = { - .y = 0, .affineMode = 0, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF84 = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF8C = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF94 = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DF9C = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFA4 = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFAC = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFB4 = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFBC = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFC4 = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFCC = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFD4 = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFDC = { - .y = 0, .affineMode = 1, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFE4 = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFEC = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFF4 = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837DFFC = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837D004 = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837D00C = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E014 = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E01C = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E024 = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E02C = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E034 = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E03C = { - .y = 0, .affineMode = 3, .objMode = 0, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E044 = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E04C = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E054 = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E05C = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E064 = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E06C = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E074 = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E07C = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E084 = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E08C = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E094 = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E09C = { - .y = 0, .affineMode = 0, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0A4 = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0AC = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0B4 = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0BC = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0C4 = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0CC = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0D4 = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0DC = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0E4 = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0EC = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0F4 = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E0FC = { - .y = 0, .affineMode = 1, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E104 = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E10C = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E114 = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E11C = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 0, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E124 = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E12C = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E134 = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E13C = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 1, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E144 = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 0, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E14C = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 1, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E154 = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 2, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct OamData gOamData_837E15C = { - .y = 0, .affineMode = 3, .objMode = 1, - .mosaic = 0, - .bpp = 0, .shape = 2, - .x = 0, - .matrixNum = 0, .size = 3, - .tileNum = 0, .priority = 2, - .paletteNum = 0, - .affineParam = 0, }; const struct CompressedSpriteSheet gBattleAnimPicTable[] = -- cgit v1.2.3 From 99d4f3c24a600af8dadfe921f127f68d0bd4f2c3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 12:48:52 -0500 Subject: finish decompiling contest_ai.c --- src/contest_ai.c | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 3fc7cec3b..ea0435775 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -27,6 +27,8 @@ typedef void (* ContestAICmdFunc)(void); extern const ContestAICmdFunc sContestAICmdTable[]; // TODO: Move table to C file void ContestAI_DoAIProcessing(void); +void sub_812ACA4(u8 *); +u8 sub_812ACC8(void); void ContestAI_ResetAI(u8 var) { @@ -1371,3 +1373,123 @@ void ContestAICmd_unk_7E(void) else gAIScriptPtr += 6; } + +// jump +void ContestAICmd_unk_7F(void) +{ + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +} + +void ContestAICmd_unk_80(void) +{ + sub_812ACA4(gAIScriptPtr + 5); + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); +} + +void ContestAICmd_unk_81(void) +{ + if(!sub_812ACC8()) + eContestAI->aiAction |= 1; +} + +// push stack? +void sub_812ACA4(u8 *ptr) +{ + u8 unk40 = eContestAI->unk40++; + eContestAI->stack[unk40] = (u32)ptr; +} + +// pop stack? +bool8 sub_812ACC8(void) +{ + if(eContestAI->unk40 != 0) + { + --eContestAI->unk40; + gAIScriptPtr = (u8 *)eContestAI->stack[eContestAI->unk40]; + return TRUE; + } + else + return FALSE; +} + +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; +} + +void ContestAICmd_unk_83(void) +{ + ContestAICmd_check_for_exciting_move(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_84(void) +{ + ContestAICmd_check_for_exciting_move(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +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; +} + +void ContestAICmd_unk_86(void) +{ + ContestAICmd_unk_85(); + + if((s16)eContestAI->scriptResult != 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} + +void ContestAICmd_unk_87(void) +{ + ContestAICmd_unk_85(); + + if((s16)eContestAI->scriptResult == 0) + gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); + else + gAIScriptPtr += 4; +} -- cgit v1.2.3 From 8990b10732827087e04a2a02632769b252baaff6 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 13:19:30 -0500 Subject: move rodata to C --- src/contest_ai.c | 565 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 420 insertions(+), 145 deletions(-) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index ea0435775..f8f2812fb 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -4,7 +4,6 @@ #include "ewram.h" extern u8 AreMovesContestCombo(u16, u16); -extern bool8 sub_8128A7C(u8); extern bool8 sub_80B214C(u8); extern bool8 Contest_IsMonsTurnDisabled(u8); @@ -22,13 +21,289 @@ extern u16 gSpecialVar_ContestCategory; extern u8 *gAIScriptPtr; extern 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); -extern const ContestAICmdFunc sContestAICmdTable[]; // TODO: Move table to C file +static const ContestAICmdFunc sContestAICmdTable[] = +{ + ContestAICmd_unk_00, + ContestAICmd_get_turn, + ContestAICmd_unk_02, + ContestAICmd_unk_03, + ContestAICmd_unk_04, + ContestAICmd_unk_05, + ContestAICmd_get_excitement, + ContestAICmd_unk_07, + ContestAICmd_unk_08, + ContestAICmd_unk_09, + ContestAICmd_unk_0A, + ContestAICmd_get_user_order, + ContestAICmd_unk_0C, + ContestAICmd_unk_0D, + ContestAICmd_unk_0E, + ContestAICmd_unk_0F, + ContestAICmd_get_user_condition_maybe, + ContestAICmd_unk_11, + ContestAICmd_unk_12, + ContestAICmd_unk_13, + ContestAICmd_unk_14, + ContestAICmd_unk_15, + ContestAICmd_unk_16, + ContestAICmd_unk_17, + ContestAICmd_unk_18, + ContestAICmd_unk_19, + ContestAICmd_unk_1A, + ContestAICmd_unk_1B, + ContestAICmd_unk_1C, + ContestAICmd_unk_1D, + ContestAICmd_unk_1E, + ContestAICmd_get_contest_type, + ContestAICmd_unk_20, + ContestAICmd_unk_21, + ContestAICmd_get_move_excitement, + ContestAICmd_unk_23, + ContestAICmd_unk_24, + ContestAICmd_unk_25, + ContestAICmd_unk_26, + ContestAICmd_get_move_effect, + ContestAICmd_unk_28, + ContestAICmd_unk_29, + ContestAICmd_get_move_effect_type, + ContestAICmd_unk_2B, + ContestAICmd_unk_2C, + ContestAICmd_check_move_has_highest_appeal, + ContestAICmd_unk_2E, + ContestAICmd_unk_2F, + ContestAICmd_unk_30, + ContestAICmd_unk_31, + ContestAICmd_unk_32, + ContestAICmd_unk_33, + ContestAICmd_unk_34, + ContestAICmd_unk_35, + ContestAICmd_unk_36, + ContestAICmd_unk_37, + ContestAICmd_unk_38, + ContestAICmd_unk_39, + ContestAICmd_unk_3A, + ContestAICmd_get_move_used_count, + ContestAICmd_unk_3C, + ContestAICmd_unk_3D, + ContestAICmd_unk_3E, + ContestAICmd_unk_3F, + ContestAICmd_check_combo_starter, + ContestAICmd_unk_41, + ContestAICmd_unk_42, + ContestAICmd_check_combo_finisher, + ContestAICmd_unk_44, + ContestAICmd_unk_45, + ContestAICmd_check_would_finish_combo, + ContestAICmd_unk_47, + ContestAICmd_unk_48, + ContestAICmd_get_condition, + ContestAICmd_unk_4A, + ContestAICmd_unk_4B, + ContestAICmd_unk_4C, + ContestAICmd_unk_4D, + ContestAICmd_get_used_combo_starter, + ContestAICmd_unk_4F, + ContestAICmd_unk_50, + ContestAICmd_unk_51, + ContestAICmd_unk_52, + ContestAICmd_check_can_participate, + ContestAICmd_unk_54, + ContestAICmd_unk_55, + ContestAICmd_get_val_812A188, + ContestAICmd_unk_57, + ContestAICmd_unk_58, + ContestAICmd_unk_59, + ContestAICmd_unk_5A, + ContestAICmd_unk_5B, + ContestAICmd_unk_5C, + ContestAICmd_unk_5D, + ContestAICmd_unk_5E, + ContestAICmd_unk_5F, + ContestAICmd_unk_60, + ContestAICmd_unk_61, + ContestAICmd_unk_62, + ContestAICmd_unk_63, + ContestAICmd_unk_64, + ContestAICmd_unk_65, + ContestAICmd_unk_66, + ContestAICmd_unk_67, + ContestAICmd_unk_68, + ContestAICmd_unk_69, + ContestAICmd_unk_6A, + ContestAICmd_unk_6B, + ContestAICmd_unk_6C, + ContestAICmd_unk_6D, + ContestAICmd_unk_6E, + ContestAICmd_unk_6F, + ContestAICmd_unk_70, + ContestAICmd_unk_71, + ContestAICmd_unk_72, + ContestAICmd_unk_73, + ContestAICmd_unk_74, + ContestAICmd_unk_75, + ContestAICmd_unk_76, + ContestAICmd_unk_77, + ContestAICmd_unk_78, + ContestAICmd_unk_79, + ContestAICmd_unk_7A, + ContestAICmd_unk_7B, + ContestAICmd_unk_7C, + ContestAICmd_unk_7D, + ContestAICmd_unk_7E, + ContestAICmd_unk_7F, + ContestAICmd_unk_80, + ContestAICmd_unk_81, + ContestAICmd_check_for_exciting_move, + ContestAICmd_unk_83, + ContestAICmd_unk_84, + ContestAICmd_unk_85, + ContestAICmd_unk_86, + ContestAICmd_unk_87, +}; -void ContestAI_DoAIProcessing(void); -void sub_812ACA4(u8 *); -u8 sub_812ACC8(void); +static void ContestAI_DoAIProcessing(void); +static bool8 sub_8128A7C(u8); +static void sub_812ACA4(u8 *); +static u8 sub_812ACC8(void); void ContestAI_ResetAI(u8 var) { @@ -72,7 +347,7 @@ u8 ContestAI_GetActionToUse(void) } } -void ContestAI_DoAIProcessing(void) +static void ContestAI_DoAIProcessing(void) { while(eContestAI->aiState != ContestAI_FinishedProcessing) { @@ -111,7 +386,7 @@ void ContestAI_DoAIProcessing(void) } } -u8 sub_8128A7C(u8 var) +static u8 sub_8128A7C(u8 var) { int i; @@ -122,7 +397,7 @@ u8 sub_8128A7C(u8 var) return i; } -void ContestAICmd_unk_00(void) +static void ContestAICmd_unk_00(void) { s16 score = eContestAI->unk5[eContestAI->unk4] + (s8)gAIScriptPtr[1]; @@ -136,13 +411,13 @@ void ContestAICmd_unk_00(void) gAIScriptPtr += 2; } -void ContestAICmd_get_turn(void) +static void ContestAICmd_get_turn(void) { eContestAI->scriptResult = sContest.turnNumber; gAIScriptPtr += 1; } -void ContestAICmd_unk_02(void) +static void ContestAICmd_unk_02(void) { ContestAICmd_get_turn(); @@ -152,7 +427,7 @@ void ContestAICmd_unk_02(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_03(void) +static void ContestAICmd_unk_03(void) { ContestAICmd_get_turn(); @@ -162,7 +437,7 @@ void ContestAICmd_unk_03(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_04(void) +static void ContestAICmd_unk_04(void) { ContestAICmd_get_turn(); @@ -172,7 +447,7 @@ void ContestAICmd_unk_04(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_05(void) +static void ContestAICmd_unk_05(void) { ContestAICmd_get_turn(); @@ -182,13 +457,13 @@ void ContestAICmd_unk_05(void) gAIScriptPtr += 5; } -void ContestAICmd_get_excitement(void) +static void ContestAICmd_get_excitement(void) { eContestAI->scriptResult = sContest.applauseLevel; gAIScriptPtr += 1; } -void ContestAICmd_unk_07(void) +static void ContestAICmd_unk_07(void) { ContestAICmd_get_excitement(); @@ -198,7 +473,7 @@ void ContestAICmd_unk_07(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_08(void) +static void ContestAICmd_unk_08(void) { ContestAICmd_get_excitement(); @@ -208,7 +483,7 @@ void ContestAICmd_unk_08(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_09(void) +static void ContestAICmd_unk_09(void) { ContestAICmd_get_excitement(); @@ -218,7 +493,7 @@ void ContestAICmd_unk_09(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_0A(void) +static void ContestAICmd_unk_0A(void) { ContestAICmd_get_excitement(); @@ -228,13 +503,13 @@ void ContestAICmd_unk_0A(void) gAIScriptPtr += 5; } -void ContestAICmd_get_user_order(void) +static void ContestAICmd_get_user_order(void) { eContestAI->scriptResult = shared192D0.unk0[eContestAI->unk41]; gAIScriptPtr += 1; } -void ContestAICmd_unk_0C(void) +static void ContestAICmd_unk_0C(void) { ContestAICmd_get_user_order(); @@ -244,7 +519,7 @@ void ContestAICmd_unk_0C(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_0D(void) +static void ContestAICmd_unk_0D(void) { ContestAICmd_get_user_order(); @@ -254,7 +529,7 @@ void ContestAICmd_unk_0D(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_0E(void) +static void ContestAICmd_unk_0E(void) { ContestAICmd_get_user_order(); @@ -264,7 +539,7 @@ void ContestAICmd_unk_0E(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_0F(void) +static void ContestAICmd_unk_0F(void) { ContestAICmd_get_user_order(); @@ -274,13 +549,13 @@ void ContestAICmd_unk_0F(void) gAIScriptPtr += 5; } -void ContestAICmd_get_user_condition_maybe(void) +static void ContestAICmd_get_user_condition_maybe(void) { eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unkD / 10; gAIScriptPtr += 1; } -void ContestAICmd_unk_11(void) +static void ContestAICmd_unk_11(void) { ContestAICmd_get_user_condition_maybe(); @@ -290,7 +565,7 @@ void ContestAICmd_unk_11(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_12(void) +static void ContestAICmd_unk_12(void) { ContestAICmd_get_user_condition_maybe(); @@ -300,7 +575,7 @@ void ContestAICmd_unk_12(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_13(void) +static void ContestAICmd_unk_13(void) { ContestAICmd_get_user_condition_maybe(); @@ -310,7 +585,7 @@ void ContestAICmd_unk_13(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_14(void) +static void ContestAICmd_unk_14(void) { ContestAICmd_get_user_condition_maybe(); @@ -320,13 +595,13 @@ void ContestAICmd_unk_14(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_15(void) +static void ContestAICmd_unk_15(void) { eContestAI->scriptResult = sContestantStatus[eContestAI->unk41].unk4; gAIScriptPtr += 1; } -void ContestAICmd_unk_16(void) +static void ContestAICmd_unk_16(void) { ContestAICmd_unk_15(); @@ -336,7 +611,7 @@ void ContestAICmd_unk_16(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_17(void) +static void ContestAICmd_unk_17(void) { ContestAICmd_unk_15(); @@ -346,7 +621,7 @@ void ContestAICmd_unk_17(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_18(void) +static void ContestAICmd_unk_18(void) { ContestAICmd_unk_15(); @@ -356,7 +631,7 @@ void ContestAICmd_unk_18(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_19(void) +static void ContestAICmd_unk_19(void) { ContestAICmd_unk_15(); @@ -366,13 +641,13 @@ void ContestAICmd_unk_19(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_1A(void) +static void ContestAICmd_unk_1A(void) { eContestAI->scriptResult = gUnknown_02038670[eContestAI->unk41]; gAIScriptPtr += 1; } -void ContestAICmd_unk_1B(void) +static void ContestAICmd_unk_1B(void) { ContestAICmd_unk_1A(); @@ -382,7 +657,7 @@ void ContestAICmd_unk_1B(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_1C(void) +static void ContestAICmd_unk_1C(void) { ContestAICmd_unk_1A(); @@ -392,7 +667,7 @@ void ContestAICmd_unk_1C(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_1D(void) +static void ContestAICmd_unk_1D(void) { ContestAICmd_unk_1A(); @@ -402,7 +677,7 @@ void ContestAICmd_unk_1D(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_1E(void) +static void ContestAICmd_unk_1E(void) { ContestAICmd_unk_1A(); @@ -412,13 +687,13 @@ void ContestAICmd_unk_1E(void) gAIScriptPtr += 6; } -void ContestAICmd_get_contest_type(void) +static void ContestAICmd_get_contest_type(void) { eContestAI->scriptResult = gSpecialVar_ContestCategory; gAIScriptPtr += 1; } -void ContestAICmd_unk_20(void) +static void ContestAICmd_unk_20(void) { ContestAICmd_get_contest_type(); @@ -428,7 +703,7 @@ void ContestAICmd_unk_20(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_21(void) +static void ContestAICmd_unk_21(void) { ContestAICmd_get_contest_type(); @@ -438,13 +713,13 @@ void ContestAICmd_unk_21(void) gAIScriptPtr += 5; } -void ContestAICmd_get_move_excitement(void) +static void ContestAICmd_get_move_excitement(void) { eContestAI->scriptResult = Contest_GetMoveExcitement(gContestMons[eContestAI->unk41].moves[eContestAI->unk4]); gAIScriptPtr += 1; } -void ContestAICmd_unk_23(void) +static void ContestAICmd_unk_23(void) { ContestAICmd_get_move_excitement(); @@ -454,7 +729,7 @@ void ContestAICmd_unk_23(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_24(void) +static void ContestAICmd_unk_24(void) { ContestAICmd_get_move_excitement(); @@ -464,7 +739,7 @@ void ContestAICmd_unk_24(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_25(void) +static void ContestAICmd_unk_25(void) { ContestAICmd_get_move_excitement(); @@ -474,7 +749,7 @@ void ContestAICmd_unk_25(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_26(void) +static void ContestAICmd_unk_26(void) { ContestAICmd_get_move_excitement(); @@ -484,7 +759,7 @@ void ContestAICmd_unk_26(void) gAIScriptPtr += 5; } -void ContestAICmd_get_move_effect(void) +static void ContestAICmd_get_move_effect(void) { u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -492,7 +767,7 @@ void ContestAICmd_get_move_effect(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_28(void) +static void ContestAICmd_unk_28(void) { ContestAICmd_get_move_effect(); @@ -502,7 +777,7 @@ void ContestAICmd_unk_28(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_29(void) +static void ContestAICmd_unk_29(void) { ContestAICmd_get_move_effect(); @@ -512,7 +787,7 @@ void ContestAICmd_unk_29(void) gAIScriptPtr += 5; } -void ContestAICmd_get_move_effect_type(void) +static void ContestAICmd_get_move_effect_type(void) { u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -520,7 +795,7 @@ void ContestAICmd_get_move_effect_type(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_2B(void) +static void ContestAICmd_unk_2B(void) { ContestAICmd_get_move_effect_type(); @@ -530,7 +805,7 @@ void ContestAICmd_unk_2B(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_2C(void) +static void ContestAICmd_unk_2C(void) { ContestAICmd_get_move_effect_type(); @@ -540,7 +815,7 @@ void ContestAICmd_unk_2C(void) gAIScriptPtr += 5; } -void ContestAICmd_check_move_has_highest_appeal(void) +static void ContestAICmd_check_move_has_highest_appeal(void) { int i; u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -561,7 +836,7 @@ void ContestAICmd_check_move_has_highest_appeal(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_2E(void) +static void ContestAICmd_unk_2E(void) { ContestAICmd_check_move_has_highest_appeal(); @@ -571,7 +846,7 @@ void ContestAICmd_unk_2E(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_2F(void) +static void ContestAICmd_unk_2F(void) { int i; u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -592,7 +867,7 @@ void ContestAICmd_unk_2F(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_30(void) +static void ContestAICmd_unk_30(void) { ContestAICmd_unk_2F(); @@ -602,7 +877,7 @@ void ContestAICmd_unk_30(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_31(void) +static void ContestAICmd_unk_31(void) { u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -610,7 +885,7 @@ void ContestAICmd_unk_31(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_32(void) +static void ContestAICmd_unk_32(void) { ContestAICmd_unk_31(); @@ -620,7 +895,7 @@ void ContestAICmd_unk_32(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_33(void) +static void ContestAICmd_unk_33(void) { ContestAICmd_unk_31(); @@ -630,7 +905,7 @@ void ContestAICmd_unk_33(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_34(void) +static void ContestAICmd_unk_34(void) { ContestAICmd_unk_31(); @@ -640,7 +915,7 @@ void ContestAICmd_unk_34(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_35(void) +static void ContestAICmd_unk_35(void) { ContestAICmd_unk_31(); @@ -650,7 +925,7 @@ void ContestAICmd_unk_35(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_36(void) +static void ContestAICmd_unk_36(void) { u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -658,7 +933,7 @@ void ContestAICmd_unk_36(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_37(void) +static void ContestAICmd_unk_37(void) { ContestAICmd_unk_36(); @@ -668,7 +943,7 @@ void ContestAICmd_unk_37(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_38(void) +static void ContestAICmd_unk_38(void) { ContestAICmd_unk_36(); @@ -678,7 +953,7 @@ void ContestAICmd_unk_38(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_39(void) +static void ContestAICmd_unk_39(void) { ContestAICmd_unk_36(); @@ -688,7 +963,7 @@ void ContestAICmd_unk_39(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_3A(void) +static void ContestAICmd_unk_3A(void) { ContestAICmd_unk_36(); @@ -698,7 +973,7 @@ void ContestAICmd_unk_3A(void) gAIScriptPtr += 5; } -void ContestAICmd_get_move_used_count(void) +static void ContestAICmd_get_move_used_count(void) { s16 result; u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -712,7 +987,7 @@ void ContestAICmd_get_move_used_count(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_3C(void) +static void ContestAICmd_unk_3C(void) { ContestAICmd_get_move_used_count(); @@ -722,7 +997,7 @@ void ContestAICmd_unk_3C(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_3D(void) +static void ContestAICmd_unk_3D(void) { ContestAICmd_get_move_used_count(); @@ -732,7 +1007,7 @@ void ContestAICmd_unk_3D(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_3E(void) +static void ContestAICmd_unk_3E(void) { ContestAICmd_get_move_used_count(); @@ -742,7 +1017,7 @@ void ContestAICmd_unk_3E(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_3F(void) +static void ContestAICmd_unk_3F(void) { ContestAICmd_get_move_used_count(); @@ -752,7 +1027,7 @@ void ContestAICmd_unk_3F(void) gAIScriptPtr += 5; } -void ContestAICmd_check_combo_starter(void) +static void ContestAICmd_check_combo_starter(void) { u8 result = 0; int i; @@ -778,7 +1053,7 @@ void ContestAICmd_check_combo_starter(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_41(void) +static void ContestAICmd_unk_41(void) { ContestAICmd_check_combo_starter(); @@ -788,7 +1063,7 @@ void ContestAICmd_unk_41(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_42(void) +static void ContestAICmd_unk_42(void) { ContestAICmd_check_combo_starter(); @@ -798,7 +1073,7 @@ void ContestAICmd_unk_42(void) gAIScriptPtr += 4; } -void ContestAICmd_check_combo_finisher(void) +static void ContestAICmd_check_combo_finisher(void) { u8 result = 0; int i; @@ -824,7 +1099,7 @@ void ContestAICmd_check_combo_finisher(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_44(void) +static void ContestAICmd_unk_44(void) { ContestAICmd_check_combo_finisher(); @@ -834,7 +1109,7 @@ void ContestAICmd_unk_44(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_45(void) +static void ContestAICmd_unk_45(void) { ContestAICmd_check_combo_finisher(); @@ -844,7 +1119,7 @@ void ContestAICmd_unk_45(void) gAIScriptPtr += 4; } -void ContestAICmd_check_would_finish_combo(void) +static void ContestAICmd_check_would_finish_combo(void) { u8 result = 0; u16 move = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; @@ -859,7 +1134,7 @@ void ContestAICmd_check_would_finish_combo(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_47(void) +static void ContestAICmd_unk_47(void) { ContestAICmd_check_would_finish_combo(); @@ -869,7 +1144,7 @@ void ContestAICmd_unk_47(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_48(void) +static void ContestAICmd_unk_48(void) { ContestAICmd_check_would_finish_combo(); @@ -879,7 +1154,7 @@ void ContestAICmd_unk_48(void) gAIScriptPtr += 4; } -void ContestAICmd_get_condition(void) +static void ContestAICmd_get_condition(void) { int var = sub_8128A7C(gAIScriptPtr[1]); @@ -887,7 +1162,7 @@ void ContestAICmd_get_condition(void) gAIScriptPtr += 2; } -void ContestAICmd_unk_4A(void) +static void ContestAICmd_unk_4A(void) { ContestAICmd_get_condition(); @@ -897,7 +1172,7 @@ void ContestAICmd_unk_4A(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_4B(void) +static void ContestAICmd_unk_4B(void) { ContestAICmd_get_condition(); @@ -907,7 +1182,7 @@ void ContestAICmd_unk_4B(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_4C(void) +static void ContestAICmd_unk_4C(void) { ContestAICmd_get_condition(); @@ -917,7 +1192,7 @@ void ContestAICmd_unk_4C(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_4D(void) +static void ContestAICmd_unk_4D(void) { ContestAICmd_get_condition(); @@ -927,7 +1202,7 @@ void ContestAICmd_unk_4D(void) gAIScriptPtr += 5; } -void ContestAICmd_get_used_combo_starter(void) +static void ContestAICmd_get_used_combo_starter(void) { u16 result = 0; u8 var = sub_8128A7C(gAIScriptPtr[1]); @@ -939,7 +1214,7 @@ void ContestAICmd_get_used_combo_starter(void) gAIScriptPtr += 2; } -void ContestAICmd_unk_4F(void) +static void ContestAICmd_unk_4F(void) { ContestAICmd_get_used_combo_starter(); @@ -949,7 +1224,7 @@ void ContestAICmd_unk_4F(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_50(void) +static void ContestAICmd_unk_50(void) { ContestAICmd_get_used_combo_starter(); @@ -959,7 +1234,7 @@ void ContestAICmd_unk_50(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_51(void) +static void ContestAICmd_unk_51(void) { ContestAICmd_get_used_combo_starter(); @@ -969,7 +1244,7 @@ void ContestAICmd_unk_51(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_52(void) +static void ContestAICmd_unk_52(void) { ContestAICmd_get_used_combo_starter(); @@ -979,7 +1254,7 @@ void ContestAICmd_unk_52(void) gAIScriptPtr += 5; } -void ContestAICmd_check_can_participate(void) +static void ContestAICmd_check_can_participate(void) { if(Contest_IsMonsTurnDisabled(sub_8128A7C(gAIScriptPtr[1]))) eContestAI->scriptResult = FALSE; @@ -989,7 +1264,7 @@ void ContestAICmd_check_can_participate(void) gAIScriptPtr += 2; } -void ContestAICmd_unk_54(void) +static void ContestAICmd_unk_54(void) { ContestAICmd_check_can_participate(); @@ -999,7 +1274,7 @@ void ContestAICmd_unk_54(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_55(void) +static void ContestAICmd_unk_55(void) { ContestAICmd_check_can_participate(); @@ -1009,7 +1284,7 @@ void ContestAICmd_unk_55(void) gAIScriptPtr += 4; } -void ContestAICmd_get_val_812A188(void) +static void ContestAICmd_get_val_812A188(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); @@ -1017,7 +1292,7 @@ void ContestAICmd_get_val_812A188(void) gAIScriptPtr += 2; } -void ContestAICmd_unk_57(void) +static void ContestAICmd_unk_57(void) { ContestAICmd_get_val_812A188(); @@ -1027,7 +1302,7 @@ void ContestAICmd_unk_57(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_58(void) +static void ContestAICmd_unk_58(void) { ContestAICmd_get_val_812A188(); @@ -1037,7 +1312,7 @@ void ContestAICmd_unk_58(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_59(void) +static void ContestAICmd_unk_59(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); @@ -1045,7 +1320,7 @@ void ContestAICmd_unk_59(void) gAIScriptPtr += 2; } -void ContestAICmd_unk_5A(void) +static void ContestAICmd_unk_5A(void) { ContestAICmd_unk_59(); @@ -1055,7 +1330,7 @@ void ContestAICmd_unk_5A(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_5B(void) +static void ContestAICmd_unk_5B(void) { ContestAICmd_unk_59(); @@ -1065,7 +1340,7 @@ void ContestAICmd_unk_5B(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_5C(void) +static void ContestAICmd_unk_5C(void) { ContestAICmd_unk_59(); @@ -1075,7 +1350,7 @@ void ContestAICmd_unk_5C(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_5D(void) +static void ContestAICmd_unk_5D(void) { ContestAICmd_unk_59(); @@ -1085,7 +1360,7 @@ void ContestAICmd_unk_5D(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_5E(void) +static void ContestAICmd_unk_5E(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); @@ -1093,7 +1368,7 @@ void ContestAICmd_unk_5E(void) gAIScriptPtr += 2; } -void ContestAICmd_unk_5F(void) +static void ContestAICmd_unk_5F(void) { ContestAICmd_unk_5E(); @@ -1103,7 +1378,7 @@ void ContestAICmd_unk_5F(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_60(void) +static void ContestAICmd_unk_60(void) { ContestAICmd_unk_5E(); @@ -1113,7 +1388,7 @@ void ContestAICmd_unk_60(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_61(void) +static void ContestAICmd_unk_61(void) { ContestAICmd_unk_5E(); @@ -1123,7 +1398,7 @@ void ContestAICmd_unk_61(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_62(void) +static void ContestAICmd_unk_62(void) { ContestAICmd_unk_5E(); @@ -1133,7 +1408,7 @@ void ContestAICmd_unk_62(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_63(void) +static void ContestAICmd_unk_63(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); u8 var2 = gAIScriptPtr[2]; @@ -1143,7 +1418,7 @@ void ContestAICmd_unk_63(void) gAIScriptPtr += 3; } -void ContestAICmd_unk_64(void) +static void ContestAICmd_unk_64(void) { ContestAICmd_unk_63(); @@ -1153,7 +1428,7 @@ void ContestAICmd_unk_64(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_65(void) +static void ContestAICmd_unk_65(void) { ContestAICmd_unk_63(); @@ -1163,7 +1438,7 @@ void ContestAICmd_unk_65(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_66(void) +static void ContestAICmd_unk_66(void) { ContestAICmd_unk_63(); @@ -1173,7 +1448,7 @@ void ContestAICmd_unk_66(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_67(void) +static void ContestAICmd_unk_67(void) { ContestAICmd_unk_63(); @@ -1183,7 +1458,7 @@ void ContestAICmd_unk_67(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_68(void) +static void ContestAICmd_unk_68(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); u8 var2 = gAIScriptPtr[2]; @@ -1193,7 +1468,7 @@ void ContestAICmd_unk_68(void) gAIScriptPtr += 3; } -void ContestAICmd_unk_69(void) +static void ContestAICmd_unk_69(void) { ContestAICmd_unk_68(); @@ -1203,7 +1478,7 @@ void ContestAICmd_unk_69(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_6A(void) +static void ContestAICmd_unk_6A(void) { ContestAICmd_unk_68(); @@ -1213,7 +1488,7 @@ void ContestAICmd_unk_6A(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_6B(void) +static void ContestAICmd_unk_6B(void) { ContestAICmd_unk_68(); @@ -1223,7 +1498,7 @@ void ContestAICmd_unk_6B(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_6C(void) +static void ContestAICmd_unk_6C(void) { ContestAICmd_unk_68(); @@ -1233,7 +1508,7 @@ void ContestAICmd_unk_6C(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_6D(void) +static void ContestAICmd_unk_6D(void) { u8 var = sub_8128A7C(gAIScriptPtr[1]); u8 var2 = gAIScriptPtr[2]; @@ -1243,7 +1518,7 @@ void ContestAICmd_unk_6D(void) gAIScriptPtr += 3; } -void ContestAICmd_unk_6E(void) +static void ContestAICmd_unk_6E(void) { ContestAICmd_unk_6D(); @@ -1253,7 +1528,7 @@ void ContestAICmd_unk_6E(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_6F(void) +static void ContestAICmd_unk_6F(void) { ContestAICmd_unk_6D(); @@ -1263,38 +1538,38 @@ void ContestAICmd_unk_6F(void) gAIScriptPtr += 5; } -void ContestAICmd_unk_70(void) +static void ContestAICmd_unk_70(void) { eContestAI->scriptArr[gAIScriptPtr[1]] = eContestAI->scriptResult; gAIScriptPtr += 2; } -void ContestAICmd_unk_71(void) +static void ContestAICmd_unk_71(void) { eContestAI->scriptArr[gAIScriptPtr[1]] = T1_READ_16(gAIScriptPtr + 2); gAIScriptPtr += 4; } -void ContestAICmd_unk_72(void) +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; } -void ContestAICmd_unk_73(void) +static void ContestAICmd_unk_73(void) { eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; gAIScriptPtr += 3; } -void ContestAICmd_unk_74(void) +static void ContestAICmd_unk_74(void) { eContestAI->scriptArr[gAIScriptPtr[1]] += eContestAI->scriptArr[gAIScriptPtr[2]]; gAIScriptPtr += 3; } -void ContestAICmd_unk_75(void) +static void ContestAICmd_unk_75(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); @@ -1302,7 +1577,7 @@ void ContestAICmd_unk_75(void) gAIScriptPtr += 8; } -void ContestAICmd_unk_76(void) +static void ContestAICmd_unk_76(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); @@ -1310,7 +1585,7 @@ void ContestAICmd_unk_76(void) gAIScriptPtr += 8; } -void ContestAICmd_unk_77(void) +static void ContestAICmd_unk_77(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); @@ -1318,7 +1593,7 @@ void ContestAICmd_unk_77(void) gAIScriptPtr += 8; } -void ContestAICmd_unk_78(void) +static void ContestAICmd_unk_78(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); @@ -1326,7 +1601,7 @@ void ContestAICmd_unk_78(void) gAIScriptPtr += 8; } -void ContestAICmd_unk_79(void) +static void ContestAICmd_unk_79(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] < ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); @@ -1334,7 +1609,7 @@ void ContestAICmd_unk_79(void) gAIScriptPtr += 7; } -void ContestAICmd_unk_7A(void) +static void ContestAICmd_unk_7A(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] > ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); @@ -1342,7 +1617,7 @@ void ContestAICmd_unk_7A(void) gAIScriptPtr += 7; } -void ContestAICmd_unk_7B(void) +static void ContestAICmd_unk_7B(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] == ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); @@ -1350,7 +1625,7 @@ void ContestAICmd_unk_7B(void) gAIScriptPtr += 7; } -void ContestAICmd_unk_7C(void) +static void ContestAICmd_unk_7C(void) { if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] != ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); @@ -1358,7 +1633,7 @@ void ContestAICmd_unk_7C(void) gAIScriptPtr += 7; } -void ContestAICmd_unk_7D(void) +static void ContestAICmd_unk_7D(void) { if((Random() & 0xFF) < (s16)eContestAI->scriptArr[gAIScriptPtr[1]]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -1366,7 +1641,7 @@ void ContestAICmd_unk_7D(void) gAIScriptPtr += 6; } -void ContestAICmd_unk_7E(void) +static void ContestAICmd_unk_7E(void) { if((Random() & 0xFF) > (s16)eContestAI->scriptArr[gAIScriptPtr[1]]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); @@ -1375,32 +1650,32 @@ void ContestAICmd_unk_7E(void) } // jump -void ContestAICmd_unk_7F(void) +static void ContestAICmd_unk_7F(void) { gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); } -void ContestAICmd_unk_80(void) +static void ContestAICmd_unk_80(void) { sub_812ACA4(gAIScriptPtr + 5); gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); } -void ContestAICmd_unk_81(void) +static void ContestAICmd_unk_81(void) { if(!sub_812ACC8()) eContestAI->aiAction |= 1; } // push stack? -void sub_812ACA4(u8 *ptr) +static void sub_812ACA4(u8 *ptr) { u8 unk40 = eContestAI->unk40++; eContestAI->stack[unk40] = (u32)ptr; } // pop stack? -bool8 sub_812ACC8(void) +static bool8 sub_812ACC8(void) { if(eContestAI->unk40 != 0) { @@ -1412,7 +1687,7 @@ bool8 sub_812ACC8(void) return FALSE; } -void ContestAICmd_check_for_exciting_move(void) +static void ContestAICmd_check_for_exciting_move(void) { int result = 0; int i; @@ -1434,7 +1709,7 @@ void ContestAICmd_check_for_exciting_move(void) gAIScriptPtr += 1; } -void ContestAICmd_unk_83(void) +static void ContestAICmd_unk_83(void) { ContestAICmd_check_for_exciting_move(); @@ -1444,7 +1719,7 @@ void ContestAICmd_unk_83(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_84(void) +static void ContestAICmd_unk_84(void) { ContestAICmd_check_for_exciting_move(); @@ -1454,7 +1729,7 @@ void ContestAICmd_unk_84(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_85(void) +static void ContestAICmd_unk_85(void) { int result = 0; int i; @@ -1474,7 +1749,7 @@ void ContestAICmd_unk_85(void) gAIScriptPtr += 3; } -void ContestAICmd_unk_86(void) +static void ContestAICmd_unk_86(void) { ContestAICmd_unk_85(); @@ -1484,7 +1759,7 @@ void ContestAICmd_unk_86(void) gAIScriptPtr += 4; } -void ContestAICmd_unk_87(void) +static void ContestAICmd_unk_87(void) { ContestAICmd_unk_85(); -- cgit v1.2.3 From d7d947c6913d1a2a7a6401b8aac2041d536ad978 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 13:59:12 -0500 Subject: formatting and clean up --- src/battle/battle_ai.c | 12 +- src/contest.c | 3 +- src/contest_ai.c | 465 ++++++++++++++++++++++++------------------------- 3 files changed, 236 insertions(+), 244 deletions(-) (limited to 'src') diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 977e91f5c..80848d2fd 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -355,7 +355,7 @@ u8 BattleAI_GetAIActionToUse(void) { if (AI_THINKING_STRUCT->aiFlags & 1) { - AI_THINKING_STRUCT->aiState = AIState_SettingUp; + AI_THINKING_STRUCT->aiState = BATTLEAI_SETTING_UP; BattleAI_DoAIProcessing(); } AI_THINKING_STRUCT->aiFlags >>= 1; @@ -393,13 +393,13 @@ u8 BattleAI_GetAIActionToUse(void) void BattleAI_DoAIProcessing(void) { - while (AI_THINKING_STRUCT->aiState != AIState_FinishedProcessing) + while (AI_THINKING_STRUCT->aiState != BATTLEAI_FINISHED) { switch (AI_THINKING_STRUCT->aiState) { - case AIState_DoNotProcess: //Needed to match. + case BATTLEAI_DO_NOT_PROCESS: //Needed to match. break; - case AIState_SettingUp: + case BATTLEAI_SETTING_UP: gAIScriptPtr = BattleAIs[AI_THINKING_STRUCT->aiLogicId]; // set the AI ptr. if (gBattleMons[gBankAttacker].pp[AI_THINKING_STRUCT->movesetIndex] == 0) { @@ -411,7 +411,7 @@ void BattleAI_DoAIProcessing(void) } AI_THINKING_STRUCT->aiState++; break; - case AIState_Processing: + case BATTLEAI_PROCESSING: if (AI_THINKING_STRUCT->moveConsidered != MOVE_NONE) sBattleAICmdTable[*gAIScriptPtr](); // run AI command. else @@ -423,7 +423,7 @@ void BattleAI_DoAIProcessing(void) { AI_THINKING_STRUCT->movesetIndex++; if (AI_THINKING_STRUCT->movesetIndex < MAX_MON_MOVES && (AI_THINKING_STRUCT->aiAction & AI_ACTION_DO_NOT_ATTACK) == 0) - AI_THINKING_STRUCT->aiState = AIState_SettingUp; // as long as their are more moves to process, keep setting this to setup state. + AI_THINKING_STRUCT->aiState = BATTLEAI_SETTING_UP; // as long as their are more moves to process, keep setting this to setup state. else AI_THINKING_STRUCT->aiState++; // done processing. AI_THINKING_STRUCT->aiAction &= (AI_ACTION_FLEE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK | diff --git a/src/contest.c b/src/contest.c index 6a8887fb1..df4bb361d 100644 --- a/src/contest.c +++ b/src/contest.c @@ -31,13 +31,12 @@ #include "tv.h" #include "scanline_effect.h" #include "util.h" +#include "contest_ai.h" extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool extern void sub_80C8A38(u8); extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); -extern void ContestAI_ResetAI(); -extern u8 ContestAI_GetActionToUse(void); extern struct MusicPlayerInfo gMPlay_SE1; extern u16 gSpecialVar_ContestCategory; diff --git a/src/contest_ai.c b/src/contest_ai.c index f8f2812fb..0c1126ac5 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -1,20 +1,13 @@ #include "global.h" #include "contest.h" #include "random.h" +#include "contest_ai.h" #include "ewram.h" extern u8 AreMovesContestCombo(u16, u16); extern bool8 sub_80B214C(u8); extern bool8 Contest_IsMonsTurnDisabled(u8); -enum -{ - ContestAI_SettingUp, - ContestAI_Processing, - ContestAI_FinishedProcessing, - ContestAI_DoNotProcess -}; - extern s16 gUnknown_02038670[]; extern u16 gSpecialVar_ContestCategory; @@ -162,142 +155,142 @@ typedef void (* ContestAICmdFunc)(void); static const ContestAICmdFunc sContestAICmdTable[] = { - ContestAICmd_unk_00, - ContestAICmd_get_turn, - ContestAICmd_unk_02, - ContestAICmd_unk_03, - ContestAICmd_unk_04, - ContestAICmd_unk_05, - ContestAICmd_get_excitement, - ContestAICmd_unk_07, - ContestAICmd_unk_08, - ContestAICmd_unk_09, - ContestAICmd_unk_0A, - ContestAICmd_get_user_order, - ContestAICmd_unk_0C, - ContestAICmd_unk_0D, - ContestAICmd_unk_0E, - ContestAICmd_unk_0F, - ContestAICmd_get_user_condition_maybe, - ContestAICmd_unk_11, - ContestAICmd_unk_12, - ContestAICmd_unk_13, - ContestAICmd_unk_14, - ContestAICmd_unk_15, - ContestAICmd_unk_16, - ContestAICmd_unk_17, - ContestAICmd_unk_18, - ContestAICmd_unk_19, - ContestAICmd_unk_1A, - ContestAICmd_unk_1B, - ContestAICmd_unk_1C, - ContestAICmd_unk_1D, - ContestAICmd_unk_1E, - ContestAICmd_get_contest_type, - ContestAICmd_unk_20, - ContestAICmd_unk_21, - ContestAICmd_get_move_excitement, - ContestAICmd_unk_23, - ContestAICmd_unk_24, - ContestAICmd_unk_25, - ContestAICmd_unk_26, - ContestAICmd_get_move_effect, - ContestAICmd_unk_28, - ContestAICmd_unk_29, - ContestAICmd_get_move_effect_type, - ContestAICmd_unk_2B, - ContestAICmd_unk_2C, - ContestAICmd_check_move_has_highest_appeal, - ContestAICmd_unk_2E, - ContestAICmd_unk_2F, - ContestAICmd_unk_30, - ContestAICmd_unk_31, - ContestAICmd_unk_32, - ContestAICmd_unk_33, - ContestAICmd_unk_34, - ContestAICmd_unk_35, - ContestAICmd_unk_36, - ContestAICmd_unk_37, - ContestAICmd_unk_38, - ContestAICmd_unk_39, - ContestAICmd_unk_3A, - ContestAICmd_get_move_used_count, - ContestAICmd_unk_3C, - ContestAICmd_unk_3D, - ContestAICmd_unk_3E, - ContestAICmd_unk_3F, - ContestAICmd_check_combo_starter, - ContestAICmd_unk_41, - ContestAICmd_unk_42, - ContestAICmd_check_combo_finisher, - ContestAICmd_unk_44, - ContestAICmd_unk_45, - ContestAICmd_check_would_finish_combo, - ContestAICmd_unk_47, - ContestAICmd_unk_48, - ContestAICmd_get_condition, - ContestAICmd_unk_4A, - ContestAICmd_unk_4B, - ContestAICmd_unk_4C, - ContestAICmd_unk_4D, - ContestAICmd_get_used_combo_starter, - ContestAICmd_unk_4F, - ContestAICmd_unk_50, - ContestAICmd_unk_51, - ContestAICmd_unk_52, - ContestAICmd_check_can_participate, - ContestAICmd_unk_54, - ContestAICmd_unk_55, - ContestAICmd_get_val_812A188, - ContestAICmd_unk_57, - ContestAICmd_unk_58, - ContestAICmd_unk_59, - ContestAICmd_unk_5A, - ContestAICmd_unk_5B, - ContestAICmd_unk_5C, - ContestAICmd_unk_5D, - ContestAICmd_unk_5E, - ContestAICmd_unk_5F, - ContestAICmd_unk_60, - ContestAICmd_unk_61, - ContestAICmd_unk_62, - ContestAICmd_unk_63, - ContestAICmd_unk_64, - ContestAICmd_unk_65, - ContestAICmd_unk_66, - ContestAICmd_unk_67, - ContestAICmd_unk_68, - ContestAICmd_unk_69, - ContestAICmd_unk_6A, - ContestAICmd_unk_6B, - ContestAICmd_unk_6C, - ContestAICmd_unk_6D, - ContestAICmd_unk_6E, - ContestAICmd_unk_6F, - ContestAICmd_unk_70, - ContestAICmd_unk_71, - ContestAICmd_unk_72, - ContestAICmd_unk_73, - ContestAICmd_unk_74, - ContestAICmd_unk_75, - ContestAICmd_unk_76, - ContestAICmd_unk_77, - ContestAICmd_unk_78, - ContestAICmd_unk_79, - ContestAICmd_unk_7A, - ContestAICmd_unk_7B, - ContestAICmd_unk_7C, - ContestAICmd_unk_7D, - ContestAICmd_unk_7E, - ContestAICmd_unk_7F, - ContestAICmd_unk_80, - ContestAICmd_unk_81, - ContestAICmd_check_for_exciting_move, - ContestAICmd_unk_83, - ContestAICmd_unk_84, - ContestAICmd_unk_85, - ContestAICmd_unk_86, - ContestAICmd_unk_87, + 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); @@ -349,13 +342,13 @@ u8 ContestAI_GetActionToUse(void) static void ContestAI_DoAIProcessing(void) { - while(eContestAI->aiState != ContestAI_FinishedProcessing) + while(eContestAI->aiState != CONTESTAI_FINISHED) { switch(eContestAI->aiState) { - case ContestAI_DoNotProcess: + case CONTESTAI_DO_NOT_PROCESS: break; - case ContestAI_SettingUp: + case CONTESTAI_SETTING_UP: gAIScriptPtr = gContestAIs[eContestAI->unk10]; if(gContestMons[eContestAI->unk41].moves[eContestAI->unk4] == 0) @@ -364,7 +357,7 @@ static void ContestAI_DoAIProcessing(void) eContestAI->unk2 = gContestMons[eContestAI->unk41].moves[eContestAI->unk4]; eContestAI->aiState++; break; - case ContestAI_Processing: + case CONTESTAI_PROCESSING: if(eContestAI->unk2 != 0) sContestAICmdTable[*gAIScriptPtr](); // run the command. else @@ -421,7 +414,7 @@ static void ContestAICmd_unk_02(void) { ContestAICmd_get_turn(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -431,7 +424,7 @@ static void ContestAICmd_unk_03(void) { ContestAICmd_get_turn(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -441,7 +434,7 @@ static void ContestAICmd_unk_04(void) { ContestAICmd_get_turn(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -451,7 +444,7 @@ static void ContestAICmd_unk_05(void) { ContestAICmd_get_turn(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -467,7 +460,7 @@ static void ContestAICmd_unk_07(void) { ContestAICmd_get_excitement(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -477,7 +470,7 @@ static void ContestAICmd_unk_08(void) { ContestAICmd_get_excitement(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -487,7 +480,7 @@ static void ContestAICmd_unk_09(void) { ContestAICmd_get_excitement(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -497,7 +490,7 @@ static void ContestAICmd_unk_0A(void) { ContestAICmd_get_excitement(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -513,7 +506,7 @@ static void ContestAICmd_unk_0C(void) { ContestAICmd_get_user_order(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -523,7 +516,7 @@ static void ContestAICmd_unk_0D(void) { ContestAICmd_get_user_order(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -533,7 +526,7 @@ static void ContestAICmd_unk_0E(void) { ContestAICmd_get_user_order(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -543,7 +536,7 @@ static void ContestAICmd_unk_0F(void) { ContestAICmd_get_user_order(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -559,7 +552,7 @@ static void ContestAICmd_unk_11(void) { ContestAICmd_get_user_condition_maybe(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -569,7 +562,7 @@ static void ContestAICmd_unk_12(void) { ContestAICmd_get_user_condition_maybe(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -579,7 +572,7 @@ static void ContestAICmd_unk_13(void) { ContestAICmd_get_user_condition_maybe(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -589,7 +582,7 @@ static void ContestAICmd_unk_14(void) { ContestAICmd_get_user_condition_maybe(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -605,7 +598,7 @@ static void ContestAICmd_unk_16(void) { ContestAICmd_unk_15(); - if((s16)eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -615,7 +608,7 @@ static void ContestAICmd_unk_17(void) { ContestAICmd_unk_15(); - if((s16)eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -625,7 +618,7 @@ static void ContestAICmd_unk_18(void) { ContestAICmd_unk_15(); - if((s16)eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -635,7 +628,7 @@ static void ContestAICmd_unk_19(void) { ContestAICmd_unk_15(); - if((s16)eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -651,7 +644,7 @@ static void ContestAICmd_unk_1B(void) { ContestAICmd_unk_1A(); - if((s16)eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult < (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -661,7 +654,7 @@ static void ContestAICmd_unk_1C(void) { ContestAICmd_unk_1A(); - if((s16)eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult > (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -671,7 +664,7 @@ static void ContestAICmd_unk_1D(void) { ContestAICmd_unk_1A(); - if((s16)eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult == (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -681,7 +674,7 @@ static void ContestAICmd_unk_1E(void) { ContestAICmd_unk_1A(); - if((s16)eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) + if(eContestAI->scriptResult != (s16)T1_READ_16(gAIScriptPtr + 0)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -697,7 +690,7 @@ static void ContestAICmd_unk_20(void) { ContestAICmd_get_contest_type(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -707,7 +700,7 @@ static void ContestAICmd_unk_21(void) { ContestAICmd_get_contest_type(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -723,7 +716,7 @@ static void ContestAICmd_unk_23(void) { ContestAICmd_get_move_excitement(); - if((s16)eContestAI->scriptResult < (s8)gAIScriptPtr[0]) + if(eContestAI->scriptResult < (s8)gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -733,7 +726,7 @@ static void ContestAICmd_unk_24(void) { ContestAICmd_get_move_excitement(); - if((s16)eContestAI->scriptResult > (s8)gAIScriptPtr[0]) + if(eContestAI->scriptResult > (s8)gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -743,7 +736,7 @@ static void ContestAICmd_unk_25(void) { ContestAICmd_get_move_excitement(); - if((s16)eContestAI->scriptResult == (s8)gAIScriptPtr[0]) + if(eContestAI->scriptResult == (s8)gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -753,7 +746,7 @@ static void ContestAICmd_unk_26(void) { ContestAICmd_get_move_excitement(); - if((s16)eContestAI->scriptResult != (s8)gAIScriptPtr[0]) + if(eContestAI->scriptResult != (s8)gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -771,7 +764,7 @@ static void ContestAICmd_unk_28(void) { ContestAICmd_get_move_effect(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -781,7 +774,7 @@ static void ContestAICmd_unk_29(void) { ContestAICmd_get_move_effect(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -799,7 +792,7 @@ static void ContestAICmd_unk_2B(void) { ContestAICmd_get_move_effect_type(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -809,7 +802,7 @@ static void ContestAICmd_unk_2C(void) { ContestAICmd_get_move_effect_type(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -840,7 +833,7 @@ static void ContestAICmd_unk_2E(void) { ContestAICmd_check_move_has_highest_appeal(); - if((s16)eContestAI->scriptResult != FALSE) + if(eContestAI->scriptResult != FALSE) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -871,7 +864,7 @@ static void ContestAICmd_unk_30(void) { ContestAICmd_unk_2F(); - if((s16)eContestAI->scriptResult != FALSE) + if(eContestAI->scriptResult != FALSE) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -889,7 +882,7 @@ static void ContestAICmd_unk_32(void) { ContestAICmd_unk_31(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -899,7 +892,7 @@ static void ContestAICmd_unk_33(void) { ContestAICmd_unk_31(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -909,7 +902,7 @@ static void ContestAICmd_unk_34(void) { ContestAICmd_unk_31(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -919,7 +912,7 @@ static void ContestAICmd_unk_35(void) { ContestAICmd_unk_31(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -937,7 +930,7 @@ static void ContestAICmd_unk_37(void) { ContestAICmd_unk_36(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -947,7 +940,7 @@ static void ContestAICmd_unk_38(void) { ContestAICmd_unk_36(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -957,7 +950,7 @@ static void ContestAICmd_unk_39(void) { ContestAICmd_unk_36(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -967,7 +960,7 @@ static void ContestAICmd_unk_3A(void) { ContestAICmd_unk_36(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -991,7 +984,7 @@ static void ContestAICmd_unk_3C(void) { ContestAICmd_get_move_used_count(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1001,7 +994,7 @@ static void ContestAICmd_unk_3D(void) { ContestAICmd_get_move_used_count(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1011,7 +1004,7 @@ static void ContestAICmd_unk_3E(void) { ContestAICmd_get_move_used_count(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1021,7 +1014,7 @@ static void ContestAICmd_unk_3F(void) { ContestAICmd_get_move_used_count(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1057,7 +1050,7 @@ static void ContestAICmd_unk_41(void) { ContestAICmd_check_combo_starter(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1067,7 +1060,7 @@ static void ContestAICmd_unk_42(void) { ContestAICmd_check_combo_starter(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1103,7 +1096,7 @@ static void ContestAICmd_unk_44(void) { ContestAICmd_check_combo_finisher(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1113,7 +1106,7 @@ static void ContestAICmd_unk_45(void) { ContestAICmd_check_combo_finisher(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1138,7 +1131,7 @@ static void ContestAICmd_unk_47(void) { ContestAICmd_check_would_finish_combo(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1148,7 +1141,7 @@ static void ContestAICmd_unk_48(void) { ContestAICmd_check_would_finish_combo(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1166,7 +1159,7 @@ static void ContestAICmd_unk_4A(void) { ContestAICmd_get_condition(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1176,7 +1169,7 @@ static void ContestAICmd_unk_4B(void) { ContestAICmd_get_condition(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1186,7 +1179,7 @@ static void ContestAICmd_unk_4C(void) { ContestAICmd_get_condition(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1196,7 +1189,7 @@ static void ContestAICmd_unk_4D(void) { ContestAICmd_get_condition(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1218,7 +1211,7 @@ static void ContestAICmd_unk_4F(void) { ContestAICmd_get_used_combo_starter(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1228,7 +1221,7 @@ static void ContestAICmd_unk_50(void) { ContestAICmd_get_used_combo_starter(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1238,7 +1231,7 @@ static void ContestAICmd_unk_51(void) { ContestAICmd_get_used_combo_starter(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1248,7 +1241,7 @@ static void ContestAICmd_unk_52(void) { ContestAICmd_get_used_combo_starter(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1268,7 +1261,7 @@ static void ContestAICmd_unk_54(void) { ContestAICmd_check_can_participate(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1278,7 +1271,7 @@ static void ContestAICmd_unk_55(void) { ContestAICmd_check_can_participate(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1296,7 +1289,7 @@ static void ContestAICmd_unk_57(void) { ContestAICmd_get_val_812A188(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1306,7 +1299,7 @@ static void ContestAICmd_unk_58(void) { ContestAICmd_get_val_812A188(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1324,7 +1317,7 @@ static void ContestAICmd_unk_5A(void) { ContestAICmd_unk_59(); - if((s16)eContestAI->scriptResult < 0) + if(eContestAI->scriptResult < 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1334,7 +1327,7 @@ static void ContestAICmd_unk_5B(void) { ContestAICmd_unk_59(); - if((s16)eContestAI->scriptResult > 0) + if(eContestAI->scriptResult > 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1344,7 +1337,7 @@ static void ContestAICmd_unk_5C(void) { ContestAICmd_unk_59(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1354,7 +1347,7 @@ static void ContestAICmd_unk_5D(void) { ContestAICmd_unk_59(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1372,7 +1365,7 @@ static void ContestAICmd_unk_5F(void) { ContestAICmd_unk_5E(); - if((s16)eContestAI->scriptResult < 0) + if(eContestAI->scriptResult < 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1382,7 +1375,7 @@ static void ContestAICmd_unk_60(void) { ContestAICmd_unk_5E(); - if((s16)eContestAI->scriptResult > 0) + if(eContestAI->scriptResult > 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1392,7 +1385,7 @@ static void ContestAICmd_unk_61(void) { ContestAICmd_unk_5E(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1402,7 +1395,7 @@ static void ContestAICmd_unk_62(void) { ContestAICmd_unk_5E(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1422,7 +1415,7 @@ static void ContestAICmd_unk_64(void) { ContestAICmd_unk_63(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1432,7 +1425,7 @@ static void ContestAICmd_unk_65(void) { ContestAICmd_unk_63(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1442,7 +1435,7 @@ static void ContestAICmd_unk_66(void) { ContestAICmd_unk_63(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1452,7 +1445,7 @@ static void ContestAICmd_unk_67(void) { ContestAICmd_unk_63(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1472,7 +1465,7 @@ static void ContestAICmd_unk_69(void) { ContestAICmd_unk_68(); - if((s16)eContestAI->scriptResult < gAIScriptPtr[0]) + if(eContestAI->scriptResult < gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1482,7 +1475,7 @@ static void ContestAICmd_unk_6A(void) { ContestAICmd_unk_68(); - if((s16)eContestAI->scriptResult > gAIScriptPtr[0]) + if(eContestAI->scriptResult > gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1492,7 +1485,7 @@ static void ContestAICmd_unk_6B(void) { ContestAICmd_unk_68(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1502,7 +1495,7 @@ static void ContestAICmd_unk_6C(void) { ContestAICmd_unk_68(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1522,7 +1515,7 @@ static void ContestAICmd_unk_6E(void) { ContestAICmd_unk_6D(); - if((s16)eContestAI->scriptResult == gAIScriptPtr[0]) + if(eContestAI->scriptResult == gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1532,7 +1525,7 @@ static void ContestAICmd_unk_6F(void) { ContestAICmd_unk_6D(); - if((s16)eContestAI->scriptResult != gAIScriptPtr[0]) + if(eContestAI->scriptResult != gAIScriptPtr[0]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); else gAIScriptPtr += 5; @@ -1713,7 +1706,7 @@ static void ContestAICmd_unk_83(void) { ContestAICmd_check_for_exciting_move(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1723,7 +1716,7 @@ static void ContestAICmd_unk_84(void) { ContestAICmd_check_for_exciting_move(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1753,7 +1746,7 @@ static void ContestAICmd_unk_86(void) { ContestAICmd_unk_85(); - if((s16)eContestAI->scriptResult != 0) + if(eContestAI->scriptResult != 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; @@ -1763,7 +1756,7 @@ static void ContestAICmd_unk_87(void) { ContestAICmd_unk_85(); - if((s16)eContestAI->scriptResult == 0) + if(eContestAI->scriptResult == 0) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 0); else gAIScriptPtr += 4; -- cgit v1.2.3 From a5403f03dd49711f8c2f719e8bfa8a83f427563c Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 14:16:40 -0500 Subject: scriptArr to s16 --- src/contest_ai.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c index 0c1126ac5..66b387270 100755 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -1564,7 +1564,7 @@ static void ContestAICmd_unk_74(void) static void ContestAICmd_unk_75(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) + if(eContestAI->scriptArr[gAIScriptPtr[1]] < T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; @@ -1572,7 +1572,7 @@ static void ContestAICmd_unk_75(void) static void ContestAICmd_unk_76(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) + if(eContestAI->scriptArr[gAIScriptPtr[1]] > T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; @@ -1580,7 +1580,7 @@ static void ContestAICmd_unk_76(void) static void ContestAICmd_unk_77(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) + if(eContestAI->scriptArr[gAIScriptPtr[1]] == T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; @@ -1588,7 +1588,7 @@ static void ContestAICmd_unk_77(void) static void ContestAICmd_unk_78(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) + if(eContestAI->scriptArr[gAIScriptPtr[1]] != T1_READ_16(gAIScriptPtr + 2)) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 4); else gAIScriptPtr += 8; @@ -1596,7 +1596,7 @@ static void ContestAICmd_unk_78(void) static void ContestAICmd_unk_79(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] < ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + if(eContestAI->scriptArr[gAIScriptPtr[1]] < (eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; @@ -1604,7 +1604,7 @@ static void ContestAICmd_unk_79(void) static void ContestAICmd_unk_7A(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] > ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + if(eContestAI->scriptArr[gAIScriptPtr[1]] > (eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; @@ -1612,7 +1612,7 @@ static void ContestAICmd_unk_7A(void) static void ContestAICmd_unk_7B(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] == ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + if(eContestAI->scriptArr[gAIScriptPtr[1]] == (eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; @@ -1620,7 +1620,7 @@ static void ContestAICmd_unk_7B(void) static void ContestAICmd_unk_7C(void) { - if((s16)eContestAI->scriptArr[gAIScriptPtr[1]] != ((s16)eContestAI->scriptArr[gAIScriptPtr[2]])) + if(eContestAI->scriptArr[gAIScriptPtr[1]] != (eContestAI->scriptArr[gAIScriptPtr[2]])) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 3); else gAIScriptPtr += 7; @@ -1628,7 +1628,7 @@ static void ContestAICmd_unk_7C(void) static void ContestAICmd_unk_7D(void) { - if((Random() & 0xFF) < (s16)eContestAI->scriptArr[gAIScriptPtr[1]]) + if((Random() & 0xFF) < eContestAI->scriptArr[gAIScriptPtr[1]]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; @@ -1636,7 +1636,7 @@ static void ContestAICmd_unk_7D(void) static void ContestAICmd_unk_7E(void) { - if((Random() & 0xFF) > (s16)eContestAI->scriptArr[gAIScriptPtr[1]]) + if((Random() & 0xFF) > eContestAI->scriptArr[gAIScriptPtr[1]]) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 2); else gAIScriptPtr += 6; -- cgit v1.2.3 From 58b71865c9052d3b6cf21dae38052afa88ba44a6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 13:41:50 -0600 Subject: improve TM/HM constants and add macro for TM/HM learnsets --- src/data/items_de.h | 114 +- src/data/items_en.h | 116 +- src/data/pokemon/tmhm_learnsets.h | 9821 +++++++++++++++++++++++++++++++++++-- src/field/daycare.c | 2 +- src/field/item_use.c | 2 +- src/field/party_menu.c | 2 +- src/field/player_pc.c | 2 +- 7 files changed, 9509 insertions(+), 550 deletions(-) (limited to 'src') diff --git a/src/data/items_de.h b/src/data/items_de.h index 0453a95d0..de4438622 100644 --- a/src/data/items_de.h +++ b/src/data/items_de.h @@ -4626,7 +4626,7 @@ const struct Item gItems[] = }, { .name = _("TM01"), - .itemId = ITEM_TM01, + .itemId = ITEM_TM01_FOCUS_PUNCH, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4642,7 +4642,7 @@ const struct Item gItems[] = }, { .name = _("TM02"), - .itemId = ITEM_TM02, + .itemId = ITEM_TM02_DRAGON_CLAW, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4658,7 +4658,7 @@ const struct Item gItems[] = }, { .name = _("TM03"), - .itemId = ITEM_TM03, + .itemId = ITEM_TM03_WATER_PULSE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4674,7 +4674,7 @@ const struct Item gItems[] = }, { .name = _("TM04"), - .itemId = ITEM_TM04, + .itemId = ITEM_TM04_CALM_MIND, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4690,7 +4690,7 @@ const struct Item gItems[] = }, { .name = _("TM05"), - .itemId = ITEM_TM05, + .itemId = ITEM_TM05_ROAR, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4706,7 +4706,7 @@ const struct Item gItems[] = }, { .name = _("TM06"), - .itemId = ITEM_TM06, + .itemId = ITEM_TM06_TOXIC, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4722,7 +4722,7 @@ const struct Item gItems[] = }, { .name = _("TM07"), - .itemId = ITEM_TM07, + .itemId = ITEM_TM07_HAIL, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4738,7 +4738,7 @@ const struct Item gItems[] = }, { .name = _("TM08"), - .itemId = ITEM_TM08, + .itemId = ITEM_TM08_BULK_UP, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4754,7 +4754,7 @@ const struct Item gItems[] = }, { .name = _("TM09"), - .itemId = ITEM_TM09, + .itemId = ITEM_TM09_BULLET_SEED, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4770,7 +4770,7 @@ const struct Item gItems[] = }, { .name = _("TM10"), - .itemId = ITEM_TM10, + .itemId = ITEM_TM10_HIDDEN_POWER, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4786,7 +4786,7 @@ const struct Item gItems[] = }, { .name = _("TM11"), - .itemId = ITEM_TM11, + .itemId = ITEM_TM11_SUNNY_DAY, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4802,7 +4802,7 @@ const struct Item gItems[] = }, { .name = _("TM12"), - .itemId = ITEM_TM12, + .itemId = ITEM_TM12_TAUNT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4818,7 +4818,7 @@ const struct Item gItems[] = }, { .name = _("TM13"), - .itemId = ITEM_TM13, + .itemId = ITEM_TM13_ICE_BEAM, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4834,7 +4834,7 @@ const struct Item gItems[] = }, { .name = _("TM14"), - .itemId = ITEM_TM14, + .itemId = ITEM_TM14_BLIZZARD, .price = 5500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4850,7 +4850,7 @@ const struct Item gItems[] = }, { .name = _("TM15"), - .itemId = ITEM_TM15, + .itemId = ITEM_TM15_HYPER_BEAM, .price = 7500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4866,7 +4866,7 @@ const struct Item gItems[] = }, { .name = _("TM16"), - .itemId = ITEM_TM16, + .itemId = ITEM_TM16_LIGHT_SCREEN, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4882,7 +4882,7 @@ const struct Item gItems[] = }, { .name = _("TM17"), - .itemId = ITEM_TM17, + .itemId = ITEM_TM17_PROTECT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4898,7 +4898,7 @@ const struct Item gItems[] = }, { .name = _("TM18"), - .itemId = ITEM_TM18, + .itemId = ITEM_TM18_RAIN_DANCE, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4914,7 +4914,7 @@ const struct Item gItems[] = }, { .name = _("TM19"), - .itemId = ITEM_TM19, + .itemId = ITEM_TM19_GIGA_DRAIN, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4930,7 +4930,7 @@ const struct Item gItems[] = }, { .name = _("TM20"), - .itemId = ITEM_TM20, + .itemId = ITEM_TM20_SAFEGUARD, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4946,7 +4946,7 @@ const struct Item gItems[] = }, { .name = _("TM21"), - .itemId = ITEM_TM21, + .itemId = ITEM_TM21_FRUSTRATION, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4962,7 +4962,7 @@ const struct Item gItems[] = }, { .name = _("TM22"), - .itemId = ITEM_TM22, + .itemId = ITEM_TM22_SOLARBEAM, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4978,7 +4978,7 @@ const struct Item gItems[] = }, { .name = _("TM23"), - .itemId = ITEM_TM23, + .itemId = ITEM_TM23_IRON_TAIL, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4994,7 +4994,7 @@ const struct Item gItems[] = }, { .name = _("TM24"), - .itemId = ITEM_TM24, + .itemId = ITEM_TM24_THUNDERBOLT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5010,7 +5010,7 @@ const struct Item gItems[] = }, { .name = _("TM25"), - .itemId = ITEM_TM25, + .itemId = ITEM_TM25_THUNDER, .price = 5500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5026,7 +5026,7 @@ const struct Item gItems[] = }, { .name = _("TM26"), - .itemId = ITEM_TM26, + .itemId = ITEM_TM26_EARTHQUAKE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5042,7 +5042,7 @@ const struct Item gItems[] = }, { .name = _("TM27"), - .itemId = ITEM_TM27, + .itemId = ITEM_TM27_RETURN, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5058,7 +5058,7 @@ const struct Item gItems[] = }, { .name = _("TM28"), - .itemId = ITEM_TM28, + .itemId = ITEM_TM28_DIG, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5074,7 +5074,7 @@ const struct Item gItems[] = }, { .name = _("TM29"), - .itemId = ITEM_TM29, + .itemId = ITEM_TM29_PSYCHIC, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5090,7 +5090,7 @@ const struct Item gItems[] = }, { .name = _("TM30"), - .itemId = ITEM_TM30, + .itemId = ITEM_TM30_SHADOW_BALL, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5106,7 +5106,7 @@ const struct Item gItems[] = }, { .name = _("TM31"), - .itemId = ITEM_TM31, + .itemId = ITEM_TM31_BRICK_BREAK, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5122,7 +5122,7 @@ const struct Item gItems[] = }, { .name = _("TM32"), - .itemId = ITEM_TM32, + .itemId = ITEM_TM32_DOUBLE_TEAM, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5138,7 +5138,7 @@ const struct Item gItems[] = }, { .name = _("TM33"), - .itemId = ITEM_TM33, + .itemId = ITEM_TM33_REFLECT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5154,7 +5154,7 @@ const struct Item gItems[] = }, { .name = _("TM34"), - .itemId = ITEM_TM34, + .itemId = ITEM_TM34_SHOCK_WAVE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5170,7 +5170,7 @@ const struct Item gItems[] = }, { .name = _("TM35"), - .itemId = ITEM_TM35, + .itemId = ITEM_TM35_FLAMETHROWER, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5186,7 +5186,7 @@ const struct Item gItems[] = }, { .name = _("TM36"), - .itemId = ITEM_TM36, + .itemId = ITEM_TM36_SLUDGE_BOMB, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5202,7 +5202,7 @@ const struct Item gItems[] = }, { .name = _("TM37"), - .itemId = ITEM_TM37, + .itemId = ITEM_TM37_SANDSTORM, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5218,7 +5218,7 @@ const struct Item gItems[] = }, { .name = _("TM38"), - .itemId = ITEM_TM38, + .itemId = ITEM_TM38_FIRE_BLAST, .price = 5500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5234,7 +5234,7 @@ const struct Item gItems[] = }, { .name = _("TM39"), - .itemId = ITEM_TM39, + .itemId = ITEM_TM39_ROCK_TOMB, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5250,7 +5250,7 @@ const struct Item gItems[] = }, { .name = _("TM40"), - .itemId = ITEM_TM40, + .itemId = ITEM_TM40_AERIAL_ACE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5266,7 +5266,7 @@ const struct Item gItems[] = }, { .name = _("TM41"), - .itemId = ITEM_TM41, + .itemId = ITEM_TM41_TORMENT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5282,7 +5282,7 @@ const struct Item gItems[] = }, { .name = _("TM42"), - .itemId = ITEM_TM42, + .itemId = ITEM_TM42_FACADE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5298,7 +5298,7 @@ const struct Item gItems[] = }, { .name = _("TM43"), - .itemId = ITEM_TM43, + .itemId = ITEM_TM43_SECRET_POWER, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5314,7 +5314,7 @@ const struct Item gItems[] = }, { .name = _("TM44"), - .itemId = ITEM_TM44, + .itemId = ITEM_TM44_REST, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5330,7 +5330,7 @@ const struct Item gItems[] = }, { .name = _("TM45"), - .itemId = ITEM_TM45, + .itemId = ITEM_TM45_ATTRACT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5346,7 +5346,7 @@ const struct Item gItems[] = }, { .name = _("TM46"), - .itemId = ITEM_TM46, + .itemId = ITEM_TM46_THIEF, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5362,7 +5362,7 @@ const struct Item gItems[] = }, { .name = _("TM47"), - .itemId = ITEM_TM47, + .itemId = ITEM_TM47_STEEL_WING, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5378,7 +5378,7 @@ const struct Item gItems[] = }, { .name = _("TM48"), - .itemId = ITEM_TM48, + .itemId = ITEM_TM48_SKILL_SWAP, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5394,7 +5394,7 @@ const struct Item gItems[] = }, { .name = _("TM49"), - .itemId = ITEM_TM49, + .itemId = ITEM_TM49_SNATCH, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5410,7 +5410,7 @@ const struct Item gItems[] = }, { .name = _("TM50"), - .itemId = ITEM_TM50, + .itemId = ITEM_TM50_OVERHEAT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5442,7 +5442,7 @@ const struct Item gItems[] = }, { .name = _("VM02"), - .itemId = ITEM_HM02, + .itemId = ITEM_HM02_FLY, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5458,7 +5458,7 @@ const struct Item gItems[] = }, { .name = _("VM03"), - .itemId = ITEM_HM03, + .itemId = ITEM_HM03_SURF, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5474,7 +5474,7 @@ const struct Item gItems[] = }, { .name = _("VM04"), - .itemId = ITEM_HM04, + .itemId = ITEM_HM04_STRENGTH, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5490,7 +5490,7 @@ const struct Item gItems[] = }, { .name = _("VM05"), - .itemId = ITEM_HM05, + .itemId = ITEM_HM05_FLASH, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5506,7 +5506,7 @@ const struct Item gItems[] = }, { .name = _("VM06"), - .itemId = ITEM_HM06, + .itemId = ITEM_HM06_ROCK_SMASH, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5522,7 +5522,7 @@ const struct Item gItems[] = }, { .name = _("VM07"), - .itemId = ITEM_HM07, + .itemId = ITEM_HM07_WATERFALL, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5538,7 +5538,7 @@ const struct Item gItems[] = }, { .name = _("VM08"), - .itemId = ITEM_HM08, + .itemId = ITEM_HM08_DIVE, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, diff --git a/src/data/items_en.h b/src/data/items_en.h index a3e822370..3660f4590 100644 --- a/src/data/items_en.h +++ b/src/data/items_en.h @@ -4626,7 +4626,7 @@ const struct Item gItems[] = }, { .name = _("TM01"), - .itemId = ITEM_TM01, + .itemId = ITEM_TM01_FOCUS_PUNCH, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4642,7 +4642,7 @@ const struct Item gItems[] = }, { .name = _("TM02"), - .itemId = ITEM_TM02, + .itemId = ITEM_TM02_DRAGON_CLAW, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4658,7 +4658,7 @@ const struct Item gItems[] = }, { .name = _("TM03"), - .itemId = ITEM_TM03, + .itemId = ITEM_TM03_WATER_PULSE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4674,7 +4674,7 @@ const struct Item gItems[] = }, { .name = _("TM04"), - .itemId = ITEM_TM04, + .itemId = ITEM_TM04_CALM_MIND, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4690,7 +4690,7 @@ const struct Item gItems[] = }, { .name = _("TM05"), - .itemId = ITEM_TM05, + .itemId = ITEM_TM05_ROAR, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4706,7 +4706,7 @@ const struct Item gItems[] = }, { .name = _("TM06"), - .itemId = ITEM_TM06, + .itemId = ITEM_TM06_TOXIC, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4722,7 +4722,7 @@ const struct Item gItems[] = }, { .name = _("TM07"), - .itemId = ITEM_TM07, + .itemId = ITEM_TM07_HAIL, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4738,7 +4738,7 @@ const struct Item gItems[] = }, { .name = _("TM08"), - .itemId = ITEM_TM08, + .itemId = ITEM_TM08_BULK_UP, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4754,7 +4754,7 @@ const struct Item gItems[] = }, { .name = _("TM09"), - .itemId = ITEM_TM09, + .itemId = ITEM_TM09_BULLET_SEED, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4770,7 +4770,7 @@ const struct Item gItems[] = }, { .name = _("TM10"), - .itemId = ITEM_TM10, + .itemId = ITEM_TM10_HIDDEN_POWER, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4786,7 +4786,7 @@ const struct Item gItems[] = }, { .name = _("TM11"), - .itemId = ITEM_TM11, + .itemId = ITEM_TM11_SUNNY_DAY, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4802,7 +4802,7 @@ const struct Item gItems[] = }, { .name = _("TM12"), - .itemId = ITEM_TM12, + .itemId = ITEM_TM12_TAUNT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4818,7 +4818,7 @@ const struct Item gItems[] = }, { .name = _("TM13"), - .itemId = ITEM_TM13, + .itemId = ITEM_TM13_ICE_BEAM, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4834,7 +4834,7 @@ const struct Item gItems[] = }, { .name = _("TM14"), - .itemId = ITEM_TM14, + .itemId = ITEM_TM14_BLIZZARD, .price = 5500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4850,7 +4850,7 @@ const struct Item gItems[] = }, { .name = _("TM15"), - .itemId = ITEM_TM15, + .itemId = ITEM_TM15_HYPER_BEAM, .price = 7500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4866,7 +4866,7 @@ const struct Item gItems[] = }, { .name = _("TM16"), - .itemId = ITEM_TM16, + .itemId = ITEM_TM16_LIGHT_SCREEN, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4882,7 +4882,7 @@ const struct Item gItems[] = }, { .name = _("TM17"), - .itemId = ITEM_TM17, + .itemId = ITEM_TM17_PROTECT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4898,7 +4898,7 @@ const struct Item gItems[] = }, { .name = _("TM18"), - .itemId = ITEM_TM18, + .itemId = ITEM_TM18_RAIN_DANCE, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4914,7 +4914,7 @@ const struct Item gItems[] = }, { .name = _("TM19"), - .itemId = ITEM_TM19, + .itemId = ITEM_TM19_GIGA_DRAIN, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4930,7 +4930,7 @@ const struct Item gItems[] = }, { .name = _("TM20"), - .itemId = ITEM_TM20, + .itemId = ITEM_TM20_SAFEGUARD, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4946,7 +4946,7 @@ const struct Item gItems[] = }, { .name = _("TM21"), - .itemId = ITEM_TM21, + .itemId = ITEM_TM21_FRUSTRATION, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4962,7 +4962,7 @@ const struct Item gItems[] = }, { .name = _("TM22"), - .itemId = ITEM_TM22, + .itemId = ITEM_TM22_SOLARBEAM, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4978,7 +4978,7 @@ const struct Item gItems[] = }, { .name = _("TM23"), - .itemId = ITEM_TM23, + .itemId = ITEM_TM23_IRON_TAIL, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -4994,7 +4994,7 @@ const struct Item gItems[] = }, { .name = _("TM24"), - .itemId = ITEM_TM24, + .itemId = ITEM_TM24_THUNDERBOLT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5010,7 +5010,7 @@ const struct Item gItems[] = }, { .name = _("TM25"), - .itemId = ITEM_TM25, + .itemId = ITEM_TM25_THUNDER, .price = 5500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5026,7 +5026,7 @@ const struct Item gItems[] = }, { .name = _("TM26"), - .itemId = ITEM_TM26, + .itemId = ITEM_TM26_EARTHQUAKE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5042,7 +5042,7 @@ const struct Item gItems[] = }, { .name = _("TM27"), - .itemId = ITEM_TM27, + .itemId = ITEM_TM27_RETURN, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5058,7 +5058,7 @@ const struct Item gItems[] = }, { .name = _("TM28"), - .itemId = ITEM_TM28, + .itemId = ITEM_TM28_DIG, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5074,7 +5074,7 @@ const struct Item gItems[] = }, { .name = _("TM29"), - .itemId = ITEM_TM29, + .itemId = ITEM_TM29_PSYCHIC, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5090,7 +5090,7 @@ const struct Item gItems[] = }, { .name = _("TM30"), - .itemId = ITEM_TM30, + .itemId = ITEM_TM30_SHADOW_BALL, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5106,7 +5106,7 @@ const struct Item gItems[] = }, { .name = _("TM31"), - .itemId = ITEM_TM31, + .itemId = ITEM_TM31_BRICK_BREAK, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5122,7 +5122,7 @@ const struct Item gItems[] = }, { .name = _("TM32"), - .itemId = ITEM_TM32, + .itemId = ITEM_TM32_DOUBLE_TEAM, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5138,7 +5138,7 @@ const struct Item gItems[] = }, { .name = _("TM33"), - .itemId = ITEM_TM33, + .itemId = ITEM_TM33_REFLECT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5154,7 +5154,7 @@ const struct Item gItems[] = }, { .name = _("TM34"), - .itemId = ITEM_TM34, + .itemId = ITEM_TM34_SHOCK_WAVE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5170,7 +5170,7 @@ const struct Item gItems[] = }, { .name = _("TM35"), - .itemId = ITEM_TM35, + .itemId = ITEM_TM35_FLAMETHROWER, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5186,7 +5186,7 @@ const struct Item gItems[] = }, { .name = _("TM36"), - .itemId = ITEM_TM36, + .itemId = ITEM_TM36_SLUDGE_BOMB, .price = 1000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5202,7 +5202,7 @@ const struct Item gItems[] = }, { .name = _("TM37"), - .itemId = ITEM_TM37, + .itemId = ITEM_TM37_SANDSTORM, .price = 2000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5218,7 +5218,7 @@ const struct Item gItems[] = }, { .name = _("TM38"), - .itemId = ITEM_TM38, + .itemId = ITEM_TM38_FIRE_BLAST, .price = 5500, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5234,7 +5234,7 @@ const struct Item gItems[] = }, { .name = _("TM39"), - .itemId = ITEM_TM39, + .itemId = ITEM_TM39_ROCK_TOMB, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5250,7 +5250,7 @@ const struct Item gItems[] = }, { .name = _("TM40"), - .itemId = ITEM_TM40, + .itemId = ITEM_TM40_AERIAL_ACE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5266,7 +5266,7 @@ const struct Item gItems[] = }, { .name = _("TM41"), - .itemId = ITEM_TM41, + .itemId = ITEM_TM41_TORMENT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5282,7 +5282,7 @@ const struct Item gItems[] = }, { .name = _("TM42"), - .itemId = ITEM_TM42, + .itemId = ITEM_TM42_FACADE, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5298,7 +5298,7 @@ const struct Item gItems[] = }, { .name = _("TM43"), - .itemId = ITEM_TM43, + .itemId = ITEM_TM43_SECRET_POWER, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5314,7 +5314,7 @@ const struct Item gItems[] = }, { .name = _("TM44"), - .itemId = ITEM_TM44, + .itemId = ITEM_TM44_REST, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5330,7 +5330,7 @@ const struct Item gItems[] = }, { .name = _("TM45"), - .itemId = ITEM_TM45, + .itemId = ITEM_TM45_ATTRACT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5346,7 +5346,7 @@ const struct Item gItems[] = }, { .name = _("TM46"), - .itemId = ITEM_TM46, + .itemId = ITEM_TM46_THIEF, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5362,7 +5362,7 @@ const struct Item gItems[] = }, { .name = _("TM47"), - .itemId = ITEM_TM47, + .itemId = ITEM_TM47_STEEL_WING, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5378,7 +5378,7 @@ const struct Item gItems[] = }, { .name = _("TM48"), - .itemId = ITEM_TM48, + .itemId = ITEM_TM48_SKILL_SWAP, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5394,7 +5394,7 @@ const struct Item gItems[] = }, { .name = _("TM49"), - .itemId = ITEM_TM49, + .itemId = ITEM_TM49_SNATCH, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5410,7 +5410,7 @@ const struct Item gItems[] = }, { .name = _("TM50"), - .itemId = ITEM_TM50, + .itemId = ITEM_TM50_OVERHEAT, .price = 3000, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5426,7 +5426,7 @@ const struct Item gItems[] = }, { .name = _("HM01"), - .itemId = ITEM_HM01, + .itemId = ITEM_HM01_CUT, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5442,7 +5442,7 @@ const struct Item gItems[] = }, { .name = _("HM02"), - .itemId = ITEM_HM02, + .itemId = ITEM_HM02_FLY, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5458,7 +5458,7 @@ const struct Item gItems[] = }, { .name = _("HM03"), - .itemId = ITEM_HM03, + .itemId = ITEM_HM03_SURF, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5474,7 +5474,7 @@ const struct Item gItems[] = }, { .name = _("HM04"), - .itemId = ITEM_HM04, + .itemId = ITEM_HM04_STRENGTH, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5490,7 +5490,7 @@ const struct Item gItems[] = }, { .name = _("HM05"), - .itemId = ITEM_HM05, + .itemId = ITEM_HM05_FLASH, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5506,7 +5506,7 @@ const struct Item gItems[] = }, { .name = _("HM06"), - .itemId = ITEM_HM06, + .itemId = ITEM_HM06_ROCK_SMASH, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5522,7 +5522,7 @@ const struct Item gItems[] = }, { .name = _("HM07"), - .itemId = ITEM_HM07, + .itemId = ITEM_HM07_WATERFALL, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, @@ -5538,7 +5538,7 @@ const struct Item gItems[] = }, { .name = _("HM08"), - .itemId = ITEM_HM08, + .itemId = ITEM_HM08_DIVE, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h index 02cd22d56..6c7e8c1e2 100644 --- a/src/data/pokemon/tmhm_learnsets.h +++ b/src/data/pokemon/tmhm_learnsets.h @@ -1,431 +1,9390 @@ -// - -// - -#ifndef POKERUBY_TMHM_LEARNSETS_H -#define POKERUBY_TMHM_LEARNSETS_H - -// TO-DO: Rewrite this declaration to allow assignment of TM/HM learns by name. -// These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01, -// while the most significant bit represents HM08. - -asm( - ".align 2\n" - ".global gTMHMLearnsets\n" - "gTMHMLearnsets:\n" - - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?????????? - ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Bulbasaur - ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Ivysaur - ".8byte 0b0011100100000111100000100010000110001101010100011100110000\n" // Venusaur - ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmander - ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmeleon - ".8byte 0b0010101110010111101010010011001110010100010100011000110011\n" // Charizard - ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Squirtle - ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Wartortle - ".8byte 0b1110110000000111100000000011001110010100110111001001110101\n" // Blastoise - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Caterpie - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Metapod - ".8byte 0b0001000000101111101000000010110100001111110100011000100000\n" // Butterfree - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Weedle - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Kakuna - ".8byte 0b0010000100001111101000100011000100001101010100011000100000\n" // Beedrill - ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgey - ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgeotto - ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Pidgeot - ".8byte 0b0010000100001111100000001010101101110100110011111000100000\n" // Rattata - ".8byte 0b0010100100001111100000001010101101110100110111111000110000\n" // Raticate - ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Spearow - ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Fearow - ".8byte 0b0000100001001111110000100010001110010101110000011000100000\n" // Ekans - ".8byte 0b0000100001001111110000100010001110010101110100011000100000\n" // Arbok - ".8byte 0b0011100000000111100000001011001101110100111000001000100001\n" // Pikachu - ".8byte 0b0011100000001111100000001011001101110100111100001000100001\n" // Raichu - ".8byte 0b0010100100001111101101000011001110010100010000011000100001\n" // Sandshrew - ".8byte 0b0010100100001111101101000011001110010100010100011000100001\n" // Sandslash - ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidoran♀ - ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidorina - ".8byte 0b0010110100001111111111111011101111110100110111111000110101\n" // Nidoqueen - ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidoran♂ - ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidorino - ".8byte 0b0010110100001111110111111011101111110100110111111000110101\n" // Nidoking - ".8byte 0b0001100001000111100010011111111101111110111011011000101101\n" // Clefairy - ".8byte 0b0001100001000111100010011111111101111110111111011000101101\n" // Clefable - ".8byte 0b0000000010000111100010010010001100010110010000011000110000\n" // Vulpix - ".8byte 0b0000000010000111100010010010001100010110010100011000110000\n" // Ninetales - ".8byte 0b0001100001000111100010011111111101101110111011011000100101\n" // Jigglypuff - ".8byte 0b0001100001000111100010011111111101101110111111011000100101\n" // Wigglytuff - ".8byte 0b0000000001011111111000100010100100000101110000111000100000\n" // Zubat - ".8byte 0b0000000001011111111000100010100100000101110100111000100000\n" // Golbat - ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Oddish - ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Gloom - ".8byte 0b0001000100000111100000100010000100001101010100011100100000\n" // Vileplume - ".8byte 0b0011000100001111101000100010001100001101010000011100100000\n" // Paras - ".8byte 0b0011000100001111101000100010001100001101010100011100100000\n" // Parasect - ".8byte 0b0001000000101111100000100010010100001101010000011000100000\n" // Venonat - ".8byte 0b0001000000101111101000100010010100001101010100011000100000\n" // Venomoth - ".8byte 0b0010000100001111101100100010001110000100010000011000100000\n" // Diglett - ".8byte 0b0010000100001111101100100010001110000100010100011000100000\n" // Dugtrio - ".8byte 0b0001000101001111111000001010101101110100110000111000100100\n" // Meowth - ".8byte 0b0001000101001111111000001010101101110100110100111000110100\n" // Persian - ".8byte 0b1111110000000111101000000011001100010100110011001001101101\n" // Psyduck - ".8byte 0b1111110000000111101000000011001100010100110111001001101101\n" // Golduck - ".8byte 0b0010100010001111101100000011001111110100110000111010100001\n" // Mankey - ".8byte 0b0010100010001111101100000011001111110100110100111010100001\n" // Primeape - ".8byte 0b0010100010001111101010010010001100010100010000011000110000\n" // Growlithe - ".8byte 0b0010100010001111101010010010001100010100010100011000110000\n" // Arcanine - ".8byte 0b1100010000001111100000000010011100000100110011001001100100\n" // Poliwag - ".8byte 0b1110110000001111100000000011011110000100110011001001100101\n" // Poliwhirl - ".8byte 0b1110110000001111100100000011011110000100110111001011100101\n" // Poliwrath - ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Abra - ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Kadabra - ".8byte 0b0001000001101111110000001110110100010110111100111000101001\n" // Alakazam - ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machop - ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machoke - ".8byte 0b0010100000001111100110010011001110000100110100011010100001\n" // Machamp - ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Bellsprout - ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Weepinbell - ".8byte 0b0001000100001111100000100010000100001101010100011100100000\n" // Victreebel - ".8byte 0b1100010100001111100000100010000100000101110011001001100100\n" // Tentacool - ".8byte 0b1100010100001111100000100010000100000101110111001001100100\n" // Tentacruel - ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Geodude - ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Graveler - ".8byte 0b0010100000000111100111010011001110000100010100011000110001\n" // Golem - ".8byte 0b0000100010000111100010010010000100011100010000011000100000\n" // Ponyta - ".8byte 0b0000100010000111100010010010000100011100010100011000100000\n" // Rapidash - ".8byte 0b1001110000100111100010010010111110010110110011011001101100\n" // Slowpoke - ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowbro - ".8byte 0b0001000000000011100000001110000101100100110000011000100000\n" // Magnemite - ".8byte 0b0001000000000011100000001110000101100100110100011000100000\n" // Magneton - ".8byte 0b0000001100011111101000000010000100010100010000011000100000\n" // Farfetch'd - ".8byte 0b0000001000011111101000000010000100000100010000011000100000\n" // Doduo - ".8byte 0b0000001000011111111000000010000100000100010100111000100000\n" // Dodrio - ".8byte 0b1100010000001111100000000010000100000110110011001001100100\n" // Seel - ".8byte 0b1100010000001111100000000010000100000110110111001001100100\n" // Dewgong - ".8byte 0b0000000000001111110110111010001101100101110000111000100000\n" // Grimer - ".8byte 0b0010100000001111110110111011001101100101110100111000100001\n" // Muk - ".8byte 0b1000010000000111100000000010000100000100110011001001100100\n" // Shellder - ".8byte 0b1000010000000111110000000010000100000100110111001001100100\n" // Cloyster - ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Gastly - ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Haunter - ".8byte 0b0010100001101111110000100011110101100101110100111000100001\n" // Gengar - ".8byte 0b0010100000000111110101000010001110010100010000111000110000\n" // Onix - ".8byte 0b0001000001101111110000000111110100000110111000111000101001\n" // Drowzee - ".8byte 0b0001000001101111110000000111110100000110111100111000101001\n" // Hypno - ".8byte 0b1010110100001111100100000010001100000100110011001001100100\n" // Krabby - ".8byte 0b1010110100001111100100000010001100000100110111001001100100\n" // Kingler - ".8byte 0b0001000000001011110000001010000101100100111000101000100000\n" // Voltorb - ".8byte 0b0001000000001011110000001010000101100100111100101000100000\n" // Electrode - ".8byte 0b0001100000101111100000100110010100001101011000011100100000\n" // Exeggcute - ".8byte 0b0001100000101111100000100110010100001101011100011100100000\n" // Exeggutor - ".8byte 0b0010100000001111101111010011001110010100010011011000100001\n" // Cubone - ".8byte 0b0010100000001111101111010011001110010100010111011000100001\n" // Marowak - ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonlee - ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonchan - ".8byte 0b0010110100001111100111011011101111111100110111011000100101\n" // Lickitung - ".8byte 0b0001000000001111110010111010100101100100110000111000100000\n" // Koffing - ".8byte 0b0001000000001111110010111010100101100100110100111000100000\n" // Weezing - ".8byte 0b0010100000001111100111011010001111110100110011011000110000\n" // Rhyhorn - ".8byte 0b0010110100001111100111011011001111110100110111011000110001\n" // Rhydon - ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Chansey - ".8byte 0b0011000100001111100000100010000100001101010100011100100000\n" // Tangela - ".8byte 0b0010110100001111101111011011101111111100110111011001110101\n" // Kangaskhan - ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Horsea - ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seadra - ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Goldeen - ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seaking - ".8byte 0b1101010000000011100000000110010101100100111011001001100100\n" // Staryu - ".8byte 0b1101010000100011100000000110010101100100111111001001100100\n" // Starmie - ".8byte 0b0001000001101111110000001111110101101110111100111000101001\n" // Mr. mime - ".8byte 0b0010000100011111101000000010000100000100110100011000100000\n" // Scyther - ".8byte 0b0001000000101111110000000111110100000100111111101001101101\n" // Jynx - ".8byte 0b0011100000001111100000001011010101110100111100001000100001\n" // Electabuzz - ".8byte 0b0010100000001111100010010011010100010100010100011000100001\n" // Magmar - ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Pinsir - ".8byte 0b0010110000000111100111011010000111111100110111011000100100\n" // Tauros - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Magikarp - ".8byte 0b1110110000000111110011010010000111100100110111101001110100\n" // Gyarados - ".8byte 0b1110110000000111100000001010010101110110110111001001110100\n" // Lapras - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Ditto - ".8byte 0b0000000000000111100000000010101100010100110000011000100000\n" // Eevee - ".8byte 0b1100010000000111100000000010101100010100110111011001110100\n" // Vaporeon - ".8byte 0b0001000000000111100000001010101101110100110100011000110000\n" // Jolteon - ".8byte 0b0000000010000111100010010010101100010100110100011000110000\n" // Flareon - ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon - ".8byte 0b1110010000001111100101000010000100000100110011001001100100\n" // Omanyte - ".8byte 0b1110010000001111100101000010000100000100110111001001100100\n" // Omastar - ".8byte 0b0110010000001111101101000010001100000101110011001001100100\n" // Kabuto - ".8byte 0b1110010100001111101101000011001100000101110111001001100100\n" // Kabutops - ".8byte 0b0010101000011111111111010010000110010100110100111000110010\n" // Aerodactyl - ".8byte 0b0000110000000111100111011011110111101100110111011000100101\n" // Snorlax - ".8byte 0b0010001000010011101001000110000100000100110111011001110100\n" // Articuno - ".8byte 0b0011001000010011101001001010000101100100111100011000110000\n" // Zapdos - ".8byte 0b0010001010010011101011010010000100000110110100011000110000\n" // Moltres - ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dratini - ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dragonair - ".8byte 0b1110111100010111101111011011000111110110110111011001110111\n" // Dragonite - ".8byte 0b0011100001100011111111011111110111111110111111111011101101\n" // Mewtwo - ".8byte 0b1111111111111111111111111111111111111111111111111111111111\n" // Mew - ".8byte 0b0001000100000111100000000110000100011111011000011100100000\n" // Chikorita - ".8byte 0b0011100100000111100000000110000100011111011000011100100000\n" // Bayleef - ".8byte 0b0011100100000111100000000110000110011111011100011100100000\n" // Meganium - ".8byte 0b0000000110000111101010010010001100000100010000011000100000\n" // Cyndaquil - ".8byte 0b0010100110000111101010010011001100000100010000011000110001\n" // Quilava - ".8byte 0b0010100110000111101010010011001110000100010100011000110001\n" // Typhlosion - ".8byte 0b1100010100000111101000000011001100010100110011001001100101\n" // Totodile - ".8byte 0b1110110100000111101000000011001100010100110011001001110101\n" // Croconaw - ".8byte 0b1110110100000111101000000011001110010100110111001001110111\n" // Feraligatr - ".8byte 0b0000010100001111100000011011101100111100110001011000100101\n" // Sentret - ".8byte 0b0010110100001111100000011011101101111100110111011000100101\n" // Furret - ".8byte 0b0001001000011111101000000110110100000100110000011000100000\n" // Hoothoot - ".8byte 0b0001001000011111101000000110110100000100110100011000100000\n" // Noctowl - ".8byte 0b0001000000001111101000000111001100001111011000011000100001\n" // Ledyba - ".8byte 0b0001000000001111101000000111001100001111011100011000100001\n" // Ledian - ".8byte 0b0001000000001111100000100010011100001101010000011000100000\n" // Spinarak - ".8byte 0b0001000000001111100000100010011100001101010100011000100000\n" // Ariados - ".8byte 0b0000001001011111111000100010100100000101110100111000100000\n" // Crobat - ".8byte 0b1101010000000111100000001010000101100100110011001001100100\n" // Chinchou - ".8byte 0b1101010000000111100000001010000101100100110111001001100100\n" // Lanturn - ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Pichu - ".8byte 0b0001000000000111100010011110111100011110111000011000100100\n" // Cleffa - ".8byte 0b0001000000000111100010011110111100001110111000011000100100\n" // Igglybuff - ".8byte 0b0011000000000111100010011110110100001110111000011000100100\n" // Togepi - ".8byte 0b0011001000010111101010011111110100001110111100011000100101\n" // Togetic - ".8byte 0b0001000000111111101000000110110100001101111000011000101000\n" // Natu - ".8byte 0b0001001000111111101000000110110100001101111100011000101000\n" // Xatu - ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Mareep - ".8byte 0b0011100000000111100000001011000101110100111000001000100001\n" // Flaaffy - ".8byte 0b0011100000000111100000001011000101110100111100001000100001\n" // Ampharos - ".8byte 0b0001000100000111100000100010000100001111010100011100100000\n" // Bellossom - ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Marill - ".8byte 0b1110110000000111100000000011001100010100110111001001100101\n" // Azumarill - ".8byte 0b0010100000001111100101000011001110000100010000111000101001\n" // Sudowoodo - ".8byte 0b1110110000001111100000000011011110000100110111001001100101\n" // Politoed - ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Hoppip - ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Skiploom - ".8byte 0b0001000000000111101000000010000100001101010100011100100000\n" // Jumpluff - ".8byte 0b0010100101001111101000001011101101111100110000111000100101\n" // Aipom - ".8byte 0b0001000100000111100000100010000100001111011000011100100000\n" // Sunkern - ".8byte 0b0001000100000111100000100010000100001111011100011100100000\n" // Sunflora - ".8byte 0b0001000000011111101000000010110100001101010000011000100000\n" // Yanma - ".8byte 0b1111010000000111100001100010001110010100110011001001100100\n" // Wooper - ".8byte 0b1111110000000111100101100011001110010100110111001001100101\n" // Quagsire - ".8byte 0b0001000100100111100000000110111100010100111100011000101000\n" // Espeon - ".8byte 0b0001000101000111110000000010111100010100110100111000100000\n" // Umbreon - ".8byte 0b0000001001011111111000000010100100000100110000111000101000\n" // Murkrow - ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowking - ".8byte 0b0001000001101111111000001010110101100100110000111000101000\n" // Misdreavus - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Unown - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wobbuffet - ".8byte 0b0011100000101111100000001110110111110100111000011000101000\n" // Girafarig - ".8byte 0b0010100000000111100001000110001110001101011000011000100000\n" // Pineco - ".8byte 0b0010100000000111100001000110001110001101011100011000100000\n" // Forretress - ".8byte 0b0010100000001111100110011010101111111100110011011000101100\n" // Dunsparce - ".8byte 0b0010100100011111101101100010001110010100110000011000100000\n" // Gligar - ".8byte 0b0010100100000111110101000010001110010100010100111000110000\n" // Steelix - ".8byte 0b0010100010001111110010111011101111101100110000111010110101\n" // Snubbull - ".8byte 0b0010100010001111110110111011101111111100110100111010110101\n" // Granbull - ".8byte 0b1100010000000111100000101010100100000100110011001001100100\n" // Qwilfish - ".8byte 0b0010100100011111101001000010000100000100110100011000100000\n" // Scizor - ".8byte 0b0011100000000111100101100010001110000110010000011000100000\n" // Shuckle - ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Heracross - ".8byte 0b0010110101001111111000000011101100010100110011111001101001\n" // Sneasel - ".8byte 0b0010100100001111111000000011001110000100110000111010110001\n" // Teddiursa - ".8byte 0b0010100100001111111100000011001110000100110100111010110001\n" // Ursaring - ".8byte 0b0010000010000111100010010110000100000100011000011000100000\n" // Slugma - ".8byte 0b0010100010000111100111010110000110000100011100011000100000\n" // Magcargo - ".8byte 0b0010100000000111100101000110001110000100111011001001110000\n" // Swinub - ".8byte 0b0010100000000111100101000110001110000100111111001001110000\n" // Piloswine - ".8byte 0b0010110000000111100101000110111110000110111011011001101100\n" // Corsola - ".8byte 0b1100010000001111100010010010010100000100110111011000100100\n" // Remoraid - ".8byte 0b1100010000001111100010110010010100000100110111011100100100\n" // Octillery - ".8byte 0b0000001000001111101000000010000100000100110011001001100101\n" // Delibird - ".8byte 0b1100010000000111101000000010000110000100110011001001100100\n" // Mantine - ".8byte 0b0010001100011111111001000010000100000100010000111000110000\n" // Skarmory - ".8byte 0b0010000011001111110010110010100100011100010000111000110000\n" // Houndour - ".8byte 0b0010100011001111110010110010100100011100010100111000110000\n" // Houndoom - ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Kingdra - ".8byte 0b0010100000000111100101000010000110010100010000011000110000\n" // Phanpy - ".8byte 0b0010100000000111100101000010000110010100010100011000110000\n" // Donphan - ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon2 - ".8byte 0b0001000000101111100000001110110111111100111000011000111000\n" // Stantler - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Smeargle - ".8byte 0b0010100000001111100000000011000110000100110000011010100000\n" // Tyrogue - ".8byte 0b0010100000001111100001000011001110000100110000011010100000\n" // Hitmontop - ".8byte 0b0001000000101111100000000110110100000100111011001001101100\n" // Smoochum - ".8byte 0b0011000000001111100000001011010101100100111000001000100001\n" // Elekid - ".8byte 0b0010000000001111100010010011010100010100010000011000100001\n" // Magby - ".8byte 0b0010110000000111100101001011100111111100110111011000100101\n" // Miltank - ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Blissey - ".8byte 0b0011100100000011100001001110001101110100110100011000111000\n" // Raikou - ".8byte 0b0011100100000011100011010110001100011100110100011000111000\n" // Entei - ".8byte 0b1110010100000011100001000110001100010100110111011001111100\n" // Suicune - ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Larvitar - ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Pupitar - ".8byte 0b0010110100000111111111011011001111110100110111111000110111\n" // Tyranitar - ".8byte 0b1110111000110011101001001110110111110111111111011001111100\n" // Lugia - ".8byte 0b0011101010010011101011011110110111101111111100011000111000\n" // Ho-Oh - ".8byte 0b0001000100100011101001001110110100001111111100011000101100\n" // Celebi - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? - ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Treecko - ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Grovyle - ".8byte 0b0011100100000111101100000011001110011111010100011100110011\n" // Sceptile - ".8byte 0b0010100110000111101110010010001100000100010000011000100000\n" // Torchic - ".8byte 0b0010100110000111101110010011001100000100010000011010100001\n" // Combusken - ".8byte 0b0010100110000111101110010011001110000100010100011010110001\n" // Blaziken - ".8byte 0b1110110000000111100100000010001100010100110011001001100100\n" // Mudkip - ".8byte 0b1110110000000111100100000010001110010100110011001001100100\n" // Marshtomp - ".8byte 0b1110110000000111100100000011001110010100110111001001110101\n" // Swampert - ".8byte 0b0010000001001111110000000010101100010100110000111000110000\n" // Poochyena - ".8byte 0b0010100001001111110000000010101100010100110100111000110000\n" // Mightyena - ".8byte 0b0010010100001111100000001010101101110100110011011000100100\n" // Zigzagoon - ".8byte 0b0010110100001111100000001010101101110100110111011000110100\n" // Linoone - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wurmple - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Silcoon - ".8byte 0b0001000000001111101000000010110100001111010100011000100000\n" // Beautifly - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Cascoon - ".8byte 0b0001000000001111101000100010110100001101011100011000100000\n" // Dustox - ".8byte 0b0001010000001111100000000010000100001101110011011101100100\n" // Lotad - ".8byte 0b1111110000001111100000000011000100001101110011011101100100\n" // Lombre - ".8byte 0b1111110000001111100000000011000100001101110111011101100101\n" // Ludicolo - ".8byte 0b0011000000000111100000000010101100001101010000011100100000\n" // Seedot - ".8byte 0b0011100100001111110100000011101100001101010100011100100000\n" // Nuzleaf - ".8byte 0b0011100100001111111100000011101100001101010100011100100000\n" // Shiftry - ".8byte 0b0001000100000011101001000010101100001101010000011000100000\n" // Nincada - ".8byte 0b0001000100001111101001000010101100001101010100011000100000\n" // Ninjask - ".8byte 0b0001000100001011101001000010101100001101010100011000100000\n" // Shedinja - ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Taillow - ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Swellow - ".8byte 0b0001000001000111100000100010000100001111010000011100100000\n" // Shroomish - ".8byte 0b0011100101000111100000100011000100011111010100011110100001\n" // Breloom - ".8byte 0b0011100001101111100100001011111100000110110000011000101101\n" // Spinda - ".8byte 0b0000001000011111101000001010000100000100110011001001100100\n" // Wingull - ".8byte 0b0000011000011111101000001010000100000100110111001001100100\n" // Pelipper - ".8byte 0b0001000000001111100000000010100100001101110011011000100100\n" // Surskit - ".8byte 0b0001000000001111101000000010100100001101110111011000100100\n" // Masquerain - ".8byte 0b1110110000000111100100000010000110000100110011001001110100\n" // Wailmer - ".8byte 0b1110110000000111100100000010000110000100110111001001110100\n" // Wailord - ".8byte 0b0001000000000111100000001010101101111110110011011000101100\n" // Skitty - ".8byte 0b0011100000000111100000001010101101111110110111011000101100\n" // Delcatty - ".8byte 0b0011100101101111101110011011101101111100110011011000100101\n" // Kecleon - ".8byte 0b0001000000100011100101000110111110001100111001011000100000\n" // Baltoy - ".8byte 0b0011100000100011100101000110111110001100111101011000100000\n" // Claydol - ".8byte 0b0010100000000111110101001010000111100100010000111000100000\n" // Nosepass - ".8byte 0b0010100010000111100010110010000100010100010000011000100000\n" // Torkoal - ".8byte 0b0011000101001111111100001011111100000100110000111000101101\n" // Sableye - ".8byte 0b1100010000000111100101000010000110000100110011001001100100\n" // Barboach - ".8byte 0b1110110000000111100101000010000110000100110111001001100100\n" // Whiscash - ".8byte 0b1100010000000111100000000010000100000110110011001001100100\n" // Luvdisc - ".8byte 0b0110110100000111101100100011001100000100110011101001100100\n" // Corphish - ".8byte 0b1110110100000111101100100011001100000100110111101001100100\n" // Crawdaunt - ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Feebas - ".8byte 0b1100010000000111100000000010000100010110110111001001100100\n" // Milotic - ".8byte 0b1100010000001111110000000010000100000100110011101001100100\n" // Carvanha - ".8byte 0b1110110000001111110100000010000110000100110111101001110100\n" // Sharpedo - ".8byte 0b0010100000000111100101000010001110001101010100011000100000\n" // Trapinch - ".8byte 0b0010101000010111100101000010001110001101010100011000100000\n" // Vibrava - ".8byte 0b0010101000010111100111010010001110011101010100011000100010\n" // Flygon - ".8byte 0b0010110000000111100100000011001110000100110000011010100001\n" // Makuhita - ".8byte 0b0010110000000111100100000011001110000100110100011010100001\n" // Hariyama - ".8byte 0b0001100000001111100000001010000101110100110000001000110000\n" // Electrike - ".8byte 0b0001100000001111100000001010000101110100110100001000110000\n" // Manectric - ".8byte 0b0010100010000111100111010010001110000100010000011000100000\n" // Numel - ".8byte 0b0010100010000111100111010010001110000100010100011000110000\n" // Camerupt - ".8byte 0b1110110000000111100100000010000110010100110011001001100100\n" // Spheal - ".8byte 0b1110110000000111100100000010000110010100110011001001110100\n" // Sealeo - ".8byte 0b1110110000000111100100000010000110010100110111001001110100\n" // Walrein - ".8byte 0b0001000100000111100001000010000100001101010000011100100001\n" // Cacnea - ".8byte 0b0001100100000111100001000010000100001101010100011100100001\n" // Cacturne - ".8byte 0b0001000000000111100000000010100100000110111011001001100100\n" // Snorunt - ".8byte 0b0001000000000111110000000010100110000110111111101001100100\n" // Glalie - ".8byte 0b0001000000100011100101000110110110000110111101001000101000\n" // Lunatone - ".8byte 0b0001000010100011100111010110110110001110011100011000101000\n" // Solrock - ".8byte 0b0100010000000111100000000010000100010100110011001001100100\n" // Azurill - ".8byte 0b0001000001101111110000001110110100010100111000111000101000\n" // Spoink - ".8byte 0b0001000001101111110000001110110100010100111100111000101001\n" // Grumpig - ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Plusle - ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Minun - ".8byte 0b0010100000000111110111110011000100001100110101111000100001\n" // Mawile - ".8byte 0b0011100000000111100100000111110100000100111000011010101001\n" // Meditite - ".8byte 0b0011100000000111100100000111110100000100111100011010101001\n" // Medicham - ".8byte 0b0000001000011111101000000010000100001110110001011000100000\n" // Swablu - ".8byte 0b0010001000011111101010010010000110011110110101011000110010\n" // Altaria - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wynaut - ".8byte 0b0001000001101111110000000010110100000100110011111000101000\n" // Duskull - ".8byte 0b0011100001101111110100000010110110000100110111111000101001\n" // Dusclops - ".8byte 0b0001000100000111100000100010100100001101010000011100100000\n" // Roselia - ".8byte 0b0010100100000111101010011011100101101100110011011010100101\n" // Slakoth - ".8byte 0b0010100100000111101010011011100111101100110011111010110101\n" // Vigoroth - ".8byte 0b0010100100000111101010011011100111101100110111111010110101\n" // Slaking - ".8byte 0b0010100001000111100000101010100100001101110001011100100100\n" // Gulpin - ".8byte 0b0010100001000111100000101010100100001101110101011100100100\n" // Swalot - ".8byte 0b0011101100010111101000000010000110001111010100011100110000\n" // Tropius - ".8byte 0b0000000000000111100010011010100100001100110011011000110100\n" // Whismur - ".8byte 0b0010100010000111110010011011100110001100110011111000110100\n" // Loudred - ".8byte 0b0010100010000111110010011011100110001100110111111000110100\n" // Exploud - ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Clamperl - ".8byte 0b1100010001000111100100000010000100000100110111001001100100\n" // Huntail - ".8byte 0b1100010000000111100000000010110100000110110111001001100100\n" // Gorebyss - ".8byte 0b0011100101001111111011011010100101110100110111111001101100\n" // Absol - ".8byte 0b0001000001101111110000001010110101100100110000111000101000\n" // Shuppet - ".8byte 0b0001000001101111110000001010110101100100110100111000101000\n" // Banette - ".8byte 0b0010100001001111100000110010001110010101110000111000100000\n" // Seviper - ".8byte 0b0010100000001111101010011011101101111101110011111000110101\n" // Zangoose - ".8byte 0b1110010000000111100101000010000110000110110111001001101100\n" // Relicanth - ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Aron - ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Lairon - ".8byte 0b0010110100000111101111011011001111111100110111111000110111\n" // Aggron - ".8byte 0b0001000000001111100011011010100101101100110011011001100100\n" // Castform - ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Volbeat - ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Illumise - ".8byte 0b0000000000000111100001100010000100001101010000011100100000\n" // Lileep - ".8byte 0b0010100000000111100101100010000110001101010100011100100000\n" // Cradily - ".8byte 0b0010000100000111101101000011001100000100010000011000100100\n" // Anorith - ".8byte 0b0010100100000111101101000011001110010100010100011000100100\n" // Armaldo - ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Ralts - ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Kirlia - ".8byte 0b0001000001101111110000001110110100100110111100111000101000\n" // Gardevoir - ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Bagon - ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Shelgon - ".8byte 0b0010101100010111101110010011000110010100110100011000110010\n" // Salamence - ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Beldum - ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metang - ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metagross - ".8byte 0b0010100000000011100101001011001111100110010100011000100001\n" // Regirock - ".8byte 0b0010100000000011100000001011000111100110110111001001100001\n" // Regice - ".8byte 0b0010100000000011101101001011000111100110110100011000100001\n" // Registeel - ".8byte 0b1110110000000011100100001011000111100110110111001001111100\n" // Kyogre - ".8byte 0b0010100110000011101111011011001111111110010100011010110010\n" // Groudon - ".8byte 0b1110111010000011101011011011000111111100110111011010110110\n" // Rayquaza - ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latias - ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latios - ".8byte 0b0001000000100011101001001110110101100110111100011000101100\n" // Jirachi - ".8byte 0b0011100101100011111100001111110101101110111101111000101101\n" // Deoxys - ".8byte 0b0001000001100111110000001110110100000110111000111000101000\n" // Chimecho -); - -#endif //POKERUBY_TMHM_LEARNSETS_H +#ifndef GUARD_TMHM_LEARNSETS_H +#define GUARD_TMHM_LEARNSETS_H + +#define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)} +#define TMHM_BIT(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH)) + +const u32 gTMHMLearnsets[][2] = +{ + [SPECIES_NONE] = TMHM_LEARNSET(0), + + [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CATERPIE] = TMHM_LEARNSET(0), + + [SPECIES_METAPOD] = TMHM_LEARNSET(0), + + [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_WEEDLE] = TMHM_LEARNSET(0), + + [SPECIES_KAKUNA] = TMHM_LEARNSET(0), + + [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_EKANS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH)), + + [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH)), + + [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT)), + + [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT)), + + [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM49_SNATCH)), + + [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM49_SNATCH)), + + [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_PARAS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_ABRA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH)), + + [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH)), + + [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_DODUO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_SEEL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF)), + + [SPECIES_MUK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH)), + + [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH)), + + [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ONIX] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_STARYU] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_JYNX] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MAGIKARP] = TMHM_LEARNSET(0), + + [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_DITTO] = TMHM_LEARNSET(0), + + [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT)), + + [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT)), + + [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL)), + + [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH)), + + [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL)), + + [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL)), + + [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MEW] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT)), + + [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF)), + + [SPECIES_FURRET] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_PICHU] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NATU] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_XATU] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MARILL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_YANMA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_UNOWN] = TMHM_LEARNSET(0), + + [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0), + + [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PINECO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_URSARING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SMEARGLE] = TMHM_LEARNSET(0), + + [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_C] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_D] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_E] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_F] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_G] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_H] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_I] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_J] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_K] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_L] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_M] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_N] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_O] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_P] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Q] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_R] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_S] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_T] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_U] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_V] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_W] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_X] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Y] = TMHM_LEARNSET(0), + + [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0), + + [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_WURMPLE] = TMHM_LEARNSET(0), + + [SPECIES_SILCOON] = TMHM_LEARNSET(0), + + [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CASCOON] = TMHM_LEARNSET(0), + + [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF)), + + [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL)), + + [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL)), + + [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MINUN] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY)), + + [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_WYNAUT] = TMHM_LEARNSET(0), + + [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT)), + + [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_ARON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT)), + + [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM09_BULLET_SEED) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM19_GIGA_DRAIN) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RALTS] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM46_THIEF) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_BAGON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_BELDUM] = TMHM_LEARNSET(0), + + [SPECIES_METANG] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM36_SLUDGE_BOMB) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_REGICE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM07_HAIL) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM28_DIG) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM08_BULK_UP) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM14_BLIZZARD) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM23_IRON_TAIL) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM35_FLAMETHROWER) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM38_FIRE_BLAST) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM50_OVERHEAT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM06_ROCK_SMASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM05_ROAR) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM26_EARTHQUAKE) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM47_STEEL_WING) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM02_FLY) + | TMHM_BIT(HM03_SURF) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM07_WATERFALL) + | TMHM_BIT(HM08_DIVE)), + + [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM37_SANDSTORM) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(HM05_FLASH)), + + [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) + | TMHM_BIT(TM03_WATER_PULSE) + | TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM13_ICE_BEAM) + | TMHM_BIT(TM15_HYPER_BEAM) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM22_SOLARBEAM) + | TMHM_BIT(TM24_THUNDERBOLT) + | TMHM_BIT(TM25_THUNDER) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM31_BRICK_BREAK) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM39_ROCK_TOMB) + | TMHM_BIT(TM40_AERIAL_ACE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM01_CUT) + | TMHM_BIT(HM04_STRENGTH) + | TMHM_BIT(HM05_FLASH) + | TMHM_BIT(HM06_ROCK_SMASH)), + + [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) + | TMHM_BIT(TM06_TOXIC) + | TMHM_BIT(TM10_HIDDEN_POWER) + | TMHM_BIT(TM11_SUNNY_DAY) + | TMHM_BIT(TM12_TAUNT) + | TMHM_BIT(TM16_LIGHT_SCREEN) + | TMHM_BIT(TM17_PROTECT) + | TMHM_BIT(TM18_RAIN_DANCE) + | TMHM_BIT(TM20_SAFEGUARD) + | TMHM_BIT(TM21_FRUSTRATION) + | TMHM_BIT(TM27_RETURN) + | TMHM_BIT(TM29_PSYCHIC) + | TMHM_BIT(TM30_SHADOW_BALL) + | TMHM_BIT(TM32_DOUBLE_TEAM) + | TMHM_BIT(TM33_REFLECT) + | TMHM_BIT(TM34_SHOCK_WAVE) + | TMHM_BIT(TM41_TORMENT) + | TMHM_BIT(TM42_FACADE) + | TMHM_BIT(TM43_SECRET_POWER) + | TMHM_BIT(TM44_REST) + | TMHM_BIT(TM45_ATTRACT) + | TMHM_BIT(TM48_SKILL_SWAP) + | TMHM_BIT(TM49_SNATCH) + | TMHM_BIT(HM05_FLASH)), + +}; + +#endif // GUARD_TMHM_LEARNSETS_H diff --git a/src/field/daycare.c b/src/field/daycare.c index 7e4530906..36dd7ec03 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -557,7 +557,7 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP { for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { - if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j)) + if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01_FOCUS_PUNCH + j) && CanMonLearnTMHM(egg, j)) { if (GiveMoveToMon(egg, gHatchedEggFatherMoves[i]) == 0xffff) DeleteFirstMoveAndGiveMoveToMon(egg, gHatchedEggFatherMoves[i]); diff --git a/src/field/item_use.c b/src/field/item_use.c index bd76db77e..55fb21814 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -877,7 +877,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) { Menu_EraseWindowRect(0, 0xD, 0xD, 0x14); - if (gSpecialVar_ItemId >= ITEM_HM01) + if (gSpecialVar_ItemId >= ITEM_HM01_CUT) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM else DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7d243f569..48275435e 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -3998,7 +3998,7 @@ void Task_ConfirmTakeHeldMail(u8 taskId) u16 ItemIdToBattleMoveId(u16 item) { - u16 machineNumber = item - ITEM_TM01; + u16 machineNumber = item - ITEM_TM01_FOCUS_PUNCH; return TMHMMoves[machineNumber]; } diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 0d5c5234b..1d504586c 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -853,7 +853,7 @@ static void ItemStorage_DrawTMHMEntry(struct ItemSlot *itemSlot, u8 var, int var { ItemStorage_DrawItemName(itemSlot, var, var2); - if(itemSlot->itemId < ITEM_HM01) + if(itemSlot->itemId < ITEM_HM01_CUT) ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); else ItemStorage_DrawItemVoidQuantity(var); // HMs do not have a quantity. -- cgit v1.2.3 From 5f92a4960c60a3d0e0f7866c656d08a1d8d6ef79 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 14:00:44 -0600 Subject: TMHM_BITSET -> TMHM --- src/data/pokemon/tmhm_learnsets.h | 18579 ++++++++++++++++++------------------ 1 file changed, 9291 insertions(+), 9288 deletions(-) (limited to 'src') diff --git a/src/data/pokemon/tmhm_learnsets.h b/src/data/pokemon/tmhm_learnsets.h index 6c7e8c1e2..f14478863 100644 --- a/src/data/pokemon/tmhm_learnsets.h +++ b/src/data/pokemon/tmhm_learnsets.h @@ -2,6058 +2,6061 @@ #define GUARD_TMHM_LEARNSETS_H #define TMHM_LEARNSET(moves) {(u32)(moves), ((u64)(moves) >> 32)} -#define TMHM_BIT(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH)) +#define TMHM(tmhm) ((u64)1 << (ITEM_##tmhm - ITEM_TM01_FOCUS_PUNCH)) +// This table determines which TMs and HMs a species is capable of learning. +// Each entry is a 64-bit bit array spread across two 32-bit values, with +// each bit corresponding to a . const u32 gTMHMLearnsets[][2] = { [SPECIES_NONE] = TMHM_LEARNSET(0), - [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), + [SPECIES_BULBASAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_IVYSAUR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VENUSAUR] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARMANDER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARMELEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHARIZARD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SQUIRTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WARTORTLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_BLASTOISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), [SPECIES_CATERPIE] = TMHM_LEARNSET(0), [SPECIES_METAPOD] = TMHM_LEARNSET(0), - [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), + [SPECIES_BUTTERFREE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), [SPECIES_WEEDLE] = TMHM_LEARNSET(0), [SPECIES_KAKUNA] = TMHM_LEARNSET(0), - [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_EKANS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH)), - - [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH)), - - [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT)), - - [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT)), - - [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM49_SNATCH)), - - [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM49_SNATCH)), - - [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_PARAS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_ABRA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH)), - - [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH)), - - [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_DODUO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_SEEL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF)), - - [SPECIES_MUK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH)), - - [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH)), - - [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ONIX] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_STARYU] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_JYNX] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), + [SPECIES_BEEDRILL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PIDGEY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PIDGEOTTO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PIDGEOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_RATTATA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RATICATE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_FEAROW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_EKANS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH)), + + [SPECIES_ARBOK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH)), + + [SPECIES_PIKACHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAICHU] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SANDSHREW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SANDSLASH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_F] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDOQUEEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORAN_M] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDORINO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NIDOKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CLEFAIRY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_CLEFABLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_VULPIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_NINETALES] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_JIGGLYPUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_WIGGLYTUFF] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_ZUBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH)), + + [SPECIES_GOLBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH)), + + [SPECIES_ODDISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_GLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_VILEPLUME] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PARAS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PARASECT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VENONAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_VENOMOTH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_DIGLETT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DUGTRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEOWTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PERSIAN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_PSYDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOLDUCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MANKEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PRIMEAPE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GROWLITHE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ARCANINE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_POLIWAG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POLIWHIRL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POLIWRATH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KADABRA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_ALAKAZAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_MACHOP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MACHOKE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MACHAMP] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELLSPROUT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEPINBELL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_VICTREEBEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_TENTACOOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_TENTACRUEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GEODUDE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GRAVELER] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GOLEM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PONYTA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH)), + + [SPECIES_RAPIDASH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH)), + + [SPECIES_SLOWPOKE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM08_DIVE)), + + [SPECIES_SLOWBRO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_MAGNEMITE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM05_FLASH)), + + [SPECIES_MAGNETON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM05_FLASH)), + + [SPECIES_FARFETCHD] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY)), + + [SPECIES_DODUO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_DODRIO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SEEL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DEWGONG] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GRIMER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF)), + + [SPECIES_MUK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHELLDER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM08_DIVE)), + + [SPECIES_CLOYSTER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM08_DIVE)), + + [SPECIES_GASTLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH)), + + [SPECIES_HAUNTER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH)), + + [SPECIES_GENGAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ONIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DROWZEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_HYPNO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KRABBY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_KINGLER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_VOLTORB] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ELECTRODE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_EXEGGCUTE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_EXEGGUTOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_CUBONE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAROWAK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONLEE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONCHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LICKITUNG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KOFFING] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_WEEZING] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_RHYHORN] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RHYDON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHANSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TANGELA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KANGASKHAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HORSEA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEADRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOLDEEN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEAKING] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_STARYU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_STARMIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MR_MIME] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_SCYTHER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_JYNX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_ELECTABUZZ] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGMAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PINSIR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TAUROS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), [SPECIES_MAGIKARP] = TMHM_LEARNSET(0), - [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), + [SPECIES_GYARADOS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LAPRAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), [SPECIES_DITTO] = TMHM_LEARNSET(0), - [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT)), - - [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT)), - - [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL)), - - [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH)), - - [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL)), - - [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL)), - - [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MEW] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT)), - - [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF)), - - [SPECIES_FURRET] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_PICHU] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NATU] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_XATU] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MARILL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_YANMA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), + [SPECIES_EEVEE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_VAPOREON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_JOLTEON] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_FLAREON] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT)), + + [SPECIES_PORYGON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_OMANYTE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_OMASTAR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_KABUTO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL)), + + [SPECIES_KABUTOPS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_AERODACTYL] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNORLAX] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH)), + + [SPECIES_ARTICUNO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZAPDOS] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MOLTRES] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DRATINI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_DRAGONAIR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_DRAGONITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MEWTWO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM08_BULK_UP) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CHIKORITA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_BAYLEEF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEGANIUM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CYNDAQUIL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT)), + + [SPECIES_QUILAVA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TYPHLOSION] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TOTODILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CROCONAW] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_FERALIGATR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SENTRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF)), + + [SPECIES_FURRET] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOOTHOOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_NOCTOWL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_LEDYBA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LEDIAN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_SPINARAK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ARIADOS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_CROBAT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH) + | TMHM(HM02_FLY)), + + [SPECIES_CHINCHOU] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LANTURN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_PICHU] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_CLEFFA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_IGGLYBUFF] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_TOGEPI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TOGETIC] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_XATU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM02_FLY) + | TMHM(HM05_FLASH)), + + [SPECIES_MAREEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_FLAAFFY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_AMPHAROS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BELLOSSOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_MARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_AZUMARILL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SUDOWOODO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_POLITOED] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HOPPIP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_SKIPLOOM] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_JUMPLUFF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_AIPOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SUNKERN] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SUNFLORA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_YANMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM05_FLASH)), + + [SPECIES_WOOPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_QUAGSIRE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ESPEON] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_UMBREON] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_MURKROW] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(TM49_SNATCH) + | TMHM(HM02_FLY)), + + [SPECIES_SLOWKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM08_DIVE)), + + [SPECIES_MISDREAVUS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), [SPECIES_UNOWN] = TMHM_LEARNSET(0), [SPECIES_WOBBUFFET] = TMHM_LEARNSET(0), - [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PINECO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_URSARING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), + [SPECIES_GIRAFARIG] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PINECO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_FORRETRESS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DUNSPARCE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GLIGAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_STEELIX] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNUBBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GRANBULL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_QWILFISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SCIZOR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHUCKLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HERACROSS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SNEASEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TEDDIURSA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_URSARING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SLUGMA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGCARGO] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWINUB] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PILOSWINE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CORSOLA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REMORAID] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_OCTILLERY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_DELIBIRD] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM02_FLY)), + + [SPECIES_MANTINE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SKARMORY] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOUR] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HOUNDOOM] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KINGDRA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_PHANPY] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_DONPHAN] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PORYGON2] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_STANTLER] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), [SPECIES_SMEARGLE] = TMHM_LEARNSET(0), - [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), + [SPECIES_TYROGUE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HITMONTOP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SMOOCHUM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_ELEKID] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAGBY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MILTANK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BLISSEY] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAIKOU] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ENTEI] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SUICUNE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LARVITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_PUPITAR] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TYRANITAR] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LUGIA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HO_OH] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM47_STEEL_WING) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CELEBI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), [SPECIES_OLD_UNOWN_B] = TMHM_LEARNSET(0), @@ -6105,3285 +6108,3285 @@ const u32 gTMHMLearnsets[][2] = [SPECIES_OLD_UNOWN_Z] = TMHM_LEARNSET(0), - [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), + [SPECIES_TREECKO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GROVYLE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SCEPTILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TORCHIC] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_COMBUSKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BLAZIKEN] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MUDKIP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MARSHTOMP] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SWAMPERT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_POOCHYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MIGHTYENA] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZIGZAGOON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LINOONE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), [SPECIES_WURMPLE] = TMHM_LEARNSET(0), [SPECIES_SILCOON] = TMHM_LEARNSET(0), - [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), + [SPECIES_BEAUTIFLY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), [SPECIES_CASCOON] = TMHM_LEARNSET(0), - [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF)), - - [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL)), - - [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL)), - - [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MINUN] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY)), - - [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM06_ROCK_SMASH)), + [SPECIES_DUSTOX] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LOTAD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH)), + + [SPECIES_LOMBRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LUDICOLO] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEEDOT] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NUZLEAF] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHIFTRY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NINCADA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_NINJASK] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SHEDINJA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM46_THIEF) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_TAILLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SWELLOW] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_SHROOMISH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BRELOOM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPINDA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WINGULL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_PELIPPER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF)), + + [SPECIES_SURSKIT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_MASQUERAIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_WAILMER] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WAILORD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SKITTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_DELCATTY] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KECLEON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BALTOY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_CLAYDOL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_NOSEPASS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TORKOAL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SABLEYE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_BARBOACH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WHISCASH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LUVDISC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CORPHISH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL)), + + [SPECIES_CRAWDAUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_FEEBAS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_MILOTIC] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CARVANHA] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SHARPEDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_TRAPINCH] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VIBRAVA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_FLYGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MAKUHITA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_HARIYAMA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ELECTRIKE] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_MANECTRIC] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_NUMEL] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CAMERUPT] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SPHEAL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_SEALEO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_WALREIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_CACNEA] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_CACTURNE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH)), + + [SPECIES_SNORUNT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_GLALIE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_LUNATONE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_SOLROCK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM50_OVERHEAT) + | TMHM(HM05_FLASH)), + + [SPECIES_AZURILL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL)), + + [SPECIES_SPOINK] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_GRUMPIG] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_PLUSLE] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_MINUN] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM05_FLASH)), + + [SPECIES_MAWILE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEDITITE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_MEDICHAM] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWABLU] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY)), + + [SPECIES_ALTARIA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM47_STEEL_WING) + | TMHM(HM02_FLY) + | TMHM(HM06_ROCK_SMASH)), [SPECIES_WYNAUT] = TMHM_LEARNSET(0), - [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT)), - - [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_ARON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT)), - - [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM09_BULLET_SEED) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM19_GIGA_DRAIN) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RALTS] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM46_THIEF) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_BAGON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), + [SPECIES_DUSKULL] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_DUSCLOPS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ROSELIA] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM05_FLASH)), + + [SPECIES_SLAKOTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_VIGOROTH] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SLAKING] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_GULPIN] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SWALOT] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_TROPIUS] = TMHM_LEARNSET(TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_WHISMUR] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_LOUDRED] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_EXPLOUD] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM50_OVERHEAT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CLAMPERL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_HUNTAIL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM49_SNATCH) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GOREBYSS] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ABSOL] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHUPPET] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BANETTE] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_SEVIPER] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM49_SNATCH) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ZANGOOSE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RELICANTH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM03_SURF) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_ARON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_LAIRON] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_AGGRON] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CASTFORM] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_VOLBEAT] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_ILLUMISE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(HM05_FLASH)), + + [SPECIES_LILEEP] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT)), + + [SPECIES_CRADILY] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM09_BULLET_SEED) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM19_GIGA_DRAIN) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ANORITH] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_ARMALDO] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RALTS] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_KIRLIA] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_GARDEVOIR] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM46_THIEF) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), + + [SPECIES_BAGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SHELGON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_SALAMENCE] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), [SPECIES_BELDUM] = TMHM_LEARNSET(0), - [SPECIES_METANG] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM36_SLUDGE_BOMB) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_REGICE] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM07_HAIL) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM28_DIG) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM08_BULK_UP) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM14_BLIZZARD) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM23_IRON_TAIL) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM35_FLAMETHROWER) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM38_FIRE_BLAST) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM50_OVERHEAT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM06_ROCK_SMASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM_BIT(TM02_DRAGON_CLAW) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM05_ROAR) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM26_EARTHQUAKE) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM47_STEEL_WING) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM02_FLY) - | TMHM_BIT(HM03_SURF) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM07_WATERFALL) - | TMHM_BIT(HM08_DIVE)), - - [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM37_SANDSTORM) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(HM05_FLASH)), - - [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM_BIT(TM01_FOCUS_PUNCH) - | TMHM_BIT(TM03_WATER_PULSE) - | TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM13_ICE_BEAM) - | TMHM_BIT(TM15_HYPER_BEAM) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM22_SOLARBEAM) - | TMHM_BIT(TM24_THUNDERBOLT) - | TMHM_BIT(TM25_THUNDER) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM31_BRICK_BREAK) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM39_ROCK_TOMB) - | TMHM_BIT(TM40_AERIAL_ACE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM01_CUT) - | TMHM_BIT(HM04_STRENGTH) - | TMHM_BIT(HM05_FLASH) - | TMHM_BIT(HM06_ROCK_SMASH)), - - [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM_BIT(TM04_CALM_MIND) - | TMHM_BIT(TM06_TOXIC) - | TMHM_BIT(TM10_HIDDEN_POWER) - | TMHM_BIT(TM11_SUNNY_DAY) - | TMHM_BIT(TM12_TAUNT) - | TMHM_BIT(TM16_LIGHT_SCREEN) - | TMHM_BIT(TM17_PROTECT) - | TMHM_BIT(TM18_RAIN_DANCE) - | TMHM_BIT(TM20_SAFEGUARD) - | TMHM_BIT(TM21_FRUSTRATION) - | TMHM_BIT(TM27_RETURN) - | TMHM_BIT(TM29_PSYCHIC) - | TMHM_BIT(TM30_SHADOW_BALL) - | TMHM_BIT(TM32_DOUBLE_TEAM) - | TMHM_BIT(TM33_REFLECT) - | TMHM_BIT(TM34_SHOCK_WAVE) - | TMHM_BIT(TM41_TORMENT) - | TMHM_BIT(TM42_FACADE) - | TMHM_BIT(TM43_SECRET_POWER) - | TMHM_BIT(TM44_REST) - | TMHM_BIT(TM45_ATTRACT) - | TMHM_BIT(TM48_SKILL_SWAP) - | TMHM_BIT(TM49_SNATCH) - | TMHM_BIT(HM05_FLASH)), + [SPECIES_METANG] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_METAGROSS] = TMHM_LEARNSET(TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM36_SLUDGE_BOMB) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGIROCK] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGICE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_REGISTEEL] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_KYOGRE] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM07_HAIL) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_GROUDON] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM28_DIG) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM50_OVERHEAT) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_RAYQUAZA] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM08_BULK_UP) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM14_BLIZZARD) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM23_IRON_TAIL) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM35_FLAMETHROWER) + | TMHM(TM37_SANDSTORM) + | TMHM(TM38_FIRE_BLAST) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM50_OVERHEAT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM04_STRENGTH) + | TMHM(HM06_ROCK_SMASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LATIAS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_LATIOS] = TMHM_LEARNSET(TMHM(TM02_DRAGON_CLAW) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM05_ROAR) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM26_EARTHQUAKE) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM47_STEEL_WING) + | TMHM(HM01_CUT) + | TMHM(HM02_FLY) + | TMHM(HM03_SURF) + | TMHM(HM05_FLASH) + | TMHM(HM07_WATERFALL) + | TMHM(HM08_DIVE)), + + [SPECIES_JIRACHI] = TMHM_LEARNSET(TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM37_SANDSTORM) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(HM05_FLASH)), + + [SPECIES_DEOXYS] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH) + | TMHM(TM03_WATER_PULSE) + | TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM13_ICE_BEAM) + | TMHM(TM15_HYPER_BEAM) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM22_SOLARBEAM) + | TMHM(TM24_THUNDERBOLT) + | TMHM(TM25_THUNDER) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM31_BRICK_BREAK) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM39_ROCK_TOMB) + | TMHM(TM40_AERIAL_ACE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM01_CUT) + | TMHM(HM04_STRENGTH) + | TMHM(HM05_FLASH) + | TMHM(HM06_ROCK_SMASH)), + + [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND) + | TMHM(TM06_TOXIC) + | TMHM(TM10_HIDDEN_POWER) + | TMHM(TM11_SUNNY_DAY) + | TMHM(TM12_TAUNT) + | TMHM(TM16_LIGHT_SCREEN) + | TMHM(TM17_PROTECT) + | TMHM(TM18_RAIN_DANCE) + | TMHM(TM20_SAFEGUARD) + | TMHM(TM21_FRUSTRATION) + | TMHM(TM27_RETURN) + | TMHM(TM29_PSYCHIC) + | TMHM(TM30_SHADOW_BALL) + | TMHM(TM32_DOUBLE_TEAM) + | TMHM(TM33_REFLECT) + | TMHM(TM34_SHOCK_WAVE) + | TMHM(TM41_TORMENT) + | TMHM(TM42_FACADE) + | TMHM(TM43_SECRET_POWER) + | TMHM(TM44_REST) + | TMHM(TM45_ATTRACT) + | TMHM(TM48_SKILL_SWAP) + | TMHM(TM49_SNATCH) + | TMHM(HM05_FLASH)), }; -- cgit v1.2.3 From c1ac08ddf3d48c4db93d240f2e1518d6b4d6853b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 14:10:29 -0600 Subject: fix German build --- src/data/items_de.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/data/items_de.h b/src/data/items_de.h index de4438622..92304e8b0 100644 --- a/src/data/items_de.h +++ b/src/data/items_de.h @@ -5426,7 +5426,7 @@ const struct Item gItems[] = }, { .name = _("VM01"), - .itemId = ITEM_HM01, + .itemId = ITEM_HM01_CUT, .price = 0, .holdEffect = HOLD_EFFECT_NONE, .holdEffectParam = 0, -- cgit v1.2.3 From de9ba8e00dc91a8c98ebb6a321101d3d4fd79877 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 16:06:59 -0500 Subject: fix BuyMenuDrawGraphics --- src/field/shop.c | 65 ++++++++++++++++++++++++-------------------------------- 1 file changed, 28 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/field/shop.c b/src/field/shop.c index 1dc6ba0cd..6ca515848 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -236,48 +236,41 @@ void sub_80B3094(void) void sub_80B30AC(void) { - void *addr; - void *addr2; - void *addr3; - u16 *tempArr; - u16 *tempArr2; - u16 *tempArr3; - LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - - // temp vars needed to match for some dumb reason - tempArr = gBGTilemapBuffers[1]; - addr = (void *)(VRAM + 0xE800); - DmaCopy16(3, tempArr, addr, 0x800); - tempArr2 = gBGTilemapBuffers[2]; - addr2 = (void *)(VRAM + 0xE000); - DmaCopy16(3, tempArr2, addr2, 0x800); - tempArr3 = gBGTilemapBuffers[3]; - addr3 = (void *)(VRAM + 0xF000); - DmaCopy16(3, tempArr3, addr3, 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[1], (void *)(VRAM + 0xE800), 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0xE000), 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[3], (void *)(VRAM + 0xF000), 0x800); } -// this function is fugly. pls fix void BuyMenuDrawGraphics(void) { - void *addr; - register u16 zero2 asm("r5"); - sub_80F9438(); ScanlineEffect_Stop(); - REG_BG1HOFS = (zero2 = 0); - REG_BG1VOFS = zero2; - REG_BG2HOFS = zero2; - REG_BG2VOFS = zero2; - REG_BG3HOFS = zero2; - REG_BG3VOFS = zero2; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; gPaletteFade.bufferTransferDisabled = 1; - addr = (void*)OAM; - { - register const u32 zero asm("r6") = 0; - DmaFill32(3, zero, addr, OAM_SIZE); + + /* + THEORY: This seemingly useless loop is required in order to match this + function without hacks. The reason is because it alters the 0 optimization + of a later assignment into using 2 different 0s instead of the same register. + It is speculated that at some point Game Freak insert an artificial + breakpoint here in order to look at the contents of OAM before it is cleared, + possibly because a programmer made a mistake in shop.c which corrupted its + contents. There may have been a macro here which at one point idled on the + while(1) but was changed to 0 for release due to a define somewhere. A + while(0) also matches, but it is more correct to use do {} while(0) as it + was a fix to prevent compiler warnings on older compilers. + */ + do {} while(0); + + DmaFill32Defvars(3, 0, (void*)OAM, OAM_SIZE); LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); LZDecompressWram(gBuyMenuFrame_Tilemap, ewram18000_2); LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); @@ -288,8 +281,8 @@ void BuyMenuDrawGraphics(void) Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); InitMenuWindow(&gWindowTemplate_81E6DFC); BuyMenuDrawMapGraphics(); - gMartInfo.cursor = zero; - gMartInfo.choicesAbove = zero2; + gMartInfo.cursor = 0; + gMartInfo.choicesAbove = 0; Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); @@ -297,12 +290,10 @@ void BuyMenuDrawGraphics(void) sub_80B3270(); CreateTask(sub_80B40E8, 0x8); sub_80B3240(); - asm("":::"r4"); // what?? - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gPaletteFade.bufferTransferDisabled = 0; SetVBlankCallback(sub_80B30AC); SetMainCallback2(sub_80B3094); - } } void sub_80B3240(void) -- cgit v1.2.3 From 98be8bf60937cbb7f733e0e2308619cc7168e187 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 16:09:10 -0500 Subject: fix PrintFlyTargetName --- src/field/region_map.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/field/region_map.c b/src/field/region_map.c index a098eb73d..30d0d580c 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1608,8 +1608,8 @@ static void PrintFlyTargetName(void) { if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) { - u16 i = 0; - int zero; + u16 i; + bool32 drawFrameDisabled = FALSE; for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) { @@ -1627,9 +1627,8 @@ static void PrintFlyTargetName(void) break; } } - // This check is always true, but somehow the compiler still performed it. - asm("mov %0, #0\n":"=r"(zero)); // zero = 0 - if (zero == 0) + + if (!drawFrameDisabled) { Menu_DrawStdWindowFrame(16, 16, 29, 19); Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17); -- cgit v1.2.3 From b05f8f4dc492a5e60dfaf8b01220bc4e1de2a675 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 14 Jan 2018 16:12:08 -0500 Subject: tabs --- src/field/region_map.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/region_map.c b/src/field/region_map.c index 30d0d580c..1378820fe 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1609,7 +1609,7 @@ static void PrintFlyTargetName(void) if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) { u16 i; - bool32 drawFrameDisabled = FALSE; + bool32 drawFrameDisabled = FALSE; for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) { -- cgit v1.2.3 From e79b3ce9ff39fa48928e8adf84dab542e78c5d64 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 17:24:28 -0500 Subject: Fix file modes --- src/battle/anim/alert.c | 0 src/battle/anim/angel.c | 0 src/battle/anim/angel_kiss.c | 0 src/battle/anim/anger.c | 0 src/battle/anim/blow_kiss.c | 0 src/battle/anim/bottle.c | 0 src/battle/anim/brace.c | 0 src/battle/anim/breath.c | 0 src/battle/anim/bullet.c | 0 src/battle/anim/copy_orb.c | 0 src/battle/anim/cube.c | 0 src/battle/anim/curtain.c | 0 src/battle/anim/cutter.c | 0 src/battle/anim/cyclone.c | 0 src/battle/anim/dark.c | 0 src/battle/anim/dragon.c | 0 src/battle/anim/draw.c | 0 src/battle/anim/drum.c | 0 src/battle/anim/egg.c | 0 src/battle/anim/espeed.c | 0 src/battle/anim/evasion.c | 0 src/battle/anim/fang.c | 0 src/battle/anim/flash.c | 0 src/battle/anim/flying_hearts.c | 0 src/battle/anim/flying_path.c | 0 src/battle/anim/flying_petals.c | 0 src/battle/anim/glitter.c | 0 src/battle/anim/glow.c | 0 src/battle/anim/grip.c | 0 src/battle/anim/grow.c | 0 src/battle/anim/guillotine.c | 0 src/battle/anim/heal.c | 0 src/battle/anim/heart_1.c | 0 src/battle/anim/homing.c | 0 src/battle/anim/hop.c | 0 src/battle/anim/hop_2.c | 0 src/battle/anim/kiss_fountain.c | 0 src/battle/anim/leaf.c | 0 src/battle/anim/love_bg.c | 0 src/battle/anim/lunge_1.c | 0 src/battle/anim/lunge_2.c | 0 src/battle/anim/money.c | 0 src/battle/anim/moon.c | 0 src/battle/anim/note_rain.c | 0 src/battle/anim/note_scatter.c | 0 src/battle/anim/note_scatter_2.c | 0 src/battle/anim/note_wave.c | 0 src/battle/anim/orbit.c | 0 src/battle/anim/orbit_fast.c | 0 src/battle/anim/orbit_scatter.c | 0 src/battle/anim/orbs.c | 0 src/battle/anim/osmose.c | 0 src/battle/anim/perceive.c | 0 src/battle/anim/powder.c | 0 src/battle/anim/ring.c | 0 src/battle/anim/roots.c | 0 src/battle/anim/scan.c | 0 src/battle/anim/scary_face.c | 0 src/battle/anim/seed.c | 0 src/battle/anim/shadow_enlarge.c | 0 src/battle/anim/shadow_minimize.c | 0 src/battle/anim/shield.c | 0 src/battle/anim/shimmer.c | 0 src/battle/anim/silhouette.c | 0 src/battle/anim/slash.c | 0 src/battle/anim/sleep.c | 0 src/battle/anim/slice.c | 0 src/battle/anim/smoke.c | 0 src/battle/anim/sonic.c | 0 src/battle/anim/sonic_task.c | 0 src/battle/anim/spin_finger.c | 0 src/battle/anim/spit.c | 0 src/battle/anim/splash.c | 0 src/battle/anim/startle.c | 0 src/battle/anim/strike.c | 0 src/battle/anim/switch.c | 0 src/battle/anim/sword.c | 0 src/battle/anim/taunt_finger.c | 0 src/battle/anim/tendrils.c | 0 src/battle/anim/thought.c | 0 src/battle/anim/thrashing.c | 0 src/battle/anim/tile_in.c | 0 src/battle/anim/tile_out.c | 0 src/battle/anim/twinkle.c | 0 src/battle/anim/unused_1.c | 0 src/battle/anim/unused_2.c | 0 src/battle/anim/unused_3.c | 0 src/battle/anim/unused_4.c | 0 src/battle/anim/unused_5.c | 0 src/battle/anim/unused_6.c | 0 src/battle/anim/unused_7.c | 0 src/battle/anim/unused_8.c | 0 src/battle/anim/unused_9.c | 0 src/battle/anim/wave_finger.c | 0 src/battle/anim/whip.c | 0 src/battle/anim/withdraw.c | 0 src/data/battle_strings_de.h | 0 src/data/battle_strings_en.h | 0 src/data/credits_de.h | 0 src/data/credits_en.h | 0 src/libs/libisagbprn.c | 0 src/scene/intro_credits_graphics.c | 0 102 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/battle/anim/alert.c mode change 100755 => 100644 src/battle/anim/angel.c mode change 100755 => 100644 src/battle/anim/angel_kiss.c mode change 100755 => 100644 src/battle/anim/anger.c mode change 100755 => 100644 src/battle/anim/blow_kiss.c mode change 100755 => 100644 src/battle/anim/bottle.c mode change 100755 => 100644 src/battle/anim/brace.c mode change 100755 => 100644 src/battle/anim/breath.c mode change 100755 => 100644 src/battle/anim/bullet.c mode change 100755 => 100644 src/battle/anim/copy_orb.c mode change 100755 => 100644 src/battle/anim/cube.c mode change 100755 => 100644 src/battle/anim/curtain.c mode change 100755 => 100644 src/battle/anim/cutter.c mode change 100755 => 100644 src/battle/anim/cyclone.c mode change 100755 => 100644 src/battle/anim/dark.c mode change 100755 => 100644 src/battle/anim/dragon.c mode change 100755 => 100644 src/battle/anim/draw.c mode change 100755 => 100644 src/battle/anim/drum.c mode change 100755 => 100644 src/battle/anim/egg.c mode change 100755 => 100644 src/battle/anim/espeed.c mode change 100755 => 100644 src/battle/anim/evasion.c mode change 100755 => 100644 src/battle/anim/fang.c mode change 100755 => 100644 src/battle/anim/flash.c mode change 100755 => 100644 src/battle/anim/flying_hearts.c mode change 100755 => 100644 src/battle/anim/flying_path.c mode change 100755 => 100644 src/battle/anim/flying_petals.c mode change 100755 => 100644 src/battle/anim/glitter.c mode change 100755 => 100644 src/battle/anim/glow.c mode change 100755 => 100644 src/battle/anim/grip.c mode change 100755 => 100644 src/battle/anim/grow.c mode change 100755 => 100644 src/battle/anim/guillotine.c mode change 100755 => 100644 src/battle/anim/heal.c mode change 100755 => 100644 src/battle/anim/heart_1.c mode change 100755 => 100644 src/battle/anim/homing.c mode change 100755 => 100644 src/battle/anim/hop.c mode change 100755 => 100644 src/battle/anim/hop_2.c mode change 100755 => 100644 src/battle/anim/kiss_fountain.c mode change 100755 => 100644 src/battle/anim/leaf.c mode change 100755 => 100644 src/battle/anim/love_bg.c mode change 100755 => 100644 src/battle/anim/lunge_1.c mode change 100755 => 100644 src/battle/anim/lunge_2.c mode change 100755 => 100644 src/battle/anim/money.c mode change 100755 => 100644 src/battle/anim/moon.c mode change 100755 => 100644 src/battle/anim/note_rain.c mode change 100755 => 100644 src/battle/anim/note_scatter.c mode change 100755 => 100644 src/battle/anim/note_scatter_2.c mode change 100755 => 100644 src/battle/anim/note_wave.c mode change 100755 => 100644 src/battle/anim/orbit.c mode change 100755 => 100644 src/battle/anim/orbit_fast.c mode change 100755 => 100644 src/battle/anim/orbit_scatter.c mode change 100755 => 100644 src/battle/anim/orbs.c mode change 100755 => 100644 src/battle/anim/osmose.c mode change 100755 => 100644 src/battle/anim/perceive.c mode change 100755 => 100644 src/battle/anim/powder.c mode change 100755 => 100644 src/battle/anim/ring.c mode change 100755 => 100644 src/battle/anim/roots.c mode change 100755 => 100644 src/battle/anim/scan.c mode change 100755 => 100644 src/battle/anim/scary_face.c mode change 100755 => 100644 src/battle/anim/seed.c mode change 100755 => 100644 src/battle/anim/shadow_enlarge.c mode change 100755 => 100644 src/battle/anim/shadow_minimize.c mode change 100755 => 100644 src/battle/anim/shield.c mode change 100755 => 100644 src/battle/anim/shimmer.c mode change 100755 => 100644 src/battle/anim/silhouette.c mode change 100755 => 100644 src/battle/anim/slash.c mode change 100755 => 100644 src/battle/anim/sleep.c mode change 100755 => 100644 src/battle/anim/slice.c mode change 100755 => 100644 src/battle/anim/smoke.c mode change 100755 => 100644 src/battle/anim/sonic.c mode change 100755 => 100644 src/battle/anim/sonic_task.c mode change 100755 => 100644 src/battle/anim/spin_finger.c mode change 100755 => 100644 src/battle/anim/spit.c mode change 100755 => 100644 src/battle/anim/splash.c mode change 100755 => 100644 src/battle/anim/startle.c mode change 100755 => 100644 src/battle/anim/strike.c mode change 100755 => 100644 src/battle/anim/switch.c mode change 100755 => 100644 src/battle/anim/sword.c mode change 100755 => 100644 src/battle/anim/taunt_finger.c mode change 100755 => 100644 src/battle/anim/tendrils.c mode change 100755 => 100644 src/battle/anim/thought.c mode change 100755 => 100644 src/battle/anim/thrashing.c mode change 100755 => 100644 src/battle/anim/tile_in.c mode change 100755 => 100644 src/battle/anim/tile_out.c mode change 100755 => 100644 src/battle/anim/twinkle.c mode change 100755 => 100644 src/battle/anim/unused_1.c mode change 100755 => 100644 src/battle/anim/unused_2.c mode change 100755 => 100644 src/battle/anim/unused_3.c mode change 100755 => 100644 src/battle/anim/unused_4.c mode change 100755 => 100644 src/battle/anim/unused_5.c mode change 100755 => 100644 src/battle/anim/unused_6.c mode change 100755 => 100644 src/battle/anim/unused_7.c mode change 100755 => 100644 src/battle/anim/unused_8.c mode change 100755 => 100644 src/battle/anim/unused_9.c mode change 100755 => 100644 src/battle/anim/wave_finger.c mode change 100755 => 100644 src/battle/anim/whip.c mode change 100755 => 100644 src/battle/anim/withdraw.c mode change 100755 => 100644 src/data/battle_strings_de.h mode change 100755 => 100644 src/data/battle_strings_en.h mode change 100755 => 100644 src/data/credits_de.h mode change 100755 => 100644 src/data/credits_en.h mode change 100755 => 100644 src/libs/libisagbprn.c mode change 100755 => 100644 src/scene/intro_credits_graphics.c (limited to 'src') diff --git a/src/battle/anim/alert.c b/src/battle/anim/alert.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/angel.c b/src/battle/anim/angel.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/angel_kiss.c b/src/battle/anim/angel_kiss.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/anger.c b/src/battle/anim/anger.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/bottle.c b/src/battle/anim/bottle.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/brace.c b/src/battle/anim/brace.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/breath.c b/src/battle/anim/breath.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/copy_orb.c b/src/battle/anim/copy_orb.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/cube.c b/src/battle/anim/cube.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/curtain.c b/src/battle/anim/curtain.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/cutter.c b/src/battle/anim/cutter.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/cyclone.c b/src/battle/anim/cyclone.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/drum.c b/src/battle/anim/drum.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/egg.c b/src/battle/anim/egg.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/espeed.c b/src/battle/anim/espeed.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/evasion.c b/src/battle/anim/evasion.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/fang.c b/src/battle/anim/fang.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/flash.c b/src/battle/anim/flash.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/flying_hearts.c b/src/battle/anim/flying_hearts.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/flying_petals.c b/src/battle/anim/flying_petals.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/glow.c b/src/battle/anim/glow.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/grow.c b/src/battle/anim/grow.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/heal.c b/src/battle/anim/heal.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/heart_1.c b/src/battle/anim/heart_1.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/hop.c b/src/battle/anim/hop.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/hop_2.c b/src/battle/anim/hop_2.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/kiss_fountain.c b/src/battle/anim/kiss_fountain.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/money.c b/src/battle/anim/money.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/moon.c b/src/battle/anim/moon.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/note_scatter.c b/src/battle/anim/note_scatter.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/note_scatter_2.c b/src/battle/anim/note_scatter_2.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/note_wave.c b/src/battle/anim/note_wave.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/orbit_fast.c b/src/battle/anim/orbit_fast.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/orbit_scatter.c b/src/battle/anim/orbit_scatter.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/osmose.c b/src/battle/anim/osmose.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/perceive.c b/src/battle/anim/perceive.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/roots.c b/src/battle/anim/roots.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/shadow_enlarge.c b/src/battle/anim/shadow_enlarge.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/shield.c b/src/battle/anim/shield.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/shimmer.c b/src/battle/anim/shimmer.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/silhouette.c b/src/battle/anim/silhouette.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/slash.c b/src/battle/anim/slash.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/sleep.c b/src/battle/anim/sleep.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/smoke.c b/src/battle/anim/smoke.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/sonic_task.c b/src/battle/anim/sonic_task.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/spin_finger.c b/src/battle/anim/spin_finger.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/spit.c b/src/battle/anim/spit.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/splash.c b/src/battle/anim/splash.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/startle.c b/src/battle/anim/startle.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/strike.c b/src/battle/anim/strike.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/switch.c b/src/battle/anim/switch.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/taunt_finger.c b/src/battle/anim/taunt_finger.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/tendrils.c b/src/battle/anim/tendrils.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/thought.c b/src/battle/anim/thought.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/thrashing.c b/src/battle/anim/thrashing.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/tile_in.c b/src/battle/anim/tile_in.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/twinkle.c b/src/battle/anim/twinkle.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_1.c b/src/battle/anim/unused_1.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_2.c b/src/battle/anim/unused_2.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_3.c b/src/battle/anim/unused_3.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_5.c b/src/battle/anim/unused_5.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_6.c b/src/battle/anim/unused_6.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/wave_finger.c b/src/battle/anim/wave_finger.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/whip.c b/src/battle/anim/whip.c old mode 100755 new mode 100644 diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c old mode 100755 new mode 100644 diff --git a/src/data/battle_strings_de.h b/src/data/battle_strings_de.h old mode 100755 new mode 100644 diff --git a/src/data/battle_strings_en.h b/src/data/battle_strings_en.h old mode 100755 new mode 100644 diff --git a/src/data/credits_de.h b/src/data/credits_de.h old mode 100755 new mode 100644 diff --git a/src/data/credits_en.h b/src/data/credits_en.h old mode 100755 new mode 100644 diff --git a/src/libs/libisagbprn.c b/src/libs/libisagbprn.c old mode 100755 new mode 100644 diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c old mode 100755 new mode 100644 -- cgit v1.2.3 From 06adc5c23a20c1bcfaa809878475b1704e8171ad Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 17:25:37 -0500 Subject: Fix file modes (revo pls) --- src/contest_ai.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/contest_ai.c (limited to 'src') diff --git a/src/contest_ai.c b/src/contest_ai.c old mode 100755 new mode 100644 -- cgit v1.2.3 From 7e3495747035d13f72ba869195b21f4e61ee283a Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 16:29:27 -0600 Subject: add comment about NULL pointer dereference --- src/field/fieldmap.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/field/fieldmap.c b/src/field/fieldmap.c index 7a31ae720..7383bb174 100644 --- a/src/field/fieldmap.c +++ b/src/field/fieldmap.c @@ -86,18 +86,20 @@ void map_copy_with_padding(u16 *map, u16 width, u16 height) void sub_80560AC(struct MapHeader *mapHeader) { + // BUG: This results in a null pointer dereference when mapHeader->connections + // is NULL, causing count to be assigned a garbage value. This garbage value + // just so happens to have the most significant bit set, so it is treated as + // negative and the loop below thankfully never executes in this scenario. + int count = mapHeader->connections->count; + struct MapConnection *connection = mapHeader->connections->connections; int i; - struct MapConnection *connection; - struct MapHeader *cMap; - u32 offset; - int count; - count = mapHeader->connections->count; - connection = mapHeader->connections->connections; + gUnknown_0202E850 = sDummyConnectionFlags; for (i = 0; i < count; i++, connection++) { - cMap = mapconnection_get_mapheader(connection); - offset = connection->offset; + struct MapHeader *cMap = mapconnection_get_mapheader(connection); + u32 offset = connection->offset; + switch (connection->direction) { case CONNECTION_SOUTH: -- cgit v1.2.3 From 20de25004946139a601cd2965afc2e9645a56b96 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 16:35:27 -0600 Subject: write sub_807D770 better --- src/field/field_weather.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index c954242a1..48d7da7f7 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -843,7 +843,7 @@ void fade_screen(u8 a, u8 delay) bool8 sub_807D770(void) { - return gWeatherPtr->unknown_6C6 ^ 1 ? TRUE : FALSE; + return (gWeatherPtr->unknown_6C6 != 1); } void sub_807D78C(u8 a) -- cgit v1.2.3 From e8daaa0f3ef2d97f7afe378494f33037f5bc8ee9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 18:21:22 -0500 Subject: sub_809A3D0 --- src/pokemon/pokemon_storage_system_4.c | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 836a3433f..b0378a254 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -36,11 +36,14 @@ void sub_809A14C(u16 *vdest); void sub_809A23C(u8 boxId); void sub_809A3D0(u8 boxId, s8 a1); void sub_809A598(void); +void sub_809A5E8(struct Sprite *sprite); +void sub_809A61C(struct Sprite *sprite); void sub_809A654(void); s16 sub_809A6D0(u8 width); void sub_809A6DC(void); void sub_809A774(s8 a0); void sub_809A810(void); +void sub_809A8C8(struct Sprite *sprite); // .rodata @@ -810,6 +813,47 @@ void sub_809A23C(u8 boxId) gPokemonStorageSystemPtr->unk_0cca = 0; } +void sub_809A3D0(u8 boxId, s8 a1) +{ + u16 r8; + s16 x; + s16 x2; + u16 i; + struct SpriteSheet spriteSheet = {gPokemonStorageSystemPtr->unk_08ca, 0x200, 3}; + struct SpriteTemplate template = gSpriteTemplate_83BB2B8; + + gPokemonStorageSystemPtr->unk_0cca = gPokemonStorageSystemPtr->unk_0cca ? FALSE : TRUE; + if (gPokemonStorageSystemPtr->unk_0cca == 0) + { + spriteSheet.tag = 3; + r8 = gPokemonStorageSystemPtr->unk_0cec; + } + else + { + spriteSheet.tag = 4; + r8 = gPokemonStorageSystemPtr->unk_0cec; + template.tileTag = 4; + template.paletteTag = 0xdac9; + } + sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]); + LoadSpriteSheet(&spriteSheet); + LoadPalette(gUnknown_083BB0A8[gPokemonStorage.wallpaper[boxId]], r8, 0x04); + x = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId])); + x2 = x + a1 * 192; + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&template, i * 32 + x2, 0x1c, 23); + gPokemonStorageSystemPtr->unk_0cf8[i] = gSprites + spriteId; + gPokemonStorageSystemPtr->unk_0cf8[i]->data[0] = (-a1) * 6; + gPokemonStorageSystemPtr->unk_0cf8[i]->data[1] = i * 32 + x; + gPokemonStorageSystemPtr->unk_0cf8[i]->data[2] = 1; + gPokemonStorageSystemPtr->unk_0cf8[i]->callback = sub_809A5E8; + StartSpriteAnim(gPokemonStorageSystemPtr->unk_0cf8[i], i); + gPokemonStorageSystemPtr->unk_0cf0[i]->data[0] = (-a1) * 6; + gPokemonStorageSystemPtr->unk_0cf0[i]->data[1] = 1; + gPokemonStorageSystemPtr->unk_0cf0[i]->callback = sub_809A61C; + } +} const u16 PCPal_Arrow[] = INCBIN_U16("graphics/pokemon_storage/arrow.gbapal"); const u8 PCGfx_Arrow[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp"); -- cgit v1.2.3 From f33a73ed931885507b1a5f199044d85255078bc2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 18:37:27 -0500 Subject: through sub_809A6D0 --- src/pokemon/pokemon_storage_system_4.c | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index b0378a254..b48b20d5c 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -891,3 +891,49 @@ const struct SpriteTemplate gSpriteTemplate_83BB2B8 = { gDummySpriteAffineAnimTable, SpriteCallbackDummy }; + +void sub_809A598(void) +{ + if (gPokemonStorageSystemPtr->unk_0cca == 0) + FreeSpriteTilesByTag(4); + else + FreeSpriteTilesByTag(3); + gPokemonStorageSystemPtr->unk_0cf0[0] = gPokemonStorageSystemPtr->unk_0cf8[0]; + gPokemonStorageSystemPtr->unk_0cf0[1] = gPokemonStorageSystemPtr->unk_0cf8[1]; +} + +void sub_809A5E8(struct Sprite *sprite) +{ + if (sprite->data[2]) + sprite->data[2]--; + else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1]) + sprite->callback = SpriteCallbackDummy; +} + +void sub_809A61C(struct Sprite *sprite) +{ + if (sprite->data[1]) + sprite->data[1]--; + else + { + sprite->pos1.x += sprite->data[0]; + sprite->data[2] = sprite->pos1.x + sprite->pos2.x; + if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100) + DestroySprite(sprite); + } +} + +void sub_809A654(void) +{ + u8 boxId = get_preferred_box(); + u8 wallpaperId = gPokemonStorage.wallpaper[boxId]; + if (gPokemonStorageSystemPtr->unk_0cca == 0) + CpuCopy16(gUnknown_083BB0A8[wallpaperId], gPlttBufferUnfaded + gPokemonStorageSystemPtr->unk_0cec, 4); + else + CpuCopy16(gUnknown_083BB0A8[wallpaperId], gPlttBufferUnfaded + gPokemonStorageSystemPtr->unk_0cee, 4); +} + +s16 sub_809A6D0(u8 width) +{ + return 0xb0 - width / 2; +} -- cgit v1.2.3 From 5fcd1184d8a189887e44559edb12417717afca5b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 19:10:31 -0500 Subject: through sub_809A860 --- src/pokemon/pokemon_storage_system_2.c | 8 +- src/pokemon/pokemon_storage_system_4.c | 384 +++++++++++++++++++++------------ 2 files changed, 253 insertions(+), 139 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 290fa120a..4657ed158 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -1096,7 +1096,7 @@ void sub_809789C(void) { case -1: case 0: - sub_809A860(1); + sub_809A860(TRUE); sub_8098A5C(); SetPSSCallback(sub_8096C84); break; @@ -1133,7 +1133,7 @@ void sub_8097974(void) switch (gPokemonStorageSystemPtr->unk_0d5e) { case -1: - sub_809A860(1); + sub_809A860(TRUE); sub_8098A5C(); SetPSSCallback(sub_8096C84); break; @@ -1168,7 +1168,7 @@ void sub_8097974(void) case 3: if (!sub_8099E08()) { - sub_809A860(1); + sub_809A860(TRUE); SetPSSCallback(sub_8096C84); } break; @@ -1197,7 +1197,7 @@ void sub_8097A64(void) sub_8096310(); if (gPokemonStorageSystemPtr->unk_08b2 == 201 || gPokemonStorageSystemPtr->unk_08b2 == gPokemonStorage.currentBox) { - sub_809A860(1); + sub_809A860(TRUE); SetPSSCallback(sub_8096C84); } else diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index b48b20d5c..b40cc916c 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -44,107 +44,10 @@ void sub_809A6DC(void); void sub_809A774(s8 a0); void sub_809A810(void); void sub_809A8C8(struct Sprite *sprite); +bool8 sub_809BF2C(void); // .rodata -// .text - -void sub_8099BF8(u8 boxId) -{ - gPokemonStorageSystemPtr->unk_08ba = FALSE; - gPokemonStorageSystemPtr->unk_08b4 = 0; - DmaFill32(3, 0, BG_SCREEN_ADDR(26), 0x1000); - sub_8099EB0(boxId, 0); - sub_809A23C(boxId); - sub_809A6DC(); - SpawnBoxIconSprites(boxId); - REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_TXT512x256; -} - -void sub_8099C70(u8 whichBox) -{ - s8 r4 = sub_8099D90(whichBox); - sub_8099EB0(whichBox, r4); - gPokemonStorageSystemPtr->unk_08b6 = r4 * 6; - gPokemonStorageSystemPtr->unk_08b8 = 0x20; - gPokemonStorageSystemPtr->unk_08bb = whichBox; - gPokemonStorageSystemPtr->unk_08bc = r4 > 0 ? 0 : 5; - gPokemonStorageSystemPtr->unk_08be = r4; - gPokemonStorageSystemPtr->unk_08c0 = r4 > 0 ? 0x108 : 0x38; - gPokemonStorageSystemPtr->unk_08c2 = r4 > 0 ? 0 : 5; - gPokemonStorageSystemPtr->unk_08c4 = r4; - gPokemonStorageSystemPtr->unk_08c6 = 0; - gPokemonStorageSystemPtr->unk_08c8 = 2; - sub_809900C(whichBox, r4); - sub_809A3D0(whichBox, r4); - sub_809A774(r4); -} - -bool8 sub_8099D34(void) -{ - bool8 retVal = sub_80990AC(); - if (gPokemonStorageSystemPtr->unk_08b8 != 0) - { - gPokemonStorageSystemPtr->unk_08b4 += gPokemonStorageSystemPtr->unk_08b6; - gPokemonStorageSystemPtr->unk_08b4 &= 0x1ff; - if (--gPokemonStorageSystemPtr->unk_08b8 == 0) - { - sub_809A598(); - sub_809A810(); - } - return TRUE; - } - return retVal; -} - -s8 sub_8099D90(u8 boxId) -{ - u8 curBox = get_preferred_box(); - u8 i; - - for (i = 0; curBox != boxId; i++) - { - if (++curBox >= 14) - curBox = 0; - } - return i <= 6 ? 1 : -1; -} - -void sub_8099DCC(u8 wallpaperId) -{ - u8 curBox = get_preferred_box(); - gPokemonStorage.wallpaper[curBox] = wallpaperId; - gPokemonStorageSystemPtr->unk_1032 = 0; -} - -bool8 sub_8099E08(void) -{ - switch (gPokemonStorageSystemPtr->unk_1032) - { - case 0: - BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0, 0x10, 0xffff); - gPokemonStorageSystemPtr->unk_1032++; - break; - case 1: - if (!UpdatePaletteFade()) - { - u8 curBox = get_preferred_box(); - sub_8099EB0(curBox, 0); - sub_809A654(); - BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0x10, 0, 0xffff); - gPokemonStorageSystemPtr->unk_1032++; - } - break; - case 2: - if (!UpdatePaletteFade()) - gPokemonStorageSystemPtr->unk_1032++; - break; - case 3: - return FALSE; - } - return TRUE; -} - const u16 gWallpaperPalettes_Forest[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal"); const u16 gWallpaperPalettes_Forest_2[] = INCBIN_U16("graphics/pokemon_storage/forest_frame.gbapal"); const u16 gWallpaperPalettes_Forest_2_3[] = INCBIN_U16("graphics/pokemon_storage/forest_bg.gbapal"); @@ -314,6 +217,171 @@ const struct WallpaperTable gWallpaperTable[] = { {gWallpaperTiles_Plain, 0xFC, gWallpaperTilemap_Plain, gWallpaperPalettes_Plain} // Plain }; +const u16 PCPal_Arrow[] = INCBIN_U16("graphics/pokemon_storage/arrow.gbapal"); +const u8 PCGfx_Arrow[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp"); + +const struct SpriteSheet gUnknown_083BB288 = {PCGfx_Arrow, 0x80, 6}; +const struct SpritePalette gUnknown_083BB290 = {PCPal_Arrow, 0xdacf}; + +const struct OamData gOamData_83BB298 = { + .shape = ST_OAM_H_RECTANGLE, + .size = 2, + .priority = 2 +}; + +const union AnimCmd gSpriteAnim_83BB2A0[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83BB2A8[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83BB2B0[] = { + gSpriteAnim_83BB2A0, + gSpriteAnim_83BB2A8 +}; + +const struct SpriteTemplate gSpriteTemplate_83BB2B8 = { + 3, + 0xdac8, + &gOamData_83BB298, + gSpriteAnimTable_83BB2B0, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const struct OamData gOamData_83BB2D0 = { + .shape = ST_OAM_V_RECTANGLE, + .priority = 2 +}; + +const union AnimCmd gSpriteAnim_83BB2D8[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_83BB2E0[] = { + ANIMCMD_FRAME(2, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83BB2E8[] = { + gSpriteAnim_83BB2D8, + gSpriteAnim_83BB2E0 +}; + +const struct SpriteTemplate gSpriteTemplate_83BB2F0 = { + 6, + 0xdacf, + &gOamData_83BB2D0, + gSpriteAnimTable_83BB2E8, + NULL, + gDummySpriteAffineAnimTable, + sub_809A8C8 +}; + +// .text + +void sub_8099BF8(u8 boxId) +{ + gPokemonStorageSystemPtr->unk_08ba = FALSE; + gPokemonStorageSystemPtr->unk_08b4 = 0; + DmaFill32(3, 0, BG_SCREEN_ADDR(26), 0x1000); + sub_8099EB0(boxId, 0); + sub_809A23C(boxId); + sub_809A6DC(); + SpawnBoxIconSprites(boxId); + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_TXT512x256; +} + +void sub_8099C70(u8 whichBox) +{ + s8 r4 = sub_8099D90(whichBox); + sub_8099EB0(whichBox, r4); + gPokemonStorageSystemPtr->unk_08b6 = r4 * 6; + gPokemonStorageSystemPtr->unk_08b8 = 0x20; + gPokemonStorageSystemPtr->unk_08bb = whichBox; + gPokemonStorageSystemPtr->unk_08bc = r4 > 0 ? 0 : 5; + gPokemonStorageSystemPtr->unk_08be = r4; + gPokemonStorageSystemPtr->unk_08c0 = r4 > 0 ? 0x108 : 0x38; + gPokemonStorageSystemPtr->unk_08c2 = r4 > 0 ? 0 : 5; + gPokemonStorageSystemPtr->unk_08c4 = r4; + gPokemonStorageSystemPtr->unk_08c6 = 0; + gPokemonStorageSystemPtr->unk_08c8 = 2; + sub_809900C(whichBox, r4); + sub_809A3D0(whichBox, r4); + sub_809A774(r4); +} + +bool8 sub_8099D34(void) +{ + bool8 retVal = sub_80990AC(); + if (gPokemonStorageSystemPtr->unk_08b8 != 0) + { + gPokemonStorageSystemPtr->unk_08b4 += gPokemonStorageSystemPtr->unk_08b6; + gPokemonStorageSystemPtr->unk_08b4 &= 0x1ff; + if (--gPokemonStorageSystemPtr->unk_08b8 == 0) + { + sub_809A598(); + sub_809A810(); + } + return TRUE; + } + return retVal; +} + +s8 sub_8099D90(u8 boxId) +{ + u8 curBox = get_preferred_box(); + u8 i; + + for (i = 0; curBox != boxId; i++) + { + if (++curBox >= 14) + curBox = 0; + } + return i <= 6 ? 1 : -1; +} + +void sub_8099DCC(u8 wallpaperId) +{ + u8 curBox = get_preferred_box(); + gPokemonStorage.wallpaper[curBox] = wallpaperId; + gPokemonStorageSystemPtr->unk_1032 = 0; +} + +bool8 sub_8099E08(void) +{ + switch (gPokemonStorageSystemPtr->unk_1032) + { + case 0: + BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0, 0x10, 0xffff); + gPokemonStorageSystemPtr->unk_1032++; + break; + case 1: + if (!UpdatePaletteFade()) + { + u8 curBox = get_preferred_box(); + sub_8099EB0(curBox, 0); + sub_809A654(); + BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0x10, 0, 0xffff); + gPokemonStorageSystemPtr->unk_1032++; + } + break; + case 2: + if (!UpdatePaletteFade()) + gPokemonStorageSystemPtr->unk_1032++; + break; + case 3: + return FALSE; + } + return TRUE; +} + void sub_8099EB0(u8 boxId, s8 a1) { const struct WallpaperTable *wallpaperTable; @@ -855,43 +923,6 @@ void sub_809A3D0(u8 boxId, s8 a1) } } -const u16 PCPal_Arrow[] = INCBIN_U16("graphics/pokemon_storage/arrow.gbapal"); -const u8 PCGfx_Arrow[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp"); - -const struct SpriteSheet gUnknown_083BB288 = {PCGfx_Arrow, 0x80, 6}; -const struct SpritePalette gUnknown_083BB290 = {PCPal_Arrow, 0xdacf}; - -const struct OamData gOamData_83BB298 = { - .shape = ST_OAM_H_RECTANGLE, - .size = 2, - .priority = 2 -}; - -const union AnimCmd gSpriteAnim_83BB2A0[] = { - ANIMCMD_FRAME(0, 5), - ANIMCMD_END -}; - -const union AnimCmd gSpriteAnim_83BB2A8[] = { - ANIMCMD_FRAME(8, 5), - ANIMCMD_END -}; - -const union AnimCmd *const gSpriteAnimTable_83BB2B0[] = { - gSpriteAnim_83BB2A0, - gSpriteAnim_83BB2A8 -}; - -const struct SpriteTemplate gSpriteTemplate_83BB2B8 = { - 3, - 0xdac8, - &gOamData_83BB298, - gSpriteAnimTable_83BB2B0, - NULL, - gDummySpriteAffineAnimTable, - SpriteCallbackDummy -}; - void sub_809A598(void) { if (gPokemonStorageSystemPtr->unk_0cca == 0) @@ -937,3 +968,86 @@ s16 sub_809A6D0(u8 width) { return 0xb0 - width / 2; } + +void sub_809A6DC(void) +{ + u16 i; + + LoadSpriteSheet(&gUnknown_083BB288); + LoadSpritePalette(&gUnknown_083BB290); + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2F0, 0x5c + i * 0x88, 0x1c, 21); + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = gSprites + spriteId; + StartSpriteAnim(sprite, i); + sprite->data[3] = (i == 0) ? -1 : 1; + gPokemonStorageSystemPtr->unk_0d00[i] = sprite; + } + } + if (sub_809BF2C()) + sub_809A860(TRUE); +} + +void sub_809A774(s8 a0) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + gPokemonStorageSystemPtr->unk_0d00[i]->pos2.x = 0; + gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 2; + } + if (a0 < 0) + { + gPokemonStorageSystemPtr->unk_0d00[0]->data[1] = 29; + gPokemonStorageSystemPtr->unk_0d00[1]->data[1] = 5; + gPokemonStorageSystemPtr->unk_0d00[0]->data[2] = 0x48; + gPokemonStorageSystemPtr->unk_0d00[1]->data[2] = 0x48; + } + else + { + gPokemonStorageSystemPtr->unk_0d00[0]->data[1] = 5; + gPokemonStorageSystemPtr->unk_0d00[1]->data[1] = 29; + gPokemonStorageSystemPtr->unk_0d00[0]->data[2] = 0xF8; + gPokemonStorageSystemPtr->unk_0d00[1]->data[2] = 0xF8; + } + gPokemonStorageSystemPtr->unk_0d00[0]->data[7] = 0; + gPokemonStorageSystemPtr->unk_0d00[1]->data[7] = 1; +} + +void sub_809A810(void) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + gPokemonStorageSystemPtr->unk_0d00[i]->pos1.x = 0x88 * i + 0x5c; + gPokemonStorageSystemPtr->unk_0d00[i]->pos2.x = 0; + gPokemonStorageSystemPtr->unk_0d00[i]->invisible = FALSE; + } + sub_809A860(TRUE); +} + +void sub_809A860(bool8 a0) +{ + u16 i; + if (a0) + { + for (i = 0; i < 2; i++) + { + gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 1; + gPokemonStorageSystemPtr->unk_0d00[i]->data[1] = 0; + gPokemonStorageSystemPtr->unk_0d00[i]->data[2] = 0; + gPokemonStorageSystemPtr->unk_0d00[i]->data[4] = 0; + } + } + else + { + for (i = 0; i < 2; i++) + { + gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 0; + } + } +} -- cgit v1.2.3 From d8091a8fadb1089cbc090772bbb2fbcbab633357 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 21:01:43 -0500 Subject: through sub_809AA98 --- src/pokemon/pokemon_storage_system_4.c | 94 +++++++++++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index b40cc916c..63d94b5a1 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -8,6 +8,13 @@ // Static type declarations +struct WallpaperTable { + const u8 *tiles; + u32 size; + const u8 *tileMap; + const u16 *palettes; +}; + // Static RAM declarations EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; @@ -19,13 +26,6 @@ EWRAM_DATA u8 gUnknown_020384E8 = 0; EWRAM_DATA u8 gUnknown_020384E9 = 0; EWRAM_DATA u16 gUnknown_020384EA = 0; -struct WallpaperTable { - const u8 *tiles; - u32 size; - const u8 *tileMap; - const u16 *palettes; -}; - // Static ROM declarations void sub_809900C(u8 boxId, s8 a1); @@ -45,6 +45,9 @@ void sub_809A774(s8 a0); void sub_809A810(void); void sub_809A8C8(struct Sprite *sprite); bool8 sub_809BF2C(void); +void sub_809BF74(void); +void sub_809C028(void); +void sub_809CC04(void); // .rodata @@ -1051,3 +1054,80 @@ void sub_809A860(bool8 a0) } } } + +void sub_809A8C8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.x = 0; + break; + case 1: + if (++sprite->data[1] > 3) + { + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[3]; + if (++sprite->data[2] > 5) + { + sprite->data[2] = 0; + sprite->pos2.x = 0; + } + } + break; + case 2: + sprite->data[0] = 3; + break; + case 3: + sprite->pos1.x -= gPokemonStorageSystemPtr->unk_08b6; + if (sprite->pos1.x < 0x49 || sprite->pos1.x > 0xf7) + sprite->invisible = TRUE; + if (--sprite->data[1] == 0) + { + sprite->pos1.x = sprite->data[2]; + sprite->invisible = FALSE; + sprite->data[0] = 4; + } + break; + case 4: + sprite->pos1.x -= gPokemonStorageSystemPtr->unk_08b6; + break; + } +} + +struct Sprite *sub_809A9A0(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority) +{ + u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2F0, x, y, subpriority); + if (spriteId == MAX_SPRITES) + return NULL; + animId %= 2; + StartSpriteAnim(gSprites + spriteId, animId); + gSprites[spriteId].oam.priority = priority; + gSprites[spriteId].callback = SpriteCallbackDummy; + return gSprites + spriteId; +} + +void sub_809AA24(void) +{ + if (gPokemonStorageSystemPtr->unk_0005 != 1) + gUnknown_020384E4 = 0; + else + gUnknown_020384E4 = 1; + gUnknown_020384E5 = 0; + gUnknown_020384E6 = 0; + gUnknown_020384E7 = 0; + gUnknown_020384E8 = 0; + gUnknown_020384E9 = 0; + sub_809B0D4(); + sub_809CC04(); + gPokemonStorageSystemPtr->unk_11e2 = 1; + sub_809BF74(); +} + +void sub_809AA98(void) +{ + sub_809CC04(); + sub_809C028(); + gPokemonStorageSystemPtr->unk_11e2 = 1; + if (gUnknown_020384E6) + sub_8098BF0(); +} -- cgit v1.2.3 From 1288b752480e5d301c9ea9cff6d1efc737d6c5cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jan 2018 21:25:25 -0500 Subject: through sub_809AB8C --- src/pokemon/pokemon_storage_system_4.c | 58 ++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 63d94b5a1..6d44b8ae8 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -1,6 +1,7 @@ // Includes #include "global.h" +#include "constants/species.h" #include "palette.h" #include "text.h" #include "menu.h" @@ -18,8 +19,8 @@ struct WallpaperTable { // Static RAM declarations EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; -EWRAM_DATA u8 gUnknown_020384E4 = 0; -EWRAM_DATA u8 gUnknown_020384E5 = 0; +EWRAM_DATA s8 gUnknown_020384E4 = 0; +EWRAM_DATA s8 gUnknown_020384E5 = 0; EWRAM_DATA u8 gUnknown_020384E6 = 0; EWRAM_DATA u8 gUnknown_020384E7 = 0; EWRAM_DATA u8 gUnknown_020384E8 = 0; @@ -1131,3 +1132,56 @@ void sub_809AA98(void) if (gUnknown_020384E6) sub_8098BF0(); } + +void sub_809AACC(u8 a0, u8 a1, u16 *a2, u16 *a3) +{ + switch (a0) + { + case 0: + *a2 = (a1 % 6) * 24 + 100; + *a3 = (a1 / 6) * 24 + 32; + break; + case 1: + if (a1 == 0) + { + *a2 = 0x68; + *a3 = 0x34; + } + else if (a1 == 6) + { + *a2 = 0x98; + *a3 = 0x84; + } + else + { + *a2 = 0x98; + *a3 = (a1 - 1) * 24 + 4; + } + break; + case 2: + *a2 = 0xa2; + *a3 = 0x0c; + break; + case 3: + *a3 = gUnknown_020384E6 ? 8 : 14; + *a2 = a1 * 0x58 + 0x78; + break; + case 4: + *a2 = 0xa0; + *a3 = 0x60; + break; + } +} + +u16 sub_809AB8C(void) +{ + switch (gUnknown_020384E4) + { + case 1: + return GetMonData(gPlayerParty + gUnknown_020384E5, MON_DATA_SPECIES); + case 0: + return GetBoxMonData(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, MON_DATA_SPECIES); + default: + return SPECIES_NONE; + } +} -- cgit v1.2.3 From 07f5db48c075f55a67136afb84ac804d525f5de3 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 20:39:52 -0600 Subject: start decompiling the behemoth that is sub_803E1B0 --- src/pokemon/pokemon_item_effect.c | 454 +++++++++++++++++++++++++++++++++++++- 1 file changed, 453 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index 66f2ff697..34a61a489 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -1,7 +1,29 @@ #include "global.h" +#include "constants/items.h" +#include "constants/species.h" +#include "battle.h" +#include "evolution_scene.h" +#include "ewram.h" +#include "item.h" +#include "main.h" #include "pokemon.h" +#include "pokemon_item_effect.h" +#include "rom_8077ABC.h" +#include "rom_8094928.h" +#include "util.h" -const u8 gUnknown_082082F2[] = { +extern s32 gBattleMoveDamage; +extern u8 gAbsentBankFlags; +extern u8 gBankInMenu; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[]; +extern u8 gActiveBank; +extern u8 gStringBank; +extern struct BattlePokemon gBattleMons[]; +extern struct BattleEnigmaBerry gEnigmaBerries[]; + +const u8 gUnknown_082082F2[] = +{ MON_DATA_HP_EV, MON_DATA_ATK_EV, MON_DATA_DEF_EV, @@ -9,3 +31,433 @@ const u8 gUnknown_082082F2[] = { MON_DATA_SPDEF_EV, MON_DATA_SPATK_EV }; + +bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e); + +bool8 ExecuteTableBasedItemEffect_(struct Pokemon *pkmn, u16 b, u8 c, u8 d) +{ + return sub_803E1B0(pkmn, b, c, d, 0); +} + +extern u8 gUnknown_08208238[]; +extern u8 gUnknown_08208240[]; + +bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) +{ + int r10; + int r5; + u8 sp18; + int sp1C = 1; + const u8 *sp20; + u8 sp24 = 6; + u32 sp28; + int sp2C = 0; + u8 sp30; + int sp34 = 4; + u16 item; + u16 r4; + + item = GetMonData(pkmn, MON_DATA_HELD_ITEM); + if (item == 0xAF) + { + if (gMain.inBattle) + sp30 = gEnigmaBerries[gBankInMenu].holdEffect; + else + sp30 = gSaveBlock1.enigmaBerry.holdEffect; + } + //_0803E240 + else + { + sp30 = ItemId_GetHoldEffect(item); + } + //_0803E248 + + gStringBank = gBankInMenu; + if (gMain.inBattle) + { + gActiveBank = gBankInMenu; + sp18 = (GetBankSide(gActiveBank) != 0); + r4 = b - 13; + while (sp18 < gNoOfAllBanks) + { + if (gBattlePartyID[sp18] == c) + { + sp34 = sp18; + break; + } + sp18 += 2; + } + } + //_0803E2E8 + else + { + gActiveBank = 0; + sp34 = 4; + r4 = b - 13; + } + //_0803E2F4 + + if (r4 > 0xA5) + return 1; + + if (gItemEffectTable[r4] == NULL && b != 0xAF) + return 1; + if (b == 0xAF) + { + //_0803E31E + if (gMain.inBattle) + sp20 = gEnigmaBerries[gActiveBank].itemEffect; + else + sp20 = gSaveBlock1.enigmaBerry.itemEffect; + } + //_0803E372 + else + { + sp20 = gItemEffectTable[r4]; + } + + // Now, the HUGE loop! + for (sp18 = 0; sp18 < 6; sp18++) + { + switch (sp18) + { + case 0: + //_0803E3A8 + if ((sp20[sp18] & 0x80) && gMain.inBattle + && sp34 != 4 && (gBattleMons[sp34].status2 & 0xF0000)) + { + gBattleMons[sp34].status2 &= 0xFFF0FFFF; + sp1C = 0; + } + //_0803E3F0 + if ((sp20[sp18] & 0x30) && !(gBattleMons[gActiveBank].status2 & 0x4000000)) + { + gBattleMons[gActiveBank].status2 |= 0x4000000; + sp1C = 0; + } + //_0803E41E + if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[1] < 12) + { + if (gBattleMons[gActiveBank].statStages[1] > 12) + gBattleMons[gActiveBank].statStages[1] = 12; + sp1C = 0; + break; + } + break; + case 1: + //_0803E474 + // r3 might be a temporary variable + if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[2] < 12) + { + gBattleMons[gActiveBank].statStages[2] += sp20[sp18] & 0xF0; + if (gBattleMons[gActiveBank].statStages[2] > 12) + gBattleMons[gActiveBank].statStages[2] = 12; + sp1C = 0; + } + //_0803E4BA + if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[3] < 12) + { + gBattleMons[gActiveBank].statStages[3] += sp20[sp18] & 0xF; + if (gBattleMons[gActiveBank].statStages[3] > 12) + gBattleMons[gActiveBank].statStages[3] = 12; + sp1C = 0; + } + break; + case 2: + //_0803E508 + if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[4] < 12) + { + gBattleMons[gActiveBank].statStages[4] += sp20[sp18] & 0xF0; + if (gBattleMons[gActiveBank].statStages[4] > 12) + gBattleMons[gActiveBank].statStages[4] = 12; + sp1C = 0; + } + //_0803E54E + if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[6] < 12) + { + gBattleMons[gActiveBank].statStages[6] += sp20[sp18] & 0xF; + if (gBattleMons[gActiveBank].statStages[6] > 12) + gBattleMons[gActiveBank].statStages[6] = 12; + sp1C = 0; + } + break; + case 3: + //_0803E59C + if ((sp20[sp18] & 0x80) && gSideTimers[GetBankSide(gActiveBank)].mistTimer == 0) + { + gSideTimers[GetBankSide(gActiveBank)].mistTimer = 5; + sp1C = 0; + } + //_0803E5E4 + if ((sp20[sp18] & 0x40) && GetMonData(pkmn, MON_DATA_LEVEL) != 100) + { + u32 exp = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL) + 1]; + + SetMonData(pkmn, MON_DATA_EXP, &exp); + CalculateMonStats(pkmn); + sp1C = 0; + } + //_0803E646 + if ((sp20[sp18] & 0x20) && HealStatusConditions(pkmn, c, 7, sp34) == 0) + { + if (sp34 != 4) + gBattleMons[sp34].status2 &= 0xF7FFFFFF; + sp1C = 0; + } + //_0803E682 + if ((sp20[sp18] & 0x10) && HealStatusConditions(pkmn, c, 0xF88, sp34) == 0) + sp1C = 0; + //_0803E6A2 + if ((sp20[sp18] & 8) && HealStatusConditions(pkmn, c, 16, sp34) == 0) + sp1C = 0; + //_0803E6C2 + if ((sp20[sp18] & 4) && HealStatusConditions(pkmn, c, 32, sp34) == 0) + sp1C = 0; + //_0803E6E2 + if ((sp20[sp18] & 2) && HealStatusConditions(pkmn, c, 64, sp34) == 0) + sp1C = 0; + //_0803E702 + if ((sp20[sp18] & 1) && gMain.inBattle + && sp34 != 4 && (gBattleMons[sp34].status2 & 7)) + { + gBattleMons[sp34].status2 &= ~7; + sp1C = 0; + } + break; + case 4: + //_0803E77C + r10 = sp20[sp18] & 0x20; + if (r10 != 0) + { + u32 sp0; + u16 r4; + + r10 &= 0xDF; + + sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) << (d * 2); + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); + sp28 = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); + if (sp0 <= 2 && sp28 > 4) + { + sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gUnknown_08208240[d]; + SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); + + sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d), sp0, d) - sp28; + sp0 += GetMonData(pkmn, MON_DATA_PP1 + d, NULL); + SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); + sp1C = 0; + } + } + //_0803E854 + sp28 = 0; + while (r10 != 0) + { + if (r10 & 1) + { + u16 r5; + u32 r4; + u32 sp0; + u32 r1; + + switch (sp28) + { + case 0: + case 1: + //_0803E8AC + r5 = GetMonEVCount(pkmn); + if (r5 >= 510) + return 1; + r1 = GetMonData(pkmn, gUnknown_082082F2[sp28], NULL); + sp0 = r1; + if (r1 < 100) + { + r1 += sp20[sp24]; + if (r1 > 100) + r4 = 100 - r1; + else + r4 = sp20[sp24]; + //_0803E8F6 + if (r5 + r4 > 510) + r4 = (r4 - 510) - (r5 + r4); + sp0 += r4; + SetMonData(pkmn, gUnknown_082082F2[sp28], &sp0); + CalculateMonStats(pkmn); + sp24++; + sp1C = 0; + } + break; + case 2: + //_0803E934 + if (r10 & 0x10) + { + if (GetMonData(pkmn, MON_DATA_HP, NULL) != 0) + { + sp24++; + break; + } + if (gMain.inBattle) + { + if (sp34 != 4) + { + gAbsentBankFlags &= ~gBitTable[sp34]; + CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlePartyID[sp34])); + // tail merge, possibly? + } + //_0803E9B4 + else + { + gAbsentBankFlags &= ~gBitTable[gActiveBank ^ 2]; + } + //_0803E9CC + if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255) + gBattleResults.unk4++; + } + //to _0803EA0A + } + //_0803E9F4 + else + { + if (GetMonData(pkmn, MON_DATA_HP, NULL) == 0) + { + sp24++; + break; + } + } + //_0803EA0A + sp0 = sp20[sp24++]; + switch (sp0) + { + case 0xFF: + //_0803EA2C + if (sp0 == 0xFF) // wat? + sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL); + break; + case 0xFE: + sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) * 2; + if (sp0 == 0) + sp0 = 1; + break; + case 0xFD: + sp0 = eStatHp; + break; + } + //_0803EA6C + if (GetMonData(pkmn, MON_DATA_MAX_HP) != GetMonData(pkmn, MON_DATA_HP)) + { + if (e == 0) + { + sp0 += GetMonData(pkmn, MON_DATA_HP, NULL); + if (sp0 > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) + sp0 = GetMonData(pkmn, MON_DATA_MAX_HP); + //_0803EAB8 + SetMonData(pkmn, MON_DATA_HP, &sp0); + if (gMain.inBattle && sp34 != 4) + { + gBattleMons[sp34].hp = sp0; + if (!(r10 & 0x10) && GetBankSide(gActiveBank) == 0) + { + u8 r5; + + if (gBattleResults.unk3 < 255) + gBattleResults.unk3++; + r5 = gActiveBank; + gActiveBank = sp34; + EmitGetAttributes(0, 0, 0); + MarkBufferBankForExecution(gActiveBank); + gActiveBank = r5; + } + } + //to _0803EB48 + } + //_0803EB40 + else + { + gBattleMoveDamage *= -1; + } + //_0803EB48 + sp1C = 0; + } + //_0803EB4C + r10 &= 0xEF; + break; + case 3: + if (!(r10 & 2)) + { + for (r5 = 0; r5 < 4; r5++) + { + u16 r4; + + sp0 = GetMonData(pkmn, MON_DATA_PP1 + r5, NULL); + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); + if (sp0 != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) + { + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); + if (sp0 > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) + { + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); + sp0 = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5); + } + //_0803EC28 + SetMonData(pkmn, MON_DATA_PP1 + r5, &sp0); + if (gMain.inBattle + && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) + && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) + gBattleMons[sp34].pp[r5] = sp0; + //_0803EC8E + sp1C = 0; + } + //_0803EC92 + } + //_0803EC9A + sp24++; + } + //_0803ECB8 + else + { + u16 r4; + + sp0 = GetMonData(pkmn, MON_DATA_PP1 + d, NULL); + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); + if (sp0 != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d)) + { + //_0803ED00 + sp0 = sp20[sp24++]; + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); + if (sp0 > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d)) + { + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); + sp0 = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); + } + //_0803ED74 + SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); + if (gMain.inBattle + && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) + && !(gDisableStructs[sp34].unk18_b & gBitTable[d])) + gBattleMons[sp34].pp[d] = sp0; + //_0803EDD8 + sp1C = 0; + } + } + break; + case 7: + //_0803EDF4 + { + u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, d); + + if (targetSpecies != SPECIES_NONE) + { + BeginEvolutionScene(pkmn, targetSpecies, 0, c); + return 0; + } + } + break; + } + } + //_0803EE0A + } + break; + } + } + //_0803F15A + return sp1C; +} -- cgit v1.2.3 From 20f4dd0677b5e01825b9e271a06f5d3ee4bb3252 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 Jan 2018 22:33:35 -0600 Subject: decompile sub_803E1B0 (nonmatching) --- src/pokemon/pokemon_item_effect.c | 181 +++++++++++++++++++++++++++++++++++++- 1 file changed, 177 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index 34a61a489..d25e96f9d 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -6,6 +6,7 @@ #include "ewram.h" #include "item.h" #include "main.h" +#include "overworld.h" #include "pokemon.h" #include "pokemon_item_effect.h" #include "rom_8077ABC.h" @@ -40,18 +41,20 @@ bool8 ExecuteTableBasedItemEffect_(struct Pokemon *pkmn, u16 b, u8 c, u8 d) } extern u8 gUnknown_08208238[]; +extern u8 gUnknown_0820823C[]; extern u8 gUnknown_08208240[]; bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { int r10; - int r5; + u32 sp0; + u32 sp4; u8 sp18; int sp1C = 1; const u8 *sp20; u8 sp24 = 6; u32 sp28; - int sp2C = 0; + s8 sp2C = 0; u8 sp30; int sp34 = 4; u16 item; @@ -229,7 +232,6 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) r10 = sp20[sp18] & 0x20; if (r10 != 0) { - u32 sp0; u16 r4; r10 &= 0xDF; @@ -256,7 +258,6 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { u16 r5; u32 r4; - u32 sp0; u32 r1; switch (sp28) @@ -456,6 +457,178 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) //_0803EE0A } break; + case 5: + //_0803EE1E + r10 = sp20[sp18]; + sp28 = 0; + while (r10 != 0) + { + //_0803EE32 + if (r10 & 1) + { + u16 r5; + u32 r4; + u32 r1; + + switch (sp28) + { + case 0: + case 1: + case 2: + case 3: + //_0803EE74 + r5 = GetMonEVCount(pkmn); + if (r5 >= 510) + return 1; + r1 = GetMonData(pkmn, gUnknown_082082F2[sp28], NULL); + sp0 = r1; + if (r1 < 100) + { + r1 += sp20[sp24]; + if (r1 > 100) + r4 = 100 - r1; + else + r4 = sp20[sp24]; + //_0803EEC6 + if (r5 + r4 > 510) + r4 = (r4 + 510) - (r5 + r4); + sp0 += r4; + SetMonData(pkmn, gUnknown_082082F2[sp28], &sp0); + CalculateMonStats(pkmn); + sp1C = 0; + sp24++; + } + break; + case 4: + //_0803EEF8 + sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) << (d * 2); + if (sp0 < 3) + { + //_0803EF18 + u8 r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); + sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); + sp0 &= gUnknown_0820823C[d]; + sp0 += gUnknown_08208240[d] * 3; + + SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); + sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), sp0, d) - r4; + sp0 += GetMonData(pkmn, MON_DATA_PP1 + b, NULL); + SetMonData(pkmn, MON_DATA_PP1 + b, &sp0); + sp1C = 0; + } + break; + case 5: + //_0803EFCC + if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && sp1C == 0 && sp2C == 0) + { + //_0803EFEC + sp2C = sp20[sp24]; + sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + if (sp2C > 0 && sp30 == 0x1B) + { + sp4 = 0x96 * sp2C / 100; + } + //to _0803F0D0 hmm... + else + { + sp4 += sp2C; + } + //_0803F0DC (tail merged) + + if (sp2C > 0) + { + if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) + sp4++; + //_0803F0F4 + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + sp4++; + } + //_0803F112 + if (sp4 < 0) + sp4 = 0; + if (sp4 > 255) + sp4 = 255; + SetMonData(pkmn, MON_DATA_FRIENDSHIP, &sp4); + } + //to _0803F130 hmm... + sp24++; + break; + case 6: + //_0803F026 + if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 200 + && sp1C == 0 && sp2C == 0) + { + sp2C = sp20[sp24]; + sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + if (sp2C > 0 && sp30 == 0x1B) + { + //to _0803F0BE + sp4 = 0x96 * sp2C / 100; + } + else + { + sp4 += sp2C; + } + //_0803F0DC (tail merged) + + if (sp2C > 0) + { + if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) + sp4++; + //_0803F0F4 + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + sp4++; + } + //_0803F112 + if (sp4 < 0) + sp4 = 0; + if (sp4 > 255) + sp4 = 255; + SetMonData(pkmn, MON_DATA_FRIENDSHIP, &sp4); + } + //to _0803F130 hmm... + sp24++; + break; + case 7: + //_0803F07C + if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && sp1C == 0 && sp2C == 0) + { + sp2C = sp20[sp24]; + sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + if (sp2C > 0 && sp30 == 0x1B) + { + //_0803F0BE + sp4 = 0x96 * sp2C / 100; + } + //_0803F0D0 + else + { + sp4 += sp2C; + } + //_0803F0DC + + if (sp2C > 0) + { + if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) + sp4++; + //_0803F0F4 + if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) + sp4++; + } + //_0803F112 + if (sp4 < 0) + sp4 = 0; + if (sp4 > 255) + sp4 = 255; + SetMonData(pkmn, MON_DATA_FRIENDSHIP, &sp4); + } + //to _0803F130 + sp24++; + break; + } + } + } + break; } } //_0803F15A -- cgit v1.2.3 From 2a2c61d46d77c0c974c785ddebab9105965e7275 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 00:40:55 -0600 Subject: get sub_803E1B0 closer --- src/pokemon/pokemon_item_effect.c | 81 ++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index d25e96f9d..b58298f52 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -46,19 +46,19 @@ extern u8 gUnknown_08208240[]; bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { - int r10; u32 sp0; - u32 sp4; - u8 sp18; - int sp1C = 1; + s32 sp4; + s32 sp18; + bool8 sp1C = TRUE; const u8 *sp20; u8 sp24 = 6; u32 sp28; s8 sp2C = 0; u8 sp30; - int sp34 = 4; + u8 sp34 = 4; u16 item; u16 r4; + u32 r10; item = GetMonData(pkmn, MON_DATA_HELD_ITEM); if (item == 0xAF) @@ -80,7 +80,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { gActiveBank = gBankInMenu; sp18 = (GetBankSide(gActiveBank) != 0); - r4 = b - 13; + //r4 = b - 13; while (sp18 < gNoOfAllBanks) { if (gBattlePartyID[sp18] == c) @@ -90,6 +90,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) } sp18 += 2; } + r4 = b - 13; } //_0803E2E8 else @@ -141,10 +142,10 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) //_0803E41E if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[1] < 12) { + gBattleMons[gActiveBank].statStages[1] += sp20[sp18] & 0xF; if (gBattleMons[gActiveBank].statStages[1] > 12) gBattleMons[gActiveBank].statStages[1] = 12; sp1C = 0; - break; } break; case 1: @@ -152,7 +153,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) // r3 might be a temporary variable if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[2] < 12) { - gBattleMons[gActiveBank].statStages[2] += sp20[sp18] & 0xF0; + gBattleMons[gActiveBank].statStages[2] += (sp20[sp18] & 0xF0) >> 4; if (gBattleMons[gActiveBank].statStages[2] > 12) gBattleMons[gActiveBank].statStages[2] = 12; sp1C = 0; @@ -164,23 +165,25 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (gBattleMons[gActiveBank].statStages[3] > 12) gBattleMons[gActiveBank].statStages[3] = 12; sp1C = 0; + //asm(""); } break; case 2: //_0803E508 - if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[4] < 12) + //asm_comment("case2"); + if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[6] < 12) { - gBattleMons[gActiveBank].statStages[4] += sp20[sp18] & 0xF0; - if (gBattleMons[gActiveBank].statStages[4] > 12) - gBattleMons[gActiveBank].statStages[4] = 12; + gBattleMons[gActiveBank].statStages[6] += (sp20[sp18] & 0xF0) >> 4; + if (gBattleMons[gActiveBank].statStages[6] > 12) + gBattleMons[gActiveBank].statStages[6] = 12; sp1C = 0; } //_0803E54E - if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[6] < 12) + if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[4] < 12) { - gBattleMons[gActiveBank].statStages[6] += sp20[sp18] & 0xF; - if (gBattleMons[gActiveBank].statStages[6] > 12) - gBattleMons[gActiveBank].statStages[6] = 12; + gBattleMons[gActiveBank].statStages[4] += sp20[sp18] & 0xF; + if (gBattleMons[gActiveBank].statStages[4] > 12) + gBattleMons[gActiveBank].statStages[4] = 12; sp1C = 0; } break; @@ -192,11 +195,10 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp1C = 0; } //_0803E5E4 - if ((sp20[sp18] & 0x40) && GetMonData(pkmn, MON_DATA_LEVEL) != 100) + if ((sp20[sp18] & 0x40) && GetMonData(pkmn, MON_DATA_LEVEL, NULL) != 100) { - u32 exp = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL) + 1]; - - SetMonData(pkmn, MON_DATA_EXP, &exp); + sp0 = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL, NULL) + 1]; + SetMonData(pkmn, MON_DATA_EXP, &sp0); CalculateMonStats(pkmn); sp1C = 0; } @@ -229,22 +231,22 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) break; case 4: //_0803E77C - r10 = sp20[sp18] & 0x20; - if (r10 != 0) + r10 = sp20[sp18]; + if (r10 & 0x20) { - u16 r4; + //u16 r4; r10 &= 0xDF; sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) << (d * 2); - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); - sp28 = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); + //r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); + sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); if (sp0 <= 2 && sp28 > 4) { sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gUnknown_08208240[d]; SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); - sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d), sp0, d) - sp28; + sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), sp0, d) - sp28; sp0 += GetMonData(pkmn, MON_DATA_PP1 + d, NULL); SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); sp1C = 0; @@ -256,7 +258,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { if (r10 & 1) { - u16 r5; + s32 r5; u32 r4; u32 r1; @@ -303,15 +305,17 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) gAbsentBankFlags &= ~gBitTable[sp34]; CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlePartyID[sp34])); // tail merge, possibly? + if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255) + gBattleResults.unk4++; } //_0803E9B4 else { gAbsentBankFlags &= ~gBitTable[gActiveBank ^ 2]; + if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255) + gBattleResults.unk4++; } //_0803E9CC - if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255) - gBattleResults.unk4++; } //to _0803EA0A } @@ -343,13 +347,13 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) break; } //_0803EA6C - if (GetMonData(pkmn, MON_DATA_MAX_HP) != GetMonData(pkmn, MON_DATA_HP)) + if (GetMonData(pkmn, MON_DATA_MAX_HP, NULL) != GetMonData(pkmn, MON_DATA_HP, NULL)) { if (e == 0) { sp0 += GetMonData(pkmn, MON_DATA_HP, NULL); if (sp0 > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) - sp0 = GetMonData(pkmn, MON_DATA_MAX_HP); + sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL); //_0803EAB8 SetMonData(pkmn, MON_DATA_HP, &sp0); if (gMain.inBattle && sp34 != 4) @@ -373,7 +377,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) //_0803EB40 else { - gBattleMoveDamage *= -1; + gBattleMoveDamage = -sp0; } //_0803EB48 sp1C = 0; @@ -392,6 +396,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); if (sp0 != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) { + sp0 += sp20[sp24]; r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); if (sp0 > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) { @@ -422,7 +427,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (sp0 != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d)) { //_0803ED00 - sp0 = sp20[sp24++]; + sp0 += sp20[sp24++]; r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); if (sp0 > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d)) { @@ -455,6 +460,8 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) } } //_0803EE0A + sp28++; + r10 >>= 1; } break; case 5: @@ -480,7 +487,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) r5 = GetMonEVCount(pkmn); if (r5 >= 510) return 1; - r1 = GetMonData(pkmn, gUnknown_082082F2[sp28], NULL); + r1 = GetMonData(pkmn, gUnknown_082082F2[sp28 + 2], NULL); sp0 = r1; if (r1 < 100) { @@ -493,7 +500,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (r5 + r4 > 510) r4 = (r4 + 510) - (r5 + r4); sp0 += r4; - SetMonData(pkmn, gUnknown_082082F2[sp28], &sp0); + SetMonData(pkmn, gUnknown_082082F2[sp28 + 2], &sp0); CalculateMonStats(pkmn); sp1C = 0; sp24++; @@ -526,7 +533,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); if (sp2C > 0 && sp30 == 0x1B) { - sp4 = 0x96 * sp2C / 100; + sp4 += 0x96 * sp2C / 100; } //to _0803F0D0 hmm... else @@ -627,6 +634,8 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) break; } } + sp28++; + r10 >>= 1; } break; } -- cgit v1.2.3 From fd3ab3fcc69708d082f3791052823ec333165b36 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 12:49:20 -0600 Subject: get sub_803E1B0 a bit closer --- src/pokemon/pokemon_item_effect.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index b58298f52..b4b7206dc 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -57,10 +57,9 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) u8 sp30; u8 sp34 = 4; u16 item; - u16 r4; - u32 r10; + u8 r10; - item = GetMonData(pkmn, MON_DATA_HELD_ITEM); + item = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL); if (item == 0xAF) { if (gMain.inBattle) @@ -80,7 +79,6 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { gActiveBank = gBankInMenu; sp18 = (GetBankSide(gActiveBank) != 0); - //r4 = b - 13; while (sp18 < gNoOfAllBanks) { if (gBattlePartyID[sp18] == c) @@ -90,22 +88,20 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) } sp18 += 2; } - r4 = b - 13; } //_0803E2E8 else { gActiveBank = 0; sp34 = 4; - r4 = b - 13; } //_0803E2F4 - - if (r4 > 0xA5) + + if (b < 13 || b > 0xB2) return 1; - - if (gItemEffectTable[r4] == NULL && b != 0xAF) + if (gItemEffectTable[b - 13] == NULL && b != 0xAF) return 1; + if (b == 0xAF) { //_0803E31E @@ -117,7 +113,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) //_0803E372 else { - sp20 = gItemEffectTable[r4]; + sp20 = gItemEffectTable[b - 13]; } // Now, the HUGE loop! @@ -127,10 +123,11 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { case 0: //_0803E3A8 + // TODO: stop re-loading sp34 if ((sp20[sp18] & 0x80) && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & 0xF0000)) { - gBattleMons[sp34].status2 &= 0xFFF0FFFF; + gBattleMons[sp34].status2 &= ~0xF0000; sp1C = 0; } //_0803E3F0 @@ -236,7 +233,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { //u16 r4; - r10 &= 0xDF; + r10 &= ~0x20; sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) << (d * 2); //r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); @@ -287,6 +284,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) CalculateMonStats(pkmn); sp24++; sp1C = 0; + //asm(""); } break; case 2: -- cgit v1.2.3 From 68528382d5d8a17c5d6d65f1566a9ba7c807e14a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 15:10:56 -0500 Subject: through sub_809AF18 --- src/pokemon/pokemon_storage_system_4.c | 121 +++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 6d44b8ae8..06c2eeff5 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -44,6 +44,7 @@ s16 sub_809A6D0(u8 width); void sub_809A6DC(void); void sub_809A774(s8 a0); void sub_809A810(void); +void sub_809AFB8(void); void sub_809A8C8(struct Sprite *sprite); bool8 sub_809BF2C(void); void sub_809BF74(void); @@ -1185,3 +1186,123 @@ u16 sub_809AB8C(void) return SPECIES_NONE; } } + +bool8 sub_809AC00(void) +{ + s16 tmp; + if (gPokemonStorageSystemPtr->unk_11dc == 0) + return FALSE; + if (--gPokemonStorageSystemPtr->unk_11dc) + { + gPokemonStorageSystemPtr->unk_11c8 += gPokemonStorageSystemPtr->unk_11d0; + gPokemonStorageSystemPtr->unk_11cc += gPokemonStorageSystemPtr->unk_11d4; + gPokemonStorageSystemPtr->unk_11c0->pos1.x = gPokemonStorageSystemPtr->unk_11c8 >> 8; + gPokemonStorageSystemPtr->unk_11c0->pos1.y = gPokemonStorageSystemPtr->unk_11cc >> 8; + if (gPokemonStorageSystemPtr->unk_11c0->pos1.x > 0x100) + { + tmp = gPokemonStorageSystemPtr->unk_11c0->pos1.x - 0x100; + gPokemonStorageSystemPtr->unk_11c0->pos1.x = tmp + 0x40; + } + if (gPokemonStorageSystemPtr->unk_11c0->pos1.x < 0x40) + { + tmp = 0x40 - gPokemonStorageSystemPtr->unk_11c0->pos1.x; + gPokemonStorageSystemPtr->unk_11c0->pos1.x = 0x100 - tmp; + } + if (gPokemonStorageSystemPtr->unk_11c0->pos1.y > 0xb0) + { + tmp = gPokemonStorageSystemPtr->unk_11c0->pos1.y - 0xb0; + gPokemonStorageSystemPtr->unk_11c0->pos1.y = tmp - 0x10; + } + if (gPokemonStorageSystemPtr->unk_11c0->pos1.y < -0x10) + { + tmp = -0x10 - gPokemonStorageSystemPtr->unk_11c0->pos1.y; + gPokemonStorageSystemPtr->unk_11c0->pos1.y = 0xb0 - tmp; + } + if (gPokemonStorageSystemPtr->unk_11e3 && --gPokemonStorageSystemPtr->unk_11e3 == 0) + gPokemonStorageSystemPtr->unk_11c0->vFlip = gPokemonStorageSystemPtr->unk_11c0->vFlip ? FALSE : TRUE; + } + else + { + gPokemonStorageSystemPtr->unk_11c0->pos1.x = gPokemonStorageSystemPtr->unk_11d8; + gPokemonStorageSystemPtr->unk_11c0->pos1.y = gPokemonStorageSystemPtr->unk_11da; + sub_809AFB8(); + } + return TRUE; +} + +void sub_809AD3C(u8 a0, u8 a1) +{ + u16 x; + u16 y; + + sub_809AACC(a0, a1, &x, &y); + gPokemonStorageSystemPtr->unk_11e0 = a0; + gPokemonStorageSystemPtr->unk_11e1 = a1; + gPokemonStorageSystemPtr->unk_11d8 = x; + gPokemonStorageSystemPtr->unk_11da = y; +} + +void sub_809AD94(void) +{ + int r7; + int r0; + + if (gPokemonStorageSystemPtr->unk_11de || gPokemonStorageSystemPtr->unk_11df) + gPokemonStorageSystemPtr->unk_11dc = 12; + else + gPokemonStorageSystemPtr->unk_11dc = 6; + if (gPokemonStorageSystemPtr->unk_11e3) + gPokemonStorageSystemPtr->unk_11e3 = gPokemonStorageSystemPtr->unk_11dc >> 1; + switch (gPokemonStorageSystemPtr->unk_11de) + { + default: + r7 = gPokemonStorageSystemPtr->unk_11da - gPokemonStorageSystemPtr->unk_11c0->pos1.y; + break; + case -1: + r7 = gPokemonStorageSystemPtr->unk_11da - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.y; + break; + case 1: + r7 = gPokemonStorageSystemPtr->unk_11da + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.y; + break; + } + switch (gPokemonStorageSystemPtr->unk_11df) + { + default: + r0 = gPokemonStorageSystemPtr->unk_11d8 - gPokemonStorageSystemPtr->unk_11c0->pos1.x; + break; + case -1: + r0 = gPokemonStorageSystemPtr->unk_11d8 - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.x; + break; + case 1: + r0 = gPokemonStorageSystemPtr->unk_11d8 + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.x; + break; + } + r7 <<= 8; + r0 <<= 8; + gPokemonStorageSystemPtr->unk_11d0 = r0 / gPokemonStorageSystemPtr->unk_11dc; + gPokemonStorageSystemPtr->unk_11d4 = r7 / gPokemonStorageSystemPtr->unk_11dc; + gPokemonStorageSystemPtr->unk_11c8 = gPokemonStorageSystemPtr->unk_11c0->pos1.x << 8; + gPokemonStorageSystemPtr->unk_11cc = gPokemonStorageSystemPtr->unk_11c0->pos1.y << 8; +} + +void sub_809AF18(u8 a0, u8 a1) +{ + sub_809AD3C(a0, a1); + sub_809AD94(); + if (gUnknown_020384E6 == 0) + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 1); + if (a0 == 1 && gUnknown_020384E4 != 1) + { + gPokemonStorageSystemPtr->unk_11e2 = a0; + gPokemonStorageSystemPtr->unk_11c4->invisible = TRUE; + } + switch (a0) + { + case 0: + break; + case 1 ... 3: + gPokemonStorageSystemPtr->unk_11c4->invisible = TRUE; + gPokemonStorageSystemPtr->unk_11c4->oam.priority = 1; + break; + } +} -- cgit v1.2.3 From 650f85e7db8ea123256d661a7db59c9325115130 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 15:46:17 -0500 Subject: through sub_809B130 --- src/pokemon/pokemon_storage_system_4.c | 85 +++++++++++++++++++++++++++++++++- src/pokemon/pokemon_storage_system_6.c | 14 ------ 2 files changed, 84 insertions(+), 15 deletions(-) delete mode 100644 src/pokemon/pokemon_storage_system_6.c (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 06c2eeff5..2f2091259 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -25,7 +25,7 @@ EWRAM_DATA u8 gUnknown_020384E6 = 0; EWRAM_DATA u8 gUnknown_020384E7 = 0; EWRAM_DATA u8 gUnknown_020384E8 = 0; EWRAM_DATA u8 gUnknown_020384E9 = 0; -EWRAM_DATA u16 gUnknown_020384EA = 0; +EWRAM_DATA u8 gUnknown_020384EA = 0; // Static ROM declarations @@ -46,6 +46,9 @@ void sub_809A774(s8 a0); void sub_809A810(void); void sub_809AFB8(void); void sub_809A8C8(struct Sprite *sprite); +bool8 sub_809B150(void); +bool8 sub_809B1D8(void); +bool8 sub_809B24C(void); bool8 sub_809BF2C(void); void sub_809BF74(void); void sub_809C028(void); @@ -289,6 +292,16 @@ const struct SpriteTemplate gSpriteTemplate_83BB2F0 = { sub_809A8C8 }; +const u16 HandCursorPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor_pal.bin"); +const u16 HandCursorAltPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor_alt_pal.bin"); +const u8 HandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp"); +const u8 HandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp"); + +bool8 (*const gUnknown_083BBBC8[])(void) = { + sub_809B150, + sub_809B1D8, + sub_809B24C +}; // .text void sub_8099BF8(u8 boxId) @@ -1306,3 +1319,73 @@ void sub_809AF18(u8 a0, u8 a1) break; } } + +void sub_809AFB8(void) +{ + gUnknown_020384E4 = gPokemonStorageSystemPtr->unk_11e0; + gUnknown_020384E5 = gPokemonStorageSystemPtr->unk_11e1; + if (gUnknown_020384E6 == 0) + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0); + sub_809BF74(); + switch (gUnknown_020384E4) + { + case 2: + sub_809A860(TRUE); + break; + case 1: + gPokemonStorageSystemPtr->unk_11c4->subpriority = 12; + break; + case 0: + gPokemonStorageSystemPtr->unk_11c4->oam.priority = 2; + gPokemonStorageSystemPtr->unk_11c4->subpriority = 20; + gPokemonStorageSystemPtr->unk_11c4->invisible = FALSE; + break; + } +} + +void sub_809B068(void) +{ + u8 partyCount; + if (gUnknown_020384E6 == 0) + partyCount = 0; + else + { + partyCount = CalculatePlayerPartyCount(); + if (partyCount > PARTY_SIZE - 1) + partyCount = PARTY_SIZE - 1; + } + if (gPokemonStorageSystemPtr->unk_11c0->vFlip) + gPokemonStorageSystemPtr->unk_11e3 = 1; + sub_809AF18(1, partyCount); +} + +void sub_809B0C0(u8 a0) +{ + sub_809AF18(0, a0); +} + +void sub_809B0D4(void) +{ + gUnknown_020384EA = 0; +} + +void sub_809B0E0(void) +{ + gUnknown_020384EA = gUnknown_020384E5; +} + +u8 sub_809B0F4(void) +{ + return gUnknown_020384EA; +} + +void sub_809B100(u8 a0) +{ + gPokemonStorageSystemPtr->unk_12a4 = gUnknown_083BBBC8[a0]; + gPokemonStorageSystemPtr->unk_12a8 = 0; +} + +bool8 sub_809B130(void) +{ + return gPokemonStorageSystemPtr->unk_12a4(); +} diff --git a/src/pokemon/pokemon_storage_system_6.c b/src/pokemon/pokemon_storage_system_6.c deleted file mode 100644 index a781c1ed2..000000000 --- a/src/pokemon/pokemon_storage_system_6.c +++ /dev/null @@ -1,14 +0,0 @@ - -// Includes -#include "global.h" -#include "pokemon_storage_system.h" - -// Static type declarations - -// Static RAM declarations - -// Static ROM declarations - -// .rodata - -// .text -- cgit v1.2.3 From 66fe535e7f5f0466c15f5f82dd1c2823fc6110cf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 16:16:25 -0500 Subject: through sub_809B24C --- src/pokemon/pokemon_storage_system_4.c | 92 ++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 2f2091259..9e4865910 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -49,6 +49,11 @@ void sub_809A8C8(struct Sprite *sprite); bool8 sub_809B150(void); bool8 sub_809B1D8(void); bool8 sub_809B24C(void); +bool8 sub_809B324(void); +bool8 sub_809B358(void); +void sub_809B384(void); +void sub_809B3E0(void); +void diegohint1(u8 a0, u8 a1); bool8 sub_809BF2C(void); void sub_809BF74(void); void sub_809C028(void); @@ -1389,3 +1394,90 @@ bool8 sub_809B130(void) { return gPokemonStorageSystemPtr->unk_12a4(); } + +bool8 sub_809B150(void) +{ + switch (gPokemonStorageSystemPtr->unk_12a8) + { + case 0: + if (gUnknown_020384E6) + return FALSE; + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 2); + gPokemonStorageSystemPtr->unk_12a8++; + break; + case 1: + if (!sub_809B324()) + { + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 3); + sub_809B384(); + gPokemonStorageSystemPtr->unk_12a8++; + } + break; + case 2: + if (!sub_809B358()) + gPokemonStorageSystemPtr->unk_12a8++; + break; + case 3: + return FALSE; + } + return TRUE; +} + +bool8 sub_809B1D8(void) +{ + switch (gPokemonStorageSystemPtr->unk_12a8) + { + case 0: + if (!sub_809B324()) + { + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 2); + sub_809B3E0(); + gPokemonStorageSystemPtr->unk_12a8++; + } + break; + case 1: + if (!sub_809B358()) + { + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0); + gPokemonStorageSystemPtr->unk_12a8++; + } + break; + case 2: + return FALSE; + } + return TRUE; +} + +bool8 sub_809B24C(void) +{ + switch (gPokemonStorageSystemPtr->unk_12a8) + { + case 0: + switch (gUnknown_020384E4) + { + case 1: + gPokemonStorageSystemPtr->unk_12a9 = 14; + break; + case 0: + gPokemonStorageSystemPtr->unk_12a9 = get_preferred_box(); + break; + default: + return FALSE; + } + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 2); + sub_80996B0(gPokemonStorageSystemPtr->unk_12a9, gUnknown_020384E5); + gPokemonStorageSystemPtr->unk_12a8++; + break; + case 1: + if (!sub_809971C()) + { + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 3); + diegohint1(gPokemonStorageSystemPtr->unk_12a9, gUnknown_020384E5); + gPokemonStorageSystemPtr->unk_12a8++; + } + break; + case 2: + return FALSE; + } + return TRUE; +} -- cgit v1.2.3 From c8bd765540bc38c2273a70caf99051727c467d21 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 15:29:27 -0600 Subject: get sub_803E1B0 a lot closer --- src/pokemon/pokemon_item_effect.c | 54 ++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index b4b7206dc..92bf01171 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -33,6 +33,10 @@ const u8 gUnknown_082082F2[] = MON_DATA_SPATK_EV }; +extern u8 gUnknown_08208238[]; +extern u8 gUnknown_0820823C[]; +extern u8 gUnknown_08208240[]; + bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e); bool8 ExecuteTableBasedItemEffect_(struct Pokemon *pkmn, u16 b, u8 c, u8 d) @@ -40,10 +44,6 @@ bool8 ExecuteTableBasedItemEffect_(struct Pokemon *pkmn, u16 b, u8 c, u8 d) return sub_803E1B0(pkmn, b, c, d, 0); } -extern u8 gUnknown_08208238[]; -extern u8 gUnknown_0820823C[]; -extern u8 gUnknown_08208240[]; - bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { u32 sp0; @@ -58,6 +58,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) u8 sp34 = 4; u16 item; u8 r10; + u32 r4; item = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL); if (item == 0xAF) @@ -131,9 +132,9 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp1C = 0; } //_0803E3F0 - if ((sp20[sp18] & 0x30) && !(gBattleMons[gActiveBank].status2 & 0x4000000)) + if ((sp20[sp18] & 0x30) && !(gBattleMons[gActiveBank].status2 & 0x100000)) { - gBattleMons[gActiveBank].status2 |= 0x4000000; + gBattleMons[gActiveBank].status2 |= 0x100000; sp1C = 0; } //_0803E41E @@ -235,8 +236,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) r10 &= ~0x20; - sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) << (d * 2); - //r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); + sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) >> (d * 2); sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); if (sp0 <= 2 && sp28 > 4) { @@ -255,8 +255,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { if (r10 & 1) { - s32 r5; - u32 r4; + s32 r5; // TODO: the ev count is a separate variable u32 r1; switch (sp28) @@ -271,14 +270,13 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp0 = r1; if (r1 < 100) { - r1 += sp20[sp24]; - if (r1 > 100) - r4 = 100 - r1; + if (r1 + sp20[sp24] > 100) + r4 = 100 - (r1 + sp20[sp24]) + sp20[sp24]; else r4 = sp20[sp24]; - //_0803E8F6 - if (r5 + r4 > 510) - r4 = (r4 - 510) - (r5 + r4); + r1 = r5 + r4; + if (r1 > 510) + r4 += 510 - r1; sp0 += r4; SetMonData(pkmn, gUnknown_082082F2[sp28], &sp0); CalculateMonStats(pkmn); @@ -336,7 +334,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL); break; case 0xFE: - sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) * 2; + sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) / 2; if (sp0 == 0) sp0 = 1; break; @@ -472,7 +470,6 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (r10 & 1) { u16 r5; - u32 r4; u32 r1; switch (sp28) @@ -489,14 +486,13 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp0 = r1; if (r1 < 100) { - r1 += sp20[sp24]; - if (r1 > 100) - r4 = 100 - r1; + if (r1 + sp20[sp24] > 100) + r4 = 100 - (r1 + sp20[sp24]) + sp20[sp24]; else r4 = sp20[sp24]; - //_0803EEC6 - if (r5 + r4 > 510) - r4 = (r4 + 510) - (r5 + r4); + r1 = r5 + r4; + if (r1 > 510) + r4 += 510 - r1; sp0 += r4; SetMonData(pkmn, gUnknown_082082F2[sp28 + 2], &sp0); CalculateMonStats(pkmn); @@ -506,11 +502,11 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) break; case 4: //_0803EEF8 - sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) << (d * 2); + sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) >> (d * 2); if (sp0 < 3) { //_0803EF18 - u8 r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); + r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); sp0 &= gUnknown_0820823C[d]; sp0 += gUnknown_08208240[d] * 3; @@ -531,7 +527,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); if (sp2C > 0 && sp30 == 0x1B) { - sp4 += 0x96 * sp2C / 100; + sp4 += 150 * sp2C / 100; } //to _0803F0D0 hmm... else @@ -568,7 +564,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (sp2C > 0 && sp30 == 0x1B) { //to _0803F0BE - sp4 = 0x96 * sp2C / 100; + sp4 = 150 * sp2C / 100; } else { @@ -603,7 +599,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (sp2C > 0 && sp30 == 0x1B) { //_0803F0BE - sp4 = 0x96 * sp2C / 100; + sp4 = 150 * sp2C / 100; } //_0803F0D0 else -- cgit v1.2.3 From e3238abc63ac7e939ccdc58e555a9dcdc66f3525 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 16:54:02 -0500 Subject: through sub_809B44C --- src/pokemon/pokemon_storage_system_4.c | 86 ++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 9e4865910..1127927bf 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -53,6 +53,9 @@ bool8 sub_809B324(void); bool8 sub_809B358(void); void sub_809B384(void); void sub_809B3E0(void); +void sub_809B44C(u8 a0, u8 a1); +void diegohint2(u8 a0, u8 a1); +void sub_809B548(u8 a0, u8 a1); void diegohint1(u8 a0, u8 a1); bool8 sub_809BF2C(void); void sub_809BF74(void); @@ -1481,3 +1484,86 @@ bool8 sub_809B24C(void) } return TRUE; } + +bool8 sub_809B324(void) +{ + switch (gPokemonStorageSystemPtr->unk_11c0->pos2.y) + { + default: + gPokemonStorageSystemPtr->unk_11c0->pos2.y++; + break; + case 0: + gPokemonStorageSystemPtr->unk_11c0->pos2.y++; + break; + case 8: + return FALSE; + } + return TRUE; +} + +bool8 sub_809B358(void) +{ + switch (gPokemonStorageSystemPtr->unk_11c0->pos2.y) + { + case 0: + return FALSE; + default: + gPokemonStorageSystemPtr->unk_11c0->pos2.y--; + break; + } + return TRUE; +} + +void sub_809B384(void) +{ + switch (gUnknown_020384E4) + { + case 1: + sub_809B44C(14, gUnknown_020384E5); + sub_8099584(0, gUnknown_020384E5); + break; + case 0: + sub_809B44C(get_preferred_box(), gUnknown_020384E5); + sub_8099584(1, gUnknown_020384E5); + break; + default: + return; + } + gUnknown_020384E6 = 1; +} + +void sub_809B3E0(void) +{ + u8 boxId; + switch (gUnknown_020384E4) + { + case 1: + diegohint2(14, gUnknown_020384E5); + sub_809960C(14, gUnknown_020384E5); + break; + case 0: + boxId = get_preferred_box(); + diegohint2(boxId, gUnknown_020384E5); + sub_809960C(boxId, gUnknown_020384E5); + break; + default: + return; + } + gUnknown_020384E6 = 0; +} + +void sub_809B440(void) +{ + sub_809BF74(); +} + +void sub_809B44C(u8 a0, u8 a1) +{ + if (a0 == 14) + gPokemonStorageSystemPtr->unk_25b4 = gPlayerParty[gUnknown_020384E5]; + else + sub_803B4B4(gPokemonStorage.boxes[a0], &gPokemonStorageSystemPtr->unk_25b4); + sub_809B548(a0, a1); + gUnknown_020384E7 = a0; + gUnknown_020384E8 = a1; +} -- cgit v1.2.3 From 4e9f791782fff682b133dab88533fe587b520815 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 16:09:22 -0600 Subject: match sub_803E1B0 --- src/pokemon/pokemon_item_effect.c | 40 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index 92bf01171..ae24db061 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -97,7 +97,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp34 = 4; } //_0803E2F4 - + if (b < 13 || b > 0xB2) return 1; if (gItemEffectTable[b - 13] == NULL && b != 0xAF) @@ -163,7 +163,6 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (gBattleMons[gActiveBank].statStages[3] > 12) gBattleMons[gActiveBank].statStages[3] = 12; sp1C = 0; - //asm(""); } break; case 2: @@ -244,7 +243,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), sp0, d) - sp28; - sp0 += GetMonData(pkmn, MON_DATA_PP1 + d, NULL); + sp0 = GetMonData(pkmn, MON_DATA_PP1 + d, NULL) + sp0; SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); sp1C = 0; } @@ -255,7 +254,8 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { if (r10 & 1) { - s32 r5; // TODO: the ev count is a separate variable + u16 evCount; + s32 r5; u32 r1; switch (sp28) @@ -263,8 +263,8 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) case 0: case 1: //_0803E8AC - r5 = GetMonEVCount(pkmn); - if (r5 >= 510) + evCount = GetMonEVCount(pkmn); + if (evCount >= 510) return 1; r1 = GetMonData(pkmn, gUnknown_082082F2[sp28], NULL); sp0 = r1; @@ -274,7 +274,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) r4 = 100 - (r1 + sp20[sp24]) + sp20[sp24]; else r4 = sp20[sp24]; - r1 = r5 + r4; + r1 = evCount + r4; if (r1 > 510) r4 += 510 - r1; sp0 += r4; @@ -282,7 +282,6 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) CalculateMonStats(pkmn); sp24++; sp1C = 0; - //asm(""); } break; case 2: @@ -347,7 +346,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { if (e == 0) { - sp0 += GetMonData(pkmn, MON_DATA_HP, NULL); + sp0 = GetMonData(pkmn, MON_DATA_HP, NULL) + sp0; if (sp0 > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL); //_0803EAB8 @@ -357,10 +356,9 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) gBattleMons[sp34].hp = sp0; if (!(r10 & 0x10) && GetBankSide(gActiveBank) == 0) { - u8 r5; - if (gBattleResults.unk3 < 255) gBattleResults.unk3++; + // I have to re-use this variable to match. r5 = gActiveBank; gActiveBank = sp34; EmitGetAttributes(0, 0, 0); @@ -444,7 +442,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) case 7: //_0803EDF4 { - u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, d); + u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, b); if (targetSpecies != SPECIES_NONE) { @@ -471,7 +469,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { u16 r5; u32 r1; - + switch (sp28) { case 0: @@ -510,11 +508,11 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); sp0 &= gUnknown_0820823C[d]; sp0 += gUnknown_08208240[d] * 3; - + SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), sp0, d) - r4; - sp0 += GetMonData(pkmn, MON_DATA_PP1 + b, NULL); - SetMonData(pkmn, MON_DATA_PP1 + b, &sp0); + sp0 = GetMonData(pkmn, MON_DATA_PP1 + d, NULL) + sp0; + SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); sp1C = 0; } break; @@ -535,7 +533,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp4 += sp2C; } //_0803F0DC (tail merged) - + if (sp2C > 0) { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) @@ -564,14 +562,14 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (sp2C > 0 && sp30 == 0x1B) { //to _0803F0BE - sp4 = 150 * sp2C / 100; + sp4 += 150 * sp2C / 100; } else { sp4 += sp2C; } //_0803F0DC (tail merged) - + if (sp2C > 0) { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) @@ -599,7 +597,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) if (sp2C > 0 && sp30 == 0x1B) { //_0803F0BE - sp4 = 150 * sp2C / 100; + sp4 += 150 * sp2C / 100; } //_0803F0D0 else @@ -607,7 +605,7 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) sp4 += sp2C; } //_0803F0DC - + if (sp2C > 0) { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) -- cgit v1.2.3 From 08a108f432325d6501f3c6473a6d43265af0d5b7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 17:14:39 -0500 Subject: through diegohint1 --- src/field/daycare.c | 2 +- src/pokemon/pokemon_1.c | 2 +- src/pokemon/pokemon_storage_system_4.c | 37 +++++++++++++++++++++++++++++++++- src/pokemon/pokemon_summary_screen.c | 2 +- 4 files changed, 39 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field/daycare.c b/src/field/daycare.c index 36dd7ec03..2f0c7281e 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -205,7 +205,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DayCare * daycare, u8 slot) GetBoxMonNick(&daycare->mons[slot], gStringVar1); species = GetBoxMonData(&daycare->mons[slot], MON_DATA_SPECIES); - sub_803B4B4(&daycare->mons[slot], &pokemon); + ExpandBoxMon(&daycare->mons[slot], &pokemon); if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 0242e7444..06a088046 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -524,7 +524,7 @@ void CalculateMonStats(struct Pokemon *mon) SetMonData(mon, MON_DATA_HP, ¤tHP); } -void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest) +void ExpandBoxMon(const struct BoxPokemon *src, struct Pokemon *dest) { u32 value = 0; dest->box = *src; diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 1127927bf..73d71fa0e 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -60,6 +60,7 @@ void diegohint1(u8 a0, u8 a1); bool8 sub_809BF2C(void); void sub_809BF74(void); void sub_809C028(void); +void sub_809C04C(struct Pokemon *pokemon, u8 a1); void sub_809CC04(void); // .rodata @@ -1562,8 +1563,42 @@ void sub_809B44C(u8 a0, u8 a1) if (a0 == 14) gPokemonStorageSystemPtr->unk_25b4 = gPlayerParty[gUnknown_020384E5]; else - sub_803B4B4(gPokemonStorage.boxes[a0], &gPokemonStorageSystemPtr->unk_25b4); + ExpandBoxMon(gPokemonStorage.boxes[a0] + a1, &gPokemonStorageSystemPtr->unk_25b4); sub_809B548(a0, a1); gUnknown_020384E7 = a0; gUnknown_020384E8 = a1; } + +void diegohint2(u8 a0, u8 a1) +{ + if (a0 == 14) + { + gPlayerParty[a1] = gPokemonStorageSystemPtr->unk_25b4; + } + else + { + BoxMonRestorePP(&gPokemonStorageSystemPtr->unk_25b4.box); + gPokemonStorage.boxes[a0][a1] = gPokemonStorageSystemPtr->unk_25b4.box; + } +} + +void sub_809B548(u8 a0, u8 a1) +{ + if (a0 == 14) + ZeroMonData(gPlayerParty + a1); + else + ZeroBoxMonData(gPokemonStorage.boxes[a0] + a1); +} + +void diegohint1(u8 a0, u8 a1) +{ + if (a0 == 14) + gPokemonStorageSystemPtr->unk_2618 = gPlayerParty[a1]; + else + ExpandBoxMon(gPokemonStorage.boxes[a0] + a1, &gPokemonStorageSystemPtr->unk_2618); + diegohint2(a0, a1); + gPokemonStorageSystemPtr->unk_25b4 = gPokemonStorageSystemPtr->unk_2618; + sub_809C04C(&gPokemonStorageSystemPtr->unk_25b4, 0); + gUnknown_020384E7 = a0; + gUnknown_020384E8 = a1; +} diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index ce83ad070..dce65898c 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -2253,7 +2253,7 @@ static void sub_809F678(struct Pokemon *mon) else { struct BoxPokemon *mons = pssData.monList.boxMons; - sub_803B4B4(&mons[pssData.monIndex], mon); + ExpandBoxMon(&mons[pssData.monIndex], mon); } } -- cgit v1.2.3 From 3295ffbd5bcd75d586e3f6dde7469cad1fce2c85 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 17:36:16 -0600 Subject: clean up pokemon_item_effect.c --- src/battle/battle_4.c | 4 +- src/pokemon/pokemon_item_effect.c | 539 ++++++++++++++++---------------------- 2 files changed, 228 insertions(+), 315 deletions(-) (limited to 'src') diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index ae8f94130..6b048f0ab 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -147,7 +147,7 @@ void ReshowBattleScreenAfterMenu(void); void BattleMainCB2(void); void AddMoney(u32* moneySaveblock, u32 to_give); u8 CountAliveMons(u8 caseID); -void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); +void PokemonUseItemEffects(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp); u8 CanRunFromBattle(void); u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move u8 CastformDataTypeChange(u8 bank); @@ -11996,7 +11996,7 @@ static void atk74_hpthresholds2(void) static void atk75_useitemonopponent(void) { gBankInMenu = gBankAttacker; - sub_803E1B0(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); + PokemonUseItemEffects(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); gBattlescriptCurrInstr += 1; } diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon/pokemon_item_effect.c index ae24db061..4ebece3b3 100644 --- a/src/pokemon/pokemon_item_effect.c +++ b/src/pokemon/pokemon_item_effect.c @@ -1,4 +1,6 @@ #include "global.h" +#include "constants/battle_constants.h" +#include "constants/hold_effects.h" #include "constants/items.h" #include "constants/species.h" #include "battle.h" @@ -23,7 +25,7 @@ extern u8 gStringBank; extern struct BattlePokemon gBattleMons[]; extern struct BattleEnigmaBerry gEnigmaBerries[]; -const u8 gUnknown_082082F2[] = +static const u8 sGetMonDataEVConstants[] = { MON_DATA_HP_EV, MON_DATA_ATK_EV, @@ -37,218 +39,201 @@ extern u8 gUnknown_08208238[]; extern u8 gUnknown_0820823C[]; extern u8 gUnknown_08208240[]; -bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e); +bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e); -bool8 ExecuteTableBasedItemEffect_(struct Pokemon *pkmn, u16 b, u8 c, u8 d) +bool8 ExecuteTableBasedItemEffect_(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex) { - return sub_803E1B0(pkmn, b, c, d, 0); + return PokemonUseItemEffects(pkmn, item, partyIndex, moveIndex, 0); } -bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) +bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e) { - u32 sp0; - s32 sp4; - s32 sp18; - bool8 sp1C = TRUE; - const u8 *sp20; + u32 data; + s32 friendship; + s32 cmdIndex; + bool8 retVal = TRUE; + const u8 *itemEffect; u8 sp24 = 6; u32 sp28; s8 sp2C = 0; - u8 sp30; + u8 holdEffect; u8 sp34 = 4; - u16 item; + u16 heldItem; u8 r10; u32 r4; - item = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL); - if (item == 0xAF) + heldItem = GetMonData(pkmn, MON_DATA_HELD_ITEM, NULL); + if (heldItem == ITEM_ENIGMA_BERRY) { if (gMain.inBattle) - sp30 = gEnigmaBerries[gBankInMenu].holdEffect; + holdEffect = gEnigmaBerries[gBankInMenu].holdEffect; else - sp30 = gSaveBlock1.enigmaBerry.holdEffect; + holdEffect = gSaveBlock1.enigmaBerry.holdEffect; } - //_0803E240 else { - sp30 = ItemId_GetHoldEffect(item); + holdEffect = ItemId_GetHoldEffect(heldItem); } - //_0803E248 gStringBank = gBankInMenu; if (gMain.inBattle) { gActiveBank = gBankInMenu; - sp18 = (GetBankSide(gActiveBank) != 0); - while (sp18 < gNoOfAllBanks) + cmdIndex = (GetBankSide(gActiveBank) != 0); + while (cmdIndex < gNoOfAllBanks) { - if (gBattlePartyID[sp18] == c) + if (gBattlePartyID[cmdIndex] == partyIndex) { - sp34 = sp18; + sp34 = cmdIndex; break; } - sp18 += 2; + cmdIndex += 2; } } - //_0803E2E8 else { gActiveBank = 0; sp34 = 4; } - //_0803E2F4 - if (b < 13 || b > 0xB2) - return 1; - if (gItemEffectTable[b - 13] == NULL && b != 0xAF) - return 1; + if (!IS_POKEMON_ITEM(item)) + return TRUE; + if (gItemEffectTable[item - 13] == NULL && item != ITEM_ENIGMA_BERRY) + return TRUE; - if (b == 0xAF) + if (item == ITEM_ENIGMA_BERRY) { - //_0803E31E if (gMain.inBattle) - sp20 = gEnigmaBerries[gActiveBank].itemEffect; + itemEffect = gEnigmaBerries[gActiveBank].itemEffect; else - sp20 = gSaveBlock1.enigmaBerry.itemEffect; + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; } - //_0803E372 else { - sp20 = gItemEffectTable[b - 13]; + itemEffect = gItemEffectTable[item - 13]; } - // Now, the HUGE loop! - for (sp18 = 0; sp18 < 6; sp18++) + for (cmdIndex = 0; cmdIndex < 6; cmdIndex++) { - switch (sp18) + switch (cmdIndex) { + // status healing effects case 0: - //_0803E3A8 - // TODO: stop re-loading sp34 - if ((sp20[sp18] & 0x80) && gMain.inBattle - && sp34 != 4 && (gBattleMons[sp34].status2 & 0xF0000)) + if ((itemEffect[cmdIndex] & 0x80) + && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_INFATUATION)) { - gBattleMons[sp34].status2 &= ~0xF0000; - sp1C = 0; + gBattleMons[sp34].status2 &= ~STATUS2_INFATUATION; + retVal = FALSE; } - //_0803E3F0 - if ((sp20[sp18] & 0x30) && !(gBattleMons[gActiveBank].status2 & 0x100000)) + if ((itemEffect[cmdIndex] & 0x30) + && !(gBattleMons[gActiveBank].status2 & STATUS2_FOCUS_ENERGY)) { - gBattleMons[gActiveBank].status2 |= 0x100000; - sp1C = 0; + gBattleMons[gActiveBank].status2 |= STATUS2_FOCUS_ENERGY; + retVal = FALSE; } - //_0803E41E - if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[1] < 12) + if ((itemEffect[cmdIndex] & 0xF) + && gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] < 12) { - gBattleMons[gActiveBank].statStages[1] += sp20[sp18] & 0xF; - if (gBattleMons[gActiveBank].statStages[1] > 12) - gBattleMons[gActiveBank].statStages[1] = 12; - sp1C = 0; + gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF; + if (gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] > 12) + gBattleMons[gActiveBank].statStages[STAT_STAGE_ATK] = 12; + retVal = FALSE; } break; + // in-battle stat boosting effects? case 1: - //_0803E474 - // r3 might be a temporary variable - if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[2] < 12) + if ((itemEffect[cmdIndex] & 0xF0) + && gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] < 12) { - gBattleMons[gActiveBank].statStages[2] += (sp20[sp18] & 0xF0) >> 4; - if (gBattleMons[gActiveBank].statStages[2] > 12) - gBattleMons[gActiveBank].statStages[2] = 12; - sp1C = 0; + gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4; + if (gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] > 12) + gBattleMons[gActiveBank].statStages[STAT_STAGE_DEF] = 12; + retVal = FALSE; } - //_0803E4BA - if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[3] < 12) + if ((itemEffect[cmdIndex] & 0xF) + && gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] < 12) { - gBattleMons[gActiveBank].statStages[3] += sp20[sp18] & 0xF; - if (gBattleMons[gActiveBank].statStages[3] > 12) - gBattleMons[gActiveBank].statStages[3] = 12; - sp1C = 0; + gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF; + if (gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] > 12) + gBattleMons[gActiveBank].statStages[STAT_STAGE_SPEED] = 12; + retVal = FALSE; } break; + // more stat boosting effects? case 2: - //_0803E508 - //asm_comment("case2"); - if ((sp20[sp18] & 0xF0) && gBattleMons[gActiveBank].statStages[6] < 12) + if ((itemEffect[cmdIndex] & 0xF0) + && gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] < 12) { - gBattleMons[gActiveBank].statStages[6] += (sp20[sp18] & 0xF0) >> 4; - if (gBattleMons[gActiveBank].statStages[6] > 12) - gBattleMons[gActiveBank].statStages[6] = 12; - sp1C = 0; + gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4; + if (gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] > 12) + gBattleMons[gActiveBank].statStages[STAT_STAGE_ACC] = 12; + retVal = FALSE; } - //_0803E54E - if ((sp20[sp18] & 0xF) && gBattleMons[gActiveBank].statStages[4] < 12) + if ((itemEffect[cmdIndex] & 0xF) + && gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] < 12) { - gBattleMons[gActiveBank].statStages[4] += sp20[sp18] & 0xF; - if (gBattleMons[gActiveBank].statStages[4] > 12) - gBattleMons[gActiveBank].statStages[4] = 12; - sp1C = 0; + gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF; + if (gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] > 12) + gBattleMons[gActiveBank].statStages[STAT_STAGE_SPATK] = 12; + retVal = FALSE; } break; case 3: - //_0803E59C - if ((sp20[sp18] & 0x80) && gSideTimers[GetBankSide(gActiveBank)].mistTimer == 0) + if ((itemEffect[cmdIndex] & 0x80) + && gSideTimers[GetBankSide(gActiveBank)].mistTimer == 0) { gSideTimers[GetBankSide(gActiveBank)].mistTimer = 5; - sp1C = 0; + retVal = FALSE; } - //_0803E5E4 - if ((sp20[sp18] & 0x40) && GetMonData(pkmn, MON_DATA_LEVEL, NULL) != 100) + if ((itemEffect[cmdIndex] & 0x40) // raise level + && GetMonData(pkmn, MON_DATA_LEVEL, NULL) != 100) { - sp0 = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL, NULL) + 1]; - SetMonData(pkmn, MON_DATA_EXP, &sp0); + data = gExperienceTables[gBaseStats[GetMonData(pkmn, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(pkmn, MON_DATA_LEVEL, NULL) + 1]; + SetMonData(pkmn, MON_DATA_EXP, &data); CalculateMonStats(pkmn); - sp1C = 0; + retVal = FALSE; } - //_0803E646 - if ((sp20[sp18] & 0x20) && HealStatusConditions(pkmn, c, 7, sp34) == 0) + if ((itemEffect[cmdIndex] & 0x20) + && HealStatusConditions(pkmn, partyIndex, 7, sp34) == 0) { if (sp34 != 4) - gBattleMons[sp34].status2 &= 0xF7FFFFFF; - sp1C = 0; + gBattleMons[sp34].status2 &= ~STATUS2_NIGHTMARE; + retVal = FALSE; } - //_0803E682 - if ((sp20[sp18] & 0x10) && HealStatusConditions(pkmn, c, 0xF88, sp34) == 0) - sp1C = 0; - //_0803E6A2 - if ((sp20[sp18] & 8) && HealStatusConditions(pkmn, c, 16, sp34) == 0) - sp1C = 0; - //_0803E6C2 - if ((sp20[sp18] & 4) && HealStatusConditions(pkmn, c, 32, sp34) == 0) - sp1C = 0; - //_0803E6E2 - if ((sp20[sp18] & 2) && HealStatusConditions(pkmn, c, 64, sp34) == 0) - sp1C = 0; - //_0803E702 - if ((sp20[sp18] & 1) && gMain.inBattle - && sp34 != 4 && (gBattleMons[sp34].status2 & 7)) + if ((itemEffect[cmdIndex] & 0x10) && HealStatusConditions(pkmn, partyIndex, 0xF88, sp34) == 0) + retVal = FALSE; + if ((itemEffect[cmdIndex] & 8) && HealStatusConditions(pkmn, partyIndex, 16, sp34) == 0) + retVal = FALSE; + if ((itemEffect[cmdIndex] & 4) && HealStatusConditions(pkmn, partyIndex, 32, sp34) == 0) + retVal = FALSE; + if ((itemEffect[cmdIndex] & 2) && HealStatusConditions(pkmn, partyIndex, 64, sp34) == 0) + retVal = FALSE; + if ((itemEffect[cmdIndex] & 1) // heal confusion + && gMain.inBattle && sp34 != 4 && (gBattleMons[sp34].status2 & STATUS2_CONFUSION)) { - gBattleMons[sp34].status2 &= ~7; - sp1C = 0; + gBattleMons[sp34].status2 &= ~STATUS2_CONFUSION; + retVal = FALSE; } break; + // EV, HP, and PP raising effects case 4: - //_0803E77C - r10 = sp20[sp18]; + r10 = itemEffect[cmdIndex]; if (r10 & 0x20) { - //u16 r4; - r10 &= ~0x20; - - sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) >> (d * 2); - sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); - if (sp0 <= 2 && sp28 > 4) + data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[moveIndex]) >> (moveIndex * 2); + sp28 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); + if (data <= 2 && sp28 > 4) { - sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gUnknown_08208240[d]; - SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); + data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) + gUnknown_08208240[moveIndex]; + SetMonData(pkmn, MON_DATA_PP_BONUSES, &data); - sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), sp0, d) - sp28; - sp0 = GetMonData(pkmn, MON_DATA_PP1 + d, NULL) + sp0; - SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); - sp1C = 0; + data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - sp28; + data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data; + SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); + retVal = FALSE; } } - //_0803E854 sp28 = 0; while (r10 != 0) { @@ -256,36 +241,32 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { u16 evCount; s32 r5; - u32 r1; - + switch (sp28) { case 0: case 1: - //_0803E8AC evCount = GetMonEVCount(pkmn); if (evCount >= 510) - return 1; - r1 = GetMonData(pkmn, gUnknown_082082F2[sp28], NULL); - sp0 = r1; - if (r1 < 100) + return TRUE; + data = GetMonData(pkmn, sGetMonDataEVConstants[sp28], NULL); + if (data < 100) { - if (r1 + sp20[sp24] > 100) - r4 = 100 - (r1 + sp20[sp24]) + sp20[sp24]; + if (data + itemEffect[sp24] > 100) + r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24]; else - r4 = sp20[sp24]; - r1 = evCount + r4; - if (r1 > 510) - r4 += 510 - r1; - sp0 += r4; - SetMonData(pkmn, gUnknown_082082F2[sp28], &sp0); + r4 = itemEffect[sp24]; + if (evCount + r4 > 510) + r4 += 510 - (evCount + r4); + data += r4; + SetMonData(pkmn, sGetMonDataEVConstants[sp28], &data); CalculateMonStats(pkmn); sp24++; - sp1C = 0; + retVal = FALSE; } break; case 2: - //_0803E934 + // revive? if (r10 & 0x10) { if (GetMonData(pkmn, MON_DATA_HP, NULL) != 0) @@ -299,22 +280,17 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { gAbsentBankFlags &= ~gBitTable[sp34]; CopyPlayerPartyMonToBattleData(sp34, pokemon_order_func(gBattlePartyID[sp34])); - // tail merge, possibly? if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255) gBattleResults.unk4++; } - //_0803E9B4 else { gAbsentBankFlags &= ~gBitTable[gActiveBank ^ 2]; if (GetBankSide(gActiveBank) == 0 && gBattleResults.unk4 < 255) gBattleResults.unk4++; } - //_0803E9CC } - //to _0803EA0A } - //_0803E9F4 else { if (GetMonData(pkmn, MON_DATA_HP, NULL) == 0) @@ -323,37 +299,32 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) break; } } - //_0803EA0A - sp0 = sp20[sp24++]; - switch (sp0) + data = itemEffect[sp24++]; + switch (data) { case 0xFF: - //_0803EA2C - if (sp0 == 0xFF) // wat? - sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL); + data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) - GetMonData(pkmn, MON_DATA_HP, NULL); break; case 0xFE: - sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) / 2; - if (sp0 == 0) - sp0 = 1; + data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL) / 2; + if (data == 0) + data = 1; break; case 0xFD: - sp0 = eStatHp; + data = eStatHp; break; } - //_0803EA6C if (GetMonData(pkmn, MON_DATA_MAX_HP, NULL) != GetMonData(pkmn, MON_DATA_HP, NULL)) { if (e == 0) { - sp0 = GetMonData(pkmn, MON_DATA_HP, NULL) + sp0; - if (sp0 > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) - sp0 = GetMonData(pkmn, MON_DATA_MAX_HP, NULL); - //_0803EAB8 - SetMonData(pkmn, MON_DATA_HP, &sp0); + data = GetMonData(pkmn, MON_DATA_HP, NULL) + data; + if (data > GetMonData(pkmn, MON_DATA_MAX_HP, NULL)) + data = GetMonData(pkmn, MON_DATA_MAX_HP, NULL); + SetMonData(pkmn, MON_DATA_HP, &data); if (gMain.inBattle && sp34 != 4) { - gBattleMons[sp34].hp = sp0; + gBattleMons[sp34].hp = data; if (!(r10 & 0x10) && GetBankSide(gActiveBank) == 0) { if (gBattleResults.unk3 < 255) @@ -366,17 +337,13 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) gActiveBank = r5; } } - //to _0803EB48 } - //_0803EB40 else { - gBattleMoveDamage = -sp0; + gBattleMoveDamage = -data; } - //_0803EB48 - sp1C = 0; + retVal = FALSE; } - //_0803EB4C r10 &= 0xEF; break; case 3: @@ -386,89 +353,76 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) { u16 r4; - sp0 = GetMonData(pkmn, MON_DATA_PP1 + r5, NULL); + data = GetMonData(pkmn, MON_DATA_PP1 + r5, NULL); r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - if (sp0 != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) + if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) { - sp0 += sp20[sp24]; + data += itemEffect[sp24]; r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - if (sp0 > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) + if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5)) { r4 = GetMonData(pkmn, MON_DATA_MOVE1 + r5, NULL); - sp0 = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5); + data = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), r5); } - //_0803EC28 - SetMonData(pkmn, MON_DATA_PP1 + r5, &sp0); + SetMonData(pkmn, MON_DATA_PP1 + r5, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) && !(gDisableStructs[sp34].unk18_b & gBitTable[r5])) - gBattleMons[sp34].pp[r5] = sp0; - //_0803EC8E - sp1C = 0; + gBattleMons[sp34].pp[r5] = data; + retVal = FALSE; } - //_0803EC92 } - //_0803EC9A sp24++; } - //_0803ECB8 else { u16 r4; - sp0 = GetMonData(pkmn, MON_DATA_PP1 + d, NULL); - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); - if (sp0 != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d)) + data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL); + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); + if (data != CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex)) { - //_0803ED00 - sp0 += sp20[sp24++]; - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); - if (sp0 > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d)) + data += itemEffect[sp24++]; + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); + if (data > CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex)) { - r4 = GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL); - sp0 = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); + r4 = GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL); + data = CalculatePPWithBonus(r4, GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); } - //_0803ED74 - SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); + SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); if (gMain.inBattle && sp34 != 4 && !(gBattleMons[sp34].status2 & 0x200000) - && !(gDisableStructs[sp34].unk18_b & gBitTable[d])) - gBattleMons[sp34].pp[d] = sp0; - //_0803EDD8 - sp1C = 0; + && !(gDisableStructs[sp34].unk18_b & gBitTable[moveIndex])) + gBattleMons[sp34].pp[moveIndex] = data; + retVal = FALSE; } } break; case 7: - //_0803EDF4 { - u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, b); + u16 targetSpecies = GetEvolutionTargetSpecies(pkmn, 2, item); if (targetSpecies != SPECIES_NONE) { - BeginEvolutionScene(pkmn, targetSpecies, 0, c); - return 0; + BeginEvolutionScene(pkmn, targetSpecies, 0, partyIndex); + return FALSE; } } break; } } - //_0803EE0A sp28++; r10 >>= 1; } break; case 5: - //_0803EE1E - r10 = sp20[sp18]; + r10 = itemEffect[cmdIndex]; sp28 = 0; while (r10 != 0) { - //_0803EE32 if (r10 & 1) { - u16 r5; - u32 r1; + u16 evCount; switch (sp28) { @@ -476,152 +430,112 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) case 1: case 2: case 3: - //_0803EE74 - r5 = GetMonEVCount(pkmn); - if (r5 >= 510) - return 1; - r1 = GetMonData(pkmn, gUnknown_082082F2[sp28 + 2], NULL); - sp0 = r1; - if (r1 < 100) + evCount = GetMonEVCount(pkmn); + if (evCount >= 510) + return TRUE; + data = GetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], NULL); + if (data < 100) { - if (r1 + sp20[sp24] > 100) - r4 = 100 - (r1 + sp20[sp24]) + sp20[sp24]; + if (data + itemEffect[sp24] > 100) + r4 = 100 - (data + itemEffect[sp24]) + itemEffect[sp24]; else - r4 = sp20[sp24]; - r1 = r5 + r4; - if (r1 > 510) - r4 += 510 - r1; - sp0 += r4; - SetMonData(pkmn, gUnknown_082082F2[sp28 + 2], &sp0); + r4 = itemEffect[sp24]; + if (evCount + r4 > 510) + r4 += 510 - (evCount + r4); + data += r4; + SetMonData(pkmn, sGetMonDataEVConstants[sp28 + 2], &data); CalculateMonStats(pkmn); - sp1C = 0; + retVal = FALSE; sp24++; } break; case 4: - //_0803EEF8 - sp0 = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[d]) >> (d * 2); - if (sp0 < 3) + data = (GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL) & gUnknown_08208238[moveIndex]) >> (moveIndex * 2); + if (data < 3) { - //_0803EF18 - r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), d); - sp0 = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); - sp0 &= gUnknown_0820823C[d]; - sp0 += gUnknown_08208240[d] * 3; + r4 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL), moveIndex); + data = GetMonData(pkmn, MON_DATA_PP_BONUSES, NULL); + data &= gUnknown_0820823C[moveIndex]; + data += gUnknown_08208240[moveIndex] * 3; - SetMonData(pkmn, MON_DATA_PP_BONUSES, &sp0); - sp0 = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + d, NULL), sp0, d) - r4; - sp0 = GetMonData(pkmn, MON_DATA_PP1 + d, NULL) + sp0; - SetMonData(pkmn, MON_DATA_PP1 + d, &sp0); - sp1C = 0; + SetMonData(pkmn, MON_DATA_PP_BONUSES, &data); + data = CalculatePPWithBonus(GetMonData(pkmn, MON_DATA_MOVE1 + moveIndex, NULL), data, moveIndex) - r4; + data = GetMonData(pkmn, MON_DATA_PP1 + moveIndex, NULL) + data; + SetMonData(pkmn, MON_DATA_PP1 + moveIndex, &data); + retVal = FALSE; } break; case 5: - //_0803EFCC - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && sp1C == 0 && sp2C == 0) + if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 100 && retVal == 0 && sp2C == 0) { - //_0803EFEC - sp2C = sp20[sp24]; - sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); - if (sp2C > 0 && sp30 == 0x1B) - { - sp4 += 150 * sp2C / 100; - } - //to _0803F0D0 hmm... + sp2C = itemEffect[sp24]; + friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) + friendship += 150 * sp2C / 100; else - { - sp4 += sp2C; - } - //_0803F0DC (tail merged) - + friendship += sp2C; if (sp2C > 0) { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) - sp4++; - //_0803F0F4 + friendship++; if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) - sp4++; + friendship++; } - //_0803F112 - if (sp4 < 0) - sp4 = 0; - if (sp4 > 255) - sp4 = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &sp4); + if (friendship < 0) + friendship = 0; + if (friendship > 255) + friendship = 255; + SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); } - //to _0803F130 hmm... sp24++; break; case 6: - //_0803F026 if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 100 && GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) < 200 - && sp1C == 0 && sp2C == 0) + && retVal == 0 && sp2C == 0) { - sp2C = sp20[sp24]; - sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); - if (sp2C > 0 && sp30 == 0x1B) - { - //to _0803F0BE - sp4 += 150 * sp2C / 100; - } + sp2C = itemEffect[sp24]; + friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) + friendship += 150 * sp2C / 100; else - { - sp4 += sp2C; - } - //_0803F0DC (tail merged) - + friendship += sp2C; if (sp2C > 0) { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) - sp4++; - //_0803F0F4 + friendship++; if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) - sp4++; + friendship++; } - //_0803F112 - if (sp4 < 0) - sp4 = 0; - if (sp4 > 255) - sp4 = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &sp4); + if (friendship < 0) + friendship = 0; + if (friendship > 255) + friendship = 255; + SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); } - //to _0803F130 hmm... sp24++; break; case 7: - //_0803F07C - if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && sp1C == 0 && sp2C == 0) + if (GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL) >= 200 && retVal == 0 && sp2C == 0) { - sp2C = sp20[sp24]; - sp4 = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); - if (sp2C > 0 && sp30 == 0x1B) - { - //_0803F0BE - sp4 += 150 * sp2C / 100; - } - //_0803F0D0 + sp2C = itemEffect[sp24]; + friendship = GetMonData(pkmn, MON_DATA_FRIENDSHIP, NULL); + if (sp2C > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP) + friendship += 150 * sp2C / 100; else - { - sp4 += sp2C; - } - //_0803F0DC - + friendship += sp2C; if (sp2C > 0) { if (GetMonData(pkmn, MON_DATA_POKEBALL, NULL) == 11) - sp4++; - //_0803F0F4 + friendship++; if (GetMonData(pkmn, MON_DATA_MET_LOCATION, NULL) == sav1_map_get_name()) - sp4++; + friendship++; } - //_0803F112 - if (sp4 < 0) - sp4 = 0; - if (sp4 > 255) - sp4 = 255; - SetMonData(pkmn, MON_DATA_FRIENDSHIP, &sp4); + if (friendship < 0) + friendship = 0; + if (friendship > 255) + friendship = 255; + SetMonData(pkmn, MON_DATA_FRIENDSHIP, &friendship); } - //to _0803F130 sp24++; break; } @@ -632,6 +546,5 @@ bool8 sub_803E1B0(struct Pokemon *pkmn, u16 b, u8 c, u8 d, u8 e) break; } } - //_0803F15A - return sp1C; + return retVal; } -- cgit v1.2.3 From bdb0628c913fe7f2e77598d6390f8f7d951b1703 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 15 Jan 2018 18:58:59 -0500 Subject: vertical scroll indicator labeling and more shop.c --- src/field/berry_tag_screen.c | 2 +- src/field/decoration.c | 24 ++-- src/field/field_specials.c | 24 ++-- src/field/item_menu.c | 84 ++++++------- src/field/menu_helpers.c | 120 +++++++++--------- src/field/money.c | 2 +- src/field/player_pc.c | 50 ++++---- src/field/pokeblock.c | 42 +++---- src/field/secret_base.c | 26 ++-- src/field/shop.c | 290 ++++++++++++++++++++++--------------------- src/field/trader.c | 4 +- src/field/tv.c | 22 ++-- src/pokemon/pokeblock_feed.c | 2 +- src/roulette.c | 6 +- 14 files changed, 352 insertions(+), 346 deletions(-) (limited to 'src') diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index a05d9bf87..bec16334d 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -93,7 +93,7 @@ static bool8 sub_8146058(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); sub_8146288(); REG_BLDCNT = 0; diff --git a/src/field/decoration.c b/src/field/decoration.c index a6c0bd21f..889e8e8a2 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1614,7 +1614,7 @@ void sub_80FE604(u8 taskId) sub_8134104(gUnknown_020388F6); gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; sub_80FEF50(taskId); - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); sub_80F9480(gUnknown_020388F7, 8); LoadScrollIndicatorPalette(); gTasks[taskId].func = sub_80FE868; @@ -1659,7 +1659,7 @@ void sub_80FE758(u8 taskId) gTasks[taskId].func = Task_DecorationPCProcessMenuInput; } else { - sub_80B3068(taskId); + Shop_RunExitSellMenuTask(taskId); } } @@ -1783,17 +1783,17 @@ void sub_80FEABC(u8 taskId, u8 dummy1) u16 i; u16 j; u8 ni; - if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(0), gUnknown_020388F4 != 0)) + if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(TOP_ARROW), gUnknown_020388F4 != 0)) { - CreateVerticalScrollIndicators(0, 0x3c, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0x3c, 0x08); } if (gUnknown_020388F4 + 7 == gUnknown_020388D5) { - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } if (gUnknown_020388F4 + 7 < gUnknown_020388D5) { - CreateVerticalScrollIndicators(1, 0x3c, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x3c, 0x98); } for (i=gUnknown_020388F4; i> 1 != 1) { gUnknown_0203925C |= 0x2; - CreateVerticalScrollIndicators(0, 0x24, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0x24, 0x08); } } @@ -1356,7 +1356,7 @@ void sub_810ECD4(void) if ((gUnknown_0203925C & 1) == 0) { gUnknown_0203925C |= 0x1; - CreateVerticalScrollIndicators(1, 0x24, 0x48); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x24, 0x48); } } @@ -1428,11 +1428,11 @@ void sub_810EEDC(void) { if ((gUnknown_0203925C & 1) != 0) { - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } if ((gUnknown_0203925C >> 1) == 1) { - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); } BuyMenuFreeMemory(); } @@ -1542,7 +1542,7 @@ void ShowGlassWorkshopMenu(void) Menu_DrawStdWindowFrame(0, 0, 10, 11); InitMenu(0, 1, 1, 5, 0, 9); gUnknown_0203925C = 0; - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); sub_810F2B4(); for (i=0; i<5; i++) @@ -1721,7 +1721,7 @@ void sub_810F290(void) if (gUnknown_0203925C >> 1 != 1) { gUnknown_0203925C |= 0x02; - CreateVerticalScrollIndicators(0, 0x2c, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0x2c, 0x08); } } @@ -1730,7 +1730,7 @@ void sub_810F2B4(void) if (!(gUnknown_0203925C & 0x01)) { gUnknown_0203925C |= 0x01; - CreateVerticalScrollIndicators(1, 0x2c, 0x58); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0x2c, 0x58); } } @@ -1739,7 +1739,7 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems) if (newPos == 0) { gUnknown_0203925C ^= 0x02; - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); } else { @@ -1752,7 +1752,7 @@ void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems) else if (newPos + maxItems == gUnknown_0203925A) { gUnknown_0203925C ^= 0x01; - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } } diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e0575af4c..e07021acd 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -34,12 +34,12 @@ #include "task.h" #include "text.h" #include "scanline_effect.h" +#include "menu_helpers.h" #include "ewram.h" // External stuff extern void gpu_pal_allocator_reset__manage_upper_four(void); -extern void sub_80F9020(void); -extern void sub_80F9988(); +extern void SetVerticalScrollIndicatorPriority(); extern void sub_809D104(u16 *, u16, u16, const u8 *, u16, u16, u16, u16); extern void PauseVerticalScrollIndicator(); extern u8 sub_80F9284(void); @@ -50,7 +50,7 @@ extern void pal_fill_black(void); extern bool8 sub_807D770(void); extern u8 sub_80F931C(); extern void sub_808A3F8(u8); -extern void sub_80B3050(void); +extern void Shop_InitExitSellMenu(void); extern void sub_80546B8(u8); extern void sub_804E990(u8); extern void sub_802E424(u8); @@ -392,7 +392,7 @@ static bool8 SetupBagMultistep(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80A34E8(); gMain.state++; break; @@ -405,7 +405,7 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 3: - sub_80F9020(); + ClearBGTilemapBuffers(); ewramBagSetupStep = 0; gMain.state++; break; @@ -437,20 +437,20 @@ static bool8 SetupBagMultistep(void) gMain.state++; break; case 10: - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); - CreateVerticalScrollIndicators(0, 172, 12); - CreateVerticalScrollIndicators(1, 172, 148); - CreateVerticalScrollIndicators(2, 28, 88); - CreateVerticalScrollIndicators(3, 100, 88); - sub_80F9988(0, 2); - sub_80F9988(1, 2); - sub_80F9988(2, 2); - sub_80F9988(3, 2); + CreateVerticalScrollIndicators(TOP_ARROW, 172, 12); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 172, 148); + CreateVerticalScrollIndicators(LEFT_ARROW, 28, 88); + CreateVerticalScrollIndicators(RIGHT_ARROW, 100, 88); + SetVerticalScrollIndicatorPriority(TOP_ARROW, 2); + SetVerticalScrollIndicatorPriority(BOTTOM_ARROW, 2); + SetVerticalScrollIndicatorPriority(LEFT_ARROW, 2); + SetVerticalScrollIndicatorPriority(RIGHT_ARROW, 2); if (sReturnLocation == RETURN_TO_FIELD_4 || sReturnLocation == RETURN_TO_FIELD_5) { - sub_80F979C(2, 1); - sub_80F979C(3, 1); + SetVerticalScrollIndicators(LEFT_ARROW, INVISIBLE); + SetVerticalScrollIndicators(RIGHT_ARROW, INVISIBLE); } gMain.state++; break; @@ -657,10 +657,10 @@ static void sub_80A3770(void) static void sub_80A37C0(u8 taskId) { gTasks[taskId].func = sub_80A50C8; - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); - StartVerticalScrollIndicators(2); - StartVerticalScrollIndicators(3); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); + StartVerticalScrollIndicators(LEFT_ARROW); + StartVerticalScrollIndicators(RIGHT_ARROW); } static void sub_80A37F8(u8 taskId) @@ -702,8 +702,8 @@ static void sub_80A37F8(u8 taskId) sub_80A37C0(FindTaskIdByFunc(sub_80A4F68)); DestroyTask(taskId); ItemListMenu_InitMenu(); - sub_80F979C(2, 0); - sub_80F979C(3, 0); + SetVerticalScrollIndicators(LEFT_ARROW, VISIBLE); + SetVerticalScrollIndicators(RIGHT_ARROW, VISIBLE); } } @@ -1505,14 +1505,14 @@ static void sub_80A47E8(u16 a, int b, int c, int d) break; } if (gBagPocketScrollStates[sCurrentBagPocket].scrollTop != 0) - sub_80F979C(0, 0); + SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); else - sub_80F979C(0, 1); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); if ((sReturnLocation != RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots + 1) || (sReturnLocation == RETURN_TO_FIELD_5 && gBagPocketScrollStates[sCurrentBagPocket].scrollTop + 8 < gBagPocketScrollStates[sCurrentBagPocket].numSlots)) - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); else - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); } static void sub_80A48E8(u16 taskId, int b, int c) @@ -1707,14 +1707,14 @@ static void sub_80A4DD8(u8 taskId, u8 b, u8 c, u8 d, u8 e, u8 digits) static void sub_80A4E8C(s8 delta, u8 b) { PlaySE(SE_SELECT); - sub_80F979C(0, 1); - sub_80F979C(1, 1); - sub_80F979C(2, 1); - sub_80F979C(3, 1); - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); - PauseVerticalScrollIndicator(2); - PauseVerticalScrollIndicator(3); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); + SetVerticalScrollIndicators(LEFT_ARROW, INVISIBLE); + SetVerticalScrollIndicators(RIGHT_ARROW, INVISIBLE); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); + PauseVerticalScrollIndicator(LEFT_ARROW); + PauseVerticalScrollIndicator(RIGHT_ARROW); ChangePocket(gBGTilemapBuffers[2], delta); DrawPocketIndicatorDots(gBGTilemapBuffers[2], sCurrentBagPocket); sub_80A3770(); @@ -1866,10 +1866,10 @@ static void sub_80A50C8(u8 taskId) gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId); - sub_80F98A4(0); - sub_80F98A4(1); - sub_80F98A4(2); - sub_80F98A4(3); + StopVerticalScrollIndicators(TOP_ARROW); + StopVerticalScrollIndicators(BOTTOM_ARROW); + StopVerticalScrollIndicators(LEFT_ARROW); + StopVerticalScrollIndicators(RIGHT_ARROW); sub_80A797C(); } else @@ -2963,7 +2963,7 @@ static void sub_80A62D8(void) gUnknown_02038563 = CreateTask(sub_80A50C8, 0); } -void sub_80A6300(void) +void ItemMenu_LoadSellMenu(void) { sReturnLocation = RETURN_TO_SHOP; SetMainCallback2(sub_80A62D8); @@ -2971,7 +2971,7 @@ void sub_80A6300(void) static void OnBagClose_Shop(u8 taskId) { - gFieldCallback = sub_80B3050; + gFieldCallback = Shop_InitExitSellMenu; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; sub_80A5AE4(taskId); @@ -3523,8 +3523,8 @@ static void sub_80A7230(u8 taskId) break; case 204: PlaySE(SE_SELECT); - sub_80F98A4(2); - sub_80F98A4(3); + StopVerticalScrollIndicators(LEFT_ARROW); + StopVerticalScrollIndicators(RIGHT_ARROW); gSpecialVar_ItemId = ITEM_POKE_BALL; sPopupMenuActionList = gUnknown_083C1708; gUnknown_02038564 = 2; diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 76f0d367e..54668addb 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -18,7 +18,7 @@ static void sub_80F9834(struct Sprite *sprite); -static EWRAM_DATA u8 gUnknown_020388C0[4] = {0}; +static EWRAM_DATA u8 gVerticalScrollIndicatorIds[4] = {0}; static EWRAM_DATA struct YesNoFuncTable gUnknown_020388C4 = {0}; static TaskFunc gUnknown_0300074C; @@ -125,7 +125,7 @@ static const struct SpriteTemplate gSpriteTemplate_83E5A00 = .callback = SpriteCallbackDummy, }; -void sub_80F9020(void) +void ClearBGTilemapBuffers(void) { memset(&gBGTilemapBuffers[1], 0, 0x800); memset(&gBGTilemapBuffers[2], 0, 0x800); @@ -331,19 +331,19 @@ void sub_80F9368(void) DmaClear16(3, PLTT, PLTT_SIZE); } -void sub_80F9438(void) +void ClearVideoCallbacks(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); } -void sub_80F944C(void) +void ClearVerticalScrollIndicatorPalettes(void) { u8 i; for (i = 0; i < 4; i++) { - gUnknown_020388C0[i] = 0xFF; + gVerticalScrollIndicatorIds[i] = 0xFF; } FreeSpritePaletteByTag(SCROLL_INDICATOR_PAL_TAG); @@ -401,92 +401,92 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) switch (id) { - case 0: - if (gUnknown_020388C0[0] == 0xFF) + case TOP_ARROW: + if (gVerticalScrollIndicatorIds[TOP_ARROW] == 0xFF) { - gUnknown_020388C0[0] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); - gSprites[gUnknown_020388C0[0]].data[2] = -1; - if (gUnknown_020388C0[1] != 0xFF) + gVerticalScrollIndicatorIds[TOP_ARROW] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[2] = -1; + if (gVerticalScrollIndicatorIds[BOTTOM_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[0]].pos2.y = gSprites[gUnknown_020388C0[1]].pos2.y * -1; - gSprites[gUnknown_020388C0[0]].data[3] = gSprites[gUnknown_020388C0[1]].data[3]; + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].pos2.y = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].pos2.y * -1; + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3] = gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3]; } else { - gSprites[gUnknown_020388C0[0]].data[3] = 0; + gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3] = 0; } } break; - case 1: - if (gUnknown_020388C0[1] == 0xFF) + case BOTTOM_ARROW: + if (gVerticalScrollIndicatorIds[BOTTOM_ARROW] == 0xFF) { - gUnknown_020388C0[1] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); - gSprites[gUnknown_020388C0[1]].data[2] = 1; - if (gUnknown_020388C0[0] != 0xFF) + gVerticalScrollIndicatorIds[BOTTOM_ARROW] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[2] = 1; + if (gVerticalScrollIndicatorIds[TOP_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[1]].pos2.y = gSprites[gUnknown_020388C0[0]].pos2.y * -1; - gSprites[gUnknown_020388C0[1]].data[3] = gSprites[gUnknown_020388C0[0]].data[3]; + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].pos2.y = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].pos2.y * -1; + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3] = gSprites[gVerticalScrollIndicatorIds[TOP_ARROW]].data[3]; } else { - gSprites[gUnknown_020388C0[1]].data[3] = 0; + gSprites[gVerticalScrollIndicatorIds[BOTTOM_ARROW]].data[3] = 0; } } break; - case 2: - if (gUnknown_020388C0[2] == 0xFF) + case LEFT_ARROW: + if (gVerticalScrollIndicatorIds[LEFT_ARROW] == 0xFF) { - gUnknown_020388C0[2] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); - gSprites[gUnknown_020388C0[2]].data[0] = -1; - if (gUnknown_020388C0[3] != 0xFF) + gVerticalScrollIndicatorIds[LEFT_ARROW] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[0] = -1; + if (gVerticalScrollIndicatorIds[RIGHT_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[2]].pos2.x = gSprites[gUnknown_020388C0[3]].pos2.x * -1; - gSprites[gUnknown_020388C0[2]].data[1] = gSprites[gUnknown_020388C0[3]].data[1]; + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].pos2.x = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].pos2.x * -1; + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1] = gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1]; } else { - gSprites[gUnknown_020388C0[2]].data[1] = 0; + gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1] = 0; } } break; - case 3: - if (gUnknown_020388C0[3] == 0xFF) + case RIGHT_ARROW: + if (gVerticalScrollIndicatorIds[RIGHT_ARROW] == 0xFF) { - gUnknown_020388C0[3] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); - gSprites[gUnknown_020388C0[3]].data[0] = 1; - if (gUnknown_020388C0[2] != 0xFF) + gVerticalScrollIndicatorIds[RIGHT_ARROW] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[0] = 1; + if (gVerticalScrollIndicatorIds[LEFT_ARROW] != 0xFF) { - gSprites[gUnknown_020388C0[3]].pos2.x = gSprites[gUnknown_020388C0[2]].pos2.x * -1; - gSprites[gUnknown_020388C0[3]].data[1] = gSprites[gUnknown_020388C0[2]].data[1]; + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].pos2.x = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].pos2.x * -1; + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1] = gSprites[gVerticalScrollIndicatorIds[LEFT_ARROW]].data[1]; } else { - gSprites[gUnknown_020388C0[3]].data[1] = 0; + gSprites[gVerticalScrollIndicatorIds[RIGHT_ARROW]].data[1] = 0; } } break; } - StartSpriteAnim(&gSprites[gUnknown_020388C0[id]], id & 1); + StartSpriteAnim(&gSprites[gVerticalScrollIndicatorIds[id]], id & 1); } -void sub_80F979C(u8 id, bool8 invisible) +void SetVerticalScrollIndicators(u8 id, bool8 invisible) { - if (id < 4 && gUnknown_020388C0[id] != 0xFF) + if (id < 4 && gVerticalScrollIndicatorIds[id] != 0xFF) { - gSprites[gUnknown_020388C0[id]].invisible = invisible; + gSprites[gVerticalScrollIndicatorIds[id]].invisible = invisible; } } void DestroyVerticalScrollIndicator(u8 id) { - if (id < 4 && gUnknown_020388C0[id] != 0xFF) + if (id < 4 && gVerticalScrollIndicatorIds[id] != 0xFF) { - DestroySprite(&gSprites[gUnknown_020388C0[id]]); - gUnknown_020388C0[id] = 0xFF; + DestroySprite(&gSprites[gVerticalScrollIndicatorIds[id]]); + gVerticalScrollIndicatorIds[id] = 0xFF; } } @@ -530,43 +530,43 @@ static void sub_80F9834(struct Sprite *sprite) } } -void sub_80F98A4(u8 id) +void StopVerticalScrollIndicators(u8 id) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].callback = SpriteCallbackDummy; + gSprites[gVerticalScrollIndicatorIds[id]].callback = SpriteCallbackDummy; } } void StartVerticalScrollIndicators(u8 id) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].callback = sub_80F9834; + gSprites[gVerticalScrollIndicatorIds[id]].callback = sub_80F9834; } } -static void sub_80F9914(u8 id) +static void ResetVerticalScrollIndicators(u8 id) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].pos2.x = 0; - gSprites[gUnknown_020388C0[id]].pos2.y = 0; - gSprites[gUnknown_020388C0[id]].data[1] = 0; - gSprites[gUnknown_020388C0[id]].data[3] = 0; + gSprites[gVerticalScrollIndicatorIds[id]].pos2.x = 0; + gSprites[gVerticalScrollIndicatorIds[id]].pos2.y = 0; + gSprites[gVerticalScrollIndicatorIds[id]].data[1] = 0; + gSprites[gVerticalScrollIndicatorIds[id]].data[3] = 0; } } void PauseVerticalScrollIndicator(u8 id) { - sub_80F98A4(id); - sub_80F9914(id); + StopVerticalScrollIndicators(id); + ResetVerticalScrollIndicators(id); } -void sub_80F9988(u8 id, u8 priority) +void SetVerticalScrollIndicatorPriority(u8 id, u8 priority) { - if (gUnknown_020388C0[id] != 0xFF && id < 4) + if (gVerticalScrollIndicatorIds[id] != 0xFF && id < 4) { - gSprites[gUnknown_020388C0[id]].oam.priority = priority; + gSprites[gVerticalScrollIndicatorIds[id]].oam.priority = priority; } } diff --git a/src/field/money.c b/src/field/money.c index b85ed8009..6cd73f600 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -175,7 +175,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) } __attribute__((naked)) -void sub_80B7B34(u8 var1, u8 var2, int var3) +void Draw10000Sprite(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 0d5c5234b..c6813b955 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -31,7 +31,7 @@ extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); extern u8 sub_807D770(void); extern void sub_808B020(void); -extern void sub_80F944C(void); +extern void ClearVerticalScrollIndicatorPalettes(void); static EWRAM_DATA const u8 *gPcItemMenuOptionOrder = NULL; @@ -563,8 +563,8 @@ static void ItemStorage_ProcessInput(u8 taskId) static void ItemStorage_GoBackToPlayerPCMenu(u8 taskId) { BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); Menu_EraseWindowRect(0, 0, 29, 19); Menu_DisplayDialogueFrame(); InitItemStorageMenu(TASK.CURRENT_ITEM_STORAGE_MENU); @@ -576,8 +576,8 @@ static void ItemStorage_DoItemAction(u8 taskId) s16 *data = TASK.data; u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); // PauseVerticalScrollIndicator + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) { @@ -663,8 +663,8 @@ static void ItemStorage_HandleQuantityRolling(u8 taskId) { PlaySE(SE_SELECT); Menu_EraseWindowRect(6, 6, 0xD, 0xB); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? TASK.FUNC = ItemStorage_ProcessInput; } @@ -724,8 +724,8 @@ static void ItemStorage_ResumeInputFromNoToss(u8 taskId) Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); TASK.FUNC = ItemStorage_ProcessInput; } @@ -757,8 +757,8 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); TASK.FUNC = ItemStorage_ProcessInput; } } @@ -766,8 +766,8 @@ static void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) static void ItemStorage_HandleResumeProcessInput(u8 taskId) { Menu_EraseWindowRect(0x6, 0x6, 0xD, 0xB); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); ItemStorage_DrawBothListAndDescription(taskId); TASK.FUNC = ItemStorage_ProcessInput; } @@ -903,14 +903,14 @@ static void ItemStorage_DrawItemList(u8 taskId) Menu_BlankWindowRect(16, yCoord + 4, 0x1C, 0x12); if (ITEMS_ABOVE_TOP != 0) - CreateVerticalScrollIndicators(0, 0xB8, 8); + CreateVerticalScrollIndicators(TOP_ARROW, 0xB8, 8); else - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); if (ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS <= NUM_ITEMS) - CreateVerticalScrollIndicators(1, 0xB8, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xB8, 0x98); else - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } static void ItemStorage_PrintItemPcResponse(u16 itemId) @@ -974,7 +974,7 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) { s16 *data = TASK.data; - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); ItemStorage_LoadPalette(); Menu_DrawStdWindowFrame(0xF, 0, 0x1D, 0x13); @@ -1055,19 +1055,19 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused Menu_BlankWindowRect(0x15, yCoord + 4, 0x1C, 0x12); if (eMailboxInfo.itemsAbove != 0) - CreateVerticalScrollIndicators(0, 0xC8, 8); + CreateVerticalScrollIndicators(TOP_ARROW, 0xC8, 8); else - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); if (eMailboxInfo.itemsAbove + eMailboxInfo.pageItems <= eMailboxInfo.count) - CreateVerticalScrollIndicators(1, 0xC8, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xC8, 0x98); else - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } static void Mailbox_DrawMailboxMenu(u8 taskId) { - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); Menu_EraseWindowRect(0, 0, 0x1D, 0x13); Menu_DrawStdWindowFrame(0, 0, 0x8, 0x3); @@ -1137,8 +1137,8 @@ static void Mailbox_ProcessInput(u8 taskId) static void Mailbox_CloseScrollIndicators(void) { BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); } static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 7e8bdc2ce..31bdcc398 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -1,7 +1,3 @@ -// - -// - #include "global.h" #include "overworld.h" #include "sprite.h" @@ -248,7 +244,7 @@ static bool8 sub_810B6C0(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); REG_BG2CNT = BGCNT_SCREENBASE(15) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2); REG_BLDCNT = 0; @@ -310,10 +306,10 @@ static bool8 sub_810B6C0(void) } break; case 12: - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); - CreateVerticalScrollIndicators(0, 0xb0, 0x08); - CreateVerticalScrollIndicators(1, 0xb0, 0x98); + CreateVerticalScrollIndicators(TOP_ARROW, 0xb0, 0x08); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xb0, 0x98); gMain.state++; break; case 13: @@ -560,19 +556,19 @@ static void sub_810BDAC(bool8 flag) } if (gUnknown_02039248.unk1) { - sub_80F979C(0, 0); + SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); } else { - sub_80F979C(0, 1); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); } if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } else { - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); } for (i=0; i<5; i++) { @@ -776,8 +772,8 @@ static void sub_810C23C(u8 taskId) static void sub_810C2B0(void) { - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); BuyMenuFreeMemory(); } @@ -810,8 +806,8 @@ static void sub_810C368(u8 taskId) int v0 = 0; if (gUnknown_02039244 > 1) v0 = 2; - sub_80F98A4(0); - sub_80F98A4(1); + StopVerticalScrollIndicators(TOP_ARROW); + StopVerticalScrollIndicators(BOTTOM_ARROW); BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_DrawStdWindowFrame(7, v0 + 4, 13, 11); Menu_PrintItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); @@ -878,7 +874,7 @@ static void sub_810C540(u8 taskId) static void sub_810C5C0(u8 taskId) { - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); gTasks[taskId].func = sub_810C540; } @@ -900,11 +896,11 @@ static void sub_810C610(u8 taskId) static void sub_810C668(u8 taskId) { - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2) { - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } BasicInitMenuWindow(&gWindowTemplate_81E6E50); Menu_EraseWindowRect(7, 6, 13, 11); @@ -924,14 +920,14 @@ static void sub_810C704(u8 taskId) { BasicInitMenuWindow(&gWindowTemplate_81E6E34); sub_810BC84(gUnknown_02039248.unk1); - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); gTasks[taskId].func = sub_810C6DC; } static void sub_810C748(u8 taskId) { - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); Menu_DestroyCursor(); Menu_EraseWindowRect(7, 4, 13, 11); gTasks[taskId].func = sub_810BF7C; diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 203b57867..311cb614a 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -895,7 +895,7 @@ void Task_SecretBasePC_Registry(u8 taskId) s16 *taskData; ScriptContext2_Enable(); - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); LoadScrollIndicatorPalette(); taskData = gTasks[taskId].data; @@ -959,17 +959,17 @@ void sub_80BC6B0(u8 taskId) { Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (n != 7) Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match } else - CreateVerticalScrollIndicators(1, 0xbc, 0x98); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98); if (taskData[2] == 0) - DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(TOP_ARROW); else - CreateVerticalScrollIndicators(0, 0xbc, 0x08); + CreateVerticalScrollIndicators(TOP_ARROW, 0xbc, 0x08); } void sub_80BC7D8(u8 taskId) @@ -1064,8 +1064,8 @@ u8 sub_80BC948(u8 a) void sub_80BC980(u8 taskId) { - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); Menu_DrawStdWindowFrame(1, 0, 12, 5); Menu_PrintItems(2, 1, 2, (const struct MenuAction *)gUnknown_083D13D4); InitMenu(0, 2, 1, 2, 0, 10); @@ -1106,8 +1106,8 @@ void sub_80BCA84(u8 taskId) { s16 *taskData = gTasks[taskId].data; - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); @@ -1165,8 +1165,8 @@ void sub_80BCBF8(u8 taskId) InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); Menu_EraseWindowRect(1, 0, 12, 5); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); gTasks[taskId].func = sub_80BC824; } @@ -1176,8 +1176,8 @@ void sub_80BCC54(u8 taskId) u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); BuyMenuFreeMemory(); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (curBaseIndex == 0) { diff --git a/src/field/shop.c b/src/field/shop.c index 6ca515848..ab529d9a2 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -34,45 +34,45 @@ extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -void sub_80B39D0(int var1, int var2, bool32 hasControlCode); -void sub_80B3A70(void); -void sub_80B4378(u8); +void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode); +void Shop_PrintItemDescText(void); +void Shop_ReturnToBuyMenu(u8); void sub_80B43F0(u8); void Task_ExitBuyMenu(u8); void sub_80B4470(u8); -void sub_80B2EFC(u8 taskId); -void sub_80B2F30(u8 taskId); +void HandleShopMenuBuy(u8 taskId); +void HandleShopMenuSell(u8 taskId); void HandleShopMenuQuit(u8 taskId); -void sub_80B3BF4(u8 taskId); -void sub_80B3D7C(u8 taskId); +void Shop_DoItemPurchase(u8 taskId); +void Shop_CancelItemPurchase(u8 taskId); // iwram static struct MartInfo gMartInfo; // ewram EWRAM_DATA u32 gMartTotalCost = 0; -EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; -EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static -EWRAM_DATA u8 gUnknown_02038730 = 0; +EWRAM_DATA s16 gMartViewportObjects[16][4] = {0}; +EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3] = {0}; +EWRAM_DATA u8 gMartPurchaseHistoryId = 0; EWRAM_DATA u8 gUnknown_02038731 = 0; // rodata static const struct MenuAction2 sBuySellQuitMenuActions[] = { - { MartText_Buy, sub_80B2EFC }, - { MartText_Sell, sub_80B2F30 }, + { MartText_Buy, HandleShopMenuBuy }, + { MartText_Sell, HandleShopMenuSell }, { MartText_Quit2, HandleShopMenuQuit }, }; -static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT -static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT +static const u8 gMartBuySellOptionList[] = {BUY, SELL, EXIT}; +static const u8 gMartBuyNoSellOptionList[] = {BUY, EXIT}; static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; -static const struct YesNoFuncTable gUnknown_083CC708[] = +static const struct YesNoFuncTable sShopPurchaseYesNoFuncs[] = { - sub_80B3BF4, - sub_80B3D7C + Shop_DoItemPurchase, + Shop_CancelItemPurchase }; u8 CreateShopMenu(u8 martType) @@ -85,13 +85,13 @@ u8 CreateShopMenu(u8 martType) { gMartInfo.numChoices = 2; Menu_DrawStdWindowFrame(0, 0, 10, 7); - Menu_PrintItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8); + Menu_PrintItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gMartBuySellOptionList); } else { gMartInfo.numChoices = 1; Menu_DrawStdWindowFrame(0, 0, 10, 5); - Menu_PrintItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB); + Menu_PrintItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gMartBuyNoSellOptionList); } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel @@ -142,11 +142,11 @@ void sub_80B2E38(u8 var) PlaySE(SE_SELECT); if (gMartInfo.martType == MART_TYPE_0) { - sBuySellQuitMenuActions[gUnknown_083CC6E8[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(local); } else { - sBuySellQuitMenuActions[gUnknown_083CC6EB[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(local); } } else if (gMain.newKeys & B_BUTTON) @@ -156,19 +156,19 @@ void sub_80B2E38(u8 var) } } -void sub_80B2EFC(u8 taskId) +void HandleShopMenuBuy(u8 taskId) { gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; - gTasks[taskId].func = sub_80B2FA0; + gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; fade_screen(1, 0); } -void sub_80B2F30(u8 taskId) +void HandleShopMenuSell(u8 taskId) { - gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16; - gTasks[taskId].data[9] = (u32)sub_80A6300; - gTasks[taskId].func = sub_80B2FA0; + gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; + gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; + gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; fade_screen(1, 0); } @@ -184,7 +184,7 @@ void HandleShopMenuQuit(u8 taskId) gMartInfo.callback(); // run the callback if it exists. } -void sub_80B2FA0(u8 taskId) +void Shop_FadeAndRunBuySellCallback(u8 taskId) { if (!gPaletteFade.active) { @@ -210,23 +210,24 @@ void Task_ExitSellMenu(u8 taskId) } } -void sub_80B3050(void) +void Shop_InitExitSellMenu(void) { pal_fill_black(); CreateTask(Task_ExitSellMenu, 0x8); } -void sub_80B3068(u8 taskId) +void Shop_RunExitSellMenuTask(u8 taskId) { Task_ExitSellMenu(taskId); } -void unref_sub_80B3078(u8 taskId) +// unused +void Shop_LoadExitSellMenuTask(u8 taskId) { gTasks[taskId].func = Task_ExitSellMenu; } -void sub_80B3094(void) +static void MainCB2(void) { AnimateSprites(); BuildOamBuffer(); @@ -234,7 +235,7 @@ void sub_80B3094(void) UpdatePaletteFade(); } -void sub_80B30AC(void) +static void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -246,7 +247,7 @@ void sub_80B30AC(void) void BuyMenuDrawGraphics(void) { - sub_80F9438(); + ClearVideoCallbacks(); ScanlineEffect_Stop(); REG_BG1HOFS = 0; REG_BG1VOFS = 0; @@ -280,53 +281,55 @@ void BuyMenuDrawGraphics(void) ResetTasks(); Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC); InitMenuWindow(&gWindowTemplate_81E6DFC); - BuyMenuDrawMapGraphics(); + Shop_DrawViewport(); gMartInfo.cursor = 0; gMartInfo.choicesAbove = 0; Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); sub_80B3764(0, 7); - sub_80B37EC(); + Shop_PrintItemDesc(); sub_80B3270(); CreateTask(sub_80B40E8, 0x8); sub_80B3240(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gPaletteFade.bufferTransferDisabled = 0; - SetVBlankCallback(sub_80B30AC); - SetMainCallback2(sub_80B3094); + SetVBlankCallback(VBlankCB); + SetMainCallback2(MainCB2); } void sub_80B3240(void) { - u16 tempArr[2] = {0x41EE, 0x7FFF}; + u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; - LoadPalette(&tempArr[1], 0xD1, 2); - LoadPalette(&tempArr[0], 0xD8, 2); + LoadPalette(&colors[1], 0xD1, sizeof colors[1]); + LoadPalette(&colors[0], 0xD8, sizeof colors[0]); } void sub_80B3270(void) { - sub_80F944C(); + ClearVerticalScrollIndicatorPalettes(); if (gMartInfo.itemCount > 7) { - CreateVerticalScrollIndicators(0, 172, 12); - CreateVerticalScrollIndicators(1, 172, 148); - sub_80F979C(0, 1); + CreateVerticalScrollIndicators(TOP_ARROW, 172, 12); + CreateVerticalScrollIndicators(BOTTOM_ARROW, 172, 148); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); } } -void sub_80B32A4(void) +void Shop_TryDrawVerticalScrollIndicators(void) { + // TOP ARROW if (gMartInfo.choicesAbove == 0) - sub_80F979C(0, 1); + SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); else - sub_80F979C(0, 0); + SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); + // DOWN ARROW if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) - sub_80F979C(1, 1); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); else - sub_80F979C(1, 0); + SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) @@ -375,7 +378,7 @@ void sub_80B33D0(s16 var1, int var2, u16 *var3) BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); } -void sub_80B3420(void) +void Shop_DrawViewportTiles(void) { s16 facingX; s16 facingY; @@ -415,15 +418,15 @@ void sub_80B3420(void) } } -void BuyMenuDrawMapGraphics(void) +void Shop_DrawViewport(void) { - sub_80F9020(); - sub_80B356C(); - sub_80B368C(); - sub_80B3420(); + ClearBGTilemapBuffers(); + Shop_LoadViewportObjects(); + Shop_AnimViewportObjects(); + Shop_DrawViewportTiles(); } -void sub_80B356C(void) +void Shop_LoadViewportObjects(void) { s16 facingX; s16 facingY; @@ -435,7 +438,7 @@ void sub_80B356C(void) GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY); playerHeight = PlayerGetZCoord(); for (y = 0; y < 16; y++) - gUnknown_020386A4[y][MAP_OBJ_ID] = 16; + gMartViewportObjects[y][MAP_OBJ_ID] = 16; for (y = 0; y < 5; y++) { for (x = 0; x < 7; x++) @@ -444,39 +447,39 @@ void sub_80B356C(void) if (mapObjId != 16) { - gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId; - gUnknown_020386A4[r8][X_COORD] = x; - gUnknown_020386A4[r8][Y_COORD] = y; + gMartViewportObjects[r8][MAP_OBJ_ID] = mapObjId; + gMartViewportObjects[r8][X_COORD] = x; + gMartViewportObjects[r8][Y_COORD] = y; if (gMapObjects[mapObjId].mapobj_unk_18 == 1) - gUnknown_020386A4[r8][ANIM_NUM] = 0; + gMartViewportObjects[r8][ANIM_NUM] = 0; if (gMapObjects[mapObjId].mapobj_unk_18 == 2) - gUnknown_020386A4[r8][ANIM_NUM] = 1; + gMartViewportObjects[r8][ANIM_NUM] = 1; if (gMapObjects[mapObjId].mapobj_unk_18 == 3) - gUnknown_020386A4[r8][ANIM_NUM] = 2; + gMartViewportObjects[r8][ANIM_NUM] = 2; if (gMapObjects[mapObjId].mapobj_unk_18 == 4) - gUnknown_020386A4[r8][ANIM_NUM] = 3; + gMartViewportObjects[r8][ANIM_NUM] = 3; r8++; } } } } -void sub_80B368C(void) +void Shop_AnimViewportObjects(void) { u8 i; for (i = 0; i < 16; i++) // max objects? { - if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16) + if (gMartViewportObjects[i][MAP_OBJ_ID] == 16) continue; StartSpriteAnim(&gSprites[AddPseudoFieldObject( - gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId, + gMapObjects[gMartViewportObjects[i][MAP_OBJ_ID]].graphicsId, SpriteCallbackDummy, - (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8, - (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32, + (u16)gMartViewportObjects[i][X_COORD] * 16 + 8, + (u16)gMartViewportObjects[i][Y_COORD] * 16 + 32, 2)], - gUnknown_020386A4[i][ANIM_NUM]); + gMartViewportObjects[i][ANIM_NUM]); } } @@ -494,7 +497,7 @@ void sub_80B3720(void) void sub_80B3764(int var1, int var2) { sub_80B3720(); - sub_80B39D0(var1, var2, 0); + Shop_DisplayPriceInList(var1, var2, 0); InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); } @@ -507,27 +510,29 @@ void sub_80B379C(void) gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; } -void sub_80B37EC(void) +void Shop_PrintItemDesc(void) { - sub_80B3A70(); + Shop_PrintItemDescText(); } -void sub_80B37F8(u8 taskId) +#define tItemCount data[1] + +void Shop_DisplayPriceInCheckoutWindow(u8 taskId) { u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; u16 itemId = gMartInfo.itemList[itemListIndex]; u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1)); - PrintMoneyAmount(gTasks[taskId].data[1] * price, 6, 6, 11); + PrintMoneyAmount(gTasks[taskId].tItemCount * price, 6, 6, 11); gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 0x6; - ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2); + ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].tItemCount, 1, 2); Menu_PrintText(gOtherText_xString1, 1, 11); sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); } -void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) +void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -551,7 +556,7 @@ void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode) Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); } -void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) +void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -570,9 +575,12 @@ void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) if (hasControlCode != FALSE) stringPtr = &gStringVar1[3]; + // some names are the maximum string length for a shop item. Because there is no room for + // a 6 character price (including the currency), a sprite is instead used for anything that + // is the maximum decoration price in order to fit it on screen. if (gDecorations[itemId].price == 10000) { - sub_80B7B34(0x19, var2, hasControlCode); // huh??? + Draw10000Sprite(0x19, var2, hasControlCode); } else { @@ -581,16 +589,16 @@ void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode) } } -void sub_80B39D0(int var1, int var2, bool32 hasControlCode) +void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode) { u8 i; for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) { if (gMartInfo.martType == MART_TYPE_0) - sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + Shop_DisplayNormalPriceInList(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); else - sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); + Shop_DisplayDecorationPriceInList(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); } if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount) @@ -600,7 +608,7 @@ void sub_80B39D0(int var1, int var2, bool32 hasControlCode) } } -void sub_80B3A70(void) +void Shop_PrintItemDescText(void) { if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) { @@ -623,13 +631,13 @@ void sub_80B3AEC(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh??? + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); PlaySE(SE_SELECT); - if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) - DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1); + if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].tItemCount >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, Shop_ReturnToBuyMenu, 0xC3E1); else - sub_80B4378(taskId); + Shop_ReturnToBuyMenu(taskId); } } @@ -644,22 +652,22 @@ void sub_80B3B80(u8 taskId) void sub_80B3BD0(u8 taskId) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? - sub_80B4378(taskId); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? + Shop_ReturnToBuyMenu(taskId); } -void sub_80B3BF4(u8 taskId) +void Shop_DoItemPurchase(u8 taskId) { Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); sub_80B379C(); - sub_80B3420(); + Shop_DrawViewportTiles(); if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) { if (gMartInfo.martType == MART_TYPE_0) { - if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1])) + if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].tItemCount)) { DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); sub_80B4470(taskId); @@ -687,43 +695,43 @@ void sub_80B3BF4(u8 taskId) DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); } -void sub_80B3D38(u8 taskId) +void Shop_DoYesNoPurchase(u8 taskId) { DisplayYesNoMenu(7, 8, 1); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); - DoYesNoFuncWithChoice(taskId, gUnknown_083CC708); + DoYesNoFuncWithChoice(taskId, sShopPurchaseYesNoFuncs); } -void sub_80B3D7C(u8 taskId) +void Shop_CancelItemPurchase(u8 taskId) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); - sub_80B4378(taskId); + Shop_ReturnToBuyMenu(taskId); } -void sub_80B3DC8(u8 taskId) +void Shop_PrintPrice(u8 taskId) { if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) - sub_80B37F8(taskId); + Shop_DisplayPriceInCheckoutWindow(taskId); if (gMain.newKeys & A_BUTTON) { - gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase. + gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].tItemCount; // set total cost of your purchase. Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); sub_80B379C(); - sub_80B3420(); + Shop_DrawViewportTiles(); CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2); + ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].tItemCount, 0, 0x2); ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8); StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe); - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1); } else if (gMain.newKeys & B_BUTTON) { - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); - sub_80B4378(taskId); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); + Shop_ReturnToBuyMenu(taskId); } } @@ -731,9 +739,9 @@ void sub_80B3EFC(u8 taskId) { u16 var; - gTasks[taskId].data[1] = 1; + gTasks[taskId].tItemCount = 1; Menu_DrawStdWindowFrame(0, 0xA, 0xD, 0xD); - sub_80B37F8(taskId); + Shop_DisplayPriceInCheckoutWindow(taskId); var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); if (var > 99) @@ -741,7 +749,7 @@ void sub_80B3EFC(u8 taskId) else gMartInfo.curItemCount = var; - gTasks[taskId].func = sub_80B3DC8; + gTasks[taskId].func = Shop_PrintPrice; } #ifdef NONMATCHING @@ -1033,15 +1041,15 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. sub_80B3F88(); - sub_80B39D0(0, 0, 0); - sub_80B3A70(); - sub_80B32A4(); + Shop_DisplayPriceInList(0, 0, 0); + Shop_PrintItemDescText(); + Shop_TryDrawVerticalScrollIndicators(); } else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor. { PlaySE(SE_SELECT); gMartInfo.cursor = Menu_MoveCursor(-1); // move cursor up - sub_80B3A70(); + Shop_PrintItemDescText(); } } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed @@ -1054,15 +1062,15 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove++; sub_80B403C(); - sub_80B39D0(7, 7, 0); - sub_80B3A70(); - sub_80B32A4(); + Shop_DisplayPriceInList(7, 7, 0); + Shop_PrintItemDescText(); + Shop_TryDrawVerticalScrollIndicators(); } else if (gMartInfo.cursor != gMartInfo.itemCount) { PlaySE(SE_SELECT); gMartInfo.cursor = Menu_MoveCursor(1); - sub_80B3A70(); + Shop_PrintItemDescText(); } } else if (gMain.newKeys & A_BUTTON) @@ -1071,10 +1079,10 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL? { - PauseVerticalScrollIndicator(0); - PauseVerticalScrollIndicator(1); - sub_80F979C(1, 1); - sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1); + PauseVerticalScrollIndicator(TOP_ARROW); + PauseVerticalScrollIndicator(BOTTOM_ARROW); + SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 1); Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0xC, 0xD, 0x13); @@ -1113,7 +1121,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction { StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3); } - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1); } } } @@ -1128,23 +1136,23 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction } } -void sub_80B4378(u8 taskId) +void Shop_ReturnToBuyMenu(u8 taskId) { Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); - sub_80B3420(); + Shop_DrawViewportTiles(); sub_80B3764(6, 7); - sub_80B37EC(); - StartVerticalScrollIndicators(0); - StartVerticalScrollIndicators(1); - sub_80B32A4(); + Shop_PrintItemDesc(); + StartVerticalScrollIndicators(TOP_ARROW); + StartVerticalScrollIndicators(BOTTOM_ARROW); + Shop_TryDrawVerticalScrollIndicators(); gTasks[taskId].func = sub_80B40E8; } void sub_80B43F0(u8 taskId) { - gFieldCallback = sub_80B3050; + gFieldCallback = Shop_InitExitSellMenu; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ExitBuyMenu; } @@ -1166,29 +1174,31 @@ void sub_80B4470(u8 taskId) for (i = 0; i < 3; i++) { - if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] - && gUnknown_02038724[i].quantity != 0) + if (gMartPurchaseHistory[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] + && gMartPurchaseHistory[i].quantity != 0) { - if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255) - gUnknown_02038724[i].quantity = 255; + if (gMartPurchaseHistory[i].quantity + gTasks[taskId].tItemCount > 255) + gMartPurchaseHistory[i].quantity = 255; else - gUnknown_02038724[i].quantity += gTasks[taskId].data[1]; + gMartPurchaseHistory[i].quantity += gTasks[taskId].tItemCount; return; } } - if (gUnknown_02038730 < 3) + if (gMartPurchaseHistoryId < 3) { - gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; - gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1]; - gUnknown_02038730++; + gMartPurchaseHistory[gMartPurchaseHistoryId].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]; + gMartPurchaseHistory[gMartPurchaseHistoryId].quantity = gTasks[taskId].tItemCount; + gMartPurchaseHistoryId++; } } +#undef tItemCount + void ClearItemPurchases(void) { - gUnknown_02038730 = 0; - ClearItemSlots(gUnknown_02038724, 3); + gMartPurchaseHistoryId = 0; + ClearItemSlots(gMartPurchaseHistory, 3); } void CreatePokemartMenu(u16 *itemList) diff --git a/src/field/trader.c b/src/field/trader.c index b4732ab15..64bd708f6 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -217,8 +217,8 @@ void sub_8109D04(u8 taskId) { Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 29, 19); - DestroyVerticalScrollIndicator(0); - DestroyVerticalScrollIndicator(1); + DestroyVerticalScrollIndicator(TOP_ARROW); + DestroyVerticalScrollIndicator(BOTTOM_ARROW); sub_80F9520(gUnknown_020388F7, 8); BuyMenuFreeMemory(); if (sub_80FEFA4() == TRUE) diff --git a/src/field/tv.c b/src/field/tv.c index e1eade130..efda4b925 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -64,7 +64,7 @@ struct TVSaleItem { extern u8 gUnknown_02038694; -extern struct TVSaleItem gUnknown_02038724[3]; +extern struct TVSaleItem gMartPurchaseHistory[3]; struct UnkTvStruct gUnknown_03005D38; @@ -1032,7 +1032,7 @@ void sub_80BE3BC(void) if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { sub_80BF20C(); - if (gUnknown_02038724[0].item_amount >= 20) + if (gMartPurchaseHistory[0].item_amount >= 20) { struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow; @@ -1041,8 +1041,8 @@ void sub_80BE3BC(void) smartShopper->shopLocation = gMapHeader.regionMapSectionId; for (i=0; i<3; i++) { - smartShopper->itemIds[i] = gUnknown_02038724[i].item_id; - smartShopper->itemAmounts[i] = gUnknown_02038724[i].item_amount; + smartShopper->itemIds[i] = gMartPurchaseHistory[i].item_id; + smartShopper->itemAmounts[i] = gMartPurchaseHistory[i].item_amount; } smartShopper->priceReduced = GetPriceReduction(1); StringCopy(smartShopper->playerName, gSaveBlock2.playerName); @@ -1646,14 +1646,14 @@ void sub_80BF20C(void) { for (j = i + 1; j < 3; j++) { - if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) + if (gMartPurchaseHistory[i].item_amount < gMartPurchaseHistory[j].item_amount) { - tmpId = gUnknown_02038724[i].item_id; - tmpAmount = gUnknown_02038724[i].item_amount; - gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; - gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount; - gUnknown_02038724[j].item_id = tmpId; - gUnknown_02038724[j].item_amount = tmpAmount; + tmpId = gMartPurchaseHistory[i].item_id; + tmpAmount = gMartPurchaseHistory[i].item_amount; + gMartPurchaseHistory[i].item_id = gMartPurchaseHistory[j].item_id; + gMartPurchaseHistory[i].item_amount = gMartPurchaseHistory[j].item_amount; + gMartPurchaseHistory[j].item_id = tmpId; + gMartPurchaseHistory[j].item_amount = tmpAmount; } } } diff --git a/src/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c index 194636e4d..2f2ce2f8f 100644 --- a/src/pokemon/pokeblock_feed.c +++ b/src/pokemon/pokeblock_feed.c @@ -511,7 +511,7 @@ static bool8 TransitionToPokeblockFeedScene(void) switch (gMain.state) { case 0: - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); sub_8147B04(); gMain.state++; diff --git a/src/roulette.c b/src/roulette.c index 6d79f9d38..41e8ef77f 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -579,7 +579,7 @@ void sub_8115384(void) case 0x0: SetVBlankCallback(NULL); ScanlineEffect_Stop(); - sub_80F9438(); + ClearVideoCallbacks(); sub_80F9368(); REG_BG2CNT = 0x4686; REG_BG1CNT = 0x4401; @@ -603,7 +603,7 @@ void sub_8115384(void) break; case 0x3: sub_8115238(); - sub_80F9020(); + ClearBGTilemapBuffers(); LZ77UnCompWram(&gUnknown_083F88BC, (void *)(ewram18800)); LZ77UnCompVram(&gUnknown_083F8A60, (void *)(VRAM + 0x3000)); gMain.state++; @@ -1604,7 +1604,7 @@ void sub_8116B40(u8 taskid) // end oulette ? FreeAllSpritePalettes(); ResetPaletteFade(); ResetSpriteData(); - sub_80F9020(); + ClearBGTilemapBuffers(); REG_BLDCNT = 0x0; REG_BLDALPHA = 0x0; REG_BLDY = 0x0; -- cgit v1.2.3 From 7b45766d0765d42d7326a7f6cdb21a54d386117e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 19:32:02 -0500 Subject: through sub_809B7D4 --- src/pokemon/pokemon_2.c | 3 +- src/pokemon/pokemon_storage_system_4.c | 119 +++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_2.c b/src/pokemon/pokemon_2.c index b941ed2ab..7fd1aa7b2 100644 --- a/src/pokemon/pokemon_2.c +++ b/src/pokemon/pokemon_2.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/hold_effects.h" +#include "constants/moves.h" #include "battle.h" #include "battle_util.h" #include "data2.h" @@ -569,7 +570,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) u16 *moves = (u16 *)data; s32 i = 0; - while (moves[i] != 355) + while (moves[i] != NUM_MOVES) { u16 move = moves[i]; if (substruct1->moves[0] == move diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 73d71fa0e..a0a6fa145 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -1,8 +1,10 @@ // Includes #include "global.h" +#include "constants/moves.h" #include "constants/species.h" #include "palette.h" +#include "string_util.h" #include "text.h" #include "menu.h" #include "pokemon_storage_system.h" @@ -1602,3 +1604,120 @@ void diegohint1(u8 a0, u8 a1) gUnknown_020384E7 = a0; gUnknown_020384E8 = a1; } + +bool8 sub_809B62C(u8 boxId) +{ + s16 monIdx = GetIndexOfFirstEmptySpaceInBoxN(boxId); + if (monIdx == -1) + return FALSE; + if (gUnknown_020384E6) + { + diegohint2(boxId, monIdx); + sub_8099480(); + gUnknown_020384E6 = 0; + } + else + { + sub_809B44C(14, gUnknown_020384E5); + diegohint2(boxId, monIdx); + sub_8099520(gUnknown_020384E5); + } + if (boxId == get_preferred_box()) + sub_8098D20(monIdx); + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 1); + return TRUE; +} + +void sub_809B6BC(void) +{ + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0); + sub_809BF74(); +} + +void sub_809B6DC(void) +{ + u8 mode; + + if (gUnknown_020384E6) + mode = 2; + else if (gUnknown_020384E4 == 1) + mode = 0; + else + mode = 1; + sub_809981C(mode, gUnknown_020384E5); + StringCopy(gPokemonStorageSystemPtr->unk_26e4, gPokemonStorageSystemPtr->unk_11fa); +} + +bool8 sub_809B734(void) +{ + if (!sub_80998D8()) + { + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0); + return FALSE; + } + return TRUE; +} + +void sub_809B760(void) +{ + sub_8099920(); + if (gUnknown_020384E6) + gUnknown_020384E6 = 0; + else + { + u8 boxId; + if (gUnknown_020384E4 == 1) + boxId = 14; + else + boxId = get_preferred_box(); + sub_809B548(boxId, gUnknown_020384E5); + } + sub_809BF74(); +} + +void sub_809B7AC(void) +{ + if (gUnknown_020384E6) + StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 3); +} + +void sub_809B7D4(void) +{ + u16 knownMoves; + if (gUnknown_020384E6) + { + gPokemonStorageSystemPtr->unk_2618 = gPokemonStorageSystemPtr->unk_25b4; + gPokemonStorageSystemPtr->unk_2682 = -1; + gPokemonStorageSystemPtr->unk_2683 = -1; + } + else + { + if (gUnknown_020384E4 == 1) + { + gPokemonStorageSystemPtr->unk_2618 = gPlayerParty[gUnknown_020384E5]; + gPokemonStorageSystemPtr->unk_2682 = 14; + } + else + { + ExpandBoxMon(gPokemonStorage.boxes[gPokemonStorage.currentBox] + gUnknown_020384E5, &gPokemonStorageSystemPtr->unk_2618); + gPokemonStorageSystemPtr->unk_2682 = gPokemonStorage.currentBox; + } + gPokemonStorageSystemPtr->unk_2683 = gUnknown_020384E5; + } + gPokemonStorageSystemPtr->unk_267e = 0; + gPokemonStorageSystemPtr->unk_267f = 0; + gPokemonStorageSystemPtr->unk_2686[0] = MOVE_SURF; + gPokemonStorageSystemPtr->unk_2686[1] = MOVE_DIVE; + gPokemonStorageSystemPtr->unk_2686[2] = NUM_MOVES; + knownMoves = GetMonData(&gPokemonStorageSystemPtr->unk_2618, MON_DATA_KNOWN_MOVES, gPokemonStorageSystemPtr->unk_2686); + gPokemonStorageSystemPtr->unk_267e = knownMoves & 1; + gPokemonStorageSystemPtr->unk_267f = (knownMoves >> 1) & 1; + if (gPokemonStorageSystemPtr->unk_267e || gPokemonStorageSystemPtr->unk_267f) + gPokemonStorageSystemPtr->unk_267d = 0; + else + { + gPokemonStorageSystemPtr->unk_267d = 1; + gPokemonStorageSystemPtr->unk_267c = 1; + } + gPokemonStorageSystemPtr->unk_2684 = 0; +} -- cgit v1.2.3 From 7a2eef97c35e4672bd17bfca86a6ea19d22a3eba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 20:34:56 -0500 Subject: sub_809B960 --- src/pokemon/pokemon_storage_system_4.c | 65 ++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index a0a6fa145..2469d42b1 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -1721,3 +1721,68 @@ void sub_809B7D4(void) } gPokemonStorageSystemPtr->unk_2684 = 0; } + +s8 sub_809B960(void) +{ + u16 i; + u16 knownMoves; + + if (gPokemonStorageSystemPtr->unk_267d) + return gPokemonStorageSystemPtr->unk_267c; + switch (gPokemonStorageSystemPtr->unk_2684) + { + case 0: + for (i = 0; i < PARTY_SIZE; i++) + { + if (gPokemonStorageSystemPtr->unk_2682 != 14 || gPokemonStorageSystemPtr->unk_2683 != i) + { + knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, gPokemonStorageSystemPtr->unk_2686); + if (knownMoves & 1) + gPokemonStorageSystemPtr->unk_267e = 0; + if (knownMoves & 2) + gPokemonStorageSystemPtr->unk_267f = 0; + } + } + if (gPokemonStorageSystemPtr->unk_267e == 0 && gPokemonStorageSystemPtr->unk_267f == 0) + { + gPokemonStorageSystemPtr->unk_267d = 1; + gPokemonStorageSystemPtr->unk_267c = 1; + } + else + { + gPokemonStorageSystemPtr->unk_2680 = 0; + gPokemonStorageSystemPtr->unk_2681 = 0; + gPokemonStorageSystemPtr->unk_2684++; + } + break; + case 1: + for (i = 0; i < 5; i++) + { + knownMoves = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_2680] + gPokemonStorageSystemPtr->unk_2681, MON_DATA_KNOWN_MOVES, gPokemonStorageSystemPtr->unk_2686); + if (knownMoves && (gPokemonStorageSystemPtr->unk_2682 != gPokemonStorageSystemPtr->unk_2680 || gPokemonStorageSystemPtr->unk_2683 != gPokemonStorageSystemPtr->unk_2681)) + { + if (knownMoves & 1) + gPokemonStorageSystemPtr->unk_267e = 0; + if (knownMoves & 2) + gPokemonStorageSystemPtr->unk_267f = 0; + } + if (++gPokemonStorageSystemPtr->unk_2681 >= 30) + { + gPokemonStorageSystemPtr->unk_2681 = 0; + if (++gPokemonStorageSystemPtr->unk_2680 >= 14) + { + gPokemonStorageSystemPtr->unk_267d = 1; + gPokemonStorageSystemPtr->unk_267c = 0; + break; + } + } + } + if (gPokemonStorageSystemPtr->unk_267e == 0 && gPokemonStorageSystemPtr->unk_267f == 0) + { + gPokemonStorageSystemPtr->unk_267d = 1; + gPokemonStorageSystemPtr->unk_267c = 1; + } + break; + } + return -1; +} -- cgit v1.2.3 From 102515325993caef0d57082cd7d8db69335b665b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 21:11:01 -0500 Subject: through party_compaction --- src/pokemon/pokemon_storage_system_2.c | 2 +- src/pokemon/pokemon_storage_system_4.c | 75 ++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_2.c b/src/pokemon/pokemon_storage_system_2.c index 4657ed158..512bde5db 100644 --- a/src/pokemon/pokemon_storage_system_2.c +++ b/src/pokemon/pokemon_storage_system_2.c @@ -343,7 +343,7 @@ void sub_8096B5C(void) switch (gPokemonStorageSystemPtr->unk_0006) { case 0: - ShowPokemonSummaryScreen(gPokemonStorageSystemPtr->unk_2690, gPokemonStorageSystemPtr->unk_268d, gPokemonStorageSystemPtr->unk_268c, sub_80969A0, gPokemonStorageSystemPtr->unk_268e); + ShowPokemonSummaryScreen(gPokemonStorageSystemPtr->unk_2690.pokemon, gPokemonStorageSystemPtr->unk_268d, gPokemonStorageSystemPtr->unk_268c, sub_80969A0, gPokemonStorageSystemPtr->unk_268e); break; case 1: DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0); diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 2469d42b1..40de7d634 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -1,12 +1,14 @@ // Includes #include "global.h" +#include "ewram.h" #include "constants/moves.h" #include "constants/species.h" #include "palette.h" #include "string_util.h" #include "text.h" #include "menu.h" +#include "pokemon_summary_screen.h" #include "pokemon_storage_system.h" // Static type declarations @@ -1786,3 +1788,76 @@ s8 sub_809B960(void) } return -1; } + +void sub_809BB90(void) +{ + if (gUnknown_020384E6) + gUnknown_02038480 = gPokemonStorageSystemPtr->unk_25b4; +} + +void sub_809BBC0(void) +{ + if (gUnknown_020384E6) + { + if (gUnknown_020384E7 == 14) + gPokemonStorageSystemPtr->unk_25b4 = gUnknown_02038480; + else + gPokemonStorageSystemPtr->unk_25b4.box = gUnknown_02038480.box; + } +} + +void sub_809BC18(void) +{ + if (gUnknown_020384E6) + { + sub_809BB90(); + gPokemonStorageSystemPtr->unk_2690.pokemon = &gUnknown_02038480; + gPokemonStorageSystemPtr->unk_268d = 0; + gPokemonStorageSystemPtr->unk_268c = 0; + gPokemonStorageSystemPtr->unk_268e = 0; + } + else if (gUnknown_020384E4 == 1) + { + gPokemonStorageSystemPtr->unk_2690.pokemon = gPlayerParty; + gPokemonStorageSystemPtr->unk_268d = gUnknown_020384E5; + gPokemonStorageSystemPtr->unk_268c = StorageSystemGetPartySize() - 1; + gPokemonStorageSystemPtr->unk_268e = 0; + } + else + { + gPokemonStorageSystemPtr->unk_2690.box = gPokemonStorage.boxes[gPokemonStorage.currentBox]; + gPokemonStorageSystemPtr->unk_268d = gUnknown_020384E5; + gPokemonStorageSystemPtr->unk_268c = 30 - 1; + gPokemonStorageSystemPtr->unk_268e = 5; + } +} + +void sub_809BD14(void) +{ + if (gUnknown_020384E6) + sub_809BBC0(); + else + gUnknown_020384E5 = pssData.monIndex; +} + +s16 party_compaction(void) +{ + s16 retVal = -1; + u16 i; + u16 last; + + for (i = 0, last = 0; i < PARTY_SIZE; i++) + { + if ((u16)GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (i != last) + gPlayerParty[last] = gPlayerParty[i]; + last++; + } + else if (retVal == -1) + retVal = i; + } + for (; last < PARTY_SIZE; last++) + ZeroMonData(gPlayerParty + last); + return retVal; +} -- cgit v1.2.3 From 1771d7761e4ff1406a8ffe3da4e636d633ad3135 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 15 Jan 2018 21:26:15 -0500 Subject: split out fldeff_escalator and label shop.c more --- src/field/fldeff_escalator.c | 132 ++++++++++++++++++ src/field/item_menu.c | 8 +- src/field/shop.c | 320 ++++++++++++++----------------------------- 3 files changed, 236 insertions(+), 224 deletions(-) create mode 100644 src/field/fldeff_escalator.c (limited to 'src') diff --git a/src/field/fldeff_escalator.c b/src/field/fldeff_escalator.c new file mode 100644 index 000000000..981233480 --- /dev/null +++ b/src/field/fldeff_escalator.c @@ -0,0 +1,132 @@ +#include "global.h" +#include "task.h" +#include "fieldmap.h" +#include "field_camera.h" +#include "field_player_avatar.h" + +extern u8 gUnknown_02038731; + +void sub_80B45B4(u8 taskId, const s16 *list, u16 c) +{ + s16 r5 = gTasks[taskId].data[4] - 1; + s16 r3 = gTasks[taskId].data[5] - 1; + s16 r4 = gTasks[taskId].data[1]; + s16 y; + s16 x; + + if (gTasks[taskId].data[2] == 0) + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); + } + } + } + } + else + { + for (y = 0; y < 3; y++) + { + for (x = 0; x < 3; x++) + { + s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); + + if (list[2 - r4] == metatileId) + { + if (r4 != 2) + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); + else + MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); + } + } + } + } +} + +const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; +const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; +const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; +const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; +const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; +const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; +const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; + +void sub_80B4710(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[3] = 1; + + switch (data[0]) + { + case 0: + sub_80B45B4(taskId, gUnknown_083CC714, 0); + break; + case 1: + sub_80B45B4(taskId, gUnknown_083CC71A, 0); + break; + case 2: + sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); + break; + case 3: + sub_80B45B4(taskId, gUnknown_083CC726, 0); + break; + case 4: + sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); + break; + case 5: + sub_80B45B4(taskId, gUnknown_083CC732, 0); + break; + case 6: + sub_80B45B4(taskId, gUnknown_083CC738, 0); + break; + } + + data[0] = (data[0] + 1) & 7; + if (!data[0]) + { + DrawWholeMapView(); + data[1] = (data[1] + 1) % 3; + data[3] = 0; + } +} + +u8 sub_80B47D8(u16 var) +{ + u8 taskId = CreateTask(sub_80B4710, 0); + s16 *data = gTasks[taskId].data; + + PlayerGetDestCoords(&data[4], &data[5]); + data[0] = 0; + data[1] = 0; + data[2] = var; + sub_80B4710(taskId); + return taskId; +} + +void sub_80B4824(u8 var) +{ + gUnknown_02038731 = sub_80B47D8(var); +} + +void sub_80B483C(void) +{ + DestroyTask(gUnknown_02038731); +} + +bool8 sub_80B4850(void) +{ + if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) + return FALSE; + else + return TRUE; +} diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e07021acd..d86550eb6 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -50,7 +50,7 @@ extern void pal_fill_black(void); extern bool8 sub_807D770(void); extern u8 sub_80F931C(); extern void sub_808A3F8(u8); -extern void Shop_InitExitSellMenu(void); +extern void Shop_FadeReturnToMartMenu(void); extern void sub_80546B8(u8); extern void sub_804E990(u8); extern void sub_802E424(u8); @@ -1901,7 +1901,7 @@ static void sub_80A50C8(u8 taskId) } } -bool8 sub_80A52C4(u8 taskId, u16 b) +bool8 SellMenu_QuantityRoller(u8 taskId, u16 b) { s16 *taskData = gTasks[taskId].data; @@ -1948,7 +1948,7 @@ static bool8 sub_80A5350(u8 taskId) { s16 *taskData = gTasks[taskId].data; - if (sub_80A52C4(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE) + if (SellMenu_QuantityRoller(taskId, gCurrentBagPocketItemSlots[gUnknown_02038560].quantity) == TRUE) { // if (sCurrentBagPocket == BAG_POCKET_BERRIES) Can't get it to match this way if (sCurrentBagPocket + 1 == BAG_POCKET_BERRIES + 1) @@ -2971,7 +2971,7 @@ void ItemMenu_LoadSellMenu(void) static void OnBagClose_Shop(u8 taskId) { - gFieldCallback = Shop_InitExitSellMenu; + gFieldCallback = Shop_FadeReturnToMartMenu; gTasks[taskId].data[8] = (u32)c2_exit_to_overworld_2_switch >> 16; gTasks[taskId].data[9] = (u32)c2_exit_to_overworld_2_switch; sub_80A5AE4(taskId); diff --git a/src/field/shop.c b/src/field/shop.c index ab529d9a2..233e430ee 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -28,23 +28,23 @@ #include "field_camera.h" #include "ewram.h" -extern bool8 sub_80A52C4(u8, u8); +extern bool8 SellMenu_QuantityRoller(u8, u8); extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode); +void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode); void Shop_PrintItemDescText(void); -void Shop_ReturnToBuyMenu(u8); -void sub_80B43F0(u8); +void Task_ReturnToBuyMenu(u8); void Task_ExitBuyMenu(u8); -void sub_80B4470(u8); -void HandleShopMenuBuy(u8 taskId); -void HandleShopMenuSell(u8 taskId); -void HandleShopMenuQuit(u8 taskId); -void Shop_DoItemPurchase(u8 taskId); -void Shop_CancelItemPurchase(u8 taskId); +void Task_ExitBuyMenuDoFade(u8); +void Task_UpdatePurchaseHistory(u8); +void Task_HandleShopMenuBuy(u8 taskId); +void Task_HandleShopMenuSell(u8 taskId); +void Task_HandleShopMenuQuit(u8 taskId); +void Task_DoItemPurchase(u8 taskId); +void Task_CancelItemPurchase(u8 taskId); // iwram static struct MartInfo gMartInfo; @@ -54,14 +54,15 @@ EWRAM_DATA u32 gMartTotalCost = 0; EWRAM_DATA s16 gMartViewportObjects[16][4] = {0}; EWRAM_DATA struct ItemSlot gMartPurchaseHistory[3] = {0}; EWRAM_DATA u8 gMartPurchaseHistoryId = 0; -EWRAM_DATA u8 gUnknown_02038731 = 0; + +EWRAM_DATA u8 gUnknown_02038731 = 0; // This really should be in fldeff_escalator, but being in a new file aligns the ewram, which doesnt match the ROM. // rodata static const struct MenuAction2 sBuySellQuitMenuActions[] = { - { MartText_Buy, HandleShopMenuBuy }, - { MartText_Sell, HandleShopMenuSell }, - { MartText_Quit2, HandleShopMenuQuit }, + { MartText_Buy, Task_HandleShopMenuBuy }, + { MartText_Sell, Task_HandleShopMenuSell }, + { MartText_Quit2, Task_HandleShopMenuQuit }, }; static const u8 gMartBuySellOptionList[] = {BUY, SELL, EXIT}; @@ -71,8 +72,8 @@ static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, static const struct YesNoFuncTable sShopPurchaseYesNoFuncs[] = { - Shop_DoItemPurchase, - Shop_CancelItemPurchase + Task_DoItemPurchase, + Task_CancelItemPurchase }; u8 CreateShopMenu(u8 martType) @@ -95,7 +96,7 @@ u8 CreateShopMenu(u8 martType) } InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel - return CreateTask(sub_80B2E38, 8); + return CreateTask(Task_DoBuySellMenu, 8); } void SetShopMenuCallback(void *callbackPtr) @@ -117,9 +118,9 @@ void SetShopItemsForSale(u16 *items) } } -void sub_80B2E38(u8 var) +void Task_DoBuySellMenu(u8 taskId) { - const u8 local = var; + const u8 taskIdConst = taskId; // why is a local const needed to match? if (gMain.newAndRepeatedKeys & DPAD_UP) { @@ -142,21 +143,21 @@ void sub_80B2E38(u8 var) PlaySE(SE_SELECT); if (gMartInfo.martType == MART_TYPE_0) { - sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(taskIdConst); } else { - sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(local); + sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(taskIdConst); } } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - HandleShopMenuQuit(local); + Task_HandleShopMenuQuit(taskIdConst); } } -void HandleShopMenuBuy(u8 taskId) +void Task_HandleShopMenuBuy(u8 taskId) { gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; @@ -164,7 +165,7 @@ void HandleShopMenuBuy(u8 taskId) fade_screen(1, 0); } -void HandleShopMenuSell(u8 taskId) +void Task_HandleShopMenuSell(u8 taskId) { gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; @@ -172,7 +173,7 @@ void HandleShopMenuSell(u8 taskId) fade_screen(1, 0); } -void HandleShopMenuQuit(u8 taskId) +void Task_HandleShopMenuQuit(u8 taskId) { Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 8); @@ -199,7 +200,7 @@ void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) DestroyTask(taskId); } -void Task_ExitSellMenu(u8 taskId) +void Task_ReturnToMartMenu(u8 taskId) { if (sub_807D770() == 1) { @@ -210,21 +211,21 @@ void Task_ExitSellMenu(u8 taskId) } } -void Shop_InitExitSellMenu(void) +void Shop_FadeReturnToMartMenu(void) { pal_fill_black(); - CreateTask(Task_ExitSellMenu, 0x8); + CreateTask(Task_ReturnToMartMenu, 0x8); } void Shop_RunExitSellMenuTask(u8 taskId) { - Task_ExitSellMenu(taskId); + Task_ReturnToMartMenu(taskId); } // unused void Shop_LoadExitSellMenuTask(u8 taskId) { - gTasks[taskId].func = Task_ExitSellMenu; + gTasks[taskId].func = Task_ReturnToMartMenu; } static void MainCB2(void) @@ -286,10 +287,10 @@ void BuyMenuDrawGraphics(void) gMartInfo.choicesAbove = 0; Menu_EraseWindowRect(0, 0, 0x20, 0x20); OpenMoneyWindow(gSaveBlock1.money, 0, 0); - sub_80B3764(0, 7); + Shop_InitMenus(0, 7); Shop_PrintItemDesc(); - sub_80B3270(); - CreateTask(sub_80B40E8, 0x8); + DrawFirstMartScrollIndicators(); + CreateTask(Shop_DoCursorAction, 0x8); sub_80B3240(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); gPaletteFade.bufferTransferDisabled = 0; @@ -305,7 +306,7 @@ void sub_80B3240(void) LoadPalette(&colors[0], 0xD8, sizeof colors[0]); } -void sub_80B3270(void) +void DrawFirstMartScrollIndicators(void) { ClearVerticalScrollIndicatorPalettes(); @@ -319,20 +320,19 @@ void sub_80B3270(void) void Shop_TryDrawVerticalScrollIndicators(void) { - // TOP ARROW if (gMartInfo.choicesAbove == 0) SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); else SetVerticalScrollIndicators(TOP_ARROW, VISIBLE); - // DOWN ARROW if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount) SetVerticalScrollIndicators(BOTTOM_ARROW, INVISIBLE); else SetVerticalScrollIndicators(BOTTOM_ARROW, VISIBLE); } -void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) +// what is the point of this function? the tiles always get overwritten by BuyMenuDrawTextboxBG. +void BuyMenuDrawTextboxBG_Old(u16 *array, s16 offset1, s16 offset2) { array[offset1 + offset2] = 0xC3E1; array[offset1 + offset2 + 1] = 0xC3E1; @@ -340,10 +340,11 @@ void sub_80B32EC(u16 *array, s16 offset1, s16 offset2) void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) { - array[offset1 + offset2] = array2[0]; - array[offset1 + offset2 + 1] = array2[1]; - array[offset1 + offset2 + 32] = array2[2]; - array[offset1 + offset2 + 33] = array2[3]; + // This function draws a whole 2x2 metatile. + array[offset1 + offset2] = array2[0]; // top left + array[offset1 + offset2 + 1] = array2[1]; // top right + array[offset1 + offset2 + 32] = array2[2]; // bottom left + array[offset1 + offset2 + 33] = array2[3]; // bottom right } void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) @@ -369,7 +370,8 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) } } -void sub_80B33D0(s16 var1, int var2, u16 *var3) +// used to draw the border tiles around the viewport. +void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) { s16 offset1 = var1 * 2; s16 offset2 = (var2 * 0x40) + 0x40; @@ -407,13 +409,13 @@ void Shop_DrawViewportTiles(void) else { if (metatileId < 512) - sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); + BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8); else - sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); + BuyMenuDrawMapPartialMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8); } if (y == 0 && x != 0 && x != 6) - sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64); + BuyMenuDrawTextboxBG_Old(gBGTilemapBuffers[1], x * 2, 64); } } } @@ -483,7 +485,7 @@ void Shop_AnimViewportObjects(void) } } -void sub_80B3720(void) +void BuyMenuDrawTextboxBG(void) { s16 i; @@ -494,14 +496,15 @@ void sub_80B3720(void) } } -void sub_80B3764(int var1, int var2) +void Shop_InitMenus(int firstItemId, int lastItemId) { - sub_80B3720(); - Shop_DisplayPriceInList(var1, var2, 0); + BuyMenuDrawTextboxBG(); + Shop_DisplayPriceInList(firstItemId, lastItemId, 0); InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF); } -void sub_80B379C(void) +// after printing the item quantity and price, restore the textbox tiles before the Yes/No prompt. +void BuyMenuDrawTextboxBG_Restore(void) { u16 i, j; @@ -589,11 +592,11 @@ void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCod } } -void Shop_DisplayPriceInList(int var1, int var2, bool32 hasControlCode) +void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode) { u8 i; - for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) + for (i = firstItemId; i <= lastItemId && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++) { if (gMartInfo.martType == MART_TYPE_0) Shop_DisplayNormalPriceInList(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode); @@ -627,7 +630,7 @@ void Shop_PrintItemDescText(void) } } -void sub_80B3AEC(u8 taskId) +void Shop_DoPremierBallCheck(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { @@ -635,32 +638,32 @@ void sub_80B3AEC(u8 taskId) PlaySE(SE_SELECT); if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].tItemCount >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE) - DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, Shop_ReturnToBuyMenu, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, Task_ReturnToBuyMenu, 0xC3E1); else - Shop_ReturnToBuyMenu(taskId); + Task_ReturnToBuyMenu(taskId); } } -void sub_80B3B80(u8 taskId) +void Shop_DoItemTransaction(u8 taskId) { IncrementGameStat(0x26); RemoveMoney(&gSaveBlock1.money, gMartTotalCost); PlaySE(SE_REGI); UpdateMoneyWindow(gSaveBlock1.money, 0, 0); - gTasks[taskId].func = sub_80B3AEC; + gTasks[taskId].func = Shop_DoPremierBallCheck; } -void sub_80B3BD0(u8 taskId) +void Shop_DoPricePrintAndReturnToBuyMenu(u8 taskId) { - Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above? - Shop_ReturnToBuyMenu(taskId); + Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); + Task_ReturnToBuyMenu(taskId); } -void Shop_DoItemPurchase(u8 taskId) +void Task_DoItemPurchase(u8 taskId) { Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); - sub_80B379C(); + BuyMenuDrawTextboxBG_Restore(); Shop_DrawViewportTiles(); if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) @@ -669,30 +672,30 @@ void Shop_DoItemPurchase(u8 taskId) { if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].tItemCount)) { - DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1); - sub_80B4470(taskId); + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, Shop_DoItemTransaction, 0xC3E1); + Task_UpdatePurchaseHistory(taskId); } else - DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } else // a normal mart is only type 0, so types 1 and 2 are decoration marts. { if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor])) { if (gMartInfo.martType == MART_TYPE_1) - DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, Shop_DoItemTransaction, 0xC3E1); else - DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, Shop_DoItemTransaction, 0xC3E1); } else { StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull); - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } } } else - DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } void Shop_DoYesNoPurchase(u8 taskId) @@ -702,17 +705,17 @@ void Shop_DoYesNoPurchase(u8 taskId) DoYesNoFuncWithChoice(taskId, sShopPurchaseYesNoFuncs); } -void Shop_CancelItemPurchase(u8 taskId) +void Task_CancelItemPurchase(u8 taskId) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0); - Shop_ReturnToBuyMenu(taskId); + Task_ReturnToBuyMenu(taskId); } void Shop_PrintPrice(u8 taskId) { - if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE) + if (SellMenu_QuantityRoller(taskId, gMartInfo.curItemCount) == TRUE) Shop_DisplayPriceInCheckoutWindow(taskId); if (gMain.newKeys & A_BUTTON) @@ -720,7 +723,7 @@ void Shop_PrintPrice(u8 taskId) gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].tItemCount; // set total cost of your purchase. Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); - sub_80B379C(); + BuyMenuDrawTextboxBG_Restore(); Shop_DrawViewportTiles(); CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].tItemCount, 0, 0x2); @@ -731,11 +734,12 @@ void Shop_PrintPrice(u8 taskId) else if (gMain.newKeys & B_BUTTON) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); - Shop_ReturnToBuyMenu(taskId); + Task_ReturnToBuyMenu(taskId); } } -void sub_80B3EFC(u8 taskId) +// set the item count in the mart info to the maximum allowed by the player's budget. +void Shop_UpdateCurItemCountToMax(u8 taskId) { u16 var; @@ -753,7 +757,7 @@ void sub_80B3EFC(u8 taskId) } #ifdef NONMATCHING -void sub_80B3F88(void) +void Shop_MoveItemListUp(void) { u16 *r1; u16 *r2; @@ -795,7 +799,7 @@ void sub_80B3F88(void) } #else __attribute__((naked)) -void sub_80B3F88(void) +void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -890,7 +894,7 @@ _080B4038: .4byte 0xfffffc40\n\ #endif #ifdef NONMATCHING -void sub_80B403C(void) +void Shop_MoveItemListDown(void) { u16 *r1; u16 *r2; @@ -934,7 +938,7 @@ void sub_80B403C(void) } #else __attribute__((naked)) -void sub_80B403C(void) +void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1027,7 +1031,7 @@ _080B40E4: .4byte 0x800000f0\n\ } #endif -void sub_80B40E8(u8 taskId) // Mart_DoCursorAction +void Shop_DoCursorAction(u8 taskId) { if (!gPaletteFade.active) { @@ -1040,7 +1044,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove. - sub_80B3F88(); + Shop_MoveItemListUp(); Shop_DisplayPriceInList(0, 0, 0); Shop_PrintItemDescText(); Shop_TryDrawVerticalScrollIndicators(); @@ -1061,7 +1065,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction PlaySE(SE_SELECT); gMartInfo.choicesAbove++; - sub_80B403C(); + Shop_MoveItemListDown(); Shop_DisplayPriceInList(7, 7, 0); Shop_PrintItemDescText(); Shop_TryDrawVerticalScrollIndicators(); @@ -1091,13 +1095,13 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) { - DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); // tail merge } else // _080B42BA { CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant); - DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1); + DisplayItemMessageOnField(taskId, gStringVar4, Shop_UpdateCurItemCountToMax, 0xC3E1); } } else // _080B428C @@ -1106,7 +1110,7 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost)) { - DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge + DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); // tail merge } else { @@ -1126,38 +1130,38 @@ void sub_80B40E8(u8 taskId) // Mart_DoCursorAction } } else - sub_80B43F0(taskId); + Task_ExitBuyMenu(taskId); } else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu { PlaySE(SE_SELECT); - sub_80B43F0(taskId); + Task_ExitBuyMenu(taskId); } } } -void Shop_ReturnToBuyMenu(u8 taskId) +void Task_ReturnToBuyMenu(u8 taskId) { Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0); Shop_DrawViewportTiles(); - sub_80B3764(6, 7); + Shop_InitMenus(6, 7); Shop_PrintItemDesc(); StartVerticalScrollIndicators(TOP_ARROW); StartVerticalScrollIndicators(BOTTOM_ARROW); Shop_TryDrawVerticalScrollIndicators(); - gTasks[taskId].func = sub_80B40E8; + gTasks[taskId].func = Shop_DoCursorAction; } -void sub_80B43F0(u8 taskId) +void Task_ExitBuyMenu(u8 taskId) { - gFieldCallback = Shop_InitExitSellMenu; + gFieldCallback = Shop_FadeReturnToMartMenu; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_ExitBuyMenu; + gTasks[taskId].func = Task_ExitBuyMenuDoFade; } -void Task_ExitBuyMenu(u8 taskId) +void Task_ExitBuyMenuDoFade(u8 taskId) { if (!gPaletteFade.active) { @@ -1168,7 +1172,8 @@ void Task_ExitBuyMenu(u8 taskId) } } -void sub_80B4470(u8 taskId) +// Task_UpdatePurchaseHistory +void Task_UpdatePurchaseHistory(u8 taskId) { u16 i; @@ -1222,128 +1227,3 @@ void CreateDecorationShop2Menu(u16 *itemList) SetShopItemsForSale(itemList); SetShopMenuCallback(EnableBothScriptContexts); } - -void sub_80B45B4(u8 taskId, const s16 *list, u16 c) -{ - s16 r5 = gTasks[taskId].data[4] - 1; - s16 r3 = gTasks[taskId].data[5] - 1; - s16 r4 = gTasks[taskId].data[1]; - s16 y; - s16 x; - - if (gTasks[taskId].data[2] == 0) - { - for (y = 0; y < 3; y++) - { - for (x = 0; x < 3; x++) - { - s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); - - if (list[r4] == metatileId) - { - if (r4 != 2) - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); - else - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); - } - } - } - } - else - { - for (y = 0; y < 3; y++) - { - for (x = 0; x < 3; x++) - { - s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y); - - if (list[2 - r4] == metatileId) - { - if (r4 != 2) - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); - else - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); - } - } - } - } -} - -static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280}; -static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281}; -static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288}; -static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289}; -static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4}; -static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5}; -static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC}; - -void sub_80B4710(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - data[3] = 1; - - switch (data[0]) - { - case 0: - sub_80B45B4(taskId, gUnknown_083CC714, 0); - break; - case 1: - sub_80B45B4(taskId, gUnknown_083CC71A, 0); - break; - case 2: - sub_80B45B4(taskId, gUnknown_083CC720, 0xC00); - break; - case 3: - sub_80B45B4(taskId, gUnknown_083CC726, 0); - break; - case 4: - sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00); - break; - case 5: - sub_80B45B4(taskId, gUnknown_083CC732, 0); - break; - case 6: - sub_80B45B4(taskId, gUnknown_083CC738, 0); - break; - } - - data[0] = (data[0] + 1) & 7; - if (!data[0]) - { - DrawWholeMapView(); - data[1] = (data[1] + 1) % 3; - data[3] = 0; - } -} - -u8 sub_80B47D8(u16 var) -{ - u8 taskId = CreateTask(sub_80B4710, 0); - s16 *data = gTasks[taskId].data; - - PlayerGetDestCoords(&data[4], &data[5]); - data[0] = 0; - data[1] = 0; - data[2] = var; - sub_80B4710(taskId); - return taskId; -} - -void sub_80B4824(u8 var) -{ - gUnknown_02038731 = sub_80B47D8(var); -} - -void sub_80B483C(void) -{ - DestroyTask(gUnknown_02038731); -} - -bool8 sub_80B4850(void) -{ - if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2) - return FALSE; - else - return TRUE; -} -- cgit v1.2.3 From 5d923c4d5f3d0786715663b3ad83bc9f3e778164 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 20:41:55 -0600 Subject: import some battle_4.c code from emerald and get atk23_getexp matching --- src/battle/battle_2.c | 44 +- src/battle/battle_4.c | 2383 ++++++++-------------------- src/battle/battle_7.c | 8 +- src/battle/battle_ai.c | 18 +- src/battle/battle_controller_linkpartner.c | 10 +- src/battle/battle_controller_player.c | 16 +- src/battle/battle_controller_wally.c | 6 +- src/battle/battle_message.c | 40 +- src/battle/battle_util.c | 362 ++--- src/data/battle_strings_de.h | 2 +- src/data/battle_strings_en.h | 2 +- src/pokemon/pokemon_3.c | 10 +- src/rom3.c | 10 +- src/rom_800D42C.c | 8 +- src/script_pokemon_util_80C4BF0.c | 4 +- 15 files changed, 938 insertions(+), 1985 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 990535b4e..2368f58df 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -87,8 +87,8 @@ extern u8 gMultiHitCounter; extern u8 gActionForBanks[]; extern u16 gUnknown_02024C2C[]; extern u16 gLastUsedMove[]; -extern u16 gMoveHitWith[]; -extern u16 gUnknown_02024C44[]; +extern u16 gLastLandedMoves[]; +extern u16 gLastHitByType[]; extern u16 gUnknown_02024C4C[]; extern u16 gLockedMoves[]; extern u8 gUnknown_02024C5C[]; @@ -301,8 +301,8 @@ void sub_800E9EC(void) if (species != SPECIES_EGG && hp == 0) r6 |= 3 << i * 2; } - BATTLE_STRUCT->unk2 = r6; - BATTLE_STRUCT->unk3 = r6 >> 8; + gBattleStruct->unk2 = r6; + gBattleStruct->unk3 = r6 >> 8; } void sub_800EAAC(void) @@ -398,11 +398,11 @@ void sub_800EC9C(void) { if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) { - BATTLE_STRUCT->unk0 = 1; - BATTLE_STRUCT->unk1 = 1; + gBattleStruct->unk0 = 1; + gBattleStruct->unk1 = 1; sub_800E9EC(); sub_800EAAC(); - SendBlock(bitmask_all_link_players_but_self(), BATTLE_STRUCT, 32); + SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32); gBattleCommunication[0] = 1; } } @@ -458,7 +458,7 @@ void sub_800EC9C(void) gTasks[taskId].data[1] = 0x10E; gTasks[taskId].data[2] = 0x5A; gTasks[taskId].data[5] = 0; - gTasks[taskId].data[3] = BATTLE_STRUCT->unk2 | (BATTLE_STRUCT->unk3 << 8); + gTasks[taskId].data[3] = gBattleStruct->unk2 | (gBattleStruct->unk3 << 8); gTasks[taskId].data[4] = gBlockRecvBuffer[enemyId][1]; gBattleCommunication[0]++; } @@ -641,8 +641,8 @@ void sub_800F298(void) case 0: if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) { - BATTLE_STRUCT->unk0 = 1; - BATTLE_STRUCT->unk1 = 1; + gBattleStruct->unk0 = 1; + gBattleStruct->unk1 = 1; sub_800E9EC(); sub_800EAAC(); SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20); @@ -1579,8 +1579,8 @@ void sub_8010874(void) gDisableStructs[i].isFirstTurn= 2; gUnknown_02024C70[i] = 0; gLastUsedMove[i] = 0; - gMoveHitWith[i] = 0; - gUnknown_02024C44[i] = 0; + gLastLandedMoves[i] = 0; + gLastHitByType[i] = 0; gUnknown_02024C4C[i] = 0; gUnknown_02024C5C[i] = 0xFF; gLockedMoves[i] = 0; @@ -1732,8 +1732,8 @@ void SwitchInClearStructs(void) gDisableStructs[gActiveBank].isFirstTurn= 2; gLastUsedMove[gActiveBank] = 0; - gMoveHitWith[gActiveBank] = 0; - gUnknown_02024C44[gActiveBank] = 0; + gLastLandedMoves[gActiveBank] = 0; + gLastHitByType[gActiveBank] = 0; gUnknown_02024C4C[gActiveBank] = 0; gUnknown_02024C2C[gActiveBank] = 0; gUnknown_02024C5C[gActiveBank] = 0xFF; @@ -1796,8 +1796,8 @@ void UndoEffectsAfterFainting(void) gDisableStructs[gActiveBank].isFirstTurn= 2; gLastUsedMove[gActiveBank] = 0; - gMoveHitWith[gActiveBank] = 0; - gUnknown_02024C44[gActiveBank] = 0; + gLastLandedMoves[gActiveBank] = 0; + gLastHitByType[gActiveBank] = 0; gUnknown_02024C4C[gActiveBank] = 0; gUnknown_02024C2C[gActiveBank] = 0; gUnknown_02024C5C[gActiveBank] = 0xFF; @@ -4222,7 +4222,7 @@ void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; + gBattleStruct->dynamicMoveType = 0; gBattleMainFunc = RunTurnActionsFunctions; gBattleCommunication[3] = 0; gBattleCommunication[4] = 0; @@ -4235,7 +4235,7 @@ static void RunTurnActionsFunctions(void) if (gBattleOutcome != 0) gCurrentActionFuncId = 12; - BATTLE_STRUCT->unk16057 = gCurrentTurnActionNumber; + gBattleStruct->unk16057 = gCurrentTurnActionNumber; gUnknown_081FA640[gCurrentActionFuncId](); if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished @@ -4245,7 +4245,7 @@ static void RunTurnActionsFunctions(void) } else { - if (BATTLE_STRUCT->unk16057 != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank + if (gBattleStruct->unk16057 != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank { gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); @@ -4270,7 +4270,7 @@ void HandleEndTurn_BattleWon(void) } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) { - BattleMusicStop(); + BattleStopLowHpSound(); gBattlescriptCurrInstr = BattleScript_LocalTrainerBattleWon; switch (gTrainers[gTrainerBattleOpponent].trainerClass) @@ -5378,8 +5378,8 @@ void HandleAction_ActionFinished(void) gBattleMoveDamage = 0; ewram16002 = 0; ewram160A1 = 0; - gMoveHitWith[gBankAttacker] = 0; - gUnknown_02024C44[gBankAttacker] = 0; + gLastLandedMoves[gBankAttacker] = 0; + gLastHitByType[gBankAttacker] = 0; eDynamicMoveType = 0; gDynamicBasePower = 0; ewram1600C = 0; diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 6b048f0ab..0c5f5927e 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -1,5 +1,7 @@ #include "global.h" #include "battle.h" +#include "battle_message.h" +#include "battle_string_ids.h" #include "battle_util.h" #include "constants/battle_move_effects.h" #include "constants/moves.h" @@ -22,22 +24,89 @@ #include "pokemon_summary_screen.h" #include "naming_screen.h" #include "ewram.h" +#include "util.h" + +// TODO: put this into battle_controllers.h + +#define RET_VALUE_LEVELLED_UP 11 + +enum +{ + CONTROLLER_GETMONDATA, + CONTROLLER_GETRAWMONDATA, + CONTROLLER_SETMONDATA, + CONTROLLER_SETRAWMONDATA, + CONTROLLER_LOADMONSPRITE, + CONTROLLER_SWITCHINANIM, + CONTROLLER_RETURNMONTOBALL, + CONTROLLER_DRAWTRAINERPIC, + CONTROLLER_TRAINERSLIDE, + CONTROLLER_TRAINERSLIDEBACK, + CONTROLLER_FAINTANIMATION, + CONTROLLER_PALETTEFADE, + CONTROLLER_SUCCESSBALLTHROWANIM, + CONTROLLER_BALLTHROWANIM, + CONTROLLER_PAUSE, + CONTROLLER_MOVEANIMATION, + CONTROLLER_PRINTSTRING, + CONTROLLER_PRINTSTRINGPLAYERONLY, + CONTROLLER_CHOOSEACTION, + CONTROLLER_UNKNOWNYESNOBOX, + CONTROLLER_CHOOSEMOVE, + CONTROLLER_OPENBAG, + CONTROLLER_CHOOSEPOKEMON, + CONTROLLER_23, + CONTROLLER_HEALTHBARUPDATE, + CONTROLLER_EXPUPDATE, + CONTROLLER_STATUSICONUPDATE, + CONTROLLER_STATUSANIMATION, + CONTROLLER_STATUSXOR, + CONTROLLER_DATATRANSFER, + CONTROLLER_DMA3TRANSFER, + CONTROLLER_31, + CONTROLLER_32, + CONTROLLER_TWORETURNVALUES, + CONTROLLER_CHOSENMONRETURNVALUE, + CONTROLLER_ONERETURNVALUE, + CONTROLLER_ONERETURNVALUE_DUPLICATE, + CONTROLLER_37, + CONTROLLER_38, + CONTROLLER_39, + CONTROLLER_40, + CONTROLLER_HITANIMATION, + CONTROLLER_42, + CONTROLLER_EFFECTIVENESSSOUND, + CONTROLLER_PLAYFANFAREORBGM, + CONTROLLER_FAINTINGCRY, + CONTROLLER_INTROSLIDE, + CONTROLLER_INTROTRAINERBALLTHROW, + CONTROLLER_DRAWPARTYSTATUSSUMMARY, + CONTROLLER_49, + CONTROLLER_50, + CONTROLLER_SPRITEINVISIBILITY, + CONTROLLER_BATTLEANIMATION, + CONTROLLER_LINKSTANDBYMSG, + CONTROLLER_RESETACTIONMOVESELECTION, + CONTROLLER_55, + /*new controllers should go here*/ + CONTROLLER_TERMINATOR_NOP, + CONTROLLER_CMDS_COUNT +}; //extern needed variables extern u8 gCritMultiplier; extern s32 gBattleMoveDamage; -extern u32 gStatuses3[4]; +extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern u16 gBattleTypeFlags; -extern const u32 gBitTable[]; extern const struct BaseStats gBaseStats[]; -extern struct BattleEnigmaBerry gEnigmaBerries[4]; -extern struct BattlePokemon gBattleMons[4]; +extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; +extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u8 gActiveBank; extern u32 gBattleExecBuffer; extern u8 gNoOfAllBanks; -extern u16 gBattlePartyID[4]; -extern u8 gBanksByTurnOrder[4]; -extern u8 gActionsByTurnOrder[4]; +extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; +extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT]; +extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gLastUsedAbility; extern u16 gBattleWeather; @@ -57,23 +126,23 @@ extern u8 gBattleTerrain; extern u16 gTrainerBattleOpponent; extern u8 gBankAttacker; extern u8 gBankTarget; -extern u8* gBattlescriptCurrInstr; +extern const u8* gBattlescriptCurrInstr; extern u8 gCurrMovePos; extern u8 gCurrentActionFuncId; extern u32 gHitMarker; extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; -extern u16 gMoveHitWith[4]; -extern u16 gUnknown_02024C44[4]; +extern u16 gLastLandedMoves[4]; +extern u16 gLastHitByType[4]; extern u8 gStringBank; extern u16 gDynamicBasePower; extern const u8 gTypeEffectiveness[]; extern u16 gLastUsedItem; extern u16 gBattleMovePower; -extern s32 gHP_dealt; -extern s32 gTakenDmg[4]; -extern u8 gTakenDmgBanks[4]; -extern const u16 gMissStrings[]; +extern s32 gHpDealt; +extern s32 gTakenDmg[BATTLE_BANKS_COUNT]; +extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT]; +extern const u16 gMissStringIds[]; extern u8 gSentPokesToOpponent[2]; extern u8 gBank1; extern u16 gExpShareExp; @@ -98,28 +167,40 @@ extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one extern u8 gCurrentTurnActionNumber; extern u16 gTrappingMoves[]; +extern u8 BattleScript_MoveEffectSleep[]; +extern u8 BattleScript_MoveEffectPoison[]; +extern u8 BattleScript_MoveEffectBurn[]; +extern u8 BattleScript_MoveEffectFreeze[]; +extern u8 BattleScript_MoveEffectParalysis[]; +extern u8 BattleScript_MoveEffectToxic[]; +extern u8 BattleScript_MoveEffectConfusion[]; +extern u8 BattleScript_MoveEffectUproar[]; +extern u8 BattleScript_MoveEffectWrap[]; +extern u8 BattleScript_MoveEffectPayDay[]; +extern u8 BattleScript_MoveEffectRecoil33[]; + //extern functions u8 AtkCanceller_UnableToUseMove(void); void PressurePPLose(u8 bank_atk, u8 bank_def, u16 move); void CancelMultiTurnMoves(u8 bank); -void BattleScriptPush(u8* BS_ptr); +void BattleScriptPush(const u8* BS_ptr); void BattleScriptPushCursor(void); void RecordAbilityBattle(u8 bank, u8 ability); void RecordItemBattle(u8 bank, u8 holdEffect); static bool8 IsTwoTurnsMove(u16 move); -static void DestinyBondFlagUpdate(void); -static void b_wonderguard_and_levitate(void); +static void TrySetDestinyBondToHappen(void); +static void CheckWonderGuardAndLevitate(void); u8 GetBankIdentity(u8 bank); u8 GetBankSide(u8 bank); u8 GetBattleBank(u8 bankValue); s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def); static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2 void UndoEffectsAfterFainting(void); -void BattleMusicStop(void); +void BattleStopLowHpSound(void); void PlayBGM(u16 songID); void MonGainEVs(struct Pokemon*, u16 defeatedSpecies); extern u8 gBattleBufferB[4][0x200]; -void sub_80324F8(struct Pokemon*, u8 bank); +void HandleLowHpMusicChange(struct Pokemon*, u8 bank); void AdjustFriendship(struct Pokemon*, u8 value); bool8 IsTradedMon(struct Pokemon*); void BattleScriptPop(void); @@ -225,7 +306,7 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; #define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8)) #define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr)) -#define TargetProtectAffected ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) +#define TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) //array entries for battle communication #define MOVE_EFFECT_BYTE 0x3 @@ -306,7 +387,7 @@ static void atk1F_jumpifsideaffecting(void); static void atk20_jumpifstat(void); static void atk21_jumpifstatus3condition(void); static void atk22_jumpiftype(void); -static void atk23_getexp(void); +void atk23_getexp(void); static void atk24(void); static void atk25_movevaluescleanup(void); static void atk26_setmultihit(void); @@ -521,7 +602,7 @@ static void atkF5_removeattackerstatus1(void); static void atkF6_finishaction(void); static void atkF7_finishturn(void); -const BattleCmdFunc gBattleScriptingCommandsTable[] = +void (* const gBattleScriptingCommandsTable[])(void) = { atk00_attackcanceler, atk01_accuracycheck, @@ -773,13 +854,13 @@ const BattleCmdFunc gBattleScriptingCommandsTable[] = atkF7_finishturn, }; -struct statFractions +struct StatFractions { u8 dividend; u8 divisor; }; -static const struct statFractions gAccuracyStageRatios[] = +static const struct StatFractions gAccuracyStageRatios[] = { { 33, 100}, // -6 { 36, 100}, // -5 @@ -796,25 +877,25 @@ static const struct statFractions gAccuracyStageRatios[] = { 3, 1}, // +6 }; -//The chance is 1/N for each stage. -static const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2}; +// The chance is 1/N for each stage. +static const u16 sCriticalHitChance[] = {16, 8, 4, 3, 2}; -static const u32 gStatusFlagsForMoveEffects[] = +static const u32 sStatusFlagsForMoveEffects[] = { 0x00000000, - 0x00000007, - 0x00000008, - 0x00000010, - 0x00000020, - 0x00000040, - 0x00000080, - 0x00000007, - 0x00000008, + STATUS_SLEEP, + STATUS_POISON, + STATUS_BURN, + STATUS_FREEZE, + STATUS_PARALYSIS, + STATUS_TOXIC_POISON, + STATUS2_CONFUSION, + STATUS2_FLINCHED, 0x00000000, - 0x00000070, + STATUS2_UPROAR, 0x00000000, - 0x00001000, - 0x0000E000, + STATUS2_MULTIPLETURNS, + STATUS2_WRAPPED, 0x00000000, 0x00000000, 0x00000000, @@ -830,11 +911,11 @@ static const u32 gStatusFlagsForMoveEffects[] = 0x00000000, 0x00000000, 0x00000000, - 0x00400000, + STATUS2_RECHARGE, 0x00000000, 0x00000000, - 0x04000000, - 0x08000000, + STATUS2_ESCAPE_PREVENTION, + STATUS2_NIGHTMARE, 0x00000000, 0x00000000, 0x00000000, @@ -854,7 +935,7 @@ static const u32 gStatusFlagsForMoveEffects[] = 0x00000000, 0x00000000, 0x00000000, - 0x00000C00, + STATUS2_LOCK_CONFUSE, 0x00000000, 0x00000000, 0x00000000, @@ -863,18 +944,6 @@ static const u32 gStatusFlagsForMoveEffects[] = 0x00000000 }; -extern u8 BattleScript_MoveEffectSleep[]; -extern u8 BattleScript_MoveEffectPoison[]; -extern u8 BattleScript_MoveEffectBurn[]; -extern u8 BattleScript_MoveEffectFreeze[]; -extern u8 BattleScript_MoveEffectParalysis[]; -extern u8 BattleScript_MoveEffectToxic[]; -extern u8 BattleScript_MoveEffectConfusion[]; -extern u8 BattleScript_MoveEffectUproar[]; -extern u8 BattleScript_MoveEffectWrap[]; -extern u8 BattleScript_MoveEffectPayDay[]; -extern u8 BattleScript_MoveEffectRecoil33[]; - u8* const gMoveEffectBS_Ptrs[] = { BattleScript_MoveEffectSleep, @@ -920,17 +989,25 @@ u8* const gMoveEffectBS_Ptrs[] = const u8 sUnreferencedBitMask1[] = {0, 1, 3, 7, 0xF, 0x1F, 0x3F}; -const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED}; +const u8 gLevelUpStatBoxStats[] = +{ + MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, + MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED +}; static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF}; -static const u16 sUnknown_081FACFE[] = //banned moves to copy +#define MIMIC_FORBIDDEN_END 0xFFFE +#define METRONOME_FORBIDDEN_END 0xFFFF +#define ASSIST_FORBIDDEN_END 0xFFFF + +static const u16 sMovesForbiddenToCopy[] = { MOVE_METRONOME, MOVE_STRUGGLE, MOVE_SKETCH, MOVE_MIMIC, - 0xFFFE, + MIMIC_FORBIDDEN_END, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_PROTECT, @@ -945,10 +1022,10 @@ static const u16 sUnknown_081FACFE[] = //banned moves to copy MOVE_COVET, MOVE_TRICK, MOVE_FOCUS_PUNCH, - 0xFFFF + METRONOME_FORBIDDEN_END }; -static const u8 sUnknown_081FAD26[] = //reversal+flail HP thresholds to power +static const u8 sFlailHpScaleToPowerTable[] = //reversal+flail HP thresholds to power { 1, 200, 4, 150, @@ -972,16 +1049,16 @@ static const u16 sNaturePowerMoves[] = MOVE_SWIFT }; -//weight-based damage table for Low Kick -//format: min. weight (hectograms), base power -static const u16 sWeightDamage[] = +// weight-based damage table for Low Kick +// format: min. weight (hectograms), base power +static const u16 sWeightToDamageTable[] = { 100, 20, 250, 40, 500, 60, 1000, 80, 2000, 100, - -1, -1 + 0xFFFF, 0xFFFF }; static const u16 sPickupItems[] = @@ -1006,23 +1083,24 @@ static const u8 sTerrainToType[] = TYPE_WATER, // underwater TYPE_WATER, // water TYPE_WATER, // pond water - TYPE_ROCK , // rock - TYPE_ROCK , // cave + TYPE_ROCK, // rock + TYPE_ROCK, // cave TYPE_NORMAL, // building TYPE_NORMAL, // plain }; static const u8 sBallCatchBonuses[] = { - 20, 15, 10, 15 //Ultra, Great, Poke, Safari + 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; static void atk00_attackcanceler(void) { - int i; - if (gBattleOutcome) + s32 i; + + if (gBattleOutcome != 0) { - gCurrentActionFuncId = 0xC; + gCurrentActionFuncId = ACTION_FINISHED; return; } if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING)) @@ -1033,7 +1111,7 @@ static void atk00_attackcanceler(void) } if (AtkCanceller_UnableToUseMove()) return; - if (AbilityBattleEffects(2, gBankTarget, 0, 0, 0)) + if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, gBankTarget, 0, 0, 0)) return; if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) @@ -1042,22 +1120,27 @@ static void atk00_attackcanceler(void) gBattleMoveFlags |= MOVESTATUS_MISSED; return; } + gHitMarker &= ~(HITMARKER_x800000); + if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) { - u8 disobedient = IsMonDisobedient(); - asm("":::"r0"); //It's impossible to match - asm("":::"r1"); - if ((disobedient)) + i = IsMonDisobedient(); // why use the 'i' variable...? + switch (i) { - if (disobedient == 2) - gHitMarker |= HITMARKER_OBEYS; - else - gBattleMoveFlags |= MOVESTATUS_MISSED; + case 0: + break; + case 2: + gHitMarker |= HITMARKER_OBEYS; + return; + default: + gBattleMoveFlags |= MOVESTATUS_MISSED; return; } } + gHitMarker |= HITMARKER_OBEYS; + if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED) { PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT); @@ -1066,18 +1149,20 @@ static void atk00_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_MagicCoatBounce; return; } + for (i = 0; i < gNoOfAllBanks; i++) { if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED) { PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH); gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0; - BATTLE_STRUCT->scriptingActive = gBanksByTurnOrder[i]; + gBattleStruct->scriptingActive = gBanksByTurnOrder[i]; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SnatchedMove; return; } } + if (gSpecialStatuses[gBankTarget].lightningRodRedirected) { gSpecialStatuses[gBankTarget].lightningRodRedirected = 0; @@ -1086,14 +1171,14 @@ static void atk00_attackcanceler(void) gBattlescriptCurrInstr = BattleScript_TookAttack; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } - else if (TargetProtectAffected + else if (TARGET_PROTECT_AFFECTED && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)) && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)))) { CancelMultiTurnMoves(gBankAttacker); gBattleMoveFlags |= MOVESTATUS_MISSED; - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = 1; gBattlescriptCurrInstr++; } @@ -1105,25 +1190,25 @@ static void atk00_attackcanceler(void) static void JumpIfMoveFailed(u8 adder, u16 move) { - void* to_store = gBattlescriptCurrInstr + adder; + const u8 *BS_ptr = gBattlescriptCurrInstr + adder; if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; - to_store = T1_READ_PTR(gBattlescriptCurrInstr + 1); + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; + BS_ptr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } else { - DestinyBondFlagUpdate(); - if (AbilityBattleEffects(3, gBankTarget, 0, 0, move)) + TrySetDestinyBondToHappen(); + if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move)) return; } - gBattlescriptCurrInstr = to_store; + gBattlescriptCurrInstr = BS_ptr; } static void atk40_jumpifaffectedbyprotect(void) { - if (TargetProtectAffected) + if (TARGET_PROTECT_AFFECTED) { gBattleMoveFlags |= MOVESTATUS_MISSED; JumpIfMoveFailed(5, 0); @@ -1137,13 +1222,13 @@ static void atk40_jumpifaffectedbyprotect(void) static bool8 JumpIfMoveAffectedByProtect(u16 move) { - bool8 affected = 0; - if (TargetProtectAffected) + bool8 affected = FALSE; + if (TARGET_PROTECT_AFFECTED) { gBattleMoveFlags |= MOVESTATUS_MISSED; JumpIfMoveFailed(7, move); gBattleCommunication[6] = 1; - affected = 1; + affected = TRUE; } return affected; } @@ -1162,6 +1247,7 @@ static bool8 AccuracyCalcHelper(u16 move) JumpIfMoveFailed(7, move); return TRUE; } + gHitMarker &= ~HITMARKER_IGNORE_ON_AIR; if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND) @@ -1170,6 +1256,7 @@ static bool8 AccuracyCalcHelper(u16 move) JumpIfMoveFailed(7, move); return TRUE; } + gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND; if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER) @@ -1178,6 +1265,7 @@ static bool8 AccuracyCalcHelper(u16 move) JumpIfMoveFailed(7, move); return TRUE; } + gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER; if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER) @@ -1186,12 +1274,14 @@ static bool8 AccuracyCalcHelper(u16 move) JumpIfMoveFailed(7, move); return TRUE; } + return FALSE; } static void atk01_accuracycheck(void) { u16 move = T2_READ_16(gBattlescriptCurrInstr + 5); + if (move == 0xFFFE || move == 0xFFFF) { if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker) @@ -1203,13 +1293,14 @@ static void atk01_accuracycheck(void) } else { - u8 type; s8 buff; u8 MoveAcc; u16 calc; u8 hold_effect; u8 quality; - if (move == 0) {move = gCurrentMove;} + u8 type, moveAcc, holdEffect, quality; + s8 buff; + u16 calc; - if (BATTLE_STRUCT->dynamicMoveType) - type = BATTLE_STRUCT->dynamicMoveType & 0x3F; - else - type = gBattleMoves[move].type; + if (move == 0) + move = gCurrentMove; + + GET_MOVE_TYPE(move, type); if (JumpIfMoveAffectedByProtect(move)) return; @@ -1227,47 +1318,52 @@ static void atk01_accuracycheck(void) buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION]; } - if (buff < 0) {buff = 0;} - if (buff > 0xC) {buff = 0xC;} + if (buff < 0) + buff = 0; + if (buff > 0xC) + buff = 0xC; - MoveAcc = gBattleMoves[move].accuracy; - //check Thunder on sunny weather + moveAcc = gBattleMoves[move].accuracy; + // check Thunder on sunny weather if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER) - MoveAcc = 50; + moveAcc = 50; - calc = gAccuracyStageRatios[buff].dividend * MoveAcc; + calc = gAccuracyStageRatios[buff].dividend * moveAcc; calc /= gAccuracyStageRatios[buff].divisor; if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES) - calc = (calc * 130) / 100; //1.3 compound eyes boost + calc = (calc * 130) / 100; // 1.3 compound eyes boost if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY) - calc = (calc * 80) / 100; //1.2 sand veil loss; + calc = (calc * 80) / 100; // 1.2 sand veil loss; if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9) - calc = (calc * 80) / 100; //1.2 hustle loss; + calc = (calc * 80) / 100; // 1.2 hustle loss; if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY) - hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam; + { + holdEffect = gEnigmaBerries[gBankTarget].holdEffect; + quality = gEnigmaBerries[gBankTarget].holdEffectParam; + } else { - hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); + holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item); } gStringBank = gBankTarget; - if (hold_effect == HOLD_EFFECT_EVASION_UP) + if (holdEffect == HOLD_EFFECT_EVASION_UP) calc = (calc * (100 - quality)) / 100; - //final calculation + // final calculation if ((Random() % 100 + 1) > calc) { gBattleMoveFlags |= MOVESTATUS_MISSED; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20)) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && + (gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20)) gBattleCommunication[6] = 2; else gBattleCommunication[6] = 0; - b_wonderguard_and_levitate(); - + CheckWonderGuardAndLevitate(); } JumpIfMoveFailed(7, move); } @@ -1288,31 +1384,35 @@ static void atk02_attackstring(void) static void atk03_ppreduce(void) { - int to_deduct = 1; + s32 ppToDeduct = 1; + if (gBattleExecBuffer) return; + if (!gSpecialStatuses[gBankAttacker].flag20) { switch (gBattleMoves[gCurrentMove].target) { case TARGET_FOES_AND_ALLY: - to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); + ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0); break; case TARGET_BOTH: case TARGET_OPPONENTS_FIELD: - to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0); + ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0); break; default: if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE) - to_deduct++; + ppToDeduct++; break; } } + if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos]) { gProtectStructs[gBankAttacker].notFirstStrike = 1; - if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct) - gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct; + + if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > ppToDeduct) + gBattleMons[gBankAttacker].pp[gCurrMovePos] -= ppToDeduct; else gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0; @@ -1324,56 +1424,45 @@ static void atk03_ppreduce(void) MarkBufferBankForExecution(gBankAttacker); } } + gHitMarker &= ~(HITMARKER_NO_PPDEDUCT); gBattlescriptCurrInstr++; } static void atk04_critcalc(void) { - u8 hold_effect; u16 item; u16 crit_chance; int adderv3, adderv5, adderv6, adderv7, adderv8, adderv9, adderv10, adderv11; u16 adderv12; + u8 holdEffect; + u16 item, critChance; + item = gBattleMons[gBankAttacker].item; + if (item == ITEM_ENIGMA_BERRY) - hold_effect = gEnigmaBerries[gBankAttacker].holdEffect; + holdEffect = gEnigmaBerries[gBankAttacker].holdEffect; else - hold_effect = ItemId_GetHoldEffect(item); + holdEffect = ItemId_GetHoldEffect(item); gStringBank = gBankAttacker; - if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) - adderv3 = 2; - else - adderv3 = 0; - - if (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) {adderv3++;} - adderv5 = adderv3; - if (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) {adderv5 = adderv3 + 1;} - - if (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) {adderv5++;} - adderv6 = adderv5; - if (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) {adderv6 = adderv5 + 1;} - - adderv7 = 0; - if (hold_effect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) {adderv7 = 1;} - adderv8 = 2 * adderv7; - adderv9 = 0; - if (hold_effect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD) {adderv9 = 1;} - adderv11 = 2 * adderv9; - if (hold_effect == HOLD_EFFECT_SCOPE_LENS) - {adderv10 = 1 + adderv6 + adderv8; adderv12 = adderv10 + adderv11;} - else - {adderv10 = adderv6 + adderv8; adderv12 = adderv10 + adderv11;} - - crit_chance = adderv12; + critChance = 2 * ((gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0) + + (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) + + (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) + + (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) + + (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) + + (holdEffect == HOLD_EFFECT_SCOPE_LENS) + + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) + + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD); - if (crit_chance > 4) {crit_chance = 4;} + if (critChance > 4) + critChance = 4; if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR) && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT) && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE)) - && !(Random() % gCriticalHitChance[crit_chance])) + && !(Random() % sCriticalHitChance[critChance])) gCritMultiplier = 2; else gCritMultiplier = 1; + gBattlescriptCurrInstr++; } @@ -1382,8 +1471,8 @@ static void atk05_damagecalc(void) u16 side_hword = gSideAffecting[GetBankIdentity(gBankTarget) & 1]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, side_hword, gDynamicBasePower, - BATTLE_STRUCT->dynamicMoveType, gBankAttacker, gBankTarget); - gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier; + gBattleStruct->dynamicMoveType, gBankAttacker, gBankTarget); + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleStruct->dmgMultiplier; if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) gBattleMoveDamage *= 2; @@ -1398,9 +1487,9 @@ void AI_CalcDmg(u8 BankAtk, u8 BankDef) u16 side_hword = gSideAffecting[GetBankIdentity(BankDef) & 1]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove, side_hword, gDynamicBasePower, - BATTLE_STRUCT->dynamicMoveType, BankAtk, BankDef); + gBattleStruct->dynamicMoveType, BankAtk, BankDef); gDynamicBasePower = 0; - gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier; + gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleStruct->dmgMultiplier; if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) gBattleMoveDamage *= 2; @@ -1448,8 +1537,8 @@ static void atk06_typecalc(void) u8 move_type; if (gCurrentMove != MOVE_STRUGGLE) { - if (BATTLE_STRUCT->dynamicMoveType) - move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + if (gBattleStruct->dynamicMoveType) + move_type = gBattleStruct->dynamicMoveType & 0x3F; else move_type = gBattleMoves[gCurrentMove].type; @@ -1464,8 +1553,8 @@ static void atk06_typecalc(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = move_type; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1501,8 +1590,8 @@ static void atk06_typecalc(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gMoveHitWith[gBankTarget] = 0; - gUnknown_02024C44[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1511,7 +1600,7 @@ static void atk06_typecalc(void) } gBattlescriptCurrInstr++; } -static void b_wonderguard_and_levitate(void) +static void CheckWonderGuardAndLevitate(void) { u8 flags = 0; int i = 0; @@ -1520,8 +1609,8 @@ static void b_wonderguard_and_levitate(void) if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power) return; - if (BATTLE_STRUCT->dynamicMoveType) - move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + if (gBattleStruct->dynamicMoveType) + move_type = gBattleStruct->dynamicMoveType & 0x3F; else move_type = gBattleMoves[gCurrentMove].type; @@ -1841,12 +1930,12 @@ static void atk09_attackanimation(void) { BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_Pausex20; - BATTLE_STRUCT->animTurn += 1; - BATTLE_STRUCT->animTargetsHit += 1; + gBattleStruct->animTurn += 1; + gBattleStruct->animTargetsHit += 1; } else { - if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && BATTLE_STRUCT->animTargetsHit) + if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && gBattleStruct->animTargetsHit) { gBattlescriptCurrInstr++; return; @@ -1855,9 +1944,9 @@ static void atk09_attackanimation(void) { gActiveBank = gBankAttacker; - EmitMoveAnimation(0, gCurrentMove, BATTLE_STRUCT->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]); - BATTLE_STRUCT->animTurn += 1; - BATTLE_STRUCT->animTargetsHit += 1; + EmitMoveAnimation(0, gCurrentMove, gBattleStruct->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]); + gBattleStruct->animTurn += 1; + gBattleStruct->animTargetsHit += 1; MarkBufferBankForExecution(gBankAttacker); gBattlescriptCurrInstr++; } @@ -1879,49 +1968,60 @@ static void atk0B_healthbarupdate(void) { if (gBattleExecBuffer) return; - if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) - goto END; - gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - - if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - PrepareStringBattle(0x80, gActiveBank); - goto END; - } + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); - EmitHealthBarUpdate(0, gBattleMoveDamage); - MarkBufferBankForExecution(gActiveBank); + if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) + { + PrepareStringBattle(0x80, gActiveBank); + } + else + { + // Emerald + /* + s16 healthValue; - if (!GetBankSide(gActiveBank) && gBattleMoveDamage > 0) - gBattleResults.unk5_0 = 1; + s32 currDmg = gBattleMoveDamage; + s32 maxPossibleDmgValue = 10000; // not present in R/S, ensures that huge damage values don't change sign - END: - gBattlescriptCurrInstr += 2; + if (currDmg <= maxPossibleDmgValue) + healthValue = currDmg; + else + healthValue = maxPossibleDmgValue; + + EmitHealthBarUpdate(0, healthValue); + */ + + EmitHealthBarUpdate(0, gBattleMoveDamage); + MarkBufferBankForExecution(gActiveBank); + + if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0) + gBattleResults.unk5_0 = 1; + } + } + + gBattlescriptCurrInstr += 2; } static void atk0C_datahpupdate(void) { - register u32 move_type asm("r6"); //no idea how to match it otherwise - u8 dynamic_move_type; + u32 moveType; if (gBattleExecBuffer) return; - dynamic_move_type = BATTLE_STRUCT->dynamicMoveType; - if (dynamic_move_type && !(dynamic_move_type & 0x40)) - { - move_type = 0x3F; - move_type &= dynamic_move_type; - } + if (gBattleStruct->dynamicMoveType == 0) + moveType = gBattleMoves[gCurrentMove].type; + else if (!(gBattleStruct->dynamicMoveType & 0x40)) + moveType = gBattleStruct->dynamicMoveType & 0x3F; else - { - move_type = gBattleMoves[gCurrentMove].type; - } + moveType = gBattleMoves[gCurrentMove].type; if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE)) { if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage) @@ -1929,16 +2029,16 @@ static void atk0C_datahpupdate(void) if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage; gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage; - gHP_dealt = gBattleMoveDamage; + gHpDealt = gBattleMoveDamage; } else { if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP; - gHP_dealt = gDisableStructs[gActiveBank].substituteHP; + gHpDealt = gDisableStructs[gActiveBank].substituteHP; gDisableStructs[gActiveBank].substituteHP = 0; } - //check substitute fading + // check substitute fading if (gDisableStructs[gActiveBank].substituteHP == 0) { gBattlescriptCurrInstr += 2; @@ -1950,14 +2050,14 @@ static void atk0C_datahpupdate(void) else { gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE); - if (gBattleMoveDamage < 0) //hp goes up + if (gBattleMoveDamage < 0) // hp goes up { gBattleMons[gActiveBank].hp -= gBattleMoveDamage; if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP) gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP; } - else //hp goes down + else // hp goes down { if (gHitMarker & HITMARKER_x20) { @@ -1966,7 +2066,7 @@ static void atk0C_datahpupdate(void) else { gTakenDmg[gActiveBank] += gBattleMoveDamage; - if (T2_READ_8(gBattlescriptCurrInstr + 1) == 0) + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) gTakenDmgBanks[gActiveBank] = gBankAttacker; else gTakenDmgBanks[gActiveBank] = gBankTarget; @@ -1975,22 +2075,22 @@ static void atk0C_datahpupdate(void) if (gBattleMons[gActiveBank].hp > gBattleMoveDamage) { gBattleMons[gActiveBank].hp -= gBattleMoveDamage; - gHP_dealt = gBattleMoveDamage; + gHpDealt = gBattleMoveDamage; } else { - gHP_dealt = gBattleMons[gActiveBank].hp; + gHpDealt = gBattleMons[gActiveBank].hp; gBattleMons[gActiveBank].hp = 0; } if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000)) - gSpecialStatuses[gActiveBank].moveturnLostHP = gHP_dealt; + gSpecialStatuses[gActiveBank].moveturnLostHP = gHpDealt; - if (move_type <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) + if (moveType <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT) { - gProtectStructs[gActiveBank].physicalDmg = gHP_dealt; - gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHP_dealt; - if (T2_READ_8(gBattlescriptCurrInstr + 1) == 0) + gProtectStructs[gActiveBank].physicalDmg = gHpDealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHpDealt; + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) { gProtectStructs[gActiveBank].physicalBank = gBankAttacker; gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker; @@ -2001,11 +2101,11 @@ static void atk0C_datahpupdate(void) gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget; } } - else if (move_type > 8 && !(gHitMarker & HITMARKER_x100000)) + else if (moveType > 8 && !(gHitMarker & HITMARKER_x100000)) { - gProtectStructs[gActiveBank].specialDmg = gHP_dealt; - gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHP_dealt; - if (T2_READ_8(gBattlescriptCurrInstr + 1) == 0) + gProtectStructs[gActiveBank].specialDmg = gHpDealt; + gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHpDealt; + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) { gProtectStructs[gActiveBank].specialBank = gBankAttacker; gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker; @@ -2024,7 +2124,7 @@ static void atk0C_datahpupdate(void) } else { - gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0) gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF; } @@ -2048,6 +2148,7 @@ static void atk0E_effectivenesssound(void) { if (gBattleExecBuffer) return; + gActiveBank = gBankTarget; if (!(gBattleMoveFlags & MOVESTATUS_MISSED)) { @@ -2092,37 +2193,39 @@ static void atk0E_effectivenesssound(void) static void atk0F_resultmessage(void) { - u16 stringID = 0; + u32 stringId = 0; if (gBattleExecBuffer) return; if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2)) { - stringID = gMissStrings[gBattleCommunication[6]]; + stringId = gMissStringIds[gBattleCommunication[6]]; gBattleCommunication[MSG_DISPLAY] = 1; } else { gBattleCommunication[MSG_DISPLAY] = 1; - switch (gBattleMoveFlags & 0xFE) + switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED))) { case MOVESTATUS_SUPEREFFECTIVE: - stringID = 0xDE; + stringId = STRINGID_SUPEREFFECTIVE; break; case MOVESTATUS_NOTVERYEFFECTIVE: - stringID = 0xDD; + stringId = STRINGID_NOTVERYEFFECTIVE; break; case MOVESTATUS_ONEHITKO: - stringID = 0xDA; + stringId = STRINGID_ONEHITKO; break; case MOVESTATUS_ENDURED: - stringID = 0x99; + stringId = STRINGID_PKMNENDUREDHIT; break; case MOVESTATUS_FAILED: - goto FAILED; + stringId = STRINGID_BUTITFAILED; + break; case MOVESTATUS_NOTAFFECTED: - goto NOTAFFECTED; + stringId = STRINGID_ITDOESNTAFFECT; + break; case MOVESTATUS_HUNGON: gLastUsedItem = gBattleMons[gBankTarget].item; gStringBank = gBankTarget; @@ -2132,8 +2235,9 @@ static void atk0F_resultmessage(void) return; default: if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) - NOTAFFECTED: - stringID = 0x1B; + { + stringId = STRINGID_ITDOESNTAFFECT; + } else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO) { gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO); @@ -2160,18 +2264,19 @@ static void atk0F_resultmessage(void) return; } else if (gBattleMoveFlags & MOVESTATUS_FAILED) - FAILED: - stringID = 0xE5; + { + stringId = STRINGID_BUTITFAILED; + } else + { gBattleCommunication[MSG_DISPLAY] = 0; + } } } - if (stringID) - { - register u16 dummy asm("r0") = stringID; //Can't match it otherwise - PrepareStringBattle(dummy, gBankAttacker); - } + if (stringId) + PrepareStringBattle(stringId, gBankAttacker); + gBattlescriptCurrInstr++; } @@ -2268,12 +2373,12 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gEffectBank = gBankAttacker; //bank that effects get applied on gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(EffectAffectsUser); AffectsUser = EffectAffectsUser; - BATTLE_STRUCT->scriptingActive = gBankTarget; //theoretically the attacker + gBattleStruct->scriptingActive = gBankTarget; //theoretically the attacker } else { gEffectBank = gBankTarget; - BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleStruct->scriptingActive = gBankAttacker; } if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && @@ -2293,7 +2398,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) //status change { - switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { case STATUS_SLEEP: //check active uproar @@ -2342,7 +2447,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) {break;} if (gBattleMons[gEffectBank].status1) {break;} if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;} - + StatusChanged = 1; break; case STATUS_BURN: @@ -2454,10 +2559,10 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (StatusChanged == 1) { BattleScriptPush(gBattlescriptCurrInstr + 1); - if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) + if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP) gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2); else - gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gActiveBank = gEffectBank; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1); @@ -2471,7 +2576,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleCommunication[MULTISTRING_CHOOSER] = 0; if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3) { - BATTLE_STRUCT->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; + gBattleStruct->synchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE]; gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT; } return; @@ -2481,12 +2586,12 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } else { - if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + if (gBattleMons[gEffectBank].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { gBattlescriptCurrInstr++; return; } - switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) + switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]) { case 7: //confusion if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO) @@ -2513,7 +2618,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) else { if (BankGetTurnOrder(gEffectBank) > gCurrentTurnActionNumber) - gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; + gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattlescriptCurrInstr++; return; } break; @@ -2553,9 +2658,9 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED) {gBattlescriptCurrInstr++; return;} gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD; - BATTLE_STRUCT->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; - (1 + BATTLE_STRUCT->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. - BATTLE_STRUCT->wrappedBy[gEffectBank] = gBankAttacker; + gBattleStruct->wrappedMove[gEffectBank*2] = (u8)gCurrentMove; + (1 + gBattleStruct->wrappedMove)[gEffectBank*2] = gCurrentMove >> 8; //don't ask. + gBattleStruct->wrappedBy[gEffectBank] = gBankAttacker; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]]; gBattleCommunication[MULTISTRING_CHOOSER] = 0; @@ -2564,7 +2669,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattleCommunication[MULTISTRING_CHOOSER]++; break; case 14: //25% recoil - gBattleMoveDamage = (gHP_dealt) / 4; + gBattleMoveDamage = (gHpDealt) / 4; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2574,8 +2679,8 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (ChangeStatBuffs(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;} else { - BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one + gBattleStruct->animArg2 = 0; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatUp; } @@ -2584,8 +2689,8 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (ChangeStatBuffs(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly else { - BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleStruct->animArg2 = 0; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatDown; } @@ -2594,8 +2699,8 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (ChangeStatBuffs(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;} else { - BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleStruct->animArg2 = 0; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatUp; } @@ -2604,8 +2709,8 @@ void SetMoveEffect(bool8 primary, u8 certainArg) if (ChangeStatBuffs(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;} else { - BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; + gBattleStruct->animArg2 = 0; BattleScriptPush(gBattlescriptCurrInstr + 1); gBattlescriptCurrInstr = BattleScript_StatDown; } @@ -2695,7 +2800,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) gBattlescriptCurrInstr = BattleScript_AtkDefDown; return; case 38: //33% recoil - gBattleMoveDamage = gHP_dealt / 3; + gBattleMoveDamage = gHpDealt / 3; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptPush(gBattlescriptCurrInstr + 1); @@ -2894,7 +2999,7 @@ _0801E50C:\n\ bls _0801E518\n\ b _0801EB4A\n\ _0801E518:\n\ - ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects\n\ + ldr r1, _0801E55C @ =sStatusFlagsForMoveEffects\n\ ldrb r0, [r7, 0x3]\n\ lsls r0, 2\n\ adds r0, r1\n\ @@ -2922,7 +3027,7 @@ _0801E54C: .4byte gBattleMons\n\ _0801E550: .4byte gHitMarker\n\ _0801E554: .4byte gSideAffecting\n\ _0801E558: .4byte gBattleCommunication\n\ -_0801E55C: .4byte gStatusFlagsForMoveEffects\n\ +_0801E55C: .4byte sStatusFlagsForMoveEffects\n\ _0801E560:\n\ cmp r0, 0x40\n\ bne _0801E566\n\ @@ -3552,7 +3657,7 @@ _0801EA1C:\n\ ldr r0, [r0]\n\ adds r0, 0x1\n\ bl BattleScriptPush\n\ - ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects\n\ + ldr r1, _0801EA60 @ =sStatusFlagsForMoveEffects\n\ ldr r0, _0801EA64 @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ lsls r0, 2\n\ @@ -3578,7 +3683,7 @@ _0801EA1C:\n\ .align 2, 0\n\ _0801EA58: .4byte gBattleMoveFlags\n\ _0801EA5C: .4byte gBattlescriptCurrInstr\n\ -_0801EA60: .4byte gStatusFlagsForMoveEffects\n\ +_0801EA60: .4byte sStatusFlagsForMoveEffects\n\ _0801EA64: .4byte gBattleCommunication\n\ _0801EA68: .4byte gBattleMons\n\ _0801EA6C: .4byte gEffectBank\n\ @@ -3688,7 +3793,7 @@ _0801EB4A:\n\ mov r0, r9\n\ adds r0, 0x50\n\ adds r1, r0\n\ - ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects\n\ + ldr r2, _0801EB84 @ =sStatusFlagsForMoveEffects\n\ ldrb r3, [r7, 0x3]\n\ lsls r0, r3, 2\n\ adds r0, r2\n\ @@ -3710,7 +3815,7 @@ _0801EB78:\n\ ldr r0, [r0]\n\ mov pc, r0\n\ .align 2, 0\n\ -_0801EB84: .4byte gStatusFlagsForMoveEffects\n\ +_0801EB84: .4byte sStatusFlagsForMoveEffects\n\ _0801EB88: .4byte _0801EB8C\n\ .align 2, 0\n\ _0801EB8C:\n\ @@ -3870,7 +3975,7 @@ _0801ED2E:\n\ mov r0, r9\n\ adds r0, 0x50\n\ adds r2, r0\n\ - ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects\n\ + ldr r1, _0801ED58 @ =sStatusFlagsForMoveEffects\n\ ldr r0, _0801ED5C @ =gBattleCommunication\n\ ldrb r0, [r0, 0x3]\n\ lsls r0, 2\n\ @@ -3882,7 +3987,7 @@ _0801ED2E:\n\ bl _0801F5DC\n\ .align 2, 0\n\ _0801ED54: .4byte gCurrentTurnActionNumber\n\ -_0801ED58: .4byte gStatusFlagsForMoveEffects\n\ +_0801ED58: .4byte sStatusFlagsForMoveEffects\n\ _0801ED5C: .4byte gBattleCommunication\n\ _0801ED60:\n\ mov r3, r8\n\ @@ -4156,7 +4261,7 @@ _0801EFA0: .4byte gBattleCommunication\n\ _0801EFA4: .4byte gTrappingMoves\n\ _0801EFA8:\n\ ldr r1, _0801EFD8 @ =gBattleMoveDamage\n\ - ldr r0, _0801EFDC @ =gHP_dealt\n\ + ldr r0, _0801EFDC @ =gHpDealt\n\ ldr r0, [r0]\n\ cmp r0, 0\n\ bge _0801EFB4\n\ @@ -4182,7 +4287,7 @@ _0801EFC0:\n\ b _0801F5F8\n\ .align 2, 0\n\ _0801EFD8: .4byte gBattleMoveDamage\n\ -_0801EFDC: .4byte gHP_dealt\n\ +_0801EFDC: .4byte gHpDealt\n\ _0801EFE0: .4byte gBattlescriptCurrInstr\n\ _0801EFE4: .4byte gMoveEffectBS_Ptrs\n\ _0801EFE8: .4byte gBattleCommunication\n\ @@ -4711,7 +4816,7 @@ _0801F45C: .4byte gBattlescriptCurrInstr\n\ _0801F460: .4byte BattleScript_AtkDefDown\n\ _0801F464:\n\ ldr r4, _0801F494 @ =gBattleMoveDamage\n\ - ldr r0, _0801F498 @ =gHP_dealt\n\ + ldr r0, _0801F498 @ =gHpDealt\n\ ldr r0, [r0]\n\ movs r1, 0x3\n\ bl __divsi3\n\ @@ -4734,7 +4839,7 @@ _0801F47A:\n\ b _0801F5F8\n\ .align 2, 0\n\ _0801F494: .4byte gBattleMoveDamage\n\ -_0801F498: .4byte gHP_dealt\n\ +_0801F498: .4byte gHpDealt\n\ _0801F49C: .4byte gBattlescriptCurrInstr\n\ _0801F4A0: .4byte gMoveEffectBS_Ptrs\n\ _0801F4A4: .4byte gBattleCommunication\n\ @@ -4935,7 +5040,7 @@ static void atk15_seteffectwithchance(void) else gBattlescriptCurrInstr++; gBattleCommunication[MOVE_EFFECT_BYTE] = 0; - BATTLE_STRUCT->unk16112 = 0; + gBattleStruct->unk16112 = 0; } static void atk16_seteffectprimary(void) @@ -4952,13 +5057,13 @@ static void atk18_clearstatusfromeffect(void) { gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) - gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + gBattleMons[gActiveBank].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); else - gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); + gBattleMons[gActiveBank].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]); gBattleCommunication[MOVE_EFFECT_BYTE] = 0; gBattlescriptCurrInstr += 2; - BATTLE_STRUCT->unk16112 = 0; + gBattleStruct->unk16112 = 0; } static void atk19_tryfaintmon(void) @@ -5250,282 +5355,262 @@ static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr gBattlescriptCurrInstr += 7; } -//here we go again... -#ifdef NONMATCHING -static void atk23_getexp(void) -{ - u8 hold_effect; - int via_expshare = 0, sent_in; - u16* exp = &BATTLE_STRUCT->exp; - gBank1 = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - sent_in = gSentPokesToOpponent[(gBank1 & 2) >> 1]; - switch (BATTLE_STRUCT->getexpStateTracker) - { - case 0: //check if should receive exp at all - if (GetBankSide(gBank1) != 1 || (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER))) - BATTLE_STRUCT->getexpStateTracker = 6; //goto last case +void atk23_getexp(void) +{ + u16 item; + s32 i; // also used as stringId + u8 holdEffect; + s32 sentIn; + + s32 viaExpShare = 0; + u16* exp = &gBattleStruct->exp; + + gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]); + sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1]; + + switch (gBattleStruct->getexpStateTracker) + { + case 0: // check if should receive exp at all + if (GetBankSide(gBank1) != SIDE_OPPONENT || (gBattleTypeFlags & + (BATTLE_TYPE_LINK + | BATTLE_TYPE_SAFARI + | BATTLE_TYPE_BATTLE_TOWER + | BATTLE_TYPE_EREADER_TRAINER))) + { + gBattleStruct->getexpStateTracker = 6; // goto last case + } else { - BATTLE_STRUCT->getexpStateTracker++; - ((u8*)ewram)[0x16113] |= gBitTable[gBattlePartyID[gBank1]]; + gBattleStruct->getexpStateTracker++; + gBattleStruct->unk16113 |= gBitTable[gBattlePartyID[gBank1]]; } break; - case 1: //calculate experience points to redistribute + case 1: // calculate experience points to redistribute { - int via_sent_in = 0; u16 calculatedExp; - int i; - for (i = 0; i < 6; i++) + s32 viaSentIn; + + for (viaSentIn = 0, i = 0; i < 6; i++) { - u16 item; - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == 0 || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) continue; - if (gBitTable[i] & sent_in) - via_sent_in++; + if (gBitTable[i] & sentIn) + viaSentIn++; item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) - hold_effect = gSaveBlock1.enigmaBerry.holdEffect; + holdEffect = gSaveBlock1.enigmaBerry.holdEffect; else - hold_effect = ItemId_GetHoldEffect(item); + holdEffect = ItemId_GetHoldEffect(item); - if (hold_effect == HOLD_EFFECT_EXP_SHARE) - via_expshare++; + if (holdEffect == HOLD_EFFECT_EXP_SHARE) + viaExpShare++; } + calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7; - if (via_expshare) //at least one poke is getting exp via exp share + + if (viaExpShare) // at least one mon is getting exp via exp share { - calculatedExp /= 2; - *exp = calculatedExp / via_sent_in; + *exp = calculatedExp / 2 / viaSentIn; if (*exp == 0) *exp = 1; - gExpShareExp = calculatedExp / via_expshare; + gExpShareExp = calculatedExp / 2 / viaExpShare; if (gExpShareExp == 0) gExpShareExp = 1; } else { - *exp = calculatedExp / via_sent_in; + *exp = calculatedExp / viaSentIn; if (*exp == 0) *exp = 1; gExpShareExp = 0; } - BATTLE_STRUCT->getexpStateTracker++; - BATTLE_STRUCT->expGetterID = 0; - BATTLE_STRUCT->sentInPokes = sent_in; - } //no break statement - case 2: //loop; set exp value to the poke in expgetter_id and print message + + gBattleStruct->getexpStateTracker++; + gBattleStruct->expGetterID = 0; + gBattleStruct->sentInPokes = sentIn; + } + // fall through + case 2: // set exp value to the poke in expgetter_id and print message if (gBattleExecBuffer == 0) { - u16 item = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HELD_ITEM); - u8* tracker; u32 zero; + item = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HELD_ITEM); + if (item == ITEM_ENIGMA_BERRY) - hold_effect = gSaveBlock1.enigmaBerry.holdEffect; + holdEffect = gSaveBlock1.enigmaBerry.holdEffect; else - hold_effect = ItemId_GetHoldEffect(item); + holdEffect = ItemId_GetHoldEffect(item); - if ((hold_effect != HOLD_EFFECT_EXP_SHARE && !(BATTLE_STRUCT->sentInPokes & 1))) + if (holdEffect != HOLD_EFFECT_EXP_SHARE && !(gBattleStruct->sentInPokes & 1)) { - BATTLE_STRUCT->sentInPokes >>= 1; - tracker = &BATTLE_STRUCT->getexpStateTracker; - zero = 0; - *tracker = 5; //increment looper - gBattleMoveDamage = zero; //used for exp + gBattleStruct->sentInPokes >>= 1; + gBattleStruct->getexpStateTracker = 5; + gBattleMoveDamage = 0; // used for exp } - else if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) == 100) + else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) == 100) { - BATTLE_STRUCT->sentInPokes >>= 1; - tracker = &BATTLE_STRUCT->getexpStateTracker; - zero = 0; - *tracker = 5; //increment looper - gBattleMoveDamage = zero; //used for exp + gBattleStruct->sentInPokes >>= 1; + gBattleStruct->getexpStateTracker = 5; + gBattleMoveDamage = 0; // used for exp } else { - //music change in wild battle after fainting a poke - if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !BATTLE_STRUCT->wildVictorySong) + // music change in wild battle after fainting a poke + if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong) { - BattleMusicStop(); + BattleStopLowHpSound(); PlayBGM(0x161); - BATTLE_STRUCT->wildVictorySong++; + gBattleStruct->wildVictorySong++; } - if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP)) + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP)) { - s16 stringID; - if (BATTLE_STRUCT->sentInPokes & 1) + if (gBattleStruct->sentInPokes & 1) gBattleMoveDamage = *exp; else gBattleMoveDamage = 0; - if (hold_effect == HOLD_EFFECT_EXP_SHARE) + if (holdEffect == HOLD_EFFECT_EXP_SHARE) gBattleMoveDamage += gExpShareExp; - if (hold_effect == HOLD_EFFECT_LUCKY_EGG) + if (holdEffect == HOLD_EFFECT_LUCKY_EGG) gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; - if (IsTradedMon(&gPlayerParty[BATTLE_STRUCT->expGetterID])) + if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterID])) { gBattleMoveDamage = (gBattleMoveDamage * 150) / 100; - stringID = 0x14A; + i = 0x14A; } else { - stringID = 0x149; - } + i = 0x149; + } - //get exp getter bank + // get exp getter bank if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - if (!(gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) && !(gAbsentBankFlags & gBitTable[2])) - BATTLE_STRUCT->expGetterBank = 2; + if (!(gBattlePartyID[2] != gBattleStruct->expGetterID) && !(gAbsentBankFlags & gBitTable[2])) + gBattleStruct->expGetterBank = 2; else { if (!(gAbsentBankFlags & gBitTable[0])) - BATTLE_STRUCT->expGetterBank = 0; + gBattleStruct->expGetterBank = 0; else - BATTLE_STRUCT->expGetterBank = 2; + gBattleStruct->expGetterBank = 2; } } else - BATTLE_STRUCT->expGetterBank = 0; + gBattleStruct->expGetterBank = 0; - //buffer poke name - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = BATTLE_STRUCT->expGetterBank; - gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; - gBattleTextBuff1[4] = 0xFF; - - //buffer 'gained' or 'gained a boosted' - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = stringID; - stringID = (stringID >> 8) & (0xFF); //this does not want to cooperate - gBattleTextBuff2[3] = stringID; - gBattleTextBuff2[4] = 0xFF; - - //buffer exp number - gBattleTextBuff3[0] = 0xFD; - gBattleTextBuff3[1] = 1; - gBattleTextBuff3[2] = 4; //word - gBattleTextBuff3[3] = 5; //max digits - gBattleTextBuff3[4] = gBattleMoveDamage; - gBattleTextBuff3[5] = sBYTE1_32(gBattleMoveDamage); - gBattleTextBuff3[6] = sBYTE2_32(gBattleMoveDamage); - gBattleTextBuff3[7] = sBYTE3_32(gBattleMoveDamage); - gBattleTextBuff3[8] = 0xFF; - - PrepareStringBattle(0xD, BATTLE_STRUCT->expGetterBank); - MonGainEVs(&gPlayerParty[BATTLE_STRUCT->expGetterID], gBattleMons[gBank1].species); + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterID) + + // buffer 'gained' or 'gained a boosted' + PREPARE_STRING_BUFFER(gBattleTextBuff2, i) + + PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage) + + PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank); + MonGainEVs(&gPlayerParty[gBattleStruct->expGetterID], gBattleMons[gBank1].species); } - BATTLE_STRUCT->sentInPokes >>= 1; - BATTLE_STRUCT->getexpStateTracker++; + gBattleStruct->sentInPokes >>= 1; + gBattleStruct->getexpStateTracker++; } } break; - case 3: //Set Stats and give exp + case 3: // Set stats and give exp if (gBattleExecBuffer == 0) { - gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0; - if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100) + gBattleBufferB[gBattleStruct->expGetterBank][0] = 0; + if (GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL) != 100) { - // Doesn't match. - BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); - BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); - BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED); - BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); - BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); - - gActiveBank = BATTLE_STRUCT->expGetterBank; - EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage); + gBattleResources_statsBeforeLvlUp->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); + gBattleResources_statsBeforeLvlUp->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); + gBattleResources_statsBeforeLvlUp->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + gBattleResources_statsBeforeLvlUp->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); + gBattleResources_statsBeforeLvlUp->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); + gBattleResources_statsBeforeLvlUp->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); + + gActiveBank = gBattleStruct->expGetterBank; + EmitExpBarUpdate(0, gBattleStruct->expGetterID, gBattleMoveDamage); MarkBufferBankForExecution(gActiveBank); } - BATTLE_STRUCT->getexpStateTracker++; + gBattleStruct->getexpStateTracker++; } break; - case 4: //lvl up if necessary + case 4: // lvl up if necessary if (gBattleExecBuffer == 0) { - gActiveBank = BATTLE_STRUCT->expGetterBank; - if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB) + gActiveBank = gBattleStruct->expGetterBank; + if (gBattleBufferB[gActiveBank][0] == CONTROLLER_TWORETURNVALUES + && gBattleBufferB[gActiveBank][1] == RET_VALUE_LEVELLED_UP) { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID) - sub_80324F8(&gPlayerParty[gActiveBank], gActiveBank); + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterID) + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); - //buff poke name - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = gActiveBank; - gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID; - gBattleTextBuff1[4] = 0xFF; - - //buff level - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 1; - gBattleTextBuff2[2] = 1; - gBattleTextBuff2[3] = 3; - gBattleTextBuff2[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); - gBattleTextBuff2[5] = 0xFF; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattleStruct->expGetterID) + + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL)) BattleScriptPushCursor(); - gLeveledUpInBattle |= gBitTable[BATTLE_STRUCT->expGetterID]; + gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterID]; gBattlescriptCurrInstr = BattleScript_LevelUp; gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)); - AdjustFriendship(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0); + AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterID], 0); - //update battle mon structure after level up - if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && gBattleMons[0].hp) + // update battle mon structure after level up + if (gBattlePartyID[0] == gBattleStruct->expGetterID && gBattleMons[0].hp) { - gBattleMons[0].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); - gBattleMons[0].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP); - gBattleMons[0].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); - gBattleMons[0].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); - gBattleMons[0].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED); - gBattleMons[0].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); - gBattleMons[0].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF); + gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL); + gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP); + gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); + gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); + gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + // Why is this duplicated? + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); + gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); + gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); + gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPDEF); } - //What is else if? Guess it's too advanced for GameFreak - if (gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) + // What is else if? + if (gBattlePartyID[2] == gBattleStruct->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) { - gBattleMons[2].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL); - gBattleMons[2].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP); - gBattleMons[2].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); - gBattleMons[2].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK); - gBattleMons[2].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF); - //There are no words...GF can't even copy&paste code properly - gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED); - gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPEED /*RIP*/); - gBattleMons[2].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK); + gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_LEVEL); + gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_HP); + gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MAX_HP); + gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_ATK); + gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_DEF); + // Duplicated again, but this time there's no Sp Defense + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); + gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPEED); + gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_SPATK); } - BATTLE_STRUCT->getexpStateTracker = 5; } else { gBattleMoveDamage = 0; - BATTLE_STRUCT->getexpStateTracker = 5; } + gBattleStruct->getexpStateTracker = 5; } break; - case 5: //looper increment - if (gBattleMoveDamage) //there is exp to give, goto case 3 that gives exp - BATTLE_STRUCT->getexpStateTracker = 3; + case 5: // looper increment + if (gBattleMoveDamage) // there is exp to give, goto case 3 that gives exp + gBattleStruct->getexpStateTracker = 3; else { - if (++BATTLE_STRUCT->expGetterID <= 5) - BATTLE_STRUCT->getexpStateTracker = 2; //loop again + gBattleStruct->expGetterID++; + if (gBattleStruct->expGetterID <= 5) + gBattleStruct->getexpStateTracker = 2; // loop again else - BATTLE_STRUCT->getexpStateTracker = 6; //we're done + gBattleStruct->getexpStateTracker = 6; // we're done } break; - case 6: //increment instruction + case 6: // increment instruction if (gBattleExecBuffer == 0) { - //not even sure why gamefreak clears that data in this place + // not sure why gf clears the item and ability here gBattleMons[gBank1].item = 0; gBattleMons[gBank1].ability = 0; gBattlescriptCurrInstr += 2; @@ -5533,1138 +5618,6 @@ static void atk23_getexp(void) break; } } -#else -__attribute__((naked)) -static void atk23_getexp(void) -{ - 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\ - movs r6, 0\n\ - ldr r0, _0802004C @ =gSharedMem + 0x1605C\n\ - mov r10, r0\n\ - ldr r0, _08020050 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r0]\n\ - ldrb r0, [r0, 0x1]\n\ - bl GetBattleBank\n\ - ldr r1, _08020054 @ =gBank1\n\ - strb r0, [r1]\n\ - ldr r2, _08020058 @ =gSentPokesToOpponent\n\ - movs r1, 0x2\n\ - ands r1, r0\n\ - lsls r1, 24\n\ - lsrs r1, 25\n\ - adds r1, r2\n\ - ldrb r1, [r1]\n\ - mov r8, r1\n\ - mov r0, r10\n\ - subs r0, 0x4D\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x6\n\ - bls _08020040\n\ - bl _08020996\n\ -_08020040:\n\ - lsls r0, 2\n\ - ldr r1, _0802005C @ =_08020060\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_0802004C: .4byte gSharedMem + 0x1605C\n\ -_08020050: .4byte gBattlescriptCurrInstr\n\ -_08020054: .4byte gBank1\n\ -_08020058: .4byte gSentPokesToOpponent\n\ -_0802005C: .4byte _08020060\n\ - .align 2, 0\n\ -_08020060:\n\ - .4byte _0802007C\n\ - .4byte _080200FC\n\ - .4byte _08020216\n\ - .4byte _0802055C\n\ - .4byte _08020648\n\ - .4byte _08020910\n\ - .4byte _0802096C\n\ -_0802007C:\n\ - ldr r4, _080200A8 @ =gBank1\n\ - ldrb r0, [r4]\n\ - bl GetBankSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _08020098\n\ - ldr r0, _080200AC @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - ldr r0, _080200B0 @ =0x00000982\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080200BC\n\ -_08020098:\n\ - ldr r0, _080200B4 @ =gSharedMem\n\ - ldr r1, _080200B8 @ =0x0001600f\n\ - adds r0, r1\n\ - movs r1, 0x6\n\ - strb r1, [r0]\n\ - bl _08020996\n\ - .align 2, 0\n\ -_080200A8: .4byte gBank1\n\ -_080200AC: .4byte gBattleTypeFlags\n\ -_080200B0: .4byte 0x00000982\n\ -_080200B4: .4byte gSharedMem\n\ -_080200B8: .4byte 0x0001600f\n\ -_080200BC:\n\ - ldr r2, _080200E8 @ =gSharedMem\n\ - ldr r3, _080200EC @ =0x0001600f\n\ - adds r1, r2, r3\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - ldr r0, _080200F0 @ =0x00016113\n\ - adds r2, r0\n\ - ldr r3, _080200F4 @ =gBitTable\n\ - ldr r1, _080200F8 @ =gBattlePartyID\n\ - ldrb r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldr r0, [r0]\n\ - ldrb r1, [r2]\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - bl _08020996\n\ - .align 2, 0\n\ -_080200E8: .4byte gSharedMem\n\ -_080200EC: .4byte 0x0001600f\n\ -_080200F0: .4byte 0x00016113\n\ -_080200F4: .4byte gBitTable\n\ -_080200F8: .4byte gBattlePartyID\n\ -_080200FC:\n\ - movs r5, 0\n\ - movs r7, 0\n\ - ldr r1, _08020150 @ =gSaveBlock1 + 0x3688\n\ - mov r9, r1\n\ -_08020104:\n\ - movs r0, 0x64\n\ - adds r1, r7, 0\n\ - muls r1, r0\n\ - ldr r0, _08020154 @ =gPlayerParty\n\ - adds r4, r1, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _0802016A\n\ - adds r0, r4, 0\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _0802016A\n\ - ldr r0, _08020158 @ =gBitTable\n\ - lsls r1, r7, 2\n\ - adds r1, r0\n\ - ldr r0, [r1]\n\ - mov r2, r8\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _08020138\n\ - adds r5, 0x1\n\ -_08020138:\n\ - adds r0, r4, 0\n\ - movs r1, 0xC\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0xAF\n\ - bne _0802015C\n\ - mov r3, r9\n\ - ldrb r4, [r3]\n\ - b _08020164\n\ - .align 2, 0\n\ -_08020150: .4byte gSaveBlock1 + 0x3688\n\ -_08020154: .4byte gPlayerParty\n\ -_08020158: .4byte gBitTable\n\ -_0802015C:\n\ - bl ItemId_GetHoldEffect\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ -_08020164:\n\ - cmp r4, 0x19\n\ - bne _0802016A\n\ - adds r6, 0x1\n\ -_0802016A:\n\ - adds r7, 0x1\n\ - cmp r7, 0x5\n\ - ble _08020104\n\ - ldr r3, _080201D0 @ =gBaseStats\n\ - ldr r2, _080201D4 @ =gBattleMons\n\ - ldr r0, _080201D8 @ =gBank1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r1, r0\n\ - adds r1, r2\n\ - ldrh r2, [r1]\n\ - lsls r0, r2, 3\n\ - subs r0, r2\n\ - lsls r0, 2\n\ - adds r0, r3\n\ - ldrb r2, [r0, 0x9]\n\ - adds r1, 0x2A\n\ - ldrb r0, [r1]\n\ - muls r0, r2\n\ - movs r1, 0x7\n\ - bl __divsi3\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r6, 0\n\ - beq _080201E0\n\ - lsrs r4, r0, 17\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - bl __divsi3\n\ - mov r1, r10\n\ - strh r0, [r1]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _080201B6\n\ - movs r0, 0x1\n\ - strh r0, [r1]\n\ -_080201B6:\n\ - ldr r5, _080201DC @ =gExpShareExp\n\ - adds r0, r4, 0\n\ - adds r1, r6, 0\n\ - bl __divsi3\n\ - strh r0, [r5]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _080201FA\n\ - movs r0, 0x1\n\ - strh r0, [r5]\n\ - b _080201FA\n\ - .align 2, 0\n\ -_080201D0: .4byte gBaseStats\n\ -_080201D4: .4byte gBattleMons\n\ -_080201D8: .4byte gBank1\n\ -_080201DC: .4byte gExpShareExp\n\ -_080201E0:\n\ - adds r0, r1, 0\n\ - adds r1, r5, 0\n\ - bl __divsi3\n\ - mov r2, r10\n\ - strh r0, [r2]\n\ - lsls r0, 16\n\ - cmp r0, 0\n\ - bne _080201F6\n\ - movs r0, 0x1\n\ - strh r0, [r2]\n\ -_080201F6:\n\ - ldr r0, _08020248 @ =gExpShareExp\n\ - strh r6, [r0]\n\ -_080201FA:\n\ - ldr r1, _0802024C @ =gSharedMem\n\ - ldr r3, _08020250 @ =0x0001600f\n\ - adds r2, r1, r3\n\ - ldrb r0, [r2]\n\ - adds r0, 0x1\n\ - movs r3, 0\n\ - strb r0, [r2]\n\ - ldr r2, _08020254 @ =0x00016018\n\ - adds r0, r1, r2\n\ - strb r3, [r0]\n\ - ldr r3, _08020258 @ =0x0001605f\n\ - adds r1, r3\n\ - mov r0, r8\n\ - strb r0, [r1]\n\ -_08020216:\n\ - ldr r0, _0802025C @ =gBattleExecBuffer\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - beq _08020220\n\ - b _08020996\n\ -_08020220:\n\ - ldr r0, _0802024C @ =gSharedMem\n\ - ldr r1, _08020254 @ =0x00016018\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _08020260 @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0xC\n\ - bl GetMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0xAF\n\ - bne _0802026C\n\ - ldr r0, _08020264 @ =gSaveBlock1\n\ - ldr r2, _08020268 @ =0x00003688\n\ - adds r0, r2\n\ - ldrb r4, [r0]\n\ - b _08020274\n\ - .align 2, 0\n\ -_08020248: .4byte gExpShareExp\n\ -_0802024C: .4byte gSharedMem\n\ -_08020250: .4byte 0x0001600f\n\ -_08020254: .4byte 0x00016018\n\ -_08020258: .4byte 0x0001605f\n\ -_0802025C: .4byte gBattleExecBuffer\n\ -_08020260: .4byte gPlayerParty\n\ -_08020264: .4byte gSaveBlock1\n\ -_08020268: .4byte 0x00003688\n\ -_0802026C:\n\ - bl ItemId_GetHoldEffect\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ -_08020274:\n\ - ldr r5, _08020294 @ =gSharedMem\n\ - cmp r4, 0x19\n\ - beq _080202A0\n\ - ldr r3, _08020298 @ =0x0001605f\n\ - adds r1, r5, r3\n\ - ldrb r0, [r1]\n\ - movs r2, 0x1\n\ - ands r2, r0\n\ - cmp r2, 0\n\ - bne _080202A0\n\ - lsrs r0, 1\n\ - strb r0, [r1]\n\ - ldr r0, _0802029C @ =0x0001600f\n\ - adds r1, r5, r0\n\ - b _080202C8\n\ - .align 2, 0\n\ -_08020294: .4byte gSharedMem\n\ -_08020298: .4byte 0x0001605f\n\ -_0802029C: .4byte 0x0001600f\n\ -_080202A0:\n\ - ldr r1, _080202D4 @ =0x00016018\n\ - adds r0, r5, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _080202D8 @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - bne _080202E8\n\ - ldr r2, _080202DC @ =0x0001605f\n\ - adds r1, r5, r2\n\ - ldrb r0, [r1]\n\ - lsrs r0, 1\n\ - movs r2, 0\n\ - strb r0, [r1]\n\ - ldr r3, _080202E0 @ =0x0001600f\n\ - adds r1, r5, r3\n\ -_080202C8:\n\ - movs r0, 0x5\n\ - strb r0, [r1]\n\ - ldr r0, _080202E4 @ =gBattleMoveDamage\n\ - str r2, [r0]\n\ - b _08020996\n\ - .align 2, 0\n\ -_080202D4: .4byte 0x00016018\n\ -_080202D8: .4byte gPlayerParty\n\ -_080202DC: .4byte 0x0001605f\n\ -_080202E0: .4byte 0x0001600f\n\ -_080202E4: .4byte gBattleMoveDamage\n\ -_080202E8:\n\ - ldr r0, _0802034C @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08020316\n\ - ldr r0, _08020350 @ =gBattleMons\n\ - ldrh r0, [r0, 0x28]\n\ - cmp r0, 0\n\ - beq _08020316\n\ - ldr r0, _08020354 @ =0x0001601b\n\ - adds r5, r0\n\ - ldrb r0, [r5]\n\ - cmp r0, 0\n\ - bne _08020316\n\ - bl BattleMusicStop\n\ - ldr r0, _08020358 @ =0x00000161\n\ - bl PlayBGM\n\ - ldrb r0, [r5]\n\ - adds r0, 0x1\n\ - strb r0, [r5]\n\ -_08020316:\n\ - ldr r5, _0802035C @ =gSharedMem\n\ - ldr r1, _08020360 @ =0x00016018\n\ - adds r0, r5, r1\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _08020364 @ =gPlayerParty\n\ - adds r0, r1\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _08020332\n\ - b _0802051E\n\ -_08020332:\n\ - ldr r2, _08020368 @ =0x0001605f\n\ - adds r0, r5, r2\n\ - ldrb r0, [r0]\n\ - movs r3, 0x1\n\ - ands r3, r0\n\ - cmp r3, 0\n\ - beq _08020370\n\ - ldr r1, _0802036C @ =gBattleMoveDamage\n\ - mov r3, r10\n\ - ldrh r0, [r3]\n\ - str r0, [r1]\n\ - mov r8, r1\n\ - b _08020376\n\ - .align 2, 0\n\ -_0802034C: .4byte gBattleTypeFlags\n\ -_08020350: .4byte gBattleMons\n\ -_08020354: .4byte 0x0001601b\n\ -_08020358: .4byte 0x00000161\n\ -_0802035C: .4byte gSharedMem\n\ -_08020360: .4byte 0x00016018\n\ -_08020364: .4byte gPlayerParty\n\ -_08020368: .4byte 0x0001605f\n\ -_0802036C: .4byte gBattleMoveDamage\n\ -_08020370:\n\ - ldr r0, _080203EC @ =gBattleMoveDamage\n\ - str r3, [r0]\n\ - mov r8, r0\n\ -_08020376:\n\ - cmp r4, 0x19\n\ - bne _08020386\n\ - ldr r0, _080203F0 @ =gExpShareExp\n\ - ldrh r1, [r0]\n\ - mov r2, r8\n\ - ldr r0, [r2]\n\ - adds r0, r1\n\ - str r0, [r2]\n\ -_08020386:\n\ - cmp r4, 0x28\n\ - bne _0802039C\n\ - mov r3, r8\n\ - ldr r1, [r3]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - mov r1, r8\n\ - str r0, [r1]\n\ -_0802039C:\n\ - ldr r0, _080203F4 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080203B8\n\ - ldr r4, _080203EC @ =gBattleMoveDamage\n\ - ldr r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - str r0, [r4]\n\ -_080203B8:\n\ - ldr r0, _080203F8 @ =gSharedMem\n\ - ldr r2, _080203FC @ =0x00016018\n\ - adds r0, r2\n\ - ldrb r1, [r0]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _08020400 @ =gPlayerParty\n\ - adds r0, r1\n\ - bl IsTradedMon\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08020404\n\ - ldr r4, _080203EC @ =gBattleMoveDamage\n\ - ldr r1, [r4]\n\ - movs r0, 0x96\n\ - muls r0, r1\n\ - movs r1, 0x64\n\ - bl __divsi3\n\ - str r0, [r4]\n\ - movs r7, 0xA5\n\ - lsls r7, 1\n\ - mov r8, r4\n\ - b _0802040A\n\ - .align 2, 0\n\ -_080203EC: .4byte gBattleMoveDamage\n\ -_080203F0: .4byte gExpShareExp\n\ -_080203F4: .4byte gBattleTypeFlags\n\ -_080203F8: .4byte gSharedMem\n\ -_080203FC: .4byte 0x00016018\n\ -_08020400: .4byte gPlayerParty\n\ -_08020404:\n\ - ldr r7, _0802043C @ =0x00000149\n\ - ldr r3, _08020440 @ =gBattleMoveDamage\n\ - mov r8, r3\n\ -_0802040A:\n\ - ldr r0, _08020444 @ =gBattleTypeFlags\n\ - ldrh r0, [r0]\n\ - movs r1, 0x1\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - beq _08020488\n\ - ldr r1, _08020448 @ =gBattlePartyID\n\ - ldr r0, _0802044C @ =gSharedMem\n\ - ldr r3, _08020450 @ =0x00016018\n\ - adds r2, r0, r3\n\ - ldrh r1, [r1, 0x4]\n\ - adds r5, r0, 0\n\ - ldr r4, _08020454 @ =gBitTable\n\ - ldr r3, _08020458 @ =gAbsentBankFlags\n\ - ldrb r2, [r2]\n\ - cmp r1, r2\n\ - bne _08020460\n\ - ldrb r1, [r3]\n\ - ldr r0, [r4, 0x8]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _08020460\n\ - ldr r0, _0802045C @ =0x000160a2\n\ - adds r1, r5, r0\n\ - b _0802047C\n\ - .align 2, 0\n\ -_0802043C: .4byte 0x00000149\n\ -_08020440: .4byte gBattleMoveDamage\n\ -_08020444: .4byte gBattleTypeFlags\n\ -_08020448: .4byte gBattlePartyID\n\ -_0802044C: .4byte gSharedMem\n\ -_08020450: .4byte 0x00016018\n\ -_08020454: .4byte gBitTable\n\ -_08020458: .4byte gAbsentBankFlags\n\ -_0802045C: .4byte 0x000160a2\n\ -_08020460:\n\ - ldrb r2, [r3]\n\ - ldr r0, [r4]\n\ - ands r2, r0\n\ - cmp r2, 0\n\ - bne _08020478\n\ - ldr r1, _08020474 @ =0x000160a2\n\ - adds r0, r5, r1\n\ - strb r2, [r0]\n\ - b _08020490\n\ - .align 2, 0\n\ -_08020474: .4byte 0x000160a2\n\ -_08020478:\n\ - ldr r2, _08020484 @ =0x000160a2\n\ - adds r1, r5, r2\n\ -_0802047C:\n\ - movs r0, 0x2\n\ - strb r0, [r1]\n\ - b _08020490\n\ - .align 2, 0\n\ -_08020484: .4byte 0x000160a2\n\ -_08020488:\n\ - ldr r0, _08020530 @ =gSharedMem\n\ - ldr r3, _08020534 @ =0x000160a2\n\ - adds r0, r3\n\ - strb r1, [r0]\n\ -_08020490:\n\ - ldr r1, _08020538 @ =gBattleTextBuff1\n\ - movs r3, 0\n\ - movs r2, 0xFD\n\ - strb r2, [r1]\n\ - movs r5, 0x4\n\ - strb r5, [r1, 0x1]\n\ - ldr r4, _08020530 @ =gSharedMem\n\ - ldr r0, _08020534 @ =0x000160a2\n\ - adds r6, r4, r0\n\ - ldrb r0, [r6]\n\ - strb r0, [r1, 0x2]\n\ - ldr r0, _0802053C @ =0x00016018\n\ - adds r4, r0\n\ - ldrb r0, [r4]\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x4]\n\ - ldr r1, _08020540 @ =gBattleTextBuff2\n\ - strb r2, [r1]\n\ - strb r3, [r1, 0x1]\n\ - strb r7, [r1, 0x2]\n\ - movs r3, 0xFF\n\ - lsls r3, 8\n\ - ands r7, r3\n\ - asrs r0, r7, 8\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - strb r0, [r1, 0x4]\n\ - ldr r1, _08020544 @ =gBattleTextBuff3\n\ - strb r2, [r1]\n\ - movs r0, 0x1\n\ - strb r0, [r1, 0x1]\n\ - strb r5, [r1, 0x2]\n\ - movs r0, 0x5\n\ - strb r0, [r1, 0x3]\n\ - mov r0, r8\n\ - ldr r2, [r0]\n\ - strb r2, [r1, 0x4]\n\ - adds r0, r2, 0\n\ - ands r0, r3\n\ - asrs r0, 8\n\ - strb r0, [r1, 0x5]\n\ - movs r0, 0xFF\n\ - lsls r0, 16\n\ - ands r0, r2\n\ - asrs r0, 16\n\ - strb r0, [r1, 0x6]\n\ - lsrs r2, 24\n\ - strb r2, [r1, 0x7]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - strb r0, [r1, 0x8]\n\ - ldrb r1, [r6]\n\ - movs r0, 0xD\n\ - bl PrepareStringBattle\n\ - ldrb r1, [r4]\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _08020548 @ =gPlayerParty\n\ - adds r0, r1\n\ - ldr r3, _0802054C @ =gBattleMons\n\ - ldr r1, _08020550 @ =gBank1\n\ - ldrb r2, [r1]\n\ - movs r1, 0x58\n\ - muls r1, r2\n\ - adds r1, r3\n\ - ldrh r1, [r1]\n\ - bl MonGainEVs\n\ -_0802051E:\n\ - ldr r1, _08020530 @ =gSharedMem\n\ - ldr r3, _08020554 @ =0x0001605f\n\ - adds r2, r1, r3\n\ - ldrb r0, [r2]\n\ - lsrs r0, 1\n\ - strb r0, [r2]\n\ - ldr r0, _08020558 @ =0x0001600f\n\ - adds r1, r0\n\ - b _08020618\n\ - .align 2, 0\n\ -_08020530: .4byte gSharedMem\n\ -_08020534: .4byte 0x000160a2\n\ -_08020538: .4byte gBattleTextBuff1\n\ -_0802053C: .4byte 0x00016018\n\ -_08020540: .4byte gBattleTextBuff2\n\ -_08020544: .4byte gBattleTextBuff3\n\ -_08020548: .4byte gPlayerParty\n\ -_0802054C: .4byte gBattleMons\n\ -_08020550: .4byte gBank1\n\ -_08020554: .4byte 0x0001605f\n\ -_08020558: .4byte 0x0001600f\n\ -_0802055C:\n\ - ldr r0, _08020620 @ =gBattleExecBuffer\n\ - ldr r2, [r0]\n\ - cmp r2, 0\n\ - beq _08020566\n\ - b _08020996\n\ -_08020566:\n\ - ldr r1, _08020624 @ =gBattleBufferB\n\ - ldr r4, _08020628 @ =gSharedMem\n\ - ldr r3, _0802062C @ =0x000160a2\n\ - adds r3, r4\n\ - mov r8, r3\n\ - ldrb r0, [r3]\n\ - lsls r0, 9\n\ - adds r0, r1\n\ - strb r2, [r0]\n\ - ldr r0, _08020630 @ =0x00016018\n\ - adds r7, r4, r0\n\ - ldrb r0, [r7]\n\ - movs r6, 0x64\n\ - muls r0, r6\n\ - ldr r5, _08020634 @ =gPlayerParty\n\ - adds r0, r5\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _08020612\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - beq _08020612\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x3A\n\ - bl GetMonData\n\ - ldr r1, _08020638 @ =0x00017180\n\ - adds r4, r1\n\ - strh r0, [r4]\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x3B\n\ - bl GetMonData\n\ - strh r0, [r4, 0x2]\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x3C\n\ - bl GetMonData\n\ - strh r0, [r4, 0x4]\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x3D\n\ - bl GetMonData\n\ - strh r0, [r4, 0x6]\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x3E\n\ - bl GetMonData\n\ - strh r0, [r4, 0x8]\n\ - ldrb r0, [r7]\n\ - muls r0, r6\n\ - adds r0, r5\n\ - movs r1, 0x3F\n\ - bl GetMonData\n\ - strh r0, [r4, 0xA]\n\ - ldr r4, _0802063C @ =gActiveBank\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - strb r0, [r4]\n\ - ldrb r1, [r7]\n\ - ldr r0, _08020640 @ =gBattleMoveDamage\n\ - ldrh r2, [r0]\n\ - movs r0, 0\n\ - bl EmitExpBarUpdate\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ -_08020612:\n\ - ldr r1, _08020628 @ =gSharedMem\n\ - ldr r3, _08020644 @ =0x0001600f\n\ - adds r1, r3\n\ -_08020618:\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - b _08020996\n\ - .align 2, 0\n\ -_08020620: .4byte gBattleExecBuffer\n\ -_08020624: .4byte gBattleBufferB\n\ -_08020628: .4byte gSharedMem\n\ -_0802062C: .4byte 0x000160a2\n\ -_08020630: .4byte 0x00016018\n\ -_08020634: .4byte gPlayerParty\n\ -_08020638: .4byte 0x00017180\n\ -_0802063C: .4byte gActiveBank\n\ -_08020640: .4byte gBattleMoveDamage\n\ -_08020644: .4byte 0x0001600f\n\ -_08020648:\n\ - ldr r0, _080208AC @ =gBattleExecBuffer\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - beq _08020652\n\ - b _08020996\n\ -_08020652:\n\ - ldr r1, _080208B0 @ =gActiveBank\n\ - ldr r4, _080208B4 @ =gSharedMem\n\ - ldr r2, _080208B8 @ =0x000160a2\n\ - adds r0, r4, r2\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldr r2, _080208BC @ =gBattleBufferB\n\ - ldrb r3, [r1]\n\ - lsls r1, r3, 9\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x21\n\ - beq _0802066E\n\ - b _080208F0\n\ -_0802066E:\n\ - adds r0, r2, 0x1\n\ - adds r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xB\n\ - beq _0802067A\n\ - b _080208F0\n\ -_0802067A:\n\ - ldr r0, _080208C0 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080206A8\n\ - ldr r1, _080208C4 @ =gBattlePartyID\n\ - lsls r0, r3, 1\n\ - adds r2, r0, r1\n\ - ldr r0, _080208C8 @ =0x00016018\n\ - adds r1, r4, r0\n\ - ldrh r0, [r2]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bne _080206A8\n\ - adds r1, r0, 0\n\ - movs r0, 0x64\n\ - muls r0, r1\n\ - ldr r1, _080208CC @ =gPlayerParty\n\ - adds r0, r1\n\ - adds r1, r3, 0\n\ - bl sub_80324F8\n\ -_080206A8:\n\ - ldr r1, _080208D0 @ =gBattleTextBuff1\n\ - movs r2, 0xFD\n\ - strb r2, [r1]\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x1]\n\ - ldr r5, _080208B0 @ =gActiveBank\n\ - ldrb r0, [r5]\n\ - strb r0, [r1, 0x2]\n\ - ldr r0, _080208B4 @ =gSharedMem\n\ - ldr r3, _080208C8 @ =0x00016018\n\ - adds r6, r0, r3\n\ - ldrb r0, [r6]\n\ - strb r0, [r1, 0x3]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x4]\n\ - ldr r4, _080208D4 @ =gBattleTextBuff2\n\ - strb r2, [r4]\n\ - movs r0, 0x1\n\ - strb r0, [r4, 0x1]\n\ - strb r0, [r4, 0x2]\n\ - movs r0, 0x3\n\ - strb r0, [r4, 0x3]\n\ - ldrb r0, [r6]\n\ - movs r1, 0x64\n\ - mov r8, r1\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - ldr r7, _080208CC @ =gPlayerParty\n\ - adds r0, r7\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - strb r0, [r4, 0x4]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - strb r0, [r4, 0x5]\n\ - bl BattleScriptPushCursor\n\ - ldr r2, _080208D8 @ =gLeveledUpInBattle\n\ - ldr r1, _080208DC @ =gBitTable\n\ - ldrb r0, [r6]\n\ - lsls r0, 2\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - ldrb r1, [r2]\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - ldr r1, _080208E0 @ =gBattlescriptCurrInstr\n\ - ldr r0, _080208E4 @ =BattleScript_LevelUp\n\ - str r0, [r1]\n\ - ldr r4, _080208E8 @ =gBattleMoveDamage\n\ - ldr r2, _080208BC @ =gBattleBufferB\n\ - ldrb r1, [r5]\n\ - lsls r1, 9\n\ - adds r0, r2, 0x2\n\ - adds r0, r1, r0\n\ - ldrb r3, [r0]\n\ - adds r2, 0x3\n\ - adds r1, r2\n\ - ldrb r0, [r1]\n\ - lsls r0, 8\n\ - orrs r3, r0\n\ - str r3, [r4]\n\ - ldrb r0, [r6]\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r0, r7\n\ - movs r1, 0\n\ - bl AdjustFriendship\n\ - ldr r0, _080208C4 @ =gBattlePartyID\n\ - ldrb r1, [r6]\n\ - ldrh r0, [r0]\n\ - cmp r0, r1\n\ - bne _080207EC\n\ - ldr r4, _080208EC @ =gBattleMons\n\ - ldrh r0, [r4, 0x28]\n\ - cmp r0, 0\n\ - beq _080207EC\n\ - mov r0, r8\n\ - muls r0, r1\n\ - adds r0, r7\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - adds r1, r4, 0\n\ - adds r1, 0x2A\n\ - strb r0, [r1]\n\ - ldrb r0, [r6]\n\ - mov r1, r8\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r0, r7\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - strh r0, [r4, 0x28]\n\ - ldrb r0, [r6]\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r7\n\ - movs r1, 0x3A\n\ - bl GetMonData\n\ - strh r0, [r4, 0x2C]\n\ - ldrb r0, [r6]\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r0, r7\n\ - movs r1, 0x3B\n\ - bl GetMonData\n\ - strh r0, [r4, 0x2]\n\ - ldrb r0, [r6]\n\ - mov r1, r8\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r0, r7\n\ - movs r1, 0x3C\n\ - bl GetMonData\n\ - strh r0, [r4, 0x4]\n\ - ldrb r0, [r6]\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r7\n\ - movs r1, 0x3D\n\ - bl GetMonData\n\ - strh r0, [r4, 0x6]\n\ - ldrb r0, [r6]\n\ - mov r3, r8\n\ - muls r3, r0\n\ - adds r0, r3, 0\n\ - adds r0, r7\n\ - movs r1, 0x3D\n\ - bl GetMonData\n\ - strh r0, [r4, 0x6]\n\ - ldrb r0, [r6]\n\ - mov r1, r8\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - adds r0, r7\n\ - movs r1, 0x3E\n\ - bl GetMonData\n\ - strh r0, [r4, 0x8]\n\ - ldrb r0, [r6]\n\ - mov r2, r8\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - adds r0, r7\n\ - movs r1, 0x3F\n\ - bl GetMonData\n\ - strh r0, [r4, 0xA]\n\ -_080207EC:\n\ - ldr r0, _080208C4 @ =gBattlePartyID\n\ - ldr r1, _080208B4 @ =gSharedMem\n\ - ldr r3, _080208C8 @ =0x00016018\n\ - adds r7, r1, r3\n\ - ldrb r2, [r7]\n\ - ldrh r0, [r0, 0x4]\n\ - cmp r0, r2\n\ - bne _080208F6\n\ - ldr r6, _080208EC @ =gBattleMons\n\ - movs r0, 0xD8\n\ - adds r0, r6\n\ - mov r8, r0\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _080208F6\n\ - ldr r0, _080208C0 @ =gBattleTypeFlags\n\ - ldrh r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080208F6\n\ - movs r5, 0x64\n\ - adds r0, r2, 0\n\ - muls r0, r5\n\ - ldr r4, _080208CC @ =gPlayerParty\n\ - adds r0, r4\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xDA\n\ - strb r0, [r1]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x3A\n\ - bl GetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xDC\n\ - strh r0, [r1]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x3B\n\ - bl GetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xB2\n\ - strh r0, [r1]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x3C\n\ - bl GetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xB4\n\ - strh r0, [r1]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x3D\n\ - bl GetMonData\n\ - movs r2, 0xB6\n\ - adds r2, r6\n\ - mov r8, r2\n\ - strh r0, [r2]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x3D\n\ - bl GetMonData\n\ - mov r3, r8\n\ - strh r0, [r3]\n\ - ldrb r0, [r7]\n\ - muls r0, r5\n\ - adds r0, r4\n\ - movs r1, 0x3E\n\ - bl GetMonData\n\ - adds r1, r6, 0\n\ - adds r1, 0xB8\n\ - strh r0, [r1]\n\ - b _080208F6\n\ - .align 2, 0\n\ -_080208AC: .4byte gBattleExecBuffer\n\ -_080208B0: .4byte gActiveBank\n\ -_080208B4: .4byte gSharedMem\n\ -_080208B8: .4byte 0x000160a2\n\ -_080208BC: .4byte gBattleBufferB\n\ -_080208C0: .4byte gBattleTypeFlags\n\ -_080208C4: .4byte gBattlePartyID\n\ -_080208C8: .4byte 0x00016018\n\ -_080208CC: .4byte gPlayerParty\n\ -_080208D0: .4byte gBattleTextBuff1\n\ -_080208D4: .4byte gBattleTextBuff2\n\ -_080208D8: .4byte gLeveledUpInBattle\n\ -_080208DC: .4byte gBitTable\n\ -_080208E0: .4byte gBattlescriptCurrInstr\n\ -_080208E4: .4byte BattleScript_LevelUp\n\ -_080208E8: .4byte gBattleMoveDamage\n\ -_080208EC: .4byte gBattleMons\n\ -_080208F0:\n\ - ldr r1, _08020904 @ =gBattleMoveDamage\n\ - movs r0, 0\n\ - str r0, [r1]\n\ -_080208F6:\n\ - ldr r0, _08020908 @ =gSharedMem\n\ - ldr r1, _0802090C @ =0x0001600f\n\ - adds r0, r1\n\ - movs r1, 0x5\n\ - strb r1, [r0]\n\ - b _08020996\n\ - .align 2, 0\n\ -_08020904: .4byte gBattleMoveDamage\n\ -_08020908: .4byte gSharedMem\n\ -_0802090C: .4byte 0x0001600f\n\ -_08020910:\n\ - ldr r0, _08020924 @ =gBattleMoveDamage\n\ - ldr r0, [r0]\n\ - cmp r0, 0\n\ - beq _08020930\n\ - ldr r0, _08020928 @ =gSharedMem\n\ - ldr r2, _0802092C @ =0x0001600f\n\ - adds r0, r2\n\ - movs r1, 0x3\n\ - strb r1, [r0]\n\ - b _08020996\n\ - .align 2, 0\n\ -_08020924: .4byte gBattleMoveDamage\n\ -_08020928: .4byte gSharedMem\n\ -_0802092C: .4byte 0x0001600f\n\ -_08020930:\n\ - ldr r2, _08020950 @ =gSharedMem\n\ - ldr r3, _08020954 @ =0x00016018\n\ - adds r1, r2, r3\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x5\n\ - bhi _0802095C\n\ - ldr r0, _08020958 @ =0x0001600f\n\ - adds r1, r2, r0\n\ - movs r0, 0x2\n\ - strb r0, [r1]\n\ - b _08020996\n\ - .align 2, 0\n\ -_08020950: .4byte gSharedMem\n\ -_08020954: .4byte 0x00016018\n\ -_08020958: .4byte 0x0001600f\n\ -_0802095C:\n\ - ldr r3, _08020968 @ =0x0001600f\n\ - adds r1, r2, r3\n\ - movs r0, 0x6\n\ - strb r0, [r1]\n\ - b _08020996\n\ - .align 2, 0\n\ -_08020968: .4byte 0x0001600f\n\ -_0802096C:\n\ - ldr r0, _080209A4 @ =gBattleExecBuffer\n\ - ldr r5, [r0]\n\ - cmp r5, 0\n\ - bne _08020996\n\ - ldr r4, _080209A8 @ =gBattleMons\n\ - ldr r2, _080209AC @ =gBank1\n\ - ldrb r0, [r2]\n\ - movs r1, 0x58\n\ - muls r0, r1\n\ - adds r0, r4\n\ - movs r3, 0\n\ - strh r5, [r0, 0x2E]\n\ - ldrb r0, [r2]\n\ - muls r0, r1\n\ - adds r0, r4\n\ - adds r0, 0x20\n\ - strb r3, [r0]\n\ - ldr r1, _080209B0 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r1]\n\ - adds r0, 0x2\n\ - str r0, [r1]\n\ -_08020996:\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\ - .align 2, 0\n\ -_080209A4: .4byte gBattleExecBuffer\n\ -_080209A8: .4byte gBattleMons\n\ -_080209AC: .4byte gBank1\n\ -_080209B0: .4byte gBattlescriptCurrInstr\n\ - .syntax divided\n"); -} - -#endif // NONMATCHING #ifdef NONMATCHING static void atk24(void) @@ -6952,7 +5905,7 @@ _08020B50: .4byte gBattlescriptCurrInstr\n\ static void MoveValuesCleanUp(void) { gBattleMoveFlags = 0; - BATTLE_STRUCT->dmgMultiplier = 1; + gBattleStruct->dmgMultiplier = 1; gCritMultiplier = 1; gBattleCommunication[MOVE_EFFECT_BYTE] = 0; gBattleCommunication[6] = 0; @@ -7417,7 +6370,7 @@ static void atk46_playanimation2(void) // animation Id is stored in the first po static void atk47_setgraphicalstatchangevalues(void) { u8 to_add = 0; - switch (BATTLE_STRUCT->statChanger & 0xF0) + switch (gBattleStruct->statChanger & 0xF0) { case 0x10: //+1 to_add = 0xF; @@ -7432,8 +6385,8 @@ static void atk47_setgraphicalstatchangevalues(void) to_add = 0x2E; break; } - BATTLE_STRUCT->animArg1 = (BATTLE_STRUCT->statChanger & 0xF) + to_add - 1; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->animArg1 = (gBattleStruct->statChanger & 0xF) + to_add - 1; + gBattleStruct->animArg2 = 0; gBattlescriptCurrInstr++; } @@ -7507,14 +6460,14 @@ static void atk48_playstatchangeanimation(void) stat_animID = 0x38; } if ((T2_READ_8(gBattlescriptCurrInstr + 3) & 2 && changeable_stats <= 1) - || changeable_stats == 0 || BATTLE_STRUCT->filler2[0] != 0) + || changeable_stats == 0 || gBattleStruct->filler2[0] != 0) gBattlescriptCurrInstr += 4; else { EmitBattleAnimation(0, 1, stat_animID); MarkBufferBankForExecution(gActiveBank); if ((T2_READ_8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1) - BATTLE_STRUCT->filler2[0] = 1; + gBattleStruct->filler2[0] = 1; gBattlescriptCurrInstr += 4; } } @@ -7807,14 +6760,14 @@ static void atk49_moveend(void) hold_effect_atk = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item); choiced_move_atk = (u16*)(gBankAttacker * (ewram_addr + 0x160E8)); - if (BATTLE_STRUCT->dynamicMoveType) - move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F; + if (gBattleStruct->dynamicMoveType) + move_type = gBattleStruct->dynamicMoveType & 0x3F; else move_type = gBattleMoves[gCurrentMove].type; do { - switch (BATTLE_STRUCT->cmd49StateTracker) + switch (gBattleStruct->cmd49StateTracker) { case 0: //rage check if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE @@ -7828,7 +6781,7 @@ static void atk49_moveend(void) gBattlescriptCurrInstr = BattleScript_RageIsBuilding; effect = 1; } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 1: //defrosting check if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE @@ -7844,28 +6797,28 @@ static void atk49_moveend(void) gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove; effect = 1; } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 2: //target synchronize if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0)) effect = 1; - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 3: //contact abilities if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0)) effect = 1; - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 4: //status immunities if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0)) effect = 1; //it loops through 4 banks, so we increment after its done with all banks else - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 5: //attacker synchronize if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0)) effect = 1; - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 6: //update choice band move if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND @@ -7877,7 +6830,7 @@ static void atk49_moveend(void) if (i == 4) *choiced_move_atk = 0; } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 7: //changed held items for (i = 0; i < gNoOfAllBanks; i++) @@ -7886,7 +6839,7 @@ static void atk49_moveend(void) if (CHANGED_ITEM(i)) gBattleMons[i].item = CHANGED_ITEM(i); } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 8: //make sprite invisible if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER) @@ -7896,7 +6849,7 @@ static void atk49_moveend(void) EmitSpriteInvisibility(0, 1); MarkBufferBankForExecution(gActiveBank); } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 9: //semi-invlurneable attacker make visible if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) @@ -7908,7 +6861,7 @@ static void atk49_moveend(void) gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER); gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1; } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 10: //semi-invlurneable target make visible if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)) @@ -7920,7 +6873,7 @@ static void atk49_moveend(void) gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER); gSpecialStatuses[gBankTarget].restored_bank_sprite = 1; } - BATTLE_STRUCT->cmd49StateTracker++; + gBattleStruct->cmd49StateTracker++; break; case 11: // } @@ -8865,7 +7818,7 @@ _08021FA0:\n\ ldr r0, _08021FD4 @ =0x0000ffff\n\ cmp r2, r0\n\ bne _08021FEC\n\ - ldr r1, _08021FE8 @ =gMoveHitWith\n\ + ldr r1, _08021FE8 @ =gLastLandedMoves\n\ ldr r4, _08021FDC @ =gBankTarget\n\ ldrb r0, [r4]\n\ lsls r0, 1\n\ @@ -8879,9 +7832,9 @@ _08021FD8: .4byte gUnknown_02024C4C\n\ _08021FDC: .4byte gBankTarget\n\ _08021FE0: .4byte gUnknown_02024C5C\n\ _08021FE4: .4byte gBattleMoveFlags\n\ -_08021FE8: .4byte gMoveHitWith\n\ +_08021FE8: .4byte gLastLandedMoves\n\ _08021FEC:\n\ - ldr r0, _08022014 @ =gMoveHitWith\n\ + ldr r0, _08022014 @ =gLastLandedMoves\n\ ldr r5, _08022018 @ =gBankTarget\n\ ldrb r1, [r5]\n\ lsls r1, 1\n\ @@ -8894,7 +7847,7 @@ _08021FEC:\n\ ldrb r3, [r0]\n\ cmp r3, 0\n\ beq _08022028\n\ - ldr r0, _08022024 @ =gUnknown_02024C44\n\ + ldr r0, _08022024 @ =gLastHitByType\n\ ldrb r1, [r5]\n\ lsls r1, 1\n\ adds r1, r0\n\ @@ -8902,13 +7855,13 @@ _08021FEC:\n\ ands r0, r3\n\ b _08021C22\n\ .align 2, 0\n\ -_08022014: .4byte gMoveHitWith\n\ +_08022014: .4byte gLastLandedMoves\n\ _08022018: .4byte gBankTarget\n\ _0802201C: .4byte gCurrentMove\n\ _08022020: .4byte 0x0001601c\n\ -_08022024: .4byte gUnknown_02024C44\n\ +_08022024: .4byte gLastHitByType\n\ _08022028:\n\ - ldr r0, _08022044 @ =gUnknown_02024C44\n\ + ldr r0, _08022044 @ =gLastHitByType\n\ ldr r1, _08022048 @ =gBankTarget\n\ ldrb r2, [r1]\n\ lsls r2, 1\n\ @@ -8922,10 +7875,10 @@ _08022028:\n\ strh r0, [r2]\n\ b _08022244\n\ .align 2, 0\n\ -_08022044: .4byte gUnknown_02024C44\n\ +_08022044: .4byte gLastHitByType\n\ _08022048: .4byte gBankTarget\n\ _0802204C:\n\ - ldr r0, _0802205C @ =gMoveHitWith\n\ + ldr r0, _0802205C @ =gLastLandedMoves\n\ ldr r2, _08022060 @ =gBankTarget\n\ ldrb r1, [r2]\n\ lsls r1, 1\n\ @@ -8933,7 +7886,7 @@ _0802204C:\n\ ldr r0, _08022064 @ =0x0000ffff\n\ b _08021C22\n\ .align 2, 0\n\ -_0802205C: .4byte gMoveHitWith\n\ +_0802205C: .4byte gLastLandedMoves\n\ _08022060: .4byte gBankTarget\n\ _08022064: .4byte 0x0000ffff\n\ _08022068:\n\ @@ -9250,7 +8203,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gMoveHitWith[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; gBattleCommunication[6] = move_type; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -9305,7 +8258,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gMoveHitWith[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -9384,7 +8337,7 @@ static void atk4D_switchindataupdate(void) gBattleMons[gActiveBank].status2 = OldData.status2; } SwitchInClearStructs(); - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 7; gBattleTextBuff1[2] = gActiveBank; @@ -9484,7 +8437,7 @@ static void atk4F_jumpifcantswitch(void) void sub_8022A3C(u8 unkown) { BATTLE_PARTY_ID(gActiveBank) = gBattlePartyID[gActiveBank]; - EmitChoosePokemon(0, 1, unkown, 0, BATTLE_STRUCT->unk1606C[gActiveBank]); + EmitChoosePokemon(0, 1, unkown, 0, gBattleStruct->unk1606C[gActiveBank]); MarkBufferBankForExecution(gActiveBank); } @@ -10630,7 +9583,7 @@ static void atk52_switchineffects(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; BattleScriptPushCursor(); if (T2_READ_8(gBattlescriptCurrInstr + 1) == 0) @@ -10737,9 +9690,9 @@ void atk59_handlelearnnewmove(void) u8* loc1 = T1_READ_PTR(gBattlescriptCurrInstr + 1); u8* loc2 = T1_READ_PTR(gBattlescriptCurrInstr + 5); - u16 ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], T2_READ_8(gBattlescriptCurrInstr + 9)); + u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterID], T2_READ_8(gBattlescriptCurrInstr + 9)); while (ret == 0xFFFE) - ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0); + ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterID], 0); if (ret == 0) { @@ -10752,12 +9705,12 @@ void atk59_handlelearnnewmove(void) else { gActiveBank = GetBankByIdentity(0); - if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if { gActiveBank = GetBankByIdentity(2); - if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) + if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret); } gBattlescriptCurrInstr = loc1; @@ -10781,11 +9734,11 @@ void sub_8023AD8(void) static void atk5A_yesnoboxlearnmove(void) { gActiveBank = 0; - switch (BATTLE_STRUCT->atk5A_StateTracker) + switch (gBattleStruct->atk5A_StateTracker) { case 0: sub_8023A80(); - BATTLE_STRUCT->atk5A_StateTracker++; + gBattleStruct->atk5A_StateTracker++; gBattleCommunication[1] = 0; sub_802BC6C(); break; @@ -10811,7 +9764,7 @@ static void atk5A_yesnoboxlearnmove(void) { sub_8023AD8(); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - BATTLE_STRUCT->atk5A_StateTracker++; + gBattleStruct->atk5A_StateTracker++; return; } goto state_tracker_4; @@ -10820,14 +9773,14 @@ static void atk5A_yesnoboxlearnmove(void) { PlaySE(SE_SELECT); state_tracker_4: - BATTLE_STRUCT->atk5A_StateTracker = 4; + gBattleStruct->atk5A_StateTracker = 4; } break; case 2: if (!gPaletteFade.active) { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); - BATTLE_STRUCT->atk5A_StateTracker++; + ShowSelectMovePokemonSummaryScreen(gPlayerParty, gBattleStruct->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn); + gBattleStruct->atk5A_StateTracker++; } break; case 3: @@ -10836,15 +9789,15 @@ static void atk5A_yesnoboxlearnmove(void) u8 move_pos = sub_809FA30(); if (move_pos == 4) { - BATTLE_STRUCT->atk5A_StateTracker = 4; + gBattleStruct->atk5A_StateTracker = 4; } else { - u16 move = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MOVE1 + move_pos); + u16 move = GetMonData(&gPlayerParty[gBattleStruct->expGetterID], MON_DATA_MOVE1 + move_pos); if (IsHMMove2(move)) { PrepareStringBattle(0x13F, gActiveBank); - BATTLE_STRUCT->atk5A_StateTracker = 5; + gBattleStruct->atk5A_StateTracker = 5; } else { @@ -10860,15 +9813,15 @@ static void atk5A_yesnoboxlearnmove(void) ptr += 4; } ptr[0] = 0xFF; - RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos); - SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], gMoveToLearn, move_pos); - if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) + RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterID], move_pos); + SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterID], gMoveToLearn, move_pos); + if (gBattlePartyID[0] == gBattleStruct->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[0].unk18_b & gBitTable[move_pos])) { RemoveBattleMonPPBonus(&gBattleMons[0], move_pos); SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos); } - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == gBattleStruct->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[2].unk18_b & gBitTable[move_pos])) { RemoveBattleMonPPBonus(&gBattleMons[2], move_pos); @@ -10885,7 +9838,7 @@ static void atk5A_yesnoboxlearnmove(void) case 5: if (gBattleExecBuffer == 0) { - BATTLE_STRUCT->atk5A_StateTracker = 2; + gBattleStruct->atk5A_StateTracker = 2; } break; } @@ -10893,11 +9846,11 @@ static void atk5A_yesnoboxlearnmove(void) static void atk5B_yesnoboxstoplearningmove(void) { - switch (BATTLE_STRUCT->atk5A_StateTracker) + switch (gBattleStruct->atk5A_StateTracker) { case 0: sub_8023A80(); - BATTLE_STRUCT->atk5A_StateTracker++; + gBattleStruct->atk5A_StateTracker++; gBattleCommunication[1] = 0; sub_802BC6C(); break; @@ -10959,7 +9912,7 @@ static void atk5D_getmoneyreward(void) u32 money_to_give; if (gTrainerBattleOpponent == 0x400) { - money_to_give = 2 * BATTLE_STRUCT->moneyMultiplier * MONEY_UNKNOWN; + money_to_give = 2 * gBattleStruct->moneyMultiplier * MONEY_UNKNOWN; } else { @@ -10987,7 +9940,7 @@ static void atk5D_getmoneyreward(void) } for (; gTrainerMoney[i * 4] != 0xFF && gTrainerMoney[i * 4 + 1] != gTrainers[gTrainerBattleOpponent].trainerClass ; i++) {} - money_to_give = (r5 << 2) * BATTLE_STRUCT->moneyMultiplier; + money_to_give = (r5 << 2) * gBattleStruct->moneyMultiplier; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) money_to_give = 2 * gTrainerMoney[i * 4 + 1] * money_to_give; else @@ -11471,7 +10424,7 @@ static void atk6C_drawlvlupbox(void) { u8 r1 = 0; u8 r7 = 0; - switch (BATTLE_STRUCT->atk6C_statetracker) + switch (gBattleStruct->atk6C_statetracker) { case 0: sub_802BBD4(0xB, 0, 0x1D, 0x7, r1); @@ -11956,13 +10909,13 @@ static void atk73_hpthresholds(void) result = 1; if (result > 69 || !gBattleMons[opposing_bank].hp) - BATTLE_STRUCT->hpScale = 0; + gBattleStruct->hpScale = 0; else if (result > 39) - BATTLE_STRUCT->hpScale = 1; + gBattleStruct->hpScale = 1; else if (result > 9) - BATTLE_STRUCT->hpScale = 2; + gBattleStruct->hpScale = 2; else - BATTLE_STRUCT->hpScale = 3; + gBattleStruct->hpScale = 3; } gBattlescriptCurrInstr += 2; @@ -11977,17 +10930,17 @@ static void atk74_hpthresholds2(void) { gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); opposing_bank = gActiveBank ^ 1; - hp_switchout = ewram160BCarr(GetBankSide(opposing_bank)); //BATTLE_STRUCT->HP_OnSwitchout[GetBankSide(opposing_bank)]; + hp_switchout = ewram160BCarr(GetBankSide(opposing_bank)); //gBattleStruct->HP_OnSwitchout[GetBankSide(opposing_bank)]; result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout; if (gBattleMons[opposing_bank].hp >= hp_switchout) - BATTLE_STRUCT->hpScale = 0; + gBattleStruct->hpScale = 0; else if (result <= 29) - BATTLE_STRUCT->hpScale = 1; + gBattleStruct->hpScale = 1; else if (result <= 69) - BATTLE_STRUCT->hpScale = 2; + gBattleStruct->hpScale = 2; else - BATTLE_STRUCT->hpScale = 3; + gBattleStruct->hpScale = 3; } gBattlescriptCurrInstr += 2; @@ -12039,9 +10992,9 @@ static void atk76_various(void) { int i; u16* choiced_move; - if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID) + if (gBattlePartyID[0] == gBattleStruct->expGetterID) goto ACTIVE_0; - if (gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) + if (gBattlePartyID[2] != gBattleStruct->expGetterID) break; if (gBattlePartyID[0] == gBattlePartyID[2]) { @@ -12355,7 +11308,7 @@ bool8 UproarWakeUpCheck(u8 bank) { if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) //wtf gamefreak, you should check this only once, not every time in a loop... continue; - BATTLE_STRUCT->scriptingActive = i; + gBattleStruct->scriptingActive = i; if (gBankTarget == 0xFF) gBankTarget = i; else if (gBankTarget == i) @@ -12424,7 +11377,7 @@ static void atk86_stockpiletobasedamage(void) gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0, 0, gBankAttacker, gBankTarget) * gDisableStructs[gBankAttacker].stockpileCounter; - BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + gBattleStruct->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; if (gProtectStructs[gBankAttacker].helpingHand) gBattleMoveDamage = gBattleMoveDamage * 15 / 10; @@ -12455,7 +11408,7 @@ static void atk87_stockpiletohpheal(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; - BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; + gBattleStruct->animTurn = gDisableStructs[gBankAttacker].stockpileCounter; gDisableStructs[gBankAttacker].stockpileCounter = 0; gBattlescriptCurrInstr += 5; gBankTarget = gBankAttacker; @@ -12464,7 +11417,7 @@ static void atk87_stockpiletohpheal(void) static void atk88_negativedamage(void) { - gBattleMoveDamage = -(gHP_dealt / 2); + gBattleMoveDamage = -(gHpDealt / 2); if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; gBattlescriptCurrInstr++; @@ -12504,7 +11457,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) else { BattleScriptPush(bs_ptr); - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_MistProtected; gSpecialStatuses[gActiveBank].statloweringflag = 1; } @@ -12525,7 +11478,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) else { BattleScriptPush(bs_ptr); - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; RecordAbilityBattle(gActiveBank, gLastUsedAbility); @@ -12539,7 +11492,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) if (flags == 1) { BattleScriptPush(bs_ptr); - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; RecordAbilityBattle(gActiveBank, gLastUsedAbility); @@ -12551,7 +11504,7 @@ u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) if (flags == 1) { BattleScriptPush(bs_ptr); - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; RecordAbilityBattle(gActiveBank, gLastUsedAbility); @@ -13224,7 +12177,7 @@ _080262C0: .4byte gBattleMoveFlags\n\ static void atk89_statbuffchange(void) { u8* jump_loc = T1_READ_PTR(gBattlescriptCurrInstr + 2); - if (ChangeStatBuffs(BATTLE_STRUCT->statChanger & 0xF0, BATTLE_STRUCT->statChanger & 0xF, T2_READ_8(gBattlescriptCurrInstr + 1), jump_loc) == 0) + if (ChangeStatBuffs(gBattleStruct->statChanger & 0xF0, gBattleStruct->statChanger & 0xF, T2_READ_8(gBattlescriptCurrInstr + 1), jump_loc) == 0) gBattlescriptCurrInstr += 6; } @@ -13456,7 +12409,7 @@ static void atk91_givepaydaymoney(void) { if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney) { - AddMoney(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier); + AddMoney(&gSaveBlock1.money, gPaydayMoney * gBattleStruct->moneyMultiplier); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 1; gBattleTextBuff1[2] = 2; @@ -14142,8 +13095,8 @@ static void atk9C_setsubstitute(void) static bool8 IsMoveUncopyable(u16 move) { int i; - for (i = 0; sUnknown_081FACFE[i] != 0xFFFE && sUnknown_081FACFE[i] != move; i++) {} - return (sUnknown_081FACFE[i] != 0xFFFE); + for (i = 0; sMovesForbiddenToCopy[i] != 0xFFFE && sMovesForbiddenToCopy[i] != move; i++) {} + return (sMovesForbiddenToCopy[i] != 0xFFFE); } static void atk9D_mimicattackcopy(void) @@ -14187,13 +13140,13 @@ static void atk9D_mimicattackcopy(void) #ifdef NONMATCHING static void atk9E_metronome(void) { - // sUnknown_081FACFE + // sMovesForbiddenToCopy int i; do { while ((gCurrentMove = (Random() & 0x1FF) + 1) > 0x162); - for (i = 0; sUnknown_081FACFE[i] != gCurrentMove && sUnknown_081FACFE[i] != 0xFFFF; i++); - } while (sUnknown_081FACFE[i] != 0xFFFF); + for (i = 0; sMovesForbiddenToCopy[i] != gCurrentMove && sMovesForbiddenToCopy[i] != 0xFFFF; i++); + } while (sMovesForbiddenToCopy[i] != 0xFFFF); gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; @@ -14211,7 +13164,7 @@ static void atk9E_metronome(void) ldr r7, _08027938 @ =gCurrentMove\n\ movs r6, 0xB1\n\ lsls r6, 1\n\ - ldr r5, _0802793C @ =sUnknown_081FACFE\n\ + ldr r5, _0802793C @ =sMovesForbiddenToCopy\n\ ldr r0, _08027940 @ =gBattlescriptCurrInstr\n\ mov r8, r0\n\ _080278CA:\n\ @@ -14273,7 +13226,7 @@ _080278F8:\n\ bx r0\n\ .align 2, 0\n\ _08027938: .4byte gCurrentMove\n\ -_0802793C: .4byte sUnknown_081FACFE\n\ +_0802793C: .4byte sMovesForbiddenToCopy\n\ _08027940: .4byte gBattlescriptCurrInstr\n\ _08027944: .4byte 0x000001ff\n\ _08027948: .4byte 0x0000ffff\n\ @@ -14398,10 +13351,10 @@ static void atkA5_painsplitdmgcalc(void) { s32 hp_diff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2; s32 to_store = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hp_diff; - BATTLE_STRUCT->unk16014 = sBYTE0_32(to_store); - BATTLE_STRUCT->unk16015 = sBYTE1_32(to_store); - BATTLE_STRUCT->unk16016 = sBYTE2_32(to_store); - BATTLE_STRUCT->unk16017 = sBYTE3_32(to_store); + gBattleStruct->unk16014 = sBYTE0_32(to_store); + gBattleStruct->unk16015 = sBYTE1_32(to_store); + gBattleStruct->unk16016 = sBYTE2_32(to_store); + gBattleStruct->unk16017 = sBYTE3_32(to_store); gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hp_diff; gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; @@ -14415,7 +13368,7 @@ static void atkA5_painsplitdmgcalc(void) #ifdef NONMATCHING static void atkA6_settypetorandomresistance(void) { - if (gMoveHitWith[gBankAttacker] == 0 || gMoveHitWith[gBankAttacker] == 0xFFFF || (IsTwoTurnsMove(gMoveHitWith[gBankAttacker]) && !gProtectStructs[gBankAttacker].physicalDmg && !gProtectStructs[gBankAttacker].specialDmg)) + if (gLastLandedMoves[gBankAttacker] == 0 || gLastLandedMoves[gBankAttacker] == 0xFFFF || (IsTwoTurnsMove(gLastLandedMoves[gBankAttacker]) && !gProtectStructs[gBankAttacker].physicalDmg && !gProtectStructs[gBankAttacker].specialDmg)) gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); else { @@ -14424,7 +13377,7 @@ static void atkA6_settypetorandomresistance(void) { while (((type = (Random() & 0x7F)) > 0x70)); type *= 3; - if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + if (gTypeEffectiveness[type] == gLastHitByType[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) { gBattleMons[gBankAttacker].type1 = type; gBattleMons[gBankAttacker].type2 = type; @@ -14443,7 +13396,7 @@ static void atkA6_settypetorandomresistance(void) { if (gTypeEffectiveness[type] == 0xFE || gTypeEffectiveness[type] != 0xFF) { - if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) + if (gTypeEffectiveness[type] == gLastHitByType[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1]) { gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1]; gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1]; @@ -14472,7 +13425,7 @@ static void atkA6_settypetorandomresistance(void) mov r6, r9\n\ mov r5, r8\n\ push {r5-r7}\n\ - ldr r1, _08027FA8 @ =gMoveHitWith\n\ + ldr r1, _08027FA8 @ =gLastLandedMoves\n\ ldr r4, _08027FAC @ =gBankAttacker\n\ ldrb r0, [r4]\n\ lsls r0, 1\n\ @@ -14518,7 +13471,7 @@ _08027F8C:\n\ str r1, [r3]\n\ b _08028110\n\ .align 2, 0\n\ -_08027FA8: .4byte gMoveHitWith\n\ +_08027FA8: .4byte gLastLandedMoves\n\ _08027FAC: .4byte gBankAttacker\n\ _08027FB0: .4byte 0x0000ffff\n\ _08027FB4: .4byte gProtectStructs\n\ @@ -14590,7 +13543,7 @@ _0802802C:\n\ adds r4, r0, r4\n\ ldr r6, _08028120 @ =gTypeEffectiveness\n\ adds r3, r4, r6\n\ - ldr r1, _08028124 @ =gUnknown_02024C44\n\ + ldr r1, _08028124 @ =gLastHitByType\n\ ldr r2, _08028128 @ =gBankAttacker\n\ ldrb r5, [r2]\n\ lsls r0, r5, 1\n\ @@ -14651,7 +13604,7 @@ _080280AE:\n\ mov r4, r10\n\ ldrb r2, [r4]\n\ lsls r0, r2, 1\n\ - ldr r7, _08028124 @ =gUnknown_02024C44\n\ + ldr r7, _08028124 @ =gLastHitByType\n\ adds r0, r7\n\ ldrh r0, [r0]\n\ cmp r1, r0\n\ @@ -14708,7 +13661,7 @@ _08028110:\n\ bx r0\n\ .align 2, 0\n\ _08028120: .4byte gTypeEffectiveness\n\ -_08028124: .4byte gUnknown_02024C44\n\ +_08028124: .4byte gLastHitByType\n\ _08028128: .4byte gBankAttacker\n\ _0802812C: .4byte gBattleMons\n\ _08028130: .4byte 0x000003e7\n\ @@ -14842,7 +13795,7 @@ static void atkAA_setdestinybond(void) gBattlescriptCurrInstr++; } -static void DestinyBondFlagUpdate(void) +static void TrySetDestinyBondToHappen(void) { u8 atk_side = GetBankSide(gBankAttacker); u8 def_side = GetBankSide(gBankTarget); @@ -14852,7 +13805,7 @@ static void DestinyBondFlagUpdate(void) static void atkAB_trysetdestinybondtohappen(void) { - DestinyBondFlagUpdate(); + TrySetDestinyBondToHappen(); gBattlescriptCurrInstr++; } @@ -14862,10 +13815,10 @@ static void atkAC_remaininghptopower(void) int i; for (i = 0; i < 12; i += 2) { - if (hp_fraction <= sUnknown_081FAD26[i]) + if (hp_fraction <= sFlailHpScaleToPowerTable[i]) break; } - gDynamicBasePower = sUnknown_081FAD26[i + 1]; + gDynamicBasePower = sFlailHpScaleToPowerTable[i + 1]; gBattlescriptCurrInstr++; } @@ -14941,7 +13894,7 @@ static void atkAE_healpartystatus(void) gBattleCommunication[MULTISTRING_CHOOSER] |= 1; } - gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = gBattleStruct->scriptingActive = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) { if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF) @@ -15250,7 +14203,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void) } gCurrentMove = MOVE_PURSUIT; gBattlescriptCurrInstr += 5; - BATTLE_STRUCT->animTurn = 1; + gBattleStruct->animTurn = 1; gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); } else @@ -16400,7 +15353,7 @@ static void atkD6_doubledamagedealtifdamaged(void) { if ((gProtectStructs[gBankAttacker].physicalDmg && gProtectStructs[gBankAttacker].physicalBank == gBankTarget) || (gProtectStructs[gBankAttacker].specialDmg && gProtectStructs[gBankAttacker].specialBank == gBankTarget)) - BATTLE_STRUCT->dmgMultiplier = 2; + gBattleStruct->dmgMultiplier = 2; gBattlescriptCurrInstr++; } @@ -16509,13 +15462,13 @@ static void atkDC_trysetgrudge(void) static void atkDD_weightdamagecalculation(void) { int i; - for (i = 0; sWeightDamage[i] != 0xFFFF; i += 2) + for (i = 0; sWeightToDamageTable[i] != 0xFFFF; i += 2) { - if (sWeightDamage[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) + if (sWeightToDamageTable[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1)) break; } - if (sWeightDamage[i] != 0xFFFF) - gDynamicBasePower = sWeightDamage[i + 1]; + if (sWeightToDamageTable[i] != 0xFFFF) + gDynamicBasePower = sWeightToDamageTable[i + 1]; else gDynamicBasePower = 120; gBattlescriptCurrInstr++; @@ -16539,17 +15492,17 @@ static void atkDE_asistattackselect(void) break; if (!GetMonData(&party[i], MON_DATA_SPECIES2) || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG) break; - chooseable_moves = &BATTLE_STRUCT->assistMove[chooseable_moves_no]; + chooseable_moves = &gBattleStruct->assistMove[chooseable_moves_no]; for (j = 0; j < 4; j++) { int k; u16 move = GetMonData(&party[i], MON_DATA_MOVE1 + i); if (IsMoveUnchoosable(move)) break; - //sUnknown_081FACFE[k] + //sMovesForbiddenToCopy[k] for (k = 0; ;k++) { - if (sUnknown_081FACFE[k] == 0xFFFF) + if (sMovesForbiddenToCopy[k] == 0xFFFF) { if (move) { @@ -16559,7 +15512,7 @@ static void atkDE_asistattackselect(void) } break; } - if (sUnknown_081FACFE[k] == move) + if (sMovesForbiddenToCopy[k] == move) break; } } @@ -16567,7 +15520,7 @@ static void atkDE_asistattackselect(void) if (chooseable_moves_no) { gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED); - gRandomMove = BATTLE_STRUCT->assistMove[Random() % chooseable_moves_no]; + gRandomMove = gBattleStruct->assistMove[Random() % chooseable_moves_no]; gBankTarget = GetMoveTarget(gRandomMove, 0); gBattlescriptCurrInstr += 5; } @@ -16652,7 +15605,7 @@ _0802AAF8:\n\ adds r1, r5, 0x1\n\ cmp r0, 0\n\ bne _0802AB4E\n\ - ldr r0, _0802ABB4 @ =sUnknown_081FACFE\n\ + ldr r0, _0802ABB4 @ =sMovesForbiddenToCopy\n\ ldrh r2, [r0]\n\ adds r3, r0, 0\n\ cmp r2, r8\n\ @@ -16727,7 +15680,7 @@ _0802ABA4: .4byte gEnemyParty\n\ _0802ABA8: .4byte gBattlePartyID\n\ _0802ABAC: .4byte 0x0000ffff\n\ _0802ABB0: .4byte gSharedMem + 0x16024\n\ -_0802ABB4: .4byte sUnknown_081FACFE\n\ +_0802ABB4: .4byte sMovesForbiddenToCopy\n\ _0802ABB8: .4byte gHitMarker\n\ _0802ABBC: .4byte 0xfffffbff\n\ _0802ABC0: .4byte gRandomMove\n\ @@ -16792,11 +15745,11 @@ static void atkE1_trygetintimidatetarget(void) { u8 side; - BATTLE_STRUCT->scriptingActive = ewram160DD; - side = GetBankSide(BATTLE_STRUCT->scriptingActive); + gBattleStruct->scriptingActive = ewram160DD; + side = GetBankSide(gBattleStruct->scriptingActive); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 9; - gBattleTextBuff1[2] = gBattleMons[BATTLE_STRUCT->scriptingActive].ability; + gBattleTextBuff1[2] = gBattleMons[gBattleStruct->scriptingActive].ability; gBattleTextBuff1[3] = 0xFF; for (;gBankTarget < gNoOfAllBanks; gBankTarget++) @@ -16901,10 +15854,10 @@ static void atkE5_pickup(void) static void atkE6_docastformchangeanimation(void) { - gActiveBank = BATTLE_STRUCT->scriptingActive; + gActiveBank = gBattleStruct->scriptingActive; if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) - BATTLE_STRUCT->castformToChangeInto |= 0x80; - EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, BATTLE_STRUCT->castformToChangeInto); + gBattleStruct->castformToChangeInto |= 0x80; + EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->castformToChangeInto); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr++; } @@ -16913,11 +15866,11 @@ static void atkE7_trycastformdatachange(void) { u8 form; gBattlescriptCurrInstr++; - form = CastformDataTypeChange(BATTLE_STRUCT->scriptingActive); + form = CastformDataTypeChange(gBattleStruct->scriptingActive); if (form) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); - BATTLE_STRUCT->castformToChangeInto = form - 1; + gBattleStruct->castformToChangeInto = form - 1; } } @@ -16953,17 +15906,17 @@ static void atkE9_setweatherballtype(void) if (WEATHER_HAS_EFFECT) { if ((u8)(gBattleWeather)) - BATTLE_STRUCT->dmgMultiplier = 2; + gBattleStruct->dmgMultiplier = 2; if (gBattleWeather & WEATHER_RAIN_ANY) - BATTLE_STRUCT->dynamicMoveType = TYPE_WATER | 0x80; + gBattleStruct->dynamicMoveType = TYPE_WATER | 0x80; else if (gBattleWeather & WEATHER_SANDSTORM_ANY) - BATTLE_STRUCT->dynamicMoveType = TYPE_ROCK | 0x80; + gBattleStruct->dynamicMoveType = TYPE_ROCK | 0x80; else if (gBattleWeather & WEATHER_SUN_ANY) - BATTLE_STRUCT->dynamicMoveType = TYPE_FIRE | 0x80; + gBattleStruct->dynamicMoveType = TYPE_FIRE | 0x80; else if (gBattleWeather & WEATHER_HAIL) - BATTLE_STRUCT->dynamicMoveType = TYPE_ICE | 0x80; + gBattleStruct->dynamicMoveType = TYPE_ICE | 0x80; else - BATTLE_STRUCT->dynamicMoveType = TYPE_NORMAL | 0x80; + gBattleStruct->dynamicMoveType = TYPE_NORMAL | 0x80; } gBattlescriptCurrInstr++; } @@ -17010,8 +15963,8 @@ static void atkEC_pursuitrelated(void) gActionsByTurnOrder[gActiveBank] = 11; gCurrentMove = MOVE_PURSUIT; gBattlescriptCurrInstr += 5; - BATTLE_STRUCT->animTurn = 1; - BATTLE_STRUCT->unk160A7 = gBankAttacker; + gBattleStruct->animTurn = 1; + gBattleStruct->unk160A7 = gBankAttacker; gBankAttacker = gActiveBank; } else @@ -17022,10 +15975,10 @@ static void atkED_snatchsetbanks(void) { gEffectBank = gBankAttacker; if (gBankAttacker == gBankTarget) - gBankAttacker = gBankTarget = BATTLE_STRUCT->scriptingActive; + gBankAttacker = gBankTarget = gBattleStruct->scriptingActive; else - gBankTarget = BATTLE_STRUCT->scriptingActive; - BATTLE_STRUCT->scriptingActive = gEffectBank; + gBankTarget = gBattleStruct->scriptingActive; + gBattleStruct->scriptingActive = gEffectBank; gBattlescriptCurrInstr++; } @@ -17038,13 +15991,13 @@ static void atkEE_removelightscreenreflect(void) //brick break gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN); gSideTimers[side].reflectTimer = 0; gSideTimers[side].lightscreenTimer = 0; - BATTLE_STRUCT->animTurn = 1; - BATTLE_STRUCT->animTargetsHit = 1; + gBattleStruct->animTurn = 1; + gBattleStruct->animTargetsHit = 1; } else { - BATTLE_STRUCT->animTurn = 0; - BATTLE_STRUCT->animTargetsHit = 0; + gBattleStruct->animTurn = 0; + gBattleStruct->animTargetsHit = 0; } gBattlescriptCurrInstr++; } @@ -17074,7 +16027,7 @@ void atkEF_handleballthrow(void) u32 odds; u8 catch_rate; if (gLastUsedItem == ITEM_SAFARI_BALL) - catch_rate = BATTLE_STRUCT->unk16089 * 1275 / 100; //correct the name to safariFleeRate + catch_rate = gBattleStruct->unk16089 * 1275 / 100; //correct the name to safariFleeRate else catch_rate = gBaseStats[gBattleMons[gBankTarget].species].catchRate; if (gLastUsedItem > 5) @@ -17386,15 +16339,15 @@ static void atkF3_trygivecaughtmonnick(void) case 2: if (!gPaletteFade.active) { - GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); - DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), BattleMainCB2); + GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleStruct->caughtNick); + DoNamingScreen(2, gBattleStruct->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), BattleMainCB2); gBattleCommunication[0]++; } break; case 3: if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active ) { - SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick); + SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleStruct->caughtNick); gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } break; diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index 1c79d7ebf..00216ce05 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -763,7 +763,7 @@ void sub_80324E0(u8 a) ewram17800[a].substituteSprite = 0; } -void sub_80324F8(struct Pokemon *pkmn, u8 b) +void HandleLowHpMusicChange(struct Pokemon *pkmn, u8 b) { u16 hp = GetMonData(pkmn, MON_DATA_HP); u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP); @@ -793,7 +793,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b) } } -void BattleMusicStop(void) +void BattleStopLowHpSound(void) { u8 r4 = GetBankByIdentity(0); @@ -821,11 +821,11 @@ void sub_8032638(void) u8 r5 = pokemon_order_func(gBattlePartyID[r9]); if (GetMonData(&gPlayerParty[r4], MON_DATA_HP) != 0) - sub_80324F8(&gPlayerParty[r4], r8); + HandleLowHpMusicChange(&gPlayerParty[r4], r8); if (IsDoubleBattle()) { if (GetMonData(&gPlayerParty[r5], MON_DATA_HP) != 0) - sub_80324F8(&gPlayerParty[r5], r9); + HandleLowHpMusicChange(&gPlayerParty[r5], r9); } } } diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 80848d2fd..2ac9df2b9 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1422,8 +1422,8 @@ static void BattleAICmd_get_highest_possible_damage(void) s32 i; gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; - BATTLE_STRUCT->dmgMultiplier = 1; + gBattleStruct->dynamicMoveType = 0; + gBattleStruct->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; AI_THINKING_STRUCT->funcResult = 0; @@ -1462,8 +1462,8 @@ static void BattleAICmd_if_damage_bonus(void) u8 damageVar; gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; - BATTLE_STRUCT->dmgMultiplier = 1; + gBattleStruct->dynamicMoveType = 0; + gBattleStruct->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; @@ -1669,8 +1669,8 @@ static void BattleAICmd_if_can_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; - BATTLE_STRUCT->dmgMultiplier = 1; + gBattleStruct->dynamicMoveType = 0; + gBattleStruct->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; @@ -1698,8 +1698,8 @@ static void BattleAICmd_if_cant_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; - BATTLE_STRUCT->dmgMultiplier = 1; + gBattleStruct->dynamicMoveType = 0; + gBattleStruct->dmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; @@ -1907,7 +1907,7 @@ static void BattleAICmd_flee(void) static void BattleAICmd_if_random_100(void) { - u8 safariFleeRate = BATTLE_STRUCT->safariFleeRate * 5; // safari flee rate, from 0-20 + u8 safariFleeRate = gBattleStruct->safariFleeRate * 5; // safari flee rate, from 0-20 if ((u8)(Random() % 100) < safariFleeRate) gAIScriptPtr = T1_READ_PTR(gAIScriptPtr + 1); diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index e39d98997..3a16e12e6 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -94,7 +94,7 @@ extern void sub_804777C(); extern void sub_8043DFC(); //extern s16 sub_8045C78(); extern void sub_80440EC(); -extern void sub_80324F8(); +extern void HandleLowHpMusicChange(); extern void nullsub_9(u16); extern void sub_8043DB0(); extern void move_anim_start_t4(); @@ -355,7 +355,7 @@ void bx_t3_healthbar_update(void) } else { - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); LinkPartnerBufferExecCompleted(); } } @@ -434,7 +434,7 @@ void sub_811E0CC(void) FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0); sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); sub_804777C(gActiveBank); @@ -1084,7 +1084,7 @@ void sub_811EC68(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); break; } - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } void LinkPartnerHandlecmd3(void) @@ -1243,7 +1243,7 @@ void LinkPartnerHandlecmd10(void) else if (!ewram17810[gActiveBank].unk0_6) { ewram17810[gActiveBank].unk4 = 0; - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, -64); gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5; diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 2bdf448db..0d05b7aed 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -87,7 +87,7 @@ extern void sub_802E220(); extern void sub_802E2D4(); extern void sub_802E004(void); extern void sub_802DF30(void); -extern void BattleMusicStop(void); +extern void BattleStopLowHpSound(void); extern void PlayerBufferExecCompleted(void); extern void bx_t1_healthbar_update(void); extern void nullsub_91(void); @@ -1019,9 +1019,9 @@ void sub_802D31C(void) m4aMPlayContinue(&gMPlay_BGM); else m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); if (IsDoubleBattle()) - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2); ewram17810[gActiveBank].unk9 = 3; gBattleBankFunc[gActiveBank] = sub_802D2E0; } @@ -1077,7 +1077,7 @@ void sub_802D730(void) if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs()) { m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100); - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlayerBufferExecCompleted(); } } @@ -1118,7 +1118,7 @@ void bx_t1_healthbar_update(void) } else { - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlayerBufferExecCompleted(); } } @@ -2278,7 +2278,7 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); break; } - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } void PlayerHandlecmd3(void) @@ -2438,7 +2438,7 @@ void PlayerHandlecmd10(void) if (ewram17810[gActiveBank].unk0_6 == 0) { ewram17810[gActiveBank].unk4 = 0; - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); PlaySE12WithPanning(SE_POKE_DEAD, -64); gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0; gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5; @@ -2655,7 +2655,7 @@ void PlayerHandlecmd22(void) void PlayerHandlecmd23(void) { - BattleMusicStop(); + BattleStopLowHpSound(); BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); PlayerBufferExecCompleted(); } diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 4c0adab5e..49f530129 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -412,7 +412,7 @@ void sub_81376B8(void) FreeSpriteTilesByTag(0x27F9); FreeSpritePaletteByTag(0x27F9); CreateTask(c3_0802FDF4, 10); - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); WallyBufferExecCompleted(); } } @@ -429,7 +429,7 @@ void sub_81377B0(void) } else { - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); WallyBufferExecCompleted(); } } @@ -1066,7 +1066,7 @@ void sub_8138294(u8 a) SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); break; } - sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); } void WallyHandlecmd3(void) diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c index d8efc09c5..18e07acf6 100644 --- a/src/battle/battle_message.c +++ b/src/battle/battle_message.c @@ -214,11 +214,11 @@ void BufferStringBattle(u16 stringID) gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]); gLastUsedItem = gStringInfo->lastItem; gLastUsedAbility = gStringInfo->lastAbility; - BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive; - BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E; - BATTLE_STRUCT->hpScale = gStringInfo->hpScale; + gBattleStruct->scriptingActive = gStringInfo->scrActive; + gBattleStruct->unk1605E = gStringInfo->unk1605E; + gBattleStruct->hpScale = gStringInfo->hpScale; gStringBank = gStringInfo->StringBank; - BATTLE_STRUCT->stringMoveType = gStringInfo->moveType; + gBattleStruct->stringMoveType = gStringInfo->moveType; for (i = 0; i < 4; i++) { gAbilitiesPerBank[i] = gStringInfo->abilities[i]; @@ -304,11 +304,11 @@ void BufferStringBattle(u16 stringID) case 2: // sending poke to ball msg if (GetBankSide(gActiveBank) == 0) { - if (BATTLE_STRUCT->hpScale == 0) + if (gBattleStruct->hpScale == 0) stringPtr = BattleText_ComeBackSingle1; - else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + else if (gBattleStruct->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) stringPtr = BattleText_ComeBackSingle2; - else if (BATTLE_STRUCT->hpScale == 2) + else if (gBattleStruct->hpScale == 2) stringPtr = BattleText_ComeBackSingle3; else stringPtr = BattleText_ComeBackSingle4; @@ -332,13 +332,13 @@ void BufferStringBattle(u16 stringID) } break; case 3: // switch-in msg - if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0) + if (GetBankSide(gBattleStruct->scriptingActive) == 0) { - if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + if (gBattleStruct->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE) stringPtr = BattleText_SentOutSingle7; - else if (BATTLE_STRUCT->hpScale == 1) + else if (gBattleStruct->hpScale == 1) stringPtr = BattleText_SentOutSingle8; - else if (BATTLE_STRUCT->hpScale == 2) + else if (gBattleStruct->hpScale == 2) stringPtr = BattleText_SentOutSingle9; else stringPtr = BattleText_SentOutSingle10; @@ -364,7 +364,7 @@ void BufferStringBattle(u16 stringID) case 4: // pokemon used a move msg sub_8121D1C(gBattleTextBuff1); if (gStringInfo->currentMove > 0x162) - StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]); + StringCopy(gBattleTextBuff2, gUnknown_08401674[gBattleStruct->stringMoveType]); else StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]); sub_8121D74(gBattleTextBuff2); @@ -636,17 +636,17 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank]) break; case 16: // scripting active bank name with prefix - HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive]) + HANDLE_NICKNAME_STRING_CASE(gBattleStruct->scriptingActive, gBattlePartyID[gBattleStruct->scriptingActive]) break; case 17: // current move name if (gStringInfo->currentMove > 0x162) - toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + toCpy = (void*) &gUnknown_08401674[gBattleStruct->stringMoveType]; else toCpy = gMoveNames[gStringInfo->currentMove]; break; case 18: // last used move name if (gStringInfo->lastMove > 0x162) - toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType]; + toCpy = (void*) &gUnknown_08401674[gBattleStruct->stringMoveType]; else toCpy = gMoveNames[gStringInfo->lastMove]; break; @@ -655,7 +655,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) { if (gLastUsedItem == ITEM_ENIGMA_BERRY) { - if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 == gStringBank) { StringCopy(text, gEnigmaBerries[gStringBank].name); #ifdef ENGLISH @@ -690,7 +690,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]]; break; case 23: // scripting active ability - toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]]; + toCpy = gAbilityNames[gAbilitiesPerBank[gBattleStruct->scriptingActive]]; break; case 24: // effect bank ability toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]]; @@ -750,7 +750,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name; break; case 31: // link scripting active name - toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name; + toCpy = gLinkPlayers[sub_803FC34(gBattleStruct->scriptingActive)].name; break; case 32: // player name toCpy = gSaveBlock2.playerName; @@ -759,7 +759,7 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst) toCpy = GetTrainerLoseText(); break; case 34: // ? - HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E) + HANDLE_NICKNAME_STRING_CASE(gBattleStruct->scriptingActive, gBattleStruct->unk1605E) break; case 35: // lanette pc if (FlagGet(FLAG_SYS_PC_LANETTE)) @@ -946,7 +946,7 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) { if (hword == ITEM_ENIGMA_BERRY) { - if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank) + if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 == gStringBank) { StringCopy(dst, gEnigmaBerries[gStringBank].name); #ifdef ENGLISH diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index 9dc030a1a..f93664593 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -21,7 +21,7 @@ #include "constants/species.h" #include "constants/weather.h" -extern u8* gBattlescriptCurrInstr; +extern const u8* gBattlescriptCurrInstr; extern u8 gActiveBank; extern u8 gBattleBufferB[4][0x200]; extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to @@ -454,7 +454,7 @@ void sub_80157C4(u8 bank) } } -void BattleScriptPush(u8* BS_ptr) +void BattleScriptPush(const u8* BS_ptr) { B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = BS_ptr; } @@ -477,7 +477,7 @@ u8 TrySetCantSelectMoveBattleScript(void) //msg can't select a move u16* choicedMove = CHOICED_MOVE(gActiveBank); if (gDisableStructs[gActiveBank].disabledMove == move && move) { - BATTLE_STRUCT->scriptingActive = gActiveBank; + gBattleStruct->scriptingActive = gActiveBank; gCurrentMove = move; gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove; limitations++; @@ -615,7 +615,7 @@ u8 UpdateTurnCounters(void) { u8 sideBank; - switch (BATTLE_STRUCT->turncountersTracker) + switch (gBattleStruct->turncountersTracker) { case 0: for (i = 0; i < gNoOfAllBanks; i++) @@ -631,12 +631,12 @@ u8 UpdateTurnCounters(void) SwapTurnOrder(i, j); } } - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; + gBattleStruct->turncountersTracker++; + gBattleStruct->turnSideTracker = 0; case 1: - while (BATTLE_STRUCT->turnSideTracker < 2) + while (gBattleStruct->turnSideTracker < 2) { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker; if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT) { @@ -653,20 +653,20 @@ u8 UpdateTurnCounters(void) effect++; } } - BATTLE_STRUCT->turnSideTracker++; + gBattleStruct->turnSideTracker++; if (effect) break; } if (!effect) { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; + gBattleStruct->turncountersTracker++; + gBattleStruct->turnSideTracker = 0; } break; case 2: - while (BATTLE_STRUCT->turnSideTracker < 2) + while (gBattleStruct->turnSideTracker < 2) { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker; if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN) { if (--gSideTimers[sideBank].lightscreenTimer == 0) @@ -682,20 +682,20 @@ u8 UpdateTurnCounters(void) effect++; } } - BATTLE_STRUCT->turnSideTracker++; + gBattleStruct->turnSideTracker++; if (effect) break; } if (!effect) { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; + gBattleStruct->turncountersTracker++; + gBattleStruct->turnSideTracker = 0; } break; case 3: - while (BATTLE_STRUCT->turnSideTracker < 2) + while (gBattleStruct->turnSideTracker < 2) { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker; if (gSideTimers[sideBank].mistTimer && --gSideTimers[sideBank].mistTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; @@ -708,20 +708,20 @@ u8 UpdateTurnCounters(void) gBattleTextBuff1[4] = EOS; effect++; } - BATTLE_STRUCT->turnSideTracker++; + gBattleStruct->turnSideTracker++; if (effect) break; } if (!effect) { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; + gBattleStruct->turncountersTracker++; + gBattleStruct->turnSideTracker = 0; } break; case 4: - while (BATTLE_STRUCT->turnSideTracker < 2) + while (gBattleStruct->turnSideTracker < 2) { - gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker; + gActiveBank = gBankAttacker = sideBank = gBattleStruct->turnSideTracker; if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD) { if (--gSideTimers[sideBank].safeguardTimer == 0) @@ -731,33 +731,33 @@ u8 UpdateTurnCounters(void) effect++; } } - BATTLE_STRUCT->turnSideTracker++; + gBattleStruct->turnSideTracker++; if (effect) break; } if (!effect) { - BATTLE_STRUCT->turncountersTracker++; - BATTLE_STRUCT->turnSideTracker = 0; + gBattleStruct->turncountersTracker++; + gBattleStruct->turnSideTracker = 0; } break; case 5: - while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks) + while (gBattleStruct->turnSideTracker < gNoOfAllBanks) { - gActiveBank = gBanksByTurnOrder[BATTLE_STRUCT->turnSideTracker]; + gActiveBank = gBanksByTurnOrder[gBattleStruct->turnSideTracker]; if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) { gBankTarget = gActiveBank; BattleScriptExecute(BattleScript_WishComesTrue); effect++; } - BATTLE_STRUCT->turnSideTracker++; + gBattleStruct->turnSideTracker++; if (effect) break; } if (!effect) { - BATTLE_STRUCT->turncountersTracker++; + gBattleStruct->turncountersTracker++; } break; case 6: @@ -783,7 +783,7 @@ u8 UpdateTurnCounters(void) BattleScriptExecute(BattleScript_RainContinuesOrEnds); effect++; } - BATTLE_STRUCT->turncountersTracker++; + gBattleStruct->turncountersTracker++; break; case 7: if (gBattleWeather & WEATHER_SANDSTORM_ANY) @@ -796,12 +796,12 @@ u8 UpdateTurnCounters(void) else gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; - BATTLE_STRUCT->animArg1 = B_ANIM_SANDSTORM_CONTINUES; + gBattleStruct->animArg1 = B_ANIM_SANDSTORM_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 0; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - BATTLE_STRUCT->turncountersTracker++; + gBattleStruct->turncountersTracker++; break; case 8: if (gBattleWeather & WEATHER_SUN_ANY) @@ -817,7 +817,7 @@ u8 UpdateTurnCounters(void) BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - BATTLE_STRUCT->turncountersTracker++; + gBattleStruct->turncountersTracker++; break; case 9: if (gBattleWeather & WEATHER_HAIL) @@ -830,12 +830,12 @@ u8 UpdateTurnCounters(void) else gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; - BATTLE_STRUCT->animArg1 = B_ANIM_HAIL_CONTINUES; + gBattleStruct->animArg1 = B_ANIM_HAIL_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - BATTLE_STRUCT->turncountersTracker++; + gBattleStruct->turncountersTracker++; break; case 10: effect++; @@ -852,16 +852,16 @@ u8 TurnBasedEffects(void) u8 effect = 0; gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE) + while (gBattleStruct->turnEffectsBank < gNoOfAllBanks && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE) { - gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->turnEffectsBank]; + gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank]; if (gAbsentBankFlags & gBitTable[gActiveBank]) { - BATTLE_STRUCT->turnEffectsBank++; + gBattleStruct->turnEffectsBank++; } else { - switch (BATTLE_STRUCT->turnEffectsTracker) + switch (gBattleStruct->turnEffectsTracker) { case 0: // ingrain if ((gStatuses3[gActiveBank] & STATUS3_ROOTED) @@ -875,22 +875,22 @@ u8 TurnBasedEffects(void) BattleScriptExecute(BattleScript_IngrainTurnHeal); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 1: // end turn abilities if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0)) effect++; - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 2: // item effects if (ItemBattleEffects(1, gActiveBank, 0)) effect++; - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 18: // item effects again if (ItemBattleEffects(1, gActiveBank, 1)) effect++; - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 3: // leech seed if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0) @@ -899,12 +899,12 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - BATTLE_STRUCT->animArg1 = gBankTarget; - BATTLE_STRUCT->animArg2 = gBankAttacker; + gBattleStruct->animArg1 = gBankTarget; + gBattleStruct->animArg2 = gBankAttacker; BattleScriptExecute(BattleScript_LeechSeedTurnDrain); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 4: // poison if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0) @@ -915,7 +915,7 @@ u8 TurnBasedEffects(void) BattleScriptExecute(BattleScript_PoisonTurnDmg); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 5: // toxic poison if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0) @@ -929,7 +929,7 @@ u8 TurnBasedEffects(void) BattleScriptExecute(BattleScript_PoisonTurnDmg); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 6: // burn if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0) @@ -940,7 +940,7 @@ u8 TurnBasedEffects(void) BattleScriptExecute(BattleScript_BurnTurnDmg); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 7: // spooky nightmares if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0) @@ -952,7 +952,7 @@ u8 TurnBasedEffects(void) BattleScriptExecute(BattleScript_NightmareTurnDmg); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 8: // curse if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0) @@ -963,7 +963,7 @@ u8 TurnBasedEffects(void) BattleScriptExecute(BattleScript_CurseTurnDmg); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 9: // wrap if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0) @@ -971,8 +971,8 @@ u8 TurnBasedEffects(void) gBattleMons[gActiveBank].status2 -= 0x2000; if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap { - BATTLE_STRUCT->animArg1 = ewram16004arr(0, gActiveBank); - BATTLE_STRUCT->animArg2 = ewram16004arr(1, gActiveBank); + gBattleStruct->animArg1 = ewram16004arr(0, gActiveBank); + gBattleStruct->animArg2 = ewram16004arr(1, gActiveBank); gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 2; gBattleTextBuff1[2] = ewram16004arr(0, gActiveBank); @@ -995,7 +995,7 @@ u8 TurnBasedEffects(void) BattleScriptExecute(gBattlescriptCurrInstr); effect++; } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 10: // uproar if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR) @@ -1044,7 +1044,7 @@ u8 TurnBasedEffects(void) } } if (effect != 2) - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 11: // thrash if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE) @@ -1066,7 +1066,7 @@ u8 TurnBasedEffects(void) } } } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 12: // disable if (gDisableStructs[gActiveBank].disableTimer1 != 0) @@ -1089,7 +1089,7 @@ u8 TurnBasedEffects(void) effect++; } } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 13: // encore if (gDisableStructs[gActiveBank].encoreTimer1 != 0) @@ -1108,22 +1108,22 @@ u8 TurnBasedEffects(void) effect++; } } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 14: // lock-on decrement if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS) gStatuses3[gActiveBank] -= 0x8; - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 15: // charge if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0) gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP; - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 16: // taunt if (gDisableStructs[gActiveBank].tauntTimer1) gDisableStructs[gActiveBank].tauntTimer1--; - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 17: // yawn if (gStatuses3[gActiveBank] & STATUS3_YAWN) @@ -1142,11 +1142,11 @@ u8 TurnBasedEffects(void) effect++; } } - BATTLE_STRUCT->turnEffectsTracker++; + gBattleStruct->turnEffectsTracker++; break; case 19: // done - BATTLE_STRUCT->turnEffectsTracker = 0; - BATTLE_STRUCT->turnEffectsBank++; + gBattleStruct->turnEffectsTracker = 0; + gBattleStruct->turnEffectsBank++; break; } if (effect != 0) @@ -1160,17 +1160,17 @@ u8 TurnBasedEffects(void) bool8 HandleWishPerishSongOnTurnEnd(void) { gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20); - switch (BATTLE_STRUCT->sub80170DC_Tracker) + switch (gBattleStruct->sub80170DC_Tracker) { case 0: // future sight - while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + while (gBattleStruct->sub80170DC_Bank < gNoOfAllBanks) { - gActiveBank = BATTLE_STRUCT->sub80170DC_Bank; + gActiveBank = gBattleStruct->sub80170DC_Bank; if (gAbsentBankFlags & gBitTable[gActiveBank]) - BATTLE_STRUCT->sub80170DC_Bank++; + gBattleStruct->sub80170DC_Bank++; else { - BATTLE_STRUCT->sub80170DC_Bank++; + gBattleStruct->sub80170DC_Bank++; if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp) { if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT) @@ -1191,17 +1191,17 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } } } - BATTLE_STRUCT->sub80170DC_Tracker = 1; - BATTLE_STRUCT->sub80170DC_Bank = 0; + gBattleStruct->sub80170DC_Tracker = 1; + gBattleStruct->sub80170DC_Bank = 0; case 1: // perish song - while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks) + while (gBattleStruct->sub80170DC_Bank < gNoOfAllBanks) { - gActiveBank = gBankAttacker = gBanksByTurnOrder[BATTLE_STRUCT->sub80170DC_Bank]; + gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->sub80170DC_Bank]; if (gAbsentBankFlags & gBitTable[gActiveBank]) - BATTLE_STRUCT->sub80170DC_Bank++; + gBattleStruct->sub80170DC_Bank++; else { - BATTLE_STRUCT->sub80170DC_Bank++; + gBattleStruct->sub80170DC_Bank++; if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) { gBattleTextBuff1[0] = 0xFD; @@ -1241,11 +1241,11 @@ bool8 HandleFaintedMonActions(void) do { int i; - switch (BATTLE_STRUCT->sub80173A4_Tracker) + switch (gBattleStruct->sub80173A4_Tracker) { case 0: - BATTLE_STRUCT->unk1605A = 0; - BATTLE_STRUCT->sub80173A4_Tracker++; + gBattleStruct->unk1605A = 0; + gBattleStruct->sub80173A4_Tracker++; for (i = 0; i < gNoOfAllBanks; i++) { if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6)) @@ -1254,54 +1254,54 @@ bool8 HandleFaintedMonActions(void) case 1: do { - gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; - if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(BATTLE_STRUCT->unk16113 & gBitTable[gBattlePartyID[BATTLE_STRUCT->unk1605A]]) && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + gBank1 = gBankTarget = gBattleStruct->unk1605A; + if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gBattleStruct->unk16113 & gBitTable[gBattlePartyID[gBattleStruct->unk1605A]]) && !(gAbsentBankFlags & gBitTable[gBattleStruct->unk1605A])) { BattleScriptExecute(BattleScript_GiveExp); - BATTLE_STRUCT->sub80173A4_Tracker = 2; + gBattleStruct->sub80173A4_Tracker = 2; return 1; } - } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); - BATTLE_STRUCT->sub80173A4_Tracker = 3; + } while (++gBattleStruct->unk1605A != gNoOfAllBanks); + gBattleStruct->sub80173A4_Tracker = 3; break; case 2: sub_8015740(gBank1); - if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) - BATTLE_STRUCT->sub80173A4_Tracker = 3; + if (++gBattleStruct->unk1605A == gNoOfAllBanks) + gBattleStruct->sub80173A4_Tracker = 3; else - BATTLE_STRUCT->sub80173A4_Tracker = 1; + gBattleStruct->sub80173A4_Tracker = 1; break; case 3: - BATTLE_STRUCT->unk1605A = 0; - BATTLE_STRUCT->sub80173A4_Tracker++; + gBattleStruct->unk1605A = 0; + gBattleStruct->sub80173A4_Tracker++; case 4: do { - gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; //or should banks be switched? - if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A])) + gBank1 = gBankTarget = gBattleStruct->unk1605A; //or should banks be switched? + if (gBattleMons[gBattleStruct->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[gBattleStruct->unk1605A])) { BattleScriptExecute(BattleScript_HandleFaintedMon); - BATTLE_STRUCT->sub80173A4_Tracker = 5; + gBattleStruct->sub80173A4_Tracker = 5; return 1; } - } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks); - BATTLE_STRUCT->sub80173A4_Tracker = 6; + } while (++gBattleStruct->unk1605A != gNoOfAllBanks); + gBattleStruct->sub80173A4_Tracker = 6; break; case 5: - if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks) - BATTLE_STRUCT->sub80173A4_Tracker = 6; + if (++gBattleStruct->unk1605A == gNoOfAllBanks) + gBattleStruct->sub80173A4_Tracker = 6; else - BATTLE_STRUCT->sub80173A4_Tracker = 4; + gBattleStruct->sub80173A4_Tracker = 4; break; case 6: if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0)) return 1; - BATTLE_STRUCT->sub80173A4_Tracker++; + gBattleStruct->sub80173A4_Tracker++; break; case 7: break; } - } while (BATTLE_STRUCT->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE); + } while (gBattleStruct->sub80173A4_Tracker != HandleFaintedMonActions_MAX_CASE); return 0; } @@ -1320,15 +1320,15 @@ void TryClearRageStatuses(void) u8 AtkCanceller_UnableToUseMove(void) { u8 effect = 0; - s32* bideDmg = &BATTLE_STRUCT->bideDmg; + s32* bideDmg = &gBattleStruct->bideDmg; do { - switch (BATTLE_STRUCT->atkCancellerTracker) + switch (gBattleStruct->atkCancellerTracker) { case 0: // flags clear gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND); gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE); - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 1: // check being asleep if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) @@ -1372,7 +1372,7 @@ u8 AtkCanceller_UnableToUseMove(void) } } } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 2: // check being frozen if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) @@ -1386,7 +1386,7 @@ u8 AtkCanceller_UnableToUseMove(void) } else { - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; } } @@ -1399,7 +1399,7 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 2; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 3: // truant if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter) @@ -1411,7 +1411,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleMoveFlags |= MOVESTATUS_MISSED; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 4: // recharge if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) @@ -1423,7 +1423,7 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 5: // flinch if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED) @@ -1435,19 +1435,19 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 6: // disabled move if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0) { gProtectStructs[gBankAttacker].usedDisabledMove = 1; - BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleStruct->scriptingActive = gBankAttacker; CancelMultiTurnMoves(gBankAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 7: // taunt if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0) @@ -1458,7 +1458,7 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 8: // imprisoned if (IsImprisoned(gBankAttacker, gCurrentMove)) @@ -1469,7 +1469,7 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 9: // confusion if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION) @@ -1499,7 +1499,7 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 10: // paralysis if (gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0) @@ -1510,12 +1510,12 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 11: // infatuation if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) { - BATTLE_STRUCT->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); + gBattleStruct->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10); if (Random() & 1) BattleScriptPushCursor(); else @@ -1528,7 +1528,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 12: // bide if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE) @@ -1553,7 +1553,7 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 1; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 13: // move thawing if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE) @@ -1567,13 +1567,13 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 2; } - BATTLE_STRUCT->atkCancellerTracker++; + gBattleStruct->atkCancellerTracker++; break; case 14: // last case break; } - } while (BATTLE_STRUCT->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0); + } while (gBattleStruct->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0); if (effect == 2) { @@ -1731,8 +1731,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) else move = gCurrentMove; - if (BATTLE_STRUCT->dynamicMoveType) - moveType = BATTLE_STRUCT->dynamicMoveType & 0x3F; + if (gBattleStruct->dynamicMoveType) + moveType = gBattleStruct->dynamicMoveType & 0x3F; else moveType = gBattleMoves[move].type; @@ -1755,8 +1755,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_RAIN_ANY)) { gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT); - BATTLE_STRUCT->animArg1 = B_ANIM_RAIN_CONTINUES; - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->animArg1 = B_ANIM_RAIN_CONTINUES; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -1764,8 +1764,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_SANDSTORM_ANY)) { gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); - BATTLE_STRUCT->animArg1 = B_ANIM_SANDSTORM_CONTINUES; - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->animArg1 = B_ANIM_SANDSTORM_CONTINUES; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -1773,8 +1773,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (!(gBattleWeather & WEATHER_SUN_ANY)) { gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); - BATTLE_STRUCT->animArg1 = B_ANIM_SUN_CONTINUES; - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->animArg1 = B_ANIM_SUN_CONTINUES; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -1791,7 +1791,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates); - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -1801,7 +1801,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates); - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -1811,7 +1811,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates); - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -1829,8 +1829,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect != 0) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = bank; - BATTLE_STRUCT->castformToChangeInto = effect - 1; + gBattleStruct->scriptingActive = bank; + gBattleStruct->castformToChangeInto = effect - 1; } break; case ABILITY_TRACE: @@ -1852,8 +1852,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect != 0) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = target1; - BATTLE_STRUCT->castformToChangeInto = effect - 1; + gBattleStruct->scriptingActive = target1; + gBattleStruct->castformToChangeInto = effect - 1; break; } } @@ -1897,7 +1897,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gBattleMons[bank].status1 = 0; // BUG: The nightmare status does not get cleared here. This was fixed in Emerald. //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - BATTLE_STRUCT->scriptingActive = gActiveBank = bank; + gBattleStruct->scriptingActive = gActiveBank = bank; BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates); EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1); MarkBufferBankForExecution(gActiveBank); @@ -1908,10 +1908,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2) { gBattleMons[bank].statStages[STAT_STAGE_SPEED]++; - BATTLE_STRUCT->animArg1 = 0x11; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->animArg1 = 0x11; + gBattleStruct->animArg2 = 0; BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates); - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; effect++; } break; @@ -2218,7 +2218,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; gActiveBank = bank; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); @@ -2238,8 +2238,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); - BATTLE_STRUCT->scriptingActive = bank; - BATTLE_STRUCT->castformToChangeInto = effect - 1; + gBattleStruct->scriptingActive = bank; + gBattleStruct->castformToChangeInto = effect - 1; return effect; } } @@ -2251,11 +2251,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); - BATTLE_STRUCT->synchroniseEffect &= 0x3F; - if (BATTLE_STRUCT->synchroniseEffect == 6) - BATTLE_STRUCT->synchroniseEffect = 2; - gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40; - BATTLE_STRUCT->scriptingActive = gBankTarget; + gBattleStruct->synchroniseEffect &= 0x3F; + if (gBattleStruct->synchroniseEffect == 6) + gBattleStruct->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchroniseEffect + 0x40; + gBattleStruct->scriptingActive = gBankTarget; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; @@ -2267,11 +2267,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); - BATTLE_STRUCT->synchroniseEffect &= 0x3F; - if (BATTLE_STRUCT->synchroniseEffect == 6) - BATTLE_STRUCT->synchroniseEffect = 2; - gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect; - BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleStruct->synchroniseEffect &= 0x3F; + if (gBattleStruct->synchroniseEffect == 6) + gBattleStruct->synchroniseEffect = 2; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchroniseEffect; + gBattleStruct->scriptingActive = gBankAttacker; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; @@ -2287,7 +2287,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); BattleScriptPushCursorAndCallback(gUnknown_081D978C); - BATTLE_STRUCT->intimidateBank = i; + gBattleStruct->intimidateBank = i; effect++; break; } @@ -2346,7 +2346,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { BattleScriptPushCursorAndCallback(BattleScript_TraceActivates); gStatuses3[i] &= ~(STATUS3_TRACE); - BATTLE_STRUCT->scriptingActive = i; + gBattleStruct->scriptingActive = i; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 4; @@ -2373,7 +2373,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); BattleScriptPushCursor(); gBattlescriptCurrInstr = gUnknown_081D9795; - BATTLE_STRUCT->intimidateBank = i; + gBattleStruct->intimidateBank = i; effect++; break; } @@ -2499,7 +2499,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) return effect; } -void BattleScriptExecute(u8* BS_ptr) +void BattleScriptExecute(const u8* BS_ptr) { gBattlescriptCurrInstr = BS_ptr; B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc; @@ -2586,7 +2586,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) switch (bankHoldEffect) { case HOLD_EFFECT_DOUBLE_PRIZE: - BATTLE_STRUCT->moneyMultiplier = 2; + gBattleStruct->moneyMultiplier = 2; break; case HOLD_EFFECT_RESTORE_STATS: for (i = 0; i < 8; i++) @@ -2599,7 +2599,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } if (effect) { - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; BattleScriptExecute(BattleScript_WhiteHerbEnd2); @@ -2672,7 +2672,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } if (effect) { - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; BattleScriptExecute(BattleScript_WhiteHerbEnd2); @@ -2809,9 +2809,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff2[4] = EOS; gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->statChanger = 0x10 + STAT_STAGE_ATK; + gBattleStruct->animArg1 = 0xE + STAT_STAGE_ATK; + gBattleStruct->animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } @@ -2825,9 +2825,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[3] = EOS; gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->statChanger = 0x10 + STAT_STAGE_DEF; + gBattleStruct->animArg1 = 0xE + STAT_STAGE_DEF; + gBattleStruct->animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } @@ -2841,9 +2841,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[3] = EOS; gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->statChanger = 0x10 + STAT_STAGE_SPEED; + gBattleStruct->animArg1 = 0xE + STAT_STAGE_SPEED; + gBattleStruct->animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } @@ -2857,9 +2857,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[3] = EOS; gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->statChanger = 0x10 + STAT_STAGE_SPATK; + gBattleStruct->animArg1 = 0xE + STAT_STAGE_SPATK; + gBattleStruct->animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } @@ -2873,9 +2873,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff1[3] = EOS; gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF; - BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->statChanger = 0x10 + STAT_STAGE_SPDEF; + gBattleStruct->animArg1 = 0xE + STAT_STAGE_SPDEF; + gBattleStruct->animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } @@ -2918,9 +2918,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleTextBuff2[7] = EOS; gEffectBank = bank; - BATTLE_STRUCT->statChanger = 0x21 + i; - BATTLE_STRUCT->animArg1 = 0x21 + i + 6; - BATTLE_STRUCT->animArg2 = 0; + gBattleStruct->statChanger = 0x21 + i; + gBattleStruct->animArg1 = 0x21 + i + 6; + gBattleStruct->animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } @@ -3033,7 +3033,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } if (effect) { - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; gStringBank = bank; gActiveBank = gBankAttacker = bank; switch (effect) @@ -3181,7 +3181,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } if (effect) { - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; gStringBank = bank; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_WhiteHerbRet; @@ -3191,7 +3191,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } if (effect) { - BATTLE_STRUCT->scriptingActive = bank; + gBattleStruct->scriptingActive = bank; gStringBank = bank; gActiveBank = bank; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); @@ -3228,7 +3228,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) { gLastUsedItem = atkItem; gStringBank = gBankAttacker; - BATTLE_STRUCT->scriptingActive = gBankAttacker; + gBattleStruct->scriptingActive = gBankAttacker; gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1; if (gBattleMoveDamage == 0) gBattleMoveDamage = -1; @@ -3433,7 +3433,7 @@ u8 IsMonDisobedient(void) gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; gBattleCommunication[3] = 0; gDynamicBasePower = 0; - BATTLE_STRUCT->dynamicMoveType = 0; + gBattleStruct->dynamicMoveType = 0; gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; gBankTarget = GetMoveTarget(gRandomMove, 0); gHitMarker |= HITMARKER_x200000; diff --git a/src/data/battle_strings_de.h b/src/data/battle_strings_de.h index a3d51f2a5..a19c0fc6c 100644 --- a/src/data/battle_strings_de.h +++ b/src/data/battle_strings_de.h @@ -1218,7 +1218,7 @@ const u8 *const gBattleStringsTable[] = }; // below are lists of battle string enums and NOT pointers to the strings. -const u16 gMissStrings[] = +const u16 gMissStringIds[] = { BATTLE_TEXT_AttackMissed, BATTLE_TEXT_ProtectedItself, diff --git a/src/data/battle_strings_en.h b/src/data/battle_strings_en.h index f29e48410..67eb70ee1 100644 --- a/src/data/battle_strings_en.h +++ b/src/data/battle_strings_en.h @@ -1218,7 +1218,7 @@ const u8 *const gBattleStringsTable[] = }; // below are lists of battle string enums and NOT pointers to the strings. -const u16 gMissStrings[] = +const u16 gMissStringIds[] = { BATTLE_TEXT_AttackMissed, BATTLE_TEXT_ProtectedItself, diff --git a/src/pokemon/pokemon_3.c b/src/pokemon/pokemon_3.c index 221de831a..9346031a6 100644 --- a/src/pokemon/pokemon_3.c +++ b/src/pokemon/pokemon_3.c @@ -1293,15 +1293,15 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon) void sub_8040B8C(void) { - gLastUsedAbility = BATTLE_STRUCT->unk160C0;; + gLastUsedAbility = gBattleStruct->unk160C0;; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = BATTLE_STRUCT->unk16054; + gBattleTextBuff1[2] = gBattleStruct->unk16054; gBattleTextBuff1[4] = EOS; - if (!GetBankSide(BATTLE_STRUCT->unk16054)) - gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[BATTLE_STRUCT->unk16054]); + if (!GetBankSide(gBattleStruct->unk16054)) + gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[gBattleStruct->unk16054]); else - gBattleTextBuff1[3] = gBattlePartyID[BATTLE_STRUCT->unk16054]; + gBattleTextBuff1[3] = gBattlePartyID[gBattleStruct->unk16054]; gBattleTextBuff2[0] = 0xFD; gBattleTextBuff2[1] = 4; gBattleTextBuff2[2] = gBankInMenu; diff --git a/src/rom3.c b/src/rom3.c index 11239a681..713713162 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -749,9 +749,9 @@ void EmitPrintString(u8 a, u16 stringID) stringInfo->lastMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; - stringInfo->scrActive = BATTLE_STRUCT->scriptingActive; - stringInfo->unk1605E = BATTLE_STRUCT->unk1605E; - stringInfo->hpScale = BATTLE_STRUCT->hpScale; + stringInfo->scrActive = gBattleStruct->scriptingActive; + stringInfo->unk1605E = gBattleStruct->unk1605E; + stringInfo->hpScale = gBattleStruct->hpScale; stringInfo->StringBank = gStringBank; stringInfo->moveType = gBattleMoves[gCurrentMove].type; @@ -781,8 +781,8 @@ void EmitPrintStringPlayerOnly(u8 a, u16 stringID) stringInfo->lastMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; - stringInfo->scrActive = BATTLE_STRUCT->scriptingActive; - stringInfo->unk1605E = BATTLE_STRUCT->unk1605E; + stringInfo->scrActive = gBattleStruct->scriptingActive; + stringInfo->unk1605E = gBattleStruct->unk1605E; for (i = 0; i < 4; i++) stringInfo->abilities[i] = gBattleMons[i].ability; diff --git a/src/rom_800D42C.c b/src/rom_800D42C.c index 9449ca0d1..a1b0f5ecb 100644 --- a/src/rom_800D42C.c +++ b/src/rom_800D42C.c @@ -52,7 +52,7 @@ void PrintLinkBattleWinLossTie(void) { // lp_field_18 = player position? - switch (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18) + switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18) { case 0: case 2: @@ -70,7 +70,7 @@ void PrintLinkBattleWinLossTie(void) else { - switch (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18) + switch (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18) { case 1: case 3: @@ -92,7 +92,7 @@ void PrintLinkBattleWinLossTie(void) if (gBattleOutcome == 1) { - if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 != 0) + if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0) { PRINT_MESSAGE_RIGHT(BattleText_Win, TILE_OFFSET_WIN); PRINT_MESSAGE_LEFT(BattleText_Loss, TILE_OFFSET_LOSS); @@ -105,7 +105,7 @@ void PrintLinkBattleWinLossTie(void) } else { - if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 != 0) + if (gLinkPlayers[gBattleStruct->linkPlayerIndex].lp_field_18 != 0) { PRINT_MESSAGE_LEFT(BattleText_Win, TILE_OFFSET_WIN); PRINT_MESSAGE_RIGHT(BattleText_Loss, TILE_OFFSET_LOSS); diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index b13006c13..f991297ab 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -238,8 +238,8 @@ void ShowContestWinner(void) if(gUnknown_0203856C) { sub_80AAF30(); - BATTLE_STRUCT->unk15DDF = 1; - BATTLE_STRUCT->unk15DDE = sub_80B2C4C(254, 0); + gBattleStruct->unk15DDF = 1; + gBattleStruct->unk15DDE = sub_80B2C4C(254, 0); Contest_SaveWinner(3); gUnknown_0203856C = 0; } -- cgit v1.2.3 From 40d8fee1d0badb81120cad7a5aabfd8f5b0031d8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 21:59:56 -0500 Subject: through sub_809BF48 --- src/pokemon/pokemon_storage_system_4.c | 68 +++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 40de7d634..96e237d4f 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -25,7 +25,7 @@ struct WallpaperTable { EWRAM_DATA struct Pokemon gUnknown_02038480 = {}; EWRAM_DATA s8 gUnknown_020384E4 = 0; EWRAM_DATA s8 gUnknown_020384E5 = 0; -EWRAM_DATA u8 gUnknown_020384E6 = 0; +EWRAM_DATA bool8 gUnknown_020384E6 = FALSE; EWRAM_DATA u8 gUnknown_020384E7 = 0; EWRAM_DATA u8 gUnknown_020384E8 = 0; EWRAM_DATA u8 gUnknown_020384E9 = 0; @@ -1141,7 +1141,7 @@ void sub_809AA24(void) else gUnknown_020384E4 = 1; gUnknown_020384E5 = 0; - gUnknown_020384E6 = 0; + gUnknown_020384E6 = FALSE; gUnknown_020384E7 = 0; gUnknown_020384E8 = 0; gUnknown_020384E9 = 0; @@ -1315,7 +1315,7 @@ void sub_809AF18(u8 a0, u8 a1) { sub_809AD3C(a0, a1); sub_809AD94(); - if (gUnknown_020384E6 == 0) + if (!gUnknown_020384E6) StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 1); if (a0 == 1 && gUnknown_020384E4 != 1) { @@ -1337,7 +1337,7 @@ void sub_809AFB8(void) { gUnknown_020384E4 = gPokemonStorageSystemPtr->unk_11e0; gUnknown_020384E5 = gPokemonStorageSystemPtr->unk_11e1; - if (gUnknown_020384E6 == 0) + if (!gUnknown_020384E6) StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0); sub_809BF74(); switch (gUnknown_020384E4) @@ -1359,7 +1359,7 @@ void sub_809AFB8(void) void sub_809B068(void) { u8 partyCount; - if (gUnknown_020384E6 == 0) + if (!gUnknown_020384E6) partyCount = 0; else { @@ -1534,7 +1534,7 @@ void sub_809B384(void) default: return; } - gUnknown_020384E6 = 1; + gUnknown_020384E6 = TRUE; } void sub_809B3E0(void) @@ -1554,7 +1554,7 @@ void sub_809B3E0(void) default: return; } - gUnknown_020384E6 = 0; + gUnknown_020384E6 = FALSE; } void sub_809B440(void) @@ -1616,7 +1616,7 @@ bool8 sub_809B62C(u8 boxId) { diegohint2(boxId, monIdx); sub_8099480(); - gUnknown_020384E6 = 0; + gUnknown_020384E6 = FALSE; } else { @@ -1664,7 +1664,7 @@ void sub_809B760(void) { sub_8099920(); if (gUnknown_020384E6) - gUnknown_020384E6 = 0; + gUnknown_020384E6 = FALSE; else { u8 boxId; @@ -1861,3 +1861,53 @@ s16 party_compaction(void) ZeroMonData(gPlayerParty + last); return retVal; } + +void sub_809BDD8(u8 markings) +{ + gPokemonStorageSystemPtr->unk_11f7 = markings; + if (gUnknown_020384E6) + SetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_MARKINGS, &markings); + else + { + if (gUnknown_020384E4 == 1) + SetMonData(gPlayerParty + gUnknown_020384E5, MON_DATA_MARKINGS, &markings); + if (gUnknown_020384E4 == 0) + SetBoxMonData(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, MON_DATA_MARKINGS, &markings); + } +} + +bool8 sub_809BE80(void) +{ + if (gUnknown_020384E4 == 1 && !gUnknown_020384E6 && CountAlivePartyMonsExceptOne(gUnknown_020384E5) == 0) + return TRUE; + return FALSE; +} + +bool8 sub_809BEBC(void) +{ + if (gUnknown_020384E6) + { + if (gUnknown_020384E4 == 1 && CountAlivePartyMonsExceptOne(gUnknown_020384E5) == 0) + { + if (gPokemonStorageSystemPtr->unk_11f9 || GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_HP) == 0) + return FALSE; + } + return TRUE; + } + return FALSE; +} + +bool8 sub_809BF20(void) +{ + return gUnknown_020384E6; +} + +bool8 sub_809BF2C(void) +{ + return gUnknown_020384E4 == 2 ? TRUE : FALSE; +} + +bool8 sub_809BF48(void) +{ + return (gUnknown_020384E4 == 3 && gUnknown_020384E5 == 1) ? TRUE : FALSE; +} -- cgit v1.2.3 From 470c09225f4c058831c2226195af413204f5f03c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 22:08:46 -0500 Subject: through sub_809C028 --- src/pokemon/pokemon_storage_system_4.c | 37 ++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index 96e237d4f..ada4b43bd 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -64,7 +64,7 @@ void diegohint1(u8 a0, u8 a1); bool8 sub_809BF2C(void); void sub_809BF74(void); void sub_809C028(void); -void sub_809C04C(struct Pokemon *pokemon, u8 a1); +void sub_809C04C(struct BoxPokemon *pokemon, u8 a1); void sub_809CC04(void); // .rodata @@ -1602,7 +1602,7 @@ void diegohint1(u8 a0, u8 a1) ExpandBoxMon(gPokemonStorage.boxes[a0] + a1, &gPokemonStorageSystemPtr->unk_2618); diegohint2(a0, a1); gPokemonStorageSystemPtr->unk_25b4 = gPokemonStorageSystemPtr->unk_2618; - sub_809C04C(&gPokemonStorageSystemPtr->unk_25b4, 0); + sub_809C04C(&gPokemonStorageSystemPtr->unk_25b4.box, 0); gUnknown_020384E7 = a0; gUnknown_020384E8 = a1; } @@ -1911,3 +1911,36 @@ bool8 sub_809BF48(void) { return (gUnknown_020384E4 == 3 && gUnknown_020384E5 == 1) ? TRUE : FALSE; } + +void sub_809BF74(void) +{ + gPokemonStorageSystemPtr->unk_11f6 = gUnknown_020384E6 ? 0 : 1; + if (!gUnknown_020384E6) + { + switch (gUnknown_020384E4) + { + case 1: + if (gUnknown_020384E5 < PARTY_SIZE) + { + sub_809C04C(&gPlayerParty[gUnknown_020384E5].box, 0); + break; + } + // fallthrough + case 2: + case 3: + sub_809C04C(NULL, 2); + break; + case 0: + sub_809C04C(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, 1); + break; + } + } +} + +void sub_809C028(void) +{ + if (gUnknown_020384E6) + sub_809C04C(&gUnknown_02038480.box, 0); + else + sub_809BF74(); +} -- cgit v1.2.3 From 15cffaecf34d93c99aa635586ad24fa9978a70a0 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 15 Jan 2018 21:29:14 -0600 Subject: match ChangeStatBuffs --- src/battle/battle_2.c | 2 +- src/battle/battle_4.c | 893 +++++++++++--------------------------------------- 2 files changed, 189 insertions(+), 706 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 2368f58df..b00c35312 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1664,7 +1664,7 @@ void sub_8010874(void) } } -void SwitchInClearStructs(void) +void SwitchInClearSetData(void) { struct DisableStruct sp0 = gDisableStructs[gActiveBank]; s32 i; diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 0c5f5927e..3763fc309 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -2,6 +2,7 @@ #include "battle.h" #include "battle_message.h" #include "battle_string_ids.h" +#include "battle_script_commands.h" #include "battle_util.h" #include "constants/battle_move_effects.h" #include "constants/moves.h" @@ -204,7 +205,7 @@ void HandleLowHpMusicChange(struct Pokemon*, u8 bank); void AdjustFriendship(struct Pokemon*, u8 value); bool8 IsTradedMon(struct Pokemon*); void BattleScriptPop(void); -void SwitchInClearStructs(void); +void SwitchInClearSetData(void); u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8); u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID); u16 SpeciesToNationalPokedexNum(u16 species); @@ -348,7 +349,7 @@ extern u8 BattleScript_SelectingImprisionedMoveInPalace[]; #define RecordAbilitySetField6(ability, fieldValue) \ (gLastUsedAbility = ability, gBattleCommunication[6] = fieldValue, RecordAbilityBattle(gBankTarget, ability)) -#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special))) +#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))) #define HP_ON_SWITCHOUT (((u16*)(ewram_addr + 0x160BC))) @@ -387,7 +388,7 @@ static void atk1F_jumpifsideaffecting(void); static void atk20_jumpifstat(void); static void atk21_jumpifstatus3condition(void); static void atk22_jumpiftype(void); -void atk23_getexp(void); +static void atk23_getexp(void); static void atk24(void); static void atk25_movevaluescleanup(void); static void atk26_setmultihit(void); @@ -425,7 +426,7 @@ static void atk45_playanimation(void); static void atk46_playanimation2(void); static void atk47_setgraphicalstatchangevalues(void); static void atk48_playstatchangeanimation(void); -static void atk49_moveend(void); +void atk49_moveend(void); static void atk4A_typecalc2(void); static void atk4B_returnatktoball(void); static void atk4C_getswitchedmondata(void); @@ -489,7 +490,7 @@ static void atk85_stockpile(void); static void atk86_stockpiletobasedamage(void); static void atk87_stockpiletohpheal(void); static void atk88_negativedamage(void); -static u8 ChangeStatBuffs(s8, u8, u8, u8*); +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr); static void atk89_statbuffchange(void); static void atk8A_normalisebuffs(void); static void atk8B_setbide(void); @@ -5355,7 +5356,7 @@ static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr gBattlescriptCurrInstr += 7; } -void atk23_getexp(void) +static void atk23_getexp(void) { u16 item; s32 i; // also used as stringId @@ -6882,7 +6883,7 @@ static void atk49_moveend(void) } #else __attribute__((naked)) -static void atk49_moveend(void) +void atk49_moveend(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -8293,27 +8294,19 @@ static void atk4C_getswitchedmondata(void) gBattlescriptCurrInstr += 2; } -static inline u8 get_knocked_off_byte(u8 bank) -{ - register u32 side asm("r2") = GetBankSide(bank); - register struct WishFutureKnock* dummy = &gWishFutureKnock; - register u8* aa = ((u8*)((u8*)(dummy))); - register u8* bb = aa + 0x29; - register u8* cc asm("r0") = side + bb; - return *cc; -} - static void atk4D_switchindataupdate(void) { - struct BattlePokemon OldData; - int i; + struct BattlePokemon oldData; + s32 i; u8 *monData; + if (gBattleExecBuffer) return; - gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); - OldData = gBattleMons[gActiveBank]; + gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); + oldData = gBattleMons[gActiveBank]; monData = (u8*)(&gBattleMons[gActiveBank]); + for (i = 0; i < sizeof(struct BattlePokemon); i++) { monData[i] = gBattleBufferB[gActiveBank][4 + i]; @@ -8322,8 +8315,10 @@ static void atk4D_switchindataupdate(void) gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility); - //check knocked off item - if (get_knocked_off_byte(gActiveBank) & gBitTable[gBattlePartyID[gActiveBank]]) + + // check knocked off item + i = GetBankSide(gActiveBank); + if (gWishFutureKnock.knockedOffPokes[i] & gBitTable[gBattlePartyID[gActiveBank]]) { gBattleMons[gActiveBank].item = 0; } @@ -8332,17 +8327,16 @@ static void atk4D_switchindataupdate(void) { for (i = 0; i < 8; i++) { - gBattleMons[gActiveBank].statStages[i] = OldData.statStages[i]; + gBattleMons[gActiveBank].statStages[i] = oldData.statStages[i]; } - gBattleMons[gActiveBank].status2 = OldData.status2; + gBattleMons[gActiveBank].status2 = oldData.status2; } - SwitchInClearStructs(); + + SwitchInClearSetData(); + gBattleStruct->scriptingActive = gActiveBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 7; - gBattleTextBuff1[2] = gActiveBank; - gBattleTextBuff1[3] = gBattlePartyID[gActiveBank]; - gBattleTextBuff1[4] = EOS; + + PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank]); gBattlescriptCurrInstr += 2; } @@ -10160,6 +10154,76 @@ _08024190: .4byte gBattlescriptCurrInstr\n\ } #endif //NONMATCHING +/* +static u32 GetTrainerMoneyToGive(u16 trainerId) +{ + u32 i = 0; + u32 lastMonLevel = 0; + u32 moneyReward = 0; + + if (trainerId == SECRET_BASE_OPPONENT) + { + moneyReward = 20 * eSecretBaseRecord->partyLevels[0] * gBattleStruct->moneyMultiplier; + } + else + { + switch (gTrainers[trainerId].partyFlags) + { + case 0: + { + const struct TrainerMonNoItemDefaultMoves *party = gTrainers[trainerId].party.NoItemDefaultMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET: + { + const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + case F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + { + const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves; + lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl; + } + break; + } + + for (; gTrainerMoneyTable[i].classId != 0xFF; i++) + { + if (gTrainerMoneyTable[i].classId == gTrainers[trainerId].trainerClass) + break; + } + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * 2 * gTrainerMoneyTable[i].value; + else + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value; + } + + return moneyReward; +} + +static void atk5D_getmoneyreward(void) +{ + u32 moneyReward = GetTrainerMoneyToGive(gTrainerBattleOpponent_A); + if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) + moneyReward += GetTrainerMoneyToGive(gTrainerBattleOpponent_B); + + AddMoney(&gSaveBlock1Ptr->money, moneyReward); + + PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward) + + gBattlescriptCurrInstr++; +} +*/ + static void atk5E_8025A70(void) { gActiveBank = GetBattleBank(T2_READ_8(gBattlescriptCurrInstr + 1)); @@ -11423,756 +11487,175 @@ static void atk88_negativedamage(void) gBattlescriptCurrInstr++; } -#ifdef NONMATCHING -u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) { - u8 r9 = 0; - u8 r10 = 0; - u8 index; - if (flags & 0x40) + bool8 certain = FALSE; + bool8 notProtectAffected = FALSE; + u32 index; + + if (flags & MOVE_EFFECT_AFFECTS_USER) gActiveBank = gBankAttacker; else gActiveBank = gBankTarget; - flags &= ~(0x40); - if (flags & 0x80) - r9++; - flags &= ~(0x80); - if (flags & 0x20) - r10++; - flags &= ~(0x20); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = stat; - gBattleTextBuff1[3] = 0xFF; + flags &= ~(MOVE_EFFECT_AFFECTS_USER); + + if (flags & MOVE_EFFECT_CERTAIN) + certain++; + flags &= ~(MOVE_EFFECT_CERTAIN); - if ((statchanger << 0x18) < 0) //stat decrease + if (flags & STAT_CHANGE_NOT_PROTECT_AFFECTED) + notProtectAffected++; + flags &= ~(STAT_CHANGE_NOT_PROTECT_AFFECTED); + + PREPARE_STAT_BUFFER(gBattleTextBuff1, statId) + + if ((statValue << 0x18) < 0) // stat decrease { - if (gSideTimers[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE) + if (gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer + && !certain && gCurrentMove != MOVE_CURSE) { - if (flags == 1) + if (flags == STAT_CHANGE_BS_PTR) { - if (gSpecialStatuses[gActiveBank].statloweringflag) - gBattlescriptCurrInstr = bs_ptr; + if (gSpecialStatuses[gActiveBank].statLowered) + { + gBattlescriptCurrInstr = BS_ptr; + } else { - BattleScriptPush(bs_ptr); + BattleScriptPush(BS_ptr); gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_MistProtected; - gSpecialStatuses[gActiveBank].statloweringflag = 1; + gSpecialStatuses[gActiveBank].statLowered = 1; } } - return 1; + return STAT_CHANGE_DIDNT_WORK; } - else if (gCurrentMove != MOVE_CURSE && r10 != 1 && JumpIfMoveAffectedByProtect(0)) + else if (gCurrentMove != MOVE_CURSE + && notProtectAffected != TRUE && JumpIfMoveAffectedByProtect(0)) { gBattlescriptCurrInstr = BattleScript_ButItFailed; - return 1; + return STAT_CHANGE_DIDNT_WORK; } - else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) && !r9 && gCurrentMove != MOVE_CURSE) + else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY + || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) + && !certain && gCurrentMove != MOVE_CURSE) { - if (flags == 1) + if (flags == STAT_CHANGE_BS_PTR) { - if (gSpecialStatuses[gActiveBank].statloweringflag) - gBattlescriptCurrInstr = bs_ptr; + if (gSpecialStatuses[gActiveBank].statLowered) + { + gBattlescriptCurrInstr = BS_ptr; + } else { - BattleScriptPush(bs_ptr); + BattleScriptPush(BS_ptr); gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; RecordAbilityBattle(gActiveBank, gLastUsedAbility); - gSpecialStatuses[gActiveBank].statloweringflag = 1; + gSpecialStatuses[gActiveBank].statLowered = 1; } } - return 1; + return STAT_CHANGE_DIDNT_WORK; } - else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && !r9 && stat == STAT_STAGE_ACC) + else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE + && !certain && statId == STAT_STAGE_ACC) { - if (flags == 1) + if (flags == STAT_CHANGE_BS_PTR) { - BattleScriptPush(bs_ptr); + BattleScriptPush(BS_ptr); gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; RecordAbilityBattle(gActiveBank, gLastUsedAbility); } - return 1; + return STAT_CHANGE_DIDNT_WORK; } - else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && !r9 && stat == STAT_STAGE_ATK) + else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER + && !certain && statId == STAT_STAGE_ATK) { - if (flags == 1) + if (flags == STAT_CHANGE_BS_PTR) { - BattleScriptPush(bs_ptr); + BattleScriptPush(BS_ptr); gBattleStruct->scriptingActive = gActiveBank; gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss; gLastUsedAbility = gBattleMons[gActiveBank].ability; RecordAbilityBattle(gActiveBank, gLastUsedAbility); } - return 1; + return STAT_CHANGE_DIDNT_WORK; } else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0) - return 1; - else //decrease { - statchanger = -((statchanger >> 4) & (7)); - gBattleTextBuff2[0] = 0xFD; + return STAT_CHANGE_DIDNT_WORK; + } + else // try to decrease + { + statValue = -GET_STAT_BUFF_VALUE(statValue); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; index = 1; - if (statchanger == -2) + if (statValue == -2) { - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD3; //harshly - gBattleTextBuff2[3] = 0x0; + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATHARSHLY; + gBattleTextBuff2[3] = STRINGID_STATHARSHLY >> 8; index = 4; } - gBattleTextBuff2[index] = 0; + gBattleTextBuff2[index] = B_BUFF_STRING; index++; - gBattleTextBuff2[index] = 0xD4; //fell + gBattleTextBuff2[index] = STRINGID_STATFELL; index++; - gBattleTextBuff2[index] = 0; + gBattleTextBuff2[index] = STRINGID_STATFELL >> 8; index++; - gBattleTextBuff2[index] = 0xFF; + gBattleTextBuff2[index] = B_BUFF_EOS; - if (gBattleMons[gActiveBank].statStages[stat] == 0) - { + if (gBattleMons[gActiveBank].statStages[statId] == 0) gBattleCommunication[MULTISTRING_CHOOSER] = 2; - } else - { - u8 stringID = 0; - if (gBankTarget == gActiveBank) - stringID = 1; - gBattleCommunication[MULTISTRING_CHOOSER] = stringID; - } + gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank); + } } - else //stat increase + else // stat increase { - statchanger = (statchanger >> 4) & (7); - gBattleTextBuff2[0] = 0xFD; + statValue = GET_STAT_BUFF_VALUE(statValue); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; index = 1; - if (statchanger == 2) + if (statValue == 2) { - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD1; //sharply - gBattleTextBuff2[3] = 0x0; + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; index = 4; } - gBattleTextBuff2[index] = 0; + gBattleTextBuff2[index] = B_BUFF_STRING; index++; - gBattleTextBuff2[index] = 0xD2; //rose + gBattleTextBuff2[index] = STRINGID_STATROSE; index++; - gBattleTextBuff2[index] = 0; + gBattleTextBuff2[index] = STRINGID_STATROSE >> 8; index++; - gBattleTextBuff2[index] = 0xFF; + gBattleTextBuff2[index] = B_BUFF_EOS; - if (gBattleMons[gActiveBank].statStages[stat] == 0xC) - { + if (gBattleMons[gActiveBank].statStages[statId] == 0xC) gBattleCommunication[MULTISTRING_CHOOSER] = 2; - } else - { - u8 stringID = 0; - if (gBankTarget == gActiveBank) - stringID = 1; - gBattleCommunication[MULTISTRING_CHOOSER] = stringID; - } + gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank); } - gBattleMons[gActiveBank].statStages[stat] += statchanger; - if (gBattleMons[gActiveBank].statStages[stat] < 0) - gBattleMons[gActiveBank].statStages[stat] = 0; - if (gBattleMons[gActiveBank].statStages[stat] > 0xC) - gBattleMons[gActiveBank].statStages[stat] = 0xC; + gBattleMons[gActiveBank].statStages[statId] += statValue; + if (gBattleMons[gActiveBank].statStages[statId] < 0) + gBattleMons[gActiveBank].statStages[statId] = 0; + if (gBattleMons[gActiveBank].statStages[statId] > 0xC) + gBattleMons[gActiveBank].statStages[statId] = 0xC; - if (gBattleCommunication[MULTISTRING_CHOOSER] == 2) - { - if (flags & 1) - gBattleMoveFlags |= MOVESTATUS_MISSED; - if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & 1)) //what the actual fuck gamefreak... - return 1; - } - return 0; -} + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_CHANGE_BS_PTR) + gBattleMoveFlags |= MOVESTATUS_MISSED; -#else -__attribute__((naked)) -u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr) -{ - 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\ - mov r8, r3\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - lsls r1, 24\n\ - lsrs r7, r1, 24\n\ - lsls r2, 24\n\ - lsrs r5, r2, 24\n\ - movs r0, 0\n\ - mov r9, r0\n\ - mov r10, r0\n\ - movs r0, 0x40\n\ - ands r0, r5\n\ - cmp r0, 0\n\ - beq _08025E54\n\ - ldr r0, _08025E4C @ =gActiveBank\n\ - ldr r1, _08025E50 @ =gBankAttacker\n\ - b _08025E58\n\ - .align 2, 0\n\ -_08025E4C: .4byte gActiveBank\n\ -_08025E50: .4byte gBankAttacker\n\ -_08025E54:\n\ - ldr r0, _08025EF8 @ =gActiveBank\n\ - ldr r1, _08025EFC @ =gBankTarget\n\ -_08025E58:\n\ - ldrb r1, [r1]\n\ - strb r1, [r0]\n\ - movs r0, 0xBF\n\ - ands r5, r0\n\ - movs r0, 0x80\n\ - ands r0, r5\n\ - cmp r0, 0\n\ - beq _08025E72\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r9, r0\n\ -_08025E72:\n\ - movs r0, 0x7F\n\ - ands r5, r0\n\ - movs r0, 0x20\n\ - ands r0, r5\n\ - cmp r0, 0\n\ - beq _08025E88\n\ - mov r0, r10\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ -_08025E88:\n\ - movs r0, 0xDF\n\ - ands r5, r0\n\ - ldr r1, _08025F00 @ =gBattleTextBuff1\n\ - movs r4, 0\n\ - movs r2, 0xFD\n\ - strb r2, [r1]\n\ - movs r0, 0x5\n\ - strb r0, [r1, 0x1]\n\ - strb r7, [r1, 0x2]\n\ - movs r3, 0x1\n\ - negs r3, r3\n\ - mov r12, r3\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x3]\n\ - lsls r0, r6, 24\n\ - cmp r0, 0\n\ - blt _08025EAC\n\ - b _080261B0\n\ -_08025EAC:\n\ - ldr r4, _08025F04 @ =gSideTimers\n\ - ldr r1, _08025EF8 @ =gActiveBank\n\ - ldrb r0, [r1]\n\ - bl GetBankIdentity\n\ - movs r1, 0x1\n\ - ands r1, r0\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - ldrb r0, [r0, 0x2]\n\ - cmp r0, 0\n\ - beq _08025F54\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - bne _08025F54\n\ - ldr r0, _08025F08 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0xAE\n\ - beq _08025F84\n\ - cmp r5, 0x1\n\ - bne _08025F74\n\ - ldr r4, _08025F0C @ =gSpecialStatuses\n\ - ldr r3, _08025EF8 @ =gActiveBank\n\ - ldrb r0, [r3]\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r4\n\ - ldrb r0, [r1]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08025F14\n\ - ldr r0, _08025F10 @ =gBattlescriptCurrInstr\n\ - mov r4, r8\n\ - str r4, [r0]\n\ - b _08025F74\n\ - .align 2, 0\n\ -_08025EF8: .4byte gActiveBank\n\ -_08025EFC: .4byte gBankTarget\n\ -_08025F00: .4byte gBattleTextBuff1\n\ -_08025F04: .4byte gSideTimers\n\ -_08025F08: .4byte gCurrentMove\n\ -_08025F0C: .4byte gSpecialStatuses\n\ -_08025F10: .4byte gBattlescriptCurrInstr\n\ -_08025F14:\n\ - mov r0, r8\n\ - bl BattleScriptPush\n\ - ldr r0, _08025F40 @ =gSharedMem\n\ - ldr r6, _08025F44 @ =gActiveBank\n\ - ldrb r1, [r6]\n\ - ldr r2, _08025F48 @ =0x00016003\n\ - adds r0, r2\n\ - strb r1, [r0]\n\ - ldr r1, _08025F4C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08025F50 @ =BattleScript_MistProtected\n\ - str r0, [r1]\n\ - ldrb r1, [r6]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - ldrb r1, [r0]\n\ - movs r2, 0x1\n\ - orrs r1, r2\n\ - strb r1, [r0]\n\ - b _08025F74\n\ - .align 2, 0\n\ -_08025F40: .4byte gSharedMem\n\ -_08025F44: .4byte gActiveBank\n\ -_08025F48: .4byte 0x00016003\n\ -_08025F4C: .4byte gBattlescriptCurrInstr\n\ -_08025F50: .4byte BattleScript_MistProtected\n\ -_08025F54:\n\ - ldr r0, _08025F78 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0xAE\n\ - beq _08025F84\n\ - mov r3, r10\n\ - cmp r3, 0x1\n\ - beq _08025F84\n\ - movs r0, 0\n\ - bl JumpIfMoveAffectedByProtect\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08025F84\n\ - ldr r1, _08025F7C @ =gBattlescriptCurrInstr\n\ - ldr r0, _08025F80 @ =BattleScript_ButItFailed\n\ - str r0, [r1]\n\ -_08025F74:\n\ - movs r0, 0x1\n\ - b _080262A4\n\ - .align 2, 0\n\ -_08025F78: .4byte gCurrentMove\n\ -_08025F7C: .4byte gBattlescriptCurrInstr\n\ -_08025F80: .4byte BattleScript_ButItFailed\n\ -_08025F84:\n\ - ldr r2, _08025FCC @ =gBattleMons\n\ - ldr r1, _08025FD0 @ =gActiveBank\n\ - ldrb r3, [r1]\n\ - movs r4, 0x58\n\ - adds r0, r3, 0\n\ - muls r0, r4\n\ - adds r0, r2\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - mov r10, r2\n\ - cmp r0, 0x1D\n\ - beq _08025FA0\n\ - cmp r0, 0x49\n\ - bne _08026040\n\ -_08025FA0:\n\ - mov r0, r9\n\ - cmp r0, 0\n\ - bne _08026040\n\ - ldr r0, _08025FD4 @ =gCurrentMove\n\ - ldrh r0, [r0]\n\ - cmp r0, 0xAE\n\ - beq _08026040\n\ - cmp r5, 0x1\n\ - bne _08025F74\n\ - ldr r4, _08025FD8 @ =gSpecialStatuses\n\ - lsls r0, r3, 2\n\ - adds r0, r3\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - ldrb r0, [r0]\n\ - lsls r0, 31\n\ - cmp r0, 0\n\ - beq _08025FE0\n\ - ldr r0, _08025FDC @ =gBattlescriptCurrInstr\n\ - mov r1, r8\n\ - str r1, [r0]\n\ - b _08025F74\n\ - .align 2, 0\n\ -_08025FCC: .4byte gBattleMons\n\ -_08025FD0: .4byte gActiveBank\n\ -_08025FD4: .4byte gCurrentMove\n\ -_08025FD8: .4byte gSpecialStatuses\n\ -_08025FDC: .4byte gBattlescriptCurrInstr\n\ -_08025FE0:\n\ - mov r0, r8\n\ - bl BattleScriptPush\n\ - ldr r0, _08026028 @ =gSharedMem\n\ - ldr r2, _0802602C @ =gActiveBank\n\ - ldrb r1, [r2]\n\ - ldr r3, _08026030 @ =0x00016003\n\ - adds r0, r3\n\ - strb r1, [r0]\n\ - ldr r1, _08026034 @ =gBattlescriptCurrInstr\n\ - ldr r0, _08026038 @ =BattleScript_AbilityNoStatLoss\n\ - str r0, [r1]\n\ - ldr r1, _0802603C @ =gLastUsedAbility\n\ - ldrb r0, [r2]\n\ - movs r6, 0x58\n\ - muls r0, r6\n\ - add r0, r10\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldrb r0, [r2]\n\ - ldrb r1, [r1]\n\ - bl RecordAbilityBattle\n\ - ldr r0, _0802602C @ =gActiveBank\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4\n\ - ldrb r1, [r0]\n\ - movs r2, 0x1\n\ - orrs r1, r2\n\ - strb r1, [r0]\n\ - b _08025F74\n\ - .align 2, 0\n\ -_08026028: .4byte gSharedMem\n\ -_0802602C: .4byte gActiveBank\n\ -_08026030: .4byte 0x00016003\n\ -_08026034: .4byte gBattlescriptCurrInstr\n\ -_08026038: .4byte BattleScript_AbilityNoStatLoss\n\ -_0802603C: .4byte gLastUsedAbility\n\ -_08026040:\n\ - ldr r1, _08026090 @ =gActiveBank\n\ - ldrb r0, [r1]\n\ - movs r4, 0x58\n\ - muls r0, r4\n\ - add r0, r10\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x33\n\ - bne _080260A8\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - bne _080260A8\n\ - cmp r7, 0x6\n\ - bne _080260A8\n\ - cmp r5, 0x1\n\ - bne _08025F74\n\ - mov r0, r8\n\ - bl BattleScriptPush\n\ - ldr r0, _08026094 @ =gSharedMem\n\ - ldr r3, _08026090 @ =gActiveBank\n\ - ldrb r1, [r3]\n\ - ldr r6, _08026098 @ =0x00016003\n\ - adds r0, r6\n\ - strb r1, [r0]\n\ - ldr r1, _0802609C @ =gBattlescriptCurrInstr\n\ - ldr r0, _080260A0 @ =BattleScript_AbilityNoSpecificStatLoss\n\ - str r0, [r1]\n\ - ldr r1, _080260A4 @ =gLastUsedAbility\n\ - ldrb r0, [r3]\n\ - muls r0, r4\n\ - add r0, r10\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldrb r0, [r3]\n\ - ldrb r1, [r1]\n\ - bl RecordAbilityBattle\n\ - b _08025F74\n\ - .align 2, 0\n\ -_08026090: .4byte gActiveBank\n\ -_08026094: .4byte gSharedMem\n\ -_08026098: .4byte 0x00016003\n\ -_0802609C: .4byte gBattlescriptCurrInstr\n\ -_080260A0: .4byte BattleScript_AbilityNoSpecificStatLoss\n\ -_080260A4: .4byte gLastUsedAbility\n\ -_080260A8:\n\ - ldr r1, _080260FC @ =gActiveBank\n\ - ldrb r0, [r1]\n\ - movs r4, 0x58\n\ - muls r0, r4\n\ - add r0, r10\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x34\n\ - bne _08026114\n\ - mov r2, r9\n\ - cmp r2, 0\n\ - bne _08026114\n\ - cmp r7, 0x1\n\ - bne _08026114\n\ - cmp r5, 0x1\n\ - beq _080260CA\n\ - b _08025F74\n\ -_080260CA:\n\ - mov r0, r8\n\ - bl BattleScriptPush\n\ - ldr r0, _08026100 @ =gSharedMem\n\ - ldr r3, _080260FC @ =gActiveBank\n\ - ldrb r1, [r3]\n\ - ldr r6, _08026104 @ =0x00016003\n\ - adds r0, r6\n\ - strb r1, [r0]\n\ - ldr r1, _08026108 @ =gBattlescriptCurrInstr\n\ - ldr r0, _0802610C @ =BattleScript_AbilityNoSpecificStatLoss\n\ - str r0, [r1]\n\ - ldr r1, _08026110 @ =gLastUsedAbility\n\ - ldrb r0, [r3]\n\ - muls r0, r4\n\ - add r0, r10\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - ldrb r0, [r3]\n\ - ldrb r1, [r1]\n\ - bl RecordAbilityBattle\n\ - b _08025F74\n\ - .align 2, 0\n\ -_080260FC: .4byte gActiveBank\n\ -_08026100: .4byte gSharedMem\n\ -_08026104: .4byte 0x00016003\n\ -_08026108: .4byte gBattlescriptCurrInstr\n\ -_0802610C: .4byte BattleScript_AbilityNoSpecificStatLoss\n\ -_08026110: .4byte gLastUsedAbility\n\ -_08026114:\n\ - ldr r0, _080261A0 @ =gActiveBank\n\ - ldrb r1, [r0]\n\ - movs r0, 0x58\n\ - muls r0, r1\n\ - add r0, r10\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x13\n\ - bne _0802612C\n\ - cmp r5, 0\n\ - bne _0802612C\n\ - b _08025F74\n\ -_0802612C:\n\ - lsls r0, r6, 24\n\ - asrs r0, 28\n\ - movs r1, 0x7\n\ - ands r0, r1\n\ - negs r0, r0\n\ - lsls r0, 24\n\ - ldr r3, _080261A4 @ =gBattleTextBuff2\n\ - movs r4, 0\n\ - movs r1, 0xFD\n\ - strb r1, [r3]\n\ - movs r2, 0x1\n\ - lsrs r6, r0, 24\n\ - asrs r0, 24\n\ - subs r1, 0xFF\n\ - cmp r0, r1\n\ - bne _08026156\n\ - strb r4, [r3, 0x1]\n\ - movs r0, 0xD3\n\ - strb r0, [r3, 0x2]\n\ - strb r4, [r3, 0x3]\n\ - movs r2, 0x4\n\ -_08026156:\n\ - adds r0, r2, r3\n\ - strb r4, [r0]\n\ - adds r2, 0x1\n\ - adds r1, r2, r3\n\ - movs r0, 0xD4\n\ - strb r0, [r1]\n\ - adds r2, 0x1\n\ - adds r0, r2, r3\n\ - strb r4, [r0]\n\ - adds r2, 0x1\n\ - adds r1, r2, r3\n\ - movs r0, 0xFF\n\ - strb r0, [r1]\n\ - ldr r1, _080261A0 @ =gActiveBank\n\ - ldrb r2, [r1]\n\ - movs r0, 0x58\n\ - muls r0, r2\n\ - adds r0, r7, r0\n\ - mov r1, r10\n\ - adds r1, 0x18\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0\n\ - beq _08026206\n\ - movs r1, 0\n\ - ldr r0, _080261A8 @ =gBankTarget\n\ - ldrb r0, [r0]\n\ - ldr r3, _080261AC @ =gBattleCommunication\n\ - mov r8, r3\n\ - cmp r0, r2\n\ - bne _0802619A\n\ - movs r1, 0x1\n\ -_0802619A:\n\ - mov r4, r8\n\ - strb r1, [r4, 0x5]\n\ - b _08026234\n\ - .align 2, 0\n\ -_080261A0: .4byte gActiveBank\n\ -_080261A4: .4byte gBattleTextBuff2\n\ -_080261A8: .4byte gBankTarget\n\ -_080261AC: .4byte gBattleCommunication\n\ -_080261B0:\n\ - asrs r6, r0, 28\n\ - movs r0, 0x7\n\ - ands r6, r0\n\ - ldr r3, _08026210 @ =gBattleTextBuff2\n\ - strb r2, [r3]\n\ - movs r2, 0x1\n\ - cmp r6, 0x2\n\ - bne _080261CA\n\ - strb r4, [r3, 0x1]\n\ - movs r0, 0xD1\n\ - strb r0, [r3, 0x2]\n\ - strb r4, [r3, 0x3]\n\ - movs r2, 0x4\n\ -_080261CA:\n\ - adds r0, r2, r3\n\ - strb r4, [r0]\n\ - adds r2, 0x1\n\ - adds r1, r2, r3\n\ - movs r0, 0xD2\n\ - strb r0, [r1]\n\ - adds r2, 0x1\n\ - adds r0, r2, r3\n\ - strb r4, [r0]\n\ - adds r2, 0x1\n\ - adds r1, r2, r3\n\ - ldrb r0, [r1]\n\ - mov r2, r12\n\ - orrs r0, r2\n\ - strb r0, [r1]\n\ - ldr r2, _08026214 @ =gBattleMons\n\ - ldr r4, _08026218 @ =gActiveBank\n\ - ldrb r3, [r4]\n\ - movs r0, 0x58\n\ - muls r0, r3\n\ - adds r0, r7, r0\n\ - adds r1, r2, 0\n\ - adds r1, 0x18\n\ - adds r0, r1\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - mov r10, r2\n\ - cmp r0, 0xC\n\ - bne _08026220\n\ -_08026206:\n\ - ldr r1, _0802621C @ =gBattleCommunication\n\ - movs r0, 0x2\n\ - strb r0, [r1, 0x5]\n\ - mov r8, r1\n\ - b _08026234\n\ - .align 2, 0\n\ -_08026210: .4byte gBattleTextBuff2\n\ -_08026214: .4byte gBattleMons\n\ -_08026218: .4byte gActiveBank\n\ -_0802621C: .4byte gBattleCommunication\n\ -_08026220:\n\ - movs r1, 0\n\ - ldr r0, _080262B4 @ =gBankTarget\n\ - ldrb r0, [r0]\n\ - ldr r2, _080262B8 @ =gBattleCommunication\n\ - mov r8, r2\n\ - cmp r0, r3\n\ - bne _08026230\n\ - movs r1, 0x1\n\ -_08026230:\n\ - mov r3, r8\n\ - strb r1, [r3, 0x5]\n\ -_08026234:\n\ - ldr r2, _080262BC @ =gActiveBank\n\ - ldrb r0, [r2]\n\ - movs r4, 0x58\n\ - adds r1, r0, 0\n\ - muls r1, r4\n\ - adds r1, r7, r1\n\ - mov r3, r10\n\ - adds r3, 0x18\n\ - adds r1, r3\n\ - lsls r0, r6, 24\n\ - asrs r0, 24\n\ - ldrb r6, [r1]\n\ - adds r0, r6\n\ - strb r0, [r1]\n\ - ldrb r0, [r2]\n\ - muls r0, r4\n\ - adds r0, r7, r0\n\ - adds r1, r0, r3\n\ - movs r0, 0\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0\n\ - bge _08026264\n\ - movs r0, 0\n\ - strb r0, [r1]\n\ -_08026264:\n\ - ldr r1, _080262BC @ =gActiveBank\n\ - ldrb r0, [r1]\n\ - muls r0, r4\n\ - adds r0, r7, r0\n\ - adds r1, r0, r3\n\ - movs r0, 0\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0xC\n\ - ble _0802627A\n\ - movs r0, 0xC\n\ - strb r0, [r1]\n\ -_0802627A:\n\ - mov r2, r8\n\ - ldrb r0, [r2, 0x5]\n\ - cmp r0, 0x2\n\ - bne _080262A2\n\ - movs r3, 0x1\n\ - ands r3, r5\n\ - cmp r3, 0\n\ - beq _08026294\n\ - ldr r0, _080262C0 @ =gBattleMoveFlags\n\ - ldrb r1, [r0]\n\ - movs r2, 0x1\n\ - orrs r1, r2\n\ - strb r1, [r0]\n\ -_08026294:\n\ - mov r4, r8\n\ - ldrb r0, [r4, 0x5]\n\ - cmp r0, 0x2\n\ - bne _080262A2\n\ - cmp r3, 0\n\ - bne _080262A2\n\ - b _08025F74\n\ -_080262A2:\n\ - movs r0, 0\n\ -_080262A4:\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_080262B4: .4byte gBankTarget\n\ -_080262B8: .4byte gBattleCommunication\n\ -_080262BC: .4byte gActiveBank\n\ -_080262C0: .4byte gBattleMoveFlags\n\ - .syntax divided"); + if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_CHANGE_BS_PTR)) + return STAT_CHANGE_DIDNT_WORK; + + return STAT_CHANGE_WORKED; } -#endif // NONMATCHING static void atk89_statbuffchange(void) { -- cgit v1.2.3 From c4bae7a571f5aea6785e108089e904f9dad67701 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jan 2018 22:45:08 -0500 Subject: sub_809C04C --- src/pokemon/pokemon_storage_system_4.c | 163 ++++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index ada4b43bd..eb5a6cb0b 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -2,12 +2,14 @@ // Includes #include "global.h" #include "ewram.h" +#include "data2.h" #include "constants/moves.h" #include "constants/species.h" #include "palette.h" #include "string_util.h" #include "text.h" #include "menu.h" +#include "item.h" #include "pokemon_summary_screen.h" #include "pokemon_storage_system.h" @@ -64,7 +66,7 @@ void diegohint1(u8 a0, u8 a1); bool8 sub_809BF2C(void); void sub_809BF74(void); void sub_809C028(void); -void sub_809C04C(struct BoxPokemon *pokemon, u8 a1); +void sub_809C04C(void *pokemon, u8 a1); void sub_809CC04(void); // .rodata @@ -1602,7 +1604,7 @@ void diegohint1(u8 a0, u8 a1) ExpandBoxMon(gPokemonStorage.boxes[a0] + a1, &gPokemonStorageSystemPtr->unk_2618); diegohint2(a0, a1); gPokemonStorageSystemPtr->unk_25b4 = gPokemonStorageSystemPtr->unk_2618; - sub_809C04C(&gPokemonStorageSystemPtr->unk_25b4.box, 0); + sub_809C04C(&gPokemonStorageSystemPtr->unk_25b4, 0); gUnknown_020384E7 = a0; gUnknown_020384E8 = a1; } @@ -1922,7 +1924,7 @@ void sub_809BF74(void) case 1: if (gUnknown_020384E5 < PARTY_SIZE) { - sub_809C04C(&gPlayerParty[gUnknown_020384E5].box, 0); + sub_809C04C(gPlayerParty + gUnknown_020384E5, 0); break; } // fallthrough @@ -1944,3 +1946,158 @@ void sub_809C028(void) else sub_809BF74(); } + +void sub_809C04C(void *pokemon, u8 a1) +{ + u8 *buf; + u16 gender = MON_MALE; + gPokemonStorageSystemPtr->unk_11f2 = 0; + if (a1 == 0) + { + struct Pokemon *pkmn = (struct Pokemon *)pokemon; + gPokemonStorageSystemPtr->unk_11f0 = GetMonData(pokemon, MON_DATA_SPECIES2); + if (gPokemonStorageSystemPtr->unk_11f0 != SPECIES_NONE) + { + gPokemonStorageSystemPtr->unk_11f9 = GetMonData(pkmn, MON_DATA_IS_EGG); + GetMonData(pkmn, MON_DATA_NICKNAME, gPokemonStorageSystemPtr->unk_11fa); + StringGetEnd10(gPokemonStorageSystemPtr->unk_11fa); + gPokemonStorageSystemPtr->unk_11f8 = GetMonData(pkmn, MON_DATA_LEVEL); + gPokemonStorageSystemPtr->unk_11f7 = GetMonData(pkmn, MON_DATA_MARKINGS); + gPokemonStorageSystemPtr->unk_11ec = GetMonData(pkmn, MON_DATA_PERSONALITY); + gPokemonStorageSystemPtr->unk_11e8 = GetMonSpritePal(pkmn); + gender = GetMonGender(pkmn); + gPokemonStorageSystemPtr->unk_11f2 = GetMonData(pkmn, MON_DATA_HELD_ITEM); + } + } + else if (a1 == 1) + { + struct BoxPokemon *boxmon = (struct BoxPokemon *)pokemon; + gPokemonStorageSystemPtr->unk_11f0 = GetBoxMonData(pokemon, MON_DATA_SPECIES2); + if (gPokemonStorageSystemPtr->unk_11f0 != SPECIES_NONE) + { + u32 otId = GetBoxMonData(boxmon, MON_DATA_OT_ID); + gPokemonStorageSystemPtr->unk_11f9 = GetBoxMonData(boxmon, MON_DATA_IS_EGG); + GetBoxMonData(boxmon, MON_DATA_NICKNAME, gPokemonStorageSystemPtr->unk_11fa); + StringGetEnd10(gPokemonStorageSystemPtr->unk_11fa); + gPokemonStorageSystemPtr->unk_11f8 = GetLevelFromBoxMonExp(boxmon); + gPokemonStorageSystemPtr->unk_11f7 = GetBoxMonData(boxmon, MON_DATA_MARKINGS); + gPokemonStorageSystemPtr->unk_11ec = GetBoxMonData(boxmon, MON_DATA_PERSONALITY); + gPokemonStorageSystemPtr->unk_11e8 = GetMonSpritePalFromOtIdPersonality(gPokemonStorageSystemPtr->unk_11f0, otId, gPokemonStorageSystemPtr->unk_11ec); + gender = GetGenderFromSpeciesAndPersonality(gPokemonStorageSystemPtr->unk_11f0, gPokemonStorageSystemPtr->unk_11ec); + gPokemonStorageSystemPtr->unk_11f2 = GetBoxMonData(boxmon, MON_DATA_HELD_ITEM); + } + } + else + { + gPokemonStorageSystemPtr->unk_11f0 = SPECIES_NONE; + } + if (gPokemonStorageSystemPtr->unk_11f0 == SPECIES_NONE) + { + gPokemonStorageSystemPtr->unk_11fa[0] = EOS; + gPokemonStorageSystemPtr->unk_120f[0] = EOS; + gPokemonStorageSystemPtr->unk_1234[0] = EOS; + gPokemonStorageSystemPtr->unk_1259[0] = EOS; + gPokemonStorageSystemPtr->unk_127a[0] = EOS; + } + else if (gPokemonStorageSystemPtr->unk_11f9) + { + buf = gPokemonStorageSystemPtr->unk_120f; + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x0F; // WHITE2 + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x01; // DARK_GREY + buf = gPokemonStorageSystemPtr->unk_120f + 5; + buf = StringCopy(buf, gPokemonStorageSystemPtr->unk_11fa); + gPokemonStorageSystemPtr->unk_1234[0] = EOS; + gPokemonStorageSystemPtr->unk_1259[0] = EOS; + gPokemonStorageSystemPtr->unk_127a[0] = EOS; + } + else + { + if (gPokemonStorageSystemPtr->unk_11f0 == SPECIES_NIDORAN_M || gPokemonStorageSystemPtr->unk_11f0 == SPECIES_NIDORAN_F) + gender = MON_GENDERLESS; + buf = gPokemonStorageSystemPtr->unk_120f; + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x0F; // WHITE2 + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x01; // DARK_GREY + buf = gPokemonStorageSystemPtr->unk_120f + 5; + buf = StringCopy(buf, gPokemonStorageSystemPtr->unk_11fa); + buf = gPokemonStorageSystemPtr->unk_1234; + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x0F; // WHITE2 + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x01; // DARK_GREY + buf[5] = EXT_CTRL_CODE_BEGIN; + buf[6] = 0x13; // CLEAR_TO + buf[7] = 7; + buf[8] = CHAR_SLASH; + buf = gPokemonStorageSystemPtr->unk_1234 + 9; + buf = StringCopy(buf, gSpeciesNames[gPokemonStorageSystemPtr->unk_11f0]); + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x13; // CLEAR_TO + buf[2] = 0x50; + buf[3] = EOS; + buf = gPokemonStorageSystemPtr->unk_1259; + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x0F; // WHITE2 + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x01; // DARK_GREY + buf[5] = EXT_CTRL_CODE_BEGIN; + buf[6] = 0x13; // CLEAR_TO + buf[7] = 8; + buf = gPokemonStorageSystemPtr->unk_1259 + 8; + buf[0] = 0x34; // LV + buf = gPokemonStorageSystemPtr->unk_1259 + 9; + buf = sub_8072C14(buf, gPokemonStorageSystemPtr->unk_11f8, 0x22, STR_CONV_MODE_RIGHT_ALIGN); + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x11; // CLEAR + buf[2] = 8; + buf += 3; + switch (gender) + { + case MON_MALE: + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x04; // BLUE + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x05; // YELLOW + buf[5] = CHAR_MALE; + buf += 6; + break; + case MON_FEMALE: + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x06; // CYAN + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x07; // MAGENTA + buf[5] = CHAR_FEMALE; + buf += 6; + break; + } + buf[0] = EOS; + buf = gPokemonStorageSystemPtr->unk_127a; + if (gPokemonStorageSystemPtr->unk_11f2) + { + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW + buf[2] = 0x0F; // WHITE2 + buf[3] = 0x00; // TRANSPARENT + buf[4] = 0x01; // DARK_GREY + buf = gPokemonStorageSystemPtr->unk_127a + 5; + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x06; // size + buf[2] = 0x04; + buf = gPokemonStorageSystemPtr->unk_127a + 8; + buf = StringCopy(buf, ItemId_GetItem(gPokemonStorageSystemPtr->unk_11f2)->name); + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x07; // UNKNOWN_7; + buf += 2; + } + buf[0] = EOS; + } +} -- cgit v1.2.3 From 7860ce8dbe3d4abca3a8d3fb336705e3d09b32e0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 14:00:52 -0500 Subject: split data2a and make shop.c stuff static --- src/field/decoration.c | 1 + src/field/scrcmd.c | 6 +-- src/field/shop.c | 137 ++++++++++++++++++++++++++----------------------- 3 files changed, 78 insertions(+), 66 deletions(-) (limited to 'src') diff --git a/src/field/decoration.c b/src/field/decoration.c index 889e8e8a2..e1604cfa1 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -19,6 +19,7 @@ #include "event_data.h" #include "field_weather.h" #include "decoration.h" +#include "shop.h" #include "ewram.h" EWRAM_DATA u8 *gUnknown_020388D0 = NULL; diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index e795fd8ed..36edbe472 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -1755,7 +1755,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); - CreatePokemartMenu(ptr); + Shop_CreatePokemartMenu(ptr); ScriptContext1_Stop(); return TRUE; } @@ -1764,7 +1764,7 @@ bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); - CreateDecorationShop1Menu(ptr); + Shop_CreateDecorationShop1Menu(ptr); ScriptContext1_Stop(); return TRUE; } @@ -1773,7 +1773,7 @@ bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); - CreateDecorationShop2Menu(ptr); + Shop_CreateDecorationShop2Menu(ptr); ScriptContext1_Stop(); return TRUE; } diff --git a/src/field/shop.c b/src/field/shop.c index 233e430ee..5a47b033b 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -34,17 +34,28 @@ extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; -void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode); -void Shop_PrintItemDescText(void); -void Task_ReturnToBuyMenu(u8); -void Task_ExitBuyMenu(u8); -void Task_ExitBuyMenuDoFade(u8); -void Task_UpdatePurchaseHistory(u8); -void Task_HandleShopMenuBuy(u8 taskId); -void Task_HandleShopMenuSell(u8 taskId); -void Task_HandleShopMenuQuit(u8 taskId); -void Task_DoItemPurchase(u8 taskId); -void Task_CancelItemPurchase(u8 taskId); +static void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode); +static void Shop_PrintItemDescText(void); +static void Task_ReturnToBuyMenu(u8); +static void Task_ExitBuyMenu(u8); +static void Task_ExitBuyMenuDoFade(u8); +static void Task_UpdatePurchaseHistory(u8); +static void Task_HandleShopMenuBuy(u8 taskId); +static void Task_HandleShopMenuSell(u8 taskId); +static void Task_HandleShopMenuQuit(u8 taskId); +static void Task_DoItemPurchase(u8 taskId); +static void Task_CancelItemPurchase(u8 taskId); +static void Task_DoBuySellMenu(u8); +static void Shop_FadeAndRunBuySellCallback(u8); +static void BuyMenuDrawGraphics(void); +static void sub_80B3240(void); +static void DrawFirstMartScrollIndicators(void); +static void Shop_DrawViewport(void); +static void Shop_InitMenus(int, int); +static void Shop_PrintItemDesc(void); +static void Shop_DoCursorAction(u8); +static void Shop_LoadViewportObjects(void); +static void Shop_AnimViewportObjects(void); // iwram static struct MartInfo gMartInfo; @@ -76,7 +87,7 @@ static const struct YesNoFuncTable sShopPurchaseYesNoFuncs[] = Task_CancelItemPurchase }; -u8 CreateShopMenu(u8 martType) +static u8 CreateShopMenu(u8 martType) { ScriptContext2_Enable(); gMartInfo.martType = martType; @@ -99,12 +110,12 @@ u8 CreateShopMenu(u8 martType) return CreateTask(Task_DoBuySellMenu, 8); } -void SetShopMenuCallback(void *callbackPtr) +static void SetShopMenuCallback(void *callbackPtr) { gMartInfo.callback = callbackPtr; } -void SetShopItemsForSale(u16 *items) +static void SetShopItemsForSale(u16 *items) { u16 i = 0; @@ -118,7 +129,7 @@ void SetShopItemsForSale(u16 *items) } } -void Task_DoBuySellMenu(u8 taskId) +static void Task_DoBuySellMenu(u8 taskId) { const u8 taskIdConst = taskId; // why is a local const needed to match? @@ -157,7 +168,7 @@ void Task_DoBuySellMenu(u8 taskId) } } -void Task_HandleShopMenuBuy(u8 taskId) +static void Task_HandleShopMenuBuy(u8 taskId) { gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; @@ -165,7 +176,7 @@ void Task_HandleShopMenuBuy(u8 taskId) fade_screen(1, 0); } -void Task_HandleShopMenuSell(u8 taskId) +static void Task_HandleShopMenuSell(u8 taskId) { gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; @@ -173,7 +184,7 @@ void Task_HandleShopMenuSell(u8 taskId) fade_screen(1, 0); } -void Task_HandleShopMenuQuit(u8 taskId) +static void Task_HandleShopMenuQuit(u8 taskId) { Menu_DestroyCursor(); Menu_EraseWindowRect(0, 0, 11, 8); @@ -185,7 +196,7 @@ void Task_HandleShopMenuQuit(u8 taskId) gMartInfo.callback(); // run the callback if it exists. } -void Shop_FadeAndRunBuySellCallback(u8 taskId) +static void Shop_FadeAndRunBuySellCallback(u8 taskId) { if (!gPaletteFade.active) { @@ -194,13 +205,13 @@ void Shop_FadeAndRunBuySellCallback(u8 taskId) } } -void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) +static void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) { CreateShopMenu(gMartInfo.martType); DestroyTask(taskId); } -void Task_ReturnToMartMenu(u8 taskId) +static void Task_ReturnToMartMenu(u8 taskId) { if (sub_807D770() == 1) { @@ -246,7 +257,7 @@ static void VBlankCB(void) DmaCopy16Defvars(3, gBGTilemapBuffers[3], (void *)(VRAM + 0xF000), 0x800); } -void BuyMenuDrawGraphics(void) +static void BuyMenuDrawGraphics(void) { ClearVideoCallbacks(); ScanlineEffect_Stop(); @@ -298,7 +309,7 @@ void BuyMenuDrawGraphics(void) SetMainCallback2(MainCB2); } -void sub_80B3240(void) +static void sub_80B3240(void) { u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; @@ -306,7 +317,7 @@ void sub_80B3240(void) LoadPalette(&colors[0], 0xD8, sizeof colors[0]); } -void DrawFirstMartScrollIndicators(void) +static void DrawFirstMartScrollIndicators(void) { ClearVerticalScrollIndicatorPalettes(); @@ -318,7 +329,7 @@ void DrawFirstMartScrollIndicators(void) } } -void Shop_TryDrawVerticalScrollIndicators(void) +static void Shop_TryDrawVerticalScrollIndicators(void) { if (gMartInfo.choicesAbove == 0) SetVerticalScrollIndicators(TOP_ARROW, INVISIBLE); @@ -332,13 +343,13 @@ void Shop_TryDrawVerticalScrollIndicators(void) } // what is the point of this function? the tiles always get overwritten by BuyMenuDrawTextboxBG. -void BuyMenuDrawTextboxBG_Old(u16 *array, s16 offset1, s16 offset2) +static void BuyMenuDrawTextboxBG_Old(u16 *array, s16 offset1, s16 offset2) { array[offset1 + offset2] = 0xC3E1; array[offset1 + offset2 + 1] = 0xC3E1; } -void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) +static void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2) { // This function draws a whole 2x2 metatile. array[offset1 + offset2] = array2[0]; // top left @@ -347,7 +358,7 @@ void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *arra array[offset1 + offset2 + 33] = array2[3]; // bottom right } -void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) +static void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) { u8 tempVar4 = var4; s16 offset1 = var1 * 2; @@ -371,7 +382,7 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4) } // used to draw the border tiles around the viewport. -void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) +static void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) { s16 offset1 = var1 * 2; s16 offset2 = (var2 * 0x40) + 0x40; @@ -380,7 +391,7 @@ void BuyMenuDrawMapPartialMetatile(s16 var1, int var2, u16 *var3) BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); } -void Shop_DrawViewportTiles(void) +static void Shop_DrawViewportTiles(void) { s16 facingX; s16 facingY; @@ -420,7 +431,7 @@ void Shop_DrawViewportTiles(void) } } -void Shop_DrawViewport(void) +static void Shop_DrawViewport(void) { ClearBGTilemapBuffers(); Shop_LoadViewportObjects(); @@ -428,7 +439,7 @@ void Shop_DrawViewport(void) Shop_DrawViewportTiles(); } -void Shop_LoadViewportObjects(void) +static void Shop_LoadViewportObjects(void) { s16 facingX; s16 facingY; @@ -466,7 +477,7 @@ void Shop_LoadViewportObjects(void) } } -void Shop_AnimViewportObjects(void) +static void Shop_AnimViewportObjects(void) { u8 i; @@ -485,7 +496,7 @@ void Shop_AnimViewportObjects(void) } } -void BuyMenuDrawTextboxBG(void) +static void BuyMenuDrawTextboxBG(void) { s16 i; @@ -496,7 +507,7 @@ void BuyMenuDrawTextboxBG(void) } } -void Shop_InitMenus(int firstItemId, int lastItemId) +static void Shop_InitMenus(int firstItemId, int lastItemId) { BuyMenuDrawTextboxBG(); Shop_DisplayPriceInList(firstItemId, lastItemId, 0); @@ -504,7 +515,7 @@ void Shop_InitMenus(int firstItemId, int lastItemId) } // after printing the item quantity and price, restore the textbox tiles before the Yes/No prompt. -void BuyMenuDrawTextboxBG_Restore(void) +static void BuyMenuDrawTextboxBG_Restore(void) { u16 i, j; @@ -513,14 +524,14 @@ void BuyMenuDrawTextboxBG_Restore(void) gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0; } -void Shop_PrintItemDesc(void) +static void Shop_PrintItemDesc(void) { Shop_PrintItemDescText(); } #define tItemCount data[1] -void Shop_DisplayPriceInCheckoutWindow(u8 taskId) +static void Shop_DisplayPriceInCheckoutWindow(u8 taskId) { u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor; u16 itemId = gMartInfo.itemList[itemListIndex]; @@ -535,7 +546,7 @@ void Shop_DisplayPriceInCheckoutWindow(u8 taskId) sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1); } -void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) +static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -559,7 +570,7 @@ void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) Menu_PrintTextPixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1); } -void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) +static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCode) { u8 *stringPtr = gStringVar1; @@ -592,7 +603,7 @@ void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasControlCod } } -void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode) +static void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlCode) { u8 i; @@ -611,7 +622,7 @@ void Shop_DisplayPriceInList(int firstItemId, int lastItemId, bool32 hasControlC } } -void Shop_PrintItemDescText(void) +static void Shop_PrintItemDescText(void) { if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) { @@ -630,7 +641,7 @@ void Shop_PrintItemDescText(void) } } -void Shop_DoPremierBallCheck(u8 taskId) +static void Shop_DoPremierBallCheck(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { @@ -644,7 +655,7 @@ void Shop_DoPremierBallCheck(u8 taskId) } } -void Shop_DoItemTransaction(u8 taskId) +static void Shop_DoItemTransaction(u8 taskId) { IncrementGameStat(0x26); RemoveMoney(&gSaveBlock1.money, gMartTotalCost); @@ -653,13 +664,13 @@ void Shop_DoItemTransaction(u8 taskId) gTasks[taskId].func = Shop_DoPremierBallCheck; } -void Shop_DoPricePrintAndReturnToBuyMenu(u8 taskId) +static void Shop_DoPricePrintAndReturnToBuyMenu(u8 taskId) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Task_ReturnToBuyMenu(taskId); } -void Task_DoItemPurchase(u8 taskId) +static void Task_DoItemPurchase(u8 taskId) { Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0); @@ -698,14 +709,14 @@ void Task_DoItemPurchase(u8 taskId) DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1); } -void Shop_DoYesNoPurchase(u8 taskId) +static void Shop_DoYesNoPurchase(u8 taskId) { DisplayYesNoMenu(7, 8, 1); sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1); DoYesNoFuncWithChoice(taskId, sShopPurchaseYesNoFuncs); } -void Task_CancelItemPurchase(u8 taskId) +static void Task_CancelItemPurchase(u8 taskId) { Shop_DisplayPriceInList(gMartInfo.cursor, gMartInfo.cursor, 0); Menu_EraseWindowRect(0x7, 0x8, 0xD, 0xD); @@ -713,7 +724,7 @@ void Task_CancelItemPurchase(u8 taskId) Task_ReturnToBuyMenu(taskId); } -void Shop_PrintPrice(u8 taskId) +static void Shop_PrintPrice(u8 taskId) { if (SellMenu_QuantityRoller(taskId, gMartInfo.curItemCount) == TRUE) Shop_DisplayPriceInCheckoutWindow(taskId); @@ -739,7 +750,7 @@ void Shop_PrintPrice(u8 taskId) } // set the item count in the mart info to the maximum allowed by the player's budget. -void Shop_UpdateCurItemCountToMax(u8 taskId) +static void Shop_UpdateCurItemCountToMax(u8 taskId) { u16 var; @@ -757,7 +768,7 @@ void Shop_UpdateCurItemCountToMax(u8 taskId) } #ifdef NONMATCHING -void Shop_MoveItemListUp(void) +static void Shop_MoveItemListUp(void) { u16 *r1; u16 *r2; @@ -799,7 +810,7 @@ void Shop_MoveItemListUp(void) } #else __attribute__((naked)) -void Shop_MoveItemListUp(void) +static void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -894,7 +905,7 @@ _080B4038: .4byte 0xfffffc40\n\ #endif #ifdef NONMATCHING -void Shop_MoveItemListDown(void) +static void Shop_MoveItemListDown(void) { u16 *r1; u16 *r2; @@ -938,7 +949,7 @@ void Shop_MoveItemListDown(void) } #else __attribute__((naked)) -void Shop_MoveItemListDown(void) +static void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -1031,7 +1042,7 @@ _080B40E4: .4byte 0x800000f0\n\ } #endif -void Shop_DoCursorAction(u8 taskId) +static void Shop_DoCursorAction(u8 taskId) { if (!gPaletteFade.active) { @@ -1140,7 +1151,7 @@ void Shop_DoCursorAction(u8 taskId) } } -void Task_ReturnToBuyMenu(u8 taskId) +static void Task_ReturnToBuyMenu(u8 taskId) { Menu_EraseWindowRect(0, 0xE, 0x1D, 0x13); Menu_EraseWindowRect(0, 0xA, 0xD, 0xD); @@ -1154,14 +1165,14 @@ void Task_ReturnToBuyMenu(u8 taskId) gTasks[taskId].func = Shop_DoCursorAction; } -void Task_ExitBuyMenu(u8 taskId) +static void Task_ExitBuyMenu(u8 taskId) { gFieldCallback = Shop_FadeReturnToMartMenu; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ExitBuyMenuDoFade; } -void Task_ExitBuyMenuDoFade(u8 taskId) +static void Task_ExitBuyMenuDoFade(u8 taskId) { if (!gPaletteFade.active) { @@ -1173,7 +1184,7 @@ void Task_ExitBuyMenuDoFade(u8 taskId) } // Task_UpdatePurchaseHistory -void Task_UpdatePurchaseHistory(u8 taskId) +static void Task_UpdatePurchaseHistory(u8 taskId) { u16 i; @@ -1200,13 +1211,13 @@ void Task_UpdatePurchaseHistory(u8 taskId) #undef tItemCount -void ClearItemPurchases(void) +static void ClearItemPurchases(void) { gMartPurchaseHistoryId = 0; ClearItemSlots(gMartPurchaseHistory, 3); } -void CreatePokemartMenu(u16 *itemList) +void Shop_CreatePokemartMenu(u16 *itemList) { CreateShopMenu(MART_TYPE_0); SetShopItemsForSale(itemList); @@ -1214,14 +1225,14 @@ void CreatePokemartMenu(u16 *itemList) SetShopMenuCallback(EnableBothScriptContexts); } -void CreateDecorationShop1Menu(u16 *itemList) +void Shop_CreateDecorationShop1Menu(u16 *itemList) { CreateShopMenu(MART_TYPE_1); SetShopItemsForSale(itemList); SetShopMenuCallback(EnableBothScriptContexts); } -void CreateDecorationShop2Menu(u16 *itemList) +void Shop_CreateDecorationShop2Menu(u16 *itemList) { CreateShopMenu(MART_TYPE_2); SetShopItemsForSale(itemList); -- cgit v1.2.3 From dc872c0cbf1983d06b382dc0747df9140c9ecc03 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 17:18:31 -0500 Subject: split data_8393054 --- src/rom_8077ABC.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 2b5a3c036..11a71155d 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -151,6 +151,7 @@ const struct SpriteSheet gUnknown_0837F5E0[] = { gMiscBlank_Gfx, 0x800, 55126, }, }; +// pkmn_form.c u8 GetBankPosition(u8 slot, u8 a2) { @@ -2149,6 +2150,8 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) return new_sprite; } +// unused_orb + void sub_807A544(struct Sprite *sprite) { sub_8078650(sprite); @@ -2192,6 +2195,8 @@ void sub_807A5C4(struct Sprite *sprite) sprite->callback = sub_8078504; } +// file_2 + void sub_807A63C(struct Sprite *sprite) { sub_8078650(sprite); @@ -2204,6 +2209,8 @@ void sub_807A63C(struct Sprite *sprite) StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } +// file_3 (punch effect?) + void sub_807A69C(u8 taskId) { u16 src; @@ -2287,6 +2294,8 @@ void sub_807A8D4(struct Sprite *sprite) } } +// file_4 + void sub_807A908(struct Sprite *sprite) { sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); -- cgit v1.2.3 From 58dd1c92ac6270d229c6762ca640118e4dd5e3cf Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 16 Jan 2018 18:10:40 -0600 Subject: remove some symbols from sym_ewram.txt --- src/battle/battle_message.c | 3 ++- src/contest.c | 26 ++++++++++++++------------ src/easy_chat_2.c | 2 ++ src/engine/record_mixing.c | 2 +- src/engine/trade.c | 10 ++++++---- src/field/field_weather.c | 12 +++++------- src/field/party_menu.c | 13 ++++++++----- src/field/pc_screen_effect.c | 2 +- src/field/secret_base.c | 2 +- src/pokemon/pokemon_summary_screen.c | 5 +++-- src/scene/intro_credits_graphics.c | 7 ++++--- 11 files changed, 47 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c index 18e07acf6..e9334ef61 100644 --- a/src/battle/battle_message.c +++ b/src/battle/battle_message.c @@ -158,7 +158,6 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gStringBank; extern u8 gEffectBank; -extern u8 gAbilitiesPerBank[4]; extern u8 gBattleTextBuff1[]; extern u8 gBattleTextBuff2[]; extern u8 gBattleTextBuff3[]; @@ -175,6 +174,8 @@ extern u16 gBattlePartyID[4]; extern struct BattleEnigmaBerry gEnigmaBerries[4]; extern u8 gBattleBufferA[4][0x200]; +EWRAM_DATA u8 gAbilitiesPerBank[4] = {0}; + extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings diff --git a/src/contest.c b/src/contest.c index df4bb361d..972c19c2c 100644 --- a/src/contest.c +++ b/src/contest.c @@ -39,8 +39,6 @@ extern void sub_80C8AD0(u8); extern void sub_80C8C80(u8); extern struct MusicPlayerInfo gMPlay_SE1; -extern u16 gSpecialVar_ContestCategory; -extern u16 gSpecialVar_ContestRank; extern u8 gBattleMonForms[]; extern u8 gDisplayedStringBattle[]; extern u16 gBattleTypeFlags; @@ -48,8 +46,6 @@ extern u8 gBankAttacker; extern u8 gBankTarget; extern u8 gBanksBySide[]; extern u8 gObjectBankIDs[]; -extern u8 gIsLinkContest; -extern u8 gContestPlayerMonIndex; extern u16 gBattle_BG3_X; extern s16 gBattle_BG1_Y; extern u16 gBattle_BG3_Y; @@ -65,14 +61,6 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_WIN0H; extern u32 gUnknown_03005D28; // saved RNG value -extern s16 gUnknown_02038680[]; -extern u16 gUnknown_02038688[]; -extern u8 gUnknown_02038694; -extern u8 gUnknown_02038696[]; -extern u8 gUnknown_0203869B; -extern s16 gUnknown_02038670[]; -extern s16 gUnknown_02038678[]; -extern u8 gContestFinalStandings[]; // What "place" each participant came in. extern struct SpriteTemplate gUnknown_02024E8C; @@ -292,6 +280,20 @@ void sub_80B292C(void); void sub_80B2968(void); void SelectContestMoveBankTarget(u16); +EWRAM_DATA u8 gUnknown_0203856C = 0; +EWRAM_DATA struct ContestPokemon gContestMons[4] = {0}; +EWRAM_DATA s16 gUnknown_02038670[4] = {0}; +EWRAM_DATA s16 gUnknown_02038678[4] = {0}; +EWRAM_DATA s16 gUnknown_02038680[4] = {0}; +EWRAM_DATA u16 gUnknown_02038688[4] = {0}; +EWRAM_DATA u8 gContestFinalStandings[4] = {0}; // What "place" each participant came in. +EWRAM_DATA u8 gUnknown_02038694 = 0; +EWRAM_DATA u8 gContestPlayerMonIndex = 0; +EWRAM_DATA u8 gUnknown_02038696[4] = {0}; +EWRAM_DATA u8 gIsLinkContest = 0; +EWRAM_DATA u8 gUnknown_0203869B = 0; +EWRAM_DATA u16 gSpecialVar_ContestCategory = 0; +EWRAM_DATA u16 gSpecialVar_ContestRank = 0; void nullsub_89(u8 taskId) { diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index dc8bddd5a..c56fe7576 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -70,6 +70,8 @@ static u16 sub_80EB960(void); u8 sub_80EB9C8(void); static u16 sub_80EB9D8(void); +EWRAM_DATA u8 gUnknown_020388AC = 0; + static u8 gUnknown_03000740; const u16 InterviewPalette_0[] = INCBIN_U16("graphics/misc/interview_pal0.gbapal"); diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c index 75ca92e6a..a2660bf82 100644 --- a/src/engine/record_mixing.c +++ b/src/engine/record_mixing.c @@ -26,7 +26,7 @@ #include "tv.h" #include "ewram.h" -extern struct RecordMixingDayCareMail gUnknown_02038738; +EWRAM_DATA struct RecordMixingDayCareMail gUnknown_02038738 = {0}; extern u16 gSpecialVar_0x8005; u32 gUnknown_03005D2C; diff --git a/src/engine/trade.c b/src/engine/trade.c index 3a14adaca..e49cde6cd 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -213,12 +213,14 @@ static #endif void sub_804DB84(void); -extern u8 gUnknown_020297D8[2]; -extern u8 *gUnknown_020296CC[13]; +EWRAM_DATA u8 *gUnknown_020296CC[13] = {0}; +EWRAM_DATA struct MailStruct gUnknown_02029700[6] = {0}; +EWRAM_DATA u8 gUnknown_020297D8[2] = {0}; + extern struct TradeEwramSubstruct *gUnknown_03004824; -extern struct MailStruct gUnknown_02029700[16]; -const u32 unref_data_820ABD4[] = { +const u32 unref_data_820ABD4[] = +{ 0x00000890, 0x00003AC0, 0x0000001C, diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 48d7da7f7..b6475d8ff 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -35,10 +35,11 @@ struct WeatherCallbacks bool8 (*finish)(void); }; -extern struct Weather gWeather; -extern u8 gUnknown_0202FF38[]; -extern u16 gUnknown_0202FF58; -IWRAM_DATA const u8 *gUnknown_030006DC; +EWRAM_DATA struct Weather gWeather = {0}; +EWRAM_DATA u8 gUnknown_0202FF38[32] = {0}; +EWRAM_DATA u16 gUnknown_0202FF58 = {0}; + +static const u8 *gUnknown_030006DC; const u8 DroughtPaletteData_0[] = INCBIN_U8("graphics/weather/drought0.bin.lz"); const u8 DroughtPaletteData_1[] = INCBIN_U8("graphics/weather/drought1.bin.lz"); @@ -47,9 +48,6 @@ const u8 DroughtPaletteData_3[] = INCBIN_U8("graphics/weather/drought3.bin.lz"); const u8 DroughtPaletteData_4[] = INCBIN_U8("graphics/weather/drought4.bin.lz"); const u8 DroughtPaletteData_5[] = INCBIN_U8("graphics/weather/drought5.bin.lz"); -extern u8 (*gUnknown_0202FC48)[32]; -extern u8 gUnknown_0202F9E8[32]; - static const u8 *const sCompressedDroughtPalettes[] = { DroughtPaletteData_0, diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 48275435e..32986fae9 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -101,7 +101,14 @@ static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d); static void sub_806BB9C(u8 a); static void sub_806BBEC(u8 a); -const u16 TMHMMoves[] = { +EWRAM_DATA u8 gUnknown_0202E8F4 = 0; +EWRAM_DATA u8 gUnknown_0202E8F5 = 0; +EWRAM_DATA u8 gUnknown_0202E8F6 = 0; +EWRAM_DATA u16 gUnknown_0202E8F8 = 0; +EWRAM_DATA u8 gPartyMenuType = 0; + +const u16 TMHMMoves[] = +{ MOVE_FOCUS_PUNCH, MOVE_DRAGON_CLAW, MOVE_WATER_PULSE, @@ -458,10 +465,6 @@ struct Unk201FE00 extern u16 gBattleTypeFlags; extern u8 gTileBuffer[]; -extern u8 gUnknown_0202E8F4; -extern u8 gUnknown_0202E8F6; -extern u16 gUnknown_0202E8F8; -extern u8 gPartyMenuType; extern u8 gLastFieldPokeMenuOpened; extern u8 gPlayerPartyCount; extern s32 gBattleMoveDamage; diff --git a/src/field/pc_screen_effect.c b/src/field/pc_screen_effect.c index 364fca0aa..e0853e01d 100644 --- a/src/field/pc_screen_effect.c +++ b/src/field/pc_screen_effect.c @@ -30,7 +30,7 @@ extern const u16 gUnknownPal_083D18EC[16]; extern const u8 gUnknownGfx_083D190C[128]; -extern struct UnkStruct *gUnknown_020387EC; +EWRAM_DATA struct UnkStruct *gUnknown_020387EC = NULL; const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 }; diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 203b57867..728decc9c 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -51,7 +51,7 @@ static void Task_SecretBasePC_Registry(u8 taskId); extern u8 gUnknown_0815F399[]; extern u8 gUnknown_0815F49A[]; -extern u8 gUnknown_020387DC; +EWRAM_DATA u8 gUnknown_020387DC = 0; const struct { diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index bf8306fc0..7b40918e9 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -121,7 +121,6 @@ extern u8 ball_number_to_ball_processing_index(u16); extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8); extern struct MusicPlayerInfo gMPlay_BGM; -extern u8 gUnknown_020384F0; extern u8 gUnknown_08208238[]; extern u16 gBattle_BG3_Y; extern u16 gBattle_BG2_Y; @@ -130,7 +129,6 @@ extern u16 gBattle_BG1_X; extern u16 gBattle_BG2_X; extern u16 gBattle_BG3_X; extern TaskFunc gUnknown_03005CF0; -extern struct Sprite *gUnknown_020384F4; extern struct SpriteTemplate gUnknown_02024E8C; extern const u8 gStatusPal_Icons[]; @@ -157,6 +155,9 @@ extern const u16 gUnknown_08E94550[]; extern const u16 gUnknown_08E94590[]; extern const u8 gUnknown_08E73E88[]; +EWRAM_DATA u8 gUnknown_020384F0 = 0; +EWRAM_DATA struct Sprite *gUnknown_020384F4 = NULL; + #if ENGLISH #include "../data/text/move_descriptions_en.h" #include "../data/text/nature_names_en.h" diff --git a/src/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c index f0f1264a0..7f6765ef6 100644 --- a/src/scene/intro_credits_graphics.c +++ b/src/scene/intro_credits_graphics.c @@ -301,9 +301,10 @@ const struct CompressedSpriteSheet gUnknown_08416E34[] = { }; -extern u16 gUnknown_02039358; -extern s16 gUnknown_0203935A; -extern s16 gUnknown_0203935C; +EWRAM_DATA u16 gUnknown_02039358 = 0; +EWRAM_DATA s16 gUnknown_0203935A = 0; +EWRAM_DATA s16 gUnknown_0203935C = 0; + extern u8 gReservedSpritePaletteCount; void sub_8149248(); -- cgit v1.2.3 From 31a322fdc589c381af6ec4b4c4781d28cb394cc1 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 16 Jan 2018 19:14:14 -0500 Subject: use game stat defines --- src/battle/battle_setup.c | 36 ++++++++++++++++++------------------ src/battle/post_battle_event_funcs.c | 6 +++--- src/engine/save.c | 4 ++-- src/field/field_control_avatar.c | 2 +- src/field/field_player_avatar.c | 2 +- src/field/field_weather_effects.c | 2 +- src/field/fldeff_cut.c | 4 ++-- src/field/item_use.c | 2 +- src/field/safari_zone.c | 2 +- src/field/shop.c | 2 +- src/field/start_menu.c | 4 ++-- src/field/wild_encounter.c | 2 +- src/rom6.c | 2 +- src/scene/berry_blender.c | 4 ++-- src/scene/evolution_scene.c | 4 ++-- 15 files changed, 39 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c index b4ff407fc..892be1029 100644 --- a/src/battle/battle_setup.c +++ b/src/battle/battle_setup.c @@ -520,8 +520,8 @@ static void DoStandardWildBattle(void) gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = 0; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void BattleSetup_StartRoamerBattle(void) @@ -532,8 +532,8 @@ void BattleSetup_StartRoamerBattle(void) gMain.savedCallback = CB2_EndWildBattle; gBattleTypeFlags = BATTLE_TYPE_ROAMER; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } static void DoSafariBattle(void) @@ -549,8 +549,8 @@ static void DoSafariBattle(void) static void StartTheBattle(void) { CreateBattleStartTask(GetTrainerBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(9); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_TRAINER_BATTLES); } //Initiates battle where Wally catches Ralts @@ -569,8 +569,8 @@ void BattleSetup_StartScriptedWildBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = 0; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartSouthernIslandBattle(void) @@ -579,8 +579,8 @@ void ScrSpecial_StartSouthernIslandBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; CreateBattleStartTask(GetWildBattleTransition(), 0); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartRayquazaBattle(void) @@ -589,8 +589,8 @@ void ScrSpecial_StartRayquazaBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartGroudonKyogreBattle(void) @@ -602,8 +602,8 @@ void ScrSpecial_StartGroudonKyogreBattle(void) CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON else CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } void ScrSpecial_StartRegiBattle(void) @@ -612,8 +612,8 @@ void ScrSpecial_StartRegiBattle(void) gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } static void CB2_EndWildBattle(void) @@ -879,8 +879,8 @@ static void CB2_StartFirstBattle(void) SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); overworld_poison_timer_set(); - IncrementGameStat(7); - IncrementGameStat(8); + IncrementGameStat(GAME_STAT_TOTAL_BATTLES); + IncrementGameStat(GAME_STAT_WILD_BATTLES); } } diff --git a/src/battle/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c index 0617763f6..a44cf028b 100644 --- a/src/battle/post_battle_event_funcs.c +++ b/src/battle/post_battle_event_funcs.c @@ -26,8 +26,8 @@ int GameClear(void) FlagSet(FLAG_SYS_GAME_CLEAR); } - if (!GetGameStat(1)) - SetGameStat(1, (gSaveBlock2.playTimeHours << 16) | (gSaveBlock2.playTimeMinutes << 8) | gSaveBlock2.playTimeSeconds); + if (!GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME)) + SetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME, (gSaveBlock2.playTimeHours << 16) | (gSaveBlock2.playTimeMinutes << 8) | gSaveBlock2.playTimeSeconds); SetSecretBase2Field_9(); @@ -54,7 +54,7 @@ int GameClear(void) if (ribbonGet == TRUE) { - IncrementGameStat(42); + IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); FlagSet(FLAG_SYS_RIBBON_GET); } diff --git a/src/engine/save.c b/src/engine/save.c index be907edcc..250b29a87 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -674,8 +674,8 @@ u8 Save_WriteDataInternal(u8 saveType) EraseFlashSector(i); // fall through case SAVE_HALL_OF_FAME: // hall of fame. - if (GetGameStat(10) < 999) - IncrementGameStat(10); + if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999) + IncrementGameStat(GAME_STAT_ENTERED_HOF); for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++) HandleWriteSectorNBytes(HALL_OF_FAME_SECTOR + i, sHallOfFameChunks[i].data, sHallOfFameChunks[i].size); SaveSerializedGame(); diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 52e66f16e..c156df035 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -181,7 +181,7 @@ int sub_8068024(struct FieldInput *input) return TRUE; if (input->input_field_0_6) { - IncrementGameStat(5); + IncrementGameStat(GAME_STAT_STEPS); if (sub_80687E4(&position, r4, r6) == 1) return TRUE; } diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 9a29e2e92..ba45e506d 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -523,7 +523,7 @@ u8 CheckForFieldObjectCollision(struct MapObject *a, s16 x, s16 y, u8 direction, return 5; if (ShouldJumpLedge(x, y, direction)) { - IncrementGameStat(0x2B); + IncrementGameStat(GAME_STAT_JUMPED_DOWN_LEDGES); return COLLISION_LEDGE_JUMP; } if (collision == 4 && sub_8058F6C(x, y, direction)) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 5a59d6c2a..7406363a5 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -2380,5 +2380,5 @@ void UpdateRainCounter(u8 newWeather, u8 oldWeather) { if (newWeather != oldWeather && (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED)) - IncrementGameStat(0x28); + IncrementGameStat(GAME_STAT_GOT_RAINED_ON); } diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index e4328acfc..513107729 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -122,7 +122,7 @@ bool8 FldEff_UseCutOnGrass(void) gTasks[taskId].data[8] = (u32)sub_80A2684 >> 16; gTasks[taskId].data[9] = (u32)sub_80A2684; - IncrementGameStat(0x12); + IncrementGameStat(GAME_STAT_USED_CUT); return FALSE; } @@ -138,7 +138,7 @@ bool8 FldEff_UseCutOnTree(void) gTasks[taskId].data[8] = (u32)sub_80A2B00 >> 16; gTasks[taskId].data[9] = (u32)sub_80A2B00; - IncrementGameStat(0x12); + IncrementGameStat(GAME_STAT_USED_CUT); return FALSE; } diff --git a/src/field/item_use.c b/src/field/item_use.c index 55fb21814..9346cf42e 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -259,7 +259,7 @@ void ItemUseOnFieldCB_Rod(u8 taskId) void ItemUseOutOfBattle_Itemfinder(u8 var) { - IncrementGameStat(0x27); + IncrementGameStat(GAME_STAT_USED_ITEMFINDER); gFieldItemUseCallback = (void *)ItemUseOnFieldCB_Itemfinder; SetUpItemUseOnFieldCallback(var); } diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c index e9ca3a9f9..6c7c8b391 100644 --- a/src/field/safari_zone.c +++ b/src/field/safari_zone.c @@ -56,7 +56,7 @@ void ResetSafariZoneFlag(void) void EnterSafariMode(void) { - IncrementGameStat(0x11); + IncrementGameStat(GAME_STAT_ENTERED_SAFARI_ZONE); SetSafariZoneFlag(); ClearAllPokeblockFeeders(); gNumSafariBalls = 30; diff --git a/src/field/shop.c b/src/field/shop.c index 5a47b033b..beed50a41 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -657,7 +657,7 @@ static void Shop_DoPremierBallCheck(u8 taskId) static void Shop_DoItemTransaction(u8 taskId) { - IncrementGameStat(0x26); + IncrementGameStat(GAME_STAT_SHOPPED); RemoveMoney(&gSaveBlock1.money, gMartTotalCost); PlaySE(SE_REGI); UpdateMoneyWindow(gSaveBlock1.money, 0, 0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 87597eb6a..110351016 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -345,7 +345,7 @@ static u8 StartMenu_PokedexCallback(void) { if (!gPaletteFade.active) { - IncrementGameStat(0x29); + IncrementGameStat(GAME_STAT_CHECKED_POKEDEX); PlayRainSoundEffect(); SetMainCallback2(CB2_InitPokedex); return 1; @@ -666,7 +666,7 @@ static u8 SaveDialogCB_DoSave(void) { u8 saveStatus; - IncrementGameStat(0); + IncrementGameStat(GAME_STAT_SAVED_GAME); if (gDifferentSaveFile == TRUE) { saveStatus = Save_WriteData(SAVE_OVERWRITE_DIFFERENT_FILE); diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 4bf83cad8..79542422e 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -4254,7 +4254,7 @@ void FishingWildEncounter(u8 rod) gWildMonHeaders[GetCurrentMapWildMonHeader()].fishingMonsInfo, rod); } - IncrementGameStat(12); + IncrementGameStat(GAME_STAT_FISHING_CAPTURES); sub_80BEA50(species); BattleSetup_StartWildBattle(); } diff --git a/src/rom6.c b/src/rom6.c index e71484b0a..62fbc987c 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -142,7 +142,7 @@ int FldEff_RockSmash(void) gTasks[taskId].data[8] = (u32)sub_810B58C >> 16; gTasks[taskId].data[9] = (u32)sub_810B58C; - IncrementGameStat(0x13); + IncrementGameStat(GAME_STAT_USED_ROCK_SMASH); return 0; } diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index b59d02939..0a7e14e4e 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -2567,9 +2567,9 @@ static void sub_8050954(void) if (Blender_PrintBlendingResults()) { if (gInGameOpponentsNo == 0) - IncrementGameStat(34); + IncrementGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS); else - IncrementGameStat(33); + IncrementGameStat(GAME_STAT_POKEBLOCKS); gBerryBlenderData->field_6F++; } break; diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c index 931ec0d4d..3ba325574 100644 --- a/src/scene/evolution_scene.c +++ b/src/scene/evolution_scene.c @@ -649,7 +649,7 @@ static void Task_EvolutionScene(u8 taskID) EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); - IncrementGameStat(14); + IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); } break; case 14: // check if it wants to learn a new move @@ -991,7 +991,7 @@ static void Task_TradeEvolutionScene(u8 taskID) EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2); GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3); - IncrementGameStat(14); + IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); } break; case 13: -- cgit v1.2.3 From 91cfb6a564f73f02eb57792f8a0f4aa82e1867d1 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 16 Jan 2018 22:25:35 -0600 Subject: add debug ifdefs --- src/battle/battle_2.c | 7964 ++++++++++++++++++++++++++++++ src/battle/battle_ai.c | 209 + src/battle/battle_interface.c | 669 ++- src/battle/battle_records.c | 29 +- src/debug/kagaya_debug_menu.c | 420 ++ src/debug/nakamura_debug_menu.c | 5031 +++++++++++++++++++ src/debug/nohara_debug_menu.c | 2316 +++++++++ src/debug/taya_debug_window.c | 2122 ++++++++ src/debug/tomomichi_debug_menu.c | 8643 +++++++++++++++++++++++++++++++++ src/debug/watanabe_debug_menu.c | 9846 ++++++++++++++++++++++++++++++++++++++ src/engine/cable_club.c | 4 + src/engine/clock.c | 3 +- src/engine/link.c | 141 + src/engine/rtc.c | 29 + src/engine/save.c | 77 + src/engine/sprite.c | 14 + src/engine/task.c | 10 +- src/engine/trainer_card.c | 97 +- src/field/berry.c | 521 ++ src/field/bike.c | 21 + src/field/choose_party.c | 101 + src/field/decoration_inventory.c | 11 + src/field/field_control_avatar.c | 472 +- src/field/field_map_obj.c | 515 ++ src/field/field_player_avatar.c | 100 +- src/field/mauville_man.c | 81 + src/field/overworld.c | 95 + src/field/party_menu.c | 14 +- src/field/pokeblock.c | 46 +- src/field/roamer.c | 19 + src/field/slot_machine.c | 1237 ++++- src/field/start_menu.c | 303 ++ src/field/wild_encounter.c | 31 + src/pokemon/mail.c | 1866 +++++++- src/pokemon/pokemon_1.c | 322 ++ src/rom3.c | 14 + src/rom6.c | 18 +- src/roulette.c | 5 +- src/scene/cable_car.c | 218 + src/scene/new_game.c | 77 + src/scene/title_screen.c | 17 + 41 files changed, 43665 insertions(+), 63 deletions(-) create mode 100644 src/debug/kagaya_debug_menu.c create mode 100644 src/debug/nakamura_debug_menu.c create mode 100644 src/debug/nohara_debug_menu.c create mode 100644 src/debug/taya_debug_window.c create mode 100644 src/debug/tomomichi_debug_menu.c create mode 100644 src/debug/watanabe_debug_menu.c (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 990535b4e..5212f5bdc 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -203,6 +203,231 @@ void sub_800E7C4(void) } } +#if DEBUG +__attribute__((naked)) +void InitBattle(void) +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " bl SetHBlankCallback\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x13\n" + " ldr r2, ._10\n" + " mov r0, sp\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldr r0, ._10 + 4\n" + " strh r4, [r0]\n" + " sub r0, r0, #0xc\n" + " mov r2, #0xf0\n" + " strh r2, [r0]\n" + " add r0, r0, #0x4\n" + " ldr r3, ._10 + 8\n" + " add r1, r3, #0\n" + " strh r1, [r0]\n" + " add r0, r0, #0x4\n" + " strh r4, [r0]\n" + " add r0, r0, #0x2\n" + " strh r4, [r0]\n" + " ldr r0, ._10 + 12\n" + " strh r2, [r0]\n" + " ldr r0, ._10 + 16\n" + " strh r1, [r0]\n" + " bl dp12_8087EA4\n" + " ldr r0, ._10 + 20\n" + " mov r3, #0xf0\n" + " mov r5, #0xf0\n" + " lsl r5, r5, #0x3\n" + " add r2, r0, r5\n" + " mov r1, #0x4f\n" + "._5:\n" + " strh r3, [r0]\n" + " strh r3, [r2]\n" + " add r2, r2, #0x2\n" + " add r0, r0, #0x2\n" + " sub r1, r1, #0x1\n" + " cmp r1, #0\n" + " bge ._5 @cond_branch\n" + " mov r1, #0x50\n" + " ldr r4, ._10 + 24\n" + " ldr r0, ._10 + 20\n" + " ldr r3, ._10 + 28\n" + " mov r5, #0x82\n" + " lsl r5, r5, #0x4\n" + " add r2, r0, r5\n" + " add r0, r0, #0xa0\n" + "._6:\n" + " strh r3, [r0]\n" + " strh r3, [r2]\n" + " add r2, r2, #0x2\n" + " add r0, r0, #0x2\n" + " add r1, r1, #0x1\n" + " cmp r1, #0x9f\n" + " ble ._6 @cond_branch\n" + " ldr r0, [r4]\n" + " ldr r1, [r4, #0x4]\n" + " ldr r2, [r4, #0x8]\n" + " bl sub_80895F8\n" + " ldr r4, ._10 + 32\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " bl ResetPaletteFade\n" + " ldr r0, ._10 + 36\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 40\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 44\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 48\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 52\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 56\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 60\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 64\n" + " strh r1, [r0]\n" + " ldr r0, ._10 + 68\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._7 @cond_branch\n" + " bl GetBattleTerrain\n" + " ldr r1, ._10 + 72\n" + " strb r0, [r1]\n" + "._7:\n" + " ldr r0, ._10 + 76\n" + " add r1, r4, #0\n" + " bl InitWindowFromConfig\n" + " ldr r0, ._10 + 80\n" + " ldr r1, ._10 + 84\n" + " bl InitWindowFromConfig\n" + " ldr r0, ._10 + 88\n" + " ldr r1, ._10 + 92\n" + " bl InitWindowFromConfig\n" + " bl sub_800D6D4\n" + " bl sub_800DAB8\n" + " bl ResetSpriteData\n" + " bl ResetTasks\n" + " bl sub_800E23C\n" + " bl FreeAllSpritePalettes\n" + " ldr r1, ._10 + 96\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r0, ._10 + 100\n" + " bl SetVBlankCallback\n" + " bl setup_poochyena_battle\n" + " ldr r0, ._10 + 104\n" + " ldrh r1, [r0]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._8 @cond_branch\n" + " ldr r0, ._10 + 108\n" + " bl SetMainCallback2\n" + " b ._9\n" + "._11:\n" + " .align 2, 0\n" + "._10:\n" + " .word 0x5006000\n" + " .word 0x400004c\n" + " .word 0x5051\n" + " .word gUnknown_030042C4\n" + " .word gUnknown_03004240\n" + " .word gUnknown_03004DE0\n" + " .word gUnknown_081F9674\n" + " .word 0xff10\n" + " .word gWindowConfig_81E6C58\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + " .word gUnknown_02023A14+0x50\n" + " .word gBattleTerrain\n" + " .word gUnknown_03004210\n" + " .word gUnknown_030041D0\n" + " .word gWindowConfig_81E71D0\n" + " .word gUnknown_03004250\n" + " .word gWindowConfig_81E71EC\n" + " .word gReservedSpritePaletteCount\n" + " .word sub_800FCFC+1\n" + " .word gBattleTypeFlags\n" + " .word sub_800F298+1\n" + "._8:\n" + " ldr r0, ._15\n" + " bl SetMainCallback2\n" + "._9:\n" + " ldr r0, ._15 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._13 @cond_branch\n" + " ldr r0, ._15 + 8\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._13 @cond_branch\n" + " ldr r0, ._15 + 12\n" + " ldr r1, ._15 + 16\n" + " ldrh r1, [r1]\n" + " bl CreateNPCTrainerParty\n" + " bl SetWildMonHeldItem\n" + "._13:\n" + " ldr r0, ._15 + 20\n" + " ldr r1, ._15 + 24\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " mov r2, #0x2\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + " ldr r4, ._15 + 28\n" + " mov r3, #0xfa\n" + " lsl r3, r3, #0x1\n" + " add r5, r4, r3\n" + "._14:\n" + " add r0, r4, #0\n" + " mov r1, #0x3\n" + " bl AdjustFriendship\n" + " add r4, r4, #0x64\n" + " cmp r4, r5\n" + " ble ._14 @cond_branch\n" + " mov r1, #0x0\n" + " ldr r0, ._15 + 32\n" + " strb r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word sub_800EC9C+1\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_02023A14+0x50\n" + " .word gEnemyParty\n" + " .word gTrainerBattleOpponent\n" + " .word gMain\n" + " .word 0x43d\n" + " .word gPlayerParty\n" + " .word gBattleCommunication\n" + "\n" + ); +} +#else void InitBattle(void) { s32 i; @@ -271,6 +496,7 @@ void InitBattle(void) AdjustFriendship(&gPlayerParty[i], 3); gBattleCommunication[0] = 0; } +#endif void sub_800E9EC(void) { @@ -379,6 +605,476 @@ void shedinja_something(struct Pokemon *pkmn) } } +#if DEBUG +__attribute__((naked)) +void sub_800EC9C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl GetMultiplayerId\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._55\n" + " ldr r1, ._55 + 4\n" + " add r0, r0, r1\n" + " strb r4, [r0]\n" + " mov r0, #0x1\n" + " add r5, r4, #0\n" + " eor r5, r5, r0\n" + " ldr r0, ._55 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x9\n" + " bls ._53 @cond_branch\n" + " b ._140\n" + "._53:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._55 + 12\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._56:\n" + " .align 2, 0\n" + "._55:\n" + " .word +0x2000000\n" + " .word 0x160cb\n" + " .word gBattleCommunication\n" + " .word ._57\n" + "._57:\n" + " .word ._58\n" + " .word ._59\n" + " .word ._60\n" + " .word ._61\n" + " .word ._62\n" + " .word ._63\n" + " .word ._64\n" + " .word ._65\n" + " .word ._66\n" + " .word ._67\n" + "._58:\n" + " ldr r2, ._76\n" + " ldrh r1, [r2]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " ldr r0, ._76 + 4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._69 @cond_branch\n" + " b ._140\n" + "._69:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._71 @cond_branch\n" + " b ._140\n" + "._71:\n" + " ldr r1, ._76 + 8\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " strb r0, [r1, #0x1]\n" + " bl sub_800E9EC\n" + " bl sub_800EAAC\n" + " ldr r0, ._76 + 12\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._73 @cond_branch\n" + " mov r3, #0x0\n" + " ldr r1, ._76 + 16\n" + " ldr r0, ._76 + 20\n" + "._74:\n" + " strh r3, [r0, #0x18]\n" + " str r1, [r0, #0x14]\n" + " add r0, r0, #0x1c\n" + " add r3, r3, #0x1\n" + " cmp r3, #0x1\n" + " ble ._74 @cond_branch\n" + "._73:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._76 + 8\n" + " mov r2, #0x20\n" + " bl SendBlock\n" + " ldr r1, ._76 + 24\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " b ._140\n" + "._77:\n" + " .align 2, 0\n" + "._76:\n" + " .word gBattleTypeFlags\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word +0x2000000\n" + " .word gUnknown_02023A14+0x50\n" + " .word 0x2211\n" + " .word gLinkPlayers\n" + " .word gBattleCommunication\n" + "._68:\n" + " mov r0, #0x4\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r1, ._79\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " bl sub_800EB08\n" + " b ._140\n" + "._80:\n" + " .align 2, 0\n" + "._79:\n" + " .word gBattleCommunication\n" + "._59:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " beq ._81 @cond_branch\n" + " b ._140\n" + "._81:\n" + " bl ResetBlockReceivedFlags\n" + " mov r3, #0x0\n" + " ldr r0, ._86\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._83 @cond_branch\n" + " cmp r4, #0\n" + " bne ._84 @cond_branch\n" + " ldr r0, ._86 + 4\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._85\n" + "._87:\n" + " .align 2, 0\n" + "._86:\n" + " .word gBlockRecvBuffer\n" + " .word gBattleTypeFlags\n" + "._84:\n" + " ldr r0, ._92\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._85:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r3, r3, #0x1\n" + "._83:\n" + " lsl r7, r5, #0x8\n" + " cmp r3, #0\n" + " bne ._94 @cond_branch\n" + " ldr r0, ._92 + 4\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x1\n" + " add r2, r0, r1\n" + " ldrh r1, [r0]\n" + " add r6, r0, #0\n" + " ldrh r2, [r2]\n" + " cmp r1, r2\n" + " bne ._89 @cond_branch\n" + " cmp r4, #0\n" + " bne ._90 @cond_branch\n" + " ldr r0, ._92\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._91\n" + "._93:\n" + " .align 2, 0\n" + "._92:\n" + " .word gBattleTypeFlags\n" + " .word gBlockRecvBuffer\n" + "._90:\n" + " ldr r0, ._96\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._91:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r3, r3, #0x1\n" + "._89:\n" + " lsl r7, r5, #0x8\n" + " cmp r3, #0\n" + " bne ._94 @cond_branch\n" + " ldrh r1, [r6]\n" + " ldr r0, ._96 + 4\n" + " ldr r2, ._96\n" + " b ._95\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word gBattleTypeFlags\n" + " .word 0x101\n" + "._100:\n" + " add r3, r3, #0x1\n" + " cmp r3, #0x1\n" + " bgt ._98 @cond_branch\n" + " lsl r0, r3, #0x8\n" + " add r0, r0, r6\n" + " ldrh r1, [r0]\n" + " ldr r0, ._103\n" + "._95:\n" + " cmp r1, r0\n" + " bls ._100 @cond_branch\n" + " cmp r3, r4\n" + " beq ._100 @cond_branch\n" + "._98:\n" + " cmp r3, #0x2\n" + " bne ._101 @cond_branch\n" + " ldrh r0, [r2]\n" + " mov r1, #0xc\n" + " b ._102\n" + "._104:\n" + " .align 2, 0\n" + "._103:\n" + " .word 0x101\n" + "._101:\n" + " ldrh r0, [r2]\n" + " mov r1, #0x8\n" + "._102:\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + "._94:\n" + " bl sub_800EB08\n" + " ldr r0, ._106\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._106 + 4\n" + " lsl r2, r0, #0x2\n" + " add r2, r2, r0\n" + " lsl r2, r2, #0x3\n" + " add r2, r2, r1\n" + " mov r1, #0x0\n" + " mov r0, #0x87\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r2, #0xa]\n" + " mov r0, #0x5a\n" + " strh r0, [r2, #0xc]\n" + " strh r1, [r2, #0x12]\n" + " ldr r0, ._106 + 8\n" + " ldrb r1, [r0, #0x2]\n" + " ldrb r0, [r0, #0x3]\n" + " lsl r0, r0, #0x8\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xe]\n" + " ldr r0, ._106 + 12\n" + " add r0, r0, #0x2\n" + " add r0, r7, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r2, #0x10]\n" + " b ._129\n" + "._107:\n" + " .align 2, 0\n" + "._106:\n" + " .word sub_800DE30+1\n" + " .word gTasks\n" + " .word +0x2000000\n" + " .word gBlockRecvBuffer\n" + "._60:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._108 @cond_branch\n" + " b ._140\n" + "._108:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._111\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._129\n" + "._112:\n" + " .align 2, 0\n" + "._111:\n" + " .word gPlayerParty\n" + "._61:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " beq ._113 @cond_branch\n" + " b ._140\n" + "._113:\n" + " bl ResetBlockReceivedFlags\n" + " ldr r0, ._116\n" + " lsl r1, r5, #0x8\n" + " ldr r2, ._116 + 4\n" + " add r1, r1, r2\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._129\n" + "._117:\n" + " .align 2, 0\n" + "._116:\n" + " .word gEnemyParty\n" + " .word gBlockRecvBuffer\n" + "._62:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._118 @cond_branch\n" + " b ._140\n" + "._118:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._121\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._129\n" + "._122:\n" + " .align 2, 0\n" + "._121:\n" + " .word gPlayerParty+0xc8\n" + "._63:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " beq ._123 @cond_branch\n" + " b ._140\n" + "._123:\n" + " bl ResetBlockReceivedFlags\n" + " ldr r0, ._126\n" + " lsl r1, r5, #0x8\n" + " ldr r2, ._126 + 4\n" + " add r1, r1, r2\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._129\n" + "._127:\n" + " .align 2, 0\n" + "._126:\n" + " .word gEnemyParty+0xc8\n" + " .word gBlockRecvBuffer\n" + "._64:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._130\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._129\n" + "._131:\n" + " .align 2, 0\n" + "._130:\n" + " .word gPlayerParty+0x190\n" + "._65:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0x3\n" + " and r1, r1, r0\n" + " cmp r1, #0x3\n" + " bne ._140 @cond_branch\n" + " bl ResetBlockReceivedFlags\n" + " ldr r4, ._134\n" + " lsl r1, r5, #0x8\n" + " ldr r0, ._134 + 4\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r1, ._134 + 8\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " ldr r1, ._134 + 12\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " sub r0, r0, #0xc8\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " sub r0, r0, #0x64\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " bl shedinja_something\n" + "._129:\n" + " ldr r1, ._134 + 16\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._140\n" + "._135:\n" + " .align 2, 0\n" + "._134:\n" + " .word gEnemyParty+0x190\n" + " .word gBlockRecvBuffer\n" + " .word 0xfffffe70\n" + " .word 0xfffffed4\n" + " .word gBattleCommunication\n" + "._66:\n" + " bl sub_800B950\n" + " ldr r0, ._137\n" + " ldrb r1, [r0]\n" + " add r1, r1, #0x1\n" + " mov r2, #0x0\n" + " strb r1, [r0]\n" + " strb r2, [r0, #0x1]\n" + " strb r2, [r0, #0x2]\n" + " b ._140\n" + "._138:\n" + " .align 2, 0\n" + "._137:\n" + " .word gBattleCommunication\n" + "._67:\n" + " ldr r0, ._141\n" + " add r1, r0, #1\n" + " bl battle_load_something\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " ldr r2, ._141 + 4\n" + " ldr r1, ._141 + 8\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " ldr r0, ._141 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._141 + 16\n" + " bl SetMainCallback2\n" + " ldr r3, ._141 + 20\n" + " ldrh r2, [r3]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " ldr r1, ._141 + 24\n" + " mov r4, #0x80\n" + " lsl r4, r4, #0x4\n" + " add r0, r4, #0\n" + " strh r0, [r1]\n" + " mov r0, #0x20\n" + " orr r0, r0, r2\n" + " strh r0, [r3]\n" + "._140:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word gUnknown_02024D1F\n" + " .word gPreBattleCallback1\n" + " .word gMain\n" + " .word debug_sub_80139E4+1\n" + " .word sub_800F808+1\n" + " .word gBattleTypeFlags\n" + " .word gTrainerBattleOpponent\n" + "\n" + ); +} +#else void sub_800EC9C(void) { u8 playerId; @@ -535,6 +1231,7 @@ void sub_800EC9C(void) break; } } +#endif void sub_800F02C(void) { @@ -561,6 +1258,236 @@ void sub_800F02C(void) memcpy(gSharedMem, gUnknown_02023A00, 0x60); } +#ifdef DEBUG +__attribute__((naked)) +void sub_800F104() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " bl GetMultiplayerId\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r0, ._151\n" + " ldr r2, ._151 + 4\n" + " add r1, r0, r2\n" + " strb r6, [r1]\n" + " ldr r1, ._151 + 8\n" + " add r1, r1, r0\n" + " mov r9, r1\n" + " sub r2, r2, #0x9\n" + " add r2, r2, r0\n" + " mov r8, r2\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r2, ._151 + 12\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x1\n" + " beq ._147 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._148 @cond_branch\n" + " cmp r0, #0\n" + " beq ._149 @cond_branch\n" + " b ._183\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word +0x2000000\n" + " .word 0x160cb\n" + " .word 0x160c4\n" + " .word gBattleCommunication\n" + "._148:\n" + " cmp r0, #0x2\n" + " bne ._153 @cond_branch\n" + " b ._154\n" + "._153:\n" + " cmp r0, #0x3\n" + " bne ._155 @cond_branch\n" + " b ._156\n" + "._155:\n" + " b ._183\n" + "._149:\n" + " ldr r0, ._165\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._158 @cond_branch\n" + " b ._183\n" + "._158:\n" + " ldr r0, ._165 + 4\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._160 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r1, ._165 + 8\n" + " ldr r0, ._165 + 12\n" + "._161:\n" + " strh r4, [r0, #0x18]\n" + " str r1, [r0, #0x14]\n" + " add r0, r0, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._161 @cond_branch\n" + "._160:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._162 @cond_branch\n" + " b ._183\n" + "._162:\n" + " bl sub_800F02C\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._165 + 16\n" + " mov r2, #0x60\n" + " bl SendBlock\n" + " ldr r1, ._165 + 20\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._183\n" + "._166:\n" + " .align 2, 0\n" + "._165:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gUnknown_02023A14+0x50\n" + " .word 0x2211\n" + " .word gLinkPlayers\n" + " .word +0x2000000\n" + " .word gBattleCommunication\n" + "._147:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " bne ._183 @cond_branch\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " lsl r0, r6, #0x3\n" + " sub r0, r0, r6\n" + " lsl r5, r0, #0x2\n" + " mov r7, #0x0\n" + "._175:\n" + " cmp r4, r6\n" + " beq ._174 @cond_branch\n" + " ldr r2, ._172\n" + " add r0, r7, r2\n" + " ldrh r1, [r0, #0x18]\n" + " mov r3, #0x1\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._169 @cond_branch\n" + " add r0, r5, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._170 @cond_branch\n" + " b ._174\n" + "._173:\n" + " .align 2, 0\n" + "._172:\n" + " .word gLinkPlayers\n" + "._169:\n" + " add r0, r5, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._174 @cond_branch\n" + "._170:\n" + " lsl r1, r4, #0x8\n" + " ldr r0, ._177\n" + " add r1, r1, r0\n" + " ldr r0, ._177 + 4\n" + " mov r2, #0x60\n" + " bl gScriptFuncs_End+0x5bc4\n" + "._174:\n" + " add r7, r7, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._175 @cond_branch\n" + " ldr r1, ._177 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._177 + 12\n" + " ldr r0, [r1, #0x8]\n" + " mov r2, r9\n" + " str r0, [r2]\n" + " ldr r0, ._177 + 16\n" + " ldrh r0, [r0]\n" + " mov r2, r8\n" + " strh r0, [r2]\n" + " ldr r0, ._177 + 20\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x5\n" + " mov r1, #0x0\n" + " bl OpenPartyMenu\n" + " b ._183\n" + "._178:\n" + " .align 2, 0\n" + "._177:\n" + " .word gBlockRecvBuffer\n" + " .word gUnknown_02023A00\n" + " .word gBattleCommunication\n" + " .word gMain\n" + " .word gBattleTypeFlags\n" + " .word sub_800F104+1\n" + "._154:\n" + " ldr r0, ._181\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._183 @cond_branch\n" + " mov r0, #0x3\n" + " strb r0, [r2]\n" + " bl sub_800832C\n" + " b ._183\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gPaletteFade\n" + "._156:\n" + " ldr r0, ._184\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._183 @cond_branch\n" + " ldr r1, ._184 + 4\n" + " mov r2, r8\n" + " ldrh r0, [r2]\n" + " strh r0, [r1]\n" + " ldr r1, ._184 + 8\n" + " mov r2, r9\n" + " ldr r0, [r2]\n" + " str r0, [r1, #0x8]\n" + " ldr r0, ._184 + 12\n" + " bl SetMainCallback2\n" + "._183:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._185:\n" + " .align 2, 0\n" + "._184:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gBattleTypeFlags\n" + " .word gMain\n" + " .word InitBattle+1\n" + "\n" + ); +} +#else void sub_800F104(void) { u8 playerId; @@ -625,7 +1552,774 @@ void sub_800F104(void) break; } } +#endif +#ifdef DEBUG +__attribute__((naked)) +void sub_800F298() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " bl GetMultiplayerId\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r0, ._188\n" + " ldr r1, ._188 + 4\n" + " add r0, r0, r1\n" + " strb r6, [r0]\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r0, ._188 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x7\n" + " bls ._186 @cond_branch\n" + " b ._352\n" + "._186:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._188 + 12\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._189:\n" + " .align 2, 0\n" + "._188:\n" + " .word +0x2000000\n" + " .word 0x160cb\n" + " .word gBattleCommunication\n" + " .word ._190\n" + "._190:\n" + " .word ._191\n" + " .word ._192\n" + " .word ._193\n" + " .word ._194\n" + " .word ._195\n" + " .word ._196\n" + " .word ._197\n" + " .word ._198\n" + "._191:\n" + " ldr r0, ._206\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._199 @cond_branch\n" + " b ._352\n" + "._199:\n" + " ldr r0, ._206 + 4\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._201 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r1, ._206 + 8\n" + " ldr r0, ._206 + 12\n" + "._202:\n" + " strh r4, [r0, #0x18]\n" + " str r1, [r0, #0x14]\n" + " add r0, r0, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._202 @cond_branch\n" + "._201:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._203 @cond_branch\n" + " b ._352\n" + "._203:\n" + " ldr r4, ._206 + 16\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + " strb r0, [r4, #0x1]\n" + " bl sub_800E9EC\n" + " bl sub_800EAAC\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r4, #0\n" + " mov r2, #0x20\n" + " bl SendBlock\n" + " b ._300\n" + "._207:\n" + " .align 2, 0\n" + "._206:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gUnknown_02023A14+0x50\n" + " .word 0x2211\n" + " .word gLinkPlayers\n" + " .word +0x2000000\n" + "._192:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " beq ._208 @cond_branch\n" + " b ._352\n" + "._208:\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " ldr r0, ._213\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._210 @cond_branch\n" + " cmp r6, #0\n" + " bne ._211 @cond_branch\n" + " ldr r0, ._213 + 4\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._212\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gBlockRecvBuffer\n" + " .word gBattleTypeFlags\n" + "._211:\n" + " ldr r0, ._221\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._212:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r4, r4, #0x1\n" + "._210:\n" + " cmp r4, #0\n" + " bne ._223 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r1, ._221 + 4\n" + " add r5, r1, #0\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + "._217:\n" + " add r1, r1, r3\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x3\n" + " bgt ._216 @cond_branch\n" + " ldrh r0, [r5]\n" + " ldrh r7, [r1]\n" + " cmp r0, r7\n" + " beq ._217 @cond_branch\n" + "._216:\n" + " cmp r2, #0x4\n" + " bne ._218 @cond_branch\n" + " cmp r6, #0\n" + " bne ._219 @cond_branch\n" + " ldr r0, ._221\n" + " ldrh r1, [r0]\n" + " mov r2, #0xc\n" + " b ._220\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word gBattleTypeFlags\n" + " .word gBlockRecvBuffer\n" + "._219:\n" + " ldr r0, ._233\n" + " ldrh r1, [r0]\n" + " mov r2, #0x8\n" + "._220:\n" + " orr r1, r1, r2\n" + " strh r1, [r0]\n" + " add r4, r4, #0x1\n" + "._218:\n" + " cmp r4, #0\n" + " bne ._223 @cond_branch\n" + " ldr r0, ._233 + 4\n" + " ldrh r2, [r0]\n" + " ldr r1, ._233 + 8\n" + " add r3, r0, #0\n" + " ldr r5, ._233\n" + " cmp r2, r1\n" + " beq ._224 @cond_branch\n" + "._230:\n" + " lsl r0, r4, #0x8\n" + " add r0, r0, r3\n" + " ldrh r0, [r0]\n" + " ldr r1, ._233 + 8\n" + " cmp r0, r1\n" + " bls ._225 @cond_branch\n" + " cmp r4, r6\n" + " bne ._227 @cond_branch\n" + "._225:\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " bgt ._227 @cond_branch\n" + " lsl r0, r4, #0x8\n" + " add r0, r0, r3\n" + " ldrh r0, [r0]\n" + " cmp r0, r1\n" + " bne ._230 @cond_branch\n" + "._224:\n" + " cmp r4, r6\n" + " beq ._230 @cond_branch\n" + " cmp r4, r6\n" + " bge ._230 @cond_branch\n" + "._227:\n" + " cmp r4, #0x4\n" + " bne ._231 @cond_branch\n" + " ldrh r0, [r5]\n" + " mov r1, #0xc\n" + " b ._232\n" + "._234:\n" + " .align 2, 0\n" + "._233:\n" + " .word gBattleTypeFlags\n" + " .word gBlockRecvBuffer\n" + " .word 0x101\n" + "._231:\n" + " ldrh r0, [r5]\n" + " mov r1, #0x8\n" + "._232:\n" + " orr r0, r0, r1\n" + " strh r0, [r5]\n" + "._223:\n" + " bl sub_800EB08\n" + " ldr r0, ._239\n" + " ldr r1, ._239 + 4\n" + " mov r2, #0x96\n" + " lsl r2, r2, #0x1\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r0, ._239 + 8\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._239 + 12\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " mov r2, #0x0\n" + " mov r0, #0x87\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r1, #0xa]\n" + " mov r0, #0x5a\n" + " strh r0, [r1, #0xc]\n" + " strh r2, [r1, #0x12]\n" + " strh r2, [r1, #0xe]\n" + " strh r2, [r1, #0x10]\n" + " add r2, r1, #0\n" + " ldr r0, ._239 + 16\n" + " add r3, r0, #2\n" + " ldr r6, ._239 + 20\n" + " mov r5, #0x3f\n" + " mov r7, #0x80\n" + " lsl r7, r7, #0x1\n" + " mov r4, #0x3\n" + "._247:\n" + " ldrh r0, [r6, #0x18]\n" + " cmp r0, #0x1\n" + " beq ._235 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._236 @cond_branch\n" + " cmp r0, #0\n" + " beq ._237 @cond_branch\n" + " b ._246\n" + "._240:\n" + " .align 2, 0\n" + "._239:\n" + " .word +0x201d000\n" + " .word gPlayerParty\n" + " .word sub_800DE30+1\n" + " .word gTasks\n" + " .word gBlockRecvBuffer\n" + " .word gLinkPlayers\n" + "._236:\n" + " cmp r0, #0x2\n" + " beq ._241 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._242 @cond_branch\n" + " b ._246\n" + "._237:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " b ._244\n" + "._235:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " b ._245\n" + "._241:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " lsl r1, r1, #0x6\n" + "._244:\n" + " ldrh r0, [r2, #0xe]\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xe]\n" + " b ._246\n" + "._242:\n" + " ldrh r0, [r3]\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " lsl r1, r1, #0x6\n" + "._245:\n" + " ldrh r0, [r2, #0x10]\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0x10]\n" + "._246:\n" + " add r3, r3, r7\n" + " add r6, r6, #0x1c\n" + " sub r4, r4, #0x1\n" + " cmp r4, #0\n" + " bge ._247 @cond_branch\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " ldr r1, ._251\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._193:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._248 @cond_branch\n" + " b ._352\n" + "._248:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._251 + 4\n" + " mov r2, #0xc8\n" + " bl SendBlock\n" + " b ._300\n" + "._252:\n" + " .align 2, 0\n" + "._251:\n" + " .word gBattleCommunication\n" + " .word +0x201d000\n" + "._194:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " beq ._253 @cond_branch\n" + " b ._352\n" + "._253:\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " lsl r0, r6, #0x3\n" + " sub r0, r0, r6\n" + " lsl r0, r0, #0x2\n" + " mov r8, r0\n" + " ldr r5, ._260\n" + " mov r7, #0x0\n" + "._294:\n" + " cmp r4, r6\n" + " bne ._255 @cond_branch\n" + " ldr r0, ._260 + 4\n" + " add r0, r7, r0\n" + " ldrh r0, [r0, #0x18]\n" + " cmp r0, #0x2\n" + " bgt ._256 @cond_branch\n" + " cmp r0, #0x1\n" + " bge ._257 @cond_branch\n" + " cmp r0, #0\n" + " beq ._258 @cond_branch\n" + " b ._291\n" + "._261:\n" + " .align 2, 0\n" + "._260:\n" + " .word gBlockRecvBuffer\n" + " .word gLinkPlayers\n" + "._256:\n" + " cmp r0, #0x3\n" + " bne ._291 @cond_branch\n" + "._258:\n" + " ldr r0, ._264\n" + " b ._283\n" + "._265:\n" + " .align 2, 0\n" + "._264:\n" + " .word gPlayerParty\n" + "._257:\n" + " ldr r0, ._267\n" + " b ._283\n" + "._268:\n" + " .align 2, 0\n" + "._267:\n" + " .word gPlayerParty+0x12c\n" + "._255:\n" + " ldr r2, ._272\n" + " add r0, r7, r2\n" + " ldrh r1, [r0, #0x18]\n" + " mov r3, #0x1\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._269 @cond_branch\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._270 @cond_branch\n" + " b ._274\n" + "._273:\n" + " .align 2, 0\n" + "._272:\n" + " .word gLinkPlayers\n" + "._269:\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._274 @cond_branch\n" + "._270:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._275 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._276 @cond_branch\n" + " cmp r2, #0\n" + " beq ._277 @cond_branch\n" + " b ._291\n" + "._275:\n" + " cmp r2, #0x3\n" + " bne ._291 @cond_branch\n" + "._277:\n" + " ldr r0, ._281\n" + " b ._283\n" + "._282:\n" + " .align 2, 0\n" + "._281:\n" + " .word gPlayerParty\n" + "._276:\n" + " ldr r0, ._284\n" + " b ._283\n" + "._285:\n" + " .align 2, 0\n" + "._284:\n" + " .word gPlayerParty+0x12c\n" + "._274:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._286 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._287 @cond_branch\n" + " cmp r2, #0\n" + " beq ._288 @cond_branch\n" + " b ._291\n" + "._286:\n" + " cmp r2, #0x3\n" + " bne ._291 @cond_branch\n" + "._288:\n" + " ldr r0, ._292\n" + "._283:\n" + " add r1, r5, #0\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._291\n" + "._293:\n" + " .align 2, 0\n" + "._292:\n" + " .word gEnemyParty\n" + "._287:\n" + " ldr r0, ._296\n" + " add r1, r5, #0\n" + " mov r2, #0xc8\n" + " bl gScriptFuncs_End+0x5bc4\n" + "._291:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " add r5, r5, r0\n" + " add r7, r7, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._294 @cond_branch\n" + " b ._300\n" + "._297:\n" + " .align 2, 0\n" + "._296:\n" + " .word gEnemyParty+0x12c\n" + "._195:\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._298 @cond_branch\n" + " b ._352\n" + "._298:\n" + " bl bitmask_all_link_players_but_self\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._301\n" + " mov r2, #0x64\n" + " bl SendBlock\n" + " b ._300\n" + "._302:\n" + " .align 2, 0\n" + "._301:\n" + " .word +0x201d0c8\n" + "._196:\n" + " bl GetBlockReceivedStatus\n" + " mov r1, #0xf\n" + " and r1, r1, r0\n" + " cmp r1, #0xf\n" + " beq ._303 @cond_branch\n" + " b ._352\n" + "._303:\n" + " bl ResetBlockReceivedFlags\n" + " mov r4, #0x0\n" + " lsl r0, r6, #0x3\n" + " sub r0, r0, r6\n" + " lsl r0, r0, #0x2\n" + " mov r8, r0\n" + " ldr r5, ._310\n" + " mov r7, #0x0\n" + "._344:\n" + " cmp r4, r6\n" + " bne ._305 @cond_branch\n" + " ldr r0, ._310 + 4\n" + " add r0, r7, r0\n" + " ldrh r0, [r0, #0x18]\n" + " cmp r0, #0x2\n" + " bgt ._306 @cond_branch\n" + " cmp r0, #0x1\n" + " bge ._307 @cond_branch\n" + " cmp r0, #0\n" + " beq ._308 @cond_branch\n" + " b ._341\n" + "._311:\n" + " .align 2, 0\n" + "._310:\n" + " .word gBlockRecvBuffer\n" + " .word gLinkPlayers\n" + "._306:\n" + " cmp r0, #0x3\n" + " bne ._341 @cond_branch\n" + "._308:\n" + " ldr r0, ._314\n" + " b ._333\n" + "._315:\n" + " .align 2, 0\n" + "._314:\n" + " .word gPlayerParty+0xc8\n" + "._307:\n" + " ldr r0, ._317\n" + " b ._333\n" + "._318:\n" + " .align 2, 0\n" + "._317:\n" + " .word gPlayerParty+0x1f4\n" + "._305:\n" + " ldr r2, ._322\n" + " add r0, r7, r2\n" + " ldrh r1, [r0, #0x18]\n" + " mov r3, #0x1\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._319 @cond_branch\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._320 @cond_branch\n" + " b ._324\n" + "._323:\n" + " .align 2, 0\n" + "._322:\n" + " .word gLinkPlayers\n" + "._319:\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " ldrh r1, [r0, #0x18]\n" + " add r0, r3, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._324 @cond_branch\n" + "._320:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._325 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._326 @cond_branch\n" + " cmp r2, #0\n" + " beq ._327 @cond_branch\n" + " b ._341\n" + "._325:\n" + " cmp r2, #0x3\n" + " bne ._341 @cond_branch\n" + "._327:\n" + " ldr r0, ._331\n" + " b ._333\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gPlayerParty+0xc8\n" + "._326:\n" + " ldr r0, ._334\n" + " b ._333\n" + "._335:\n" + " .align 2, 0\n" + "._334:\n" + " .word gPlayerParty+0x1f4\n" + "._324:\n" + " add r0, r7, r2\n" + " ldrh r2, [r0, #0x18]\n" + " cmp r2, #0x2\n" + " bgt ._336 @cond_branch\n" + " cmp r2, #0x1\n" + " bge ._337 @cond_branch\n" + " cmp r2, #0\n" + " beq ._338 @cond_branch\n" + " b ._341\n" + "._336:\n" + " cmp r2, #0x3\n" + " bne ._341 @cond_branch\n" + "._338:\n" + " ldr r0, ._342\n" + "._333:\n" + " add r1, r5, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + " b ._341\n" + "._343:\n" + " .align 2, 0\n" + "._342:\n" + " .word gEnemyParty+0xc8\n" + "._337:\n" + " ldr r0, ._346\n" + " add r1, r5, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + "._341:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " add r5, r5, r0\n" + " add r7, r7, #0x1c\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._344 @cond_branch\n" + " ldr r4, ._346 + 4\n" + " add r0, r4, #0\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc8\n" + " bl shedinja_something\n" + " mov r1, #0x96\n" + " lsl r1, r1, #0x1\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " mov r7, #0xc8\n" + " lsl r7, r7, #0x1\n" + " add r0, r4, r7\n" + " bl shedinja_something\n" + " mov r1, #0xfa\n" + " lsl r1, r1, #0x1\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " ldr r4, ._346 + 8\n" + " add r0, r4, #0\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " bl shedinja_something\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc8\n" + " bl shedinja_something\n" + " sub r7, r7, #0x64\n" + " add r0, r4, r7\n" + " bl shedinja_something\n" + " mov r1, #0xc8\n" + " lsl r1, r1, #0x1\n" + " add r0, r4, r1\n" + " bl shedinja_something\n" + " add r7, r7, #0xc8\n" + " add r0, r4, r7\n" + " bl shedinja_something\n" + "._300:\n" + " ldr r1, ._346 + 12\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._352\n" + "._347:\n" + " .align 2, 0\n" + "._346:\n" + " .word gEnemyParty+0x1f4\n" + " .word gPlayerParty\n" + " .word gEnemyParty\n" + " .word gBattleCommunication\n" + "._197:\n" + " bl sub_800B950\n" + " ldr r0, ._349\n" + " ldrb r1, [r0]\n" + " add r1, r1, #0x1\n" + " mov r2, #0x0\n" + " strb r1, [r0]\n" + " strb r2, [r0, #0x1]\n" + " strb r2, [r0, #0x2]\n" + " b ._352\n" + "._350:\n" + " .align 2, 0\n" + "._349:\n" + " .word gBattleCommunication\n" + "._198:\n" + " ldr r0, ._353\n" + " add r1, r0, #1\n" + " bl battle_load_something\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._352 @cond_branch\n" + " ldr r2, ._353 + 4\n" + " ldr r1, ._353 + 8\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " ldr r0, ._353 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._353 + 16\n" + " bl SetMainCallback2\n" + " ldr r3, ._353 + 20\n" + " ldrh r2, [r3]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._352 @cond_branch\n" + " ldr r1, ._353 + 24\n" + " mov r4, #0x80\n" + " lsl r4, r4, #0x4\n" + " add r0, r4, #0\n" + " strh r0, [r1]\n" + " mov r0, #0x20\n" + " orr r0, r0, r2\n" + " strh r0, [r3]\n" + "._352:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._354:\n" + " .align 2, 0\n" + "._353:\n" + " .word gUnknown_02024D1F\n" + " .word gPreBattleCallback1\n" + " .word gMain\n" + " .word debug_sub_80139E4+1\n" + " .word sub_800F808+1\n" + " .word gBattleTypeFlags\n" + " .word gTrainerBattleOpponent\n" + "\n" + ); +} +#else void sub_800F298(void) { u8 playerId; @@ -893,7 +2587,119 @@ void sub_800F298(void) break; } } +#endif +#if DEBUG +__attribute__((naked)) +void BattleMainCB2(void) +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r4, ._358\n" + " ldrh r2, [r4, #0x2c]\n" + " mov r1, #0x82\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, #0\n" + " and r0, r0, r2\n" + " cmp r0, r1\n" + " bne ._357 @cond_branch\n" + " ldr r2, ._358 + 4\n" + " ldr r1, ._358 + 8\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x1\n" + " strh r0, [r2]\n" + " ldr r0, ._358 + 12\n" + " add r2, r4, r0\n" + " ldrb r1, [r2]\n" + " mov r0, #0x3\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " strb r0, [r2]\n" + " ldr r1, ._358 + 16\n" + " mov r0, #0x3\n" + " strb r0, [r1, #0x15]\n" + " ldr r0, ._358 + 20\n" + " ldr r0, [r0]\n" + " str r0, [r4]\n" + " bl ZeroEnemyPartyMons\n" + " mov r0, #0x5a\n" + " bl gScriptFuncs_End+0x148c\n" + " ldr r0, ._358 + 24\n" + " ldrh r1, [r0]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._356 @cond_branch\n" + " ldr r0, ._358 + 28\n" + " bl SetMainCallback2\n" + " b ._357\n" + "._359:\n" + " .align 2, 0\n" + "._358:\n" + " .word gMain\n" + " .word gScriptResult\n" + " .word gBattleOutcome\n" + " .word 0x43d\n" + " .word gUnknown_03004DC0\n" + " .word gPreBattleCallback1\n" + " .word gBattleTypeFlags\n" + " .word sub_805465C+1\n" + "._356:\n" + " ldr r0, [r4, #0x8]\n" + " bl SetMainCallback2\n" + "._357:\n" + " ldr r5, ._361\n" + " ldrh r1, [r5]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._360 @cond_branch\n" + " lsr r0, r1, #0x2\n" + " mov r4, #0x1\n" + " and r0, r0, r4\n" + " str r4, [sp]\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl debug_sub_8008264\n" + " ldrh r0, [r5]\n" + " lsr r0, r0, #0x2\n" + " and r0, r0, r4\n" + " str r4, [sp]\n" + " mov r1, #0x1\n" + " mov r2, #0x15\n" + " mov r3, #0x1\n" + " bl debug_sub_8008264\n" + " ldrh r0, [r5]\n" + " lsr r0, r0, #0x2\n" + " and r0, r0, r4\n" + " str r4, [sp]\n" + " mov r1, #0x1\n" + " mov r2, #0x29\n" + " mov r3, #0x1\n" + " bl debug_sub_8008264\n" + "._360:\n" + " ldr r0, ._361 + 4\n" + " bl sub_800374C\n" + " bl UpdatePaletteFade\n" + " bl RunTasks\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._362:\n" + " .align 2, 0\n" + "._361:\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_03004210\n" + "\n" + ); +} +#else void BattleMainCB2(void) { AnimateSprites(); @@ -902,6 +2708,7 @@ void BattleMainCB2(void) UpdatePaletteFade(); RunTasks(); } +#endif void sub_800F828(struct Sprite *sprite) { @@ -1275,6 +3082,5525 @@ void c2_081284E0(void) } } +// A LOT of debug code! +#if DEBUG +__attribute__((naked)) +void debug_sub_8010800() +{ + asm( + " push {lr}\n" + " bl debug_sub_8010818\n" + " bl debug_sub_80108B8\n" + " ldr r1, ._496\n" + " mov r0, #0x0\n" + " str r0, [r1]\n" + " pop {r0}\n" + " bx r0\n" + "._497:\n" + " .align 2, 0\n" + "._496:\n" + " .word gBattleBuffersTransferData+0x100\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010818() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r1, ._501\n" + " ldr r0, ._501 + 4\n" + " strh r0, [r1]\n" + " add r2, r1, #0\n" + " add r2, r2, #0x46\n" + " strh r0, [r2]\n" + " ldr r0, ._501 + 8\n" + " add r4, r1, #0\n" + " add r4, r4, #0x48\n" + " add r3, r0, #0\n" + " add r3, r3, #0x12\n" + " add r2, r1, #2\n" + " mov r1, #0x1d\n" + "._498:\n" + " ldrh r0, [r3]\n" + " strh r0, [r2]\n" + " strh r0, [r4]\n" + " add r4, r4, #0x2\n" + " add r3, r3, #0xa\n" + " add r2, r2, #0x2\n" + " sub r1, r1, #0x1\n" + " cmp r1, #0\n" + " bge ._498 @cond_branch\n" + " mov r1, #0x0\n" + " ldr r4, ._501 + 12\n" + " ldr r7, ._501 + 16\n" + " ldr r6, ._501 + 20\n" + " mov r0, #0x30\n" + " add r0, r0, r7\n" + " mov ip, r0\n" + "._500:\n" + " mov r0, #0x0\n" + " strb r0, [r4]\n" + " add r5, r1, #1\n" + " lsl r3, r1, #0x3\n" + "._499:\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r3\n" + " add r1, r1, r7\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r6\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r3\n" + " add r1, r1, ip\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r6\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bls ._499 @cond_branch\n" + " add r1, r5, #0\n" + " cmp r1, #0x5\n" + " ble ._500 @cond_branch\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._502:\n" + " .align 2, 0\n" + "._501:\n" + " .word gUnknown_02023A14+0x52\n" + " .word 0x115\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_02023A14+0xde\n" + " .word UnkDebug0+0x1b4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80108B8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl gScriptFuncs_End+0x19f4\n" + " mov r0, #0x0\n" + " bl SetHBlankCallback\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r3, #0x0\n" + " str r3, [sp]\n" + " ldr r2, ._507\n" + " mov r0, sp\n" + " str r0, [r2]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x13\n" + " str r1, [r2, #0x4]\n" + " ldr r0, ._507 + 4\n" + " str r0, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " ldr r2, ._507 + 8\n" + " mov r0, #0x1\n" + " strh r0, [r2]\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x13\n" + " mov r4, #0x9a\n" + " lsl r4, r4, #0x5\n" + " add r0, r4, #0\n" + " strh r0, [r2]\n" + " ldr r0, ._507 + 12\n" + " mov r5, #0x0\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 16\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 20\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 24\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 28\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 32\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 36\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 40\n" + " strh r3, [r0]\n" + " add r2, r2, #0x8\n" + " ldr r4, ._507 + 44\n" + " add r0, r4, #0\n" + " strh r0, [r2]\n" + " add r2, r2, #0x2\n" + " ldr r4, ._507 + 48\n" + " add r0, r4, #0\n" + " strh r0, [r2]\n" + " ldr r0, ._507 + 52\n" + " strh r3, [r0]\n" + " add r0, r0, #0x4\n" + " strh r3, [r0]\n" + " ldr r0, ._507 + 56\n" + " bl LZDecompressVram\n" + " ldr r0, ._507 + 60\n" + " ldr r1, ._507 + 64\n" + " bl sub_800D238\n" + " ldr r4, ._507 + 68\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " add r0, r4, #0\n" + " bl LZDecompressVram\n" + " ldr r1, ._507 + 72\n" + " add r0, r4, #0\n" + " bl LZDecompressVram\n" + " bl gScriptFuncs_End+0x1a70\n" + " ldr r0, ._507 + 76\n" + " bl SetVBlankCallback\n" + " ldr r0, ._507 + 80\n" + " bl SetMainCallback2\n" + " bl ResetTasks\n" + " bl ResetSpriteData\n" + " bl remove_some_task\n" + " ldr r4, ._507 + 84\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " ldr r0, ._507 + 88\n" + " add r1, r4, #0\n" + " bl InitWindowFromConfig\n" + " ldr r0, ._507 + 92\n" + " strb r5, [r0]\n" + " ldr r0, ._507 + 96\n" + " strb r5, [r0]\n" + " ldr r0, ._507 + 100\n" + " strb r5, [r0]\n" + " mov r4, #0x0\n" + "._503:\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x1e\n" + " ble ._503 @cond_branch\n" + " ldr r1, ._507 + 104\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " add r4, r1, #0\n" + "._504:\n" + " bl debug_sub_8012294\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bls ._504 @cond_branch\n" + " ldr r0, ._507 + 100\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " bl debug_sub_8012540\n" + " bl debug_nullsub_3\n" + " ldr r1, ._507 + 104\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl debug_sub_80125A0\n" + " ldr r0, ._507 + 108\n" + " add r0, r0, #0x44\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x8\n" + " bne ._505 @cond_branch\n" + " bl debug_sub_801174C\n" + " b ._506\n" + "._508:\n" + " .align 2, 0\n" + "._507:\n" + " .word 0x40000d4\n" + " .word 0x85006000\n" + " .word 0x4000200\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + " .word 0x1f09\n" + " .word 0x4801\n" + " .word 0x4000050\n" + " .word gMonShinyPalette_CircledQuestionMark+0x18\n" + " .word gMonShinyPalette_CircledQuestionMark+0x834\n" + " .word +0x2000000\n" + " .word gMonShinyPalette_CircledQuestionMark+0xa8c\n" + " .word 0x50001e0\n" + " .word debug_sub_8011D40+1\n" + " .word debug_sub_8010CAC+1\n" + " .word gWindowConfig_81E6C3C\n" + " .word gUnknown_Debug_03004370\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_02023A14+0x52\n" + "._505:\n" + " ldr r0, ._510\n" + " mov r1, #0x0\n" + " mov r4, #0x7\n" + " ldr r2, ._510 + 4\n" + " add r0, r0, r2\n" + "._509:\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x1\n" + " sub r4, r4, #0x1\n" + " cmp r4, #0\n" + " bge ._509 @cond_branch\n" + "._506:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._511:\n" + " .align 2, 0\n" + "._510:\n" + " .word +0x2000000\n" + " .word 0x160bb\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010A7C() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r2, r1, #0x18\n" + " mov r1, #0x0\n" + " ldr r5, ._514\n" + " cmp r1, r2\n" + " bge ._512 @cond_branch\n" + " add r3, r5, #0\n" + "._513:\n" + " add r0, r1, r3\n" + " strb r4, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, r2\n" + " blt ._513 @cond_branch\n" + "._512:\n" + " add r1, r1, r5\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._515:\n" + " .align 2, 0\n" + "._514:\n" + " .word gBattleTextBuff1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010AAC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov ip, r0\n" + " ldr r6, ._520\n" + " ldr r4, ._520 + 4\n" + " ldr r5, ._520 + 8\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r7, r0, r1\n" + " lsl r1, r7, #0x1\n" + " ldr r3, ._520 + 12\n" + " ldrb r2, [r3]\n" + " mov r0, #0x46\n" + " mul r2, r2, r0\n" + " add r1, r1, r2\n" + " add r1, r1, r4\n" + " mov r0, #0x0\n" + " ldsh r1, [r1, r0]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x10]\n" + " add r6, r3, #0\n" + " cmp r0, #0xfe\n" + " beq ._516 @cond_branch\n" + " cmp r0, #0xfe\n" + " bgt ._517 @cond_branch\n" + " cmp r0, #0\n" + " beq ._518 @cond_branch\n" + " b ._523\n" + "._521:\n" + " .align 2, 0\n" + "._520:\n" + " .word gBaseStats\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "._517:\n" + " cmp r0, #0xff\n" + " beq ._522 @cond_branch\n" + " b ._523\n" + "._518:\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " add r0, r0, r4\n" + " mov r1, #0x2\n" + " b ._528\n" + "._516:\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " add r0, r0, r4\n" + " mov r1, #0x3\n" + " b ._528\n" + "._522:\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " add r0, r0, r4\n" + " mov r1, #0x4\n" + " b ._528\n" + "._523:\n" + " ldrb r0, [r5]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " add r1, r1, #0x4\n" + " lsl r1, r1, #0x1\n" + " ldrb r0, [r6]\n" + " mov r3, #0x46\n" + " mul r0, r0, r3\n" + " add r1, r1, r0\n" + " add r1, r1, r4\n" + " ldrh r2, [r1]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " strh r0, [r1]\n" + " mov r1, ip\n" + " cmp r1, #0\n" + " beq ._527 @cond_branch\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x1\n" + " ldrb r1, [r6]\n" + " mul r1, r1, r3\n" + " add r0, r0, r1\n" + " add r0, r0, r4\n" + " ldrh r1, [r0]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " b ._528\n" + "._527:\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x1\n" + " ldrb r1, [r6]\n" + " mul r1, r1, r3\n" + " add r0, r0, r1\n" + " add r0, r0, r4\n" + " mov r1, ip\n" + "._528:\n" + " strh r1, [r0]\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010B80() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " mov r0, #0x0\n" + " mov ip, r0\n" + " ldr r4, ._534\n" + " ldr r1, ._534 + 4\n" + " mov r8, r1\n" + " ldr r5, ._534 + 8\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " mov r2, r8\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x1\n" + " ldr r3, ._534 + 12\n" + " ldrb r2, [r3]\n" + " mov r1, #0x46\n" + " mul r1, r1, r2\n" + " add r0, r0, r1\n" + " add r0, r0, r4\n" + " ldrb r7, [r0]\n" + " lsl r1, r7, #0x18\n" + " asr r0, r1, #0x18\n" + " mov r9, r4\n" + " add r2, r5, #0\n" + " add r4, r3, #0\n" + " cmp r0, #0x9\n" + " ble ._529 @cond_branch\n" + "._530:\n" + " mov r3, #0xf6\n" + " lsl r3, r3, #0x18\n" + " add r0, r1, r3\n" + " lsr r7, r0, #0x18\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x11\n" + " add r0, r0, r3\n" + " lsr r0, r0, #0x18\n" + " mov ip, r0\n" + " lsl r1, r7, #0x18\n" + " asr r0, r1, #0x18\n" + " cmp r0, #0x9\n" + " bgt ._530 @cond_branch\n" + "._529:\n" + " mov r0, #0x2\n" + " and r0, r0, r6\n" + " cmp r0, #0\n" + " beq ._531 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r6\n" + " cmp r0, #0\n" + " beq ._532 @cond_branch\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x11\n" + " b ._533\n" + "._535:\n" + " .align 2, 0\n" + "._534:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "._532:\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " mov r3, #0xff\n" + " lsl r3, r3, #0x18\n" + "._533:\n" + " add r0, r0, r3\n" + " lsr r0, r0, #0x18\n" + " mov ip, r0\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " cmp r0, #0\n" + " bge ._536 @cond_branch\n" + " mov r3, #0x9\n" + " mov ip, r3\n" + "._536:\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x9\n" + " ble ._542 @cond_branch\n" + " mov r3, #0x0\n" + " mov ip, r3\n" + " b ._542\n" + "._531:\n" + " mov r0, #0x1\n" + " and r0, r0, r6\n" + " cmp r0, #0\n" + " beq ._539 @cond_branch\n" + " lsl r0, r7, #0x18\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x11\n" + " add r0, r0, r1\n" + " b ._540\n" + "._539:\n" + " lsl r0, r7, #0x18\n" + " mov r3, #0xff\n" + " lsl r3, r3, #0x18\n" + " add r0, r0, r3\n" + "._540:\n" + " lsr r7, r0, #0x18\n" + " lsl r0, r7, #0x18\n" + " cmp r0, #0\n" + " bgt ._541 @cond_branch\n" + " mov r7, #0x9\n" + "._541:\n" + " lsl r0, r7, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x9\n" + " ble ._542 @cond_branch\n" + " mov r7, #0x1\n" + "._542:\n" + " ldrb r0, [r2]\n" + " lsl r2, r0, #0x2\n" + " add r2, r2, r0\n" + " mov r0, r8\n" + " ldrb r0, [r0]\n" + " add r2, r2, r0\n" + " lsl r2, r2, #0x1\n" + " ldrb r1, [r4]\n" + " mov r0, #0x1\n" + " eor r0, r0, r1\n" + " mov r1, #0x46\n" + " add r3, r0, #0\n" + " mul r3, r3, r1\n" + " add r3, r2, r3\n" + " add r3, r3, r9\n" + " ldrb r0, [r4]\n" + " mul r0, r0, r1\n" + " add r2, r2, r0\n" + " add r2, r2, r9\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " asr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " lsl r0, r7, #0x18\n" + " asr r0, r0, #0x18\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + " strh r0, [r3]\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8010CAC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffff0\n" + " ldr r4, ._553\n" + " ldrh r1, [r4, #0x28]\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x2\n" + " cmp r1, r0\n" + " bne ._543 @cond_branch\n" + " bl DoSoftReset\n" + "._543:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x4\n" + " beq ._544 @cond_branch\n" + " b ._559\n" + "._544:\n" + " ldr r0, ._553 + 4\n" + " ldrb r1, [r0]\n" + " mov r8, r0\n" + " cmp r1, #0x5\n" + " bhi ._546 @cond_branch\n" + " ldr r0, ._553 + 8\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " bl debug_sub_8012628\n" + " ldr r0, ._553 + 12\n" + " bl SetMainCallback2\n" + "._546:\n" + " ldr r0, ._553 + 16\n" + " ldrb r3, [r0]\n" + " cmp r3, #0\n" + " bne ._555 @cond_branch\n" + " mov r1, r8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x6\n" + " bne ._555 @cond_branch\n" + " ldr r0, ._553 + 20\n" + " str r0, [r4, #0x8]\n" + " ldr r4, ._553 + 24\n" + " ldr r0, ._553 + 28\n" + " ldrh r1, [r0]\n" + " ldrb r2, [r0, #0x2]\n" + " str r3, [sp]\n" + " str r3, [sp, #0x4]\n" + " str r3, [sp, #0x8]\n" + " str r3, [sp, #0xc]\n" + " add r0, r4, #0\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " mov r5, #0x0\n" + " add r6, r4, #0\n" + "._549:\n" + " add r1, r5, #0\n" + " add r1, r1, #0xd\n" + " lsl r4, r5, #0x1\n" + " ldr r0, ._553 + 32\n" + " add r4, r4, r0\n" + " add r0, r6, #0\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " add r1, r5, #0\n" + " add r1, r1, #0x11\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " lsl r2, r0, #0x1\n" + " add r2, r2, r0\n" + " lsl r2, r2, #0x2\n" + " ldr r0, ._553 + 36\n" + " add r2, r2, r0\n" + " add r0, r6, #0\n" + " bl SetMonData\n" + " add r5, r5, #0x1\n" + " cmp r5, #0x3\n" + " ble ._549 @cond_branch\n" + " ldr r2, ._553 + 28\n" + " mov r4, #0x3c\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0x1\n" + " beq ._550 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._551 @cond_branch\n" + " b ._555\n" + "._554:\n" + " .align 2, 0\n" + "._553:\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_030043A8\n" + " .word debug_sub_8011498+1\n" + " .word gUnknown_Debug_030043A0\n" + " .word debug_sub_80108B8+1\n" + " .word gPlayerParty\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_02023A14+0xde\n" + " .word gBattleMoves+0x4\n" + "._550:\n" + " ldr r1, ._556\n" + " ldr r0, ._556 + 4\n" + " str r0, [r1]\n" + " ldr r0, ._556 + 8\n" + " ldrh r1, [r2, #0xa]\n" + " mov r2, #0x1\n" + " mov r3, #0x0\n" + " bl EvolutionScene\n" + " b ._555\n" + "._557:\n" + " .align 2, 0\n" + "._556:\n" + " .word gUnknown_03005E94\n" + " .word debug_sub_80108B8+1\n" + " .word gPlayerParty\n" + "._551:\n" + " bl debug_sub_8012688\n" + "._555:\n" + " ldr r0, ._565\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x1\n" + " bne ._559 @cond_branch\n" + " ldr r0, ._565 + 4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x6\n" + " bne ._559 @cond_branch\n" + " ldr r3, ._565 + 8\n" + " ldrb r2, [r3, #0x15]\n" + " lsl r0, r2, #0x1d\n" + " lsr r5, r0, #0x1f\n" + " lsl r0, r2, #0x1f\n" + " lsr r0, r0, #0x1f\n" + " lsl r0, r0, #0x1\n" + " orr r5, r5, r0\n" + " add r5, r5, #0x1\n" + " cmp r5, #0x4\n" + " bne ._560 @cond_branch\n" + " mov r5, #0x0\n" + "._560:\n" + " mov r0, #0x1\n" + " add r1, r5, #0\n" + " and r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " mov r0, #0x5\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " mov r1, #0x2\n" + " and r5, r5, r1\n" + " lsr r2, r5, #0x1\n" + " sub r1, r1, #0x4\n" + " and r0, r0, r1\n" + " orr r0, r0, r2\n" + " strb r0, [r3, #0x15]\n" + " lsl r0, r0, #0x1f\n" + " lsr r0, r0, #0x1f\n" + " bl gScriptFuncs_End+0x2aa0\n" + " bl debug_nullsub_3\n" + "._559:\n" + " ldr r4, ._565 + 12\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x8\n" + " bne ._561 @cond_branch\n" + " bl debug_sub_801174C\n" + "._561:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x40\n" + " bne ._562 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r1, ._565 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._563 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._564\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gSaveBlock2\n" + " .word gMain\n" + "._563:\n" + " mov r0, #0x6\n" + "._564:\n" + " strb r0, [r1]\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._570\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " bl debug_sub_80125A0\n" + "._562:\n" + " ldr r0, ._570 + 4\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x80\n" + " bne ._567 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r1, ._570\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x6\n" + " bne ._568 @cond_branch\n" + " mov r0, #0x0\n" + " b ._569\n" + "._571:\n" + " .align 2, 0\n" + "._570:\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + "._568:\n" + " add r0, r0, #0x1\n" + "._569:\n" + " strb r0, [r1]\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._575\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " bl debug_sub_80125A0\n" + "._567:\n" + " ldr r0, ._575 + 4\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x20\n" + " bne ._572 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r2, ._575 + 8\n" + " ldrb r0, [r2]\n" + " add r1, r0, #0\n" + " cmp r1, #0\n" + " beq ._573 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r2]\n" + " b ._577\n" + "._576:\n" + " .align 2, 0\n" + "._575:\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A0\n" + "._573:\n" + " ldr r3, ._581\n" + " ldrb r0, [r3]\n" + " cmp r0, #0\n" + " beq ._577 @cond_branch\n" + " strb r1, [r3]\n" + " mov r0, #0x4\n" + " strb r0, [r2]\n" + " ldr r0, ._581 + 4\n" + " strh r1, [r0]\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._581 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._577:\n" + " bl debug_sub_80125A0\n" + "._572:\n" + " ldr r0, ._581 + 12\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x10\n" + " bne ._578 @cond_branch\n" + " bl debug_sub_80125E4\n" + " ldr r2, ._581 + 16\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x4\n" + " beq ._579 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r2]\n" + " b ._583\n" + "._582:\n" + " .align 2, 0\n" + "._581:\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A0\n" + "._579:\n" + " ldr r3, ._587\n" + " ldrb r1, [r3]\n" + " cmp r1, #0\n" + " bne ._583 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r3]\n" + " strb r1, [r2]\n" + " ldr r1, ._587 + 4\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " ldr r0, ._587 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._583:\n" + " bl debug_sub_80125A0\n" + "._578:\n" + " ldr r0, ._587 + 12\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._584 @cond_branch\n" + " b ._607\n" + "._584:\n" + " ldr r0, ._587 + 16\n" + " ldrb r2, [r0]\n" + " ldr r0, ._587 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r2, r0\n" + " sub r0, r0, #0x1e\n" + " cmp r0, #0x4\n" + " bhi ._586 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._587 + 20\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._588:\n" + " .align 2, 0\n" + "._587:\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word gUnknown_Debug_030043A0\n" + " .word ._589\n" + "._589:\n" + " .word ._590\n" + " .word ._591\n" + " .word ._592\n" + " .word ._593\n" + " .word ._594\n" + "._591:\n" + " bl debug_sub_8010818\n" + " b ._595\n" + "._592:\n" + " ldr r1, ._597\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_80132C8\n" + "._595:\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " bl debug_sub_8012540\n" + " bl debug_nullsub_3\n" + " ldr r0, ._597 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " b ._607\n" + "._598:\n" + " .align 2, 0\n" + "._597:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A4\n" + "._593:\n" + " ldr r1, ._600\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_8013294\n" + " b ._607\n" + "._601:\n" + " .align 2, 0\n" + "._600:\n" + " .word gUnknown_02023A14+0x52\n" + "._594:\n" + " ldr r3, ._604\n" + " add r2, r3, #0\n" + " add r2, r2, #0x44\n" + " ldrh r1, [r2]\n" + " mov r4, #0x0\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0\n" + " beq ._602 @cond_branch\n" + " sub r0, r1, #1\n" + " strh r0, [r2]\n" + " add r1, r3, #0\n" + " add r1, r1, #0x8a\n" + " ldrh r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1]\n" + " b ._603\n" + "._605:\n" + " .align 2, 0\n" + "._604:\n" + " .word gUnknown_02023A14+0x52\n" + "._602:\n" + " mov r1, #0x8\n" + " strh r1, [r2]\n" + " add r0, r3, #0\n" + " add r0, r0, #0x8a\n" + " strh r1, [r0]\n" + "._603:\n" + " bl debug_sub_8012540\n" + " b ._607\n" + "._590:\n" + " mov r0, #0x0\n" + " bl debug_sub_8010B80\n" + " ldr r2, ._608\n" + " ldr r0, ._608 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " b ._607\n" + "._609:\n" + " .align 2, 0\n" + "._608:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + "._586:\n" + " cmp r2, #0x4\n" + " bne ._611 @cond_branch\n" + " cmp r1, #0x5\n" + " bhi ._611 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._613\n" + "._611:\n" + " ldr r6, ._618\n" + " ldr r5, ._618 + 4\n" + " ldr r4, ._618 + 8\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r0, [r5]\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._618 + 12\n" + " ldrb r0, [r2]\n" + " mov r3, #0x46\n" + " mul r0, r0, r3\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldrh r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1]\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r5, [r5]\n" + " add r1, r1, r5\n" + " lsl r0, r1, #0x1\n" + " ldrb r2, [r2]\n" + " mul r2, r2, r3\n" + " add r0, r0, r2\n" + " add r3, r0, r6\n" + " mov r4, #0x0\n" + " ldsh r2, [r3, r4]\n" + " ldr r4, ._618 + 16\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " add r0, r4, #0\n" + " add r0, r0, #0x8\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " cmp r2, r0\n" + " bge ._613 @cond_branch\n" + " add r0, r4, #6\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r3]\n" + "._613:\n" + " ldr r5, ._618 + 4\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._614 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._618 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._614:\n" + " ldr r4, ._618 + 8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._607:\n" + " ldr r0, ._618 + 20\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._615 @cond_branch\n" + " b ._638\n" + "._615:\n" + " ldr r0, ._618 + 4\n" + " ldrb r2, [r0]\n" + " ldr r0, ._618 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r2, r0\n" + " sub r0, r0, #0x1e\n" + " cmp r0, #0x4\n" + " bhi ._617 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._618 + 24\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._619:\n" + " .align 2, 0\n" + "._618:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + " .word gMain\n" + " .word ._620\n" + "._620:\n" + " .word ._621\n" + " .word ._622\n" + " .word ._623\n" + " .word ._624\n" + " .word ._625\n" + "._622:\n" + " bl debug_sub_8010818\n" + " b ._626\n" + "._623:\n" + " ldr r1, ._628\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_80132C8\n" + "._626:\n" + " bl debug_sub_8011E5C\n" + " bl debug_sub_8011E74\n" + " bl debug_sub_8012540\n" + " bl debug_nullsub_3\n" + " ldr r0, ._628 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + " b ._638\n" + "._629:\n" + " .align 2, 0\n" + "._628:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A4\n" + "._624:\n" + " ldr r1, ._631\n" + " mov r0, #0x1f\n" + " mov r2, #0xec\n" + " bl debug_sub_8013294\n" + " b ._638\n" + "._632:\n" + " .align 2, 0\n" + "._631:\n" + " .word gUnknown_02023A14+0x52\n" + "._625:\n" + " ldr r3, ._635\n" + " add r2, r3, #0\n" + " add r2, r2, #0x44\n" + " ldrh r1, [r2]\n" + " mov r4, #0x0\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0x7\n" + " bgt ._633 @cond_branch\n" + " add r0, r1, #1\n" + " strh r0, [r2]\n" + " add r1, r3, #0\n" + " add r1, r1, #0x8a\n" + " ldrh r0, [r1]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1]\n" + " b ._634\n" + "._636:\n" + " .align 2, 0\n" + "._635:\n" + " .word gUnknown_02023A14+0x52\n" + "._633:\n" + " mov r1, #0x0\n" + " strh r1, [r2]\n" + " add r0, r3, #0\n" + " add r0, r0, #0x8a\n" + " strh r1, [r0]\n" + "._634:\n" + " bl debug_sub_8012540\n" + " b ._638\n" + "._621:\n" + " mov r0, #0x1\n" + " bl debug_sub_8010B80\n" + " ldr r2, ._639\n" + " ldr r0, ._639 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " b ._638\n" + "._640:\n" + " .align 2, 0\n" + "._639:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + "._617:\n" + " cmp r2, #0x4\n" + " bne ._642 @cond_branch\n" + " cmp r1, #0x5\n" + " bhi ._642 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._644\n" + "._642:\n" + " ldr r6, ._650\n" + " ldr r5, ._650 + 4\n" + " ldr r4, ._650 + 8\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r0, [r5]\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._650 + 12\n" + " ldrb r0, [r2]\n" + " mov r3, #0x46\n" + " mul r0, r0, r3\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldrh r0, [r1]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1]\n" + " ldrb r0, [r4]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r5, [r5]\n" + " add r1, r1, r5\n" + " lsl r0, r1, #0x1\n" + " ldrb r2, [r2]\n" + " mul r2, r2, r3\n" + " add r0, r0, r2\n" + " add r3, r0, r6\n" + " mov r4, #0x0\n" + " ldsh r2, [r3, r4]\n" + " ldr r4, ._650 + 16\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " add r0, r4, #6\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " cmp r2, r0\n" + " ble ._644 @cond_branch\n" + " add r0, r4, #0\n" + " add r0, r0, #0x8\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r3]\n" + "._644:\n" + " ldr r5, ._650 + 4\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._645 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._650 + 8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._645:\n" + " ldr r4, ._650 + 8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._638:\n" + " ldr r0, ._650 + 20\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._646 @cond_branch\n" + " ldr r0, ._650 + 4\n" + " ldrb r1, [r0]\n" + " ldr r2, ._650 + 8\n" + " mov r8, r2\n" + " add r7, r0, #0\n" + " cmp r1, #0x4\n" + " bne ._648 @cond_branch\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x5\n" + " bhi ._648 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._653\n" + "._651:\n" + " .align 2, 0\n" + "._650:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + " .word gMain\n" + "._648:\n" + " mov r4, r8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r1, [r7]\n" + " add r0, r0, r1\n" + " cmp r0, #0x1e\n" + " bne ._652 @cond_branch\n" + " mov r0, #0x2\n" + " bl debug_sub_8010B80\n" + " b ._653\n" + "._652:\n" + " ldr r4, ._655\n" + " lsl r1, r0, #0x1\n" + " ldr r3, ._655 + 4\n" + " ldrb r2, [r3]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r4\n" + " ldrh r0, [r1]\n" + " sub r0, r0, #0xa\n" + " strh r0, [r1]\n" + " add r6, r3, #0\n" + " ldr r5, ._655 + 8\n" + " b ._654\n" + "._656:\n" + " .align 2, 0\n" + "._655:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + "._657:\n" + " add r0, r5, #6\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " ldrh r2, [r3]\n" + " add r0, r0, r2\n" + " strh r0, [r3]\n" + "._654:\n" + " mov r1, r8\n" + " ldrb r0, [r1]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r2, [r7]\n" + " add r1, r1, r2\n" + " lsl r2, r1, #0x1\n" + " ldrb r3, [r6]\n" + " mov r0, #0x46\n" + " mul r0, r0, r3\n" + " add r2, r2, r0\n" + " add r3, r2, r4\n" + " mov r0, #0x0\n" + " ldsh r2, [r3, r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " add r0, r1, r0\n" + " ldrh r0, [r0]\n" + " cmp r2, r0\n" + " blt ._657 @cond_branch\n" + "._653:\n" + " ldr r5, ._663\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._658 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._663 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._658:\n" + " ldr r4, ._663 + 4\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._646:\n" + " ldr r0, ._663 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._659 @cond_branch\n" + " ldr r0, ._663\n" + " ldrb r1, [r0]\n" + " ldr r2, ._663 + 4\n" + " mov r8, r2\n" + " add r7, r0, #0\n" + " cmp r1, #0x4\n" + " bne ._661 @cond_branch\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x5\n" + " bhi ._661 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_8010AAC\n" + " b ._666\n" + "._664:\n" + " .align 2, 0\n" + "._663:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + "._661:\n" + " mov r4, r8\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r1, [r7]\n" + " add r0, r0, r1\n" + " cmp r0, #0x1e\n" + " bne ._665 @cond_branch\n" + " mov r0, #0x3\n" + " bl debug_sub_8010B80\n" + " b ._666\n" + "._665:\n" + " ldr r4, ._668\n" + " lsl r1, r0, #0x1\n" + " ldr r3, ._668 + 4\n" + " ldrb r2, [r3]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r4\n" + " ldrh r0, [r1]\n" + " add r0, r0, #0xa\n" + " strh r0, [r1]\n" + " add r6, r3, #0\n" + " ldr r5, ._668 + 8\n" + " b ._667\n" + "._669:\n" + " .align 2, 0\n" + "._668:\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x6c\n" + "._670:\n" + " ldrh r0, [r3]\n" + " sub r0, r0, r1\n" + " strh r0, [r3]\n" + "._667:\n" + " mov r2, r8\n" + " ldrb r0, [r2]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " ldrb r0, [r7]\n" + " add r1, r1, r0\n" + " lsl r2, r1, #0x1\n" + " ldrb r3, [r6]\n" + " mov r0, #0x46\n" + " mul r0, r0, r3\n" + " add r2, r2, r0\n" + " add r3, r2, r4\n" + " mov r0, #0x0\n" + " ldsh r2, [r3, r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x1\n" + " add r1, r5, #6\n" + " add r0, r0, r1\n" + " ldrh r1, [r0]\n" + " cmp r2, r1\n" + " bgt ._670 @cond_branch\n" + "._666:\n" + " ldr r5, ._672\n" + " ldrb r0, [r5]\n" + " cmp r0, #0\n" + " bne ._671 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8010AAC\n" + " ldr r0, ._672 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " add r0, r0, #0x4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + "._671:\n" + " ldr r4, ._672 + 4\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r5, [r5]\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " ldrb r1, [r4]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_80123D8\n" + "._659:\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " add sp, sp, #0x10\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._673:\n" + " .align 2, 0\n" + "._672:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011498() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " ldr r2, ._687\n" + " ldr r0, ._687 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " ldr r4, ._687 + 8\n" + " ldrh r1, [r4, #0x28]\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x2\n" + " cmp r1, r0\n" + " bne ._674 @cond_branch\n" + " bl DoSoftReset\n" + "._674:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x4\n" + " bne ._675 @cond_branch\n" + " bl debug_sub_8012658\n" + " ldr r0, ._687 + 12\n" + " bl SetMainCallback2\n" + "._675:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x8\n" + " bne ._676 @cond_branch\n" + " bl debug_sub_801174C\n" + "._676:\n" + " ldrh r0, [r4, #0x2a]\n" + " cmp r0, #0x40\n" + " beq ._677 @cond_branch\n" + " cmp r0, #0x80\n" + " bne ._678 @cond_branch\n" + "._677:\n" + " bl debug_sub_8012658\n" + " ldr r0, ._687 + 16\n" + " ldrb r1, [r0]\n" + " mov r2, #0x2\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + " bl debug_sub_8012628\n" + "._678:\n" + " ldr r0, ._687 + 8\n" + " ldrh r0, [r0, #0x2a]\n" + " cmp r0, #0x20\n" + " beq ._679 @cond_branch\n" + " cmp r0, #0x10\n" + " bne ._680 @cond_branch\n" + "._679:\n" + " bl debug_sub_8012658\n" + " ldr r0, ._687 + 16\n" + " ldrb r1, [r0]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + " bl debug_sub_8012628\n" + "._680:\n" + " ldr r0, ._687 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._681 @cond_branch\n" + " ldr r0, ._687 + 20\n" + " mov r8, r0\n" + " ldr r6, ._687 + 16\n" + " ldrb r4, [r6]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r5, ._687 + 24\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x4\n" + " add r4, r4, r1\n" + " add r4, r4, r8\n" + " ldrh r1, [r4]\n" + " sub r1, r1, #0x1\n" + " strh r1, [r4]\n" + " ldrb r3, [r6]\n" + " lsl r1, r3, #0x1\n" + " add r1, r1, r0\n" + " ldrb r2, [r5]\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " add r4, r1, r0\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " ldr r5, ._687 + 28\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r3\n" + " lsl r2, r0, #0x1\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " cmp r1, r0\n" + " bge ._682 @cond_branch\n" + " add r0, r5, #6\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r4]\n" + "._682:\n" + " bl debug_sub_8012294\n" + "._681:\n" + " ldr r0, ._687 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._683 @cond_branch\n" + " ldr r1, ._687 + 20\n" + " mov r8, r1\n" + " ldr r6, ._687 + 16\n" + " ldrb r4, [r6]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r5, ._687 + 24\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x4\n" + " add r4, r4, r1\n" + " add r4, r4, r8\n" + " ldrh r1, [r4]\n" + " add r1, r1, #0x1\n" + " strh r1, [r4]\n" + " ldrb r3, [r6]\n" + " lsl r1, r3, #0x1\n" + " add r1, r1, r0\n" + " ldrb r2, [r5]\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " add r4, r1, r0\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " ldr r5, ._687 + 28\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r3\n" + " lsl r2, r0, #0x1\n" + " add r0, r5, #6\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " cmp r1, r0\n" + " ble ._684 @cond_branch\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " strh r0, [r4]\n" + "._684:\n" + " bl debug_sub_8012294\n" + "._683:\n" + " ldr r0, ._687 + 8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._685 @cond_branch\n" + " ldr r6, ._687 + 20\n" + " ldr r5, ._687 + 16\n" + " ldrb r4, [r5]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r2, ._687 + 24\n" + " ldrb r1, [r2]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0xa\n" + " strh r0, [r4]\n" + " mov sl, r5\n" + " mov r8, r6\n" + " add r7, r2, #0\n" + " ldr r6, ._687 + 28\n" + " b ._686\n" + "._688:\n" + " .align 2, 0\n" + "._687:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gMain\n" + " .word debug_sub_8010CAC+1\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x1ac\n" + "._689:\n" + " add r0, r6, #6\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " ldrh r1, [r4]\n" + " add r0, r0, r1\n" + " strh r0, [r4]\n" + "._686:\n" + " mov r0, sl\n" + " ldrb r5, [r0]\n" + " lsl r4, r5, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r8\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r2, r0, #0x1\n" + " add r0, r6, #0\n" + " add r0, r0, #0x8\n" + " add r0, r2, r0\n" + " ldrh r0, [r0]\n" + " cmp r1, r0\n" + " blt ._689 @cond_branch\n" + " bl debug_sub_8012294\n" + "._685:\n" + " ldr r0, ._692\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._690 @cond_branch\n" + " ldr r6, ._692 + 4\n" + " ldr r5, ._692 + 8\n" + " ldrb r4, [r5]\n" + " lsl r4, r4, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldr r2, ._692 + 12\n" + " ldrb r1, [r2]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0xa\n" + " strh r0, [r4]\n" + " mov sl, r5\n" + " mov r8, r6\n" + " add r7, r2, #0\n" + " ldr r6, ._692 + 16\n" + " b ._691\n" + "._693:\n" + " .align 2, 0\n" + "._692:\n" + " .word gMain\n" + " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_Debug_03004360\n" + " .word UnkDebug0+0x1ac\n" + "._694:\n" + " ldrh r0, [r4]\n" + " sub r0, r0, r1\n" + " strh r0, [r4]\n" + "._691:\n" + " mov r1, sl\n" + " ldrb r5, [r1]\n" + " lsl r4, r5, #0x1\n" + " mov r0, r9\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, r0\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " add r4, r4, r8\n" + " mov r0, #0x0\n" + " ldsh r2, [r4, r0]\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x1\n" + " add r1, r6, #6\n" + " add r0, r0, r1\n" + " ldrh r1, [r0]\n" + " cmp r2, r1\n" + " bgt ._694 @cond_branch\n" + " bl debug_sub_8012294\n" + "._690:\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_801174C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xffffffe8\n" + " mov r0, #0x0\n" + " mov r9, r0\n" + " ldr r1, ._704\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl Random\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " mov r0, #0x3\n" + " and r4, r4, r0\n" + " lsl r4, r4, #0x18\n" + " lsr r6, r4, #0x18\n" + " ldr r5, ._704 + 4\n" + " lsl r1, r6, #0x1\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x1\n" + " ldr r0, ._704 + 8\n" + " add r1, r1, r0\n" + " add r0, r5, #0\n" + " bl StringCopy\n" + " lsr r4, r4, #0x19\n" + " strb r4, [r5, #0x8]\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " ldr r0, ._704 + 12\n" + " mov r1, #0x3c\n" + " ldsh r7, [r0, r1]\n" + " mov r2, r9\n" + " str r2, [sp, #0xc]\n" + " cmp r7, #0x9\n" + " ble ._695 @cond_branch\n" + " mov r0, #0x0\n" + "._696:\n" + " sub r7, r7, #0xa\n" + " add r0, r0, #0x1\n" + " cmp r7, #0x9\n" + " bgt ._696 @cond_branch\n" + " str r0, [sp, #0xc]\n" + "._695:\n" + " ldr r2, ._704 + 16\n" + " ldr r1, ._704 + 20\n" + " sub r0, r7, #1\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r3, [r0]\n" + " strh r3, [r2]\n" + " ldr r1, ._704 + 24\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._704 + 28\n" + " add r0, sp, #0xc\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " mov r0, #0x80\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._697 @cond_branch\n" + " bl EnterSafariMode\n" + "._697:\n" + " ldr r5, ._704 + 12\n" + " ldrh r0, [r5, #0x3c]\n" + " sub r0, r0, #0x2\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x2\n" + " bhi ._698 @cond_branch\n" + " ldr r4, ._704 + 32\n" + " bl Random\n" + " mov r1, #0x7\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " strh r1, [r4]\n" + "._698:\n" + " ldr r1, ._704 + 36\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " mov r7, #0x0\n" + "._745:\n" + " lsl r0, r7, #0x1\n" + " ldr r3, ._704 + 12\n" + " add r1, r0, r3\n" + " mov r2, #0x0\n" + " ldsh r1, [r1, r2]\n" + " add r2, r3, #0\n" + " mov r8, r0\n" + " add r3, r7, #5\n" + " mov sl, r3\n" + " cmp r1, #0\n" + " beq ._699 @cond_branch\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, #0\n" + " add r0, r0, r1\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " cmp r0, #0x1\n" + " beq ._707 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._701 @cond_branch\n" + " cmp r0, #0\n" + " beq ._706 @cond_branch\n" + " b ._708\n" + "._705:\n" + " .align 2, 0\n" + "._704:\n" + " .word gUnknown_020297ED\n" + " .word gSaveBlock2\n" + " .word UnkDebug0+0x279\n" + " .word gUnknown_02023A14+0x52\n" + " .word gBattleTypeFlags\n" + " .word UnkDebug0+0x1e0\n" + " .word gUnknown_02023A14+0x50\n" + " .word gBattleTerrain\n" + " .word gTrainerBattleOpponent\n" + " .word gPlayerPartyCount\n" + "._701:\n" + " cmp r0, #0x2\n" + " beq ._706 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._707 @cond_branch\n" + " b ._708\n" + "._706:\n" + " mov r6, #0x0\n" + " b ._710\n" + "._707:\n" + " mov r6, #0xfe\n" + " b ._710\n" + "._708:\n" + " mov r6, #0xff\n" + "._710:\n" + " mov r1, r8\n" + " add r0, r1, r2\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " add r1, r7, #5\n" + " mov sl, r1\n" + " cmp r0, #0xc9\n" + " bne ._712 @cond_branch\n" + " cmp r1, #0x1d\n" + " bgt ._712 @cond_branch\n" + " add r0, r7, #7\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " ldrb r0, [r0]\n" + " mov r9, r0\n" + " b ._713\n" + "._712:\n" + " mov r2, #0x0\n" + " mov r9, r2\n" + "._713:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r3, #0x64\n" + " mul r0, r0, r3\n" + " ldr r1, ._719\n" + " add r0, r0, r1\n" + " ldr r1, ._719 + 4\n" + " add r1, r1, r8\n" + " ldrh r1, [r1]\n" + " add r2, r7, #1\n" + " lsl r2, r2, #0x1\n" + " ldr r3, ._719 + 4\n" + " add r2, r2, r3\n" + " ldrb r2, [r2]\n" + " str r6, [sp]\n" + " mov r3, #0x0\n" + " str r3, [sp, #0x4]\n" + " mov r3, r9\n" + " str r3, [sp, #0x8]\n" + " mov r3, #0x0\n" + " bl CreateMonWithGenderNatureLetter\n" + "._699:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._719\n" + " add r5, r1, r0\n" + " ldr r4, ._719 + 8\n" + " mov r3, r8\n" + " add r6, r3, r4\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " add r2, r6, #0\n" + " bl SetMonData\n" + " sub r4, r4, #0x4\n" + " add r1, r7, #2\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r1, [sp, #0x10]\n" + " cmp r0, #0xb\n" + " bhi ._714 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x26\n" + " add r2, r6, #0\n" + " bl SetMonData\n" + "._714:\n" + " add r1, r7, #3\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r4\n" + " mov r3, #0x0\n" + " ldsh r2, [r0, r3]\n" + " str r1, [sp, #0x14]\n" + " cmp r2, #0\n" + " beq ._716 @cond_branch\n" + " cmp r2, #0x3\n" + " beq ._716 @cond_branch\n" + " cmp r2, #0x2\n" + " bgt ._717 @cond_branch\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " sub r0, r0, #0x1\n" + " b ._718\n" + "._720:\n" + " .align 2, 0\n" + "._719:\n" + " .word gEnemyParty\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_02023A14+0x56\n" + "._717:\n" + " mov r2, #0x0\n" + " ldsh r0, [r0, r2]\n" + " sub r0, r0, #0x4\n" + "._718:\n" + " str r0, [sp, #0xc]\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r3, #0x64\n" + " mul r0, r0, r3\n" + " ldr r1, ._726\n" + " add r0, r0, r1\n" + " mov r1, #0x2e\n" + " add r2, sp, #0xc\n" + " bl SetMonData\n" + "._716:\n" + " ldr r1, ._726 + 4\n" + " add r1, r1, #0x46\n" + " mov r2, r8\n" + " add r0, r2, r1\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " ldr r2, ._726 + 4\n" + " cmp r0, #0\n" + " beq ._721 @cond_branch\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x1\n" + " beq ._729 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._723 @cond_branch\n" + " cmp r0, #0\n" + " beq ._728 @cond_branch\n" + " b ._730\n" + "._727:\n" + " .align 2, 0\n" + "._726:\n" + " .word gEnemyParty\n" + " .word gUnknown_02023A14+0x52\n" + "._723:\n" + " cmp r0, #0x2\n" + " beq ._728 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._729 @cond_branch\n" + " b ._730\n" + "._728:\n" + " mov r6, #0x0\n" + " b ._732\n" + "._729:\n" + " mov r6, #0xfe\n" + " b ._732\n" + "._730:\n" + " mov r6, #0xff\n" + "._732:\n" + " add r1, r2, #0\n" + " add r1, r1, #0x46\n" + " mov r2, r8\n" + " add r0, r2, r1\n" + " mov r3, #0x0\n" + " ldsh r0, [r0, r3]\n" + " cmp r0, #0xc9\n" + " bne ._734 @cond_branch\n" + " mov r0, sl\n" + " cmp r0, #0x1d\n" + " bgt ._734 @cond_branch\n" + " add r0, r7, #7\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " mov r9, r0\n" + " b ._735\n" + "._734:\n" + " mov r1, #0x0\n" + " mov r9, r1\n" + "._735:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " mul r0, r0, r2\n" + " ldr r1, ._741\n" + " add r0, r0, r1\n" + " ldr r1, ._741 + 4\n" + " add r1, r1, r8\n" + " ldrh r1, [r1]\n" + " add r2, r7, #1\n" + " lsl r2, r2, #0x1\n" + " ldr r3, ._741 + 4\n" + " add r2, r2, r3\n" + " ldrb r2, [r2]\n" + " str r6, [sp]\n" + " mov r3, #0x0\n" + " str r3, [sp, #0x4]\n" + " mov r3, r9\n" + " str r3, [sp, #0x8]\n" + " mov r3, #0x0\n" + " bl CreateMonWithGenderNatureLetter\n" + " ldr r1, ._741 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._721:\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._741\n" + " add r4, r1, r0\n" + " ldr r0, ._741 + 12\n" + " mov r3, r8\n" + " add r5, r3, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " add r2, r5, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0x10]\n" + " lsl r0, r1, #0x1\n" + " ldr r2, ._741 + 16\n" + " add r0, r0, r2\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._736 @cond_branch\n" + " add r0, r4, #0\n" + " mov r1, #0x26\n" + " add r2, r5, #0\n" + " bl SetMonData\n" + "._736:\n" + " ldr r3, [sp, #0x14]\n" + " lsl r0, r3, #0x1\n" + " ldr r1, ._741 + 4\n" + " add r0, r0, r1\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " cmp r1, #0\n" + " beq ._738 @cond_branch\n" + " cmp r1, #0x3\n" + " beq ._738 @cond_branch\n" + " cmp r1, #0x2\n" + " bgt ._739 @cond_branch\n" + " add r0, r1, #0\n" + " sub r0, r0, #0x1\n" + " b ._740\n" + "._742:\n" + " .align 2, 0\n" + "._741:\n" + " .word gPlayerParty\n" + " .word gUnknown_02023A14+0x98\n" + " .word gPlayerPartyCount\n" + " .word gUnknown_02023A14+0x9c\n" + " .word gUnknown_02023A14+0x52\n" + "._739:\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " sub r0, r0, #0x4\n" + "._740:\n" + " str r0, [sp, #0xc]\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r2, #0x64\n" + " mul r0, r0, r2\n" + " ldr r1, ._750\n" + " add r0, r0, r1\n" + " mov r1, #0x2e\n" + " add r2, sp, #0xc\n" + " bl SetMonData\n" + "._738:\n" + " ldr r3, [sp, #0x14]\n" + " lsl r0, r3, #0x1\n" + " ldr r1, ._750 + 4\n" + " add r0, r0, r1\n" + " mov r2, #0x0\n" + " ldsh r0, [r0, r2]\n" + " cmp r0, #0x2\n" + " ble ._743 @cond_branch\n" + " add r0, r7, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x3d30\n" + " mov r3, #0x64\n" + " mul r0, r0, r3\n" + " ldr r1, ._750\n" + " add r0, r0, r1\n" + " mov r1, #0x7\n" + " ldr r2, ._750 + 8\n" + " bl SetMonData\n" + " ldr r2, ._750 + 12\n" + " ldrb r0, [r2]\n" + " mov r1, #0x40\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + "._743:\n" + " mov r7, sl\n" + " cmp r7, #0x1d\n" + " bgt ._744 @cond_branch\n" + " b ._745\n" + "._744:\n" + " mov r0, #0x0\n" + " str r0, [sp, #0xc]\n" + " mov r0, #0x64\n" + " mov r8, r0\n" + " ldr r1, ._750 + 16\n" + " mov r9, r1\n" + " ldr r2, ._750\n" + " mov sl, r2\n" + "._747:\n" + " mov r7, #0x0\n" + "._746:\n" + " ldr r2, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r2\n" + " ldr r3, ._750 + 20\n" + " add r0, r0, r3\n" + " add r5, r7, #0\n" + " add r5, r5, #0xd\n" + " lsl r2, r2, #0x3\n" + " lsl r4, r7, #0x1\n" + " mov r3, r9\n" + " add r1, r4, r3\n" + " add r2, r2, r1\n" + " add r1, r5, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r1\n" + " ldr r2, ._750 + 20\n" + " add r0, r0, r2\n" + " add r6, r7, #0\n" + " add r6, r6, #0x11\n" + " lsl r1, r1, #0x3\n" + " add r1, r4, r1\n" + " add r1, r1, r9\n" + " mov r3, #0x0\n" + " ldsh r1, [r1, r3]\n" + " lsl r2, r1, #0x1\n" + " add r2, r2, r1\n" + " lsl r2, r2, #0x2\n" + " ldr r1, ._750 + 24\n" + " add r2, r2, r1\n" + " add r1, r6, #0\n" + " bl SetMonData\n" + " ldr r2, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r2\n" + " add r0, r0, sl\n" + " lsl r2, r2, #0x3\n" + " ldr r3, ._750 + 28\n" + " add r1, r4, r3\n" + " add r2, r2, r1\n" + " add r1, r5, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0xc]\n" + " mov r0, r8\n" + " mul r0, r0, r1\n" + " add r0, r0, sl\n" + " lsl r1, r1, #0x3\n" + " add r4, r4, r1\n" + " ldr r1, ._750 + 28\n" + " add r4, r4, r1\n" + " mov r2, #0x0\n" + " ldsh r1, [r4, r2]\n" + " lsl r2, r1, #0x1\n" + " add r2, r2, r1\n" + " lsl r2, r2, #0x2\n" + " ldr r3, ._750 + 24\n" + " add r2, r2, r3\n" + " add r1, r6, #0\n" + " bl SetMonData\n" + " add r7, r7, #0x1\n" + " cmp r7, #0x3\n" + " ble ._746 @cond_branch\n" + " ldr r0, [sp, #0xc]\n" + " add r0, r0, #0x1\n" + " str r0, [sp, #0xc]\n" + " cmp r0, #0x5\n" + " ble ._747 @cond_branch\n" + " ldr r3, ._750 + 32\n" + " add r4, r3, #0\n" + " add r4, r4, #0x44\n" + " ldrh r1, [r4]\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " cmp r0, #0x8\n" + " bne ._748 @cond_branch\n" + " ldr r0, ._750 + 12\n" + " ldrb r1, [r0]\n" + " mov r2, #0x80\n" + " b ._753\n" + "._751:\n" + " .align 2, 0\n" + "._750:\n" + " .word gPlayerParty\n" + " .word gUnknown_02023A14+0x98\n" + " .word UnkDebug0+0x291\n" + " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14+0xde\n" + " .word gEnemyParty\n" + " .word gBattleMoves+0x4\n" + " .word gUnknown_02023A14+0x10e\n" + " .word gUnknown_02023A14+0x52\n" + "._748:\n" + " cmp r0, #0x7\n" + " bne ._752 @cond_branch\n" + " ldr r0, ._754\n" + " ldrb r1, [r0]\n" + " mov r2, #0x20\n" + " b ._753\n" + "._755:\n" + " .align 2, 0\n" + "._754:\n" + " .word gUnknown_02023A14+0x50\n" + "._752:\n" + " cmp r0, #0x6\n" + " bne ._756 @cond_branch\n" + " ldr r2, ._759\n" + " ldrb r0, [r2]\n" + " mov r1, #0x10\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + " ldrh r1, [r3, #0x4]\n" + " mov r2, #0x4\n" + " ldsh r0, [r3, r2]\n" + " cmp r0, #0x5\n" + " ble ._757 @cond_branch\n" + " ldr r0, ._759 + 4\n" + " sub r1, r1, #0x2\n" + " ldr r3, ._759 + 8\n" + " add r0, r0, r3\n" + " b ._761\n" + "._760:\n" + " .align 2, 0\n" + "._759:\n" + " .word gUnknown_02023A14+0x50\n" + " .word +0x2000000\n" + " .word 0x160a3\n" + "._757:\n" + " ldr r0, ._762\n" + " ldr r2, ._762 + 4\n" + " add r0, r0, r2\n" + " b ._761\n" + "._763:\n" + " .align 2, 0\n" + "._762:\n" + " .word +0x2000000\n" + " .word 0x160a3\n" + "._756:\n" + " cmp r0, #0x5\n" + " bne ._764 @cond_branch\n" + " ldr r0, ._766\n" + " ldrb r1, [r0]\n" + " mov r2, #0x21\n" + "._753:\n" + " orr r1, r1, r2\n" + "._761:\n" + " strb r1, [r0]\n" + " bl sub_80408BC\n" + " b ._770\n" + "._767:\n" + " .align 2, 0\n" + "._766:\n" + " .word gUnknown_02023A14+0x50\n" + "._764:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._768 @cond_branch\n" + " bl sub_80408BC\n" + "._768:\n" + " ldrh r3, [r4]\n" + " mov r0, #0x2\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._769 @cond_branch\n" + " ldr r0, ._772\n" + " ldrb r1, [r0]\n" + " mov r2, #0x4\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + "._769:\n" + " mov r0, #0x4\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._770 @cond_branch\n" + " ldr r0, ._772\n" + " ldrb r1, [r0]\n" + " mov r2, #0x6\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + "._770:\n" + " ldr r0, ._772 + 4\n" + " ldr r1, ._772 + 8\n" + " str r1, [r0, #0x8]\n" + " ldr r0, ._772 + 12\n" + " bl SetMainCallback2\n" + " bl ClearBag\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x2\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x3\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x4\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x5\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x6\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x7\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x8\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x9\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0xa\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0xb\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0xc\n" + " mov r1, #0xa\n" + " bl AddBagItem\n" + " mov r0, #0x13\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x14\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x19\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x22\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x23\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x25\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x49\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4a\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4b\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4c\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4d\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x4e\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " mov r0, #0x50\n" + " mov r1, #0x63\n" + " bl AddBagItem\n" + " ldr r4, ._772 + 16\n" + " mov r7, #0xe\n" + "._771:\n" + " add r0, r4, #0\n" + " bl sub_810CA34\n" + " add r4, r4, #0x8\n" + " sub r7, r7, #0x1\n" + " cmp r7, #0\n" + " bge ._771 @cond_branch\n" + " add sp, sp, #0x18\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._773:\n" + " .align 2, 0\n" + "._772:\n" + " .word gUnknown_02023A14+0x50\n" + " .word gMain\n" + " .word debug_sub_80108B8+1\n" + " .word unref_sub_800D684+1\n" + " .word UnkDebug0+0x1f4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011D40() +{ + asm( + " push {lr}\n" + " ldr r1, ._774\n" + " ldr r0, ._774 + 4\n" + " str r0, [r1]\n" + " ldr r0, ._774 + 8\n" + " str r0, [r1, #0x4]\n" + " ldr r0, ._774 + 12\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " sub r1, r1, #0xc4\n" + " ldr r0, ._774 + 16\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 20\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 24\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 28\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 32\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 36\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 40\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._774 + 44\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " pop {r0}\n" + " bx r0\n" + "._775:\n" + " .align 2, 0\n" + "._774:\n" + " .word 0x40000d4\n" + " .word +0x2000000\n" + " .word 0x6004000\n" + " .word 0x80000800\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_nullsub_45() +{ + asm( + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011DD4() +{ + asm( + " push {lr}\n" + " ldr r1, ._776\n" + " ldr r2, ._776 + 4\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x8\n" + " ldr r0, ._776 + 8\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 12\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 16\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 20\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 24\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 28\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 32\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r0, ._776 + 36\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " bl TransferPlttBuffer\n" + " bl sub_8089668\n" + " pop {r0}\n" + " bx r0\n" + "._777:\n" + " .align 2, 0\n" + "._776:\n" + " .word 0x4000008\n" + " .word 0x9803\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011E5C() +{ + asm( + " push {r4, lr}\n" + " mov r4, #0x0\n" + "._778:\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8011EA0\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x1e\n" + " ble ._778 @cond_branch\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011E74() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r0, ._780\n" + " ldrb r5, [r0]\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " add r4, r0, #0\n" + "._779:\n" + " bl debug_sub_8012294\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bls ._779 @cond_branch\n" + " ldr r0, ._780\n" + " strb r5, [r0]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._781:\n" + " .align 2, 0\n" + "._780:\n" + " .word gUnknown_Debug_030043A8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8011EA0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffff4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x22\n" + " bls ._782 @cond_branch\n" + " b ._815\n" + "._782:\n" + " lsl r0, r7, #0x2\n" + " ldr r1, ._785\n" + " add r1, r0, r1\n" + " ldr r1, [r1]\n" + " str r0, [sp, #0x8]\n" + " mov pc, r1\n" + "._786:\n" + " .align 2, 0\n" + "._785:\n" + " .word ._784\n" + "._784:\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._812\n" + " .word ._817\n" + " .word ._814\n" + " .word ._815\n" + " .word ._816\n" + " .word ._817\n" + " .word ._848\n" + " .word ._848\n" + " .word ._848\n" + " .word ._848\n" + "._812:\n" + " mov r0, #0x0\n" + " mov r1, #0x14\n" + " bl debug_sub_8010A7C\n" + " ldr r6, ._823\n" + " ldr r2, ._823 + 4\n" + " ldr r0, [sp, #0x8]\n" + " add r1, r0, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r2\n" + " ldrh r0, [r0]\n" + " str r0, [sp, #0x4]\n" + " add r0, r2, #2\n" + " add r0, r1, r0\n" + " ldrb r0, [r0]\n" + " mov r8, r0\n" + " add r2, r2, #0x4\n" + " add r1, r1, r2\n" + " ldrb r1, [r1]\n" + " mov r9, r1\n" + " str r1, [sp]\n" + " ldr r0, ._823 + 8\n" + " add r1, r6, #0\n" + " ldr r2, [sp, #0x4]\n" + " mov r3, r8\n" + " bl InitWindow\n" + " ldr r0, ._823 + 8\n" + " bl sub_8002F44\n" + " ldr r1, ._823 + 12\n" + " mov sl, r1\n" + " lsl r4, r7, #0x1\n" + " ldr r5, ._823 + 16\n" + " ldrb r0, [r5]\n" + " mov r7, #0x46\n" + " mul r0, r0, r7\n" + " add r0, r4, r0\n" + " add r0, r0, sl\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " add r0, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r2, #0xd3\n" + " lsl r2, r2, #0x1\n" + " ldrb r3, [r5]\n" + " lsl r3, r3, #0x5\n" + " add r3, r3, #0x19\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " ldr r0, ._823 + 8\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " ldr r0, ._823 + 8\n" + " bl sub_8002F44\n" + " mov r0, #0xff\n" + " strb r0, [r6]\n" + " ldrb r0, [r5]\n" + " mul r0, r0, r7\n" + " add r4, r4, r0\n" + " add r4, r4, sl\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " mov r0, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._823 + 20\n" + " add r1, r1, r0\n" + " add r0, r6, #0\n" + " bl StringAppend\n" + " mov r1, r9\n" + " str r1, [sp]\n" + " ldr r0, ._823 + 8\n" + " add r1, r6, #0\n" + " ldr r2, [sp, #0x4]\n" + " mov r3, r8\n" + " bl InitWindow\n" + " ldr r0, ._823 + 8\n" + " bl sub_8002F44\n" + " b ._848\n" + "._824:\n" + " .align 2, 0\n" + "._823:\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_03004370\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word gSpeciesNames\n" + "._817:\n" + " ldr r6, ._826\n" + " ldr r3, ._826 + 4\n" + " lsl r1, r7, #0x1\n" + " ldr r0, ._826 + 8\n" + " ldrb r2, [r0]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r3\n" + " mov r2, #0x0\n" + " ldsh r1, [r1, r2]\n" + " add r0, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " b ._825\n" + "._827:\n" + " .align 2, 0\n" + "._826:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + "._814:\n" + " mov r0, #0x0\n" + " mov r1, #0x18\n" + " bl debug_sub_8010A7C\n" + " ldr r6, ._830\n" + " ldr r1, ._830 + 4\n" + " mov sl, r1\n" + " ldr r4, ._830 + 8\n" + " ldr r2, [sp, #0x8]\n" + " add r1, r2, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " mov r1, sl\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " lsl r4, r7, #0x1\n" + " ldr r5, ._830 + 12\n" + " ldrb r0, [r5]\n" + " mov r1, #0x46\n" + " mul r0, r0, r1\n" + " add r0, r4, r0\n" + " ldr r2, ._830 + 16\n" + " add r0, r0, r2\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " mov r0, sl\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r2, #0xd3\n" + " lsl r2, r2, #0x1\n" + " ldrb r3, [r5]\n" + " lsl r3, r3, #0x5\n" + " add r3, r3, #0x19\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " mov r1, sl\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " mov r0, #0xff\n" + " mov r1, sl\n" + " strb r0, [r1]\n" + " ldrb r0, [r5]\n" + " mov r2, #0x46\n" + " mul r0, r0, r2\n" + " add r4, r4, r0\n" + " ldr r0, ._830 + 16\n" + " add r4, r4, r0\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0\n" + " beq ._828 @cond_branch\n" + " ldrh r0, [r4]\n" + " bl ItemId_GetItem\n" + " add r1, r0, #0\n" + " mov r0, sl\n" + " bl StringAppend\n" + " b ._829\n" + "._831:\n" + " .align 2, 0\n" + "._830:\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_02023A14+0x52\n" + "._828:\n" + " ldr r1, ._833\n" + " mov r0, sl\n" + " bl StringAppend\n" + "._829:\n" + " ldr r6, ._833 + 4\n" + " ldr r1, ._833 + 8\n" + " ldr r5, ._833 + 12\n" + " ldr r2, [sp, #0x8]\n" + " add r4, r2, r7\n" + " lsl r4, r4, #0x1\n" + " add r0, r4, r5\n" + " ldrh r2, [r0]\n" + " add r0, r5, #2\n" + " add r0, r4, r0\n" + " ldrb r3, [r0]\n" + " add r5, r5, #0x4\n" + " add r4, r4, r5\n" + " ldrb r0, [r4]\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " b ._848\n" + "._834:\n" + " .align 2, 0\n" + "._833:\n" + " .word UnkDebug0+0x26c\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + "._816:\n" + " mov r0, #0x0\n" + " mov r1, #0x4\n" + " bl debug_sub_8010A7C\n" + " ldr r5, ._839\n" + " ldr r6, ._839 + 4\n" + " ldr r4, ._839 + 8\n" + " ldr r0, [sp, #0x8]\n" + " add r1, r0, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " mov r4, #0x0\n" + " ldr r3, ._839 + 12\n" + " lsl r1, r7, #0x1\n" + " ldr r0, ._839 + 16\n" + " ldrb r2, [r0]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r3\n" + " mov r2, #0x0\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0x1\n" + " beq ._835 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._836 @cond_branch\n" + " cmp r0, #0\n" + " beq ._837 @cond_branch\n" + " b ._843\n" + "._840:\n" + " .align 2, 0\n" + "._839:\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x6c\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + "._836:\n" + " cmp r0, #0x2\n" + " beq ._841 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._842 @cond_branch\n" + " b ._843\n" + "._837:\n" + " mov r0, #0xb5\n" + " b ._844\n" + "._835:\n" + " mov r0, #0xb6\n" + "._844:\n" + " strb r0, [r6]\n" + " mov r4, #0x1\n" + " b ._847\n" + "._841:\n" + " mov r0, #0xb5\n" + " b ._846\n" + "._842:\n" + " mov r0, #0xb6\n" + "._846:\n" + " strb r0, [r6]\n" + " strb r0, [r6, #0x1]\n" + " mov r4, #0x2\n" + " b ._847\n" + "._843:\n" + " ldr r2, ._849\n" + " add r1, r4, r2\n" + " mov r0, #0xac\n" + " strb r0, [r1]\n" + " add r4, r4, #0x1\n" + " add r6, r2, #0\n" + "._847:\n" + " add r1, r4, r6\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + "._825:\n" + " ldr r5, ._849 + 4\n" + " ldr r4, ._849 + 8\n" + " ldr r0, [sp, #0x8]\n" + " add r1, r0, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " b ._848\n" + "._850:\n" + " .align 2, 0\n" + "._849:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x6c\n" + "._815:\n" + " ldr r6, ._851\n" + " ldr r3, ._851 + 4\n" + " lsl r1, r7, #0x1\n" + " ldr r0, ._851 + 8\n" + " ldrb r2, [r0]\n" + " mov r0, #0x46\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r3\n" + " mov r2, #0x0\n" + " ldsh r1, [r1, r2]\n" + " add r0, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r5, ._851 + 12\n" + " ldr r4, ._851 + 16\n" + " lsl r1, r7, #0x2\n" + " add r1, r1, r7\n" + " lsl r1, r1, #0x1\n" + " add r0, r1, r4\n" + " ldrh r2, [r0]\n" + " add r0, r4, #2\n" + " add r0, r1, r0\n" + " ldrb r3, [r0]\n" + " add r4, r4, #0x4\n" + " add r1, r1, r4\n" + " ldrb r0, [r1]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + "._848:\n" + " add sp, sp, #0xc\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._852:\n" + " .align 2, 0\n" + "._851:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x6c\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012294() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r2, ._854\n" + " ldr r0, ._854 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x1d\n" + " bhi ._853 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x18\n" + " bl debug_sub_8010A7C\n" + " ldr r0, ._854 + 8\n" + " mov sl, r0\n" + " ldr r1, ._854 + 12\n" + " mov r9, r1\n" + " ldr r2, ._854 + 16\n" + " mov r8, r2\n" + " ldr r7, ._854 + 20\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x1\n" + " add r1, r0, r2\n" + " ldrh r2, [r1]\n" + " ldr r3, ._854 + 24\n" + " add r1, r0, r3\n" + " ldrb r3, [r1]\n" + " ldr r1, ._854 + 28\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r9\n" + " bl InitWindow\n" + " mov r0, sl\n" + " bl sub_8002F44\n" + " ldrb r4, [r7]\n" + " lsl r4, r4, #0x1\n" + " add r0, r5, #0\n" + " mov r1, #0x5\n" + " bl gScriptFuncs_End+0x4358\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x15\n" + " add r4, r4, r5\n" + " ldr r6, ._854 + 32\n" + " ldrb r1, [r6]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " add r4, r4, r0\n" + " ldr r2, ._854 + 36\n" + " add r4, r4, r2\n" + " mov r3, #0x0\n" + " ldsh r1, [r4, r3]\n" + " mov r0, r9\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r2, #0xd3\n" + " lsl r2, r2, #0x1\n" + " ldrb r3, [r6]\n" + " lsl r3, r3, #0x5\n" + " add r3, r3, #0x19\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r9\n" + " bl InitWindow\n" + " mov r0, sl\n" + " bl sub_8002F44\n" + " mov r0, #0xff\n" + " mov r1, r9\n" + " strb r0, [r1]\n" + " ldrb r1, [r7]\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r5\n" + " ldrb r2, [r6]\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r2, ._854 + 36\n" + " add r1, r1, r2\n" + " mov r3, #0x0\n" + " ldsh r1, [r1, r3]\n" + " mov r0, #0xd\n" + " mul r1, r1, r0\n" + " ldr r0, ._854 + 40\n" + " add r1, r1, r0\n" + " mov r0, r9\n" + " bl StringAppend\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x1\n" + " add r8, r8, r0\n" + " mov r1, r8\n" + " ldrh r2, [r1]\n" + " ldr r3, ._854 + 24\n" + " add r1, r0, r3\n" + " ldrb r3, [r1]\n" + " ldr r1, ._854 + 28\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r9\n" + " bl InitWindow\n" + " mov r0, sl\n" + " bl sub_8002F44\n" + "._853:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._855:\n" + " .align 2, 0\n" + "._854:\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x1ac\n" + " .word gUnknown_Debug_030043A8\n" + " .word UnkDebug0+0x1ae\n" + " .word UnkDebug0+0x1b0\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_02023A14+0xde\n" + " .word gMoveNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80123D8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x1d\n" + " bhi ._856 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x12\n" + " bl debug_sub_8010A7C\n" + " ldr r4, ._858\n" + " ldr r0, ._858 + 4\n" + " mov r8, r0\n" + " ldr r6, ._858 + 8\n" + " ldrh r1, [r6]\n" + " mov sl, r1\n" + " ldrb r7, [r6, #0x2]\n" + " ldrb r2, [r6, #0x4]\n" + " mov r9, r2\n" + " str r2, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r2, sl\n" + " add r3, r7, #0\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " lsl r5, r5, #0x1\n" + " ldr r1, ._858 + 12\n" + " ldrb r0, [r1]\n" + " mov r2, #0x46\n" + " mul r0, r0, r2\n" + " add r0, r5, r0\n" + " ldr r1, ._858 + 16\n" + " add r0, r0, r1\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._858 + 20\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x16]\n" + " mov r2, #0xd\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._858 + 24\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " bl StringCopy\n" + " mov r1, r9\n" + " str r1, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r2, sl\n" + " add r3, r7, #0\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " mov r0, #0x0\n" + " mov r1, #0x12\n" + " bl debug_sub_8010A7C\n" + " ldrh r2, [r6, #0x6]\n" + " mov r9, r2\n" + " ldrb r0, [r6, #0x8]\n" + " mov sl, r0\n" + " ldrb r6, [r6, #0xa]\n" + " str r6, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r3, sl\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._858 + 12\n" + " ldrb r0, [r1]\n" + " mov r2, #0x46\n" + " mul r0, r0, r2\n" + " add r5, r5, r0\n" + " ldr r0, ._858 + 16\n" + " add r5, r5, r0\n" + " mov r2, #0x0\n" + " ldsh r1, [r5, r2]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._858 + 20\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x17]\n" + " mov r2, #0xd\n" + " add r1, r0, #0\n" + " mul r1, r1, r2\n" + " ldr r0, ._858 + 24\n" + " add r1, r1, r0\n" + " mov r0, r8\n" + " bl StringCopy\n" + " str r6, [sp]\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " mov r2, r9\n" + " mov r3, sl\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " b ._857\n" + "._859:\n" + " .align 2, 0\n" + "._858:\n" + " .word gUnknown_Debug_03004370\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x1d4\n" + " .word gUnknown_Debug_03004360\n" + " .word gUnknown_02023A14+0x52\n" + " .word gBaseStats\n" + " .word gAbilityNames\n" + "._856:\n" + " ldr r6, ._860\n" + " ldr r1, ._860 + 4\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " ldr r5, ._860 + 8\n" + " ldr r4, ._860 + 12\n" + " ldrh r2, [r4]\n" + " ldrb r3, [r4, #0x2]\n" + " ldrb r0, [r4, #0x4]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " ldrh r2, [r4, #0x6]\n" + " ldrb r3, [r4, #0x8]\n" + " ldrb r0, [r4, #0xa]\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + "._857:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._861:\n" + " .align 2, 0\n" + "._860:\n" + " .word gBattleTextBuff1\n" + " .word gAbilityNames\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x1d4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012540() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r5, ._862\n" + " ldr r0, ._862 + 4\n" + " add r0, r0, #0x44\n" + " mov r2, #0x0\n" + " ldsh r1, [r0, r2]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r4, ._862 + 8\n" + " ldr r1, ._862 + 12\n" + " mov r3, #0x9b\n" + " lsl r3, r3, #0x1\n" + " add r0, r1, r3\n" + " ldrh r2, [r0]\n" + " mov r6, #0x9c\n" + " lsl r6, r6, #0x1\n" + " add r0, r1, r6\n" + " ldrb r3, [r0]\n" + " add r6, r6, #0x2\n" + " add r0, r1, r6\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._863:\n" + " .align 2, 0\n" + "._862:\n" + " .word gBattleTextBuff1\n" + " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_03004370\n" + " .word UnkDebug0+0x6c\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_nullsub_3() +{ + asm( + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80125A0() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._864\n" + " ldr r3, ._864 + 4\n" + " ldr r2, ._864 + 8\n" + " ldr r0, ._864 + 12\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._864 + 16\n" + " ldrb r2, [r1]\n" + " mov r1, #0x8c\n" + " mul r1, r1, r2\n" + " add r0, r0, r1\n" + " add r0, r0, r3\n" + " ldr r0, [r0]\n" + " add r0, r0, r4\n" + " mov r1, #0x6d\n" + " strb r1, [r0]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._865:\n" + " .align 2, 0\n" + "._864:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x2c8\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80125E4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._866\n" + " ldr r3, ._866 + 4\n" + " ldr r2, ._866 + 8\n" + " ldr r0, ._866 + 12\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._866 + 16\n" + " ldrb r2, [r1]\n" + " mov r1, #0x8c\n" + " mul r1, r1, r2\n" + " add r0, r0, r1\n" + " add r0, r0, r3\n" + " ldr r0, [r0]\n" + " add r0, r0, r4\n" + " mov r1, #0x81\n" + " strb r1, [r0]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._867:\n" + " .align 2, 0\n" + "._866:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x2c8\n" + " .word gUnknown_Debug_030043A0\n" + " .word gUnknown_Debug_030043A4\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012628() +{ + asm( + " ldr r3, ._868\n" + " ldr r2, ._868 + 4\n" + " ldr r0, ._868 + 8\n" + " ldrb r1, [r0]\n" + " lsl r1, r1, #0x2\n" + " ldr r0, ._868 + 12\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " add r1, r1, r2\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " mov r1, #0x6d\n" + " strb r1, [r0]\n" + " bx lr\n" + "._869:\n" + " .align 2, 0\n" + "._868:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x3e0\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012658() +{ + asm( + " ldr r3, ._870\n" + " ldr r2, ._870 + 4\n" + " ldr r0, ._870 + 8\n" + " ldrb r1, [r0]\n" + " lsl r1, r1, #0x2\n" + " ldr r0, ._870 + 12\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x4\n" + " add r1, r1, r0\n" + " add r1, r1, r2\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " mov r1, #0x81\n" + " strb r1, [r0]\n" + " bx lr\n" + "._871:\n" + " .align 2, 0\n" + "._870:\n" + " .word +0x2000000\n" + " .word UnkDebug0+0x3e0\n" + " .word gUnknown_Debug_030043A8\n" + " .word gUnknown_Debug_03004360\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012688() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffff4\n" + " mov r1, #0x0\n" + " mov r4, #0xcd\n" + " lsl r4, r4, #0x1\n" + " ldr r3, ._873\n" + " mov r2, #0x0\n" + "._872:\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, r4\n" + " ble ._872 @cond_branch\n" + " mov r0, #0x0\n" + " bl SetHBlankCallback\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r5, #0x0\n" + " str r5, [sp, #0x8]\n" + " ldr r1, ._873 + 4\n" + " add r0, sp, #0x8\n" + " str r0, [r1]\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x13\n" + " str r0, [r1, #0x4]\n" + " ldr r0, ._873 + 8\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " ldr r0, ._873 + 12\n" + " strh r5, [r0]\n" + " sub r0, r0, #0xc\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " add r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x2\n" + " strh r5, [r0]\n" + " ldr r4, ._873 + 16\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " bl ResetPaletteFade\n" + " ldr r0, ._873 + 20\n" + " strh r5, [r0]\n" + " ldr r1, ._873 + 24\n" + " mov r0, #0xa0\n" + " strh r0, [r1]\n" + " ldr r0, ._873 + 28\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 32\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 36\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 40\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 44\n" + " strh r5, [r0]\n" + " ldr r0, ._873 + 48\n" + " strh r5, [r0]\n" + " ldr r1, ._873 + 52\n" + " mov r0, #0x9\n" + " strb r0, [r1]\n" + " bl sub_800D6D4\n" + " bl sub_800DAB8\n" + " bl ResetSpriteData\n" + " bl ResetTasks\n" + " bl FreeAllSpritePalettes\n" + " ldr r1, ._873 + 56\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r6, ._873 + 60\n" + " mov r0, #0x1\n" + " strh r0, [r6]\n" + " ldr r0, ._873 + 64\n" + " add r1, r4, #0\n" + " bl InitWindowFromConfig\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._873 + 68\n" + " add r0, r0, r1\n" + " ldr r1, ._873 + 72\n" + " mov r8, r1\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r8\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x12\n" + " ldr r4, ._873 + 76\n" + " ldr r4, [r4, #0x4]\n" + " str r4, [sp]\n" + " ldrh r4, [r6]\n" + " str r4, [sp, #0x4]\n" + " bl DecompressPicFromTable_2\n" + " ldr r1, ._873 + 80\n" + " ldrh r0, [r6]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x88\n" + " lsl r1, r1, #0x1\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " ldrh r0, [r6]\n" + " mov r1, #0x1\n" + " bl GetMonSpriteTemplate_803C56C\n" + " ldr r0, ._873 + 84\n" + " ldrh r1, [r6]\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r8\n" + " ldrb r2, [r1, #0x1]\n" + " add r2, r2, #0x28\n" + " mov r1, #0xb0\n" + " mov r3, #0x28\n" + " bl CreateSprite\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r3, ._873 + 88\n" + " lsl r1, r4, #0x4\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x2\n" + " add r0, r3, #0\n" + " add r0, r0, #0x1c\n" + " add r0, r1, r0\n" + " ldr r2, ._873 + 92\n" + " str r2, [r0]\n" + " add r1, r1, r3\n" + " ldrb r2, [r1, #0x5]\n" + " mov r0, #0xf\n" + " and r0, r0, r2\n" + " mov r2, #0x10\n" + " orr r0, r0, r2\n" + " strb r0, [r1, #0x5]\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0xfa\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._873 + 96\n" + " bl SetHBlankCallback\n" + " ldr r0, ._873 + 100\n" + " bl SetVBlankCallback\n" + " bl gScriptFuncs_End+0x14f4\n" + " ldr r0, ._873 + 104\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._873 + 108\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " strh r5, [r1, #0x8]\n" + " strh r4, [r1, #0xa]\n" + " ldr r0, ._873 + 112\n" + " bl SetMainCallback2\n" + " add sp, sp, #0xc\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._874:\n" + " .align 2, 0\n" + "._873:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word 0x40000d4\n" + " .word 0x85006000\n" + " .word 0x400004c\n" + " .word gWindowConfig_81E6C58\n" + " .word gUnknown_030042A4\n" + " .word gUnknown_030042A0\n" + " .word gUnknown_030042C0\n" + " .word gUnknown_030041B4\n" + " .word gUnknown_03004288\n" + " .word gUnknown_03004280\n" + " .word gUnknown_030041B0\n" + " .word gUnknown_030041B8\n" + " .word gBattleTerrain\n" + " .word gReservedSpritePaletteCount\n" + " .word gCurrentMove\n" + " .word gUnknown_03004210\n" + " .word gMonFrontPicTable\n" + " .word gMonFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gMonPaletteTable\n" + " .word gUnknown_02024E8C\n" + " .word gSprites\n" + " .word nullsub_37+1\n" + " .word debug_nullsub_45+1\n" + " .word debug_sub_8011DD4+1\n" + " .word debug_sub_8012D10+1\n" + " .word gTasks\n" + " .word debug_sub_8012878+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012878() +{ + asm( + " push {lr}\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r0, ._876\n" + " bl sub_800374C\n" + " bl UpdatePaletteFade\n" + " bl RunTasks\n" + " ldr r0, ._876 + 4\n" + " ldrh r1, [r0, #0x2c]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._875 @cond_branch\n" + " ldr r0, ._876 + 8\n" + " bl SetMainCallback2\n" + "._875:\n" + " pop {r0}\n" + " bx r0\n" + "._877:\n" + " .align 2, 0\n" + "._876:\n" + " .word gUnknown_03004210\n" + " .word gMain\n" + " .word debug_sub_80108B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80128B4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " mov r1, #0x9\n" + " bl debug_sub_8010A7C\n" + " ldr r5, ._878\n" + " ldr r4, ._878 + 4\n" + " mov r0, #0x23\n" + " mov r8, r0\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " ldr r6, ._878 + 8\n" + " ldrh r1, [r6]\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0x0\n" + " strb r0, [r4, #0x3]\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x4]\n" + " ldrh r1, [r6]\n" + " mov r0, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._878 + 12\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " bl StringAppend\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._879:\n" + " .align 2, 0\n" + "._878:\n" + " .word gUnknown_03004210\n" + " .word gBattleTextBuff1\n" + " .word gCurrentMove\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012938() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, sl\n" + " mov r5, r9\n" + " mov r4, r8\n" + " push {r4, r5, r6}\n" + " add sp, sp, #0xfffffffc\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x7\n" + " bl debug_sub_8010A7C\n" + " ldr r6, ._880\n" + " ldr r4, ._880 + 4\n" + " mov r0, #0x25\n" + " mov r8, r0\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " mov r2, #0xa2\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._880 + 8\n" + " add r0, r4, #0\n" + " bl StringCopy\n" + " add r0, r4, #4\n" + " ldr r1, ._880 + 12\n" + " mov sl, r1\n" + " ldr r2, ._880 + 16\n" + " mov r9, r2\n" + " ldrh r1, [r2]\n" + " sub r1, r1, #0x1\n" + " add r1, r1, sl\n" + " ldrb r1, [r1]\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " mov r2, #0xa2\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r6, #0\n" + " bl sub_8002F44\n" + " ldr r2, ._880 + 20\n" + " ldr r1, ._880 + 24\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0xa\n" + " ldsh r0, [r0, r1]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r2\n" + " mov r2, r9\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x1\n" + " add r0, r0, sl\n" + " ldrb r0, [r0]\n" + " neg r0, r0\n" + " strh r0, [r1, #0x26]\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._881:\n" + " .align 2, 0\n" + "._880:\n" + " .word gUnknown_03004210\n" + " .word gBattleTextBuff1\n" + " .word UnkDebug0+0x400\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + " .word gSprites\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80129F8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffff8\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r6, ._882\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._882 + 4\n" + " add r0, r0, r1\n" + " ldr r1, ._882 + 8\n" + " mov r8, r1\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r8\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x12\n" + " ldr r4, ._882 + 12\n" + " ldr r4, [r4, #0x4]\n" + " str r4, [sp]\n" + " ldrh r4, [r6]\n" + " str r4, [sp, #0x4]\n" + " bl DecompressPicFromTable_2\n" + " ldr r1, ._882 + 16\n" + " ldrh r0, [r6]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x88\n" + " lsl r1, r1, #0x1\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " ldr r4, ._882 + 20\n" + " ldr r0, ._882 + 24\n" + " lsl r2, r5, #0x2\n" + " add r2, r2, r5\n" + " lsl r2, r2, #0x3\n" + " add r2, r2, r0\n" + " mov r1, #0xa\n" + " ldsh r0, [r2, r1]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldrh r0, [r6]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " ldrb r0, [r0, #0x1]\n" + " add r0, r0, #0x28\n" + " strh r0, [r1, #0x22]\n" + " mov r1, #0xa\n" + " ldsh r0, [r2, r1]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldr r3, ._882 + 28\n" + " ldrh r0, [r6]\n" + " sub r0, r0, #0x1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " neg r0, r0\n" + " strh r0, [r1, #0x26]\n" + " mov r0, #0xa\n" + " ldsh r1, [r2, r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r4\n" + " mov r1, #0x0\n" + " bl StartSpriteAnim\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._883:\n" + " .align 2, 0\n" + "._882:\n" + " .word gCurrentMove\n" + " .word gMonFrontPicTable\n" + " .word gMonFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gMonPaletteTable\n" + " .word gSprites\n" + " .word gTasks\n" + " .word gUnknown_02023A14+0x13e\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012AC0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " ldr r3, ._885\n" + " ldr r4, ._885 + 4\n" + " b ._884\n" + "._886:\n" + " .align 2, 0\n" + "._885:\n" + " .word gCurrentMove\n" + " .word gBaseStats\n" + "._890:\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0x2\n" + " beq ._887 @cond_branch\n" + "._884:\n" + " add r2, r3, #0\n" + " lsl r0, r5, #0x18\n" + " asr r0, r0, #0x18\n" + " ldrh r1, [r2]\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " bne ._888 @cond_branch\n" + " ldr r1, ._891\n" + " add r0, r1, #0\n" + " strh r0, [r2]\n" + "._888:\n" + " ldrh r1, [r2]\n" + " ldr r0, ._891\n" + " cmp r1, r0\n" + " bne ._889 @cond_branch\n" + " mov r0, #0x1\n" + " strh r0, [r2]\n" + "._889:\n" + " ldrh r0, [r3]\n" + " lsl r1, r0, #0x3\n" + " sub r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldrb r0, [r1, #0x6]\n" + " cmp r0, #0x2\n" + " bne ._890 @cond_branch\n" + "._887:\n" + " bl debug_sub_80128B4\n" + " add r0, r6, #0\n" + " bl debug_sub_8012938\n" + " add r0, r6, #0\n" + " bl debug_sub_80129F8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._892:\n" + " .align 2, 0\n" + "._891:\n" + " .word 0x19b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012B2C() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x11\n" + " ldr r1, ._893\n" + " add r2, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r2]\n" + " ldr r1, ._893 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0x2\n" + " strh r1, [r0]\n" + " bx lr\n" + "._894:\n" + " .align 2, 0\n" + "._893:\n" + " .word 0x600c772\n" + " .word 0x600c7b2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012B4C() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x11\n" + " ldr r2, ._895\n" + " add r1, r0, r2\n" + " ldr r3, ._895 + 4\n" + " add r2, r3, #0\n" + " strh r2, [r1]\n" + " ldr r1, ._895 + 8\n" + " add r0, r0, r1\n" + " strh r2, [r0]\n" + " bx lr\n" + "._896:\n" + " .align 2, 0\n" + "._895:\n" + " .word 0x600c772\n" + " .word 0x1016\n" + " .word 0x600c7b2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012B70() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " cmp r6, #0\n" + " beq ._897 @cond_branch\n" + " mov r4, #0x1\n" + " str r4, [sp]\n" + " mov r0, #0x18\n" + " mov r1, #0x1c\n" + " mov r2, #0x1d\n" + " mov r3, #0x21\n" + " bl sub_802BBD4\n" + " bl debug_sub_80128B4\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " add r0, r5, #0\n" + " bl debug_sub_80129F8\n" + " ldr r1, ._899\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " strh r4, [r0, #0x8]\n" + " b ._898\n" + "._900:\n" + " .align 2, 0\n" + "._899:\n" + " .word gTasks\n" + "._897:\n" + " str r6, [sp]\n" + " mov r0, #0x18\n" + " mov r1, #0x1c\n" + " mov r2, #0x1d\n" + " mov r3, #0x21\n" + " bl sub_802BBD4\n" + " ldr r0, ._901\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " mov r0, #0x2\n" + " strh r0, [r4, #0x8]\n" + " ldr r5, ._901 + 4\n" + " ldr r1, ._901 + 8\n" + " mov r2, #0xa4\n" + " lsl r2, r2, #0x2\n" + " mov r0, #0x1d\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " mov r3, #0x1a\n" + " bl InitWindow\n" + " add r0, r5, #0\n" + " bl sub_8002F44\n" + " strh r6, [r4, #0xe]\n" + " mov r0, #0x0\n" + " bl debug_sub_8012B2C\n" + "._898:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._902:\n" + " .align 2, 0\n" + "._901:\n" + " .word gTasks\n" + " .word gUnknown_03004210\n" + " .word UnkDebug0+0x422\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012C08() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r1, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x9\n" + " bl debug_sub_8010A7C\n" + " ldr r7, ._905\n" + " ldr r5, ._905 + 4\n" + " mov r0, #0x23\n" + " mov r8, r0\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r7, #0\n" + " bl sub_8002F44\n" + " mov r0, #0x0\n" + " mov r1, #0x7\n" + " bl debug_sub_8010A7C\n" + " mov r0, #0x25\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " mov r2, #0xa2\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " add r0, r7, #0\n" + " bl sub_8002F44\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x18\n" + " mov r1, #0x1c\n" + " mov r2, #0x1d\n" + " mov r3, #0x21\n" + " bl sub_802BBD4\n" + " cmp r4, #0\n" + " beq ._903 @cond_branch\n" + " ldr r1, ._905 + 8\n" + " lsl r4, r6, #0x2\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x4\n" + " strh r1, [r0, #0x8]\n" + " ldr r1, ._905 + 12\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + " b ._904\n" + "._906:\n" + " .align 2, 0\n" + "._905:\n" + " .word gUnknown_03004210\n" + " .word gBattleTextBuff1\n" + " .word gTasks\n" + " .word gUnknown_Debug_821F7F3\n" + "._903:\n" + " ldr r1, ._907\n" + " lsl r4, r6, #0x2\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x3\n" + " strh r1, [r0, #0x8]\n" + " ldr r1, ._907 + 4\n" + " mov r0, r8\n" + " str r0, [sp]\n" + " add r0, r7, #0\n" + " mov r2, #0x90\n" + " mov r3, #0x2\n" + " bl InitWindow\n" + "._904:\n" + " add r5, r4, #0\n" + " ldr r4, ._907 + 8\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._907 + 12\n" + " mov r2, #0xa4\n" + " lsl r2, r2, #0x2\n" + " mov r0, #0x1d\n" + " str r0, [sp]\n" + " add r0, r4, #0\n" + " mov r3, #0x1a\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._907\n" + " add r0, r5, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0xe]\n" + " mov r0, #0x1\n" + " bl debug_sub_8012B2C\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._908:\n" + " .align 2, 0\n" + "._907:\n" + " .word gTasks\n" + " .word UnkDebug0+0x432\n" + " .word gUnknown_03004210\n" + " .word gUnknown_08400D7A\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8012D10() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._911\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x8\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x4\n" + " bls ._909 @cond_branch\n" + " b ._1067\n" + "._909:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._911 + 4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._912:\n" + " .align 2, 0\n" + "._911:\n" + " .word gTasks\n" + " .word ._913\n" + "._913:\n" + " .word ._914\n" + " .word ._915\n" + " .word ._916\n" + " .word ._917\n" + " .word ._918\n" + "._914:\n" + " bl debug_sub_80128B4\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " ldr r4, ._920\n" + " ldr r1, ._920 + 4\n" + " mov r2, #0xc8\n" + " lsl r2, r2, #0x1\n" + " mov r0, #0x23\n" + " str r0, [sp]\n" + " add r0, r4, #0\n" + " mov r3, #0x13\n" + " bl InitWindow\n" + " add r0, r4, #0\n" + " bl sub_8002F44\n" + " ldr r1, ._920 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrh r1, [r0, #0x8]\n" + " add r1, r1, #0x1\n" + " strh r1, [r0, #0x8]\n" + " ldrb r0, [r0, #0xc]\n" + " b ._919\n" + "._921:\n" + " .align 2, 0\n" + "._920:\n" + " .word gUnknown_03004210\n" + " .word UnkDebug0+0x405\n" + " .word gTasks\n" + "._915:\n" + " ldr r2, ._924\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._922 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._924 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x3\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " b ._931\n" + "._925:\n" + " .align 2, 0\n" + "._924:\n" + " .word gMain\n" + " .word gTasks\n" + "._922:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._926 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._928\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x2\n" + " b ._927\n" + "._929:\n" + " .align 2, 0\n" + "._928:\n" + " .word gTasks\n" + "._926:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._930 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._932\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " b ._931\n" + "._933:\n" + " .align 2, 0\n" + "._932:\n" + " .word gTasks\n" + "._930:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._934 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._936\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xc]\n" + " bl nullsub_8\n" + " ldrh r1, [r4, #0xc]\n" + " mov r0, #0x1\n" + "._927:\n" + " orr r0, r0, r1\n" + "._931:\n" + " strh r0, [r4, #0xc]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + "._919:\n" + " mov r1, #0x0\n" + " bl sub_802E3E4\n" + " b ._1067\n" + "._937:\n" + " .align 2, 0\n" + "._936:\n" + " .word gTasks\n" + "._934:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r4, #0x1\n" + " add r0, r4, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._938 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._943\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r2, #0xc\n" + " ldsh r0, [r0, r2]\n" + " cmp r0, #0x1\n" + " beq ._939 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._940 @cond_branch\n" + " cmp r0, #0\n" + " beq ._941 @cond_branch\n" + " b ._1067\n" + "._944:\n" + " .align 2, 0\n" + "._943:\n" + " .word gTasks\n" + "._940:\n" + " cmp r0, #0x2\n" + " beq ._945 @cond_branch\n" + "._990:\n" + " cmp r0, #0x3\n" + " bne ._946 @cond_branch\n" + " b ._1014\n" + "._946:\n" + " b ._1067\n" + "._941:\n" + " ldr r1, ._952\n" + " ldr r0, ._952 + 4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r1\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3f\n" + " bls ._949 @cond_branch\n" + " b ._1067\n" + "._949:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._1019\n" + "._953:\n" + " .align 2, 0\n" + "._952:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._939:\n" + " mov r0, #0x1\n" + " b ._997\n" + "._945:\n" + " ldr r1, ._957\n" + " ldrh r2, [r1]\n" + " mov r0, #0xcd\n" + " lsl r0, r0, #0x1\n" + " cmp r2, r0\n" + " bhi ._955 @cond_branch\n" + " add r0, r2, #1\n" + "._979:\n" + " strh r0, [r1]\n" + " b ._1025\n" + "._958:\n" + " .align 2, 0\n" + "._957:\n" + " .word gCurrentMove\n" + "._955:\n" + " strh r4, [r1]\n" + " b ._1025\n" + "._938:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._960 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._966\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0xc\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x1\n" + " bne ._961 @cond_branch\n" + " b ._1007\n" + "._961:\n" + " cmp r0, #0x1\n" + " bgt ._963 @cond_branch\n" + " cmp r0, #0\n" + " beq ._964 @cond_branch\n" + " b ._1067\n" + "._967:\n" + " .align 2, 0\n" + "._966:\n" + " .word gTasks\n" + "._963:\n" + " cmp r0, #0x2\n" + " beq ._968 @cond_branch\n" + " b ._990\n" + "._964:\n" + " ldr r1, ._973\n" + " ldr r0, ._973 + 4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r1\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._970 @cond_branch\n" + " b ._1067\n" + "._970:\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._1019\n" + "._974:\n" + " .align 2, 0\n" + "._973:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._968:\n" + " ldr r1, ._977\n" + " ldrh r0, [r1]\n" + " cmp r0, #0x1\n" + " bls ._975 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._979\n" + "._978:\n" + " .align 2, 0\n" + "._977:\n" + " .word gCurrentMove\n" + "._975:\n" + " ldr r2, ._980\n" + " add r0, r2, #0\n" + " b ._979\n" + "._981:\n" + " .align 2, 0\n" + "._980:\n" + " .word 0x19b\n" + "._960:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._982 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._987\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0xc\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x1\n" + " beq ._983 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._984 @cond_branch\n" + " cmp r0, #0\n" + " beq ._985 @cond_branch\n" + " b ._1067\n" + "._988:\n" + " .align 2, 0\n" + "._987:\n" + " .word gTasks\n" + "._984:\n" + " cmp r0, #0x2\n" + " beq ._989 @cond_branch\n" + " b ._990\n" + "._985:\n" + " ldr r3, ._995\n" + " ldr r2, ._995 + 4\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r3\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3f\n" + " bls ._991 @cond_branch\n" + " b ._1067\n" + "._991:\n" + " add r0, r0, #0x8\n" + " strb r0, [r1]\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x1\n" + " add r1, r0, r3\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x40\n" + " bls ._1019 @cond_branch\n" + " mov r0, #0x40\n" + " strb r0, [r1]\n" + " b ._1019\n" + "._996:\n" + " .align 2, 0\n" + "._995:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._983:\n" + " mov r0, #0x1\n" + " b ._997\n" + "._989:\n" + " ldr r3, ._1000\n" + " ldrh r2, [r3]\n" + " add r1, r2, #0\n" + " add r1, r1, #0xa\n" + " ldr r0, ._1000 + 4\n" + " cmp r1, r0\n" + " bgt ._998 @cond_branch\n" + " strh r1, [r3]\n" + " b ._1025\n" + "._1001:\n" + " .align 2, 0\n" + "._1000:\n" + " .word gCurrentMove\n" + " .word 0x19b\n" + "._998:\n" + " ldr r1, ._1003\n" + " add r0, r2, r1\n" + " strh r0, [r3]\n" + " b ._1025\n" + "._1004:\n" + " .align 2, 0\n" + "._1003:\n" + " .word 0xfffffe70\n" + "._982:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1005 @cond_branch\n" + " b ._1067\n" + "._1005:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._1011\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r2, #0xc\n" + " ldsh r3, [r0, r2]\n" + " cmp r3, #0x1\n" + " beq ._1007 @cond_branch\n" + " cmp r3, #0x1\n" + " bgt ._1008 @cond_branch\n" + " cmp r3, #0\n" + " beq ._1009 @cond_branch\n" + " b ._1067\n" + "._1012:\n" + " .align 2, 0\n" + "._1011:\n" + " .word gTasks\n" + "._1008:\n" + " cmp r3, #0x2\n" + " beq ._1013 @cond_branch\n" + " cmp r3, #0x3\n" + " beq ._1014 @cond_branch\n" + " b ._1067\n" + "._1009:\n" + " ldr r1, ._1020\n" + " ldr r0, ._1020 + 4\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x1\n" + " add r2, r0, r1\n" + " ldrb r0, [r2]\n" + " add r1, r0, #0\n" + " cmp r1, #0\n" + " bne ._1016 @cond_branch\n" + " b ._1067\n" + "._1016:\n" + " cmp r1, #0x8\n" + " bls ._1018 @cond_branch\n" + " sub r0, r0, #0x8\n" + " strb r0, [r2]\n" + " b ._1019\n" + "._1021:\n" + " .align 2, 0\n" + "._1020:\n" + " .word gUnknown_02023A14+0x13e\n" + " .word gCurrentMove\n" + "._1018:\n" + " strb r3, [r2]\n" + "._1019:\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " b ._1067\n" + "._1007:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + "._997:\n" + " add r1, r5, #0\n" + " bl debug_sub_8012AC0\n" + " b ._1067\n" + "._1013:\n" + " ldr r2, ._1026\n" + " ldrh r0, [r2]\n" + " add r1, r0, #0\n" + " sub r1, r1, #0xa\n" + " cmp r1, #0x1\n" + " ble ._1024 @cond_branch\n" + " strh r1, [r2]\n" + " b ._1025\n" + "._1027:\n" + " .align 2, 0\n" + "._1026:\n" + " .word gCurrentMove\n" + "._1024:\n" + " mov r1, #0xc8\n" + " lsl r1, r1, #0x1\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + "._1025:\n" + " bl debug_sub_80128B4\n" + " add r0, r5, #0\n" + " bl debug_sub_8012938\n" + " add r0, r5, #0\n" + " bl debug_sub_80129F8\n" + " b ._1067\n" + "._1014:\n" + " add r0, r5, #0\n" + " mov r1, #0x0\n" + " bl debug_sub_8012B70\n" + " b ._1067\n" + "._916:\n" + " ldr r0, ._1032\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1030 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1032 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x0\n" + " b ._1055\n" + "._1033:\n" + " .align 2, 0\n" + "._1032:\n" + " .word gMain\n" + " .word gTasks\n" + "._1030:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1046 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1035 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1037\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldrb r1, [r1, #0xe]\n" + " add r0, r5, #0\n" + " bl debug_sub_8012C08\n" + " b ._1067\n" + "._1038:\n" + " .align 2, 0\n" + "._1037:\n" + " .word gTasks\n" + "._1035:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1039 @cond_branch\n" + " b ._1067\n" + "._1039:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._1063\n" + "._917:\n" + " ldr r0, ._1044\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1042 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1044 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x0\n" + " b ._1055\n" + "._1045:\n" + " .align 2, 0\n" + "._1044:\n" + " .word gMain\n" + " .word gTasks\n" + "._1042:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1046 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1047 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1050\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r2, #0xe\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0\n" + " bne ._1063 @cond_branch\n" + " ldr r1, ._1050 + 4\n" + " ldr r2, ._1050 + 8\n" + " mov r0, #0x1f\n" + " bl debug_sub_80132C8\n" + " b ._1063\n" + "._1051:\n" + " .align 2, 0\n" + "._1050:\n" + " .word gTasks\n" + " .word gUnknown_02023A14+0x13e\n" + " .word 0x19b\n" + "._1047:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1067 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._1063\n" + "._918:\n" + " ldr r0, ._1056\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1054 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1056 + 4\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x0\n" + " b ._1055\n" + "._1057:\n" + " .align 2, 0\n" + "._1056:\n" + " .word gMain\n" + " .word gTasks\n" + "._1054:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1058 @cond_branch\n" + "._1046:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1060\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " ldrb r0, [r4, #0xe]\n" + " bl debug_sub_8012B4C\n" + " mov r0, #0x1\n" + "._1055:\n" + " strh r0, [r4, #0xe]\n" + " bl debug_sub_8012B2C\n" + " b ._1067\n" + "._1061:\n" + " .align 2, 0\n" + "._1060:\n" + " .word gTasks\n" + "._1058:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1062 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._1065\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r2, #0xe\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0\n" + " bne ._1063 @cond_branch\n" + " ldr r1, ._1065 + 4\n" + " ldr r2, ._1065 + 8\n" + " mov r0, #0x1f\n" + " bl debug_sub_8013294\n" + "._1063:\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl debug_sub_8012B70\n" + " b ._1067\n" + "._1066:\n" + " .align 2, 0\n" + "._1065:\n" + " .word gTasks\n" + " .word gUnknown_02023A14+0x13e\n" + " .word 0x19b\n" + "._1062:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1067 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl debug_sub_8012B70\n" + "._1067:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8013240() +{ + asm( + " push {lr}\n" + " bl gScriptFuncs_End+0x2fec\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " beq ._1068 @cond_branch\n" + " mov r0, #0x1\n" + " b ._1069\n" + "._1068:\n" + " mov r0, #0x0\n" + "._1069:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8013258() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r1, #0\n" + " add r5, r2, #0\n" + " b ._1070\n" + "._1072:\n" + " ldr r0, ._1074\n" + " add r5, r5, r0\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x5\n" + " add r6, r6, r0\n" + " add r0, r4, #1\n" + "._1070:\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " cmp r0, #0\n" + " bne ._1071 @cond_branch\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x5\n" + " cmp r5, r0\n" + " bhi ._1072 @cond_branch\n" + " mov r0, #0x1\n" + " b ._1073\n" + "._1075:\n" + " .align 2, 0\n" + "._1074:\n" + " .word 0xfffff000\n" + "._1071:\n" + " mov r0, #0x0\n" + "._1073:\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8013294() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r1, #0\n" + " add r6, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl debug_sub_8013240\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1076 @cond_branch\n" + " bl gScriptFuncs_End+0x19f4\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " add r2, r6, #0\n" + " bl debug_sub_8013258\n" + " add r4, r0, #0\n" + " bl gScriptFuncs_End+0x1a70\n" + " add r0, r4, #0\n" + " b ._1077\n" + "._1076:\n" + " mov r0, #0x0\n" + "._1077:\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80132C8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r1, #0\n" + " add r6, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl debug_sub_8013240\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1078 @cond_branch\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " add r2, r5, #0\n" + " add r3, r6, #0\n" + " bl gScriptFuncs_End+0x2d64\n" + "._1078:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} +#endif + void oac_poke_opponent(struct Sprite *sprite) { sprite->callback = sub_8010278; @@ -1554,6 +8880,269 @@ void sub_8010800(void) gBattleMainFunc = bc_8012FAC; } +#if DEBUG +__attribute__((naked)) +void debug_sub_80138CC() +{ + asm( + " push {lr}\n" + " ldr r0, ._1167\n" + " ldrb r0, [r0]\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._1163 @cond_branch\n" + " b ._1186\n" + "._1163:\n" + " ldr r1, ._1167 + 4\n" + " ldr r2, ._1167 + 8\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " add r2, r1, #0\n" + " cmp r0, #0x4\n" + " bls ._1165 @cond_branch\n" + " b ._1186\n" + "._1165:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._1167 + 12\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._1168:\n" + " .align 2, 0\n" + "._1167:\n" + " .word gActiveBank\n" + " .word +0x2000000\n" + " .word 0x160fd\n" + " .word ._1169\n" + "._1169:\n" + " .word ._1170\n" + " .word ._1171\n" + " .word ._1172\n" + " .word ._1173\n" + " .word ._1174\n" + "._1170:\n" + " ldr r1, ._1177\n" + " ldr r0, ._1177 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " ldr r0, ._1177 + 8\n" + " cmp r1, r0\n" + " bne ._1186 @cond_branch\n" + " ldr r0, ._1177 + 12\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " b ._1187\n" + "._1178:\n" + " .align 2, 0\n" + "._1177:\n" + " .word gBattleBankFunc\n" + " .word gActiveBank\n" + " .word sub_802C098+1\n" + " .word 0x160fd\n" + "._1171:\n" + " ldr r1, ._1180\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2c]\n" + " strh r0, [r1, #0x2e]\n" + " ldr r0, ._1180 + 4\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._1180 + 8\n" + " add r1, r2, r0\n" + " mov r0, #0x80\n" + " b ._1187\n" + "._1181:\n" + " .align 2, 0\n" + "._1180:\n" + " .word gMain\n" + " .word 0x160fd\n" + " .word 0x160fe\n" + "._1172:\n" + " ldr r0, ._1184\n" + " add r3, r2, r0\n" + " ldrb r0, [r3]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r3]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1186 @cond_branch\n" + " ldr r1, ._1184 + 4\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2c]\n" + " strh r0, [r1, #0x2e]\n" + " ldr r0, ._1184 + 8\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x80\n" + " strb r0, [r3]\n" + " b ._1186\n" + "._1185:\n" + " .align 2, 0\n" + "._1184:\n" + " .word 0x160fe\n" + " .word gMain\n" + " .word 0x160fd\n" + "._1173:\n" + " ldr r0, ._1188\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._1186 @cond_branch\n" + " ldr r1, ._1188 + 4\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2c]\n" + " strh r0, [r1, #0x2e]\n" + " ldr r0, ._1188 + 8\n" + " add r1, r2, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " b ._1187\n" + "._1189:\n" + " .align 2, 0\n" + "._1188:\n" + " .word 0x160fe\n" + " .word gMain\n" + " .word 0x160fd\n" + "._1174:\n" + " ldr r0, ._1190\n" + " add r1, r2, r0\n" + " mov r0, #0x0\n" + "._1187:\n" + " strb r0, [r1]\n" + "._1186:\n" + " pop {r0}\n" + " bx r0\n" + "._1191:\n" + " .align 2, 0\n" + "._1190:\n" + " .word 0x160fd\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80139E4() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r0, ._1198\n" + " ldrb r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " beq ._1192 @cond_branch\n" + " ldr r2, ._1198 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r1, ._1198 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._1193 @cond_branch\n" + " add r4, r2, #0\n" + " add r5, r1, #0\n" + "._1194:\n" + " bl debug_sub_80138CC\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldrb r1, [r5]\n" + " cmp r0, r1\n" + " bcc ._1194 @cond_branch\n" + "._1193:\n" + " ldr r0, ._1198 + 12\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldr r1, ._1198 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r0, ._1198 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._1200 @cond_branch\n" + " ldr r5, ._1198 + 16\n" + " add r4, r1, #0\n" + "._1196:\n" + " ldrb r0, [r4]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " ldr r1, ._1198 + 8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldrb r1, [r1]\n" + " cmp r0, r1\n" + " bcc ._1196 @cond_branch\n" + " b ._1200\n" + "._1199:\n" + " .align 2, 0\n" + "._1198:\n" + " .word gUnknown_02023A14+0x50\n" + " .word gActiveBank\n" + " .word gNoOfAllBanks\n" + " .word gBattleMainFunc\n" + " .word gBattleBankFunc\n" + "._1192:\n" + " ldr r0, ._1202\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldr r1, ._1202 + 4\n" + " strb r4, [r1]\n" + " ldr r0, ._1202 + 8\n" + " ldrb r0, [r0]\n" + " cmp r4, r0\n" + " bcs ._1200 @cond_branch\n" + " ldr r5, ._1202 + 12\n" + " add r4, r1, #0\n" + "._1201:\n" + " ldrb r0, [r4]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " ldr r1, ._1202 + 8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldrb r1, [r1]\n" + " cmp r0, r1\n" + " bcc ._1201 @cond_branch\n" + "._1200:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._1203:\n" + " .align 2, 0\n" + "._1202:\n" + " .word gBattleMainFunc\n" + " .word gActiveBank\n" + " .word gNoOfAllBanks\n" + " .word gBattleBankFunc\n" + "\n" + ); +} +#endif + void sub_8010824(void) { gBattleMainFunc(); @@ -1562,6 +9151,380 @@ void sub_8010824(void) gBattleBankFunc[gActiveBank](); } +#if DEBUG +__attribute__((naked)) +void sub_8010874() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " mov r0, #0x0\n" + " bl TurnValuesCleanUp\n" + " bl SpecialStatusesClear\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " ldr r0, ._1215\n" + " mov sl, r0\n" + " ldr r1, ._1215 + 4\n" + " mov r9, r1\n" + " ldr r4, ._1215 + 8\n" + " mov r8, r4\n" + " ldr r0, ._1215 + 12\n" + " mov ip, r0\n" + " ldr r4, ._1215 + 16\n" + " mov r5, #0x0\n" + " ldr r7, ._1215 + 20\n" + " ldr r6, ._1215 + 24\n" + "._1205:\n" + " ldr r0, ._1215 + 28\n" + " add r0, r5, r0\n" + " str r3, [r0]\n" + " mov r1, #0x0\n" + "._1204:\n" + " add r0, r4, r1\n" + " strb r3, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, #0x1b\n" + " bls ._1204 @cond_branch\n" + " mov r0, #0x2\n" + " strb r0, [r4, #0x16]\n" + " ldr r1, ._1215 + 32\n" + " add r0, r2, r1\n" + " strb r3, [r0]\n" + " mov r0, ip\n" + " strh r3, [r0]\n" + " mov r1, r8\n" + " strh r3, [r1]\n" + " mov r0, r9\n" + " strh r3, [r0]\n" + " mov r1, sl\n" + " strh r3, [r1]\n" + " ldr r0, ._1215 + 36\n" + " add r1, r2, r0\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " strh r3, [r6]\n" + " strh r3, [r7]\n" + " ldr r1, ._1215 + 40\n" + " add r0, r5, r1\n" + " str r3, [r0]\n" + " mov r0, #0x2\n" + " add sl, sl, r0\n" + " add r9, r9, r0\n" + " add r8, r8, r0\n" + " add ip, ip, r0\n" + " add r4, r4, #0x1c\n" + " add r5, r5, #0x4\n" + " add r7, r7, #0x2\n" + " add r6, r6, #0x2\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x3\n" + " ble ._1205 @cond_branch\n" + " mov r5, #0x0\n" + " ldr r3, ._1215 + 44\n" + " ldr r4, ._1215 + 48\n" + " mov r2, #0x1\n" + "._1207:\n" + " strh r5, [r4]\n" + " mov r1, #0x0\n" + "._1206:\n" + " add r0, r3, r1\n" + " strb r5, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, #0xb\n" + " bls ._1206 @cond_branch\n" + " add r3, r3, #0xc\n" + " add r4, r4, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._1207 @cond_branch\n" + " mov r1, #0x0\n" + " ldr r2, ._1215 + 52\n" + " strb r1, [r2]\n" + " ldr r3, ._1215 + 56\n" + " strb r1, [r3]\n" + " ldr r4, ._1215 + 60\n" + " strh r1, [r4]\n" + " ldr r1, ._1215 + 64\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + "._1208:\n" + " add r0, r1, r2\n" + " strb r3, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x2b\n" + " bls ._1208 @cond_branch\n" + " mov r0, #0x0\n" + " ldr r1, ._1215 + 68\n" + " str r0, [r1]\n" + " ldr r2, ._1215 + 72\n" + " ldrh r1, [r2]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._1210 @cond_branch\n" + " ldr r3, ._1215 + 76\n" + " ldrb r1, [r3, #0x15]\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._1210 @cond_branch\n" + " mov r0, #0x80\n" + " ldr r4, ._1215 + 68\n" + " str r0, [r4]\n" + "._1210:\n" + " ldr r1, ._1215 + 76\n" + " ldrb r0, [r1, #0x15]\n" + " lsl r0, r0, #0x1e\n" + " lsr r0, r0, #0x1f\n" + " ldr r3, ._1215 + 80\n" + " ldr r4, ._1215 + 84\n" + " add r2, r3, r4\n" + " mov r1, #0x0\n" + " strb r0, [r2]\n" + " ldr r0, ._1215 + 88\n" + " strb r1, [r0]\n" + " ldr r2, ._1215 + 92\n" + " strb r1, [r2]\n" + " ldr r3, ._1215 + 96\n" + " str r1, [r3]\n" + " mov r2, #0x0\n" + " ldr r4, ._1215 + 100\n" + " strh r1, [r4]\n" + " ldr r1, ._1215 + 80\n" + " ldr r3, ._1215 + 104\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " ldr r4, ._1215 + 108\n" + " add r0, r1, r4\n" + " strb r2, [r0]\n" + " ldr r1, ._1215 + 112\n" + " mov r2, #0x0\n" + " add r0, r1, #7\n" + "._1211:\n" + " strb r2, [r0]\n" + " sub r0, r0, #0x1\n" + " cmp r0, r1\n" + " bge ._1211 @cond_branch\n" + " mov r5, #0x0\n" + " ldr r0, ._1215 + 116\n" + " strh r5, [r0]\n" + " mov r0, #0x0\n" + " ldr r1, ._1215 + 120\n" + " str r0, [r1]\n" + " ldr r2, ._1215 + 124\n" + " strh r0, [r2]\n" + " ldr r4, ._1215 + 80\n" + " ldr r3, ._1215 + 128\n" + " add r0, r4, r3\n" + " strb r5, [r0]\n" + " ldr r1, ._1215 + 132\n" + " add r0, r4, r1\n" + " strb r5, [r0]\n" + " ldr r2, ._1215 + 136\n" + " strb r5, [r2]\n" + " ldr r3, ._1215 + 140\n" + " strb r5, [r3]\n" + " sub r1, r1, #0x29\n" + " add r0, r4, r1\n" + " strb r5, [r0]\n" + " ldr r2, ._1215 + 144\n" + " add r0, r4, r2\n" + " strb r5, [r0]\n" + " ldr r3, ._1215 + 148\n" + " add r0, r4, r3\n" + " strb r5, [r0]\n" + " ldr r0, ._1215 + 152\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " ldr r2, ._1215 + 156\n" + " lsl r1, r0, #0x3\n" + " sub r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r2\n" + " ldrb r1, [r1, #0x8]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._1215 + 160\n" + " bl gScriptFuncs_End+0x3d30\n" + " ldr r2, ._1215 + 164\n" + " add r1, r4, r2\n" + " strb r0, [r1]\n" + " ldr r3, ._1215 + 168\n" + " add r1, r4, r3\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._1215 + 172\n" + " add r0, r4, r1\n" + " strb r5, [r0]\n" + " sub r2, r2, #0x33\n" + " add r1, r4, r2\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " mov r1, #0x0\n" + "._1212:\n" + " ldr r3, ._1215 + 176\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x20\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x1c\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x8\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x10\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r3, r3, #0x8\n" + " add r0, r2, r3\n" + " add r0, r0, r4\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x7\n" + " ble ._1212 @cond_branch\n" + " ldr r4, ._1215 + 80\n" + " ldr r1, ._1215 + 180\n" + " add r0, r4, r1\n" + " mov r2, #0x0\n" + " mov r1, #0x6\n" + " strb r1, [r0]\n" + " sub r3, r3, #0x3f\n" + " add r0, r4, r3\n" + " strb r1, [r0]\n" + " ldr r1, ._1215 + 184\n" + " add r0, r4, r1\n" + " strb r2, [r0]\n" + " ldr r3, ._1215 + 188\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " add r0, r3, #0\n" + " add r0, r0, #0x40\n" + "._1213:\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x1\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._1213 @cond_branch\n" + " mov r1, #0x0\n" + " strb r1, [r3, #0x13]\n" + " strb r1, [r3]\n" + " strb r1, [r3, #0x1]\n" + " strb r1, [r3, #0x2]\n" + " strb r1, [r3, #0x3]\n" + " strb r1, [r3, #0x4]\n" + " ldrb r2, [r3, #0x5]\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " mov r2, #0x3\n" + " neg r2, r2\n" + " and r0, r0, r2\n" + " strb r0, [r3, #0x5]\n" + " strh r1, [r3, #0x20]\n" + " strh r1, [r3, #0x22]\n" + " strh r1, [r3, #0x24]\n" + " strh r1, [r3, #0x6]\n" + " strh r1, [r3, #0x26]\n" + " strh r1, [r3, #0x28]\n" + " mov r2, #0x0\n" + " add r5, r3, #0\n" + " add r5, r5, #0x8\n" + " mov r4, #0x0\n" + " add r1, r3, #0\n" + " add r1, r1, #0x14\n" + "._1214:\n" + " add r0, r2, r5\n" + " strb r4, [r0]\n" + " strb r4, [r1]\n" + " strb r4, [r1, #0x16]\n" + " add r1, r1, #0x1\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x9\n" + " ble ._1214 @cond_branch\n" + " ldr r2, ._1215 + 80\n" + " ldr r3, ._1215 + 192\n" + " add r0, r2, r3\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r4, ._1215 + 196\n" + " add r0, r2, r4\n" + " strb r1, [r0]\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._1216:\n" + " .align 2, 0\n" + "._1215:\n" + " .word gUnknown_02024C4C\n" + " .word gUnknown_02024C44\n" + " .word gMoveHitWith\n" + " .word gLastUsedMove\n" + " .word gDisableStructs\n" + " .word gUnknown_02024C2C\n" + " .word gLockedMove\n" + " .word gStatuses3\n" + " .word gUnknown_02024C70\n" + " .word gUnknown_02024C5C\n" + " .word +0x2017100\n" + " .word gSideTimer\n" + " .word gSideAffecting\n" + " .word gBankAttacker\n" + " .word gBankTarget\n" + " .word gBattleWeather\n" + " .word gWishFutureKnock\n" + " .word gHitMarker\n" + " .word gBattleTypeFlags\n" + " .word gSaveBlock2\n" + " .word +0x2000000\n" + " .word 0x16084\n" + " .word gMultiHitCounter\n" + " .word gBattleOutcome\n" + " .word gBattleExecBuffer\n" + " .word gPaydayMoney\n" + " .word 0x17130\n" + " .word 0x17160\n" + " .word gBattleCommunication\n" + " .word gPauseCounterBattle\n" + " .word gBattleMoveDamage\n" + " .word gUnknown_02024DE8\n" + " .word 0x16002\n" + " .word 0x160a1\n" + " .word gLeveledUpInBattle\n" + " .word gAbsentBankFlags\n" + " .word 0x16086\n" + " .word 0x16087\n" + " .word gEnemyParty\n" + " .word gBaseStats\n" + " .word 0x4fb\n" + " .word 0x16089\n" + " .word 0x16088\n" + " .word 0x1601b\n" + " .word 0x160ac\n" + " .word 0x160c8\n" + " .word 0x16113\n" + " .word gBattleResults\n" + " .word 0x1609e\n" + " .word 0x1609f\n" + "\n" + ); +} +#else void sub_8010874(void) { s32 i; @@ -1663,6 +9626,7 @@ void sub_8010874(void) gBattleResults.caughtNick[i] = 0; } } +#endif void SwitchInClearStructs(void) { diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 977e91f5c..613f2ebe0 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -289,6 +289,214 @@ void BattleAI_HandleItemUseBeforeAISetup(void) BattleAI_SetupAIData(); } +#if DEBUG +__attribute__((naked)) +void BattleAI_SetupAIData() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r2, ._16\n" + " mov r4, #0x0\n" + " ldr r3, ._16 + 4\n" + " mov r1, #0x0\n" + "._9:\n" + " add r0, r2, r4\n" + " strb r1, [r0]\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x1b\n" + " bls ._9 @cond_branch\n" + " ldr r0, ._16\n" + " mov r1, #0x64\n" + " mov r4, #0x3\n" + " add r0, r0, #0x7\n" + "._10:\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x1\n" + " sub r4, r4, #0x1\n" + " cmp r4, #0\n" + " bge ._10 @cond_branch\n" + " ldrb r0, [r3]\n" + " mov r1, #0x0\n" + " mov r2, #0xff\n" + " bl sub_8015A98\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r4, #0x0\n" + " ldr r0, ._16\n" + " add r5, r0, #4\n" + " ldr r6, ._16 + 8\n" + "._12:\n" + " ldr r0, [r6]\n" + " and r0, r0, r7\n" + " cmp r0, #0\n" + " beq ._11 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r5]\n" + "._11:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xf\n" + " and r0, r0, r1\n" + " mov r1, #0x64\n" + " sub r1, r1, r0\n" + " strb r1, [r5, #0x14]\n" + " add r5, r5, #0x1\n" + " add r6, r6, #0x4\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x3\n" + " ble ._12 @cond_branch\n" + " ldr r0, ._16 + 12\n" + " add r0, r0, #0x20\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r1, ._16 + 16\n" + " ldr r0, ._16 + 4\n" + " ldrb r2, [r0]\n" + " strb r2, [r1]\n" + " ldr r0, ._16 + 20\n" + " ldrh r1, [r0]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._13 @cond_branch\n" + " ldr r4, ._16 + 24\n" + " bl Random\n" + " mov r5, #0x2\n" + " and r0, r0, r5\n" + " strb r0, [r4]\n" + " ldr r0, ._16 + 28\n" + " ldrb r1, [r0]\n" + " ldr r2, ._16 + 8\n" + " ldrb r3, [r4]\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " and r1, r1, r0\n" + " cmp r1, #0\n" + " beq ._15 @cond_branch\n" + " eor r3, r3, r5\n" + " strb r3, [r4]\n" + " b ._15\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word +0x2016800\n" + " .word gActiveBank\n" + " .word gBitTable\n" + " .word +0x2016c00\n" + " .word gBankAttacker\n" + " .word gBattleTypeFlags\n" + " .word gBankTarget\n" + " .word gAbsentBankFlags\n" + "._13:\n" + " ldr r0, ._20\n" + " mov r1, #0x1\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + "._15:\n" + " ldr r0, ._20 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._18 @cond_branch\n" + " ldr r1, ._20 + 8\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x17\n" + " b ._27\n" + "._21:\n" + " .align 2, 0\n" + "._20:\n" + " .word gBankTarget\n" + " .word gBattleTypeFlags\n" + " .word +0x2016800\n" + "._18:\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x3\n" + " add r0, r2, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._22 @cond_branch\n" + " ldr r1, ._24\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x16\n" + " b ._27\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word +0x2016800\n" + "._22:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._26 @cond_branch\n" + " ldr r1, ._28\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x18\n" + " b ._27\n" + "._29:\n" + " .align 2, 0\n" + "._28:\n" + " .word +0x2016800\n" + "._26:\n" + " mov r0, #0x90\n" + " lsl r0, r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._30 @cond_branch\n" + " ldr r1, ._33\n" + " ldrh r0, [r1]\n" + " cmp r0, r2\n" + " bne ._31 @cond_branch\n" + "._30:\n" + " ldr r1, ._33 + 4\n" + " mov r0, #0x7\n" + "._27:\n" + " str r0, [r1, #0xc]\n" + " add r3, r1, #0\n" + " b ._32\n" + "._34:\n" + " .align 2, 0\n" + "._33:\n" + " .word gTrainerBattleOpponent\n" + " .word +0x2016800\n" + "._31:\n" + " ldr r3, ._36\n" + " ldr r2, ._36 + 4\n" + " ldrh r1, [r1]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x3\n" + " add r2, r2, #0x1c\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " str r0, [r3, #0xc]\n" + "._32:\n" + " ldr r0, ._36 + 8\n" + " ldrb r1, [r0]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._35 @cond_branch\n" + " ldr r0, ._36 + 12\n" + " ldr r0, [r0]\n" + " str r0, [r3, #0xc]\n" + "._35:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._37:\n" + " .align 2, 0\n" + "._36:\n" + " .word +0x2016800\n" + " .word gTrainers\n" + " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14+0x4c\n" + "\n" + ); +} +#else void BattleAI_SetupAIData(void) { s32 i; @@ -342,6 +550,7 @@ void BattleAI_SetupAIData(void) else // otherwise, just set aiFlags to whatever flags the trainer has set in their data. AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags; } +#endif u8 BattleAI_GetAIActionToUse(void) { diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 97568d254..f7734301c 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); -static void sub_8044210(u8, s16, u8); -static void draw_status_ailment_maybe(u8); +/*static*/ void sub_8044210(u8, s16, u8); +/*static*/ void draw_status_ailment_maybe(u8); extern void sub_8045180(struct Sprite *); static void sub_8045110(struct Sprite *); static void sub_8045048(struct Sprite *); @@ -651,7 +651,7 @@ void sub_8043F44(u8 a) #define CHAR_LV_SEPARATOR CHAR_PERIOD #endif -static void sub_8043FC0(u8 a, u8 b) +/*static*/ void sub_8043FC0(u8 a, u8 b) { u8 str[30]; void *const *r7; @@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\ } #endif -static void sub_8044210(u8 a, s16 b, u8 c) +/*static*/ void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; @@ -1277,6 +1277,353 @@ _08044548: .4byte 0x04000008\n\ } #endif +#if DEBUG +__attribute__((naked)) +void sub_804454C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " ldr r0, ._150\n" + " ldrb r0, [r0]\n" + " cmp r8, r0\n" + " blt ._133 @cond_branch\n" + " b ._164\n" + "._133:\n" + " ldr r1, ._150 + 4\n" + " mov r9, r1\n" + " mov r2, #0x64\n" + " mov sl, r2\n" + " ldr r7, ._150 + 8\n" + "._165:\n" + " ldr r0, ._150 + 12\n" + " mov r6, r8\n" + " add r5, r6, r0\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, r9\n" + " add r1, r1, #0x1c\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " ldr r0, ._150 + 16\n" + " cmp r1, r0\n" + " beq ._135 @cond_branch\n" + " b ._147\n" + "._135:\n" + " ldr r0, ._150 + 20\n" + " ldrb r0, [r0]\n" + " lsl r4, r6, #0x18\n" + " cmp r0, #0\n" + " bne ._138 @cond_branch\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._138 @cond_branch\n" + " b ._147\n" + "._138:\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " b ._147\n" + "._141:\n" + " mov r0, r8\n" + " lsl r3, r0, #0x2\n" + " ldr r0, ._150 + 24\n" + " add r3, r3, r0\n" + " ldr r0, [r3]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1f\n" + " mov r2, #0x1\n" + " eor r2, r2, r0\n" + " lsl r2, r2, #0x4\n" + " ldrb r0, [r3]\n" + " mov r6, #0x11\n" + " neg r6, r6\n" + " add r1, r6, #0\n" + " and r0, r0, r1\n" + " orr r0, r0, r2\n" + " strb r0, [r3]\n" + " ldr r0, [r3]\n" + " lsl r0, r0, #0x1b\n" + " lsr r6, r0, #0x1f\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._143 @cond_branch\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._144 @cond_branch\n" + " b ._147\n" + "._144:\n" + " ldr r0, ._150 + 28\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._146 @cond_branch\n" + " b ._147\n" + "._146:\n" + " cmp r6, #0x1\n" + " bne ._148 @cond_branch\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r0, [r0, #0x38]\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " str r2, [sp]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r0, ._150 + 32\n" + " add r1, r1, r0\n" + " mov r0, sp\n" + " ldr r2, ._150 + 36\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r1, sl\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r2, ._150 + 40\n" + " add r0, r0, r2\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " bl sub_8044210\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r0\n" + " add r0, r6, #0\n" + " ldr r1, ._150 + 40\n" + " b ._149\n" + "._151:\n" + " .align 2, 0\n" + "._150:\n" + " .word gNoOfAllBanks\n" + " .word gSprites\n" + " .word gBattlePartyID\n" + " .word gHealthboxIDs\n" + " .word SpriteCallbackDummy+1\n" + " .word gUnknown_020297ED\n" + " .word +0x2017800\n" + " .word gBattleTypeFlags\n" + " .word 0x6010000\n" + " .word 0x5000040\n" + " .word gPlayerParty\n" + "._148:\n" + " ldrb r0, [r5]\n" + " bl draw_status_ailment_maybe\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r2, sl\n" + " mul r2, r2, r1\n" + " add r1, r2, #0\n" + " ldr r6, ._153\n" + " add r1, r1, r6\n" + " mov r2, #0x5\n" + " bl sub_8045A5C\n" + " mov r0, #0x75\n" + " bl sub_8043CDC\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r9\n" + " ldrh r1, [r1, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r2, ._153 + 4\n" + " add r1, r1, r2\n" + " ldr r2, ._153 + 8\n" + " bl gScriptFuncs_End+0x3cb4\n" + " b ._163\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gPlayerParty\n" + " .word 0x6010680\n" + " .word 0x4000008\n" + "._143:\n" + " cmp r6, #0x1\n" + " bne ._155 @cond_branch\n" + " ldr r0, ._158\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._156 @cond_branch\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r1\n" + " add r1, r6, #0\n" + " ldr r2, ._158 + 4\n" + " add r1, r1, r2\n" + " bl sub_8044338\n" + " b ._163\n" + "._159:\n" + " .align 2, 0\n" + "._158:\n" + " .word gBattleTypeFlags\n" + " .word gEnemyParty\n" + "._156:\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r0, [r0, #0x38]\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " str r2, [sp]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r6, ._161\n" + " add r1, r1, r6\n" + " mov r0, sp\n" + " ldr r2, ._161 + 4\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r1, sl\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r2, ._161 + 8\n" + " add r0, r0, r2\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " bl sub_8044210\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r0\n" + " add r0, r6, #0\n" + " ldr r1, ._161 + 8\n" + "._149:\n" + " add r0, r0, r1\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl sub_8044210\n" + " b ._163\n" + "._162:\n" + " .align 2, 0\n" + "._161:\n" + " .word 0x6010000\n" + " .word 0x5000040\n" + " .word gEnemyParty\n" + "._155:\n" + " ldrb r0, [r5]\n" + " bl draw_status_ailment_maybe\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r6, #0x64\n" + " mul r1, r1, r6\n" + " ldr r4, ._166\n" + " add r1, r1, r4\n" + " mov r2, #0x5\n" + " bl sub_8045A5C\n" + " ldr r0, ._166 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._163 @cond_branch\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mul r1, r1, r6\n" + " add r1, r1, r4\n" + " mov r2, #0x4\n" + " bl sub_8045A5C\n" + "._163:\n" + " ldr r0, ._166 + 8\n" + " add r0, r0, r8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x3c]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strh r1, [r0, #0x3c]\n" + "._147:\n" + " add r7, r7, #0x2\n" + " mov r2, #0x1\n" + " add r8, r8, r2\n" + " ldr r0, ._166 + 12\n" + " ldrb r0, [r0]\n" + " cmp r8, r0\n" + " bge ._164 @cond_branch\n" + " b ._165\n" + "._164:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gEnemyParty\n" + " .word gBattleTypeFlags\n" + " .word gHealthboxIDs\n" + " .word gNoOfAllBanks\n" + "\n" + ); +} +#else void sub_804454C(void) { s32 i; @@ -1344,6 +1691,7 @@ void sub_804454C(void) } } } +#endif // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING @@ -2359,7 +2707,7 @@ void sub_8045180(struct Sprite *sprite) sprite->pos2.y = gSprites[spriteId].pos2.y; } -static void sub_80451A0(u8 a, struct Pokemon *pkmn) +/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn) { u8 nickname[POKEMON_NAME_LENGTH]; u8 gender; @@ -2507,7 +2855,7 @@ static void sub_8045458(u8 a, u8 b) } } -static void draw_status_ailment_maybe(u8 a) +/*static*/ void draw_status_ailment_maybe(u8 a) { s32 r4; s32 r4_2; @@ -2649,7 +2997,7 @@ static u8 sub_80457E8(u8 a, u8 b) return ret; } -static void sub_80458B0(u8 a) +/*static*/ void sub_80458B0(u8 a) { u8 *r6; u8 r8; @@ -2675,7 +3023,7 @@ static void sub_80458B0(u8 a) } -static void sub_8045998(u8 a) +/*static*/ void sub_8045998(u8 a) { u8 *r7; u8 status; @@ -2697,6 +3045,310 @@ static void sub_8045998(u8 a) } } +#ifdef DEBUG +__attribute__((naked)) +void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffff8\n" + " mov r9, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " lsl r2, r2, #0x18\n" + " lsr r7, r2, #0x18\n" + " ldr r1, ._429\n" + " lsl r0, r0, #0x4\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrh r0, [r0, #0x3a]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._410 @cond_branch\n" + " b ._411\n" + "._410:\n" + " cmp r7, #0x3\n" + " beq ._412 @cond_branch\n" + " cmp r7, #0\n" + " bne ._413 @cond_branch\n" + "._412:\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r8\n" + " bl sub_8043FC0\n" + "._413:\n" + " cmp r7, #0x1\n" + " bhi ._414 @cond_branch\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x0\n" + " bl sub_80440EC\n" + "._414:\n" + " cmp r7, #0x2\n" + " beq ._415 @cond_branch\n" + " cmp r7, #0\n" + " bne ._416 @cond_branch\n" + "._415:\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " bl sub_80440EC\n" + "._416:\n" + " cmp r7, #0x5\n" + " beq ._417 @cond_branch\n" + " cmp r7, #0\n" + " bne ._418 @cond_branch\n" + "._417:\n" + " mov r0, #0x0\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " add r2, r4, #0\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._418:\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp, #0x4]\n" + " cmp r0, #0\n" + " bne ._421 @cond_branch\n" + " cmp r7, #0x6\n" + " beq ._420 @cond_branch\n" + " cmp r7, #0\n" + " bne ._421 @cond_branch\n" + "._420:\n" + " mov r0, #0x3\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x10\n" + " lsr r5, r5, #0x10\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, r9\n" + " mov r1, #0x19\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " ldr r6, ._429 + 4\n" + " lsl r1, r4, #0x2\n" + " ldr r2, ._429 + 8\n" + " lsl r0, r5, #0x3\n" + " sub r0, r0, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r2, [r0, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldr r1, [r1]\n" + " sub r3, r3, r1\n" + " add r4, r4, #0x1\n" + " lsl r4, r4, #0x2\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldr r2, [r4]\n" + " sub r2, r2, r1\n" + " ldr r0, [sp, #0x4]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x1\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._421:\n" + " cmp r7, #0x4\n" + " beq ._422 @cond_branch\n" + " cmp r7, #0\n" + " bne ._423 @cond_branch\n" + "._422:\n" + " mov r0, r8\n" + " mov r1, r9\n" + " bl sub_80451A0\n" + "._423:\n" + " cmp r7, #0x9\n" + " beq ._424 @cond_branch\n" + " cmp r7, #0\n" + " bne ._425 @cond_branch\n" + "._424:\n" + " mov r0, r8\n" + " bl draw_status_ailment_maybe\n" + "._425:\n" + " cmp r7, #0xa\n" + " bne ._426 @cond_branch\n" + " mov r0, r8\n" + " bl sub_80458B0\n" + "._426:\n" + " add r0, r7, #0\n" + " sub r0, r0, #0xa\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bhi ._442 @cond_branch\n" + " mov r0, r8\n" + " bl sub_8045998\n" + " b ._442\n" + "._430:\n" + " .align 2, 0\n" + "._429:\n" + " .word gSprites\n" + " .word gExperienceTables\n" + " .word gBaseStats\n" + "._411:\n" + " cmp r7, #0x3\n" + " beq ._431 @cond_branch\n" + " cmp r7, #0\n" + " bne ._432 @cond_branch\n" + "._431:\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r8\n" + " bl sub_8043FC0\n" + "._432:\n" + " ldr r0, ._443\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x1\n" + " bne ._436 @cond_branch\n" + " cmp r7, #0x1\n" + " bhi ._434 @cond_branch\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x0\n" + " bl sub_80440EC\n" + "._434:\n" + " cmp r7, #0x2\n" + " beq ._435 @cond_branch\n" + " cmp r7, #0\n" + " bne ._436 @cond_branch\n" + "._435:\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " bl sub_80440EC\n" + "._436:\n" + " cmp r7, #0x5\n" + " beq ._437 @cond_branch\n" + " cmp r7, #0\n" + " bne ._438 @cond_branch\n" + "._437:\n" + " mov r0, #0x0\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " add r2, r4, #0\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._438:\n" + " cmp r7, #0x4\n" + " beq ._439 @cond_branch\n" + " cmp r7, #0\n" + " bne ._440 @cond_branch\n" + "._439:\n" + " mov r0, r8\n" + " mov r1, r9\n" + " bl sub_80451A0\n" + "._440:\n" + " cmp r7, #0x9\n" + " beq ._441 @cond_branch\n" + " cmp r7, #0\n" + " bne ._442 @cond_branch\n" + "._441:\n" + " mov r0, r8\n" + " bl draw_status_ailment_maybe\n" + "._442:\n" + " add sp, sp, #0x8\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._444:\n" + " .align 2, 0\n" + "._443:\n" + " .word gUnknown_020297ED\n" + "\n" + ); +} +#else void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { u8 r10; @@ -2766,6 +3418,7 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) draw_status_ailment_maybe(a); } } +#endif s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) { diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 4979760d7..a03a215fd 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -8,9 +8,35 @@ #include "strings2.h" #include "trainer_card.h" +struct DebugStruct1 +{ + u16 var0; + u8 var1[10]; +}; + extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; extern u8 gBattleOutcome; +#ifdef DEBUG +const struct DebugStruct1 gUnknown_Debug_4245CC[] = +{ + { 1, _("NUMBER1") }, + { 2, _("ナンバー2") }, + { 3, _("ナンバー3") }, + { 4, _("ナンバー4") }, + { 5, _("ナンバー5") }, + { 6, _("ナンバー6") }, + { 7, _("ナンバー7") }, +}; + +const u8 gUnknown_Debug_8424620[][4] = +{ + { 1, 1, 0, 0 }, + { 2, 1, 0, 0 }, + { 3, 1, 0, 0 }, +}; +#endif + static void InitLinkBattleRecord(struct LinkBattleRecord *record) { CpuFill16(0, record, sizeof(struct LinkBattleRecord)); @@ -240,7 +266,8 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y) } } -void ShowLinkBattleRecords(void) { +void ShowLinkBattleRecords(void) +{ s32 i; Menu_DrawStdWindowFrame(1, 0, 28, 18); sub_8072BD8(gOtherText_BattleResults, 0, 1, 240); diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c new file mode 100644 index 000000000..6f2734b08 --- /dev/null +++ b/src/debug/kagaya_debug_menu.c @@ -0,0 +1,420 @@ +#ifdef DEBUG +#include "global.h" +#include "menu.h" + +u8 KagayaDebugMenu_TrainerCard(); +u8 KagayaDebugMenu_CardToExchange(); +u8 KagayaDebugMenu_SlotMachine(); + +const u8 Str_83EBB34[] = _("Trainer’s card"); +const u8 Str_83EBB43[] = _("Card to exchange"); +const u8 Str_83EBB54[] = _("Slot machine"); + +const struct MenuAction _83EBB64[] = { + { Str_83EBB34, KagayaDebugMenu_TrainerCard }, + { Str_83EBB43, KagayaDebugMenu_CardToExchange }, + { Str_83EBB54, KagayaDebugMenu_SlotMachine }, +}; + +__attribute__((naked)) +void InitKagayaDebugMenu_A() +{ + asm( + " push {lr}\n" + " bl InitKagayaDebugMenu_B\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void InitKagayaDebugMenu_B() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xd\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r1, ._1 + 4\n" + " ldr r0, ._1 + 8\n" + " str r0, [r1]\n" + " add sp, sp, #0x8\n" + " pop {r0}\n" + " bx r0\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word _83EBB64\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B061C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B061C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._3 @cond_branch\n" + " mov r0, #0x0\n" + " b ._6\n" + "._3:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._5 @cond_branch\n" + " ldr r2, ._7\n" + " ldr r0, ._7 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._6\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gCallback_03004AE8\n" + " .word _83EBB64\n" + "._5:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._6:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 KagayaDebugMenu_TrainerCard() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._9\n" + " ldr r0, ._9 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B068C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B068C() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._11 @cond_branch\n" + " mov r0, #0x0\n" + " b ._12\n" + "._11:\n" + " ldr r0, ._13\n" + " bl debug_sub_80A0710\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + "._12:\n" + " pop {r1}\n" + " bx r1\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word sub_805469C+1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 KagayaDebugMenu_CardToExchange() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._15\n" + " ldr r0, ._15 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B06E0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B06E0() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._17 @cond_branch\n" + " mov r0, #0x0\n" + " b ._18\n" + "._17:\n" + " ldr r0, ._19\n" + " bl debug_sub_80A073C\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + "._18:\n" + " pop {r1}\n" + " bx r1\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word sub_805469C+1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 KagayaDebugMenu_SlotMachine() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._21\n" + " ldr r0, ._21 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word gCallback_03004AE8\n" + " .word Kagaya_80B0734+1\n" + "\n" + ); +} + +__attribute__((naked)) +void Kagaya_80B0734() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._23 @cond_branch\n" + " mov r0, #0x0\n" + " b ._24\n" + "._23:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._25\n" + " bl debug_sub_811609C\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + "._24:\n" + " pop {r1}\n" + " bx r1\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word sub_805469C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B0770() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._30\n" + " ldrb r1, [r0]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._27 @cond_branch\n" + " bl CloseMenu\n" + " bl IsPlayerFacingSurfableFishableWater\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._29 @cond_branch\n" + " ldr r0, ._30 + 4\n" + " str r4, [r0]\n" + " mov r0, #0x9\n" + " bl FieldEffectStart\n" + " b ._29\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gPlayerAvatar\n" + " .word gUnknown_0202FF84\n" + "._27:\n" + " bl CloseMenu\n" + "._29:\n" + " mov r0, #0x1\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B07B0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._32\n" + " ldr r0, ._32 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._33:\n" + " .align 2, 0\n" + "._32:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80B07DC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B07DC() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._34 @cond_branch\n" + " mov r0, #0x0\n" + " b ._35\n" + "._34:\n" + " bl CloseMenu\n" + " ldr r0, ._36\n" + " bl SetMainCallback2\n" + " mov r0, #0x1\n" + "._35:\n" + " pop {r1}\n" + " bx r1\n" + "._37:\n" + " .align 2, 0\n" + "._36:\n" + " .word sub_80FC074+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80B0800() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl sub_8068F18\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0\n" + " beq ._38 @cond_branch\n" + " ldr r0, ._39\n" + " mov r1, #0x0\n" + " str r1, [r0]\n" + " sub r1, r2, #1\n" + " str r1, [r0, #0x4]\n" + " mov r0, #0x2c\n" + " bl FieldEffectStart\n" + "._38:\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word gUnknown_0202FF84\n" + "\n" + ); +} + +#endif // DEBUG diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c new file mode 100644 index 000000000..48b6d91b8 --- /dev/null +++ b/src/debug/nakamura_debug_menu.c @@ -0,0 +1,5031 @@ +#ifdef DEBUG +#include "global.h" +#include "menu.h" + +EWRAM_DATA u8 _nakamuraData[0x10] = {0}; + +static u8 _nakamuraStatic[32] __attribute__((unused)); + +u8 debug_sub_815FC54(); +u8 debug_sub_815F2B4(); +u8 debug_sub_815FC94(); +u8 debug_sub_815FB1C(); +u8 debug_sub_815F2F4(); +u8 debug_sub_815F62C(); +u8 debug_sub_815FBE8(); +u8 debug_sub_815FE1C(); +u8 debug_sub_8160D98(); + +const u8 Str_843E36C[] = _("Berries"); +const u8 Str_843E374[] = _("Goods"); +const u8 Str_843E37A[] = _("{PKMN} list"); +const u8 Str_843E382[] = _("トラップ"); +const u8 Str_843E387[] = _("Move your base"); +const u8 Str_843E396[] = _("Moving {PKMN}"); +const u8 Str_843E3A0[] = _("Fishing points"); +const u8 Str_843E3AF[] = _("Set {POKEBLOCK}"); +const u8 Str_843E3B9[] = _("Make bases(to max)"); +const u8 Str_843E3CC[] = _("Base location"); + +const struct MenuAction _843E3DC[] = { + { Str_843E36C, debug_sub_815FC54 }, + { Str_843E37A, debug_sub_815F2B4 }, + { Str_843E374, debug_sub_815FC94 }, + { Str_843E387, debug_sub_815FB1C }, + { Str_843E3B9, debug_sub_815F2F4 }, + { Str_843E3CC, debug_sub_815F62C }, + { Str_843E396, debug_sub_815FBE8 }, + { Str_843E3A0, debug_sub_815FE1C }, + { Str_843E3AF, debug_sub_8160D98 }, +}; + +const u8 _843E424[][4] = { + { 1, 118, 47, 14 }, + { 2, 125, 53, 10 }, + { 3, 113, 49, 8 }, + { 0xB, 118, 67, 6 }, + { 0xC, 121, 40, 11 }, + { 0xD, 111, 35, 1 }, + { 0x15, 115, 20, 53 }, + { 0x16, 121, 18, 13 }, + { 0x17, 119, 26, 81 }, + { 0x1F, 127, 59, 67 }, + { 0x20, 125, 55, 11 }, + { 0x21, 111, 27, 27 }, + { 0x29, 114, 9, 47 }, + { 0x2A, 115, 32, 39 }, + { 0x2B, 115, 23, 8 }, + { 0x33, 114, 30, 51 }, + { 0x34, 115, 26, 15 }, + { 0x35, 115, 32, 46 }, + { 0x3D, 114, 11, 62 }, + { 0x3E, 115, 21, 18 }, + { 0x3F, 115, 25, 24 }, + { 0x47, 114, 19, 70 }, + { 0x48, 115, 32, 6 }, + { 0x49, 114, 32, 57 }, + { 0x51, 116, 71, 4 }, + { 0x52, 123, 47, 3 }, + { 0x53, 123, 57, 5 }, + { 0x5B, 116, 79, 11 }, + { 0x5C, 123, 49, 3 }, + { 0x5D, 120, 18, 12 }, + { 0x65, 120, 28, 62 }, + { 0x66, 116, 56, 6 }, + { 0x67, 119, 16, 81 }, + { 0x6F, 120, 30, 62 }, + { 0x70, 116, 55, 15 }, + { 0x71, 119, 16, 28 }, + { 0x79, 111, 33, 34 }, + { 0x7A, 118, 29, 5 }, + { 0x7B, 127, 45, 24 }, + { 0x83, 111, 24, 36 }, + { 0x84, 125, 7, 25 }, + { 0x85, 115, 8, 30 }, + { 0x8D, 111, 34, 50 }, + { 0x8E, 127, 59, 72 }, + { 0x8F, 127, 61, 21 }, + { 0x97, 127, 67, 63 }, + { 0x98, 125, 24, 32 }, + { 0x99, 111, 35, 31 }, + { 0xA1, 111, 13, 19 }, + { 0xA2, 121, 43, 7 }, + { 0xA3, 118, 47, 5 }, + { 0xA4, 111, 14, 19 }, + { 0xAB, 118, 46, 5 }, + { 0xAC, 121, 42, 7 }, + { 0xAD, 119, 19, 76 }, + { 0xAE, 115, 7, 20 }, + { 0xB5, 110, 16, 25 }, + { 0xB6, 114, 11, 27 }, + { 0xB7, 115, 8, 20 }, + { 0xBF, 110, 17, 25 }, + { 0xC0, 114, 12, 27 }, + { 0xC1, 119, 18, 76 }, + { 0xC9, 119, 5, 2 }, + { 0xCA, 119, 4, 89 }, + { 0xCB, 120, 38, 54 }, + { 0xCC, 120, 5, 76 }, + { 0xD3, 119, 5, 15 }, + { 0xD4, 119, 7, 101 }, + { 0xD5, 120, 31, 23 }, + { 0xDD, 119, 34, 24 }, + { 0xDE, 120, 26, 10 }, + { 0xDF, 119, 4, 15 }, + { 0xE7, 119, 31, 73 }, + { 0xE8, 120, 29, 85 }, + { 0xE9, 119, 6, 2 }, +}; + +const u8 Str_843E550[] = _("R"); +const u8 Str_843E552[] = _("X"); +const u8 Str_843E554[] = _("Y"); +const u8 Str_843E556[] = _( + "♂1\n" + "♂2\n" + "♂3\n" + "♂4\n" + "♂5\n" + "♀1\n" + "♀2\n" + "♀3\n" + "♀4\n" + "♀5"); +const u8 Str_843E574[] = _("ー"); +const u8 Str_843E576[] = _("あ"); +const u8 Str_843E578[] = _("ア"); +const u8 Str_843E57A[] = _("A"); +const u8 Str_843E57C[] = _("a"); +const u8 Str_843E57E[] = _("0"); +const u8 Str_843E580[] = _( + "ADD\n" + "DEL\n" + "EXIT"); +const u8 Str_843E58D[] = _( + "Fishing location R119\n" + " Y1\n" + " Y2\n" + " Y3\n" + "Encounter location\n" + "\n" + "\n" + "front of you"); +const u8 _843E5D1[] = {0x0F, 0x16, 0x19}; +const u8 Str_843E5D4[] = _( + "Aボタン {ESCAPE}\p" + "  Bボタン ー\n" + "START けってい"); +const u8 Str_843E5F0[] = _("?"); +const u8 Str_843E5F2[] = _("HP どりょくち"); +const u8 Str_843E5FB[] = _("こうげき どりょくち"); +const u8 Str_843E606[] = _("ぼうぎょ どりょくち"); +const u8 Str_843E611[] = _("すばやさ どりょくち"); +const u8 Str_843E61C[] = _("とくこう どりょくち"); +const u8 Str_843E627[] = _("とくぼう どりょくち"); +const u8 Str_843E632[] = _("なつきど"); +const u8 Str_843E637[] = _("どりょくち ごうけい"); +const u8 Str_843E642[] = _("ここから"); +const u8 Str_843E647[] = _("ここまで"); +const u8 Str_843E64C[] = _("かいすう"); +const u8 Str_843E651[] = _("けっか"); +const u8 Str_843E655[] = _("かい"); +const u8 Str_843E658[] = _("0"); +const u8 Str_843E65A[] = _("はんい"); + +__attribute__((naked)) +void debug_sub_815F1B8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0xe\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x10\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xe\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0xf\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r0}\n" + " bx r0\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word _843E3DC\n" + "\n" + ); +} + +__attribute__((naked)) +void InitNakamuraDebugMenu() +{ + asm( + " push {lr}\n" + " bl debug_sub_815F1B8\n" + " ldr r1, ._3\n" + " ldr r0, ._3 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815F214+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F214() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._9\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._5 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + "._5:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._6 @cond_branch\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + "._6:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._7 @cond_branch\n" + " ldr r4, ._9 + 4\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x15\n" + " add r4, r4, #0x4\n" + " add r0, r0, r4\n" + " ldr r4, [r0]\n" + " bl HandleDestroyMenuCursors\n" + " bl _call_via_r4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._12\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word gMain\n" + " .word _843E3DC\n" + "._7:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._11 @cond_branch\n" + " mov r0, #0x0\n" + " b ._12\n" + "._11:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._12:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F284() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._14\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._13 @cond_branch\n" + " bl debug_sub_81381B4\n" + " mov r0, #0x5\n" + " mov r1, #0x0\n" + " bl OpenPartyMenu\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._13:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._15:\n" + " .align 2, 0\n" + "._14:\n" + " .word gPaletteFade\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815F2B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl CloseMenu\n" + " bl MenuZeroFillScreen\n" + " ldr r1, ._16\n" + " ldr r0, ._16 + 4\n" + " str r0, [r1, #0x8]\n" + " ldr r0, ._16 + 8\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " mov r0, #0x1\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word gMain\n" + " .word sub_805469C+1\n" + " .word debug_sub_815F284+1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815F2F4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " bl CloseMenu\n" + " mov r7, #0x1\n" + "._34:\n" + " lsl r1, r7, #0x2\n" + " add r0, r1, r7\n" + " lsl r2, r0, #0x5\n" + " ldr r3, ._24\n" + " add r0, r2, r3\n" + " ldr r5, ._24 + 4\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " mov r9, r1\n" + " add r1, r7, #1\n" + " str r1, [sp]\n" + " cmp r0, #0\n" + " beq ._18 @cond_branch\n" + " b ._19\n" + "._18:\n" + " mov r5, #0x0\n" + " ldr r6, ._24 + 8\n" + " add r4, r7, #0\n" + " sub r4, r4, #0x46\n" + " ldr r3, ._24 + 12\n" + "._21:\n" + " add r1, r5, r2\n" + " add r1, r1, r3\n" + " add r0, r5, r6\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xff\n" + " beq ._20 @cond_branch\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x6\n" + " bls ._21 @cond_branch\n" + "._20:\n" + " cmp r5, #0x7\n" + " bne ._22 @cond_branch\n" + " add r0, r2, #6\n" + " b ._23\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word gSaveBlock2\n" + " .word gSaveBlock1+0x1a0a\n" + "._22:\n" + " add r0, r5, r2\n" + "._23:\n" + " add r0, r0, r3\n" + " strb r4, [r0]\n" + " ldr r1, ._35\n" + " ldr r2, ._35 + 4\n" + " add r2, r2, r1\n" + " mov sl, r2\n" + " mov r3, r9\n" + " add r0, r3, r7\n" + " lsl r6, r0, #0x5\n" + " add r1, r6, r1\n" + " ldr r5, ._35 + 4\n" + " add r5, r5, r1\n" + " mov r8, r5\n" + "._30:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x4b\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0xe\n" + " ldr r1, ._35 + 8\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " mov r2, r8\n" + " strb r0, [r2]\n" + " mov r5, #0x0\n" + " cmp r5, r7\n" + " bcs ._28 @cond_branch\n" + " mov r3, sl\n" + " ldrb r3, [r3]\n" + " cmp r0, r3\n" + " beq ._28 @cond_branch\n" + " ldr r4, ._35\n" + " add r0, r6, r4\n" + " ldr r2, ._35 + 4\n" + " add r3, r0, r2\n" + "._29:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r7\n" + " bcs ._28 @cond_branch\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " add r0, r0, r2\n" + " ldrb r1, [r3]\n" + " ldrb r0, [r0]\n" + " cmp r1, r0\n" + " bne ._29 @cond_branch\n" + "._28:\n" + " cmp r5, r7\n" + " bne ._30 @cond_branch\n" + " bl Random\n" + " mov r5, r9\n" + " add r4, r5, r7\n" + " lsl r4, r4, #0x5\n" + " ldr r1, ._35\n" + " add r3, r4, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x1\n" + " ldr r2, ._35 + 12\n" + " add r3, r3, r2\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x4\n" + " ldrb r1, [r3]\n" + " mov r5, #0x11\n" + " neg r5, r5\n" + " add r2, r5, #0\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3]\n" + " mov r5, #0x0\n" + " ldr r6, ._35 + 16\n" + "._31:\n" + " bl Random\n" + " add r1, r5, r4\n" + " add r1, r1, r6\n" + " strb r0, [r1]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x3\n" + " bls ._31 @cond_branch\n" + " mov r5, #0x0\n" + " mov r1, r9\n" + " add r0, r1, r7\n" + " lsl r4, r0, #0x5\n" + " ldr r3, ._35 + 20\n" + " mov r2, #0x0\n" + " add r6, r3, #0\n" + " add r6, r6, #0x10\n" + "._32:\n" + " add r1, r5, r4\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " add r1, r1, r6\n" + " strb r2, [r1]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0xf\n" + " bls ._32 @cond_branch\n" + " add r0, r7, #0\n" + " bl unref_sub_80BCD7C\n" + "._19:\n" + " ldr r2, [sp]\n" + " lsl r0, r2, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x13\n" + " bhi ._33 @cond_branch\n" + " b ._34\n" + "._33:\n" + " mov r0, #0x1\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._36:\n" + " .align 2, 0\n" + "._35:\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word _843E424\n" + " .word 0x1a09\n" + " .word gSaveBlock1+0x1a11\n" + " .word gSaveBlock1+0x1a1a\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F470() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add r6, r0, #0\n" + " add r7, r1, #0\n" + " mov ip, r2\n" + " ldr r2, ._39\n" + " ldr r0, ._39 + 4\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._39 + 8\n" + " add r0, r0, r1\n" + " ldrb r4, [r0]\n" + " mov r2, #0x0\n" + " ldr r3, ._39 + 12\n" + " add r5, r3, #0\n" + "._41:\n" + " lsl r1, r2, #0x2\n" + " add r0, r1, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, r4\n" + " bne ._37 @cond_branch\n" + " add r0, r1, #1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r6]\n" + " add r0, r1, #2\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r7]\n" + " add r0, r1, #3\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " mov r1, ip\n" + " strb r0, [r1]\n" + " b ._38\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word gSaveBlock1\n" + " .word _nakamuraData\n" + " .word 0x1a08\n" + " .word _843E424\n" + "._37:\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x4a\n" + " bls ._41 @cond_branch\n" + "._38:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F4D8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0xa\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r6, ._43\n" + " ldr r7, ._43 + 4\n" + " ldrb r1, [r7]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r2, ._43 + 8\n" + " ldrb r1, [r7]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._43 + 12\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._42 @cond_branch\n" + " mov r4, sp\n" + " add r4, r4, #0x1\n" + " mov r5, sp\n" + " add r5, r5, #0x2\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl debug_sub_815F470\n" + " ldrb r1, [r7]\n" + " add r0, r6, #0\n" + " bl sub_80BC190\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._43 + 16\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, sp\n" + " ldrb r1, [r0]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._43 + 20\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldrb r1, [r4]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x3\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._43 + 24\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldrb r1, [r5]\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x3\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + "._42:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._44:\n" + " .align 2, 0\n" + "._43:\n" + " .word gStringVar1\n" + " .word _nakamuraData\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word Str_843E550\n" + " .word Str_843E552\n" + " .word Str_843E554\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F5C4() +{ + asm( + " push {lr}\n" + " ldr r0, ._48\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._45 @cond_branch\n" + " ldr r1, ._48 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._46 @cond_branch\n" + " mov r0, #0x13\n" + " b ._50\n" + "._49:\n" + " .align 2, 0\n" + "._48:\n" + " .word gMain\n" + " .word _nakamuraData\n" + "._46:\n" + " sub r0, r0, #0x1\n" + " b ._50\n" + "._45:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._51 @cond_branch\n" + " ldr r1, ._54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x13\n" + " bne ._52 @cond_branch\n" + " strb r2, [r1]\n" + " b ._53\n" + "._55:\n" + " .align 2, 0\n" + "._54:\n" + " .word _nakamuraData\n" + "._52:\n" + " add r0, r0, #0x1\n" + "._50:\n" + " strb r0, [r1]\n" + "._53:\n" + " bl debug_sub_815F4D8\n" + " mov r0, #0x0\n" + " b ._58\n" + "._51:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._57 @cond_branch\n" + " mov r0, #0x0\n" + " b ._58\n" + "._57:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._58:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815F62C() +{ + asm( + " push {lr}\n" + " ldr r1, ._59\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r1, ._59 + 4\n" + " ldr r0, ._59 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_815F4D8\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._60:\n" + " .align 2, 0\n" + "._59:\n" + " .word _nakamuraData\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815F5C4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F668() +{ + asm( + " push {r4, r5, r6, lr}\n" + " ldr r0, ._61\n" + " ldrb r0, [r0]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x5\n" + " ldr r0, ._61 + 4\n" + " add r1, r1, r0\n" + " ldrb r4, [r1, #0x3]\n" + " lsl r4, r4, #0x18\n" + " ldrb r0, [r1, #0x2]\n" + " lsl r0, r0, #0x10\n" + " orr r4, r4, r0\n" + " ldrb r0, [r1, #0x1]\n" + " lsl r0, r0, #0x8\n" + " orr r4, r4, r0\n" + " ldrb r0, [r1]\n" + " orr r4, r4, r0\n" + " ldr r5, ._61 + 8\n" + " ldr r6, ._61 + 12\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " add r0, r5, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __umodsi3\n" + " add r1, r0, #0\n" + " add r0, r5, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x7\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._62:\n" + " .align 2, 0\n" + "._61:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a11\n" + " .word gStringVar1\n" + " .word 0x186a0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F6E4() +{ + asm( + " push {r4, lr}\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0xb\n" + " mov r3, #0x4\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._63\n" + " ldr r0, ._63 + 4\n" + " ldrb r0, [r0]\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x5\n" + " ldr r0, ._63 + 8\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0x7\n" + " bl StringCopyN\n" + " mov r1, #0xff\n" + " strb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._64:\n" + " .align 2, 0\n" + "._63:\n" + " .word gStringVar1\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a0a\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F72C() +{ + asm( + " push {r4, r5, lr}\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " mov r3, #0xa\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._66\n" + " ldr r5, ._66 + 4\n" + " ldrb r1, [r5]\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r2, ._66 + 8\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._66 + 12\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._65 @cond_branch\n" + " bl debug_sub_815F6E4\n" + " bl debug_sub_815F668\n" + "._65:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._67:\n" + " .align 2, 0\n" + "._66:\n" + " .word gStringVar1\n" + " .word _nakamuraData\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F788() +{ + asm( + " push {lr}\n" + " mov r0, #0x2\n" + " mov r1, #0x5\n" + " mov r2, #0xb\n" + " mov r3, #0x6\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._68\n" + " ldr r1, ._68 + 4\n" + " ldrb r1, [r1]\n" + " add r1, r1, #0x2\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._69:\n" + " .align 2, 0\n" + "._68:\n" + " .word Str_843E574\n" + " .word _nakamuraData+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F7B4() +{ + asm( + " push {lr}\n" + " ldr r0, ._72\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._70 @cond_branch\n" + " mov r0, #0xb\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " b ._71\n" + "._73:\n" + " .align 2, 0\n" + "._72:\n" + " .word _nakamuraData+0x1\n" + "._70:\n" + " ldr r0, ._74\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x1\n" + " ldr r1, ._74 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._71:\n" + " pop {r0}\n" + " bx r0\n" + "._75:\n" + " .align 2, 0\n" + "._74:\n" + " .word _nakamuraData+0x3\n" + " .word Str_843E576\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F7F0() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r1, ._78\n" + " ldrb r2, [r1]\n" + " lsl r1, r2, #0x2\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x5\n" + " ldr r2, ._78 + 4\n" + " add r3, r1, r2\n" + " ldrb r1, [r3, #0x3]\n" + " lsl r2, r1, #0x18\n" + " ldrb r1, [r3, #0x2]\n" + " lsl r1, r1, #0x10\n" + " orr r2, r2, r1\n" + " ldrb r1, [r3, #0x1]\n" + " lsl r1, r1, #0x8\n" + " orr r2, r2, r1\n" + " ldrb r1, [r3]\n" + " orr r2, r2, r1\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r4, #0x9\n" + " ldr r0, ._78 + 8\n" + " ldrb r0, [r0]\n" + " cmp r4, r0\n" + " ble ._76 @cond_branch\n" + " add r5, r0, #0\n" + "._77:\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x1\n" + " lsl r0, r4, #0x18\n" + " mov r4, #0xff\n" + " lsl r4, r4, #0x18\n" + " add r0, r0, r4\n" + " lsr r4, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, r5\n" + " bgt ._77 @cond_branch\n" + "._76:\n" + " add r2, r2, r1\n" + " lsr r0, r2, #0x18\n" + " strb r0, [r3, #0x3]\n" + " mov r0, #0xff\n" + " lsl r0, r0, #0x10\n" + " and r0, r0, r2\n" + " lsr r0, r0, #0x10\n" + " strb r0, [r3, #0x2]\n" + " mov r0, #0xff\n" + " lsl r0, r0, #0x8\n" + " and r0, r0, r2\n" + " lsr r0, r0, #0x8\n" + " strb r0, [r3, #0x1]\n" + " strb r2, [r3]\n" + " bl debug_sub_815F668\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._79:\n" + " .align 2, 0\n" + "._78:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a11\n" + " .word _nakamuraData+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F86C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " ldr r1, ._84\n" + " ldrb r2, [r1]\n" + " lsl r1, r2, #0x2\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x5\n" + " ldr r2, ._84 + 4\n" + " add r5, r1, r2\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " lsr r6, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x64\n" + " bne ._80 @cond_branch\n" + " ldr r0, ._84 + 8\n" + " ldrb r1, [r0]\n" + " cmp r1, #0x6\n" + " bhi ._100 @cond_branch\n" + " mov r2, #0xff\n" + "._82:\n" + " add r0, r5, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x6\n" + " bls ._82 @cond_branch\n" + " b ._100\n" + "._85:\n" + " .align 2, 0\n" + "._84:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1+0x1a0a\n" + " .word _nakamuraData+0x2\n" + "._80:\n" + " ldr r0, ._87\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x4\n" + " bhi ._98 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._87 + 4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word _nakamuraData+0x3\n" + " .word ._89\n" + "._89:\n" + " .word ._90\n" + " .word ._91\n" + " .word ._92\n" + " .word ._93\n" + " .word ._94\n" + "._90:\n" + " mov r3, #0x1\n" + " mov r2, #0x50\n" + " b ._98\n" + "._91:\n" + " mov r3, #0x51\n" + " mov r2, #0xa0\n" + " b ._98\n" + "._92:\n" + " mov r3, #0xbb\n" + " mov r2, #0xd4\n" + " b ._98\n" + "._93:\n" + " mov r3, #0xd5\n" + " mov r2, #0xee\n" + " b ._98\n" + "._94:\n" + " mov r3, #0xa1\n" + " mov r2, #0xaa\n" + "._98:\n" + " ldr r4, ._101\n" + " ldrb r1, [r4]\n" + " add r1, r5, r1\n" + " ldrb r0, [r1]\n" + " add r0, r0, r6\n" + " strb r0, [r1]\n" + " ldrb r0, [r4]\n" + " add r1, r5, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, r3\n" + " bcs ._99 @cond_branch\n" + " strb r2, [r1]\n" + "._99:\n" + " ldrb r0, [r4]\n" + " add r1, r5, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, r2\n" + " bls ._100 @cond_branch\n" + " strb r3, [r1]\n" + "._100:\n" + " bl debug_sub_815F6E4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._102:\n" + " .align 2, 0\n" + "._101:\n" + " .word _nakamuraData+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815F930() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r0, ._107\n" + " ldrb r2, [r0]\n" + " mov r4, #0xa\n" + " cmp r2, #0\n" + " bne ._103 @cond_branch\n" + " mov r4, #0x7\n" + "._103:\n" + " ldr r5, ._107 + 4\n" + " ldrh r1, [r5, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._104 @cond_branch\n" + " cmp r2, #0\n" + " beq ._105 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_sub_815F7F0\n" + " b ._136\n" + "._108:\n" + " .align 2, 0\n" + "._107:\n" + " .word _nakamuraData+0x1\n" + " .word gMain\n" + "._105:\n" + " mov r0, #0x1\n" + " b ._113\n" + "._104:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._110 @cond_branch\n" + " cmp r2, #0\n" + " beq ._111 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl debug_sub_815F7F0\n" + " b ._136\n" + "._111:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._113\n" + "._110:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0\n" + " beq ._114 @cond_branch\n" + " ldr r1, ._117\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._115 @cond_branch\n" + " sub r0, r4, #1\n" + " b ._116\n" + "._118:\n" + " .align 2, 0\n" + "._117:\n" + " .word _nakamuraData+0x2\n" + "._115:\n" + " sub r0, r0, #0x1\n" + "._116:\n" + " strb r0, [r1]\n" + "._125:\n" + " bl debug_sub_815F788\n" + " b ._136\n" + "._114:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._120 @cond_branch\n" + " ldr r2, ._123\n" + " ldrb r1, [r2]\n" + " sub r0, r4, #1\n" + " cmp r1, r0\n" + " bne ._121 @cond_branch\n" + " strb r3, [r2]\n" + " b ._125\n" + "._124:\n" + " .align 2, 0\n" + "._123:\n" + " .word _nakamuraData+0x2\n" + "._121:\n" + " add r0, r1, #1\n" + " strb r0, [r2]\n" + " b ._125\n" + "._120:\n" + " ldrh r1, [r5, #0x2e]\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " cmp r2, #0\n" + " bne ._127 @cond_branch\n" + " ldr r4, ._129\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " mov r1, #0x5\n" + " bl __modsi3\n" + " strb r0, [r4]\n" + "._127:\n" + " bl debug_sub_815F7B4\n" + " b ._136\n" + "._130:\n" + " .align 2, 0\n" + "._129:\n" + " .word _nakamuraData+0x3\n" + "._126:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._131 @cond_branch\n" + " mov r0, #0x2\n" + " mov r1, #0x5\n" + " mov r2, #0xb\n" + " mov r3, #0x6\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r0, #0xb\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._133\n" + " ldr r0, ._133 + 4\n" + " str r0, [r1]\n" + " b ._136\n" + "._134:\n" + " .align 2, 0\n" + "._133:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FA38+1\n" + "._131:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._136 @cond_branch\n" + " cmp r2, #0\n" + " bne ._136 @cond_branch\n" + " mov r0, #0x64\n" + "._113:\n" + " bl debug_sub_815F86C\n" + "._136:\n" + " mov r0, #0x0\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FA38() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._139\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._137 @cond_branch\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " b ._138\n" + "._140:\n" + " .align 2, 0\n" + "._139:\n" + " .word gMain\n" + "._137:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._141 @cond_branch\n" + " mov r0, #0x2\n" + "._138:\n" + " bl MoveMenuCursor\n" + "._161:\n" + " mov r0, #0x0\n" + " b ._142\n" + "._141:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._143 @cond_branch\n" + " ldr r1, ._146\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._144 @cond_branch\n" + " mov r0, #0x13\n" + " b ._148\n" + "._147:\n" + " .align 2, 0\n" + "._146:\n" + " .word _nakamuraData\n" + "._144:\n" + " sub r0, r0, #0x1\n" + " b ._148\n" + "._143:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0\n" + " beq ._149 @cond_branch\n" + " ldr r1, ._152\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x13\n" + " bne ._150 @cond_branch\n" + " strb r2, [r1]\n" + " b ._151\n" + "._153:\n" + " .align 2, 0\n" + "._152:\n" + " .word _nakamuraData\n" + "._150:\n" + " add r0, r0, #0x1\n" + "._148:\n" + " strb r0, [r1]\n" + "._151:\n" + " bl debug_sub_815F72C\n" + " b ._161\n" + "._149:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._155 @cond_branch\n" + " ldr r1, ._159\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " ldr r2, ._159 + 4\n" + " add r1, r0, #0\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r2\n" + " ldr r1, ._159 + 8\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " bl GetMenuCursorPos\n" + " ldr r1, ._159 + 12\n" + " strb r0, [r1]\n" + " ldr r0, ._159 + 16\n" + " strb r4, [r0]\n" + " bl debug_sub_815F788\n" + " bl debug_sub_815F7B4\n" + " ldr r1, ._159 + 20\n" + " ldr r0, ._159 + 24\n" + " str r0, [r1]\n" + " b ._161\n" + "._160:\n" + " .align 2, 0\n" + "._159:\n" + " .word _nakamuraData\n" + " .word gSaveBlock1\n" + " .word 0x1a08\n" + " .word _nakamuraData+0x1\n" + " .word _nakamuraData+0x2\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815F930+1\n" + "._155:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._142:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FB1C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r0, ._162\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r0, ._162 + 4\n" + " strb r1, [r0]\n" + " ldr r1, ._162 + 8\n" + " ldr r0, ._162 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_815F72C\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._163:\n" + " .align 2, 0\n" + "._162:\n" + " .word _nakamuraData\n" + " .word _nakamuraData+0x3\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FA38+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FB78() +{ + asm( + " push {lr}\n" + " ldr r0, ._166\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._164 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._165\n" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gMain\n" + "._164:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._168 @cond_branch\n" + " mov r0, #0x1\n" + "._165:\n" + " bl MoveMenuCursor\n" + " mov r0, #0x0\n" + " b ._177\n" + "._168:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._170 @cond_branch\n" + " bl CloseMenu\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._171 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._172 @cond_branch\n" + " b ._175\n" + "._171:\n" + " bl debug_sub_814A714\n" + " b ._175\n" + "._172:\n" + " bl ClearRoamerData\n" + " bl ClearRoamerLocationData\n" + " b ._175\n" + "._170:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._176 @cond_branch\n" + " mov r0, #0x0\n" + " b ._177\n" + "._176:\n" + " bl CloseMenu\n" + "._175:\n" + " mov r0, #0x1\n" + "._177:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FBE8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._178\n" + " ldr r0, ._178 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " ldr r4, ._178 + 8\n" + " add r0, r4, #0\n" + " bl debug_sub_814A73C\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._178 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._179:\n" + " .align 2, 0\n" + "._178:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FB78+1\n" + " .word gStringVar1\n" + " .word Str_843E580\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FC54() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r3, #0x0\n" + " ldr r7, ._181\n" + " mov r6, #0xe8\n" + " lsl r6, r6, #0x3\n" + " ldr r5, ._181 + 4\n" + " ldr r4, ._181 + 8\n" + "._180:\n" + " lsl r1, r3, #0x2\n" + " add r1, r1, r7\n" + " add r2, r3, #0\n" + " add r2, r2, #0x85\n" + " add r0, r1, r6\n" + " strh r2, [r0]\n" + " add r1, r1, r4\n" + " strh r5, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0x2a\n" + " bls ._180 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gSaveBlock1\n" + " .word 0x3e7\n" + " .word 0x742\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FC94() +{ + asm( + " push {lr}\n" + " bl ClearDecorationInventories\n" + " bl debug_sub_814A3A8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FCB4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r7, #0x0\n" + " ldr r5, ._188\n" + " ldr r0, [r5]\n" + " ldr r0, [r0, #0x4]\n" + " mov r1, #0x3\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " add r1, r0, #0\n" + " mul r1, r1, r4\n" + " lsl r1, r1, #0x10\n" + " lsr r6, r1, #0x10\n" + " add r0, r6, r0\n" + " mov r9, r5\n" + " cmp r6, r0\n" + " bge ._183 @cond_branch\n" + " mov r8, r0\n" + "._187:\n" + " mov r4, #0x0\n" + " mov r1, r9\n" + " ldr r0, [r1]\n" + " ldr r0, [r0]\n" + " add r5, r6, #1\n" + " cmp r4, r0\n" + " bge ._184 @cond_branch\n" + " ldr r0, ._188\n" + " mov r9, r0\n" + "._186:\n" + " add r0, r4, #7\n" + " add r1, r6, #7\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl sub_805759C\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._185 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + "._185:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldr r0, ._188\n" + " ldr r0, [r0]\n" + " ldr r0, [r0]\n" + " cmp r4, r0\n" + " blt ._186 @cond_branch\n" + "._184:\n" + " lsl r0, r5, #0x10\n" + " lsr r6, r0, #0x10\n" + " cmp r6, r8\n" + " blt ._187 @cond_branch\n" + "._183:\n" + " add r0, r7, #0\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._189:\n" + " .align 2, 0\n" + "._188:\n" + " .word gMapHeader\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FD40() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r6, #0x0\n" + " mov r4, sp\n" + " add r4, r4, #0x2\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " bl GetXYCoordsOneStepInFrontOfPlayer\n" + " mov r1, sp\n" + " mov r0, sp\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x7\n" + " strh r0, [r1]\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0x7\n" + " strh r0, [r4]\n" + " mov r5, #0x0\n" + " ldr r1, ._192\n" + " ldr r0, [r1]\n" + " ldr r0, [r0, #0x4]\n" + " add r7, r4, #0\n" + " cmp r6, r0\n" + " bge ._190 @cond_branch\n" + "._199:\n" + " mov r4, #0x0\n" + " ldr r0, [r1]\n" + " b ._191\n" + "._193:\n" + " .align 2, 0\n" + "._192:\n" + " .word gMapHeader\n" + "._198:\n" + " add r0, r4, #7\n" + " add r1, r5, #7\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl sub_805759C\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._196 @cond_branch\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r6, r0, #0x10\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, r4\n" + " bne ._196 @cond_branch\n" + " mov r1, #0x0\n" + " ldsh r0, [r7, r1]\n" + " cmp r0, r5\n" + " bne ._196 @cond_branch\n" + " add r0, r6, #0\n" + " b ._197\n" + "._196:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldr r0, ._200\n" + " ldr r0, [r0]\n" + "._191:\n" + " ldr r0, [r0]\n" + " cmp r4, r0\n" + " blt ._198 @cond_branch\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " ldr r1, ._200\n" + " ldr r0, [r1]\n" + " ldr r0, [r0, #0x4]\n" + " cmp r5, r0\n" + " blt ._199 @cond_branch\n" + "._190:\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + "._197:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._201:\n" + " .align 2, 0\n" + "._200:\n" + " .word gMapHeader\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FDE4() +{ + asm( + " push {lr}\n" + " ldr r0, ._205\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._202 @cond_branch\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + "._202:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._204\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gMain\n" + "._203:\n" + " mov r0, #0x0\n" + "._204:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_815FE1C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._210\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r6, ._210 + 4\n" + " mov r0, #0x0\n" + " bl debug_sub_815FCB4\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, #0x1\n" + " bl debug_sub_815FCB4\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x2\n" + " bl debug_sub_815FCB4\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " bl debug_sub_8092344\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, #0x1\n" + " bl debug_sub_8092344\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x2\n" + " bl debug_sub_8092344\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._210 + 8\n" + " ldr r1, ._210 + 12\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " bl FeebasSeedRng\n" + " mov r0, #0x0\n" + " bl debug_sub_815FCB4\n" + " add r4, r0, #0\n" + " mov r0, #0x1\n" + " bl debug_sub_815FCB4\n" + " add r5, r0, #0\n" + " mov r0, #0x2\n" + " bl debug_sub_815FCB4\n" + " add r4, r4, r5\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + " mov r5, #0x0\n" + "._209:\n" + " bl FeebasRandom\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " add r1, r7, #0\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0\n" + " bne ._207 @cond_branch\n" + " add r1, r7, #0\n" + "._207:\n" + " sub r0, r1, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x2\n" + " bls ._208 @cond_branch\n" + " add r0, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " lsl r4, r0, #0x2\n" + " add r4, r4, r0\n" + " add r4, r4, #0x2\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl __udivsi3\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x19\n" + " mov r0, #0xb0\n" + " lsl r0, r0, #0x14\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl MenuPrint\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + "._208:\n" + " cmp r5, #0x6\n" + " bne ._209 @cond_branch\n" + " ldr r4, ._210 + 4\n" + " bl debug_sub_815FD40\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._210 + 16\n" + " ldr r0, ._210 + 20\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._211:\n" + " .align 2, 0\n" + "._210:\n" + " .word Str_843E58D\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2dd6\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_815FDE4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_815FFDC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r0, #0xe\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0xe\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._214\n" + " mov r1, #0x1\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r5, #0x0\n" + " ldr r0, ._214 + 4\n" + " mov r8, r0\n" + "._216:\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._214 + 8\n" + " add r6, r1, r0\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " lsl r1, r5, #0x2\n" + " mov r2, r8\n" + " add r4, r1, r2\n" + " strh r0, [r4]\n" + " lsl r0, r0, #0x10\n" + " add r7, r1, #0\n" + " cmp r0, #0\n" + " beq ._212 @cond_branch\n" + " add r0, r6, #0\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " strb r0, [r4, #0x2]\n" + " add r0, r5, #0\n" + " bl debug_sub_816009C\n" + " add r0, r5, #0\n" + " bl debug_sub_81600D0\n" + " add r0, r5, #0\n" + " bl debug_sub_816013C\n" + " b ._213\n" + "._215:\n" + " .align 2, 0\n" + "._214:\n" + " .word Str_843E5D4\n" + " .word _nakamuraStatic\n" + " .word gPlayerParty\n" + "._212:\n" + " mov r0, #0x1\n" + " strb r0, [r4, #0x2]\n" + "._213:\n" + " mov r0, r8\n" + " add r1, r7, r0\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x3]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._216 @cond_branch\n" + " ldr r1, ._217\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " mov r0, #0xf\n" + " mov r1, #0x1\n" + " mov r2, #0xff\n" + " bl unref_sub_80F924C\n" + " ldr r1, ._217 + 4\n" + " ldr r0, ._217 + 8\n" + " str r0, [r1]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._218:\n" + " .align 2, 0\n" + "._217:\n" + " .word _nakamuraData+0x4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8160498+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816009C() +{ + asm( + " push {lr}\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " ldr r1, ._219\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r1\n" + " mov r3, #0x0\n" + " ldsh r1, [r0, r3]\n" + " mov r0, #0xb\n" + " mul r0, r0, r1\n" + " ldr r1, ._219 + 4\n" + " add r0, r0, r1\n" + " lsl r2, r2, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x10\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._220:\n" + " .align 2, 0\n" + "._219:\n" + " .word _nakamuraStatic\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81600D0() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r5, r4, #0\n" + " ldr r1, ._223\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._223 + 4\n" + " add r0, r0, r1\n" + " bl GetMonGender\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._221 @cond_branch\n" + " ldr r0, ._223 + 8\n" + " b ._222\n" + "._224:\n" + " .align 2, 0\n" + "._223:\n" + " .word Str_843E5F0\n" + " .word gPlayerParty\n" + " .word gOtherText_MaleSymbol2\n" + "._221:\n" + " cmp r0, #0xfe\n" + " bne ._225 @cond_branch\n" + " ldr r0, ._227\n" + "._222:\n" + " lsl r2, r4, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x17\n" + " bl MenuPrint\n" + " b ._226\n" + "._228:\n" + " .align 2, 0\n" + "._227:\n" + " .word gOtherText_FemaleSymbolAndLv\n" + "._225:\n" + " lsl r2, r5, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x17\n" + " bl MenuPrint\n" + "._226:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816013C() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r5, ._229\n" + " ldr r1, ._229 + 4\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r1\n" + " mov r1, #0x2\n" + " ldrsb r1, [r0, r1]\n" + " add r0, r5, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r4, r4, #0x1\n" + " add r4, r4, #0x1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x1a\n" + " add r2, r4, #0\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._230:\n" + " .align 2, 0\n" + "._229:\n" + " .word gStringVar1\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816017C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r3, r4, #0x1\n" + " add r1, r3, #1\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r3, r3, #0x2\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x10\n" + " mov r2, #0x1c\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._232\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._231 @cond_branch\n" + " add r0, r4, #0\n" + " bl debug_sub_816009C\n" + " add r0, r4, #0\n" + " bl debug_sub_81600D0\n" + " add r0, r4, #0\n" + " bl debug_sub_816013C\n" + "._231:\n" + " mov r0, #0x5\n" + " bl debug_sub_81603B8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._233:\n" + " .align 2, 0\n" + "._232:\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81601C8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff0\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r1, ._239\n" + " lsl r0, r5, #0x2\n" + " add r2, r0, r1\n" + " mov r4, #0x0\n" + " ldsh r0, [r2, r4]\n" + " cmp r0, #0\n" + " bne ._236 @cond_branch\n" + " ldrb r0, [r2, #0x3]\n" + " cmp r0, #0\n" + " bne ._236 @cond_branch\n" + " cmp r3, #0x1\n" + " bne ._236 @cond_branch\n" + " mov r0, #0x8a\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r2]\n" + "._236:\n" + " lsl r0, r5, #0x2\n" + " add r4, r0, r1\n" + " lsl r0, r3, #0x18\n" + " asr r0, r0, #0x18\n" + " ldrh r1, [r4]\n" + " add r2, r0, r1\n" + " mov r3, #0x0\n" + " strh r2, [r4]\n" + " lsl r1, r2, #0x10\n" + " mov r0, #0xcd\n" + " lsl r0, r0, #0x11\n" + " cmp r1, r0\n" + " ble ._237 @cond_branch\n" + " ldr r1, ._239 + 4\n" + " add r0, r2, r1\n" + " strh r0, [r4]\n" + "._237:\n" + " ldrh r1, [r4]\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " cmp r0, #0\n" + " bge ._238 @cond_branch\n" + " ldr r2, ._239 + 8\n" + " add r0, r1, r2\n" + " strh r0, [r4]\n" + "._238:\n" + " mov r0, #0x64\n" + " mul r0, r0, r5\n" + " ldr r1, ._239 + 12\n" + " add r0, r0, r1\n" + " ldrh r1, [r4]\n" + " ldrb r2, [r4, #0x2]\n" + " str r3, [sp]\n" + " str r3, [sp, #0x4]\n" + " str r3, [sp, #0x8]\n" + " str r3, [sp, #0xc]\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " mov r0, #0x1\n" + " strb r0, [r4, #0x3]\n" + " add sp, sp, #0x10\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._240:\n" + " .align 2, 0\n" + "._239:\n" + " .word _nakamuraStatic\n" + " .word 0xfffffe65\n" + " .word 0x19b\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160258() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r1, ._242\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._241 @cond_branch\n" + " add r0, r2, #0\n" + " bl debug_sub_816062C\n" + "._241:\n" + " pop {r0}\n" + " bx r0\n" + "._243:\n" + " .align 2, 0\n" + "._242:\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816027C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r2, r1, #0x18\n" + " ldr r1, ._247\n" + " lsl r0, r4, #0x2\n" + " add r3, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r3, r1]\n" + " cmp r0, #0\n" + " beq ._244 @cond_branch\n" + " lsl r0, r2, #0x18\n" + " asr r0, r0, #0x18\n" + " ldrb r1, [r3, #0x2]\n" + " add r0, r0, r1\n" + " strb r0, [r3, #0x2]\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x64\n" + " ble ._245 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r3, #0x2]\n" + "._245:\n" + " mov r0, #0x2\n" + " ldrsb r0, [r3, r0]\n" + " cmp r0, #0\n" + " bgt ._246 @cond_branch\n" + " mov r0, #0x64\n" + " strb r0, [r3, #0x2]\n" + "._246:\n" + " mov r0, #0x64\n" + " mul r4, r4, r0\n" + " ldr r0, ._247 + 4\n" + " add r4, r4, r0\n" + " ldr r2, ._247 + 8\n" + " mov r0, #0x0\n" + " ldsh r1, [r3, r0]\n" + " lsl r0, r1, #0x3\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r1, [r0, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " add r2, r1, #0\n" + " mul r2, r2, r0\n" + " mov r0, #0x2\n" + " ldrsb r0, [r3, r0]\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._247 + 12\n" + " add r0, r0, r1\n" + " add r2, r2, r0\n" + " add r0, r4, #0\n" + " mov r1, #0x19\n" + " bl SetMonData\n" + " add r0, r4, #0\n" + " bl debug_sub_803F55C\n" + "._244:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._248:\n" + " .align 2, 0\n" + "._247:\n" + " .word _nakamuraStatic\n" + " .word gPlayerParty\n" + " .word gBaseStats\n" + " .word gExperienceTables\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160308() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xffffff8c\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " mov r2, #0x0\n" + "._252:\n" + " add r1, r2, #1\n" + " lsl r0, r1, #0x18\n" + " lsr r5, r0, #0x18\n" + " mov r8, r1\n" + " cmp r5, #0x5\n" + " bhi ._249 @cond_branch\n" + " mov r0, #0x64\n" + " mov r9, r0\n" + " mov r0, r9\n" + " mul r0, r0, r2\n" + " ldr r7, ._254\n" + " add r6, r0, r7\n" + "._251:\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._250 @cond_branch\n" + " add r0, sp, #0x10\n" + " add r1, r6, #0\n" + " mov r2, #0x64\n" + " bl memcpy\n" + " mov r4, r9\n" + " mul r4, r4, r5\n" + " add r4, r4, r7\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x64\n" + " bl memcpy\n" + " add r0, r4, #0\n" + " add r1, sp, #0x10\n" + " mov r2, #0x64\n" + " bl memcpy\n" + "._250:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._251 @cond_branch\n" + "._249:\n" + " mov r1, r8\n" + " lsl r0, r1, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x4\n" + " bls ._252 @cond_branch\n" + " bl CalculatePlayerPartyCount\n" + " ldr r4, ._254 + 4\n" + " ldrb r1, [r4]\n" + " cmp r1, #0\n" + " bne ._253 @cond_branch\n" + " ldr r0, ._254\n" + " str r1, [sp]\n" + " str r1, [sp, #0x4]\n" + " str r1, [sp, #0x8]\n" + " str r1, [sp, #0xc]\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + "._253:\n" + " add sp, sp, #0x74\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._255:\n" + " .align 2, 0\n" + "._254:\n" + " .word gPlayerParty\n" + " .word gPlayerPartyCount\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81603B8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r7, ._259\n" + " ldrb r4, [r7]\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._259 + 4\n" + " add r0, r5, r0\n" + " ldrb r2, [r0]\n" + " lsl r3, r4, #0x1\n" + " add r1, r3, #1\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r3, r3, #0x2\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " add r0, r2, #0\n" + " bl MenuFillWindowRectWithBlankTile\n" + " cmp r6, #0\n" + " bne ._256 @cond_branch\n" + " cmp r4, #0\n" + " beq ._257 @cond_branch\n" + " ldrb r0, [r7]\n" + " sub r0, r0, #0x1\n" + " b ._258\n" + "._260:\n" + " .align 2, 0\n" + "._259:\n" + " .word _nakamuraData+0x4\n" + " .word _843E5D1\n" + "._257:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, #0x5\n" + "._258:\n" + " strb r0, [r7]\n" + "._256:\n" + " ldr r1, ._264\n" + " cmp r6, #0x1\n" + " bne ._261 @cond_branch\n" + " cmp r4, #0x5\n" + " beq ._262 @cond_branch\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " b ._263\n" + "._265:\n" + " .align 2, 0\n" + "._264:\n" + " .word _nakamuraData+0x4\n" + "._262:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x1\n" + "._263:\n" + " strb r0, [r1]\n" + "._261:\n" + " cmp r6, #0x2\n" + " bne ._266 @cond_branch\n" + " cmp r5, #0\n" + " beq ._267 @cond_branch\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x6\n" + " b ._268\n" + "._267:\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc\n" + "._268:\n" + " strb r0, [r1]\n" + "._266:\n" + " cmp r6, #0x3\n" + " bne ._271 @cond_branch\n" + " cmp r5, #0x2\n" + " beq ._270 @cond_branch\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x6\n" + " strb r0, [r1]\n" + " b ._271\n" + "._270:\n" + " strb r4, [r1]\n" + "._271:\n" + " ldrb r4, [r1]\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " ldr r0, ._272\n" + " add r0, r5, r0\n" + " ldrb r0, [r0]\n" + " lsr r1, r1, #0x17\n" + " add r1, r1, #0x1\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, #0xff\n" + " bl unref_sub_80F924C\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._273:\n" + " .align 2, 0\n" + "._272:\n" + " .word _843E5D1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160498() +{ + asm( + " push {r4, lr}\n" + " ldr r1, ._276\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._274 @cond_branch\n" + " mov r0, #0x0\n" + " b ._281\n" + "._277:\n" + " .align 2, 0\n" + "._276:\n" + " .word gMain\n" + "._274:\n" + " mov r0, #0x80\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._278 @cond_branch\n" + " mov r0, #0x1\n" + " b ._281\n" + "._278:\n" + " mov r0, #0x20\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._280 @cond_branch\n" + " mov r0, #0x2\n" + " b ._281\n" + "._280:\n" + " mov r0, #0x10\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._282 @cond_branch\n" + " mov r0, #0x3\n" + "._281:\n" + " bl debug_sub_81603B8\n" + " mov r0, #0x0\n" + " b ._311\n" + "._282:\n" + " ldrh r1, [r1, #0x30]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._284 @cond_branch\n" + " ldr r4, ._289\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._285 @cond_branch\n" + " mov r1, #0x1\n" + " bl debug_sub_81601C8\n" + "._285:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0x6\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._286 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160258\n" + "._286:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0xc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._306 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " b ._300\n" + "._290:\n" + " .align 2, 0\n" + "._289:\n" + " .word _nakamuraData+0x4\n" + "._284:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._291 @cond_branch\n" + " ldr r4, ._294\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._304 @cond_branch\n" + " mov r1, #0x1\n" + " neg r1, r1\n" + " b ._293\n" + "._295:\n" + " .align 2, 0\n" + "._294:\n" + " .word _nakamuraData+0x4\n" + "._291:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._296 @cond_branch\n" + " ldr r4, ._301\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._297 @cond_branch\n" + " mov r1, #0xa\n" + " bl debug_sub_81601C8\n" + "._297:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0x6\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._298 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160258\n" + "._298:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0xc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._306 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " b ._300\n" + "._302:\n" + " .align 2, 0\n" + "._301:\n" + " .word _nakamuraData+0x4\n" + "._296:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._303 @cond_branch\n" + " ldr r4, ._308\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x5\n" + " bhi ._304 @cond_branch\n" + " mov r1, #0xa\n" + " neg r1, r1\n" + "._293:\n" + " bl debug_sub_81601C8\n" + "._304:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0x6\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._305 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160258\n" + "._305:\n" + " ldrb r0, [r4]\n" + " sub r0, r0, #0xc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bhi ._306 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " neg r1, r1\n" + "._300:\n" + " bl debug_sub_816027C\n" + "._306:\n" + " ldrb r0, [r4]\n" + " mov r1, #0x6\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_816017C\n" + " mov r0, #0x0\n" + " b ._311\n" + "._309:\n" + " .align 2, 0\n" + "._308:\n" + " .word _nakamuraData+0x4\n" + "._303:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._310 @cond_branch\n" + " mov r0, #0x0\n" + " b ._311\n" + "._310:\n" + " bl debug_sub_8160308\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._311:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816062C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xfffffff0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " mov r0, #0x64\n" + " mov r4, r8\n" + " mul r4, r4, r0\n" + " ldr r0, ._316\n" + " add r4, r4, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + " add r0, r4, #0\n" + " bl GetMonGender\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r1, ._316 + 4\n" + " lsl r0, r7, #0x3\n" + " sub r0, r0, r7\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrb r6, [r0, #0x10]\n" + " cmp r6, #0\n" + " beq ._313 @cond_branch\n" + " cmp r6, #0xfe\n" + " beq ._313 @cond_branch\n" + " cmp r6, #0xff\n" + " bne ._314 @cond_branch\n" + "._313:\n" + " mov r0, #0x64\n" + " mov r1, r8\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r1, ._316\n" + " add r0, r0, r1\n" + " bl GetMonGender\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._320\n" + "._317:\n" + " .align 2, 0\n" + "._316:\n" + " .word gPlayerParty\n" + " .word gBaseStats\n" + "._314:\n" + " cmp r2, #0\n" + " beq ._318 @cond_branch\n" + " cmp r2, #0xfe\n" + " beq ._319 @cond_branch\n" + " mov r0, #0x0\n" + " b ._320\n" + "._318:\n" + " mov r6, #0xfe\n" + " b ._321\n" + "._319:\n" + " mov r6, #0x0\n" + "._321:\n" + " mov r0, r8\n" + " lsl r0, r0, #0x2\n" + " mov r9, r0\n" + "._322:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " orr r5, r5, r0\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " bl GetGenderFromSpeciesAndPersonality\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, r6\n" + " bne ._322 @cond_branch\n" + " mov r0, #0x64\n" + " mov r4, r8\n" + " mul r4, r4, r0\n" + " ldr r0, ._323\n" + " add r4, r4, r0\n" + " add r0, r4, #0\n" + " mov r1, #0x42\n" + " bl GetMonData\n" + " ldr r0, ._323 + 4\n" + " add r0, r0, r9\n" + " ldrh r1, [r0]\n" + " ldrb r2, [r0, #0x2]\n" + " mov r0, #0x1\n" + " str r0, [sp]\n" + " str r5, [sp, #0x4]\n" + " mov r0, #0x0\n" + " str r0, [sp, #0x8]\n" + " str r0, [sp, #0xc]\n" + " add r0, r4, #0\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " add r0, r6, #0\n" + "._320:\n" + " add sp, sp, #0x10\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._324:\n" + " .align 2, 0\n" + "._323:\n" + " .word gPlayerParty\n" + " .word _nakamuraStatic\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160714() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xfffffff0\n" + " add r6, r0, #0\n" + " mov r9, r1\n" + " mov r7, #0x0\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " mov r2, #0x0\n" + " mov r5, #0x0\n" + "._329:\n" + " add r4, r5, #1\n" + " lsl r1, r4, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r9\n" + " str r2, [sp, #0xc]\n" + " bl sub_810CA9C\n" + " add r1, r0, #0\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, sp\n" + " strh r1, [r0]\n" + " ldr r2, [sp, #0xc]\n" + " cmp r5, #0x5\n" + " beq ._328 @cond_branch\n" + " lsl r0, r1, #0x10\n" + " asr r1, r0, #0x10\n" + " cmp r1, #0\n" + " ble ._326 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._326:\n" + " cmp r1, #0\n" + " bge ._327 @cond_branch\n" + " mov r0, r8\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + "._327:\n" + " cmp r1, #0\n" + " bne ._328 @cond_branch\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + "._328:\n" + " lsl r0, r4, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._329 @cond_branch\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " ldrh r0, [r0, #0x2]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " mov r4, #0x4\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " mov r1, #0x6\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x31\n" + " bgt ._333 @cond_branch\n" + " mov r0, sp\n" + " mov r4, #0x8\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0x31\n" + " ble ._334 @cond_branch\n" + "._333:\n" + " ldr r1, ._336\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xe\n" + " b ._400\n" + "._337:\n" + " .align 2, 0\n" + "._336:\n" + " .word ContestStatsText_GoldPokeBlock\n" + "._334:\n" + " cmp r7, #0x4\n" + " bne ._338 @cond_branch\n" + " ldr r1, ._340\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xd\n" + " b ._400\n" + "._341:\n" + " .align 2, 0\n" + "._340:\n" + " .word ContestStatsText_WhitePokeBlock\n" + "._338:\n" + " mov r3, #0x0\n" + " mov r5, #0x0\n" + "._343:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0x2\n" + " bne ._342 @cond_branch\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + "._342:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x4\n" + " bls ._343 @cond_branch\n" + " cmp r3, #0x3\n" + " beq ._345 @cond_branch\n" + " cmp r2, #0x5\n" + " beq ._345 @cond_branch\n" + " mov r4, r8\n" + " cmp r4, #0x4\n" + " bne ._346 @cond_branch\n" + "._345:\n" + " ldr r1, ._348\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xc\n" + " b ._400\n" + "._349:\n" + " .align 2, 0\n" + "._348:\n" + " .word ContestStatsText_BlackPokeBlock\n" + "._346:\n" + " cmp r7, #0x3\n" + " bne ._350 @cond_branch\n" + " ldr r1, ._352\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xb\n" + " b ._400\n" + "._353:\n" + " .align 2, 0\n" + "._352:\n" + " .word ContestStatsText_GrayPokeBlock\n" + "._350:\n" + " cmp r7, #0x2\n" + " beq ._354 @cond_branch\n" + " mov r0, r8\n" + " cmp r0, #0x2\n" + " bne ._377 @cond_branch\n" + "._354:\n" + " mov r3, #0x6\n" + " mov r2, #0x0\n" + " mov r5, #0x0\n" + "._359:\n" + " lsl r0, r5, #0x1\n" + " add r0, r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._358 @cond_branch\n" + " cmp r3, #0x6\n" + " bne ._357 @cond_branch\n" + " add r3, r5, #0\n" + " b ._358\n" + "._357:\n" + " add r2, r5, #0\n" + "._358:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x4\n" + " bls ._359 @cond_branch\n" + " lsl r0, r3, #0x1\n" + " mov r4, sp\n" + " add r1, r4, r0\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, sp\n" + " mov r4, #0x0\n" + " ldsh r1, [r1, r4]\n" + " mov r4, #0x0\n" + " ldsh r0, [r0, r4]\n" + " cmp r1, r0\n" + " blt ._360 @cond_branch\n" + " add r2, r3, #0\n" + "._360:\n" + " cmp r2, #0\n" + " bne ._361 @cond_branch\n" + " ldr r1, ._363\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x6\n" + " b ._400\n" + "._364:\n" + " .align 2, 0\n" + "._363:\n" + " .word ContestStatsText_PurplePokeBlock\n" + "._361:\n" + " cmp r2, #0x1\n" + " bne ._365 @cond_branch\n" + " ldr r1, ._367\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x7\n" + " b ._400\n" + "._368:\n" + " .align 2, 0\n" + "._367:\n" + " .word ContestStatsText_IndigoPokeBlock\n" + "._365:\n" + " cmp r2, #0x2\n" + " bne ._369 @cond_branch\n" + " ldr r1, ._371\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x8\n" + " b ._400\n" + "._372:\n" + " .align 2, 0\n" + "._371:\n" + " .word ContestStatsText_BrownPokeBlock\n" + "._369:\n" + " cmp r2, #0x3\n" + " bne ._373 @cond_branch\n" + " ldr r1, ._375\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x9\n" + " b ._400\n" + "._376:\n" + " .align 2, 0\n" + "._375:\n" + " .word ContestStatsText_LiteBluePokeBlock\n" + "._373:\n" + " cmp r2, #0x4\n" + " bne ._377 @cond_branch\n" + " ldr r1, ._379\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0xa\n" + " b ._400\n" + "._380:\n" + " .align 2, 0\n" + "._379:\n" + " .word ContestStatsText_OlivePokeBlock\n" + "._377:\n" + " cmp r7, #0x1\n" + " beq ._381 @cond_branch\n" + " mov r0, r8\n" + " cmp r0, #0x1\n" + " bne ._399 @cond_branch\n" + "._381:\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._383 @cond_branch\n" + " ldr r1, ._385\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x1\n" + " b ._400\n" + "._386:\n" + " .align 2, 0\n" + "._385:\n" + " .word ContestStatsText_RedPokeBlock\n" + "._383:\n" + " mov r0, sp\n" + " ldrh r0, [r0, #0x2]\n" + " cmp r0, #0\n" + " beq ._387 @cond_branch\n" + " ldr r1, ._389\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x2\n" + " b ._400\n" + "._390:\n" + " .align 2, 0\n" + "._389:\n" + " .word ContestStatsText_BluePokeBlock\n" + "._387:\n" + " mov r0, sp\n" + " mov r4, #0x4\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0\n" + " beq ._391 @cond_branch\n" + " ldr r1, ._393\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x3\n" + " b ._400\n" + "._394:\n" + " .align 2, 0\n" + "._393:\n" + " .word ContestStatsText_PinkPokeBlock\n" + "._391:\n" + " mov r0, sp\n" + " mov r1, #0x6\n" + " ldsh r0, [r0, r1]\n" + " cmp r0, #0\n" + " beq ._395 @cond_branch\n" + " ldr r1, ._397\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x4\n" + " b ._400\n" + "._398:\n" + " .align 2, 0\n" + "._397:\n" + " .word ContestStatsText_GreenPokeBlock\n" + "._395:\n" + " mov r0, sp\n" + " mov r4, #0x8\n" + " ldsh r0, [r0, r4]\n" + " cmp r0, #0\n" + " beq ._399 @cond_branch\n" + " ldr r1, ._401\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " b ._400\n" + "._402:\n" + " .align 2, 0\n" + "._401:\n" + " .word ContestStatsText_YellowPokeBlock\n" + "._399:\n" + " ldr r1, ._403\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " mov r0, #0x0\n" + "._400:\n" + " add sp, sp, #0x10\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._404:\n" + " .align 2, 0\n" + "._403:\n" + " .word gOtherText_FiveQuestions\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_816097C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add r7, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r5, r1, #0x10\n" + " mov r6, #0x0\n" + " mov r1, #0x0\n" + "._405:\n" + " add r0, r7, r6\n" + " strb r1, [r0]\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x3\n" + " bls ._405 @cond_branch\n" + " mov r0, #0xff\n" + " strb r0, [r7, #0x4]\n" + " lsl r0, r5, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0\n" + " bne ._406 @cond_branch\n" + " mov r0, #0xa1\n" + " strb r0, [r7, #0x3]\n" + " b ._414\n" + "._406:\n" + " cmp r0, #0\n" + " ble ._408 @cond_branch\n" + " mov r4, #0x64\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " mov r6, #0x0\n" + "._412:\n" + " lsl r5, r5, #0x10\n" + " asr r0, r5, #0x10\n" + " lsl r4, r4, #0x10\n" + " asr r1, r4, #0x10\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " mov r1, r8\n" + " cmp r1, #0\n" + " bne ._410 @cond_branch\n" + " cmp r6, #0x2\n" + " beq ._410 @cond_branch\n" + " cmp r2, #0\n" + " beq ._411 @cond_branch\n" + "._410:\n" + " add r1, r6, r7\n" + " add r0, r2, #0\n" + " sub r0, r0, #0x5f\n" + " strb r0, [r1, #0x1]\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + "._411:\n" + " asr r0, r5, #0x10\n" + " asr r4, r4, #0x10\n" + " add r1, r4, #0\n" + " bl __modsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0xa\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bls ._412 @cond_branch\n" + " b ._414\n" + "._408:\n" + " cmp r0, #0\n" + " bge ._414 @cond_branch\n" + " neg r0, r0\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " mov r4, #0x64\n" + " mov r1, #0x0\n" + " mov r8, r1\n" + " mov r6, #0x0\n" + "._419:\n" + " lsl r5, r5, #0x10\n" + " asr r0, r5, #0x10\n" + " lsl r4, r4, #0x10\n" + " asr r1, r4, #0x10\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " mov r1, r8\n" + " lsl r0, r1, #0x10\n" + " add r3, r0, #0\n" + " cmp r3, #0\n" + " bne ._416 @cond_branch\n" + " cmp r6, #0x2\n" + " beq ._416 @cond_branch\n" + " cmp r2, #0\n" + " beq ._417 @cond_branch\n" + "._416:\n" + " add r1, r6, r7\n" + " add r0, r2, #0\n" + " sub r0, r0, #0x5f\n" + " strb r0, [r1, #0x1]\n" + " cmp r3, #0\n" + " bne ._418 @cond_branch\n" + " mov r0, #0xae\n" + " strb r0, [r1]\n" + "._418:\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + "._417:\n" + " asr r0, r5, #0x10\n" + " asr r4, r4, #0x10\n" + " add r1, r4, #0\n" + " bl __modsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0xa\n" + " bl __divsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bls ._419 @cond_branch\n" + "._414:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160A80() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r2, r0, #0\n" + " ldr r1, ._422\n" + " cmp r0, #0\n" + " bne ._420 @cond_branch\n" + " ldr r4, ._422 + 4\n" + " ldrb r1, [r1, #0x1]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._440\n" + "._423:\n" + " .align 2, 0\n" + "._422:\n" + " .word _nakamuraStatic+0x18\n" + " .word gStringVar1\n" + "._420:\n" + " cmp r0, #0x1\n" + " bne ._424 @cond_branch\n" + " ldr r4, ._426\n" + " ldrb r1, [r1, #0x2]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " b ._440\n" + "._427:\n" + " .align 2, 0\n" + "._426:\n" + " .word gStringVar1\n" + "._424:\n" + " cmp r0, #0x2\n" + " bne ._428 @cond_branch\n" + " ldr r4, ._430\n" + " ldrb r1, [r1, #0x3]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " b ._440\n" + "._431:\n" + " .align 2, 0\n" + "._430:\n" + " .word gStringVar1\n" + "._428:\n" + " cmp r0, #0x3\n" + " bne ._432 @cond_branch\n" + " ldr r4, ._434\n" + " ldrb r1, [r1, #0x4]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._440\n" + "._435:\n" + " .align 2, 0\n" + "._434:\n" + " .word gStringVar1\n" + "._432:\n" + " cmp r0, #0x4\n" + " bne ._436 @cond_branch\n" + " ldr r4, ._438\n" + " ldrb r1, [r1, #0x5]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " b ._440\n" + "._439:\n" + " .align 2, 0\n" + "._438:\n" + " .word gStringVar1\n" + "._436:\n" + " cmp r2, #0x5\n" + " bne ._440 @cond_branch\n" + " ldr r4, ._441\n" + " ldrb r1, [r1, #0x6]\n" + " add r0, r4, #0\n" + " bl debug_sub_816097C\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + "._440:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._442:\n" + " .align 2, 0\n" + "._441:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160B50() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r3, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r4, r1, #0\n" + " ldr r2, ._445\n" + " cmp r0, #0\n" + " bne ._443 @cond_branch\n" + " ldrb r0, [r2, #0x1]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x1]\n" + " b ._455\n" + "._446:\n" + " .align 2, 0\n" + "._445:\n" + " .word _nakamuraStatic+0x18\n" + "._443:\n" + " cmp r0, #0x1\n" + " bne ._447 @cond_branch\n" + " ldrb r0, [r2, #0x2]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x2]\n" + " b ._455\n" + "._447:\n" + " cmp r0, #0x2\n" + " bne ._449 @cond_branch\n" + " ldrb r0, [r2, #0x3]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x3]\n" + " b ._455\n" + "._449:\n" + " cmp r0, #0x3\n" + " bne ._451 @cond_branch\n" + " ldrb r0, [r2, #0x4]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x4]\n" + " b ._455\n" + "._451:\n" + " cmp r0, #0x4\n" + " bne ._453 @cond_branch\n" + " ldrb r0, [r2, #0x5]\n" + " add r0, r0, r1\n" + " strb r0, [r2, #0x5]\n" + " b ._455\n" + "._453:\n" + " cmp r3, #0x5\n" + " bne ._455 @cond_branch\n" + " ldrb r0, [r2, #0x6]\n" + " add r0, r0, r4\n" + " strb r0, [r2, #0x6]\n" + "._455:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160BB0() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r5, ._456\n" + " ldr r4, ._456 + 4\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " bl debug_sub_8160714\n" + " strb r0, [r4]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._457:\n" + " .align 2, 0\n" + "._456:\n" + " .word gStringVar1\n" + " .word _nakamuraStatic+0x18\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160BE4() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_8160BB0\n" + " ldr r0, ._459\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._459 + 20\n" + " mov r1, #0x2\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + "._458:\n" + " add r0, r4, #0\n" + " bl debug_sub_8160A80\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._458 @cond_branch\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._460:\n" + " .align 2, 0\n" + "._459:\n" + " .word gContestStatsText_Spicy\n" + " .word gContestStatsText_Dry\n" + " .word gContestStatsText_Sweet\n" + " .word gContestStatsText_Bitter\n" + " .word gContestStatsText_Sour\n" + " .word gContestStatsText_Tasty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160C7C() +{ + asm( + " push {r4, lr}\n" + " ldr r2, ._469\n" + " mov r1, #0x0\n" + " ldrb r0, [r2]\n" + " cmp r0, #0xc\n" + " bne ._467 @cond_branch\n" + " ldrb r0, [r2, #0x1]\n" + " cmp r0, #0x2\n" + " bne ._462 @cond_branch\n" + " mov r1, #0x1\n" + "._462:\n" + " ldrb r0, [r2, #0x3]\n" + " cmp r0, #0x2\n" + " bne ._463 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._463:\n" + " ldrb r0, [r2, #0x4]\n" + " cmp r0, #0x2\n" + " bne ._464 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._464:\n" + " ldrb r0, [r2, #0x2]\n" + " cmp r0, #0x2\n" + " bne ._465 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._465:\n" + " ldrb r0, [r2, #0x5]\n" + " cmp r0, #0x2\n" + " bne ._466 @cond_branch\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + "._466:\n" + " cmp r1, #0x3\n" + " beq ._467 @cond_branch\n" + " mov r0, #0x2\n" + " strb r0, [r2, #0x1]\n" + " strb r0, [r2, #0x3]\n" + " strb r0, [r2, #0x4]\n" + "._467:\n" + " add r0, r2, #0\n" + " bl sub_810CA34\n" + " bl debug_sub_8160BB0\n" + " mov r4, #0x0\n" + "._468:\n" + " add r0, r4, #0\n" + " bl debug_sub_8160A80\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._468 @cond_branch\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._470:\n" + " .align 2, 0\n" + "._469:\n" + " .word _nakamuraStatic+0x18\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160CF4() +{ + asm( + " push {lr}\n" + " ldr r2, ._473\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._471 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._472\n" + "._474:\n" + " .align 2, 0\n" + "._473:\n" + " .word gMain\n" + "._471:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._475 @cond_branch\n" + " mov r0, #0x1\n" + "._472:\n" + " bl MoveMenuCursor\n" + " mov r0, #0x0\n" + " b ._484\n" + "._475:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._477 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " neg r1, r1\n" + " b ._478\n" + "._477:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._479 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + "._478:\n" + " bl debug_sub_8160B50\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl debug_sub_8160A80\n" + " bl debug_sub_8160BB0\n" + " mov r0, #0x0\n" + " b ._484\n" + "._479:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._481 @cond_branch\n" + " bl debug_sub_8160C7C\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x0\n" + " b ._484\n" + "._481:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._483 @cond_branch\n" + " mov r0, #0x0\n" + " b ._484\n" + "._483:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._484:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +u8 debug_sub_8160D98() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl debug_sub_8160BE4\n" + " ldr r1, ._485\n" + " ldr r0, ._485 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._486:\n" + " .align 2, 0\n" + "._485:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8160CF4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160DC0() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x16\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._487\n" + " mov r1, #0xb\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 20\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 24\n" + " mov r1, #0x2\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 28\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._487 + 32\n" + " mov r1, #0x2\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._488:\n" + " .align 2, 0\n" + "._487:\n" + " .word gOtherText_Slash\n" + " .word Str_843E5F2\n" + " .word Str_843E5FB\n" + " .word Str_843E606\n" + " .word Str_843E611\n" + " .word Str_843E61C\n" + " .word Str_843E627\n" + " .word Str_843E637\n" + " .word Str_843E632\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8160E50() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r5, ._489\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " add r2, r5, #0\n" + " bl GetMonData\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, #0xc\n" + " mov r1, #0x1\n" + " mov r2, #0x15\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " mov r1, #0xb\n" + " mul r0, r0, r1\n" + " ldr r1, ._489 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xc\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x3\n" + " mov r2, #0x11\n" + " mov r3, #0x4\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1b\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x5\n" + " mov r2, #0x11\n" + " mov r3, #0x6\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1c\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x7\n" + " mov r2, #0x11\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1d\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x9\n" + " mov r2, #0x11\n" + " mov r3, #0xa\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1e\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0xb\n" + " mov r2, #0x11\n" + " mov r3, #0xc\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x1f\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0xd\n" + " mov r2, #0x11\n" + " mov r3, #0xe\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " mov r3, #0x10\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x20\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0xd\n" + " mov r1, #0x11\n" + " mov r2, #0x11\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0xd\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gStringVar1\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8161028() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._491 @cond_branch\n" + " ldr r0, ._496\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._492 @cond_branch\n" + " mov r5, #0x5\n" + "._494:\n" + " lsl r0, r5, #0x10\n" + " asr r4, r0, #0x10\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._496 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._493 @cond_branch\n" + " sub r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " cmp r0, #0\n" + " bge ._494 @cond_branch\n" + "._492:\n" + " ldr r1, ._496\n" + " ldrb r0, [r1]\n" + " add r0, r0, r6\n" + " strb r0, [r1]\n" + " b ._506\n" + "._497:\n" + " .align 2, 0\n" + "._496:\n" + " .word _nakamuraData+0x5\n" + " .word gPlayerParty\n" + "._491:\n" + " cmp r1, #0x1\n" + " bne ._506 @cond_branch\n" + " ldr r4, ._501\n" + " ldrb r0, [r4]\n" + " add r0, r0, r6\n" + " strb r0, [r4]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x6\n" + " bne ._499 @cond_branch\n" + " mov r0, #0x0\n" + " b ._500\n" + "._502:\n" + " .align 2, 0\n" + "._501:\n" + " .word _nakamuraData+0x5\n" + "._493:\n" + " ldr r0, ._504\n" + " strb r5, [r0]\n" + " b ._506\n" + "._505:\n" + " .align 2, 0\n" + "._504:\n" + " .word _nakamuraData+0x5\n" + "._499:\n" + " ldrb r1, [r4]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._507\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._506 @cond_branch\n" + "._500:\n" + " strb r0, [r4]\n" + "._506:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._508:\n" + " .align 2, 0\n" + "._507:\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81610BC() +{ + asm( + " push {lr}\n" + " ldr r0, ._511\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._509 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._510\n" + "._512:\n" + " .align 2, 0\n" + "._511:\n" + " .word gMain\n" + "._509:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._513 @cond_branch\n" + " mov r0, #0x1\n" + "._510:\n" + " bl debug_sub_8161028\n" + " ldr r0, ._515\n" + " ldrb r1, [r0]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._515 + 4\n" + " add r0, r0, r1\n" + " bl debug_sub_8160E50\n" + " mov r0, #0x0\n" + " b ._518\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word _nakamuraData+0x5\n" + " .word gPlayerParty\n" + "._513:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._517 @cond_branch\n" + " mov r0, #0x0\n" + " b ._518\n" + "._517:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._518:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_EffortValues() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " ldr r1, ._519\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl debug_sub_8160DC0\n" + " ldr r0, ._519 + 4\n" + " bl debug_sub_8160E50\n" + " ldr r1, ._519 + 8\n" + " ldr r0, ._519 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._520:\n" + " .align 2, 0\n" + "._519:\n" + " .word _nakamuraData+0x5\n" + " .word gPlayerParty\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_81610BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8161160() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r7, #0x0\n" + " ldr r2, ._523\n" + " ldr r1, ._523 + 4\n" + " ldrh r0, [r2]\n" + " ldrh r3, [r1]\n" + " cmp r0, r3\n" + " bhi ._521 @cond_branch\n" + " add r6, r0, #0\n" + " ldrh r5, [r1]\n" + " b ._522\n" + "._524:\n" + " .align 2, 0\n" + "._523:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + "._521:\n" + " ldrh r6, [r1]\n" + " ldrh r5, [r2]\n" + "._522:\n" + " mov r4, #0x0\n" + " ldr r0, ._529\n" + " ldrh r0, [r0]\n" + " cmp r4, r0\n" + " bcs ._525 @cond_branch\n" + " ldr r0, ._529 + 4\n" + " mov r8, r0\n" + "._528:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r2, r8\n" + " ldrh r1, [r2]\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, r6\n" + " bcc ._527 @cond_branch\n" + " cmp r0, r5\n" + " bhi ._527 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + "._527:\n" + " add r4, r4, #0x1\n" + " ldr r0, ._529\n" + " ldrh r0, [r0]\n" + " cmp r4, r0\n" + " bcc ._528 @cond_branch\n" + "._525:\n" + " add r0, r7, #0\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._530:\n" + " .align 2, 0\n" + "._529:\n" + " .word _nakamuraData+0xa\n" + " .word _nakamuraData+0xc\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81611D8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xf\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._531\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._531 + 20\n" + " mov r1, #0xd\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r4, ._531 + 24\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xe\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._532:\n" + " .align 2, 0\n" + "._531:\n" + " .word Str_843E642\n" + " .word Str_843E647\n" + " .word Str_843E65A\n" + " .word Str_843E64C\n" + " .word Str_843E651\n" + " .word Str_843E655\n" + " .word Str_843E658\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8161290() +{ + asm( + " push {r4, lr}\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r4, ._533\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._534:\n" + " .align 2, 0\n" + "._533:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81612B8() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r2, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " ldrh r2, [r0]\n" + " add r1, r1, r2\n" + " strh r1, [r0]\n" + " ldr r5, ._535\n" + " ldrh r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x8\n" + " add r2, r4, #0\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._536:\n" + " .align 2, 0\n" + "._535:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_81612EC() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r2, ._540\n" + " ldrh r1, [r2, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " mov r5, #0x1\n" + " cmp r0, #0\n" + " beq ._537 @cond_branch\n" + " mov r5, #0x64\n" + "._537:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._538 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._539\n" + "._541:\n" + " .align 2, 0\n" + "._540:\n" + " .word gMain\n" + "._538:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._542 @cond_branch\n" + " mov r0, #0x1\n" + "._539:\n" + " bl MoveMenuCursor\n" + "._565:\n" + " mov r0, #0x0\n" + " b ._543\n" + "._542:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._544 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._545 @cond_branch\n" + " ldr r0, ._550\n" + " neg r1, r5\n" + " mov r2, #0x1\n" + " bl debug_sub_81612B8\n" + "._545:\n" + " cmp r4, #0x1\n" + " bne ._546 @cond_branch\n" + " ldr r0, ._550 + 4\n" + " neg r1, r5\n" + " mov r2, #0x3\n" + " bl debug_sub_81612B8\n" + "._546:\n" + " cmp r4, #0x2\n" + " bne ._547 @cond_branch\n" + " ldr r0, ._550 + 8\n" + " neg r1, r5\n" + " mov r2, #0x5\n" + " bl debug_sub_81612B8\n" + "._547:\n" + " cmp r4, #0x3\n" + " bne ._565 @cond_branch\n" + " ldr r0, ._550 + 12\n" + " neg r1, r5\n" + " mov r2, #0x7\n" + " bl debug_sub_81612B8\n" + " b ._565\n" + "._551:\n" + " .align 2, 0\n" + "._550:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + " .word _nakamuraData+0xc\n" + " .word _nakamuraData+0xa\n" + "._544:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._552 @cond_branch\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._553 @cond_branch\n" + " ldr r0, ._558\n" + " add r1, r5, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_81612B8\n" + "._553:\n" + " cmp r4, #0x1\n" + " bne ._554 @cond_branch\n" + " ldr r0, ._558 + 4\n" + " add r1, r5, #0\n" + " mov r2, #0x3\n" + " bl debug_sub_81612B8\n" + "._554:\n" + " cmp r4, #0x2\n" + " bne ._555 @cond_branch\n" + " ldr r0, ._558 + 8\n" + " add r1, r5, #0\n" + " mov r2, #0x5\n" + " bl debug_sub_81612B8\n" + "._555:\n" + " cmp r4, #0x3\n" + " bne ._565 @cond_branch\n" + " ldr r0, ._558 + 12\n" + " add r1, r5, #0\n" + " mov r2, #0x7\n" + " bl debug_sub_81612B8\n" + " b ._565\n" + "._559:\n" + " .align 2, 0\n" + "._558:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + " .word _nakamuraData+0xc\n" + " .word _nakamuraData+0xa\n" + "._552:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._560 @cond_branch\n" + " ldr r0, ._563\n" + " ldrh r0, [r0]\n" + " cmp r0, #0\n" + " beq ._565 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl debug_sub_8161160\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl debug_sub_8161290\n" + " b ._565\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word _nakamuraData+0xc\n" + "._560:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._565 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._543:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_RandomNumberTest() +{ + asm( + " push {lr}\n" + " ldr r0, ._566\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r0, ._566 + 4\n" + " strh r1, [r0]\n" + " ldr r0, ._566 + 8\n" + " strh r1, [r0]\n" + " ldr r0, ._566 + 12\n" + " strh r1, [r0]\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " bl debug_sub_81611D8\n" + " ldr r1, ._566 + 16\n" + " ldr r0, ._566 + 20\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._567:\n" + " .align 2, 0\n" + "._566:\n" + " .word _nakamuraData+0x6\n" + " .word _nakamuraData+0x8\n" + " .word _nakamuraData+0xc\n" + " .word _nakamuraData+0xa\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_81612EC+1\n" + "\n" + ); +} + +#endif // DEBUG diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c new file mode 100644 index 000000000..b7e62481b --- /dev/null +++ b/src/debug/nohara_debug_menu.c @@ -0,0 +1,2316 @@ +#ifdef DEBUG +#include "global.h" + +#define BSS_DATA __attribute__((section(".bss"))) + +BSS_DATA u8 gDebug_03000724[4] = { 0 }; + +__attribute__((naked)) +void InitNoharaDebugMenu() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x13\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x12\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._1 + 4\n" + " ldr r0, ._1 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gUnknown_Debug_083C4938\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F414+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F414() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._3 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._4 @cond_branch\n" + " ldr r2, ._6\n" + " ldr r0, ._6 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + "._3:\n" + " mov r0, #0x0\n" + " b ._5\n" + "._7:\n" + " .align 2, 0\n" + "._6:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4938\n" + "._4:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._5:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_TV() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._8\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._8 + 4\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x9\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._8 + 8\n" + " ldr r0, ._8 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._9:\n" + " .align 2, 0\n" + "._8:\n" + " .word gDebug_03000724+0x2\n" + " .word gUnknown_Debug_083C4B8C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F4AC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F4AC() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._10 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._11 @cond_branch\n" + " ldr r2, ._13\n" + " ldr r0, ._13 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + "._10:\n" + " mov r0, #0x0\n" + " b ._12\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4B8C\n" + "._11:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._12:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F4EC() +{ + asm( + " push {lr}\n" + " bl debug_sub_808F6BC\n" + " ldr r0, ._15\n" + " bl sub_8071F40\n" + " mov r0, #0x3\n" + " mov r1, #0x3\n" + " mov r2, #0x1\n" + " bl DisplayYesNoMenu\n" + " ldr r1, ._15 + 4\n" + " ldr r0, ._15 + 8\n" + " str r0, [r1]\n" + " pop {r0}\n" + " bx r0\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gUnknown_Debug_083C4980\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F648+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F518() +{ + asm( + " push {r4, lr}\n" + " mov r2, #0x0\n" + " ldr r4, ._20\n" + " ldr r3, ._20 + 4\n" + "._19:\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r1, r0, r4\n" + " add r0, r1, r3\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x15\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x13\n" + " bhi ._18 @cond_branch\n" + " ldr r0, ._20 + 8\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._18 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._18:\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x17\n" + " bls ._19 @cond_branch\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._21:\n" + " .align 2, 0\n" + "._20:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word 0x2739\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F560() +{ + asm( + " push {r4, lr}\n" + " mov r1, #0x0\n" + " ldr r4, ._23\n" + " ldr r3, ._23 + 4\n" + " mov r2, #0x0\n" + "._22:\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r4\n" + " add r0, r0, r3\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x17\n" + " bls ._22 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word gSaveBlock1\n" + " .word 0x2739\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F594() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r2, #0x0\n" + " ldr r6, ._27\n" + " ldr r5, ._27 + 4\n" + " ldr r4, ._27 + 8\n" + " mov r3, #0x1\n" + "._26:\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r1, r0, r6\n" + " add r0, r1, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " add r0, r1, r4\n" + " strb r3, [r0]\n" + "._25:\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x17\n" + " bls ._26 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word 0x2739\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F5D8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r4, #0x0\n" + " ldr r6, ._30\n" + " ldr r7, ._30 + 4\n" + " add r0, r7, #1\n" + " mov r8, r0\n" + "._29:\n" + " ldr r5, ._30 + 8\n" + " strh r4, [r5]\n" + " bl sub_810F424\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r0, r4, #0x1\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r1, r0, r7\n" + " ldrb r1, [r1]\n" + " add r0, r0, r8\n" + " ldrb r2, [r0]\n" + " add r0, r6, #0\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xb\n" + " bls ._29 @cond_branch\n" + " mov r0, #0x0\n" + " strh r0, [r5]\n" + " ldr r1, ._30 + 12\n" + " ldr r0, ._30 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_083C4BD4\n" + " .word gSpecialVar_0x8004\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F648() +{ + asm( + " push {lr}\n" + " ldr r0, ._35\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._32 @cond_branch\n" + " mov r0, #0xa\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuZeroFillWindowRect\n" + " ldr r0, ._35 + 4\n" + " ldrb r1, [r0]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strb r1, [r0]\n" + " cmp r1, #0\n" + " beq ._33 @cond_branch\n" + " bl debug_sub_808F7B4\n" + " b ._40\n" + "._36:\n" + " .align 2, 0\n" + "._35:\n" + " .word gMain\n" + " .word gDebug_03000724+0x2\n" + "._33:\n" + " bl debug_sub_808F6BC\n" + " b ._40\n" + "._32:\n" + " bl ProcessMenuInputNoWrap_\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._43 @cond_branch\n" + " cmp r1, r0\n" + " bgt ._39 @cond_branch\n" + " sub r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._40 @cond_branch\n" + " b ._43\n" + "._39:\n" + " cmp r1, #0\n" + " beq ._42 @cond_branch\n" + " b ._43\n" + "._40:\n" + " mov r0, #0x0\n" + " b ._44\n" + "._42:\n" + " bl debug_sub_808F518\n" + "._43:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._44:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F6BC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._48\n" + " ldr r6, ._48 + 4\n" + "._45:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._48 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x4\n" + " bls ._45 @cond_branch\n" + " mov r4, #0x5\n" + " ldr r5, ._48\n" + " ldr r6, ._48 + 4\n" + "._50:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._48 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0xe\n" + " bhi ._46 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._47\n" + "._49:\n" + " .align 2, 0\n" + "._48:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + "._46:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xec\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x6\n" + " bl MenuPrint\n" + "._47:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x17\n" + " bls ._50 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r5, ._53\n" + "._55:\n" + " ldr r0, ._53 + 4\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r0\n" + " ldr r0, ._53 + 8\n" + " add r1, r1, r0\n" + " ldrb r1, [r1]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0x7\n" + " bhi ._51 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._52\n" + "._54:\n" + " .align 2, 0\n" + "._53:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2abc\n" + "._51:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xfa\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0xc\n" + " bl MenuPrint\n" + "._52:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xf\n" + " bls ._55 @cond_branch\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F7B4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._59\n" + " ldr r6, ._59 + 4\n" + "._56:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._59 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x4\n" + " bls ._56 @cond_branch\n" + " mov r4, #0x5\n" + " ldr r5, ._59\n" + " ldr r6, ._59 + 4\n" + "._61:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._59 + 8\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0xe\n" + " bhi ._57 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._58\n" + "._60:\n" + " .align 2, 0\n" + "._59:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2739\n" + "._57:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xec\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x6\n" + " bl MenuPrint\n" + "._58:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x17\n" + " bls ._61 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r5, ._64\n" + "._66:\n" + " ldr r0, ._64 + 4\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r0\n" + " ldr r0, ._64 + 8\n" + " add r1, r1, r0\n" + " ldrb r1, [r1]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " cmp r4, #0x7\n" + " bhi ._62 @cond_branch\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x14\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._63\n" + "._65:\n" + " .align 2, 0\n" + "._64:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x2abd\n" + "._62:\n" + " lsl r1, r4, #0x19\n" + " mov r0, #0xfa\n" + " lsl r0, r0, #0x18\n" + " add r1, r1, r0\n" + " lsr r1, r1, #0x18\n" + " add r0, r5, #0\n" + " mov r2, #0xc\n" + " bl MenuPrint\n" + "._63:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xf\n" + " bls ._66 @cond_branch\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F8AC() +{ + asm( + " push {lr}\n" + " ldr r0, ._67\n" + " bl FlagSet\n" + " ldr r0, ._67 + 4\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._68:\n" + " .align 2, 0\n" + "._67:\n" + " .word 0x832\n" + " .word 0x818\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F8CC() +{ + asm( + " push {r4, lr}\n" + " ldr r1, ._69\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r0, ._69 + 4\n" + " bl sub_8071F40\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x1a\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._69 + 8\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._69 + 12\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r1, ._69 + 16\n" + " ldr r0, ._69 + 20\n" + " str r0, [r1]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._70:\n" + " .align 2, 0\n" + "._69:\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C49CA\n" + " .word gUnknown_Debug_083C4ABD+0xf\n" + " .word gStringVar1\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808F93C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F93C() +{ + asm( + " push {r4, lr}\n" + " mov r2, #0x0\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._71 @cond_branch\n" + " ldr r1, ._83 + 4\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x18\n" + " bne ._72 @cond_branch\n" + " strb r2, [r1]\n" + "._72:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._71:\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._73 @cond_branch\n" + " ldr r1, ._83 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._74 @cond_branch\n" + " mov r0, #0x18\n" + " strb r0, [r1]\n" + "._74:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._73:\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._75 @cond_branch\n" + " ldr r1, ._83 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xc\n" + " bne ._76 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._76:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._75:\n" + " ldr r0, ._83\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._77 @cond_branch\n" + " ldr r1, ._83 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._78 @cond_branch\n" + " mov r0, #0xc\n" + " strb r0, [r1]\n" + "._78:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._77:\n" + " cmp r2, #0\n" + " beq ._79 @cond_branch\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x1a\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._83 + 12\n" + " ldr r0, ._83 + 8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._83 + 16\n" + " ldr r0, ._83 + 4\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._79:\n" + " ldr r4, ._83\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._80 @cond_branch\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + " ldr r0, ._83 + 4\n" + " ldrb r0, [r0]\n" + " ldr r2, ._83 + 20\n" + " ldr r1, ._83 + 8\n" + " ldrb r1, [r1]\n" + " add r1, r1, r2\n" + " ldrb r1, [r1]\n" + " bl debug_sub_808FA88\n" + "._80:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._81 @cond_branch\n" + " mov r0, #0x0\n" + " b ._82\n" + "._84:\n" + " .align 2, 0\n" + "._83:\n" + " .word gMain\n" + " .word gDebug_03000724+0x1\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C4ABD+0xf\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_083C4ABD\n" + "._81:\n" + " ldr r0, ._85\n" + " bl sub_80BF588\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._82:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._86:\n" + " .align 2, 0\n" + "._85:\n" + " .word gSaveBlock1+0x2738\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FA88() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xffffffcc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r7, r1, #0x18\n" + " bl GetLeadMonIndex\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " ldr r3, ._92\n" + " lsl r4, r6, #0x3\n" + " add r2, r4, r6\n" + " lsl r2, r2, #0x2\n" + " add r0, r2, r3\n" + " ldr r5, ._92 + 4\n" + " add r1, r0, r5\n" + " strb r7, [r1]\n" + " ldr r1, ._92 + 8\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strb r1, [r0]\n" + " mov r1, #0x0\n" + " ldr r0, ._92 + 12\n" + " add r5, r3, r0\n" + " mov r3, #0x1\n" + "._87:\n" + " add r0, r1, r2\n" + " add r0, r0, r5\n" + " strb r3, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x21\n" + " bls ._87 @cond_branch\n" + " add r0, r7, #0\n" + " bl sub_80BFB54\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r0, #0\n" + " cmp r0, #0x3\n" + " beq ._88 @cond_branch\n" + " cmp r0, #0x3\n" + " bgt ._89 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._90 @cond_branch\n" + " b ._95\n" + "._93:\n" + " .align 2, 0\n" + "._92:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word 0x2739\n" + " .word 0x273a\n" + "._89:\n" + " cmp r1, #0x4\n" + " bne ._95 @cond_branch\n" + "._90:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._96\n" + " add r0, r0, r1\n" + " bl sub_80BE160\n" + " b ._95\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word gSaveBlock1+0x2738\n" + "._88:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._100\n" + " add r0, r0, r1\n" + " bl sub_80BE138\n" + "._95:\n" + " sub r0, r7, #1\n" + " cmp r0, #0x28\n" + " bls ._98 @cond_branch\n" + " b ._173\n" + "._98:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._100 + 4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._101:\n" + " .align 2, 0\n" + "._100:\n" + " .word gSaveBlock1+0x2738\n" + " .word ._102\n" + "._102:\n" + " .word ._104\n" + " .word ._104\n" + " .word ._105\n" + " .word ._173\n" + " .word ._107\n" + " .word ._108\n" + " .word ._109\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._123\n" + " .word ._124\n" + " .word ._125\n" + " .word ._126\n" + " .word ._127\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._173\n" + " .word ._143\n" + "._104:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._145\n" + " add r4, r0, r1\n" + " mov r2, #0x1\n" + " strh r2, [r4, #0x2]\n" + " add r1, r1, #0x10\n" + " add r0, r0, r1\n" + " ldr r1, ._145 + 4\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x18]\n" + " b ._173\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + "._105:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r6, ._148\n" + " add r1, r4, r6\n" + " mov r8, r1\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x2]\n" + " add r0, r6, #5\n" + " add r0, r4, r0\n" + " ldr r1, ._148 + 4\n" + " bl StringCopy\n" + " mov r0, #0x64\n" + " mov r5, r9\n" + " mul r5, r5, r0\n" + " ldr r0, ._148 + 8\n" + " add r5, r5, r0\n" + " add r6, r6, #0x10\n" + " add r4, r4, r6\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " mov r0, #0x5\n" + " mov r1, r8\n" + " strb r0, [r1, #0xd]\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " mov r5, r8\n" + " strb r0, [r5, #0xe]\n" + " b ._173\n" + "._149:\n" + " .align 2, 0\n" + "._148:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + " .word gPlayerParty\n" + "._107:\n" + " mov r0, #0x64\n" + " mov r1, r9\n" + " mul r1, r1, r0\n" + " mov r8, r1\n" + " ldr r0, ._151\n" + " add r8, r8, r0\n" + " mov r0, r8\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r5, ._151 + 4\n" + " add r6, r4, r5\n" + " strh r0, [r6, #0x2]\n" + " mov r0, #0x1\n" + " strh r0, [r6, #0x1c]\n" + " add r0, r5, #0\n" + " add r0, r0, #0xf\n" + " add r0, r4, r0\n" + " ldr r1, ._151 + 8\n" + " bl StringCopy\n" + " add r5, r5, #0x4\n" + " add r4, r4, r5\n" + " mov r0, r8\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " mov r0, #0x5\n" + " strb r0, [r6, #0x1e]\n" + " mov r0, r8\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " strb r0, [r6, #0x1f]\n" + " b ._173\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word gPlayerParty\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + "._108:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r6, ._154\n" + " add r5, r4, r6\n" + " mov r8, r5\n" + " mov r0, #0x1\n" + " strh r0, [r5, #0x2]\n" + " add r0, r6, #0\n" + " add r0, r0, #0x16\n" + " add r0, r4, r0\n" + " ldr r1, ._154 + 4\n" + " bl StringCopy\n" + " mov r0, #0x64\n" + " mov r5, r9\n" + " mul r5, r5, r0\n" + " ldr r0, ._154 + 8\n" + " add r5, r5, r0\n" + " add r6, r6, #0x8\n" + " add r4, r4, r6\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " mov r0, #0x5\n" + " mov r1, r8\n" + " strb r0, [r1, #0x1e]\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " mov r5, r8\n" + " strb r0, [r5, #0x1f]\n" + " b ._173\n" + "._155:\n" + " .align 2, 0\n" + "._154:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + " .word gPlayerParty\n" + "._109:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r5, ._157\n" + " add r6, r4, r5\n" + " mov r0, #0x1\n" + " strh r0, [r6, #0xa]\n" + " strh r0, [r6, #0x14]\n" + " add r0, r5, #2\n" + " add r0, r4, r0\n" + " ldr r1, ._157 + 4\n" + " mov r8, r1\n" + " bl StringCopy\n" + " add r5, r5, #0xc\n" + " add r4, r4, r5\n" + " add r0, r4, #0\n" + " mov r1, r8\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r6, #0x1d]\n" + " b ._173\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gSaveBlock1+0x2738\n" + " .word gSaveBlock2\n" + "._143:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._160\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0xc]\n" + " strh r1, [r0, #0x16]\n" + " b ._173\n" + "._161:\n" + " .align 2, 0\n" + "._160:\n" + " .word gSaveBlock1+0x2738\n" + "._123:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._163\n" + " add r4, r4, r0\n" + " ldr r1, ._163 + 4\n" + " mov r0, sp\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " add r5, sp, #0x8\n" + " ldr r1, ._163 + 8\n" + " add r0, r5, #0\n" + " mov r2, #0xb\n" + " bl memcpy\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x12]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " mov r1, sp\n" + " bl StringCopy\n" + " add r0, r4, #4\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0xc\n" + " strb r0, [r4, #0xf]\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0x10]\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x2]\n" + " strb r0, [r4, #0x3]\n" + " b ._173\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + " .word gUnknown_Debug_083C4C6C\n" + "._124:\n" + " add r0, r4, r6\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._168\n" + " add r5, r0, r1\n" + " add r4, sp, #0x14\n" + " ldr r1, ._168 + 4\n" + " add r0, r4, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " add r1, r4, #0\n" + " mov r3, #0xfe\n" + " mov r2, #0x2\n" + " add r0, r5, #0\n" + " add r0, r0, #0x10\n" + "._165:\n" + " strh r3, [r0]\n" + " sub r0, r0, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._165 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r5, #0x2]\n" + " mov r0, #0x28\n" + " strb r0, [r5, #0x12]\n" + " add r0, r5, #0\n" + " add r0, r0, #0x13\n" + " add r3, r5, #6\n" + " mov r6, #0x1e\n" + " add r2, r5, #0\n" + " add r2, r2, #0xa\n" + "._166:\n" + " strh r6, [r2]\n" + " sub r2, r2, #0x2\n" + " cmp r2, r3\n" + " bge ._166 @cond_branch\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r5, #0x3]\n" + " b ._173\n" + "._169:\n" + " .align 2, 0\n" + "._168:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + "._125:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._171\n" + " add r4, r4, r0\n" + " add r5, sp, #0x1c\n" + " ldr r1, ._171 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0xc]\n" + " strh r0, [r4, #0xe]\n" + " mov r0, #0x3\n" + " strb r0, [r4, #0x12]\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x10]\n" + " mov r0, #0x1\n" + " strb r0, [r4, #0x11]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x2]\n" + " b ._173\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + "._126:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._174\n" + " add r4, r4, r0\n" + " add r5, sp, #0x24\n" + " ldr r1, ._174 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " mov r0, #0xff\n" + " strb r0, [r4, #0x2]\n" + " mov r0, #0x0\n" + " strb r0, [r4, #0x3]\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0x4]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0x6]\n" + " b ._173\n" + "._175:\n" + " .align 2, 0\n" + "._174:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + "._127:\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x2\n" + " ldr r0, ._176\n" + " add r4, r4, r0\n" + " add r5, sp, #0x2c\n" + " ldr r1, ._176 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " ldr r0, ._176 + 8\n" + " strh r0, [r4, #0x2]\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " strh r0, [r4, #0x6]\n" + " mov r0, #0x28\n" + " strh r0, [r4, #0x4]\n" + " strh r0, [r4, #0x8]\n" + " mov r0, #0x3\n" + " strb r0, [r4, #0xa]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x13\n" + " add r1, r5, #0\n" + " bl StringCopy\n" + " mov r0, #0x5\n" + " strb r0, [r4, #0xb]\n" + "._173:\n" + " add sp, sp, #0x34\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._177:\n" + " .align 2, 0\n" + "._176:\n" + " .word gSaveBlock1+0x2738\n" + " .word gUnknown_Debug_083C4C64\n" + " .word 0xffff\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FEBC() +{ + asm( + " push {lr}\n" + " bl ClearTVShowData\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FECC() +{ + asm( + " push {r4, lr}\n" + " ldr r1, ._178\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r0, ._178 + 4\n" + " bl sub_8071F40\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x17\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._178 + 8\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._178 + 12\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r1, ._178 + 16\n" + " ldr r0, ._178 + 20\n" + " str r0, [r1]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._179:\n" + " .align 2, 0\n" + "._178:\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C49CA\n" + " .word gUnknown_Debug_083C4B20+0x4\n" + " .word gStringVar1\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808FF3C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808FF3C() +{ + asm( + " push {r4, lr}\n" + " mov r2, #0x0\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " ldr r1, ._192 + 4\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x10\n" + " bne ._181 @cond_branch\n" + " strb r2, [r1]\n" + "._181:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._180:\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._182 @cond_branch\n" + " ldr r1, ._192 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._183 @cond_branch\n" + " mov r0, #0x10\n" + " strb r0, [r1]\n" + "._183:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._182:\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._184 @cond_branch\n" + " ldr r1, ._192 + 8\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bne ._185 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._185:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._184:\n" + " ldr r0, ._192\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._186 @cond_branch\n" + " ldr r1, ._192 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._187 @cond_branch\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + "._187:\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r2, #0x1\n" + "._186:\n" + " cmp r2, #0\n" + " beq ._188 @cond_branch\n" + " mov r0, #0xd\n" + " mov r1, #0x6\n" + " mov r2, #0x17\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._192 + 12\n" + " ldr r0, ._192 + 8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " mov r0, #0x16\n" + " mov r1, #0x1\n" + " mov r2, #0x18\n" + " mov r3, #0x2\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._192 + 16\n" + " ldr r0, ._192 + 4\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._188:\n" + " ldr r4, ._192\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._189 @cond_branch\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + " ldr r0, ._192 + 4\n" + " ldrb r0, [r0]\n" + " ldr r2, ._192 + 20\n" + " ldr r1, ._192 + 8\n" + " ldrb r1, [r1]\n" + " add r1, r1, r2\n" + " ldrb r1, [r1]\n" + " bl debug_sub_8090080\n" + "._189:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._190 @cond_branch\n" + " mov r0, #0x0\n" + " b ._191\n" + "._193:\n" + " .align 2, 0\n" + "._192:\n" + " .word gMain\n" + " .word gDebug_03000724+0x1\n" + " .word gDebug_03000724\n" + " .word gUnknown_Debug_083C4B20+0x4\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_083C4B20\n" + "._190:\n" + " bl sub_80BEC40\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._191:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090080() +{ + asm( + " lsl r0, r0, #0x18\n" + " ldr r2, ._194\n" + " lsr r0, r0, #0x16\n" + " add r0, r0, r2\n" + " ldr r3, ._194 + 4\n" + " add r2, r0, r3\n" + " strb r1, [r2]\n" + " ldr r1, ._194 + 8\n" + " add r2, r0, r1\n" + " mov r1, #0x1\n" + " strb r1, [r2]\n" + " add r3, r3, #0x2\n" + " add r0, r0, r3\n" + " mov r1, #0x4\n" + " strh r1, [r0]\n" + " bx lr\n" + "._195:\n" + " .align 2, 0\n" + "._194:\n" + " .word gSaveBlock1\n" + " .word 0x2abc\n" + " .word 0x2abd\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80900AC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r7, #0x0\n" + " mov r5, #0x0\n" + " ldr r0, ._202\n" + " mov r8, r0\n" + "._198:\n" + " lsl r0, r5, #0x3\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x2\n" + " mov r1, r8\n" + " add r6, r0, r1\n" + " ldr r1, ._202 + 4\n" + " add r0, r6, r1\n" + " ldrb r4, [r0]\n" + " cmp r4, #0\n" + " bne ._196 @cond_branch\n" + " cmp r7, #0xc\n" + " bne ._197 @cond_branch\n" + " mov r7, #0x0\n" + "._197:\n" + " ldr r0, ._202 + 8\n" + " add r0, r7, r0\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " bl debug_sub_808FA88\n" + " ldr r1, ._202 + 12\n" + " add r0, r6, r1\n" + " strb r4, [r0]\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._196:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x17\n" + " bls ._198 @cond_branch\n" + " mov r7, #0x0\n" + " mov r5, #0x0\n" + "._201:\n" + " ldr r0, ._202\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r0\n" + " ldr r0, ._202 + 16\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._199 @cond_branch\n" + " cmp r7, #0x3\n" + " bne ._200 @cond_branch\n" + " mov r7, #0x0\n" + "._200:\n" + " ldr r0, ._202 + 20\n" + " add r0, r7, r0\n" + " ldrb r1, [r0]\n" + " add r0, r5, #0\n" + " bl debug_sub_8090080\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._199:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0xf\n" + " bls ._201 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._203:\n" + " .align 2, 0\n" + "._202:\n" + " .word gSaveBlock1\n" + " .word 0x2738\n" + " .word gUnknown_Debug_083C4ABD\n" + " .word 0x2739\n" + " .word 0x2abc\n" + " .word gUnknown_Debug_083C4B20\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_Fan() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._204\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._204 + 4\n" + " ldr r0, ._204 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._205:\n" + " .align 2, 0\n" + "._204:\n" + " .word gUnknown_Debug_083C4D28\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80901A4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80901A4() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._206 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._207 @cond_branch\n" + " ldr r2, ._209\n" + " ldr r0, ._209 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + "._206:\n" + " mov r0, #0x0\n" + " b ._208\n" + "._210:\n" + " .align 2, 0\n" + "._209:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4D28\n" + "._207:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._208:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80901E4() +{ + asm( + " push {lr}\n" + " bl ResetFanClub\n" + " bl sub_810FAA0\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80901F8() +{ + asm( + " push {lr}\n" + " bl sub_810FB9C\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._211\n" + " ldr r1, ._211 + 4\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, ._211 + 8\n" + " ldr r0, ._211 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._212:\n" + " .align 2, 0\n" + "._211:\n" + " .word gUnknown_Debug_083C4CA8\n" + " .word gUnknown_083F8408\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090238() +{ + asm( + " push {lr}\n" + " bl sub_810FC18\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._213\n" + " ldr r1, ._213 + 4\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " mov r1, #0xe\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, ._213 + 8\n" + " ldr r0, ._213 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gUnknown_Debug_083C4CA8\n" + " .word gUnknown_083F8410\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090278() +{ + asm( + " push {lr}\n" + " ldr r0, ._217\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._215 @cond_branch\n" + " mov r0, #0x0\n" + " b ._216\n" + "._218:\n" + " .align 2, 0\n" + "._217:\n" + " .word gMain\n" + "._215:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._216:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_809029C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._219\n" + " ldr r0, ._219 + 4\n" + " ldr r1, ._219 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " mov r1, #0x7f\n" + " and r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x10\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, ._219 + 12\n" + " ldr r0, ._219 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._220:\n" + " .align 2, 0\n" + "._219:\n" + " .word gStringVar1\n" + " .word gSaveBlock1\n" + " .word 0x13c2\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090278+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80902E4() +{ + asm( + " push {lr}\n" + " ldr r1, ._221\n" + " ldrh r0, [r1, #0xe]\n" + " add r0, r0, #0x6\n" + " strh r0, [r1, #0xe]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word gSaveBlock2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80902FC() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090310() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090324() +{ + asm( + " push {lr}\n" + " mov r0, #0x2\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090338() +{ + asm( + " push {lr}\n" + " mov r0, #0x3\n" + " bl sub_810FB10\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_BattleVSDad() +{ + asm( + " push {lr}\n" + " ldr r0, ._223\n" + " mov r1, #0x6\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._224:\n" + " .align 2, 0\n" + "._223:\n" + " .word 0x4085\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_DadAfterBattle() +{ + asm( + " push {lr}\n" + " ldr r0, ._225\n" + " mov r1, #0x7\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._226:\n" + " .align 2, 0\n" + "._225:\n" + " .word 0x4085\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_SootopolisCity() +{ + asm( + " push {lr}\n" + " mov r0, #0x81\n" + " bl FlagSet\n" + " mov r0, #0x71\n" + " bl FlagSet\n" + " ldr r0, ._227\n" + " bl FlagReset\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._228:\n" + " .align 2, 0\n" + "._227:\n" + " .word 0x32f\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_Embark() +{ + asm( + " push {lr}\n" + " ldr r0, ._229\n" + " bl FlagReset\n" + " ldr r0, ._229 + 4\n" + " mov r1, #0x1\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._230:\n" + " .align 2, 0\n" + "._229:\n" + " .word 0x2e3\n" + " .word 0x4090\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_Yes9999() +{ + asm( + " push {lr}\n" + " ldr r0, ._231\n" + " ldr r1, ._231 + 4\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._232:\n" + " .align 2, 0\n" + "._231:\n" + " .word 0x4048\n" + " .word 0x270f\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_LegendsFlagOn() +{ + asm( + " push {lr}\n" + " mov r0, #0xe4\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void NoharaDebugMenu_AddNumWinningStreaks() +{ + asm( + " push {lr}\n" + " ldr r0, ._235\n" + " ldr r1, ._235 + 4\n" + " add r2, r0, r1\n" + " ldrh r1, [r2]\n" + " cmp r1, #0x31\n" + " bhi ._233 @cond_branch\n" + " mov r0, #0x32\n" + " b ._244\n" + "._236:\n" + " .align 2, 0\n" + "._235:\n" + " .word gSaveBlock2\n" + " .word 0x572\n" + "._233:\n" + " cmp r1, #0x63\n" + " bhi ._237 @cond_branch\n" + " mov r0, #0x64\n" + " b ._244\n" + "._237:\n" + " ldr r0, ._241\n" + " cmp r1, r0\n" + " bhi ._239 @cond_branch\n" + " add r0, r0, #0x1\n" + " b ._244\n" + "._242:\n" + " .align 2, 0\n" + "._241:\n" + " .word 0x3e7\n" + "._239:\n" + " ldr r0, ._245\n" + " cmp r1, r0\n" + " bhi ._243 @cond_branch\n" + " ldr r0, ._245 + 4\n" + " b ._244\n" + "._246:\n" + " .align 2, 0\n" + "._245:\n" + " .word 0x1387\n" + " .word 0x2706\n" + "._243:\n" + " ldr r0, ._248\n" + " cmp r1, r0\n" + " bhi ._247 @cond_branch\n" + " add r0, r0, #0xa\n" + "._244:\n" + " strh r0, [r2]\n" + "._247:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._249:\n" + " .align 2, 0\n" + "._248:\n" + " .word 0x2705\n" + "\n" + ); +} + +#endif diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c new file mode 100644 index 000000000..4f9b588d8 --- /dev/null +++ b/src/debug/taya_debug_window.c @@ -0,0 +1,2122 @@ +#ifdef DEBUG +#include "global.h" + +EWRAM_DATA u8 unk_2030224[4] = { 0 }; + +__attribute__((naked)) +void TayaDebugMenu_Trend() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xffffffd8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1e\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r5, ._3\n" + " mov r7, #0x0\n" + " mov r0, #0x1\n" + " add r0, r0, sp\n" + " mov sl, r0\n" + " mov r9, sp\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " add r6, sp, #0x20\n" + "._2:\n" + " ldrb r1, [r5, #0x1]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " mov r1, #0xa1\n" + " cmp r0, #0\n" + " beq ._1 @cond_branch\n" + " mov r1, #0xa2\n" + "._1:\n" + " mov r0, r9\n" + " strb r1, [r0]\n" + " ldrh r1, [r5, #0x4]\n" + " add r0, r6, #0\n" + " bl sub_80EB3FC\n" + " mov r0, sl\n" + " add r1, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x7\n" + " bl StringCopyPadded\n" + " add r4, r0, #0\n" + " ldrh r1, [r5, #0x6]\n" + " add r0, r6, #0\n" + " bl sub_80EB3FC\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x8\n" + " bl StringCopyPadded\n" + " add r4, r0, #0\n" + " ldrb r1, [r5]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x19\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r4, r0, #0\n" + " mov r0, r8\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " ldrh r1, [r5]\n" + " lsl r1, r1, #0x12\n" + " lsr r1, r1, #0x19\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r4, r0, #0\n" + " mov r0, r8\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " ldrh r1, [r5, #0x2]\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r2, r7, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " add r5, r5, #0x8\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r7, r0, #0x10\n" + " cmp r7, #0x4\n" + " bls ._2 @cond_branch\n" + " ldr r1, ._3 + 4\n" + " ldr r0, ._3 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x28\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gSaveBlock1+0x2dd4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090808+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090808() +{ + asm( + " push {lr}\n" + " ldr r0, ._7\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x3\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._5 @cond_branch\n" + " mov r0, #0x0\n" + " b ._6\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gMain\n" + "._5:\n" + " bl MenuZeroFillScreen\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._6:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_TrendR() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r0, #0x0\n" + " ldr r7, ._11\n" + "._10:\n" + " mov r4, #0x0\n" + " lsl r5, r0, #0x3\n" + " add r6, r0, #1\n" + "._9:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x16\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl sub_80EB72C\n" + " lsl r1, r4, #0x1\n" + " add r1, r1, r5\n" + " add r1, r1, r7\n" + " strh r0, [r1]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x1\n" + " bls ._9 @cond_branch\n" + " lsl r0, r6, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x4\n" + " bls ._10 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gSaveBlock1+0x2dd8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090880() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._13 @cond_branch\n" + " mov r0, #0x0\n" + " b ._14\n" + "._13:\n" + " bl sub_80E60D8\n" + " mov r0, #0x1\n" + "._14:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_809089C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._15 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._16 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._17\n" + "._16:\n" + " ldr r2, ._19\n" + " ldr r0, ._19 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " strh r0, [r2]\n" + " ldrh r0, [r2]\n" + " sub r0, r0, #0x5\n" + " cmp r0, #0x7\n" + " bhi ._27 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._19 + 8\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word gSpecialVar_0x8004\n" + " .word gUnknown_Debug_083C4EC0\n" + " .word ._21\n" + "._21:\n" + " .word ._29\n" + " .word ._27\n" + " .word ._29\n" + " .word ._29\n" + " .word ._27\n" + " .word ._27\n" + " .word ._29\n" + " .word ._29\n" + "._29:\n" + " ldr r0, ._30\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r0, ._30 + 4\n" + " strh r1, [r0]\n" + "._27:\n" + " mov r0, #0x1\n" + " mov r1, #0x0\n" + " bl fade_screen\n" + " ldr r1, ._30 + 8\n" + " ldr r0, ._30 + 12\n" + " str r0, [r1]\n" + "._15:\n" + " mov r0, #0x0\n" + "._17:\n" + " pop {r1}\n" + " bx r1\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gSpecialVar_0x8005\n" + " .word gSpecialVar_0x8006\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090880+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_SimpleText() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._32\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._32 + 4\n" + " ldr r0, ._32 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._33:\n" + " .align 2, 0\n" + "._32:\n" + " .word gUnknown_Debug_083C4EC0\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_809089C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090984() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " bl ProcessMenuInput\n" + " lsl r2, r0, #0x18\n" + " asr r1, r2, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._34 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " beq ._46 @cond_branch\n" + " cmp r1, #0x4\n" + " bgt ._36 @cond_branch\n" + " lsr r0, r2, #0x18\n" + " bl debug_sub_810B32C\n" + " b ._46\n" + "._34:\n" + " mov r0, #0x0\n" + " b ._38\n" + "._36:\n" + " cmp r1, #0x5\n" + " bne ._39 @cond_branch\n" + " bl sub_80F7F30\n" + " b ._46\n" + "._39:\n" + " cmp r1, #0x6\n" + " bne ._41 @cond_branch\n" + " mov r4, #0x0\n" + " ldr r0, ._44\n" + " add r1, r0, #2\n" + " mov ip, r1\n" + " ldr r7, ._44 + 4\n" + " ldr r1, ._44 + 8\n" + " add r6, r0, r1\n" + " add r5, r0, #0\n" + " add r5, r5, #0xe\n" + "._42:\n" + " lsl r1, r4, #0x1\n" + " mov r0, ip\n" + " add r3, r1, r0\n" + " add r0, r1, r7\n" + " ldrh r2, [r0]\n" + " strh r2, [r3]\n" + " add r0, r1, r5\n" + " strh r2, [r0]\n" + " add r1, r6, r1\n" + " strh r2, [r1]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x2\n" + " bls ._42 @cond_branch\n" + " b ._46\n" + "._45:\n" + " .align 2, 0\n" + "._44:\n" + " .word gSaveBlock1+0x2d94\n" + " .word gUnknown_Debug_083C4F08\n" + " .word 0xfffffd94\n" + "._41:\n" + " cmp r1, #0x7\n" + " bne ._46 @cond_branch\n" + " mov r4, #0x0\n" + "._47:\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl sub_80EB890\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x20\n" + " bls ._47 @cond_branch\n" + "._46:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._38:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_OldMan() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._48\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " bl GetCurrentMauvilleOldMan\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp]\n" + " mov r0, #0x9\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldr r1, ._48 + 4\n" + " ldr r0, ._48 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._49:\n" + " .align 2, 0\n" + "._48:\n" + " .word gUnknown_Debug_083C4F54\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090984+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_LanettesPC() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " bl ShowPokemonStorageSystem\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_TownFlags() +{ + asm( + " push {lr}\n" + " ldr r0, ._50\n" + " bl FlagSet\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x4\n" + " bl FlagSet\n" + " ldr r0, ._50 + 4\n" + " bl FlagSet\n" + " ldr r0, ._50 + 8\n" + " bl FlagSet\n" + " ldr r0, ._50 + 12\n" + " bl FlagSet\n" + " ldr r0, ._50 + 16\n" + " bl FlagSet\n" + " ldr r0, ._50 + 20\n" + " bl FlagSet\n" + " ldr r0, ._50 + 24\n" + " bl FlagSet\n" + " ldr r0, ._50 + 28\n" + " bl FlagSet\n" + " ldr r0, ._50 + 32\n" + " bl FlagSet\n" + " ldr r0, ._50 + 36\n" + " bl FlagSet\n" + " ldr r0, ._50 + 40\n" + " bl FlagSet\n" + " ldr r0, ._50 + 44\n" + " bl FlagSet\n" + " ldr r0, ._50 + 48\n" + " bl FlagSet\n" + " ldr r0, ._50 + 52\n" + " bl FlagSet\n" + " ldr r0, ._50 + 56\n" + " bl FlagSet\n" + " ldr r0, ._50 + 60\n" + " bl FlagSet\n" + " ldr r0, ._50 + 64\n" + " bl FlagSet\n" + " ldr r0, ._50 + 68\n" + " bl FlagSet\n" + " ldr r0, ._50 + 72\n" + " bl FlagSet\n" + " ldr r0, ._50 + 76\n" + " bl FlagSet\n" + " ldr r0, ._50 + 80\n" + " bl FlagSet\n" + " ldr r0, ._50 + 84\n" + " bl FlagSet\n" + " ldr r0, ._50 + 88\n" + " bl FlagSet\n" + " ldr r0, ._50 + 92\n" + " bl FlagSet\n" + " ldr r0, ._50 + 96\n" + " bl FlagSet\n" + " ldr r0, ._50 + 100\n" + " bl FlagSet\n" + " ldr r0, ._50 + 104\n" + " bl FlagSet\n" + " ldr r0, ._50 + 108\n" + " bl FlagSet\n" + " ldr r0, ._50 + 112\n" + " bl FlagSet\n" + " ldr r0, ._50 + 116\n" + " bl FlagSet\n" + " ldr r0, ._50 + 120\n" + " bl FlagSet\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x4\n" + " bl FlagSet\n" + " ldr r0, ._50 + 124\n" + " bl FlagSet\n" + " ldr r0, ._50 + 128\n" + " bl FlagSet\n" + " ldr r0, ._50 + 132\n" + " bl FlagSet\n" + " ldr r0, ._50 + 136\n" + " bl FlagSet\n" + " ldr r0, ._50 + 140\n" + " bl FlagSet\n" + " ldr r0, ._50 + 144\n" + " bl FlagSet\n" + " ldr r0, ._50 + 148\n" + " bl FlagSet\n" + " ldr r0, ._50 + 152\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._51:\n" + " .align 2, 0\n" + "._50:\n" + " .word 0x80f\n" + " .word 0x811\n" + " .word 0x812\n" + " .word 0x813\n" + " .word 0x814\n" + " .word 0x815\n" + " .word 0x816\n" + " .word 0x817\n" + " .word 0x818\n" + " .word 0x819\n" + " .word 0x81a\n" + " .word 0x81b\n" + " .word 0x81c\n" + " .word 0x81d\n" + " .word 0x81e\n" + " .word 0x848\n" + " .word 0x849\n" + " .word 0x84a\n" + " .word 0x854\n" + " .word 0x855\n" + " .word 0x856\n" + " .word 0x857\n" + " .word 0x858\n" + " .word 0x859\n" + " .word 0x85a\n" + " .word 0x85b\n" + " .word 0x85c\n" + " .word 0x83c\n" + " .word 0x83d\n" + " .word 0x83e\n" + " .word 0x83f\n" + " .word 0x841\n" + " .word 0x842\n" + " .word 0x843\n" + " .word 0x844\n" + " .word 0x845\n" + " .word 0x846\n" + " .word 0x847\n" + " .word 0x83b\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_AwardARibbon() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x10\n" + " mov r2, #0x0\n" + " bl BlendPalettes\n" + " ldr r0, ._52\n" + " bl SetMainCallback2\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._53:\n" + " .align 2, 0\n" + "._52:\n" + " .word debug_sub_80915BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090C44() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r4, ._54\n" + " sub r5, r4, #1\n" + " ldrh r1, [r5, #0x8]\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x5\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x5\n" + " bl StringFill\n" + " ldrb r0, [r5]\n" + " add r0, r0, r4\n" + " mov r1, #0x79\n" + " strb r1, [r0]\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._55:\n" + " .align 2, 0\n" + "._54:\n" + " .word +0x2000001\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8090C88() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + " ldr r2, ._59\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " add r3, r2, #0\n" + " cmp r0, #0\n" + " beq ._57 @cond_branch\n" + " ldr r1, ._59 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._57 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._62\n" + "._60:\n" + " .align 2, 0\n" + "._59:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._67:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._62\n" + "._77:\n" + " strh r1, [r7, #0x8]\n" + " b ._62\n" + "._79:\n" + " ldr r0, ._64\n" + " ldrh r0, [r0, #0x8]\n" + " bl SetLotteryNumber16_Unused\n" + "._78:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._63\n" + "._65:\n" + " .align 2, 0\n" + "._64:\n" + " .word +0x2000000\n" + "._57:\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._66 @cond_branch\n" + " ldr r1, ._81\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3\n" + " bls ._67 @cond_branch\n" + "._66:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " ldr r0, ._81\n" + " ldrh r1, [r0, #0x8]\n" + " str r1, [r0, #0xc]\n" + " ldr r1, ._81 + 4\n" + " strh r1, [r0, #0x10]\n" + " mov r4, #0x0\n" + " ldrb r1, [r0]\n" + " add r7, r0, #0\n" + " cmp r4, r1\n" + " bcs ._69 @cond_branch\n" + " add r5, r7, #0\n" + " add r6, r1, #0\n" + "._70:\n" + " ldrh r0, [r5, #0x10]\n" + " mov r1, #0xa\n" + " str r3, [sp]\n" + " bl __udivsi3\n" + " strh r0, [r5, #0x10]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r3, [sp]\n" + " cmp r4, r6\n" + " bcc ._70 @cond_branch\n" + "._69:\n" + " ldrh r1, [r7, #0x10]\n" + " ldr r0, [r7, #0xc]\n" + " add r0, r0, r1\n" + " str r0, [r7, #0xc]\n" + " ldr r1, ._81 + 8\n" + " cmp r0, r1\n" + " ble ._71 @cond_branch\n" + " str r1, [r7, #0xc]\n" + "._71:\n" + " ldrh r0, [r7, #0x8]\n" + " ldr r1, [r7, #0xc]\n" + " cmp r0, r1\n" + " bne ._77 @cond_branch\n" + "._68:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._73 @cond_branch\n" + " ldr r0, ._81\n" + " ldrh r1, [r0, #0x8]\n" + " str r1, [r0, #0xc]\n" + " ldr r1, ._81 + 4\n" + " strh r1, [r0, #0x10]\n" + " mov r4, #0x0\n" + " ldrb r1, [r0]\n" + " add r7, r0, #0\n" + " cmp r4, r1\n" + " bcs ._74 @cond_branch\n" + " add r5, r7, #0\n" + " add r6, r1, #0\n" + "._75:\n" + " ldrh r0, [r5, #0x10]\n" + " mov r1, #0xa\n" + " str r3, [sp]\n" + " bl __udivsi3\n" + " strh r0, [r5, #0x10]\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r3, [sp]\n" + " cmp r4, r6\n" + " bcc ._75 @cond_branch\n" + "._74:\n" + " add r2, r7, #0\n" + " ldrh r1, [r2, #0x10]\n" + " ldr r0, [r2, #0xc]\n" + " sub r0, r0, r1\n" + " str r0, [r2, #0xc]\n" + " cmp r0, #0\n" + " bge ._76 @cond_branch\n" + " mov r0, #0x0\n" + " str r0, [r2, #0xc]\n" + "._76:\n" + " ldrh r0, [r2, #0x8]\n" + " ldr r1, [r2, #0xc]\n" + " cmp r0, r1\n" + " bne ._77 @cond_branch\n" + "._73:\n" + " ldrh r2, [r3, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._78 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._79 @cond_branch\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + "._62:\n" + " mov r0, r8\n" + " cmp r0, #0\n" + " beq ._80 @cond_branch\n" + " bl debug_sub_8090C44\n" + "._80:\n" + " mov r0, #0x0\n" + "._63:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._82:\n" + " .align 2, 0\n" + "._81:\n" + " .word +0x2000000\n" + " .word 0x2710\n" + " .word 0xffff\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_PKMNLottery() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x6\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " bl RetrieveLotteryNumber\n" + " ldr r2, ._83\n" + " ldr r0, ._83 + 4\n" + " ldrh r0, [r0]\n" + " mov r1, #0x0\n" + " strh r0, [r2, #0x8]\n" + " strb r1, [r2]\n" + " bl debug_sub_8090C44\n" + " ldr r1, ._83 + 8\n" + " ldr r0, ._83 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._84:\n" + " .align 2, 0\n" + "._83:\n" + " .word +0x2000000\n" + " .word gScriptResult\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_8090C88+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_Trainer() +{ + asm( + " push {r4, r5, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._86\n" + "._85:\n" + " lsl r0, r4, #0x4\n" + " add r0, r0, r5\n" + " ldrh r0, [r0]\n" + " bl trainer_flag_set\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0x37\n" + " bls ._85 @cond_branch\n" + " ldr r0, ._86 + 4\n" + " bl trainer_flag_set\n" + " mov r0, #0x85\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 8\n" + " bl trainer_flag_set\n" + " mov r0, #0x86\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 12\n" + " bl trainer_flag_set\n" + " mov r0, #0x87\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 16\n" + " bl trainer_flag_set\n" + " mov r0, #0x88\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 20\n" + " bl trainer_flag_set\n" + " mov r0, #0x83\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 24\n" + " bl trainer_flag_set\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x1\n" + " bl trainer_flag_set\n" + " ldr r0, ._86 + 28\n" + " bl trainer_flag_set\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "._87:\n" + " .align 2, 0\n" + "._86:\n" + " .word gTrainerEyeTrainers\n" + " .word 0x109\n" + " .word 0x10b\n" + " .word 0x10d\n" + " .word 0x10f\n" + " .word 0x105\n" + " .word 0x107\n" + " .word 0x14f\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_PokenavD() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xffffffe4\n" + " bl MenuDisplayMessageBox\n" + " mov r0, #0x0\n" + " mov sl, r0\n" + " mov r6, #0x1\n" + " mov r7, #0xff\n" + " mov r1, #0x3\n" + " mov r9, r1\n" + "._93:\n" + " ldr r4, ._94\n" + " add r0, r4, #0\n" + " ldr r1, ._94 + 4\n" + " bl StringCopy\n" + " mov r5, sl\n" + " add r5, r5, #0x1\n" + " add r1, r5, r4\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " str r5, [sp, #0x14]\n" + " mov r1, sl\n" + " lsl r1, r1, #0x2\n" + " str r1, [sp, #0x18]\n" + "._91:\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " add r0, r0, #0x1\n" + " str r0, [sp, #0x10]\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " bl Random\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xc1\n" + " lsl r1, r1, #0x1\n" + " bl __umodsi3\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0xfb\n" + " bls ._89 @cond_branch\n" + " add r0, r3, #0\n" + " add r0, r0, #0x19\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " ldr r0, ._94 + 8\n" + " cmp r3, r0\n" + " bls ._89 @cond_branch\n" + " mov r3, #0x1\n" + "._89:\n" + " ldr r0, [sp, #0x18]\n" + " add r0, r0, sl\n" + " lsl r4, r0, #0x4\n" + " sub r4, r4, r0\n" + " lsl r4, r4, #0x5\n" + " mov r1, r8\n" + " lsl r0, r1, #0x2\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x4\n" + " ldr r1, ._94 + 12\n" + " add r0, r0, r1\n" + " add r4, r4, r0\n" + " lsl r2, r5, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " str r6, [sp, #0x8]\n" + " ldr r0, [sp, #0x10]\n" + " str r0, [sp, #0xc]\n" + " add r0, r4, #0\n" + " add r1, r3, #0\n" + " mov r3, #0x20\n" + " bl CreateBoxMon\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x16\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x17\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x18\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x21\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x2f\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x30\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x32\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x33\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x34\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x36\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " add r1, r1, #0x1\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x35\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x43\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x44\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x45\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x46\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x47\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x48\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x49\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4a\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4b\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4c\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4d\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " bl Random\n" + " add r1, r6, #0\n" + " and r1, r1, r0\n" + " str r1, [sp, #0x10]\n" + " add r0, r4, #0\n" + " mov r1, #0x4e\n" + " add r2, sp, #0x10\n" + " bl SetBoxMonData\n" + " mov r0, r8\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r8, r0\n" + " cmp r0, #0x1d\n" + " bhi ._90 @cond_branch\n" + " b ._91\n" + "._90:\n" + " ldr r1, [sp, #0x14]\n" + " lsl r0, r1, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov sl, r0\n" + " cmp r0, #0xd\n" + " bhi ._92 @cond_branch\n" + " b ._93\n" + "._92:\n" + " bl TayaDebugMenu_TownFlags\n" + " bl TayaDebugMenu_Trainer\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " add sp, sp, #0x1c\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._95:\n" + " .align 2, 0\n" + "._94:\n" + " .word +0x2000000\n" + " .word gUnknown_Debug_083C4F94\n" + " .word 0x19b\n" + " .word gPokemonStorage+0x4\n" + "\n" + ); +} + +__attribute__((naked)) +void TayaDebugMenu_8091190() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r3, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r3, r0\n" + " beq ._96 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r3, r0\n" + " beq ._97 @cond_branch\n" + " ldr r2, ._99\n" + " ldr r1, ._99 + 4\n" + " ldr r0, ._99 + 8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " lsl r0, r3, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0, #0x4]\n" + " str r0, [r2]\n" + "._106:\n" + " mov r0, #0x0\n" + " b ._98\n" + "._100:\n" + " .align 2, 0\n" + "._99:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_83C5068\n" + " .word unk_2030224\n" + "._96:\n" + " ldr r3, ._107\n" + " ldrb r4, [r3]\n" + " ldr r2, ._107 + 4\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " add r5, r3, #0\n" + " cmp r0, #0\n" + " beq ._102 @cond_branch\n" + " sub r0, r4, #1\n" + " strb r0, [r5]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bge ._102 @cond_branch\n" + " mov r0, #0x1\n" + " strb r0, [r5]\n" + "._102:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._104 @cond_branch\n" + " ldrb r0, [r5]\n" + " add r0, r0, #0x1\n" + " strb r0, [r5]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bls ._104 @cond_branch\n" + " mov r0, #0x0\n" + " strb r0, [r5]\n" + "._104:\n" + " lsl r0, r4, #0x18\n" + " asr r0, r0, #0x18\n" + " mov r1, #0x0\n" + " ldrsb r1, [r5, r1]\n" + " cmp r0, r1\n" + " beq ._106 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r4, ._107 + 8\n" + " mov r0, #0x0\n" + " ldrsb r0, [r5, r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r4\n" + " ldrb r2, [r0, #0x4]\n" + " ldr r3, [r0]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " ldrsb r0, [r5, r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r4\n" + " ldrb r3, [r0, #0x4]\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl InitMenu\n" + " b ._106\n" + "._108:\n" + " .align 2, 0\n" + "._107:\n" + " .word unk_2030224\n" + " .word gMain\n" + " .word gUnknown_Debug_83C5068\n" + "._97:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._98:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void InitTayaDebugWindow() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._109\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._109 + 4\n" + " ldr r3, [r0]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xa\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._109 + 8\n" + " ldr r0, ._109 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word unk_2030224\n" + " .word gUnknown_Debug_83C5068\n" + " .word gCallback_03004AE8\n" + " .word TayaDebugMenu_8091190+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80912D8() +{ + asm( + " push {lr}\n" + " ldr r0, ._113\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._111 @cond_branch\n" + " mov r0, #0x0\n" + " b ._112\n" + "._114:\n" + " .align 2, 0\n" + "._113:\n" + " .word gPaletteFade\n" + "._111:\n" + " ldr r0, ._115\n" + " bl SetMainCallback2\n" + " mov r0, #0x1\n" + "._112:\n" + " pop {r1}\n" + " bx r1\n" + "._116:\n" + " .align 2, 0\n" + "._115:\n" + " .word debug_sub_8110F28+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8091300() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " mov r1, #0x0\n" + " bl fade_screen\n" + " ldr r1, ._117\n" + " ldr r0, ._117 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._118:\n" + " .align 2, 0\n" + "._117:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_80912D8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8091320() +{ + asm( + " push {lr}\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " bl TransferPlttBuffer\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8091334() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " ldr r3, ._123\n" + " add r0, r3, #0\n" + " add r0, r0, #0x52\n" + " ldrb r4, [r0]\n" + " cmp r4, #0\n" + " beq ._119 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._120 @cond_branch\n" + " b ._121\n" + "._120:\n" + " b ._162\n" + "._124:\n" + " .align 2, 0\n" + "._123:\n" + " .word +0x2000000\n" + "._119:\n" + " add r5, r3, #0\n" + " add r5, r5, #0x55\n" + " strb r4, [r5]\n" + " ldr r2, ._131\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " mov r9, r2\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " add r1, r3, #0\n" + " add r1, r1, #0x54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x1\n" + " strb r0, [r5]\n" + "._126:\n" + " mov r0, r9\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " ldr r5, ._131 + 4\n" + " cmp r0, #0\n" + " beq ._133 @cond_branch\n" + " add r0, r5, #0\n" + " add r0, r0, #0x53\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x2\n" + " beq ._128 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x4\n" + " bhi ._133 @cond_branch\n" + " b ._130\n" + "._132:\n" + " .align 2, 0\n" + "._131:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._128:\n" + " add r1, r5, #0\n" + " add r1, r1, #0x54\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3\n" + " bhi ._133 @cond_branch\n" + "._130:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r1, #0x1\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._133:\n" + " mov r2, r9\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._135 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x53\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._135 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._135:\n" + " mov r3, r9\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._140 @cond_branch\n" + " add r0, r5, #0\n" + " add r0, r0, #0x54\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x5\n" + " beq ._137 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x53\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " bhi ._140 @cond_branch\n" + " b ._139\n" + "._137:\n" + " add r1, r5, #0\n" + " add r1, r1, #0x53\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._140 @cond_branch\n" + "._139:\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._140:\n" + " add r0, r5, #0\n" + " add r0, r0, #0x55\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " mov r0, r9\n" + " ldrh r2, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._142 @cond_branch\n" + " ldr r2, ._145\n" + " add r3, r5, #0\n" + " add r3, r3, #0x53\n" + " add r0, r5, #0\n" + " add r0, r0, #0x54\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " ldrb r3, [r3]\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r2\n" + " ldrh r0, [r0, #0x4]\n" + " sub r0, r0, #0x32\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0x4\n" + " bhi ._143 @cond_branch\n" + " add r1, r5, #0\n" + " add r1, r1, #0x56\n" + " mov r0, #0x4\n" + " b ._144\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word gUnknown_Debug_083C50EC\n" + "._143:\n" + " add r1, r5, #0\n" + " add r1, r1, #0x56\n" + " mov r0, #0x1\n" + "._144:\n" + " strb r0, [r1]\n" + " add r1, r5, #0\n" + " add r1, r1, #0x52\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " b ._162\n" + "._142:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._148 @cond_branch\n" + " b ._162\n" + "._148:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x10\n" + " mov r2, #0x0\n" + " bl BlendPalettes\n" + " ldr r0, ._151\n" + " bl SetMainCallback2\n" + " b ._162\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word sub_80546F0+1\n" + "._121:\n" + " add r5, r3, #0\n" + " add r5, r5, #0x55\n" + " mov r0, #0x0\n" + " strb r0, [r5]\n" + " ldr r2, ._159\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " mov r9, r2\n" + " cmp r0, #0\n" + " beq ._154 @cond_branch\n" + " add r2, r3, #0\n" + " add r2, r2, #0x53\n" + " add r0, r3, #0\n" + " add r0, r0, #0x54\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " add r2, r0, r3\n" + " add r0, r3, #0\n" + " add r0, r0, #0x56\n" + " ldrb r1, [r2]\n" + " ldrb r0, [r0]\n" + " cmp r1, r0\n" + " bcs ._154 @cond_branch\n" + " add r0, r1, #1\n" + " strb r0, [r2]\n" + " strb r4, [r5]\n" + "._154:\n" + " mov r2, r9\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " ldr r5, ._159 + 4\n" + " cmp r0, #0\n" + " beq ._156 @cond_branch\n" + " add r2, r5, #0\n" + " add r2, r2, #0x53\n" + " add r0, r5, #0\n" + " add r0, r0, #0x54\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r0, r0, r1\n" + " ldrb r2, [r2]\n" + " add r0, r0, r2\n" + " add r1, r0, r5\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._156 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r1, r5, #0\n" + " add r1, r1, #0x55\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._156:\n" + " add r6, r5, #0\n" + " add r0, r6, #0\n" + " add r0, r0, #0x55\n" + " ldrb r7, [r0]\n" + " cmp r7, #0\n" + " beq ._157 @cond_branch\n" + "._141:\n" + " bl debug_sub_80916AC\n" + " b ._162\n" + "._160:\n" + " .align 2, 0\n" + "._159:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._157:\n" + " mov r3, r9\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._161 @cond_branch\n" + " ldr r0, ._164\n" + " ldr r1, ._164 + 4\n" + " mov ip, r1\n" + " mov r2, #0x53\n" + " add r2, r2, r6\n" + " mov r8, r2\n" + " add r4, r6, #0\n" + " add r4, r4, #0x54\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " mov r3, r8\n" + " ldrb r3, [r3]\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, ip\n" + " ldrh r1, [r1, #0x4]\n" + " bl GetMonData\n" + " ldrb r2, [r4]\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r2\n" + " mov r2, r8\n" + " ldrb r2, [r2]\n" + " add r1, r1, r2\n" + " add r1, r1, r6\n" + " strb r0, [r1]\n" + " bl debug_sub_80916AC\n" + " add r0, r6, #0\n" + " add r0, r0, #0x52\n" + " strb r7, [r0]\n" + "._161:\n" + " mov r3, r9\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._162 @cond_branch\n" + " ldr r2, ._164 + 4\n" + " add r0, r6, #0\n" + " add r0, r0, #0x53\n" + " ldrb r4, [r0]\n" + " add r0, r0, #0x1\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x1\n" + " add r3, r0, r1\n" + " add r0, r3, r4\n" + " lsl r0, r0, #0x3\n" + " add r1, r0, r2\n" + " ldrh r0, [r1, #0x4]\n" + " cmp r0, #0\n" + " beq ._163 @cond_branch\n" + " ldr r0, ._164\n" + " ldrh r1, [r1, #0x4]\n" + " add r2, r4, r6\n" + " add r2, r3, r2\n" + " bl SetMonData\n" + "._163:\n" + " add r0, r5, #0\n" + " add r0, r0, #0x52\n" + " strb r7, [r0]\n" + "._162:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._165:\n" + " .align 2, 0\n" + "._164:\n" + " .word gPlayerParty\n" + " .word gUnknown_Debug_083C50EC\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80915BC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " ldr r0, ._168\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " mov r1, #0x0\n" + " ldr r0, ._168 + 4\n" + " mov r8, r0\n" + " ldr r7, ._168 + 8\n" + "._171:\n" + " mov r4, #0x0\n" + " lsl r0, r1, #0x1\n" + " add r6, r1, #1\n" + " add r5, r0, r1\n" + "._170:\n" + " add r0, r5, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " ldrh r1, [r0, #0x4]\n" + " cmp r1, #0\n" + " beq ._166 @cond_branch\n" + " ldr r0, ._168 + 12\n" + " bl GetMonData\n" + " add r1, r4, r5\n" + " add r1, r1, r7\n" + " strb r0, [r1]\n" + " b ._167\n" + "._169:\n" + " .align 2, 0\n" + "._168:\n" + " .word 0x4000010\n" + " .word gUnknown_Debug_083C50EC\n" + " .word +0x2000000\n" + " .word gPlayerParty\n" + "._166:\n" + " add r0, r4, r5\n" + " add r0, r0, r7\n" + " strb r1, [r0]\n" + "._167:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x2\n" + " bls ._170 @cond_branch\n" + " lsl r0, r6, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x5\n" + " bls ._171 @cond_branch\n" + " ldr r4, ._172\n" + " add r0, r4, #0\n" + " bl SetUpWindowConfig\n" + " add r0, r4, #0\n" + " bl InitMenuWindow\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._172 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x4\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x12\n" + " mov r2, #0x1d\n" + " mov r3, #0x15\n" + " bl MenuDrawTextWindow\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0x8a\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r2, ._172 + 8\n" + " add r0, r2, #0\n" + " add r0, r0, #0x53\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " add r0, r0, #0x1\n" + " strb r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strb r1, [r0]\n" + " bl debug_sub_80916AC\n" + " ldr r0, ._172 + 12\n" + " bl SetVBlankCallback\n" + " ldr r0, ._172 + 16\n" + " bl SetMainCallback2\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._173:\n" + " .align 2, 0\n" + "._172:\n" + " .word gWindowConfig_81E7224\n" + " .word gUnknown_Debug_083C517C\n" + " .word +0x2000000\n" + " .word debug_sub_8091320+1\n" + " .word debug_sub_8091334+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80916AC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " mov r6, #0x0\n" + " ldr r0, ._177\n" + " mov sl, r0\n" + " mov r1, #0x0\n" + " mov r8, r1\n" + "._182:\n" + " ldr r2, ._177 + 4\n" + " mov r5, #0x0\n" + " lsl r0, r6, #0x1\n" + " mov r9, r0\n" + " add r1, r6, #1\n" + " str r1, [sp]\n" + "._181:\n" + " mov r0, sl\n" + " add r0, r0, #0x53\n" + " ldrb r0, [r0]\n" + " cmp r0, r5\n" + " bne ._175 @cond_branch\n" + " ldr r1, ._177 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, r6\n" + " bne ._175 @cond_branch\n" + " mov r0, #0xef\n" + " b ._176\n" + "._178:\n" + " .align 2, 0\n" + "._177:\n" + " .word +0x2000000\n" + " .word +0x2000012\n" + " .word +0x2000054\n" + "._175:\n" + " mov r0, r8\n" + " strb r0, [r2]\n" + " add r2, r2, #0x1\n" + "._176:\n" + " strb r0, [r2]\n" + " add r2, r2, #0x1\n" + " mov r1, r9\n" + " add r4, r1, r6\n" + " add r0, r4, r5\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._183\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " add r0, r2, #0\n" + " bl StringCopy\n" + " add r2, r0, #0\n" + " mov r0, r8\n" + " strb r0, [r2]\n" + " add r2, r2, #0x1\n" + " ldr r7, ._183 + 4\n" + " add r4, r5, r4\n" + " add r4, r4, r7\n" + " ldrb r1, [r4]\n" + " add r0, r2, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " add r2, r0, #0\n" + " mov r1, r8\n" + " strb r1, [r2]\n" + " add r2, r2, #0x1\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x2\n" + " bhi ._179 @cond_branch\n" + " cmp r6, #0x5\n" + " bne ._181 @cond_branch\n" + " cmp r5, #0x2\n" + " bne ._181 @cond_branch\n" + "._179:\n" + " sub r1, r2, #1\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " mov r2, r9\n" + " add r2, r2, #0x5\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " add r0, r7, #0\n" + " add r0, r0, #0x12\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " ldr r1, [sp]\n" + " lsl r0, r1, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x5\n" + " bls ._182 @cond_branch\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word gUnknown_Debug_083C50EC\n" + " .word +0x2000000\n" + "\n" + ); +} + +#endif diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c new file mode 100644 index 000000000..f745f2993 --- /dev/null +++ b/src/debug/tomomichi_debug_menu.c @@ -0,0 +1,8643 @@ +#ifdef DEBUG +#include "global.h" + +#define BSS_DATA __attribute__((section(".bss"))) + +BSS_DATA u8 gDebug_03000700[0x24] = { 0 }; + +__attribute__((naked)) +void InitTomomichiDebugWindow() +{ + asm( + " push {lr}\n" + " bl debug_sub_808B874\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808B868() +{ + asm( + " push {lr}\n" + " bl c2_exit_to_overworld_1_continue_scripts_restart_music\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808B874() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xd\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._1\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " ldr r0, ._1 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0xc\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._1 + 8\n" + " ldr r0, ._1 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gUnknown_Debug_083C0CBA\n" + " .word gDebug_03000700+0x1d\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808B8C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808B8C8() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._7\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._3 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._7 + 4\n" + " strb r0, [r1]\n" + "._3:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._4 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._7 + 4\n" + " strb r0, [r1]\n" + "._4:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._5 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._7 + 8\n" + " ldr r0, ._7 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r1, r1, #0x4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " bl _call_via_r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._10\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gMain\n" + " .word gDebug_03000700+0x1d\n" + " .word gUnknown_Debug_083C0CBA\n" + "._5:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._9 @cond_branch\n" + " mov r0, #0x0\n" + " b ._10\n" + "._9:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._10:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ContestGraphics() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x14\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._11\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._11 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x13\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._11 + 8\n" + " ldr r0, ._11 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._11 + 16\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r1, ._11 + 20\n" + " ldr r0, ._11 + 24\n" + " str r0, [r1]\n" + " ldr r0, ._11 + 28\n" + " str r4, [r0]\n" + " ldr r0, ._11 + 32\n" + " strb r2, [r0]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gUnknown_Debug_083C0CF4\n" + " .word gUnknown_Debug_083C0D2C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BC48+1\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word 0x6f33\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0xc\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ArtMusGraphics() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x14\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._13\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._13 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x13\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._13 + 8\n" + " ldr r0, ._13 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._13 + 16\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r1, ._13 + 20\n" + " ldr r0, ._13 + 24\n" + " str r0, [r1]\n" + " ldr r0, ._13 + 28\n" + " str r4, [r0]\n" + " ldr r0, ._13 + 32\n" + " strb r2, [r0]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word gUnknown_Debug_083C0D4C\n" + " .word gUnknown_Debug_083C0D83\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BCBC+1\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word 0x6f33\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0xd\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_PreviewData() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x14\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._15\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._15 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x13\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._15 + 8\n" + " ldr r0, ._15 + 12\n" + " str r0, [r1]\n" + " ldr r0, ._15 + 16\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r1, ._15 + 20\n" + " ldr r0, ._15 + 24\n" + " str r0, [r1]\n" + " ldr r0, ._15 + 28\n" + " str r4, [r0]\n" + " ldr r0, ._15 + 32\n" + " strb r2, [r0]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gUnknown_Debug_083C0DA4\n" + " .word gUnknown_Debug_083C0DD4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BD30+1\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word 0x6f33\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0xe\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_TrickHouse() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._17\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._17 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " ldr r0, ._17 + 8\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._17 + 12\n" + " ldr r0, ._17 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word gUnknown_Debug_083C0DF4\n" + " .word gUnknown_Debug_083C0E15\n" + " .word gDebug_03000700+0x1e\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BDA4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ControlEvents() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._19\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " ldr r0, ._19 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._19 + 8\n" + " ldr r0, ._19 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word gUnknown_Debug_083C0E32\n" + " .word gDebug_03000700+0x1f\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BE2C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ControlFlags() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._21\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " ldr r0, ._21 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._21 + 8\n" + " ldr r0, ._21 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word gUnknown_Debug_083C0E7F\n" + " .word gDebug_03000700+0x20\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BEB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ControlWorks() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._23\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " ldr r0, ._23 + 4\n" + " ldrb r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._23 + 8\n" + " ldr r0, ._23 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word gUnknown_Debug_083C0EF1\n" + " .word gDebug_03000700+0x21\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808BF3C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BC48() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._25 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._26 @cond_branch\n" + " cmp r0, #0\n" + " beq ._27 @cond_branch\n" + " b ._32\n" + "._26:\n" + " cmp r0, #0x2\n" + " beq ._29 @cond_branch\n" + " b ._32\n" + "._27:\n" + " bl debug_sub_808ED0C\n" + " b ._32\n" + "._25:\n" + " bl debug_sub_808ED9C\n" + " b ._32\n" + "._29:\n" + " bl debug_sub_808EE3C\n" + "._32:\n" + " mov r0, #0x0\n" + " bl debug_sub_808EF8C\n" + " lsl r0, r4, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._36 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._34 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._35\n" + "._34:\n" + " cmp r1, #0x3\n" + " bne ._36 @cond_branch\n" + " ldr r0, ._37\n" + " ldr r1, ._37 + 4\n" + " ldr r1, [r1, #0x1c]\n" + " str r1, [r0]\n" + "._36:\n" + " mov r0, #0x0\n" + "._35:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._38:\n" + " .align 2, 0\n" + "._37:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0D2C\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BCBC() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._39 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._40 @cond_branch\n" + " cmp r0, #0\n" + " beq ._41 @cond_branch\n" + " b ._46\n" + "._40:\n" + " cmp r0, #0x2\n" + " beq ._43 @cond_branch\n" + " b ._46\n" + "._41:\n" + " bl debug_sub_808ED0C\n" + " b ._46\n" + "._39:\n" + " bl debug_sub_808ED9C\n" + " b ._46\n" + "._43:\n" + " bl debug_sub_808EE9C\n" + "._46:\n" + " mov r0, #0x1\n" + " bl debug_sub_808EF8C\n" + " lsl r0, r4, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._50 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._48 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._49\n" + "._48:\n" + " cmp r1, #0x3\n" + " bne ._50 @cond_branch\n" + " ldr r0, ._51\n" + " ldr r1, ._51 + 4\n" + " ldr r1, [r1, #0x1c]\n" + " str r1, [r0]\n" + "._50:\n" + " mov r0, #0x0\n" + "._49:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._52:\n" + " .align 2, 0\n" + "._51:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0D83\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BD30() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " asr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._53 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._54 @cond_branch\n" + " cmp r0, #0\n" + " beq ._55 @cond_branch\n" + " b ._60\n" + "._54:\n" + " cmp r0, #0x2\n" + " beq ._57 @cond_branch\n" + " b ._60\n" + "._55:\n" + " bl debug_sub_808ED0C\n" + " b ._60\n" + "._53:\n" + " bl debug_sub_808ED9C\n" + " b ._60\n" + "._57:\n" + " bl debug_sub_808EF14\n" + "._60:\n" + " mov r0, #0x2\n" + " bl debug_sub_808EF8C\n" + " lsl r0, r4, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._64 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._62 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._63\n" + "._62:\n" + " cmp r1, #0x3\n" + " bne ._64 @cond_branch\n" + " ldr r0, ._65\n" + " ldr r1, ._65 + 4\n" + " ldr r1, [r1, #0x1c]\n" + " str r1, [r0]\n" + "._64:\n" + " mov r0, #0x0\n" + "._63:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._66:\n" + " .align 2, 0\n" + "._65:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0DD4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BDA4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._71\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._67 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._71 + 4\n" + " strb r0, [r1]\n" + "._67:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._71 + 4\n" + " strb r0, [r1]\n" + "._68:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._69 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._71 + 8\n" + " ldr r0, ._71 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r1, r1, #0x4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " bl _call_via_r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._74\n" + "._72:\n" + " .align 2, 0\n" + "._71:\n" + " .word gMain\n" + " .word gDebug_03000700+0x1e\n" + " .word gUnknown_Debug_083C0E15\n" + "._69:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._73 @cond_branch\n" + " mov r0, #0x0\n" + " b ._74\n" + "._73:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._74:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BE2C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._79\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._75 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._79 + 4\n" + " strb r0, [r1]\n" + "._75:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._76 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._79 + 4\n" + " strb r0, [r1]\n" + "._76:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._77 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._79 + 8\n" + " ldr r0, ._79 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r1, r1, #0x4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " bl _call_via_r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._82\n" + "._80:\n" + " .align 2, 0\n" + "._79:\n" + " .word gMain\n" + " .word gDebug_03000700+0x1f\n" + " .word gUnknown_Debug_083C0E32\n" + "._77:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._81 @cond_branch\n" + " mov r0, #0x0\n" + " b ._82\n" + "._81:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._82:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BEB4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._87\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._83 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._87 + 4\n" + " strb r0, [r1]\n" + "._83:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._84 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._87 + 4\n" + " strb r0, [r1]\n" + "._84:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._85 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._87 + 8\n" + " ldr r0, ._87 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r1, r1, #0x4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " bl _call_via_r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._90\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word gMain\n" + " .word gDebug_03000700+0x20\n" + " .word gUnknown_Debug_083C0E7F\n" + "._85:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._89 @cond_branch\n" + " mov r0, #0x0\n" + " b ._90\n" + "._89:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._90:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BF3C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._95\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._91 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._95 + 4\n" + " strb r0, [r1]\n" + "._91:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._92 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._95 + 4\n" + " strb r0, [r1]\n" + "._92:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._93 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._95 + 8\n" + " ldr r0, ._95 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r1, r1, #0x4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " bl _call_via_r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._98\n" + "._96:\n" + " .align 2, 0\n" + "._95:\n" + " .word gMain\n" + " .word gDebug_03000700+0x21\n" + " .word gUnknown_Debug_083C0EF1\n" + "._93:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._97 @cond_branch\n" + " mov r0, #0x0\n" + " b ._98\n" + "._97:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._98:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808BFC4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._99\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._99 + 4\n" + " ldr r0, ._99 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._100:\n" + " .align 2, 0\n" + "._99:\n" + " .word gUnknown_Debug_083C0F79\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C064+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C014() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._101\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._101 + 4\n" + " ldr r0, ._101 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._102:\n" + " .align 2, 0\n" + "._101:\n" + " .word gUnknown_Debug_083C0FFC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C0A8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C064() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._103 @cond_branch\n" + " mov r0, #0x0\n" + " b ._106\n" + "._103:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._105 @cond_branch\n" + " ldr r2, ._107\n" + " ldr r0, ._107 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._106\n" + "._108:\n" + " .align 2, 0\n" + "._107:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0F79\n" + "._105:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._106:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C0A8() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._109 @cond_branch\n" + " mov r0, #0x0\n" + " b ._112\n" + "._109:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._111 @cond_branch\n" + " ldr r2, ._113\n" + " ldr r0, ._113 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._112\n" + "._114:\n" + " .align 2, 0\n" + "._113:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C0FFC\n" + "._111:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._112:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C0EC() +{ + asm( + " push {lr}\n" + " ldr r0, ._115\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._116:\n" + " .align 2, 0\n" + "._115:\n" + " .word DebugScript_081C1CFE\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C104() +{ + asm( + " push {lr}\n" + " ldr r0, ._117\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._118:\n" + " .align 2, 0\n" + "._117:\n" + " .word DebugScript_081C1D07\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C11C() +{ + asm( + " push {lr}\n" + " ldr r0, ._119\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._120:\n" + " .align 2, 0\n" + "._119:\n" + " .word DebugScript_081C1D1E\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C134() +{ + asm( + " push {lr}\n" + " ldr r0, ._121\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._122:\n" + " .align 2, 0\n" + "._121:\n" + " .word DebugScript_081C1D24\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C14C() +{ + asm( + " push {lr}\n" + " ldr r0, ._123\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._124:\n" + " .align 2, 0\n" + "._123:\n" + " .word DebugScript_081C1D2A\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C164() +{ + asm( + " push {lr}\n" + " ldr r0, ._125\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._126:\n" + " .align 2, 0\n" + "._125:\n" + " .word DebugScript_081C1D35\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C17C() +{ + asm( + " push {lr}\n" + " ldr r0, ._127\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._128:\n" + " .align 2, 0\n" + "._127:\n" + " .word DebugScript_081C1D46\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C194() +{ + asm( + " push {lr}\n" + " ldr r0, ._129\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._130:\n" + " .align 2, 0\n" + "._129:\n" + " .word DebugScript_081C221F\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1AC() +{ + asm( + " push {lr}\n" + " ldr r0, ._131\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._132:\n" + " .align 2, 0\n" + "._131:\n" + " .word DebugScript_081C23E2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1C4() +{ + asm( + " push {lr}\n" + " ldr r0, ._133\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._134:\n" + " .align 2, 0\n" + "._133:\n" + " .word DebugScript_081C23E6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1DC() +{ + asm( + " push {lr}\n" + " ldr r0, ._135\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._136:\n" + " .align 2, 0\n" + "._135:\n" + " .word DebugScript_081C23F6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C1F4() +{ + asm( + " push {lr}\n" + " ldr r0, ._137\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._138:\n" + " .align 2, 0\n" + "._137:\n" + " .word DebugScript_081C2482\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C20C() +{ + asm( + " push {lr}\n" + " ldr r0, ._139\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._140:\n" + " .align 2, 0\n" + "._139:\n" + " .word DebugScript_081C23FD\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C224() +{ + asm( + " push {lr}\n" + " ldr r0, ._141\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word DebugScript_081C2518\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C23C() +{ + asm( + " push {lr}\n" + " ldr r0, ._143\n" + " bl ScriptContext1_SetupScript\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._144:\n" + " .align 2, 0\n" + "._143:\n" + " .word DebugScript_081C2507\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_ContestGraphics_Show() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._145\n" + " ldr r0, ._145 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C280+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C280() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._147 @cond_branch\n" + " mov r0, #0x0\n" + " b ._148\n" + "._147:\n" + " bl CloseMenu\n" + " mov r0, #0x0\n" + " bl debug_sub_808F168\n" + " ldr r0, ._149\n" + " bl SetMainCallback2\n" + " ldr r1, ._149 + 4\n" + " ldr r0, ._149 + 8\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x1\n" + "._148:\n" + " pop {r1}\n" + " bx r1\n" + "._150:\n" + " .align 2, 0\n" + "._149:\n" + " .word CB2_ContestPainting+1\n" + " .word gMain\n" + " .word debug_sub_808B868+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_MuseumGraphics_Show() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._151\n" + " ldr r0, ._151 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._152:\n" + " .align 2, 0\n" + "._151:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C2E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C2E4() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._153 @cond_branch\n" + " mov r0, #0x0\n" + " b ._154\n" + "._153:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " bl debug_sub_808F168\n" + " ldr r0, ._155\n" + " bl SetMainCallback2\n" + " ldr r1, ._155 + 4\n" + " ldr r0, ._155 + 8\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x1\n" + "._154:\n" + " pop {r1}\n" + " bx r1\n" + "._156:\n" + " .align 2, 0\n" + "._155:\n" + " .word CB2_ContestPainting+1\n" + " .word gMain\n" + " .word debug_sub_808B868+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C31C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._157\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._157 + 4\n" + " ldr r0, ._157 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gUnknown_Debug_083C2828\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C36C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C36C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._159 @cond_branch\n" + " mov r0, #0x0\n" + " b ._162\n" + "._159:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._161 @cond_branch\n" + " ldr r2, ._163\n" + " ldr r0, ._163 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._162\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C2828\n" + "._161:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._162:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C3B0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._165\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._165 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._165 + 8\n" + " ldr r0, ._165 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._166:\n" + " .align 2, 0\n" + "._165:\n" + " .word gUnknown_Debug_083C2938\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C408() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._167\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._167 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._167 + 8\n" + " ldr r0, ._167 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._168:\n" + " .align 2, 0\n" + "._167:\n" + " .word gUnknown_Debug_083C2A48\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C460() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._169\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._169 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._169 + 8\n" + " ldr r0, ._169 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._170:\n" + " .align 2, 0\n" + "._169:\n" + " .word gUnknown_Debug_083C2B4C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C4B8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._171\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._171 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._171 + 8\n" + " ldr r0, ._171 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gUnknown_Debug_083C2C80\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C510() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._173\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._173 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._173 + 8\n" + " ldr r0, ._173 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._174:\n" + " .align 2, 0\n" + "._173:\n" + " .word gUnknown_Debug_083C2D8C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C568() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._175\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._175 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._175 + 8\n" + " ldr r0, ._175 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._176:\n" + " .align 2, 0\n" + "._175:\n" + " .word gUnknown_Debug_083C2EB0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C5C0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._177\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._177 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._177 + 8\n" + " ldr r0, ._177 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._178:\n" + " .align 2, 0\n" + "._177:\n" + " .word gUnknown_Debug_083C2FE0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C618() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._179\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._179 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._179 + 8\n" + " ldr r0, ._179 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._180:\n" + " .align 2, 0\n" + "._179:\n" + " .word gUnknown_Debug_083C3100\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C670() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._181\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r1, ._181 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._181 + 8\n" + " ldr r0, ._181 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gUnknown_Debug_083C3194\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C6C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C6C8() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._186\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808C714\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808C764\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._183 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._184 @cond_branch\n" + "._183:\n" + " mov r0, #0x0\n" + " b ._185\n" + "._187:\n" + " .align 2, 0\n" + "._186:\n" + " .word gDebug_03000700+0xf\n" + "._184:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._185:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C714() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._191\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._190 @cond_branch\n" + " ldr r0, ._191 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._189 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._190\n" + "._192:\n" + " .align 2, 0\n" + "._191:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C31DC+0xa\n" + "._189:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._190:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C764() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._195\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._193 @cond_branch\n" + " ldr r0, ._195 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._194:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._194 @cond_branch\n" + "._193:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._196:\n" + " .align 2, 0\n" + "._195:\n" + " .word gUnknown_Debug_083C31DC\n" + " .word gUnknown_Debug_083C31DC+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C7C8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._197\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._197 + 4\n" + " ldr r0, ._197 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._198:\n" + " .align 2, 0\n" + "._197:\n" + " .word gUnknown_Debug_083C1CE8\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808C818+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C818() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._199 @cond_branch\n" + " mov r0, #0x0\n" + " b ._202\n" + "._199:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._201 @cond_branch\n" + " ldr r2, ._203\n" + " ldr r0, ._203 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._202\n" + "._204:\n" + " .align 2, 0\n" + "._203:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1CE8\n" + "._201:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._202:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C85C() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._205\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._205 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._205 + 8\n" + " ldr r0, ._205 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gUnknown_Debug_083C1E0C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C8B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._207\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._207 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._207 + 8\n" + " ldr r0, ._207 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._208:\n" + " .align 2, 0\n" + "._207:\n" + " .word gUnknown_Debug_083C1F38\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C90C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._209\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._209 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._209 + 8\n" + " ldr r0, ._209 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._210:\n" + " .align 2, 0\n" + "._209:\n" + " .word gUnknown_Debug_083C206C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C964() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._211\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._211 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._211 + 8\n" + " ldr r0, ._211 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._212:\n" + " .align 2, 0\n" + "._211:\n" + " .word gUnknown_Debug_083C2190\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808C9BC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._213\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._213 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._213 + 8\n" + " ldr r0, ._213 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gUnknown_Debug_083C2264\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CA14() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._215\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._215 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._215 + 8\n" + " ldr r0, ._215 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._216:\n" + " .align 2, 0\n" + "._215:\n" + " .word gUnknown_Debug_083C2370\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CA6C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._217\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._217 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._217 + 8\n" + " ldr r0, ._217 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._218:\n" + " .align 2, 0\n" + "._217:\n" + " .word gUnknown_Debug_083C248C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CAC4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._219\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._219 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._219 + 8\n" + " ldr r0, ._219 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._220:\n" + " .align 2, 0\n" + "._219:\n" + " .word gUnknown_Debug_083C259C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CB1C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._221\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._221 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._221 + 8\n" + " ldr r0, ._221 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word gUnknown_Debug_083C26C8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CB74+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CB74() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._226\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808CBC0\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808CC10\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._223 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._224 @cond_branch\n" + "._223:\n" + " mov r0, #0x0\n" + " b ._225\n" + "._227:\n" + " .align 2, 0\n" + "._226:\n" + " .word gDebug_03000700+0xf\n" + "._224:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._225:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CBC0() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._231\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._230 @cond_branch\n" + " ldr r0, ._231 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._229 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._230\n" + "._232:\n" + " .align 2, 0\n" + "._231:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C2710+0xa\n" + "._229:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._230:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CC10() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._235\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._233 @cond_branch\n" + " ldr r0, ._235 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._234:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._234 @cond_branch\n" + "._233:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._236:\n" + " .align 2, 0\n" + "._235:\n" + " .word gUnknown_Debug_083C2710\n" + " .word gUnknown_Debug_083C2710+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CC74() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._237\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r1, ._237 + 4\n" + " ldr r0, ._237 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._238:\n" + " .align 2, 0\n" + "._237:\n" + " .word gUnknown_Debug_083C1ADC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CCC4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CCC4() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._239 @cond_branch\n" + " mov r0, #0x0\n" + " b ._242\n" + "._239:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._241 @cond_branch\n" + " ldr r2, ._243\n" + " ldr r0, ._243 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._242\n" + "._244:\n" + " .align 2, 0\n" + "._243:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1ADC\n" + "._241:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._242:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CD08() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._245\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldr r0, ._245 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._245 + 8\n" + " ldr r0, ._245 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._246:\n" + " .align 2, 0\n" + "._245:\n" + " .word gUnknown_Debug_083C1B7C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CE10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CD60() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._247\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._247 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._247 + 8\n" + " ldr r0, ._247 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._248:\n" + " .align 2, 0\n" + "._247:\n" + " .word gUnknown_Debug_083C1BF0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CE10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CDB8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._249\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl InitMenu\n" + " ldr r1, ._249 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._249 + 8\n" + " ldr r0, ._249 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._250:\n" + " .align 2, 0\n" + "._249:\n" + " .word gUnknown_Debug_083C1C2C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CE10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CE10() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._254\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808CE5C\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808CEAC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._251 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._252 @cond_branch\n" + "._251:\n" + " mov r0, #0x0\n" + " b ._253\n" + "._255:\n" + " .align 2, 0\n" + "._254:\n" + " .word gDebug_03000700+0xf\n" + "._252:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._253:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CE5C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._259\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._258 @cond_branch\n" + " ldr r0, ._259 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._257 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._258\n" + "._260:\n" + " .align 2, 0\n" + "._259:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C1C34+0x4\n" + "._257:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._258:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CEAC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._263\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._261 @cond_branch\n" + " ldr r0, ._263 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._262:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._262 @cond_branch\n" + "._261:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._264:\n" + " .align 2, 0\n" + "._263:\n" + " .word gUnknown_Debug_083C1C34\n" + " .word gUnknown_Debug_083C1C34+0x4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CF10() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._265\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._265 + 4\n" + " ldr r0, ._265 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._266:\n" + " .align 2, 0\n" + "._265:\n" + " .word gUnknown_Debug_083C1330\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808CF60+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CF60() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._267 @cond_branch\n" + " mov r0, #0x0\n" + " b ._270\n" + "._267:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._269 @cond_branch\n" + " ldr r2, ._271\n" + " ldr r0, ._271 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._270\n" + "._272:\n" + " .align 2, 0\n" + "._271:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1330\n" + "._269:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._270:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CFA4() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._273\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldr r0, ._273 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._273 + 8\n" + " ldr r0, ._273 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._274:\n" + " .align 2, 0\n" + "._273:\n" + " .word gUnknown_Debug_083C13D8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808CFFC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._275\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._275 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._275 + 8\n" + " ldr r0, ._275 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._276:\n" + " .align 2, 0\n" + "._275:\n" + " .word gUnknown_Debug_083C1465\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D054() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._277\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._277 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._277 + 8\n" + " ldr r0, ._277 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._278:\n" + " .align 2, 0\n" + "._277:\n" + " .word gUnknown_Debug_083C1503\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D0AC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._279\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._279 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._279 + 8\n" + " ldr r0, ._279 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._280:\n" + " .align 2, 0\n" + "._279:\n" + " .word gUnknown_Debug_083C158A\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D104() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._281\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._281 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._281 + 8\n" + " ldr r0, ._281 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._282:\n" + " .align 2, 0\n" + "._281:\n" + " .word gUnknown_Debug_083C1647\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D15C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._283\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._283 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._283 + 8\n" + " ldr r0, ._283 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._284:\n" + " .align 2, 0\n" + "._283:\n" + " .word gUnknown_Debug_083C1712\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D1B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._285\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._285 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._285 + 8\n" + " ldr r0, ._285 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._286:\n" + " .align 2, 0\n" + "._285:\n" + " .word gUnknown_Debug_083C17F8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D20C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._287\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._287 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._287 + 8\n" + " ldr r0, ._287 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._288:\n" + " .align 2, 0\n" + "._287:\n" + " .word gUnknown_Debug_083C18B8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D264() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._289\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._289 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._289 + 8\n" + " ldr r0, ._289 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._290:\n" + " .align 2, 0\n" + "._289:\n" + " .word gDebug_0x83C1974\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D2BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D2BC() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._294\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D308\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D358\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._291 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._292 @cond_branch\n" + "._291:\n" + " mov r0, #0x0\n" + " b ._293\n" + "._295:\n" + " .align 2, 0\n" + "._294:\n" + " .word gDebug_03000700+0xf\n" + "._292:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._293:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D308() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._299\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._298 @cond_branch\n" + " ldr r0, ._299 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._297 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._298\n" + "._300:\n" + " .align 2, 0\n" + "._299:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C19C6\n" + "._297:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._298:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D358() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._303\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._301 @cond_branch\n" + " ldr r0, ._303 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._302:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._302 @cond_branch\n" + "._301:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._304:\n" + " .align 2, 0\n" + "._303:\n" + " .word gUnknown_Debug_083C19BC\n" + " .word gUnknown_Debug_083C19C6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D3BC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._305\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._305 + 4\n" + " ldr r0, ._305 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._306:\n" + " .align 2, 0\n" + "._305:\n" + " .word gUnknown_Debug_083C105C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D40C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D40C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._307 @cond_branch\n" + " mov r0, #0x0\n" + " b ._310\n" + "._307:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._309 @cond_branch\n" + " ldr r2, ._311\n" + " ldr r0, ._311 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._310\n" + "._312:\n" + " .align 2, 0\n" + "._311:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C105C\n" + "._309:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._310:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D450() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._313\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._313 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._313 + 8\n" + " ldr r0, ._313 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._314:\n" + " .align 2, 0\n" + "._313:\n" + " .word gUnknown_Debug_083C10BD\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D500+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D4A8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._315\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._315 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._315 + 8\n" + " ldr r0, ._315 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._316:\n" + " .align 2, 0\n" + "._315:\n" + " .word gUnknown_Debug_083C1149\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D500+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D500() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._320\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D54C\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D59C\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._317 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._318 @cond_branch\n" + "._317:\n" + " mov r0, #0x0\n" + " b ._319\n" + "._321:\n" + " .align 2, 0\n" + "._320:\n" + " .word gDebug_03000700+0xf\n" + "._318:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._319:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D54C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._325\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._324 @cond_branch\n" + " ldr r0, ._325 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._323 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._324\n" + "._326:\n" + " .align 2, 0\n" + "._325:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C1194+0x2\n" + "._323:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._324:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D59C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._329\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._327 @cond_branch\n" + " ldr r0, ._329 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._328:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._328 @cond_branch\n" + "._327:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._330:\n" + " .align 2, 0\n" + "._329:\n" + " .word gUnknown_Debug_083C1194\n" + " .word gUnknown_Debug_083C1194+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D600() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._331\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._331 + 4\n" + " ldr r0, ._331 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gUnknown_Debug_083C11CC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D650+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D650() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._333 @cond_branch\n" + " mov r0, #0x0\n" + " b ._336\n" + "._333:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._335 @cond_branch\n" + " ldr r2, ._337\n" + " ldr r0, ._337 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._336\n" + "._338:\n" + " .align 2, 0\n" + "._337:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C11CC\n" + "._335:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._336:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D694() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._339\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._339 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._339 + 8\n" + " ldr r0, ._339 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._340:\n" + " .align 2, 0\n" + "._339:\n" + " .word gUnknown_Debug_083C1212\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D744+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D6EC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._341\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._341 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._341 + 8\n" + " ldr r0, ._341 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._342:\n" + " .align 2, 0\n" + "._341:\n" + " .word gUnknown_Debug_083C1288\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D744+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D744() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._346\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D790\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D7E0\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._343 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._344 @cond_branch\n" + "._343:\n" + " mov r0, #0x0\n" + " b ._345\n" + "._347:\n" + " .align 2, 0\n" + "._346:\n" + " .word gDebug_03000700+0xf\n" + "._344:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._345:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D790() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._351\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._350 @cond_branch\n" + " ldr r0, ._351 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._349 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._350\n" + "._352:\n" + " .align 2, 0\n" + "._351:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C12D0+0x2\n" + "._349:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._350:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D7E0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._355\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._353 @cond_branch\n" + " ldr r0, ._355 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._354:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._354 @cond_branch\n" + "._353:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._356:\n" + " .align 2, 0\n" + "._355:\n" + " .word gUnknown_Debug_083C12D0\n" + " .word gUnknown_Debug_083C12D0+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D844() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1c\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._357\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1b\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl InitMenu\n" + " ldr r1, ._357 + 4\n" + " ldr r0, ._357 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._358:\n" + " .align 2, 0\n" + "._357:\n" + " .word gUnknown_Debug_083C1A78\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D894+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D894() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r3, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r3, r0\n" + " bne ._359 @cond_branch\n" + " mov r0, #0x0\n" + " b ._362\n" + "._359:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r3, r0\n" + " beq ._361 @cond_branch\n" + " ldr r2, ._363\n" + " ldr r1, ._363 + 4\n" + " lsl r0, r3, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0, #0x4]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._362\n" + "._364:\n" + " .align 2, 0\n" + "._363:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C1A78\n" + "._361:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._362:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D8D8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._365\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r0, ._365 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._365 + 8\n" + " ldr r0, ._365 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._366:\n" + " .align 2, 0\n" + "._365:\n" + " .word gUnknown_Debug_083C1A9C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808D930+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D930() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._370\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808D97C\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808D9CC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._367 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._368 @cond_branch\n" + "._367:\n" + " mov r0, #0x0\n" + " b ._369\n" + "._371:\n" + " .align 2, 0\n" + "._370:\n" + " .word gDebug_03000700+0xf\n" + "._368:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._369:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D97C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._375\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._374 @cond_branch\n" + " ldr r0, ._375 + 4\n" + " lsl r1, r2, #0x3\n" + " add r1, r1, r2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r0\n" + " ldrh r4, [r1]\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._373 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._374\n" + "._376:\n" + " .align 2, 0\n" + "._375:\n" + " .word gMain\n" + " .word gUnknown_Debug_083C1AAC+0x2\n" + "._373:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + "._374:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808D9CC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._379\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._377 @cond_branch\n" + " ldr r0, ._379 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._378:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " neg r2, r0\n" + " orr r2, r2, r0\n" + " lsr r2, r2, #0x1f\n" + " mov r0, #0x1c\n" + " add r1, r4, #0\n" + " bl debug_sub_808F2E0\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._378 @cond_branch\n" + "._377:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._380:\n" + " .align 2, 0\n" + "._379:\n" + " .word gUnknown_Debug_083C1AAC\n" + " .word gUnknown_Debug_083C1AAC+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DA30() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._381\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl InitMenu\n" + " ldr r1, ._381 + 4\n" + " ldr r0, ._381 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._382:\n" + " .align 2, 0\n" + "._381:\n" + " .word gUnknown_Debug_083C103A\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DA80+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DA80() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " bl debug_sub_808DAD4\n" + " bl debug_sub_808DABC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._383 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._384 @cond_branch\n" + "._383:\n" + " mov r0, #0x0\n" + " b ._385\n" + "._384:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._385:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DABC() +{ + asm( + " push {lr}\n" + " ldr r0, ._386\n" + " ldrh r2, [r0]\n" + " mov r0, #0x18\n" + " mov r1, #0x1\n" + " bl debug_sub_808F31C\n" + " pop {r0}\n" + " bx r0\n" + "._387:\n" + " .align 2, 0\n" + "._386:\n" + " .word gScriptResult\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DAD4() +{ + asm( + " push {lr}\n" + " ldr r0, ._390\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._388 @cond_branch\n" + " mov r2, #0x1\n" + " b ._389\n" + "._391:\n" + " .align 2, 0\n" + "._390:\n" + " .word gMain\n" + "._388:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._392 @cond_branch\n" + " ldr r2, ._393\n" + "._389:\n" + " ldr r1, ._393 + 4\n" + " ldrh r0, [r1]\n" + " add r0, r2, r0\n" + " strh r0, [r1]\n" + "._392:\n" + " pop {r0}\n" + " bx r0\n" + "._394:\n" + " .align 2, 0\n" + "._393:\n" + " .word 0xffff\n" + " .word gScriptResult\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DB0C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._395\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._395 + 4\n" + " ldr r0, ._395 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._396:\n" + " .align 2, 0\n" + "._395:\n" + " .word gUnknown_Debug_083C3D08\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DB5C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DB5C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._397 @cond_branch\n" + " mov r0, #0x0\n" + " b ._400\n" + "._397:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._399 @cond_branch\n" + " ldr r2, ._401\n" + " ldr r0, ._401 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._400\n" + "._402:\n" + " .align 2, 0\n" + "._401:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C3D08\n" + "._399:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._400:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DBA0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._403\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldr r0, ._403 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._403 + 8\n" + " ldr r0, ._403 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._404:\n" + " .align 2, 0\n" + "._403:\n" + " .word gUnknown_Debug_083C432C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DBF8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._405\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._405 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._405 + 8\n" + " ldr r0, ._405 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._406:\n" + " .align 2, 0\n" + "._405:\n" + " .word gUnknown_Debug_083C436C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DC50() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._407\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._407 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._407 + 8\n" + " ldr r0, ._407 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._408:\n" + " .align 2, 0\n" + "._407:\n" + " .word gUnknown_Debug_083C43B4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DCA8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._409\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._409 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._409 + 8\n" + " ldr r0, ._409 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._410:\n" + " .align 2, 0\n" + "._409:\n" + " .word gUnknown_Debug_083C43FC\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DD00() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._411\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._411 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._411 + 8\n" + " ldr r0, ._411 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._412:\n" + " .align 2, 0\n" + "._411:\n" + " .word gUnknown_Debug_083C4444\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DD58() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._413\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._413 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._413 + 8\n" + " ldr r0, ._413 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._414:\n" + " .align 2, 0\n" + "._413:\n" + " .word gUnknown_Debug_083C448C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DDB0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._415\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._415 + 4\n" + " mov r0, #0x6\n" + " strb r0, [r1]\n" + " ldr r1, ._415 + 8\n" + " ldr r0, ._415 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._416:\n" + " .align 2, 0\n" + "._415:\n" + " .word gUnknown_Debug_83C44C4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DE08() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._417\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._417 + 4\n" + " mov r0, #0x7\n" + " strb r0, [r1]\n" + " ldr r1, ._417 + 8\n" + " ldr r0, ._417 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._418:\n" + " .align 2, 0\n" + "._417:\n" + " .word gUnknown_Debug_83C44EC\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DE60() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._419\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._419 + 4\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r1, ._419 + 8\n" + " ldr r0, ._419 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._420:\n" + " .align 2, 0\n" + "._419:\n" + " .word gUnknown_Debug_083C4534\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808DEB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DEB8() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._424\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808DF64\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808DF04\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._421 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._422 @cond_branch\n" + "._421:\n" + " mov r0, #0x0\n" + " b ._423\n" + "._425:\n" + " .align 2, 0\n" + "._424:\n" + " .word gDebug_03000700+0xf\n" + "._422:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._423:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DF04() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._428\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._426 @cond_branch\n" + " ldr r0, ._428 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._427:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._427 @cond_branch\n" + "._426:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._429:\n" + " .align 2, 0\n" + "._428:\n" + " .word gUnknown_Debug_083C457C\n" + " .word gUnknown_Debug_083C457C+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DF64() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._432\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._430 @cond_branch\n" + " mov r5, #0x1\n" + " b ._431\n" + "._433:\n" + " .align 2, 0\n" + "._432:\n" + " .word gMain\n" + "._430:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._434 @cond_branch\n" + " ldr r5, ._435\n" + "._431:\n" + " ldr r1, ._435 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._434:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._436:\n" + " .align 2, 0\n" + "._435:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C457C+0xa\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808DFC0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._437\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._437 + 4\n" + " ldr r0, ._437 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._438:\n" + " .align 2, 0\n" + "._437:\n" + " .word gUnknown_Debug_083C377C\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E010+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E010() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._439 @cond_branch\n" + " mov r0, #0x0\n" + " b ._442\n" + "._439:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._441 @cond_branch\n" + " ldr r2, ._443\n" + " ldr r0, ._443 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._442\n" + "._444:\n" + " .align 2, 0\n" + "._443:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C377C\n" + "._441:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._442:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E054() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._445\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r0, ._445 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._445 + 8\n" + " ldr r0, ._445 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._446:\n" + " .align 2, 0\n" + "._445:\n" + " .word gUnknown_Debug_083C3AA0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E0AC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._447\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._447 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._447 + 8\n" + " ldr r0, ._447 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._448:\n" + " .align 2, 0\n" + "._447:\n" + " .word gUnknown_Debug_83C3AE0\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E104() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._449\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._449 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._449 + 8\n" + " ldr r0, ._449 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._450:\n" + " .align 2, 0\n" + "._449:\n" + " .word gUnknown_Debug_83C3B28\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E15C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._451\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._451 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._451 + 8\n" + " ldr r0, ._451 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._452:\n" + " .align 2, 0\n" + "._451:\n" + " .word gUnknown_Debug_83C3B70\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E1B4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._453\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._453 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._453 + 8\n" + " ldr r0, ._453 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._454:\n" + " .align 2, 0\n" + "._453:\n" + " .word gUnknown_Debug_83C3BB8\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E20C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._455\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._455 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r1, ._455 + 8\n" + " ldr r0, ._455 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._456:\n" + " .align 2, 0\n" + "._455:\n" + " .word gUnknown_Debug_83C3C00\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E264+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E264() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._460\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808E310\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808E2B0\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._457 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._458 @cond_branch\n" + "._457:\n" + " mov r0, #0x0\n" + " b ._459\n" + "._461:\n" + " .align 2, 0\n" + "._460:\n" + " .word gDebug_03000700+0xf\n" + "._458:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._459:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E2B0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._464\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._462 @cond_branch\n" + " ldr r0, ._464 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._463:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._463 @cond_branch\n" + "._462:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._465:\n" + " .align 2, 0\n" + "._464:\n" + " .word gUnknown_Debug_083C3C48\n" + " .word gUnknown_Debug_083C3C48+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E310() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._468\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._466 @cond_branch\n" + " mov r5, #0x1\n" + " b ._467\n" + "._469:\n" + " .align 2, 0\n" + "._468:\n" + " .word gMain\n" + "._466:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._470 @cond_branch\n" + " ldr r5, ._471\n" + "._467:\n" + " ldr r1, ._471 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._470:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._472:\n" + " .align 2, 0\n" + "._471:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C3C48+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E36C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._473\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._473 + 4\n" + " ldr r0, ._473 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._474:\n" + " .align 2, 0\n" + "._473:\n" + " .word gUnknown_Debug_083C32AC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E3BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E3BC() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._475 @cond_branch\n" + " mov r0, #0x0\n" + " b ._478\n" + "._475:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._477 @cond_branch\n" + " ldr r2, ._479\n" + " ldr r0, ._479 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._478\n" + "._480:\n" + " .align 2, 0\n" + "._479:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C32AC\n" + "._477:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._478:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E400() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._481\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl InitMenu\n" + " ldr r0, ._481 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._481 + 8\n" + " ldr r0, ._481 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._482:\n" + " .align 2, 0\n" + "._481:\n" + " .word gUnknown_Debug_083C347C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E458() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._483\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._483 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._483 + 8\n" + " ldr r0, ._483 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._484:\n" + " .align 2, 0\n" + "._483:\n" + " .word gUnknown_Debug_083C3494\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E4B0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._485\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x6\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x6\n" + " bl InitMenu\n" + " ldr r1, ._485 + 4\n" + " mov r0, #0x2\n" + " strb r0, [r1]\n" + " ldr r1, ._485 + 8\n" + " ldr r0, ._485 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._486:\n" + " .align 2, 0\n" + "._485:\n" + " .word gUnknown_Debug_083C34A4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E508() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._487\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r1, ._487 + 4\n" + " mov r0, #0x3\n" + " strb r0, [r1]\n" + " ldr r1, ._487 + 8\n" + " ldr r0, ._487 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._488:\n" + " .align 2, 0\n" + "._487:\n" + " .word gUnknown_Debug_083C34D4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E560() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._489\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._489 + 4\n" + " mov r0, #0x4\n" + " strb r0, [r1]\n" + " ldr r1, ._489 + 8\n" + " ldr r0, ._489 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gUnknown_Debug_083C351C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E5B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E5B8() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._494\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808E604\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808E660\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._491 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._492 @cond_branch\n" + "._491:\n" + " mov r0, #0x0\n" + " b ._493\n" + "._495:\n" + " .align 2, 0\n" + "._494:\n" + " .word gDebug_03000700+0xf\n" + "._492:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._493:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E604() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._498\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._496 @cond_branch\n" + " mov r5, #0x1\n" + " b ._497\n" + "._499:\n" + " .align 2, 0\n" + "._498:\n" + " .word gMain\n" + "._496:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._500 @cond_branch\n" + " ldr r5, ._501\n" + "._497:\n" + " ldr r1, ._501 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._500:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._502:\n" + " .align 2, 0\n" + "._501:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C3544+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E660() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._505\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._503 @cond_branch\n" + " ldr r0, ._505 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._504:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._504 @cond_branch\n" + "._503:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._506:\n" + " .align 2, 0\n" + "._505:\n" + " .word gUnknown_Debug_083C3544\n" + " .word gUnknown_Debug_083C3544+0x6\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E6C0() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._507\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._507 + 4\n" + " ldr r0, ._507 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._508:\n" + " .align 2, 0\n" + "._507:\n" + " .word gUnknown_Debug_083C4644\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E710+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E710() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._509 @cond_branch\n" + " mov r0, #0x0\n" + " b ._512\n" + "._509:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._511 @cond_branch\n" + " ldr r2, ._513\n" + " ldr r0, ._513 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._512\n" + "._514:\n" + " .align 2, 0\n" + "._513:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C4644\n" + "._511:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._512:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E754() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._515\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._515 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._515 + 8\n" + " ldr r0, ._515 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word gUnknown_Debug_083C470C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E804+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E7AC() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._517\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._517 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._517 + 8\n" + " ldr r0, ._517 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._518:\n" + " .align 2, 0\n" + "._517:\n" + " .word gUnknown_Debug_083C4754C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E804+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E804() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._522\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808E850\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808E8AC\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._519 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._520 @cond_branch\n" + "._519:\n" + " mov r0, #0x0\n" + " b ._521\n" + "._523:\n" + " .align 2, 0\n" + "._522:\n" + " .word gDebug_03000700+0xf\n" + "._520:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._521:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E850() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._526\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._524 @cond_branch\n" + " mov r5, #0x1\n" + " b ._525\n" + "._527:\n" + " .align 2, 0\n" + "._526:\n" + " .word gMain\n" + "._524:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._528 @cond_branch\n" + " ldr r5, ._529\n" + "._525:\n" + " ldr r1, ._529 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._528:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._530:\n" + " .align 2, 0\n" + "._529:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C478C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E8AC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._533\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._531 @cond_branch\n" + " ldr r0, ._533 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._532:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._532 @cond_branch\n" + "._531:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._534:\n" + " .align 2, 0\n" + "._533:\n" + " .word gUnknown_Debug_083C478C\n" + " .word gUnknown_Debug_083C478C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E90C() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._535\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x2\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x17\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x2\n" + " bl InitMenu\n" + " ldr r1, ._535 + 4\n" + " ldr r0, ._535 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._536:\n" + " .align 2, 0\n" + "._535:\n" + " .word gUnknown_Debug_083C35C4\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808E95C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E95C() +{ + asm( + " push {lr}\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bne ._537 @cond_branch\n" + " mov r0, #0x0\n" + " b ._540\n" + "._537:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._539 @cond_branch\n" + " ldr r2, ._541\n" + " ldr r0, ._541 + 4\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " str r0, [r2]\n" + " mov r0, #0x0\n" + " b ._540\n" + "._542:\n" + " .align 2, 0\n" + "._541:\n" + " .word gCallback_03004AE8\n" + " .word gUnknown_Debug_083C35C4\n" + "._539:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._540:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E9A0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._543\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl PrintMenuItems\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " ldr r0, ._543 + 4\n" + " strb r4, [r0]\n" + " ldr r1, ._543 + 8\n" + " ldr r0, ._543 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._544:\n" + " .align 2, 0\n" + "._543:\n" + " .word gUnknown_Debug_083C369C\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EA50+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808E9F8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._545\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x1c\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x7\n" + " bl InitMenu\n" + " ldr r1, ._545 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._545 + 8\n" + " ldr r0, ._545 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._546:\n" + " .align 2, 0\n" + "._545:\n" + " .word gUnknown_Debug_083C36E4\n" + " .word gDebug_03000700+0xf\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EA50+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EA50() +{ + asm( + " push {r4, r5, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " add r1, r0, #0\n" + " ldr r5, ._550\n" + " ldrb r0, [r5]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " bl debug_sub_808EAFC\n" + " ldrb r0, [r5]\n" + " bl debug_sub_808EA9C\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._547 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._548 @cond_branch\n" + "._547:\n" + " mov r0, #0x0\n" + " b ._549\n" + "._551:\n" + " .align 2, 0\n" + "._550:\n" + " .word gDebug_03000700+0xf\n" + "._548:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._549:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EA9C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " mov r5, #0x0\n" + " ldr r0, ._554\n" + " add r0, r1, r0\n" + " ldrb r2, [r0]\n" + " cmp r5, r2\n" + " bcs ._552 @cond_branch\n" + " ldr r0, ._554 + 4\n" + " mov r8, r0\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r7, r0, #0x1\n" + " add r6, r2, #0\n" + "._553:\n" + " lsl r0, r5, #0x1\n" + " add r4, r0, #1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " add r0, r0, r7\n" + " add r0, r0, r8\n" + " ldrh r0, [r0]\n" + " bl VarGet\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " mov r0, #0x18\n" + " add r1, r4, #0\n" + " bl debug_sub_808F31C\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, r6\n" + " bcc ._553 @cond_branch\n" + "._552:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._555:\n" + " .align 2, 0\n" + "._554:\n" + " .word gUnknown_Debug_083C371C\n" + " .word gUnknown_Debug_083C371C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EAFC() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " ldr r0, ._558\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._556 @cond_branch\n" + " mov r5, #0x1\n" + " b ._557\n" + "._559:\n" + " .align 2, 0\n" + "._558:\n" + " .word gMain\n" + "._556:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._560 @cond_branch\n" + " ldr r5, ._561\n" + "._557:\n" + " ldr r1, ._561 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r1\n" + " ldrh r4, [r0]\n" + " add r0, r4, #0\n" + " bl VarGet\n" + " add r1, r0, #0\n" + " add r1, r5, r1\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " bl VarSet\n" + "._560:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._562:\n" + " .align 2, 0\n" + "._561:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_083C371C+0x2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EB58() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._563\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._563 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xb\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldr r1, ._563 + 8\n" + " ldr r0, ._563 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word gUnknown_Debug_083C47B2\n" + " .word gUnknown_Debug_083C47F0\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EC10+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EBB4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xd\n" + " mov r3, #0xd\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._565\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._565 + 4\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x5\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xc\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x5\n" + " bl InitMenu\n" + " ldr r1, ._565 + 8\n" + " ldr r0, ._565 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word gUnknown_Debug_083C4830\n" + " .word gUnknown_Debug_083C4888\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808EC5C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EC10() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._568 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._568 @cond_branch\n" + " ldr r1, ._570\n" + " lsl r0, r2, #0x18\n" + " asr r0, r0, #0x18\n" + " ldr r2, ._570 + 4\n" + " add r1, r1, r2\n" + " strh r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._569\n" + "._571:\n" + " .align 2, 0\n" + "._570:\n" + " .word gSaveBlock1\n" + " .word 0x13c8\n" + "._568:\n" + " mov r0, #0x0\n" + "._569:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EC5C() +{ + asm( + " push {r4, lr}\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._573 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._573 @cond_branch\n" + " ldr r0, ._575\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x8\n" + " lsr r1, r1, #0x10\n" + " bl VarSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._574\n" + "._576:\n" + " .align 2, 0\n" + "._575:\n" + " .word 0x40a7\n" + "._573:\n" + " mov r0, #0x0\n" + "._574:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ECA4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._577\n" + " ldr r0, ._577 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x4\n" + " pop {r1}\n" + " bx r1\n" + "._578:\n" + " .align 2, 0\n" + "._577:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_808ECD0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ECD0() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._579 @cond_branch\n" + " mov r0, #0x0\n" + " b ._580\n" + "._579:\n" + " bl CloseMenu\n" + " mov r0, #0x2\n" + " bl debug_sub_808F168\n" + " ldr r0, ._581\n" + " bl SetMainCallback2\n" + " ldr r1, ._581 + 4\n" + " ldr r0, ._581 + 8\n" + " str r0, [r1, #0x8]\n" + " mov r0, #0x1\n" + "._580:\n" + " pop {r1}\n" + " bx r1\n" + "._582:\n" + " .align 2, 0\n" + "._581:\n" + " .word CB2_ContestPainting+1\n" + " .word gMain\n" + " .word debug_sub_808B868+1\n" + "\n" + ); +} + +__attribute__((naked)) +void TomomichiDebugMenu_Config() +{ + asm( + " mov r0, #0x0\n" + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ED0C() +{ + asm( + " push {lr}\n" + " ldr r2, ._590\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._584 @cond_branch\n" + " ldr r1, ._590 + 4\n" + " ldrh r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._584 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1]\n" + "._584:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._586 @cond_branch\n" + " ldr r3, ._590 + 4\n" + " ldrh r1, [r3]\n" + " ldr r0, ._590 + 8\n" + " cmp r1, r0\n" + " beq ._586 @cond_branch\n" + " add r0, r1, #1\n" + " strh r0, [r3]\n" + "._586:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._587 @cond_branch\n" + " ldr r1, ._590 + 4\n" + " ldrh r0, [r1]\n" + " cmp r0, #0xa\n" + " bls ._588 @cond_branch\n" + " sub r0, r0, #0xa\n" + " b ._589\n" + "._591:\n" + " .align 2, 0\n" + "._590:\n" + " .word gMain\n" + " .word gDebug_03000700\n" + " .word 0x19b\n" + "._588:\n" + " mov r0, #0x1\n" + "._589:\n" + " strh r0, [r1]\n" + "._587:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._592 @cond_branch\n" + " ldr r2, ._595\n" + " ldrh r1, [r2]\n" + " ldr r0, ._595 + 4\n" + " cmp r1, r0\n" + " bhi ._593 @cond_branch\n" + " add r0, r1, #0\n" + " add r0, r0, #0xa\n" + " b ._594\n" + "._596:\n" + " .align 2, 0\n" + "._595:\n" + " .word gDebug_03000700\n" + " .word 0x191\n" + "._593:\n" + " ldr r1, ._597\n" + " add r0, r1, #0\n" + "._594:\n" + " strh r0, [r2]\n" + "._592:\n" + " pop {r0}\n" + " bx r0\n" + "._598:\n" + " .align 2, 0\n" + "._597:\n" + " .word 0x19b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808ED9C() +{ + asm( + " push {lr}\n" + " ldr r2, ._606\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._600 @cond_branch\n" + " ldr r1, ._606 + 4\n" + " ldr r0, [r1]\n" + " cmp r0, #0\n" + " beq ._600 @cond_branch\n" + " sub r0, r0, #0x1\n" + " str r0, [r1]\n" + "._600:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._602 @cond_branch\n" + " ldr r3, ._606 + 4\n" + " ldr r1, [r3]\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._602 @cond_branch\n" + " add r0, r1, #1\n" + " str r0, [r3]\n" + "._602:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._603 @cond_branch\n" + " ldr r1, ._606 + 4\n" + " ldr r0, [r1]\n" + " cmp r0, #0xf\n" + " bls ._604 @cond_branch\n" + " sub r0, r0, #0x10\n" + " b ._605\n" + "._607:\n" + " .align 2, 0\n" + "._606:\n" + " .word gMain\n" + " .word gDebug_03000700+0x8\n" + "._604:\n" + " mov r0, #0x0\n" + "._605:\n" + " str r0, [r1]\n" + "._603:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._608 @cond_branch\n" + " ldr r3, ._611\n" + " ldr r1, [r3]\n" + " mov r0, #0x11\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " bhi ._609 @cond_branch\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " b ._610\n" + "._612:\n" + " .align 2, 0\n" + "._611:\n" + " .word gDebug_03000700+0x8\n" + "._609:\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + "._610:\n" + " str r0, [r3]\n" + "._608:\n" + " ldrh r2, [r2, #0x2e]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x2\n" + " add r0, r1, #0\n" + " and r0, r0, r2\n" + " cmp r0, r1\n" + " bne ._613 @cond_branch\n" + " ldr r1, ._614\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r0, [r1]\n" + "._613:\n" + " pop {r0}\n" + " bx r0\n" + "._615:\n" + " .align 2, 0\n" + "._614:\n" + " .word gDebug_03000700+0x8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EE3C() +{ + asm( + " push {lr}\n" + " ldr r2, ._622\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._617 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._617 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._617:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._619 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x5\n" + " beq ._619 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._619:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._620 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + "._620:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._621 @cond_branch\n" + " ldr r1, ._622 + 4\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + "._621:\n" + " pop {r0}\n" + " bx r0\n" + "._623:\n" + " .align 2, 0\n" + "._622:\n" + " .word gMain\n" + " .word gDebug_03000700+0xc\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EE9C() +{ + asm( + " push {lr}\n" + " ldr r2, ._631\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._625 @cond_branch\n" + " ldr r1, ._631 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._625 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._625:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._627 @cond_branch\n" + " ldr r1, ._631 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xf\n" + " beq ._627 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._627:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._628 @cond_branch\n" + " ldr r1, ._631 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xa\n" + " bls ._629 @cond_branch\n" + " sub r0, r0, #0xa\n" + " b ._630\n" + "._632:\n" + " .align 2, 0\n" + "._631:\n" + " .word gMain\n" + " .word gDebug_03000700+0xd\n" + "._629:\n" + " mov r0, #0x0\n" + "._630:\n" + " strb r0, [r1]\n" + "._628:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._633 @cond_branch\n" + " ldr r1, ._636\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x5\n" + " bhi ._634 @cond_branch\n" + " add r0, r0, #0xa\n" + " b ._635\n" + "._637:\n" + " .align 2, 0\n" + "._636:\n" + " .word gDebug_03000700+0xd\n" + "._634:\n" + " mov r0, #0xf\n" + "._635:\n" + " strb r0, [r1]\n" + "._633:\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EF14() +{ + asm( + " push {lr}\n" + " ldr r2, ._645\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._639 @cond_branch\n" + " ldr r1, ._645 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x1\n" + " beq ._639 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._639:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._641 @cond_branch\n" + " ldr r1, ._645 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xf\n" + " beq ._641 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._641:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._642 @cond_branch\n" + " ldr r1, ._645 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xa\n" + " bls ._643 @cond_branch\n" + " sub r0, r0, #0xa\n" + " b ._644\n" + "._646:\n" + " .align 2, 0\n" + "._645:\n" + " .word gMain\n" + " .word gDebug_03000700+0xe\n" + "._643:\n" + " mov r0, #0x0\n" + "._644:\n" + " strb r0, [r1]\n" + "._642:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._647 @cond_branch\n" + " ldr r1, ._650\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x5\n" + " bhi ._648 @cond_branch\n" + " add r0, r0, #0xa\n" + " b ._649\n" + "._651:\n" + " .align 2, 0\n" + "._650:\n" + " .word gDebug_03000700+0xe\n" + "._648:\n" + " mov r0, #0xf\n" + "._649:\n" + " strb r0, [r1]\n" + "._647:\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808EF8C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bgt ._653 @cond_branch\n" + " cmp r6, #0\n" + " blt ._653 @cond_branch\n" + " mov r3, #0x0\n" + " ldr r0, ._656\n" + " mov r8, r0\n" + " ldr r4, ._656 + 4\n" + " mov r7, #0x7\n" + " mov r5, #0xf\n" + "._658:\n" + " sub r0, r7, r3\n" + " lsl r0, r0, #0x2\n" + " mov r1, r8\n" + " ldr r2, [r1]\n" + " LSR r2, r0\n" + " and r2, r2, r5\n" + " cmp r2, #0x9\n" + " bhi ._654 @cond_branch\n" + " add r1, r3, r4\n" + " add r0, r2, #0\n" + " add r0, r0, #0xa1\n" + " b ._655\n" + "._657:\n" + " .align 2, 0\n" + "._656:\n" + " .word gDebug_03000700+0x8\n" + " .word gDebug_03000700+0x10\n" + "._654:\n" + " add r1, r3, r4\n" + " add r0, r2, #0\n" + " sub r0, r0, #0x4f\n" + "._655:\n" + " strb r0, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0x7\n" + " bls ._658 @cond_branch\n" + " ldr r0, ._666\n" + " mov r1, #0xff\n" + " strb r1, [r0, #0x8]\n" + " mov r1, #0xc\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + "._653:\n" + " mov r3, #0x0\n" + " ldr r7, ._666\n" + " ldr r5, ._666 + 4\n" + " ldr r2, ._666 + 8\n" + " mov r8, r2\n" + " add r4, r7, #0\n" + " mov r2, #0x0\n" + "._659:\n" + " add r1, r3, #1\n" + " add r0, r1, r4\n" + " strb r2, [r0]\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " cmp r3, #0x9\n" + " bls ._659 @cond_branch\n" + " mov r3, #0x0\n" + " ldrh r2, [r5]\n" + " mov r0, #0xb\n" + " add r1, r2, #0\n" + " mul r1, r1, r0\n" + " mov r2, r8\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._661 @cond_branch\n" + " ldr r0, ._666\n" + " mov ip, r0\n" + " mov r5, r8\n" + " add r4, r1, #0\n" + "._662:\n" + " add r1, r3, #1\n" + " mov r0, ip\n" + " add r2, r1, r0\n" + " add r0, r3, r4\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " strb r0, [r2]\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " add r0, r3, r4\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._661 @cond_branch\n" + " cmp r3, #0x9\n" + " bls ._662 @cond_branch\n" + "._661:\n" + " mov r0, #0xb1\n" + " strb r0, [r7]\n" + " mov r0, #0xb2\n" + " strb r0, [r7, #0xb]\n" + " mov r0, #0xff\n" + " strb r0, [r7, #0xc]\n" + " cmp r6, #0x2\n" + " bgt ._664 @cond_branch\n" + " cmp r6, #0\n" + " blt ._664 @cond_branch\n" + " add r0, r7, #0\n" + " mov r1, #0x8\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " b ._665\n" + "._667:\n" + " .align 2, 0\n" + "._666:\n" + " .word gDebug_03000700+0x10\n" + " .word gDebug_03000700\n" + " .word gSpeciesNames\n" + "._664:\n" + " ldr r0, ._672\n" + " mov r1, #0xc\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + "._665:\n" + " ldr r5, ._672\n" + " mov r0, #0xff\n" + " strb r0, [r5, #0x3]\n" + " ldr r4, ._672 + 4\n" + " ldrh r0, [r4]\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " ldrh r0, [r4]\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " ldrh r0, [r4]\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " cmp r6, #0x1\n" + " beq ._668 @cond_branch\n" + " cmp r6, #0x1\n" + " bgt ._669 @cond_branch\n" + " cmp r6, #0\n" + " beq ._670 @cond_branch\n" + " b ._679\n" + "._673:\n" + " .align 2, 0\n" + "._672:\n" + " .word gDebug_03000700+0x10\n" + " .word gDebug_03000700\n" + "._669:\n" + " cmp r6, #0x2\n" + " beq ._674 @cond_branch\n" + " b ._679\n" + "._670:\n" + " ldr r4, ._677\n" + " b ._676\n" + "._678:\n" + " .align 2, 0\n" + "._677:\n" + " .word gDebug_03000700+0xc\n" + "._668:\n" + " ldr r4, ._680\n" + "._676:\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " ldrb r0, [r4]\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " b ._679\n" + "._681:\n" + " .align 2, 0\n" + "._680:\n" + " .word gDebug_03000700+0xd\n" + "._674:\n" + " ldr r4, ._682\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " ldrb r0, [r4]\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " ldrb r0, [r4]\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + "._679:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._683:\n" + " .align 2, 0\n" + "._682:\n" + " .word gDebug_03000700+0xe\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F168() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " ldr r4, ._686\n" + " ldr r0, ._686 + 4\n" + " ldrh r0, [r0]\n" + " strh r0, [r4, #0x8]\n" + " ldr r0, ._686 + 8\n" + " ldr r0, [r0]\n" + " str r0, [r4, #0x4]\n" + " ldr r0, ._686 + 12\n" + " ldr r0, [r0]\n" + " str r0, [r4]\n" + " cmp r1, #0x5\n" + " bls ._684 @cond_branch\n" + " b ._707\n" + "._684:\n" + " lsl r0, r1, #0x2\n" + " ldr r1, ._686 + 16\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._687:\n" + " .align 2, 0\n" + "._686:\n" + " .word +0x2015de0\n" + " .word gDebug_03000700\n" + " .word gDebug_03000700+0x4\n" + " .word gDebug_03000700+0x8\n" + " .word ._688\n" + "._688:\n" + " .word ._689\n" + " .word ._690\n" + " .word ._691\n" + " .word ._692\n" + " .word ._693\n" + " .word ._694\n" + "._689:\n" + " ldr r0, ._696\n" + " ldr r2, ._696 + 4\n" + " add r1, r0, r2\n" + " mov r2, #0x0\n" + " strb r2, [r1]\n" + " ldr r1, ._696 + 8\n" + " add r0, r0, r1\n" + " strb r2, [r0]\n" + " ldr r0, ._696 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r4, #0xa]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x16\n" + " ldr r1, ._696 + 16\n" + " bl StringCopy\n" + " b ._704\n" + "._697:\n" + " .align 2, 0\n" + "._696:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gDebug_03000700+0xc\n" + " .word gUnknown_Debug_083C48BB\n" + "._690:\n" + " ldr r1, ._699\n" + " ldr r0, ._699 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r2, ._699 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r0, ._699 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " b ._698\n" + "._700:\n" + " .align 2, 0\n" + "._699:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gDebug_03000700+0xd\n" + "._691:\n" + " ldr r1, ._702\n" + " ldr r0, ._702 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x1\n" + " strb r0, [r2]\n" + " ldr r2, ._702 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldr r0, ._702 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r4, #0xa]\n" + " b ._707\n" + "._703:\n" + " .align 2, 0\n" + "._702:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gDebug_03000700+0xe\n" + "._692:\n" + " ldr r1, ._705\n" + " ldr r2, ._705 + 4\n" + " add r0, r1, r2\n" + " mov r2, #0x0\n" + " strb r2, [r0]\n" + " ldr r0, ._705 + 8\n" + " add r1, r1, r0\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " strb r2, [r4, #0xa]\n" + " b ._704\n" + "._706:\n" + " .align 2, 0\n" + "._705:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + "._693:\n" + " ldr r1, ._708\n" + " ldr r0, ._708 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r2, ._708 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " mov r0, #0x3\n" + "._698:\n" + " strb r0, [r4, #0xa]\n" + "._704:\n" + " add r0, r4, #0\n" + " add r0, r0, #0xb\n" + " ldr r1, ._708 + 12\n" + " bl StringCopy\n" + " b ._707\n" + "._709:\n" + " .align 2, 0\n" + "._708:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gUnknown_Debug_083C48B0\n" + "._694:\n" + " ldr r1, ._710\n" + " ldr r0, ._710 + 4\n" + " add r2, r1, r0\n" + " mov r0, #0x0\n" + " strb r0, [r2]\n" + " ldr r2, ._710 + 8\n" + " add r1, r1, r2\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " mov r0, #0x9\n" + " strb r0, [r4, #0xa]\n" + " add r0, r4, #0\n" + " add r0, r0, #0xb\n" + " ldr r1, ._710 + 12\n" + " bl StringCopy\n" + "._707:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._711:\n" + " .align 2, 0\n" + "._710:\n" + " .word +0x2000000\n" + " .word 0x15ddf\n" + " .word 0x15dde\n" + " .word gUnknown_Debug_083C48B0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F2E0() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r1, r1, #0x18\n" + " lsr r3, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " cmp r2, #0\n" + " bne ._712 @cond_branch\n" + " ldr r1, ._714\n" + " mov r0, #0xa1\n" + " b ._713\n" + "._715:\n" + " .align 2, 0\n" + "._714:\n" + " .word gDebug_03000700+0x10\n" + "._712:\n" + " ldr r1, ._716\n" + " mov r0, #0xa2\n" + "._713:\n" + " strb r0, [r1]\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x1]\n" + " add r0, r1, #0\n" + " add r1, r4, #0\n" + " add r2, r3, #0\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._717:\n" + " .align 2, 0\n" + "._716:\n" + " .word gDebug_03000700+0x10\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_808F31C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6}\n" + " mov r8, r0\n" + " mov r9, r1\n" + " add r4, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " mov r0, r9\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " ldr r5, ._718\n" + " ldr r6, ._718 + 4\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5]\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r6, #0xfa\n" + " lsl r6, r6, #0x2\n" + " add r1, r6, #0\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x1]\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x2]\n" + " add r0, r4, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x3]\n" + " add r0, r4, #0\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r5, #0x4]\n" + " mov r0, #0xff\n" + " strb r0, [r5, #0x5]\n" + " add r0, r5, #0\n" + " mov r1, r8\n" + " mov r2, r9\n" + " bl MenuPrint\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._719:\n" + " .align 2, 0\n" + "._718:\n" + " .word gDebug_03000700+0x10\n" + " .word 0x2710\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_nullsub_66() +{ + asm( + " bx lr\n" + "\n" + ); +} + +#endif diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c new file mode 100644 index 000000000..fed5b4e52 --- /dev/null +++ b/src/debug/watanabe_debug_menu.c @@ -0,0 +1,9846 @@ +#ifdef DEBUG +#include "global.h" + +EWRAM_DATA u8 unk_debug_ewram_0[56] = { 0 }; + +u8 byte_3005E30[0x20]; + +__attribute__((naked)) +void debug_69() +{ + asm( + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C35DC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x13\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " add r0, r0, #0xe\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x14\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x6\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x6\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x6\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " mov r3, #0xc0\n" + " lsl r3, r3, #0x13\n" + " mov r4, #0xc0\n" + " lsl r4, r4, #0x9\n" + " add r0, sp, #0x4\n" + " mov r8, r0\n" + " mov r2, sp\n" + " mov r6, #0x0\n" + " ldr r1, ._2\n" + " mov r5, #0x80\n" + " lsl r5, r5, #0x5\n" + " ldr r7, ._2 + 4\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x18\n" + " mov ip, r0\n" + "._1:\n" + " strh r6, [r2]\n" + " mov r0, sp\n" + " str r0, [r1]\n" + " str r3, [r1, #0x4]\n" + " str r7, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " add r3, r3, r5\n" + " sub r4, r4, r5\n" + " cmp r4, r5\n" + " bhi ._1 @cond_branch\n" + " strh r6, [r2]\n" + " mov r2, sp\n" + " str r2, [r1]\n" + " str r3, [r1, #0x4]\n" + " lsr r0, r4, #0x1\n" + " mov r2, ip\n" + " orr r0, r0, r2\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " mov r0, #0xe0\n" + " lsl r0, r0, #0x13\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x3\n" + " mov r4, #0x0\n" + " str r4, [sp, #0x4]\n" + " ldr r2, ._2\n" + " mov r1, r8\n" + " str r1, [r2]\n" + " str r0, [r2, #0x4]\n" + " lsr r0, r3, #0x2\n" + " mov r1, #0x85\n" + " lsl r1, r1, #0x18\n" + " orr r0, r0, r1\n" + " str r0, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " mov r0, sp\n" + " strh r4, [r0]\n" + " str r0, [r2]\n" + " str r1, [r2, #0x4]\n" + " lsr r3, r3, #0x1\n" + " mov r0, #0x81\n" + " lsl r0, r0, #0x18\n" + " orr r3, r3, r0\n" + " str r3, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " bl ResetPaletteFade\n" + " bl remove_some_task\n" + " bl ResetTasks\n" + " bl ResetSpriteData\n" + " bl ResetPaletteFade\n" + " bl FreeAllSpritePalettes\n" + " ldr r0, ._2 + 8\n" + " bl LoadSpriteSheet\n" + " ldr r0, ._2 + 12\n" + " bl LoadSpritePalette\n" + " ldr r0, ._2 + 16\n" + " bl SetUpWindowConfig\n" + " ldr r0, ._2 + 20\n" + " bl InitMenuWindow\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._3:\n" + " .align 2, 0\n" + "._2:\n" + " .word 0x40000d4\n" + " .word 0x81000800\n" + " .word stru_83F8828\n" + " .word stru_83F8838\n" + " .word gWindowConfig_81E6C3C\n" + " .word gWindowConfig_81E6CE4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C36F4() +{ + asm( + " push {lr}\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl UpdatePaletteFade\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C370C() +{ + asm( + " push {lr}\n" + " ldr r0, ._6\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._4 @cond_branch\n" + " ldr r0, ._6 + 4\n" + " bl SetMainCallback2\n" + " b ._5\n" + "._7:\n" + " .align 2, 0\n" + "._6:\n" + " .word gPaletteFade\n" + " .word debug_80C36F4+1\n" + "._4:\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl UpdatePaletteFade\n" + "._5:\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C373C() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl DestroyTask\n" + " bl ScriptContext2_Disable\n" + " ldr r0, ._8\n" + " bl SetMainCallback2\n" + " pop {r0}\n" + " bx r0\n" + "._9:\n" + " .align 2, 0\n" + "._8:\n" + " .word sub_80546F0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3758() +{ + asm( + " push {lr}\n" + " bl LoadOam\n" + " bl ProcessSpriteCopyRequests\n" + " bl TransferPlttBuffer\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C376C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " lsl r1, r1, #0x18\n" + " lsr r7, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r6, r2, #0x18\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + "._10:\n" + " mov r3, sp\n" + " add r0, r3, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " cmp r1, #0x2\n" + " bls ._10 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x3]\n" + " mov r4, #0x0\n" + " add r0, r5, #0\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._11 @cond_branch\n" + " mov r1, sp\n" + " add r0, r0, #0xa1\n" + " strb r0, [r1]\n" + " mov r4, #0x1\n" + "._11:\n" + " add r0, r5, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._12 @cond_branch\n" + " cmp r4, #0\n" + " beq ._13 @cond_branch\n" + "._12:\n" + " mov r1, sp\n" + " add r0, r0, #0xa1\n" + " strb r0, [r1, #0x1]\n" + "._13:\n" + " mov r4, sp\n" + " add r0, r5, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r0, r0, #0xa1\n" + " strb r0, [r4, #0x2]\n" + " mov r0, sp\n" + " add r1, r7, #0\n" + " add r2, r6, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3800() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff4\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " mov r3, #0x0\n" + " ldr r2, ._18\n" + " mov r1, #0x0\n" + "._14:\n" + " mov r7, sp\n" + " add r0, r7, r3\n" + " strb r1, [r0]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0x9\n" + " bls ._14 @cond_branch\n" + " add r1, r7, r3\n" + " mov r0, #0xff\n" + " strb r0, [r1]\n" + " mov r3, #0x0\n" + " mov r0, #0xb\n" + " add r1, r4, #0\n" + " mul r1, r1, r0\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._16 @cond_branch\n" + " add r4, r2, #0\n" + " add r2, r1, #0\n" + "._17:\n" + " mov r0, sp\n" + " add r1, r0, r3\n" + " add r0, r3, r2\n" + " add r0, r0, r4\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " add r0, r3, r2\n" + " add r0, r0, r4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._16 @cond_branch\n" + " cmp r3, #0x9\n" + " bls ._17 @cond_branch\n" + "._16:\n" + " mov r0, sp\n" + " add r1, r6, #0\n" + " add r2, r5, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0xc\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3878() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " cmp r0, #0\n" + " beq ._20 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._21 @cond_branch\n" + "._20:\n" + " cmp r1, #0x1\n" + " bls ._22 @cond_branch\n" + " sub r0, r1, #1\n" + " b ._23\n" + "._22:\n" + " ldr r1, ._25\n" + " b ._28\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word 0x19b\n" + "._21:\n" + " mov r0, #0xcd\n" + " lsl r0, r0, #0x1\n" + " cmp r1, r0\n" + " bhi ._27 @cond_branch\n" + " add r0, r1, #1\n" + "._23:\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " b ._28\n" + "._27:\n" + " mov r1, #0x1\n" + "._28:\n" + " add r0, r1, #0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C38B4() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r1, r1, #0x10\n" + " lsr r0, r1, #0x10\n" + " cmp r2, #0\n" + " beq ._29 @cond_branch\n" + " cmp r2, #0x1\n" + " beq ._30 @cond_branch\n" + "._29:\n" + " cmp r0, #0\n" + " beq ._31 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._32\n" + "._31:\n" + " mov r0, #0x52\n" + " b ._35\n" + "._30:\n" + " cmp r0, #0x51\n" + " bhi ._34 @cond_branch\n" + " add r0, r0, #0x1\n" + "._32:\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " b ._35\n" + "._34:\n" + " mov r0, #0x0\n" + "._35:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C38E4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r2, #0\n" + " add r5, r3, #0\n" + " ldr r6, [sp, #0x1c]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " lsl r1, r1, #0x18\n" + " lsr r7, r1, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " lsl r6, r6, #0x18\n" + " lsr r6, r6, #0x18\n" + " ldr r1, ._37\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " add r0, r7, #0\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " add r3, r5, #0\n" + " bl MenuFillWindowRectWithBlankTile\n" + " cmp r6, #0\n" + " beq ._36 @cond_branch\n" + " mov r0, sp\n" + " add r1, r7, #0\n" + " mov r2, r8\n" + " bl MenuPrint\n" + "._36:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._38:\n" + " .align 2, 0\n" + "._37:\n" + " .word gUnknown_Debug_083F7FD4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C393C() +{ + asm( + " push {lr}\n" + " ldr r1, ._39\n" + " mov r0, #0x1e\n" + " bl ProgramFlashSectorAndVerify\n" + " pop {r0}\n" + " bx r0\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word gUnknown_Debug_083F7FD6\n" + "\n" + ); +} + +__attribute__((naked)) +void InitWatanabeDebugMenu() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._46\n" + " ldr r1, ._46 + 4\n" + " add r4, r0, r1\n" + " ldrb r0, [r4]\n" + " cmp r0, #0x1\n" + " beq ._41 @cond_branch\n" + " cmp r0, #0x1\n" + " ble ._42 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._43 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._44 @cond_branch\n" + "._42:\n" + " bl save_serialize_map\n" + " bl sub_8125E2C\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + " b ._51\n" + "._47:\n" + " .align 2, 0\n" + "._46:\n" + " .word gMain\n" + " .word 0x43c\n" + "._41:\n" + " bl sub_8125E6C\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._51 @cond_branch\n" + " b ._49\n" + "._43:\n" + " mov r0, #0x37\n" + " bl PlaySE\n" + "._49:\n" + " ldrb r0, [r4]\n" + " add r0, r0, #0x1\n" + " strb r0, [r4]\n" + " b ._51\n" + "._44:\n" + " bl IsSEPlaying\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._51 @cond_branch\n" + " bl ScriptContext2_Disable\n" + " ldr r0, ._52\n" + " bl SetMainCallback2\n" + "._51:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._53:\n" + " .align 2, 0\n" + "._52:\n" + " .word sub_80546F0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void InitSizeComparison() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl debug_80C35DC\n" + " ldr r1, ._54\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._54 + 4\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x1\n" + " mov r2, #0x20\n" + " bl LoadPalette\n" + " ldr r3, ._54 + 8\n" + " ldrh r2, [r3]\n" + " mov r0, #0x0\n" + " strh r0, [r3]\n" + " ldr r4, ._54 + 12\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._54 + 16\n" + " bl SetVBlankCallback\n" + " ldr r0, ._54 + 20\n" + " bl SetMainCallback2\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0x8a\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._54 + 24\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._54 + 28\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " mov r0, #0xfc\n" + " strh r0, [r1, #0x8]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._55:\n" + " .align 2, 0\n" + "._54:\n" + " .word gReservedSpritePaletteCount\n" + " .word unk_debug_ewram_0\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word debug_80C3A50+1\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3A50() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xffffffd8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r1, ._56\n" + " lsl r2, r0, #0x2\n" + " add r0, r2, r0\n" + " lsl r0, r0, #0x3\n" + " add r7, r0, r1\n" + " ldrh r0, [r7, #0x8]\n" + " str r0, [sp, #0x4]\n" + " bl NationalPokedexNumToSpecies\n" + " mov r1, sp\n" + " strh r0, [r1, #0x8]\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x10\n" + " str r2, [sp, #0xc]\n" + " lsr r2, r2, #0x10\n" + " mov r9, r2\n" + " ldr r3, ._56 + 4\n" + " mov r8, r3\n" + " mov r0, #0x6\n" + " mov r1, #0x0\n" + " mov r2, #0x17\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x5\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " ldr r5, ._56 + 8\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r4, ._56 + 12\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x18\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " add r0, r5, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0xa\n" + " mov r2, #0xb\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._56 + 16\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 20\n" + " mov r1, #0x1\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 24\n" + " mov r1, #0x1\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 28\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0xc\n" + " mov r1, #0xa\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._56 + 32\n" + " mov r1, #0xd\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 36\n" + " mov r1, #0xd\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " mov r0, #0xc\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._56 + 40\n" + " mov r1, #0xd\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r0, ._56 + 44\n" + " mov r1, #0x18\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, r9\n" + " mov r1, #0x12\n" + " mov r2, #0x11\n" + " bl debug_80C3800\n" + " mov r1, r8\n" + " ldrb r0, [r1, #0x8]\n" + " mov r1, #0x98\n" + " mov r2, #0x28\n" + " mov r3, #0x0\n" + " bl sub_8091A4C\n" + " mov r2, sp\n" + " strh r0, [r2, #0x10]\n" + " add r3, r0, #0\n" + " lsl r3, r3, #0x10\n" + " str r3, [sp, #0x18]\n" + " lsr r0, r3, #0x10\n" + " str r0, [sp, #0x14]\n" + " lsl r4, r0, #0x4\n" + " add r4, r4, r0\n" + " lsl r4, r4, #0x2\n" + " ldr r1, ._56 + 48\n" + " add r4, r4, r1\n" + " ldrb r1, [r4, #0x1]\n" + " mov r2, #0x4\n" + " neg r2, r2\n" + " mov sl, r2\n" + " mov r0, sl\n" + " and r0, r0, r1\n" + " mov r3, #0x1\n" + " orr r0, r0, r3\n" + " strb r0, [r4, #0x1]\n" + " ldrb r1, [r4, #0x3]\n" + " mov r0, #0x3f\n" + " neg r0, r0\n" + " mov r9, r0\n" + " and r0, r0, r1\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x3]\n" + " ldrb r1, [r4, #0x5]\n" + " sub r2, r2, #0x9\n" + " mov r8, r2\n" + " mov r0, r8\n" + " and r0, r0, r1\n" + " mov r3, #0xf\n" + " and r0, r0, r3\n" + " strb r0, [r4, #0x5]\n" + " mov r0, #0x0\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, ._56 + 52\n" + " ldr r1, [sp, #0x4]\n" + " lsl r5, r1, #0x3\n" + " add r5, r5, r1\n" + " lsl r5, r5, #0x2\n" + " add r5, r5, r0\n" + " ldrh r6, [r5, #0x20]\n" + " strh r6, [r4, #0x26]\n" + " ldrh r4, [r5, #0x1e]\n" + " str r4, [sp]\n" + " mov r0, #0x2\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " mov r2, sp\n" + " ldrh r2, [r2, #0x14]\n" + " strh r2, [r7, #0xe]\n" + " strh r6, [r7, #0x10]\n" + " strh r4, [r7, #0x14]\n" + " ldr r0, [sp, #0x4]\n" + " mov r1, #0x58\n" + " mov r2, #0x28\n" + " mov r3, #0x1\n" + " bl sub_80918EC\n" + " mov r3, sp\n" + " strh r0, [r3, #0x1c]\n" + " lsl r0, r0, #0x10\n" + " str r0, [sp, #0x24]\n" + " lsr r1, r0, #0x10\n" + " str r1, [sp, #0x20]\n" + " lsl r4, r1, #0x4\n" + " add r4, r4, r1\n" + " lsl r4, r4, #0x2\n" + " ldr r2, ._56 + 48\n" + " add r4, r4, r2\n" + " ldrb r0, [r4, #0x1]\n" + " mov r3, sl\n" + " and r3, r3, r0\n" + " mov r0, #0x1\n" + " orr r3, r3, r0\n" + " strb r3, [r4, #0x1]\n" + " ldrb r0, [r4, #0x3]\n" + " mov r1, r9\n" + " and r1, r1, r0\n" + " mov r0, #0x2\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x3]\n" + " ldrb r0, [r4, #0x5]\n" + " mov r2, r8\n" + " and r2, r2, r0\n" + " mov r3, #0xf\n" + " and r2, r2, r3\n" + " strb r2, [r4, #0x5]\n" + " mov r0, #0x0\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldrh r0, [r5, #0x1c]\n" + " mov r8, r0\n" + " strh r0, [r4, #0x26]\n" + " ldrh r4, [r5, #0x1a]\n" + " str r4, [sp]\n" + " mov r0, #0x1\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " mov r1, sp\n" + " ldrh r1, [r1, #0x20]\n" + " strh r1, [r7, #0xc]\n" + " mov r2, r8\n" + " strh r2, [r7, #0x12]\n" + " strh r4, [r7, #0x16]\n" + " mov r3, #0x0\n" + " strh r3, [r7, #0x18]\n" + " strh r3, [r7, #0x1a]\n" + " ldr r1, ._56 + 56\n" + " ldr r2, ._56 + 60\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1f\n" + " strh r0, [r1]\n" + " ldr r2, ._56 + 64\n" + " mov r3, #0x18\n" + " ldsh r1, [r7, r3]\n" + " lsl r1, r1, #0x6\n" + " add r0, r1, #0\n" + " add r0, r0, #0x38\n" + " lsl r0, r0, #0x8\n" + " add r1, r1, #0x78\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r1, ._56 + 68\n" + " ldr r2, ._56 + 72\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0x2\n" + " ldr r3, ._56 + 76\n" + " add r0, r3, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._56 + 80\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0xa\n" + " mov r0, #0xe1\n" + " strh r0, [r1]\n" + " ldr r0, ._56 + 84\n" + " mov r3, #0x0\n" + " strh r3, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x13\n" + " ldrh r0, [r2]\n" + " mov r3, #0xc0\n" + " lsl r3, r3, #0x7\n" + " add r1, r3, #0\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r0, ._56 + 88\n" + " str r0, [r7]\n" + " add sp, sp, #0x28\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._57:\n" + " .align 2, 0\n" + "._56:\n" + " .word gTasks\n" + " .word gSaveBlock2\n" + " .word gUnknown_Debug_083F7FD6+0x4\n" + " .word gUnknown_Debug_083F7FDE\n" + " .word gUnknown_Debug_083F7FE2\n" + " .word gUnknown_Debug_083F7FED\n" + " .word gUnknown_Debug_083F7FF6\n" + " .word gUnknown_Debug_083F8001\n" + " .word gUnknown_Debug_083F800C\n" + " .word gUnknown_Debug_083F8019\n" + " .word gUnknown_Debug_083F8022\n" + " .word gUnknown_Debug_083F8028\n" + " .word gSprites\n" + " .word gPokedexEntries\n" + " .word 0x4000048\n" + " .word 0x3f1f\n" + " .word 0x4000040\n" + " .word 0x4000044\n" + " .word 0x848\n" + " .word 0x31bf\n" + " .word 0x14f\n" + " .word 0x4000052\n" + " .word debug_80C3D2C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C3D2C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " add r7, r6, #0\n" + " ldr r4, ._60\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._58 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._60 + 4\n" + " bl SetMainCallback2\n" + " ldr r1, ._60 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._60 + 12\n" + " str r1, [r0]\n" + " b ._117\n" + "._61:\n" + " .align 2, 0\n" + "._60:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._58:\n" + " mov r5, #0x1\n" + " add r0, r5, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._62 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._64\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrh r1, [r0, #0x18]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strh r1, [r0, #0x18]\n" + " b ._117\n" + "._65:\n" + " .align 2, 0\n" + "._64:\n" + " .word gTasks\n" + "._62:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._66 @cond_branch\n" + " ldr r1, ._70\n" + " lsl r2, r6, #0x2\n" + " add r0, r2, r6\n" + " lsl r0, r0, #0x3\n" + " add r3, r0, r1\n" + " mov r5, #0x18\n" + " ldsh r0, [r3, r5]\n" + " mov r8, r1\n" + " cmp r0, #0\n" + " beq ._67 @cond_branch\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._68 @cond_branch\n" + " ldrh r0, [r3, #0x14]\n" + " add r0, r0, #0x10\n" + " b ._69\n" + "._71:\n" + " .align 2, 0\n" + "._70:\n" + " .word gTasks\n" + "._68:\n" + " ldrh r0, [r3, #0x14]\n" + " add r0, r0, #0x1\n" + "._69:\n" + " strh r0, [r3, #0x14]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r2, r8\n" + " add r1, r0, r2\n" + " ldrh r0, [r1, #0x14]\n" + " mov r6, #0x80\n" + " lsl r6, r6, #0x8\n" + " cmp r0, r6\n" + " bhi ._72 @cond_branch\n" + " b ._117\n" + "._72:\n" + " strh r6, [r1, #0x14]\n" + " b ._117\n" + "._67:\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._75 @cond_branch\n" + " ldrh r0, [r3, #0x16]\n" + " add r0, r0, #0x10\n" + " b ._76\n" + "._75:\n" + " ldrh r0, [r3, #0x16]\n" + " add r0, r0, #0x1\n" + "._76:\n" + " strh r0, [r3, #0x16]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r4, r8\n" + " add r1, r0, r4\n" + " ldrh r0, [r1, #0x16]\n" + " mov r6, #0x80\n" + " lsl r6, r6, #0x8\n" + " cmp r0, r6\n" + " bhi ._77 @cond_branch\n" + " b ._117\n" + "._77:\n" + " strh r6, [r1, #0x16]\n" + " b ._117\n" + "._66:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._80 @cond_branch\n" + " ldr r1, ._84\n" + " lsl r2, r6, #0x2\n" + " add r0, r2, r6\n" + " lsl r0, r0, #0x3\n" + " add r3, r0, r1\n" + " mov r5, #0x18\n" + " ldsh r0, [r3, r5]\n" + " mov r8, r1\n" + " cmp r0, #0\n" + " beq ._81 @cond_branch\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._82 @cond_branch\n" + " ldrh r0, [r3, #0x14]\n" + " sub r0, r0, #0x10\n" + " b ._83\n" + "._85:\n" + " .align 2, 0\n" + "._84:\n" + " .word gTasks\n" + "._82:\n" + " ldrh r0, [r3, #0x14]\n" + " sub r0, r0, #0x1\n" + "._83:\n" + " strh r0, [r3, #0x14]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r2, r8\n" + " add r1, r0, r2\n" + " mov r4, #0x14\n" + " ldsh r0, [r1, r4]\n" + " cmp r0, #0xff\n" + " ble ._86 @cond_branch\n" + " b ._117\n" + "._86:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r1, #0x14]\n" + " b ._117\n" + "._81:\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._89 @cond_branch\n" + " ldrh r0, [r3, #0x16]\n" + " sub r0, r0, #0x10\n" + " b ._90\n" + "._89:\n" + " ldrh r0, [r3, #0x16]\n" + " sub r0, r0, #0x1\n" + "._90:\n" + " strh r0, [r3, #0x16]\n" + " add r0, r2, r7\n" + " lsl r0, r0, #0x3\n" + " mov r5, r8\n" + " add r1, r0, r5\n" + " mov r2, #0x16\n" + " ldsh r0, [r1, r2]\n" + " cmp r0, #0xff\n" + " ble ._91 @cond_branch\n" + " b ._117\n" + "._91:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " strh r0, [r1, #0x16]\n" + " b ._117\n" + "._80:\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._94 @cond_branch\n" + " ldr r0, ._97\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r4, #0x18\n" + " ldsh r0, [r1, r4]\n" + " cmp r0, #0\n" + " beq ._95 @cond_branch\n" + " ldrh r0, [r1, #0x10]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " b ._117\n" + "._98:\n" + " .align 2, 0\n" + "._97:\n" + " .word gTasks\n" + "._95:\n" + " ldrh r0, [r1, #0x12]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x12]\n" + " b ._117\n" + "._94:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._100 @cond_branch\n" + " ldr r0, ._103\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r5, #0x18\n" + " ldsh r0, [r1, r5]\n" + " cmp r0, #0\n" + " beq ._101 @cond_branch\n" + " ldrh r0, [r1, #0x10]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " b ._117\n" + "._104:\n" + " .align 2, 0\n" + "._103:\n" + " .word gTasks\n" + "._101:\n" + " ldrh r0, [r1, #0x12]\n" + " add r0, r0, #0x1\n" + " strh r0, [r1, #0x12]\n" + " b ._117\n" + "._100:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._106 @cond_branch\n" + " ldr r2, ._109\n" + " lsl r3, r6, #0x2\n" + " add r0, r3, r6\n" + " lsl r0, r0, #0x3\n" + " add r6, r0, r2\n" + " ldrh r4, [r6, #0x8]\n" + " mov r0, #0x8\n" + " ldsh r1, [r6, r0]\n" + " ldr r0, ._109 + 4\n" + " mov r8, r2\n" + " add r2, r3, #0\n" + " cmp r1, r0\n" + " bgt ._107 @cond_branch\n" + " add r0, r4, #1\n" + " strh r0, [r6, #0x8]\n" + " b ._108\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word gTasks\n" + " .word 0x181\n" + "._107:\n" + " strh r5, [r6, #0x8]\n" + "._108:\n" + " add r4, r2, r7\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r8\n" + " mov r2, #0xc\n" + " ldsh r1, [r4, r2]\n" + " b ._111\n" + "._106:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._112 @cond_branch\n" + " ldr r1, ._115\n" + " lsl r2, r6, #0x2\n" + " add r0, r2, r6\n" + " lsl r0, r0, #0x3\n" + " add r3, r0, r1\n" + " ldrh r6, [r3, #0x8]\n" + " mov r4, #0x8\n" + " ldsh r0, [r3, r4]\n" + " mov r8, r1\n" + " cmp r0, #0x1\n" + " ble ._113 @cond_branch\n" + " sub r0, r6, #1\n" + " b ._114\n" + "._116:\n" + " .align 2, 0\n" + "._115:\n" + " .word gTasks\n" + "._113:\n" + " mov r0, #0xc1\n" + " lsl r0, r0, #0x1\n" + "._114:\n" + " strh r0, [r3, #0x8]\n" + " add r4, r2, r7\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r8\n" + " mov r5, #0xc\n" + " ldsh r1, [r4, r5]\n" + "._111:\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r5, ._118\n" + " add r0, r0, r5\n" + " bl DestroySprite\n" + " mov r0, #0xe\n" + " ldsh r1, [r4, r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " bl DestroySprite\n" + " ldr r0, ._118 + 4\n" + " str r0, [r4]\n" + " b ._117\n" + "._119:\n" + " .align 2, 0\n" + "._118:\n" + " .word gSprites\n" + " .word debug_80C3A50+1\n" + "._112:\n" + " ldr r0, ._120\n" + " lsl r5, r7, #0x2\n" + " add r5, r5, r7\n" + " lsl r5, r5, #0x3\n" + " add r5, r5, r0\n" + " ldrh r4, [r5, #0x16]\n" + " ldrh r6, [r5, #0x12]\n" + " str r4, [sp]\n" + " mov r0, #0x1\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r2, ._120 + 4\n" + " mov r8, r2\n" + " mov r4, #0xc\n" + " ldsh r1, [r5, r4]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " strh r6, [r0, #0x26]\n" + " ldrh r4, [r5, #0x14]\n" + " ldrh r6, [r5, #0x10]\n" + " str r4, [sp]\n" + " mov r0, #0x2\n" + " add r1, r4, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl SetOamMatrix\n" + " add r0, r4, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x3\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " add r0, r6, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x7\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " mov r0, #0xe\n" + " ldsh r1, [r5, r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " strh r6, [r0, #0x26]\n" + " ldr r2, ._120 + 8\n" + " mov r4, #0x18\n" + " ldsh r1, [r5, r4]\n" + " lsl r1, r1, #0x6\n" + " add r0, r1, #0\n" + " add r0, r0, #0x38\n" + " lsl r0, r0, #0x8\n" + " add r1, r1, #0x78\n" + " add r0, r0, r1\n" + " strh r0, [r2]\n" + "._117:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._121:\n" + " .align 2, 0\n" + "._120:\n" + " .word gTasks\n" + " .word gSprites\n" + " .word 0x4000040\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C405C() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r5, r1, #0x10\n" + " mov r2, #0x0\n" + " mov r1, #0x0\n" + "._122:\n" + " add r0, r4, r2\n" + " strb r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x9\n" + " bls ._122 @cond_branch\n" + " add r0, r4, r2\n" + " mov r1, #0xff\n" + " strb r1, [r0]\n" + " mov r0, #0xae\n" + " strb r0, [r4]\n" + " cmp r5, #0\n" + " beq ._125 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r3, ._127\n" + " mov r0, #0xb\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " add r0, r1, r3\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._125 @cond_branch\n" + " add r5, r3, #0\n" + " add r3, r1, #0\n" + "._126:\n" + " add r1, r4, r2\n" + " add r0, r2, r3\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " add r0, r2, r3\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._125 @cond_branch\n" + " cmp r2, #0x9\n" + " bls ._126 @cond_branch\n" + "._125:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._128:\n" + " .align 2, 0\n" + "._127:\n" + " .word gSpeciesNames\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C40C4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r5, #0x0\n" + " mov r6, sp\n" + "._135:\n" + " cmp r7, #0\n" + " beq ._129 @cond_branch\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._132\n" + " add r4, r1, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._134 @cond_branch\n" + " add r0, r4, #0\n" + " bl CalculateMonStats\n" + " add r0, r4, #0\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " strh r0, [r6]\n" + " add r0, r4, #0\n" + " mov r1, #0x39\n" + " mov r2, sp\n" + " bl SetMonData\n" + " b ._134\n" + "._133:\n" + " .align 2, 0\n" + "._132:\n" + " .word gEnemyParty\n" + "._129:\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._136\n" + " add r4, r1, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._134 @cond_branch\n" + " add r0, r4, #0\n" + " bl CalculateMonStats\n" + " add r0, r4, #0\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " strh r0, [r6]\n" + " add r0, r4, #0\n" + " mov r1, #0x39\n" + " mov r2, sp\n" + " bl SetMonData\n" + "._134:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._135 @cond_branch\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._137:\n" + " .align 2, 0\n" + "._136:\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void InitBattleForDebug() +{ + asm( + " push {lr}\n" + " bl SavePlayerParty\n" + " ldr r1, ._138\n" + " ldr r0, ._138 + 4\n" + " ldrb r2, [r0, #0x8]\n" + " mov r0, #0x0\n" + " strb r2, [r1, #0xd]\n" + " strb r0, [r1]\n" + " strb r0, [r1, #0x1]\n" + " strb r0, [r1, #0x2]\n" + " strb r0, [r1, #0x3]\n" + " strb r0, [r1, #0x4]\n" + " strb r0, [r1, #0x5]\n" + " strb r0, [r1, #0x6]\n" + " strb r0, [r1, #0x7]\n" + " strb r0, [r1, #0x8]\n" + " strb r0, [r1, #0xc]\n" + " ldr r1, ._138 + 8\n" + " str r0, [r1]\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " mov r0, #0x0\n" + " bl debug_80C4214\n" + " ldr r0, ._138 + 12\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._139:\n" + " .align 2, 0\n" + "._138:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gSaveBlock2\n" + " .word byte_3005E30\n" + " .word debug_80C47BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C41A8() +{ + asm( + " push {lr}\n" + " ldr r1, ._140\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x1]\n" + " strb r0, [r1, #0x2]\n" + " bl ZeroPlayerPartyMons\n" + " bl ZeroEnemyPartyMons\n" + " mov r0, #0x0\n" + " bl debug_80C4214\n" + " ldr r0, ._140 + 4\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._141:\n" + " .align 2, 0\n" + "._140:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word debug_80C47BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C41D4() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " bl debug_80C40C4\n" + " mov r0, #0x0\n" + " bl debug_80C4214\n" + " ldr r0, ._142\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._143:\n" + " .align 2, 0\n" + "._142:\n" + " .word debug_80C42B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C41F4() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " bl debug_80C40C4\n" + " mov r0, #0x1\n" + " bl debug_80C4214\n" + " ldr r0, ._144\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._145:\n" + " .align 2, 0\n" + "._144:\n" + " .word debug_80C42B8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4214() +{ + asm( + " push {r4, r5, r6, lr}\n" + " bl debug_80C35DC\n" + " ldr r6, ._146\n" + " mov r4, #0x0\n" + " strh r4, [r6]\n" + " ldr r5, ._146 + 4\n" + " strh r4, [r5]\n" + " ldr r0, ._146 + 8\n" + " strh r4, [r0]\n" + " add r0, r0, #0x4\n" + " strh r4, [r0]\n" + " ldr r1, ._146 + 12\n" + " ldr r2, ._146 + 16\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x31\n" + " strh r0, [r1]\n" + " add r1, r1, #0x6\n" + " mov r0, #0xe1\n" + " strh r0, [r1]\n" + " ldr r0, ._146 + 20\n" + " strh r4, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " ldr r3, ._146 + 24\n" + " ldrh r2, [r3]\n" + " strh r4, [r3]\n" + " ldr r4, ._146 + 28\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r0, ._146 + 32\n" + " bl SetVBlankCallback\n" + " ldr r0, ._146 + 36\n" + " bl SetMainCallback2\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " ldr r2, ._146 + 40\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._146 + 44\n" + " add r0, r1, #0\n" + " strh r0, [r6]\n" + " ldr r2, ._146 + 48\n" + " add r0, r2, #0\n" + " strh r0, [r5]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._147:\n" + " .align 2, 0\n" + "._146:\n" + " .word 0x4000040\n" + " .word 0x4000044\n" + " .word 0x4000042\n" + " .word 0x4000048\n" + " .word 0x1111\n" + " .word 0x4000052\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word 0x7140\n" + " .word 0x1ef\n" + " .word 0x819f\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C42B8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffe4\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._150\n" + " mov r0, sp\n" + " mov r2, #0xc\n" + " bl memcpy\n" + " add r4, sp, #0xc\n" + " ldr r1, ._150 + 4\n" + " add r0, r4, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " bl debug_80C4694\n" + " bl debug_80C4704\n" + " ldr r0, ._150 + 8\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._148 @cond_branch\n" + " ldr r0, ._150 + 12\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._150 + 16\n" + " b ._149\n" + "._151:\n" + " .align 2, 0\n" + "._150:\n" + " .word gUnknown_Debug_083F8194\n" + " .word gUnknown_Debug_083F81A0\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C44EC+1\n" + "._148:\n" + " ldr r0, ._152\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._152 + 4\n" + "._149:\n" + " str r0, [r1]\n" + " add sp, sp, #0x1c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._153:\n" + " .align 2, 0\n" + "._152:\n" + " .word gTasks\n" + " .word debug_80C4348+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4348() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._154\n" + " ldrb r0, [r0, #0x1]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._154 + 4\n" + " ldr r2, ._154 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._154 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._154 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._155:\n" + " .align 2, 0\n" + "._154:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C43A8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C43A8() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r1, ._158\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " add r3, r1, #0\n" + " cmp r0, #0\n" + " beq ._156 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._158 + 4\n" + " ldrb r1, [r0, #0x1]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._158 + 8\n" + " add r0, r0, r1\n" + " ldr r1, ._158 + 12\n" + " bl debug_sub_80A433C\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " b ._180\n" + "._159:\n" + " .align 2, 0\n" + "._158:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gPlayerParty\n" + " .word debug_80C41D4+1\n" + "._156:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._160 @cond_branch\n" + " ldr r0, ._162\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._162 + 4\n" + " str r0, [r1]\n" + " b ._180\n" + "._163:\n" + " .align 2, 0\n" + "._162:\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._160:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0\n" + " beq ._164 @cond_branch\n" + " bl debug_80C4774\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl CalculatePlayerPartyCount\n" + " bl CalculateEnemyPartyCount\n" + " ldr r0, ._167\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._167 + 4\n" + " str r0, [r1]\n" + " b ._180\n" + "._168:\n" + " .align 2, 0\n" + "._167:\n" + " .word gTasks\n" + " .word debug_80C4D14+1\n" + "._164:\n" + " mov r0, #0x88\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._169 @cond_branch\n" + " str r1, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._171\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._171 + 4\n" + " str r0, [r1]\n" + " b ._180\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gTasks\n" + " .word debug_80C44EC+1\n" + "._169:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._174 @cond_branch\n" + " ldr r1, ._176\n" + " ldrb r0, [r1, #0x1]\n" + " cmp r0, #0\n" + " beq ._174 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x1]\n" + " b ._175\n" + "._177:\n" + " .align 2, 0\n" + "._176:\n" + " .word unk_debug_ewram_0+0x20\n" + "._174:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " ldr r5, ._181\n" + " ldrb r0, [r5, #0x1]\n" + " cmp r0, #0x4\n" + " bhi ._180 @cond_branch\n" + " add r1, r0, #0\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._181 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._180 @cond_branch\n" + " ldrb r0, [r5, #0x1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r5, #0x1]\n" + "._175:\n" + " ldr r1, ._181 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._181 + 12\n" + " str r1, [r0]\n" + "._180:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gPlayerParty\n" + " .word gTasks\n" + " .word debug_80C4348+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C44EC() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._183\n" + " ldrb r0, [r0, #0x2]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._183 + 4\n" + " ldr r2, ._183 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._183 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._183 + 16\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._183 + 20\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x79ef\n" + " .word 0x17f\n" + " .word gTasks\n" + " .word debug_80C4550+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4550() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r1, ._187\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " add r3, r1, #0\n" + " cmp r0, #0\n" + " beq ._185 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r0, ._187 + 4\n" + " ldrb r1, [r0, #0x2]\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._187 + 8\n" + " add r0, r0, r1\n" + " ldr r1, ._187 + 12\n" + " bl debug_sub_80A433C\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " b ._209\n" + "._188:\n" + " .align 2, 0\n" + "._187:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gEnemyParty\n" + " .word debug_80C41F4+1\n" + "._185:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._189 @cond_branch\n" + " ldr r0, ._191\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._191 + 4\n" + " str r0, [r1]\n" + " b ._209\n" + "._192:\n" + " .align 2, 0\n" + "._191:\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._189:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0\n" + " beq ._193 @cond_branch\n" + " bl debug_80C4774\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl CalculatePlayerPartyCount\n" + " bl CalculateEnemyPartyCount\n" + " ldr r0, ._196\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._196 + 4\n" + " str r0, [r1]\n" + " b ._209\n" + "._197:\n" + " .align 2, 0\n" + "._196:\n" + " .word gTasks\n" + " .word debug_80C4D14+1\n" + "._193:\n" + " mov r0, #0x88\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._198 @cond_branch\n" + " str r1, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._200\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._200 + 4\n" + " str r0, [r1]\n" + " b ._209\n" + "._201:\n" + " .align 2, 0\n" + "._200:\n" + " .word gTasks\n" + " .word debug_80C4348+1\n" + "._198:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + " ldr r1, ._205\n" + " ldrb r0, [r1, #0x2]\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x2]\n" + " b ._204\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word unk_debug_ewram_0+0x20\n" + "._203:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + " ldr r5, ._210\n" + " ldrb r0, [r5, #0x2]\n" + " cmp r0, #0x4\n" + " bhi ._209 @cond_branch\n" + " add r1, r0, #0\n" + " mov r0, #0x64\n" + " mul r0, r0, r1\n" + " ldr r1, ._210 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + " ldrb r0, [r5, #0x2]\n" + " add r0, r0, #0x1\n" + " strb r0, [r5, #0x2]\n" + "._204:\n" + " ldr r1, ._210 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._210 + 12\n" + " str r1, [r0]\n" + "._209:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._211:\n" + " .align 2, 0\n" + "._210:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gEnemyParty\n" + " .word gTasks\n" + " .word debug_80C44EC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4694() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffe4\n" + " ldr r1, ._213\n" + " mov r0, sp\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + " add r5, sp, #0x10\n" + "._212:\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._213 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r5, #0\n" + " bl debug_80C405C\n" + " lsl r2, r4, #0x19\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x12\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._212 @cond_branch\n" + " add sp, sp, #0x1c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word gUnknown_Debug_083F81AD\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4704() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffe4\n" + " ldr r1, ._216\n" + " mov r0, sp\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + " add r5, sp, #0x10\n" + "._215:\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._216 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r5, #0\n" + " bl debug_80C405C\n" + " lsl r2, r4, #0x19\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x12\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._215 @cond_branch\n" + " add sp, sp, #0x1c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._217:\n" + " .align 2, 0\n" + "._216:\n" + " .word gUnknown_Debug_083F81BA\n" + " .word gEnemyParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4774() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._221\n" + " ldrb r0, [r0, #0xc]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x64\n" + " add r4, r0, #0\n" + " mul r4, r4, r1\n" + " ldr r0, ._221 + 4\n" + " add r0, r4, r0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._219 @cond_branch\n" + " ldr r0, ._221 + 8\n" + " add r0, r4, r0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " beq ._219 @cond_branch\n" + " mov r0, #0x1\n" + " b ._220\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gPlayerParty\n" + " .word gEnemyParty\n" + "._219:\n" + " mov r0, #0x0\n" + "._220:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C47BC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffc0\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._224\n" + " mov r0, sp\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " add r4, sp, #0x10\n" + " ldr r1, ._224 + 4\n" + " add r0, r4, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r6, sp, #0x20\n" + " ldr r1, ._224 + 8\n" + " add r0, r6, #0\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " add r5, sp, #0x30\n" + " ldr r1, ._224 + 12\n" + " add r0, r5, #0\n" + " mov r2, #0x10\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r4, #0x0\n" + " ldr r6, ._224 + 16\n" + "._223:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " lsl r2, r4, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x4\n" + " bls ._223 @cond_branch\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r5, #0\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._224 + 20\n" + " ldrb r0, [r0, #0x4]\n" + " bl debug_80C4C44\n" + " ldr r1, ._224 + 24\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._224 + 28\n" + " str r1, [r0]\n" + " add sp, sp, #0x40\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._225:\n" + " .align 2, 0\n" + "._224:\n" + " .word gUnknown_Debug_083F81C7\n" + " .word gUnknown_Debug_083F81A0\n" + " .word gUnknown_Debug_083F81D6\n" + " .word gUnknown_Debug_083F81E5\n" + " .word gUnknown_Debug_083F8068\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C48A0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C48A0() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._226\n" + " ldrb r0, [r0, #0x3]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._226 + 4\n" + " ldr r2, ._226 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._226 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._226 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._227:\n" + " .align 2, 0\n" + "._226:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C4900+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4900() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._230\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r3, r1, #0\n" + " cmp r4, #0\n" + " beq ._228 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._230 + 4\n" + " bl SetMainCallback2\n" + " bl LoadPlayerParty\n" + " ldr r1, ._230 + 8\n" + " ldr r0, ._230 + 12\n" + " ldrb r0, [r0, #0xd]\n" + " strb r0, [r1, #0x8]\n" + " ldr r0, ._230 + 16\n" + " mov r1, #0x0\n" + " strh r4, [r0]\n" + " ldr r0, ._230 + 20\n" + " strb r1, [r0]\n" + " ldr r1, ._230 + 24\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._230 + 28\n" + " b ._229\n" + "._231:\n" + " .align 2, 0\n" + "._230:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gSaveBlock2\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_02023A14_50\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._228:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._232 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._233 @cond_branch\n" + "._232:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._236\n" + " ldr r3, ._236 + 4\n" + " ldr r2, ._236 + 8\n" + " ldrb r0, [r2, #0x3]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r3\n" + " ldrb r0, [r0, #0x4]\n" + " strh r0, [r1]\n" + " ldr r1, ._236 + 12\n" + " mov r0, #0x8\n" + " strb r0, [r1]\n" + " ldrb r0, [r2, #0x3]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r3\n" + " ldrb r0, [r0, #0x5]\n" + " strb r0, [r2, #0xc]\n" + " ldrb r0, [r2, #0x3]\n" + " sub r0, r0, #0x1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bhi ._234 @cond_branch\n" + " str r4, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._236 + 16\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._236 + 20\n" + " str r0, [r1]\n" + " b ._247\n" + "._237:\n" + " .align 2, 0\n" + "._236:\n" + " .word gBattleTypeFlags\n" + " .word gUnknown_Debug_083F8068\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_02023A14_50\n" + " .word gTasks\n" + " .word debug_80C4A60+1\n" + "._234:\n" + " ldr r0, ._239\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._239 + 4\n" + " str r0, [r1]\n" + " b ._247\n" + "._240:\n" + " .align 2, 0\n" + "._239:\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._233:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._242 @cond_branch\n" + " ldr r1, ._244\n" + " ldrb r0, [r1, #0x3]\n" + " cmp r0, #0\n" + " beq ._242 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._243\n" + "._245:\n" + " .align 2, 0\n" + "._244:\n" + " .word unk_debug_ewram_0+0x20\n" + "._242:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._247 @cond_branch\n" + " ldr r1, ._248\n" + " ldrb r0, [r1, #0x3]\n" + " cmp r0, #0x1\n" + " bhi ._247 @cond_branch\n" + " add r0, r0, #0x1\n" + "._243:\n" + " strb r0, [r1, #0x3]\n" + " ldr r1, ._248 + 4\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._248 + 8\n" + "._229:\n" + " str r1, [r0]\n" + "._247:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._249:\n" + " .align 2, 0\n" + "._248:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C48A0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4A60() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._250\n" + " ldrb r0, [r0, #0x5]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._250 + 4\n" + " ldr r2, ._250 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._250 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._250 + 16\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._250 + 20\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._251:\n" + " .align 2, 0\n" + "._250:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x79ef\n" + " .word 0x17f\n" + " .word gTasks\n" + " .word debug_80C4AC4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4AC4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r7, ._255\n" + " ldrb r0, [r7, #0x4]\n" + " mov ip, r0\n" + " ldrb r5, [r7, #0x5]\n" + " mov r1, ip\n" + " add r0, r1, r5\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " ldr r2, ._255 + 4\n" + " mov r8, r2\n" + " ldrh r2, [r2, #0x2e]\n" + " mov r3, #0x1\n" + " and r3, r3, r2\n" + " add r4, r7, #0\n" + " cmp r3, #0\n" + " beq ._252 @cond_branch\n" + " ldr r0, ._255 + 8\n" + " lsl r1, r1, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r1, [r1]\n" + " ldr r3, ._255 + 12\n" + " ldr r2, [r3]\n" + " add r0, r2, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._253 @cond_branch\n" + " ldr r0, ._255 + 16\n" + " eor r1, r1, r0\n" + " and r2, r2, r1\n" + " b ._254\n" + "._256:\n" + " .align 2, 0\n" + "._255:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gMain\n" + " .word gUnknown_Debug_083F80D8\n" + " .word byte_3005E30\n" + " .word 0xffff\n" + "._253:\n" + " orr r2, r2, r1\n" + "._254:\n" + " str r2, [r3]\n" + " ldrb r0, [r4, #0x4]\n" + " bl debug_80C4C44\n" + " ldr r1, ._258\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._258 + 4\n" + " str r1, [r0]\n" + " b ._274\n" + "._259:\n" + " .align 2, 0\n" + "._258:\n" + " .word gTasks\n" + " .word debug_80C4A60+1\n" + "._252:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0\n" + " beq ._260 @cond_branch\n" + " str r3, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r0, ._262\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._262 + 4\n" + " b ._261\n" + "._263:\n" + " .align 2, 0\n" + "._262:\n" + " .word gTasks\n" + " .word debug_80C48A0+1\n" + "._260:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._264 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._266\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x3\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._266 + 4\n" + " ldrb r2, [r1, #0x1]\n" + " mov r0, #0x11\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r1, #0x1]\n" + " mov r0, #0xac\n" + " strb r0, [r1, #0x2]\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x3]\n" + " strb r4, [r1, #0x9]\n" + " strb r4, [r1, #0xa]\n" + " strb r4, [r1, #0xb]\n" + " strb r4, [r1, #0xc]\n" + " ldr r1, ._266 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._266 + 12\n" + " str r1, [r0]\n" + " b ._274\n" + "._267:\n" + " .align 2, 0\n" + "._266:\n" + " .word gTrainerBattleOpponent\n" + " .word +0x2017000\n" + " .word gTasks\n" + " .word debug_80C4F48+1\n" + "._264:\n" + " mov r0, r8\n" + " ldrh r1, [r0, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._268 @cond_branch\n" + " lsl r0, r5, #0x18\n" + " cmp r0, #0\n" + " beq ._269 @cond_branch\n" + " sub r0, r5, #1\n" + " strb r0, [r7, #0x5]\n" + " b ._277\n" + "._269:\n" + " mov r1, ip\n" + " lsl r0, r1, #0x18\n" + " cmp r0, #0\n" + " beq ._277 @cond_branch\n" + " mov r0, ip\n" + " sub r0, r0, #0x1\n" + " b ._272\n" + "._268:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._274 @cond_branch\n" + " lsl r0, r5, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x8\n" + " bhi ._274 @cond_branch\n" + " cmp r0, #0x4\n" + " bhi ._275 @cond_branch\n" + " add r0, r5, #1\n" + " strb r0, [r7, #0x5]\n" + " b ._277\n" + "._275:\n" + " mov r2, ip\n" + " lsl r0, r2, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x3\n" + " bhi ._277 @cond_branch\n" + " mov r0, ip\n" + " add r0, r0, #0x1\n" + "._272:\n" + " strb r0, [r7, #0x4]\n" + " ldrb r0, [r7, #0x4]\n" + " bl debug_80C4C44\n" + "._277:\n" + " ldr r0, ._278\n" + " lsl r1, r6, #0x2\n" + " add r1, r1, r6\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._278 + 4\n" + "._261:\n" + " str r0, [r1]\n" + "._274:\n" + " add sp, sp, #0x4\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._279:\n" + " .align 2, 0\n" + "._278:\n" + " .word gTasks\n" + " .word debug_80C4A60+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4C44() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffff0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " mov r2, #0x0\n" + " mov r5, sp\n" + "._290:\n" + " mov r0, sl\n" + " add r6, r2, r0\n" + " add r4, r6, #0\n" + " add r1, r2, #1\n" + " mov r8, r1\n" + " cmp r4, #0x9\n" + " bgt ._280 @cond_branch\n" + " mov r3, #0x0\n" + " ldr r1, ._288\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " ldrb r0, [r0]\n" + " ldr r7, ._288 + 4\n" + " mov r9, r7\n" + " lsl r2, r2, #0x1\n" + " mov ip, r2\n" + " cmp r0, #0xff\n" + " beq ._282 @cond_branch\n" + " add r7, r1, #0\n" + "._283:\n" + " add r0, r3, #3\n" + " mov r1, sp\n" + " add r2, r1, r0\n" + " lsl r1, r6, #0x3\n" + " add r1, r1, r7\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r2]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " ldr r0, [r1]\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._282 @cond_branch\n" + " cmp r3, #0xb\n" + " bls ._283 @cond_branch\n" + "._282:\n" + " cmp r3, #0xb\n" + " bhi ._284 @cond_branch\n" + " mov r1, #0x0\n" + "._285:\n" + " add r0, r3, #3\n" + " add r0, r0, sp\n" + " strb r1, [r0]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0xb\n" + " bls ._285 @cond_branch\n" + "._284:\n" + " mov r0, #0xff\n" + " strb r0, [r5, #0xe]\n" + " mov r0, #0xfc\n" + " strb r0, [r5]\n" + " mov r2, #0x1\n" + " strb r2, [r5, #0x1]\n" + " add r1, r2, #0\n" + " LSL r1, r4\n" + " mov r3, r9\n" + " ldr r0, [r3]\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._286 @cond_branch\n" + " mov r0, #0x3\n" + " strb r0, [r5, #0x2]\n" + " b ._287\n" + "._289:\n" + " .align 2, 0\n" + "._288:\n" + " .word gUnknown_Debug_083F80D8\n" + " .word byte_3005E30\n" + "._286:\n" + " strb r2, [r5, #0x2]\n" + "._287:\n" + " mov r2, ip\n" + " add r2, r2, #0x3\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x11\n" + " bl MenuPrint\n" + "._280:\n" + " mov r7, r8\n" + " lsl r0, r7, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x5\n" + " bls ._290 @cond_branch\n" + " add sp, sp, #0x10\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4D14() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xffffffd0\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r1, ._291\n" + " mov r0, sp\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " add r5, sp, #0x10\n" + " ldr r1, ._291 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r6, sp, #0x20\n" + " ldr r1, ._291 + 8\n" + " add r0, r6, #0\n" + " mov r2, #0xf\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r5, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r6, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._291 + 12\n" + " ldrb r0, [r0, #0x6]\n" + " bl debug_80C4F00\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r1, ._291 + 16\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._291 + 20\n" + " str r1, [r0]\n" + " add sp, sp, #0x30\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._292:\n" + " .align 2, 0\n" + "._291:\n" + " .word gUnknown_Debug_083F81C7\n" + " .word gUnknown_Debug_083F81F5\n" + " .word gUnknown_Debug_083F8202\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C4DB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4DB8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._293\n" + " ldrb r0, [r0, #0x7]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._293 + 4\n" + " ldr r2, ._293 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._293 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._293 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._294:\n" + " .align 2, 0\n" + "._293:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C4E18+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4E18() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r5, ._297\n" + " ldrb r3, [r5, #0x6]\n" + " ldrb r2, [r5, #0x7]\n" + " add r0, r3, r2\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r7, ._297 + 4\n" + " ldrh r1, [r7, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._295 @cond_branch\n" + " ldr r0, ._297 + 8\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._297 + 12\n" + " b ._296\n" + "._298:\n" + " .align 2, 0\n" + "._297:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C42B8+1\n" + "._295:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._299 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._300 @cond_branch\n" + "._299:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r2, ._302\n" + " ldr r1, ._302 + 4\n" + " lsl r0, r6, #0x3\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x4]\n" + " strb r0, [r2]\n" + " ldr r1, ._302 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._302 + 12\n" + " str r1, [r0]\n" + " b ._310\n" + "._303:\n" + " .align 2, 0\n" + "._302:\n" + " .word gBattleTerrain\n" + " .word gUnknown_Debug_083F814C\n" + " .word gTasks\n" + " .word debug_80C5158+1\n" + "._300:\n" + " ldrh r1, [r7, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._304 @cond_branch\n" + " lsl r0, r2, #0x18\n" + " cmp r0, #0\n" + " beq ._305 @cond_branch\n" + " sub r0, r2, #1\n" + " strb r0, [r5, #0x7]\n" + " b ._313\n" + "._305:\n" + " lsl r0, r3, #0x18\n" + " cmp r0, #0\n" + " beq ._313 @cond_branch\n" + " sub r0, r3, #1\n" + " b ._308\n" + "._304:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._310 @cond_branch\n" + " lsl r0, r2, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x7\n" + " bhi ._310 @cond_branch\n" + " cmp r0, #0x4\n" + " bhi ._311 @cond_branch\n" + " add r0, r2, #1\n" + " strb r0, [r5, #0x7]\n" + " b ._313\n" + "._311:\n" + " lsl r0, r3, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x2\n" + " bhi ._313 @cond_branch\n" + " add r0, r3, #1\n" + "._308:\n" + " strb r0, [r5, #0x6]\n" + " ldrb r0, [r5, #0x6]\n" + " bl debug_80C4F00\n" + "._313:\n" + " ldr r0, ._314\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._314 + 4\n" + "._296:\n" + " str r0, [r1]\n" + "._310:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._315:\n" + " .align 2, 0\n" + "._314:\n" + " .word gTasks\n" + " .word debug_80C4DB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4F00() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " mov r0, #0x1\n" + " mov r1, #0x3\n" + " mov r2, #0xd\n" + " mov r3, #0xe\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r4, #0x0\n" + " ldr r6, ._318\n" + "._317:\n" + " cmp r4, #0x8\n" + " bhi ._316 @cond_branch\n" + " add r0, r4, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " lsl r2, r4, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + "._316:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x5\n" + " bls ._317 @cond_branch\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._319:\n" + " .align 2, 0\n" + "._318:\n" + " .word gUnknown_Debug_083F814C\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C4F48() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6}\n" + " add sp, sp, #0xffffffc4\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r1, ._320\n" + " mov r0, sp\n" + " mov r2, #0x11\n" + " bl memcpy\n" + " add r6, sp, #0x14\n" + " ldr r1, ._320 + 4\n" + " add r0, r6, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r5, sp, #0x24\n" + " ldr r1, ._320 + 8\n" + " add r0, r5, #0\n" + " mov r2, #0xd\n" + " bl memcpy\n" + " add r0, sp, #0x34\n" + " mov r9, r0\n" + " ldr r1, ._320 + 12\n" + " mov r2, #0x4\n" + " bl memcpy\n" + " add r0, sp, #0x38\n" + " mov r8, r0\n" + " ldr r1, ._320 + 16\n" + " mov r2, #0x4\n" + " bl memcpy\n" + " mov r0, #0x0\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r6, #0\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, #0x1\n" + " mov r1, #0x3\n" + " mov r2, #0xd\n" + " mov r3, #0xe\n" + " bl MenuFillWindowRectWithBlankTile\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r0, r9\n" + " mov r1, #0x2\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " mov r0, r8\n" + " mov r1, #0x2\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0xf\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r1, ._320 + 20\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._320 + 24\n" + " str r1, [r0]\n" + " add sp, sp, #0x3c\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._321:\n" + " .align 2, 0\n" + "._320:\n" + " .word gUnknown_Debug_083F8211\n" + " .word gUnknown_Debug_083F81A0\n" + " .word gUnknown_Debug_083F8222\n" + " .word gUnknown_Debug_083F822F\n" + " .word gUnknown_Debug_083F8233\n" + " .word gTasks\n" + " .word debug_80C5038+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5038() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r0, ._322\n" + " ldrb r0, [r0, #0x8]\n" + " lsl r0, r0, #0x19\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x12\n" + " add r0, r0, r1\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " str r1, [sp]\n" + " mov r2, #0x1\n" + " mov r3, #0xe\n" + " bl debug_80C38E4\n" + " ldr r1, ._322 + 4\n" + " ldr r2, ._322 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " add r2, r2, #0x8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._322 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._322 + 16\n" + " str r1, [r0]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._323:\n" + " .align 2, 0\n" + "._322:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word 0x4000042\n" + " .word 0x177\n" + " .word gTasks\n" + " .word debug_80C5098+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5098() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r1, ._326\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " add r3, r1, #0\n" + " cmp r0, #0\n" + " beq ._324 @cond_branch\n" + " ldr r0, ._326 + 4\n" + " lsl r1, r4, #0x2\n" + " add r1, r1, r4\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._326 + 8\n" + " str r0, [r1]\n" + " b ._339\n" + "._327:\n" + " .align 2, 0\n" + "._326:\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C47BC+1\n" + "._324:\n" + " mov r0, #0x8\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._328 @cond_branch\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._329 @cond_branch\n" + "._328:\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._331\n" + " ldr r0, ._331 + 4\n" + " ldrb r0, [r0, #0x8]\n" + " strb r0, [r1, #0x8]\n" + " ldr r1, ._331 + 8\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._331 + 12\n" + " b ._330\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gSaveBlock2\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C42B8+1\n" + "._329:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._334 @cond_branch\n" + " ldr r1, ._336\n" + " ldrb r0, [r1, #0x8]\n" + " cmp r0, #0\n" + " beq ._334 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._335\n" + "._337:\n" + " .align 2, 0\n" + "._336:\n" + " .word unk_debug_ewram_0+0x20\n" + "._334:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._339 @cond_branch\n" + " ldr r1, ._340\n" + " ldrb r0, [r1, #0x8]\n" + " cmp r0, #0\n" + " bne ._339 @cond_branch\n" + " add r0, r0, #0x1\n" + "._335:\n" + " strb r0, [r1, #0x8]\n" + " ldr r1, ._340 + 4\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._340 + 8\n" + "._330:\n" + " str r1, [r0]\n" + "._339:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._341:\n" + " .align 2, 0\n" + "._340:\n" + " .word unk_debug_ewram_0+0x20\n" + " .word gTasks\n" + " .word debug_80C5038+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5158() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._342\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._342 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._343:\n" + " .align 2, 0\n" + "._342:\n" + " .word gTasks\n" + " .word debug_80C5174+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5174() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._344\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._344 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._345:\n" + " .align 2, 0\n" + "._344:\n" + " .word gTasks\n" + " .word debug_80C5190+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5190() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._346\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._346 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._347:\n" + " .align 2, 0\n" + "._346:\n" + " .word gTasks\n" + " .word debug_80C51AC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C51AC() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._348\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._348 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._349:\n" + " .align 2, 0\n" + "._348:\n" + " .word gTasks\n" + " .word debug_80C51C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C51C8() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._350\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._350 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._351:\n" + " .align 2, 0\n" + "._350:\n" + " .word gTasks\n" + " .word debug_80C51E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C51E4() +{ + asm( + " push {lr}\n" + " bl sub_80408BC\n" + " ldr r0, ._352\n" + " ldr r1, ._352 + 4\n" + " str r1, [r0, #0x8]\n" + " ldr r0, ._352 + 8\n" + " bl SetMainCallback2\n" + " pop {r0}\n" + " bx r0\n" + "._353:\n" + " .align 2, 0\n" + "._352:\n" + " .word gMain\n" + " .word debug_80C41A8+1\n" + " .word unref_sub_800D684+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5208() +{ + asm( + " push {r4, r5, r6, lr}\n" + " ldr r1, ._355\n" + " ldr r0, ._355 + 4\n" + " str r0, [r1]\n" + " mov r3, #0x0\n" + " add r6, r1, #0\n" + " ldr r4, ._355 + 8\n" + " add r5, r6, #0\n" + " mov r2, #0x0\n" + "._354:\n" + " ldr r0, [r5]\n" + " lsl r1, r3, #0x2\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " str r2, [r0]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0x3f\n" + " bls ._354 @cond_branch\n" + " ldr r2, [r6]\n" + " mov r0, #0xfc\n" + " str r0, [r2, #0x64]\n" + " ldrb r1, [r4, #0xa]\n" + " ldrb r0, [r4, #0xb]\n" + " lsl r0, r0, #0x8\n" + " orr r1, r1, r0\n" + " ldrb r0, [r4, #0xc]\n" + " lsl r0, r0, #0x10\n" + " orr r1, r1, r0\n" + " ldrb r0, [r4, #0xd]\n" + " lsl r0, r0, #0x18\n" + " orr r1, r1, r0\n" + " str r1, [r2, #0x70]\n" + " bl Random\n" + " add r4, r0, #0\n" + " bl Random\n" + " ldr r1, [r6]\n" + " lsl r4, r4, #0x10\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " orr r4, r4, r0\n" + " str r4, [r1, #0x74]\n" + " mov r0, #0x1\n" + " str r0, [r1, #0x68]\n" + " str r0, [r1, #0x6c]\n" + " bl debug_80C5C94\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._356:\n" + " .align 2, 0\n" + "._355:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word +0x2018000\n" + " .word gSaveBlock2\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C527C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add r6, r0, #0\n" + " mov r5, #0x0\n" + " ldr r7, ._359\n" + "._361:\n" + " mov r0, #0x64\n" + " add r1, r5, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._359 + 4\n" + " add r4, r1, r0\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " cmp r0, #0\n" + " bne ._357 @cond_branch\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " mov r2, #0x64\n" + " bl memcpy\n" + " add r0, r5, #1\n" + " strb r0, [r7]\n" + " mov r0, #0x0\n" + " b ._358\n" + "._360:\n" + " .align 2, 0\n" + "._359:\n" + " .word gPlayerPartyCount\n" + " .word gPlayerParty\n" + "._357:\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x5\n" + " bls ._361 @cond_branch\n" + " ldr r0, ._362\n" + " ldr r0, [r0]\n" + " bl SendMonToPC\n" + " mov r0, #0x1\n" + "._358:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._363:\n" + " .align 2, 0\n" + "._362:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void InitCreatePokemon() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xffffffd4\n" + " ldr r1, ._364\n" + " add r0, sp, #0x4\n" + " mov r2, #0x25\n" + " bl memcpy\n" + " bl debug_80C35DC\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r4, #0x0\n" + " str r4, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._364 + 4\n" + " mov r5, #0x0\n" + " strh r4, [r0]\n" + " add r0, r0, #0x2\n" + " strh r4, [r0]\n" + " add r0, r0, #0x2\n" + " strh r4, [r0]\n" + " ldr r3, ._364 + 8\n" + " ldrh r2, [r3]\n" + " strh r4, [r3]\n" + " ldr r4, ._364 + 12\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r2, ._364 + 16\n" + " ldrh r0, [r2]\n" + " mov r1, #0x8\n" + " orr r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r0, ._364 + 20\n" + " bl SetVBlankCallback\n" + " ldr r0, ._364 + 24\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " add r0, sp, #0x4\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " mov r1, #0x80\n" + " lsl r1, r1, #0x13\n" + " mov r2, #0x8a\n" + " lsl r2, r2, #0x5\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._364 + 28\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " bl debug_80C5208\n" + " ldr r1, ._364 + 32\n" + " ldr r0, [r1]\n" + " mov r2, #0xb4\n" + " lsl r2, r2, #0x1\n" + " add r0, r0, r2\n" + " strb r5, [r0]\n" + " ldr r0, [r1]\n" + " ldr r1, ._364 + 36\n" + " add r0, r0, r1\n" + " strb r5, [r0]\n" + " add sp, sp, #0x2c\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._365:\n" + " .align 2, 0\n" + "._364:\n" + " .word gUnknown_Debug_083F8733\n" + " .word 0x4000050\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word 0x4000004\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word debug_80C53A4+1\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C53A4() +{ + asm( + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._366\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r0, ._366 + 4\n" + " str r0, [r1]\n" + " bx lr\n" + "._367:\n" + " .align 2, 0\n" + "._366:\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C53C0() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl debug_80C6384\n" + " mov r0, #0x0\n" + " bl debug_80C627C\n" + " ldr r1, ._368\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._368 + 4\n" + " str r1, [r0]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._369:\n" + " .align 2, 0\n" + "._368:\n" + " .word gTasks\n" + " .word debug_80C53F0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C53F0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r0, ._372\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r2, #0x1\n" + " and r2, r2, r1\n" + " add r4, r0, #0\n" + " cmp r2, #0\n" + " beq ._370 @cond_branch\n" + " ldr r0, ._372 + 4\n" + " ldr r3, [r0]\n" + " mov r0, #0xb2\n" + " lsl r0, r0, #0x1\n" + " add r2, r3, r0\n" + " ldr r1, ._372 + 8\n" + " mov r4, #0xb4\n" + " lsl r4, r4, #0x1\n" + " add r0, r3, r4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r6, ._372 + 12\n" + " add r1, r3, r6\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " lsl r1, r1, #0x2\n" + " add r0, r3, #0\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " str r0, [r2]\n" + " mov r0, #0xb5\n" + " lsl r0, r0, #0x1\n" + " add r1, r3, r0\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl debug_80C643C\n" + " ldr r1, ._372 + 16\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._372 + 20\n" + " b ._375\n" + "._373:\n" + " .align 2, 0\n" + "._372:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F8698\n" + " .word 0x169\n" + " .word gTasks\n" + " .word debug_80C55E4+1\n" + "._370:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._374 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r2, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._376\n" + " bl SetMainCallback2\n" + " ldr r1, ._376 + 4\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._376 + 8\n" + " b ._375\n" + "._377:\n" + " .align 2, 0\n" + "._376:\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._374:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._378 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " bl debug_80C5FFC\n" + " ldr r0, ._381\n" + " ldr r0, [r0]\n" + " bl debug_80C527C\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, #0x3\n" + " mov r1, #0x8\n" + " mov r2, #0x1a\n" + " mov r3, #0xb\n" + " bl MenuDrawTextWindow\n" + " cmp r4, #0\n" + " beq ._379 @cond_branch\n" + " ldr r0, ._381 + 4\n" + " mov r1, #0x4\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._380\n" + "._382:\n" + " .align 2, 0\n" + "._381:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F872A\n" + "._379:\n" + " ldr r0, ._384\n" + " mov r1, #0x4\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + "._380:\n" + " ldr r0, ._384 + 4\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._384 + 8\n" + " str r0, [r1]\n" + " b ._400\n" + "._385:\n" + " .align 2, 0\n" + "._384:\n" + " .word gUnknown_Debug_083F8720\n" + " .word gTasks\n" + " .word debug_80C5708+1\n" + "._378:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._386 @cond_branch\n" + " ldr r0, ._388\n" + " ldr r0, [r0]\n" + " ldr r4, [r0, #0x64]\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " bl GetNationalPokedexFlag\n" + " add r0, r4, #0\n" + " mov r1, #0x3\n" + " bl GetNationalPokedexFlag\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._400\n" + "._389:\n" + " .align 2, 0\n" + "._388:\n" + " .word unk_debug_ewram_0+0x30\n" + "._386:\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._390 @cond_branch\n" + " mov r0, #0x2\n" + " bl debug_80C627C\n" + " b ._400\n" + "._390:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0\n" + " beq ._392 @cond_branch\n" + " mov r0, #0x1\n" + " bl debug_80C627C\n" + " b ._400\n" + "._392:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._395 @cond_branch\n" + " ldr r2, ._397\n" + " ldr r0, [r2]\n" + " mov r6, #0xb4\n" + " lsl r6, r6, #0x1\n" + " add r1, r0, r6\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._395 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, [r2]\n" + " ldr r1, ._397 + 4\n" + " add r0, r0, r1\n" + " strb r3, [r0]\n" + " b ._396\n" + "._398:\n" + " .align 2, 0\n" + "._397:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "._395:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._400 @cond_branch\n" + " ldr r3, ._401\n" + " ldr r0, [r3]\n" + " mov r4, #0xb4\n" + " lsl r4, r4, #0x1\n" + " add r2, r0, r4\n" + " ldrb r0, [r2]\n" + " cmp r0, #0x4\n" + " bhi ._400 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x0\n" + " strb r0, [r2]\n" + " ldr r0, [r3]\n" + " ldr r6, ._401 + 4\n" + " add r0, r0, r6\n" + " strb r1, [r0]\n" + "._396:\n" + " ldr r1, ._401 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._401 + 12\n" + "._375:\n" + " str r1, [r0]\n" + "._400:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._402:\n" + " .align 2, 0\n" + "._401:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C55E4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " add r6, r3, #0\n" + " ldr r1, ._405\n" + " ldr r2, ._405 + 4\n" + " ldr r0, [r2]\n" + " mov ip, r0\n" + " mov r0, #0xb4\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, ip\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._405 + 8\n" + " add r1, r1, ip\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r5, [r0]\n" + " add r7, r5, #0\n" + " ldr r1, ._405 + 12\n" + " ldrh r4, [r1, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r4\n" + " mov r8, r2\n" + " add r2, r1, #0\n" + " cmp r0, #0\n" + " beq ._403 @cond_branch\n" + " ldr r0, ._405 + 16\n" + " lsl r1, r3, #0x2\n" + " add r1, r1, r3\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._405 + 20\n" + " str r0, [r1]\n" + " b ._422\n" + "._406:\n" + " .align 2, 0\n" + "._405:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "._403:\n" + " mov r0, #0x2\n" + " and r0, r0, r4\n" + " cmp r0, #0\n" + " beq ._407 @cond_branch\n" + " lsl r1, r5, #0x2\n" + " mov r0, ip\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " mov r1, #0xb2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, ip\n" + " ldr r1, [r1]\n" + " str r1, [r0]\n" + " ldr r1, ._409\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._409 + 4\n" + " str r1, [r0]\n" + " b ._422\n" + "._410:\n" + " .align 2, 0\n" + "._409:\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "._407:\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._411 @cond_branch\n" + " mov r0, #0x1\n" + " b ._412\n" + "._411:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._413 @cond_branch\n" + " mov r0, #0x2\n" + "._412:\n" + " bl debug_80C6544\n" + " bl debug_80C643C\n" + " b ._422\n" + "._413:\n" + " ldr r0, ._419\n" + " lsl r1, r7, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r1, [r1]\n" + " ldrb r0, [r1, #0x9]\n" + " cmp r0, #0xff\n" + " beq ._422 @cond_branch\n" + " mov r0, #0x20\n" + " and r0, r0, r4\n" + " cmp r0, #0\n" + " beq ._417 @cond_branch\n" + " mov r0, #0xb5\n" + " lsl r0, r0, #0x1\n" + " add ip, ip, r0\n" + " mov r0, ip\n" + " ldrb r3, [r0]\n" + " ldrb r0, [r1, #0x9]\n" + " sub r0, r0, #0x1\n" + " cmp r3, r0\n" + " bge ._417 @cond_branch\n" + " add r0, r3, #1\n" + " mov r1, ip\n" + " strb r0, [r1]\n" + " bl debug_80C643C\n" + " b ._422\n" + "._420:\n" + " .align 2, 0\n" + "._419:\n" + " .word gUnknown_Debug_083F8554\n" + "._417:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._422 @cond_branch\n" + " mov r2, r8\n" + " ldr r0, [r2]\n" + " mov r2, #0xb5\n" + " lsl r2, r2, #0x1\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._422 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " bl debug_80C643C\n" + "._422:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5708() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r0, ._424\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._423 @cond_branch\n" + " ldr r0, ._424 + 4\n" + " lsl r1, r2, #0x2\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._424 + 8\n" + " str r0, [r1]\n" + "._423:\n" + " pop {r0}\n" + " bx r0\n" + "._425:\n" + " .align 2, 0\n" + "._424:\n" + " .word gMain\n" + " .word gTasks\n" + " .word debug_80C53C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5738() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r6, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r4, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r8, r2\n" + " cmp r4, #0xfe\n" + " bne ._426 @cond_branch\n" + " ldr r1, ._428\n" + " mov r2, #0x7\n" + " bl debug_80C689C\n" + " add r0, r6, #7\n" + " ldr r7, ._428 + 4\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xf0\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " mov r4, #0x0\n" + " strb r4, [r6, #0x13]\n" + " strb r4, [r6, #0x14]\n" + " add r0, r6, #0\n" + " add r0, r0, #0x15\n" + " ldr r1, ._428 + 8\n" + " mov r2, #0x7\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x1c\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xf4\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " add r0, r6, #0\n" + " add r0, r0, #0x28\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " ldr r1, ._428 + 12\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x31\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xf8\n" + "._431:\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " b ._517\n" + "._429:\n" + " .align 2, 0\n" + "._428:\n" + " .word gUnknown_Debug_083F850A\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F8514\n" + " .word gUnknown_Debug_083F851C\n" + "._426:\n" + " cmp r4, #0xfd\n" + " bne ._430 @cond_branch\n" + " ldr r1, ._432\n" + " add r0, r6, #0\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x9\n" + " ldr r7, ._432 + 4\n" + " ldr r1, [r7]\n" + " add r1, r1, #0xfc\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " mov r4, #0x0\n" + " strb r4, [r6, #0x15]\n" + " strb r4, [r6, #0x16]\n" + " add r0, r6, #0\n" + " add r0, r0, #0x17\n" + " ldr r1, ._432 + 8\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x20\n" + " ldr r1, [r7]\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " mov r2, #0x3\n" + " mov r3, #0x1\n" + " bl debug_80C6678\n" + " add r0, r6, #0\n" + " add r0, r0, #0x2c\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " strb r4, [r0]\n" + " add r0, r0, #0x1\n" + " ldr r1, ._432 + 12\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " add r0, r6, #0\n" + " add r0, r0, #0x37\n" + " ldr r1, [r7]\n" + " mov r3, #0x82\n" + " lsl r3, r3, #0x1\n" + " add r1, r1, r3\n" + " b ._431\n" + "._433:\n" + " .align 2, 0\n" + "._432:\n" + " .word gUnknown_Debug_083F8524\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F852D\n" + " .word gUnknown_Debug_083F8537\n" + "._430:\n" + " mov r1, #0x0\n" + " lsl r5, r4, #0x3\n" + " mov r2, #0x0\n" + "._434:\n" + " add r0, r6, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0xb\n" + " bls ._434 @cond_branch\n" + " ldr r0, ._437\n" + " add r0, r5, r0\n" + " ldr r1, [r0]\n" + " add r0, r6, #0\n" + " mov r2, #0xb\n" + " bl debug_80C689C\n" + " mov r1, #0xc\n" + " mov r2, #0xff\n" + "._435:\n" + " add r0, r6, r1\n" + " strb r2, [r0]\n" + " add r0, r1, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r1, r0, #0x10\n" + " cmp r1, #0xff\n" + " bls ._435 @cond_branch\n" + " ldr r0, ._437\n" + " add r0, r0, #0x4\n" + " add r0, r5, r0\n" + " ldr r0, [r0]\n" + " ldrb r2, [r0, #0x9]\n" + " lsl r0, r2, #0x1a\n" + " lsr r5, r0, #0x18\n" + " cmp r4, #0x22\n" + " bhi ._436 @cond_branch\n" + " lsl r0, r4, #0x2\n" + " ldr r1, ._437 + 4\n" + " add r1, r0, r1\n" + " ldr r1, [r1]\n" + " add r7, r0, #0\n" + " mov pc, r1\n" + "._438:\n" + " .align 2, 0\n" + "._437:\n" + " .word gUnknown_Debug_083F8554\n" + " .word ._439\n" + "._439:\n" + " .word ._440\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._445\n" + " .word ._446\n" + " .word ._450\n" + " .word ._450\n" + " .word ._450\n" + " .word ._450\n" + " .word ._451\n" + " .word ._452\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._472\n" + " .word ._473\n" + " .word ._474\n" + "._436:\n" + " mov r0, #0xff\n" + " strb r0, [r6]\n" + " b ._517\n" + "._440:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._477\n" + " mov r9, r1\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " add r1, r5, r6\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0xa]\n" + " mov r0, #0xfc\n" + " strb r0, [r1, #0xb]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0xc]\n" + " mov r2, r8\n" + " strb r2, [r1, #0xd]\n" + " add r4, r5, #0\n" + " add r4, r4, #0xe\n" + " add r4, r6, r4\n" + " mov r3, r9\n" + " ldr r0, [r3]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldrh r0, [r0]\n" + " bl NationalPokedexNumToSpecies\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r1, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._477 + 4\n" + " add r1, r1, r0\n" + " add r0, r4, #0\n" + " mov r2, #0xa\n" + " bl debug_80C689C\n" + " b ._517\n" + "._478:\n" + " .align 2, 0\n" + "._477:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gSpeciesNames\n" + "._445:\n" + " ldr r0, ._483\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldr r0, [r0]\n" + " cmp r0, #0x1\n" + " beq ._479 @cond_branch\n" + " cmp r0, #0x1\n" + " bcc ._480 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._481 @cond_branch\n" + " b ._517\n" + "._484:\n" + " .align 2, 0\n" + "._483:\n" + " .word unk_debug_ewram_0+0x30\n" + "._480:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._486\n" + " b ._488\n" + "._487:\n" + " .align 2, 0\n" + "._486:\n" + " .word gUnknown_Debug_083F8546\n" + "._479:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._489\n" + " b ._488\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gUnknown_Debug_083F8541\n" + "._481:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._492\n" + "._488:\n" + " mov r2, #0x2\n" + " bl debug_80C689C\n" + " b ._517\n" + "._493:\n" + " .align 2, 0\n" + "._492:\n" + " .word gUnknown_Debug_083F8544\n" + "._450:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r4, ._495\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " add r1, r5, r6\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0xa]\n" + " mov r0, #0xfc\n" + " strb r0, [r1, #0xb]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0xc]\n" + " mov r0, r8\n" + " strb r0, [r1, #0xd]\n" + " add r0, r5, #0\n" + " add r0, r0, #0xe\n" + " add r0, r6, r0\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r2, [r1]\n" + " mov r1, #0xd\n" + " mul r1, r1, r2\n" + " ldr r2, ._495 + 4\n" + " add r1, r1, r2\n" + " b ._494\n" + "._496:\n" + " .align 2, 0\n" + "._495:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gMoveNames\n" + "._451:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r4, ._499\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " add r1, r5, r6\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0xa]\n" + " mov r0, #0xfc\n" + " strb r0, [r1, #0xb]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0xc]\n" + " mov r2, r8\n" + " strb r2, [r1, #0xd]\n" + " ldr r0, [r4]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._497 @cond_branch\n" + " add r4, r5, #0\n" + " add r4, r4, #0xe\n" + " add r4, r6, r4\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl ItemId_GetItem\n" + " add r1, r0, #0\n" + " add r0, r4, #0\n" + " b ._498\n" + "._500:\n" + " .align 2, 0\n" + "._499:\n" + " .word unk_debug_ewram_0+0x30\n" + "._497:\n" + " add r0, r5, #0\n" + " add r0, r0, #0xe\n" + " add r0, r6, r0\n" + " ldr r1, ._502\n" + "._498:\n" + " mov r2, #0x9\n" + " bl debug_80C689C\n" + " b ._517\n" + "._503:\n" + " .align 2, 0\n" + "._502:\n" + " .word gUnknown_Debug_083F8541\n" + "._452:\n" + " add r6, r6, #0xc\n" + " ldr r4, ._505\n" + " ldr r0, [r4]\n" + " ldr r0, [r0, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " ldr r1, [r4]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldrb r1, [r1]\n" + " bl GetAbilityBySpecies\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0xd\n" + " mul r1, r1, r0\n" + " ldr r0, ._505 + 4\n" + " add r1, r1, r0\n" + " add r0, r6, #0\n" + "._494:\n" + " mov r2, #0xc\n" + " bl debug_80C689C\n" + " b ._517\n" + "._506:\n" + " .align 2, 0\n" + "._505:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gAbilityNames\n" + "._474:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r2, ._508\n" + " ldr r1, ._508 + 4\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " b ._514\n" + "._509:\n" + " .align 2, 0\n" + "._508:\n" + " .word gUnknown_Debug_083F86E8\n" + " .word unk_debug_ewram_0+0x30\n" + "._472:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xc\n" + " ldr r1, ._511\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " mov r3, r8\n" + " bl debug_80C6678\n" + " b ._517\n" + "._512:\n" + " .align 2, 0\n" + "._511:\n" + " .word unk_debug_ewram_0+0x30\n" + "._473:\n" + " ldr r0, ._515\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r7\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._513 @cond_branch\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._515 + 4\n" + " b ._514\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F854A\n" + "._513:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r1, ._518\n" + "._514:\n" + " mov r2, #0x4\n" + " bl debug_80C689C\n" + " b ._517\n" + "._519:\n" + " .align 2, 0\n" + "._518:\n" + " .word gUnknown_Debug_083F854D\n" + "._446:\n" + " add r0, r6, #0\n" + " add r0, r0, #0xa\n" + " ldr r2, ._520\n" + " ldr r1, ._520 + 4\n" + " ldr r1, [r1]\n" + " add r1, r1, #0x64\n" + " add r1, r1, r7\n" + " ldr r1, [r1]\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " mov r2, #0x5\n" + " bl debug_80C689C\n" + "._517:\n" + " mov r0, #0x0\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._521:\n" + " .align 2, 0\n" + "._520:\n" + " .word gNatureNames\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5B60() +{ + asm( + " lsl r0, r0, #0x18\n" + " ldr r1, ._522\n" + " ldr r1, [r1]\n" + " lsr r0, r0, #0x16\n" + " add r1, r1, #0x64\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " bx lr\n" + "._523:\n" + " .align 2, 0\n" + "._522:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5B74() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r2, r1, #0x18\n" + " cmp r2, #0x18\n" + " bhi ._540 @cond_branch\n" + " lsl r0, r2, #0x2\n" + " ldr r1, ._526\n" + " add r1, r0, r1\n" + " ldr r1, [r1]\n" + " add r3, r0, #0\n" + " mov pc, r1\n" + "._527:\n" + " .align 2, 0\n" + "._526:\n" + " .word ._525\n" + "._525:\n" + " .word ._532\n" + " .word ._529\n" + " .word ._530\n" + " .word ._532\n" + " .word ._532\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._540\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + " .word ._552\n" + "._540:\n" + " ldr r0, ._554\n" + " ldr r0, [r0]\n" + " lsl r1, r2, #0x2\n" + " add r0, r0, #0x64\n" + " add r0, r0, r1\n" + " str r6, [r0]\n" + " b ._562\n" + "._555:\n" + " .align 2, 0\n" + "._554:\n" + " .word unk_debug_ewram_0+0x30\n" + "._532:\n" + " ldr r0, ._557\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " bl debug_80C5C94\n" + " b ._562\n" + "._558:\n" + " .align 2, 0\n" + "._557:\n" + " .word unk_debug_ewram_0+0x30\n" + "._529:\n" + " ldr r4, ._560\n" + " ldr r1, [r4]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " ldr r0, [r1, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " ldr r5, [r4]\n" + " ldr r4, ._560 + 4\n" + " lsl r2, r6, #0x2\n" + " ldr r3, ._560 + 8\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " lsl r1, r0, #0x3\n" + " sub r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r3\n" + " ldrb r1, [r1, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " mul r0, r0, r1\n" + " add r2, r2, r0\n" + " add r2, r2, r4\n" + " ldr r0, [r2]\n" + " str r0, [r5, #0x6c]\n" + " bl debug_80C5C94\n" + " b ._562\n" + "._561:\n" + " .align 2, 0\n" + "._560:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gExperienceTables\n" + " .word gBaseStats\n" + "._530:\n" + " ldr r0, ._563\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " bl debug_80C5DEC\n" + " b ._562\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word unk_debug_ewram_0+0x30\n" + "._552:\n" + " ldr r0, ._565\n" + " ldr r0, [r0]\n" + " add r0, r0, #0x64\n" + " add r0, r0, r3\n" + " str r6, [r0]\n" + " bl debug_80C5EF4\n" + "._562:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5C94() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff0\n" + " ldr r6, ._567\n" + " ldr r2, [r6]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x98\n" + " ldr r4, [r0]\n" + " mov r1, #0x1f\n" + " and r4, r4, r1\n" + " add r0, r0, #0x8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xa8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xa\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xf\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x14\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xc0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x19\n" + " orr r4, r4, r0\n" + " ldr r0, [r2, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r0, [r6]\n" + " ldr r2, [r0, #0x68]\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r5, #0x1\n" + " str r5, [sp]\n" + " ldr r3, [r0, #0x74]\n" + " str r3, [sp, #0x4]\n" + " str r5, [sp, #0x8]\n" + " ldr r3, [r0, #0x70]\n" + " str r3, [sp, #0xc]\n" + " add r3, r4, #0\n" + " bl CreateMon\n" + " ldr r0, [r6]\n" + " bl GetMonGender\n" + " ldr r1, [r6]\n" + " add r0, r0, #0x2\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [r1, #0x78]\n" + " add r0, r1, #0\n" + " bl GetNature\n" + " ldr r1, [r6]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [r1, #0x7c]\n" + " add r0, r1, #0\n" + " mov r1, #0xd\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x80\n" + " str r2, [r1]\n" + " mov r1, #0xe\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x84\n" + " str r2, [r1]\n" + " mov r1, #0xf\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x88\n" + " str r2, [r1]\n" + " mov r1, #0x10\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x8c\n" + " str r2, [r1]\n" + " mov r1, #0x19\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " ldr r0, [r6]\n" + " str r1, [r0, #0x6c]\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf0\n" + " str r2, [r1]\n" + " mov r1, #0x3b\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf4\n" + " str r2, [r1]\n" + " mov r1, #0x3c\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf8\n" + " str r2, [r1]\n" + " mov r1, #0x3d\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfc\n" + " str r2, [r1]\n" + " mov r1, #0x3e\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r6]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r1, r0, r3\n" + " str r2, [r1]\n" + " mov r1, #0x3f\n" + " bl GetMonData\n" + " ldr r1, [r6]\n" + " mov r2, #0x82\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " str r0, [r1]\n" + " add sp, sp, #0x10\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._568:\n" + " .align 2, 0\n" + "._567:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5DEC() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " ldr r4, ._569\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x6c\n" + " mov r1, #0x19\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0xd\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0xe\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0xf\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " mov r1, #0x10\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " bl CalculateMonStats\n" + " ldr r0, [r4]\n" + " bl GiveMonInitialMoveset\n" + " ldr r0, [r4]\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " ldr r0, [r4]\n" + " str r1, [r0, #0x68]\n" + " mov r1, #0xd\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x80\n" + " str r2, [r1]\n" + " mov r1, #0xe\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x84\n" + " str r2, [r1]\n" + " mov r1, #0xf\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x88\n" + " str r2, [r1]\n" + " mov r1, #0x10\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0x8c\n" + " str r2, [r1]\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf0\n" + " str r2, [r1]\n" + " mov r1, #0x3b\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf4\n" + " str r2, [r1]\n" + " mov r1, #0x3c\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf8\n" + " str r2, [r1]\n" + " mov r1, #0x3d\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfc\n" + " str r2, [r1]\n" + " mov r1, #0x3e\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r1, r0, r3\n" + " str r2, [r1]\n" + " mov r1, #0x3f\n" + " bl GetMonData\n" + " ldr r1, [r4]\n" + " mov r2, #0x82\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " str r0, [r1]\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._570:\n" + " .align 2, 0\n" + "._569:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5EF4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._571\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x98\n" + " mov r1, #0x27\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x9c\n" + " mov r1, #0x1a\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa0\n" + " mov r1, #0x28\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa4\n" + " mov r1, #0x1b\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa8\n" + " mov r1, #0x29\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xac\n" + " mov r1, #0x1c\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb0\n" + " mov r1, #0x2a\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb4\n" + " mov r1, #0x1d\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb8\n" + " mov r1, #0x2b\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xbc\n" + " mov r1, #0x1e\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc0\n" + " mov r1, #0x2c\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc4\n" + " mov r1, #0x1f\n" + " bl SetMonData\n" + " ldr r0, [r4]\n" + " bl CalculateMonStats\n" + " ldr r0, [r4]\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf0\n" + " str r2, [r1]\n" + " mov r1, #0x3b\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf4\n" + " str r2, [r1]\n" + " mov r1, #0x3c\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xf8\n" + " str r2, [r1]\n" + " mov r1, #0x3d\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfc\n" + " str r2, [r1]\n" + " mov r1, #0x3e\n" + " bl GetMonData\n" + " add r2, r0, #0\n" + " ldr r0, [r4]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r1, r0, r3\n" + " str r2, [r1]\n" + " mov r1, #0x3f\n" + " bl GetMonData\n" + " ldr r1, [r4]\n" + " mov r2, #0x82\n" + " lsl r2, r2, #0x1\n" + " add r1, r1, r2\n" + " str r0, [r1]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._572:\n" + " .align 2, 0\n" + "._571:\n" + " .word unk_debug_ewram_0+0x30\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C5FFC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffe0\n" + " ldr r1, ._578\n" + " add r0, sp, #0x10\n" + " mov r2, #0x4\n" + " bl memcpy\n" + " add r7, sp, #0x14\n" + " ldr r1, ._578 + 4\n" + " add r0, r7, #0\n" + " mov r2, #0x8\n" + " bl memcpy\n" + " ldr r5, ._578 + 8\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x98\n" + " ldr r4, [r0]\n" + " mov r1, #0x1f\n" + " and r4, r4, r1\n" + " add r0, r0, #0x8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xa8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xa\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0xf\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xb8\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x14\n" + " orr r4, r4, r0\n" + " add r0, r2, #0\n" + " add r0, r0, #0xc0\n" + " ldr r0, [r0]\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x19\n" + " orr r4, r4, r0\n" + " ldr r0, [r2, #0x64]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl NationalPokedexNumToSpecies\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r0, [r5]\n" + " ldr r2, [r0, #0x68]\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r6, #0x1\n" + " str r6, [sp]\n" + " ldr r3, [r0, #0x74]\n" + " str r3, [sp, #0x4]\n" + " str r6, [sp, #0x8]\n" + " ldr r3, [r0, #0x70]\n" + " str r3, [sp, #0xc]\n" + " add r3, r4, #0\n" + " bl CreateMon\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x80\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._573 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x0\n" + " bl SetMonMoveSlot\n" + "._573:\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x84\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._574 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x1\n" + " bl SetMonMoveSlot\n" + "._574:\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x88\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._575 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x2\n" + " bl SetMonMoveSlot\n" + "._575:\n" + " ldr r2, [r5]\n" + " add r0, r2, #0\n" + " add r0, r0, #0x8c\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._576 @cond_branch\n" + " lsl r1, r0, #0x10\n" + " lsr r1, r1, #0x10\n" + " add r0, r2, #0\n" + " mov r2, #0x3\n" + " bl SetMonMoveSlot\n" + "._576:\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x6c\n" + " mov r1, #0x19\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x98\n" + " mov r1, #0x27\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x9c\n" + " mov r1, #0x1a\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa0\n" + " mov r1, #0x28\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa4\n" + " mov r1, #0x1b\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xa8\n" + " mov r1, #0x29\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xac\n" + " mov r1, #0x1c\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb0\n" + " mov r1, #0x2a\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb4\n" + " mov r1, #0x1d\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xb8\n" + " mov r1, #0x2b\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xbc\n" + " mov r1, #0x1e\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc0\n" + " mov r1, #0x2c\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc4\n" + " mov r1, #0x1f\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xc8\n" + " mov r1, #0x16\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xcc\n" + " mov r1, #0x17\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xd0\n" + " mov r1, #0x18\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xd4\n" + " mov r1, #0x21\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xd8\n" + " mov r1, #0x2f\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xdc\n" + " mov r1, #0x30\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xe0\n" + " mov r1, #0x20\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xe4\n" + " mov r1, #0x22\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x90\n" + " mov r1, #0xc\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0x94\n" + " mov r1, #0x2e\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r1, r0, #0\n" + " add r1, r1, #0xec\n" + " ldr r2, [r1]\n" + " lsl r2, r2, #0x3\n" + " ldr r1, ._578 + 12\n" + " add r2, r2, r1\n" + " mov r1, #0x37\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " add r2, r0, #0\n" + " add r2, r2, #0xe8\n" + " mov r1, #0x2d\n" + " bl SetMonData\n" + " ldr r1, [r5]\n" + " add r0, r1, #0\n" + " add r0, r0, #0xe8\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._577 @cond_branch\n" + " add r0, r1, #0\n" + " mov r1, #0x2\n" + " add r2, sp, #0x10\n" + " bl SetMonData\n" + " add r2, sp, #0x1c\n" + " strb r6, [r2]\n" + " ldr r0, [r5]\n" + " mov r1, #0x3\n" + " bl SetMonData\n" + "._577:\n" + " ldr r0, [r5]\n" + " mov r1, #0x7\n" + " add r2, r7, #0\n" + " bl SetMonData\n" + " mov r2, sp\n" + " add r2, r2, #0x1e\n" + " mov r0, #0xff\n" + " strh r0, [r2]\n" + " ldr r0, [r5]\n" + " mov r1, #0x23\n" + " bl SetMonData\n" + " ldr r0, [r5]\n" + " bl CalculateMonStats\n" + " add sp, sp, #0x20\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._579:\n" + " .align 2, 0\n" + "._578:\n" + " .word gUnknown_Debug_083F8758\n" + " .word gUnknown_Debug_083F875C\n" + " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_083F86E8+0x4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C627C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r6, r4, #0\n" + " ldr r1, ._584\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " add r5, sp, #0x4\n" + " ldr r1, ._584 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x2\n" + " bl memcpy\n" + " cmp r4, #0x1\n" + " beq ._580 @cond_branch\n" + " cmp r4, #0x1\n" + " bgt ._581 @cond_branch\n" + " cmp r4, #0\n" + " beq ._582 @cond_branch\n" + " b ._595\n" + "._585:\n" + " .align 2, 0\n" + "._584:\n" + " .word gUnknown_Debug_083F7FD4\n" + " .word gUnknown_Debug_083F8764\n" + "._581:\n" + " cmp r6, #0x2\n" + " beq ._586 @cond_branch\n" + " b ._595\n" + "._582:\n" + " ldr r0, ._589\n" + " ldr r0, [r0]\n" + " ldr r1, ._589 + 4\n" + " add r0, r0, r1\n" + " b ._588\n" + "._590:\n" + " .align 2, 0\n" + "._589:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "._580:\n" + " ldr r4, ._593\n" + " ldr r3, [r4]\n" + " ldr r1, ._593 + 4\n" + " add r0, r3, r1\n" + " ldrb r2, [r0]\n" + " ldr r1, ._593 + 8\n" + " mov r6, #0xb4\n" + " lsl r6, r6, #0x1\n" + " add r0, r3, r6\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrb r0, [r0, #0x4]\n" + " sub r0, r0, #0x1\n" + " cmp r2, r0\n" + " bge ._595 @cond_branch\n" + " lsl r2, r2, #0x19\n" + " mov r0, #0xa0\n" + " lsl r0, r0, #0x13\n" + " add r2, r2, r0\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " ldr r0, [r4]\n" + " ldr r2, ._593 + 4\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, [r4]\n" + " add r0, r0, r2\n" + "._588:\n" + " ldrb r2, [r0]\n" + " lsl r2, r2, #0x19\n" + " mov r6, #0xa0\n" + " lsl r6, r6, #0x13\n" + " add r2, r2, r6\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " b ._595\n" + "._594:\n" + " .align 2, 0\n" + "._593:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gUnknown_Debug_083F8698\n" + "._586:\n" + " ldr r4, ._596\n" + " ldr r0, [r4]\n" + " ldr r2, ._596 + 4\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._595 @cond_branch\n" + " add r2, r0, #0\n" + " lsl r2, r2, #0x19\n" + " mov r6, #0xa0\n" + " lsl r6, r6, #0x13\n" + " add r2, r2, r6\n" + " lsr r2, r2, #0x18\n" + " add r0, r5, #0\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + " ldr r0, [r4]\n" + " ldr r2, ._596 + 4\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, [r4]\n" + " add r0, r0, r2\n" + " ldrb r2, [r0]\n" + " lsl r2, r2, #0x19\n" + " add r2, r2, r6\n" + " lsr r2, r2, #0x18\n" + " mov r0, sp\n" + " mov r1, #0x1\n" + " bl MenuPrint\n" + "._595:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._597:\n" + " .align 2, 0\n" + "._596:\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6384() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " mov r0, #0x0\n" + " mov r1, #0x4\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r5, #0x0\n" + " ldr r3, ._600\n" + " ldr r1, ._600 + 4\n" + " ldr r0, [r1]\n" + " mov r2, #0xb4\n" + " lsl r2, r2, #0x1\n" + " add r0, r0, r2\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r3\n" + " ldr r0, [r0]\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._598 @cond_branch\n" + " add r4, r1, #0\n" + " ldr r0, ._600 + 8\n" + " mov r9, r0\n" + " mov r8, r3\n" + " add r7, r2, #0\n" + " mov r6, #0x1\n" + "._599:\n" + " ldr r0, [r4]\n" + " add r0, r0, r9\n" + " mov r1, #0xfc\n" + " strb r1, [r0]\n" + " ldr r0, [r4]\n" + " add r1, r1, #0x70\n" + " add r0, r0, r1\n" + " strb r6, [r0]\n" + " ldr r0, [r4]\n" + " ldr r2, ._600 + 12\n" + " add r0, r0, r2\n" + " strb r6, [r0]\n" + " ldr r1, [r4]\n" + " add r2, r2, #0x1\n" + " add r0, r1, r2\n" + " add r1, r1, r7\n" + " ldrb r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r8\n" + " ldr r1, [r1]\n" + " add r1, r1, r5\n" + " ldrb r1, [r1]\n" + " mov r2, #0x1\n" + " bl debug_80C5738\n" + " ldr r0, [r4]\n" + " add r0, r0, r9\n" + " lsl r2, r5, #0x19\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " ldr r0, [r4]\n" + " add r0, r0, r7\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " ldr r0, [r0]\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._599 @cond_branch\n" + "._598:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._601:\n" + " .align 2, 0\n" + "._600:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x16b\n" + " .word 0x16d\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C643C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r0, #0x2\n" + " mov r1, #0x5\n" + " mov r2, #0x1c\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r5, #0x0\n" + " ldr r6, ._605\n" + " ldr r1, ._605 + 4\n" + " ldr r0, [r1]\n" + " mov r3, #0xb4\n" + " lsl r3, r3, #0x1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " beq ._602 @cond_branch\n" + " add r4, r1, #0\n" + " mov r0, #0x1\n" + " mov r8, r0\n" + "._607:\n" + " ldr r0, [r4]\n" + " ldr r7, ._605 + 8\n" + " add r2, r0, r7\n" + " mov r0, #0xfc\n" + " strb r0, [r2]\n" + " ldr r0, [r4]\n" + " mov r2, #0xb6\n" + " lsl r2, r2, #0x1\n" + " add r0, r0, r2\n" + " mov r7, r8\n" + " strb r7, [r0]\n" + " ldr r2, [r4]\n" + " ldr r7, ._605 + 12\n" + " add r0, r2, r7\n" + " ldrb r0, [r0]\n" + " cmp r5, r0\n" + " bne ._603 @cond_branch\n" + " ldr r0, ._605 + 16\n" + " add r2, r2, r0\n" + " mov r0, #0x2\n" + " strb r0, [r2]\n" + " ldr r1, [r1]\n" + " mov r2, #0xb7\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " add r1, r1, r3\n" + " ldrb r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r6\n" + " ldr r1, [r1]\n" + " add r1, r1, r5\n" + " ldrb r1, [r1]\n" + " mov r2, #0x2\n" + " bl debug_80C5738\n" + " b ._604\n" + "._606:\n" + " .align 2, 0\n" + "._605:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x16b\n" + " .word 0x169\n" + " .word 0x16d\n" + "._603:\n" + " ldr r3, ._608\n" + " add r0, r2, r3\n" + " mov r7, r8\n" + " strb r7, [r0]\n" + " ldr r1, [r1]\n" + " mov r2, #0xb7\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " ldr r2, ._608 + 4\n" + " sub r3, r3, #0x5\n" + " add r1, r1, r3\n" + " ldrb r1, [r1]\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldr r1, [r1]\n" + " add r1, r1, r5\n" + " ldrb r1, [r1]\n" + " mov r2, #0x1\n" + " bl debug_80C5738\n" + "._604:\n" + " ldr r0, [r4]\n" + " ldr r7, ._608 + 8\n" + " add r0, r0, r7\n" + " lsl r2, r5, #0x19\n" + " mov r1, #0xa0\n" + " lsl r1, r1, #0x13\n" + " add r2, r2, r1\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0x2\n" + " bl MenuPrint\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " ldr r6, ._608 + 4\n" + " add r1, r4, #0\n" + " ldr r0, [r4]\n" + " mov r3, #0xb4\n" + " lsl r3, r3, #0x1\n" + " add r0, r0, r3\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldr r0, [r0]\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._607 @cond_branch\n" + "._602:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._609:\n" + " .align 2, 0\n" + "._608:\n" + " .word 0x16d\n" + " .word gUnknown_Debug_083F8698\n" + " .word 0x16b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6544() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " ldr r0, ._614\n" + " mov r8, r0\n" + " ldr r6, ._614 + 4\n" + " ldr r1, [r6]\n" + " mov r5, #0xb4\n" + " lsl r5, r5, #0x1\n" + " add r0, r1, r5\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " ldr r4, ._614 + 8\n" + " add r1, r1, r4\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " bl debug_80C5B60\n" + " add r7, r0, #0\n" + " ldr r2, ._614 + 12\n" + " ldr r3, [r6]\n" + " add r5, r3, r5\n" + " ldrb r0, [r5]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r8\n" + " add r4, r3, r4\n" + " ldrb r1, [r4]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r2, r2, #0x4\n" + " add r0, r0, r2\n" + " ldr r1, [r0]\n" + " ldr r5, [r1]\n" + " ldr r4, [r1, #0x4]\n" + " ldr r2, ._614 + 16\n" + " mov r6, #0xb5\n" + " lsl r6, r6, #0x1\n" + " add r0, r3, r6\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldr r3, [r0]\n" + " ldrb r0, [r1, #0x8]\n" + " cmp r0, #0\n" + " bne ._623 @cond_branch\n" + " mov r0, r9\n" + " cmp r0, #0x1\n" + " beq ._611 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._612 @cond_branch\n" + " b ._623\n" + "._615:\n" + " .align 2, 0\n" + "._614:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + " .word gUnknown_Debug_083F8554\n" + " .word gUnknown_Debug_083F8768\n" + "._611:\n" + " sub r0, r4, r3\n" + " cmp r7, r0\n" + " bcs ._616 @cond_branch\n" + " add r7, r7, r3\n" + " b ._623\n" + "._616:\n" + " cmp r7, r4\n" + " bcc ._622 @cond_branch\n" + " b ._619\n" + "._612:\n" + " add r0, r5, r3\n" + " cmp r7, r0\n" + " bls ._620 @cond_branch\n" + " sub r7, r7, r3\n" + " b ._623\n" + "._620:\n" + " cmp r7, r5\n" + " bls ._622 @cond_branch\n" + "._619:\n" + " add r7, r5, #0\n" + " b ._623\n" + "._622:\n" + " add r7, r4, #0\n" + "._623:\n" + " ldr r1, ._624\n" + " ldr r0, ._624 + 4\n" + " ldr r2, [r0]\n" + " mov r3, #0xb4\n" + " lsl r3, r3, #0x1\n" + " add r0, r2, r3\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r6, ._624 + 8\n" + " add r1, r2, r6\n" + " ldrb r1, [r1]\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r7, #0\n" + " bl debug_80C5B74\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._625:\n" + " .align 2, 0\n" + "._624:\n" + " .word gUnknown_Debug_083F8698\n" + " .word unk_debug_ewram_0+0x30\n" + " .word 0x169\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6630() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0xfc\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " mov r0, #0x1\n" + " strb r0, [r4]\n" + " add r4, r4, #0x1\n" + " cmp r2, #0x2\n" + " bne ._626 @cond_branch\n" + " ldr r0, ._629\n" + " ldr r0, [r0]\n" + " mov r5, #0xb5\n" + " lsl r5, r5, #0x1\n" + " add r0, r0, r5\n" + " ldrb r0, [r0]\n" + " cmp r3, r0\n" + " beq ._627 @cond_branch\n" + " strb r2, [r4]\n" + " b ._628\n" + "._630:\n" + " .align 2, 0\n" + "._629:\n" + " .word unk_debug_ewram_0+0x30\n" + "._627:\n" + " mov r0, #0x4\n" + "._626:\n" + " strb r0, [r4]\n" + "._628:\n" + " add r0, r1, #0\n" + " add r0, r0, #0xa1\n" + " strb r0, [r4, #0x1]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6678() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " mov r9, r0\n" + " add r6, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r8, r3\n" + " mov r7, #0x0\n" + " sub r0, r2, #1\n" + " cmp r0, #0x9\n" + " bhi ._644 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._633\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._634:\n" + " .align 2, 0\n" + "._633:\n" + " .word ._632\n" + "._632:\n" + " .word ._635\n" + " .word ._636\n" + " .word ._637\n" + " .word ._638\n" + " .word ._639\n" + " .word ._640\n" + " .word ._641\n" + " .word ._642\n" + " .word ._643\n" + " .word ._644\n" + "._644:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " ldr r5, ._645\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x9\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._643:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " ldr r5, ._645 + 4\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x8\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._642:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " ldr r5, ._645 + 8\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x7\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._641:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " ldr r5, ._645 + 12\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x6\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._640:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " ldr r5, ._645 + 16\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x5\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._639:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " ldr r5, ._645 + 20\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x4\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._638:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " mov r5, #0xfa\n" + " lsl r5, r5, #0x2\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x3\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._637:\n" + " mov r1, r9\n" + " add r4, r1, r7\n" + " add r0, r6, #0\n" + " mov r1, #0x64\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x2\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " mov r1, #0x64\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._636:\n" + " mov r0, r9\n" + " add r4, r0, r7\n" + " add r0, r6, #0\n" + " mov r1, #0xa\n" + " bl __udivsi3\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " mov r2, r8\n" + " mov r3, #0x1\n" + " bl debug_80C6630\n" + " add r0, r6, #0\n" + " mov r1, #0xa\n" + " bl __umodsi3\n" + " add r6, r0, #0\n" + " add r0, r7, #4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + "._635:\n" + " mov r1, r9\n" + " add r0, r1, r7\n" + " lsl r1, r6, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, r8\n" + " mov r3, #0x0\n" + " bl debug_80C6630\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._646:\n" + " .align 2, 0\n" + "._645:\n" + " .word 0x3b9aca00\n" + " .word 0x5f5e100\n" + " .word 0x989680\n" + " .word 0xf4240\n" + " .word 0x186a0\n" + " .word 0x2710\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C689C() +{ + asm( + " push {r4, r5, lr}\n" + " add r5, r0, #0\n" + " add r4, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r3, #0x0\n" + " ldrb r0, [r4]\n" + " b ._647\n" + "._649:\n" + " add r1, r5, r3\n" + " add r0, r4, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " add r0, r4, r3\n" + " ldrb r0, [r0]\n" + "._647:\n" + " cmp r0, #0xff\n" + " beq ._648 @cond_branch\n" + " cmp r3, r2\n" + " bcc ._649 @cond_branch\n" + "._648:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C68CC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r2, #0x0\n" + " mov r1, #0x0\n" + "._650:\n" + " mov r7, sp\n" + " add r0, r7, r2\n" + " strb r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x3\n" + " bls ._650 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0xff\n" + " strb r0, [r1, #0x4]\n" + " cmp r3, #0x2\n" + " beq ._651 @cond_branch\n" + " cmp r3, #0x2\n" + " bgt ._652 @cond_branch\n" + " cmp r3, #0x1\n" + " beq ._653 @cond_branch\n" + " b ._654\n" + "._652:\n" + " cmp r3, #0x3\n" + " beq ._655 @cond_branch\n" + "._654:\n" + " mov r1, sp\n" + " lsr r0, r4, #0xc\n" + " strb r0, [r1]\n" + "._655:\n" + " mov r1, sp\n" + " mov r0, #0xf0\n" + " lsl r0, r0, #0x4\n" + " and r0, r0, r4\n" + " lsr r0, r0, #0x8\n" + " strb r0, [r1, #0x1]\n" + "._651:\n" + " mov r1, sp\n" + " mov r0, #0xf0\n" + " and r0, r0, r4\n" + " lsr r0, r0, #0x4\n" + " strb r0, [r1, #0x2]\n" + "._653:\n" + " mov r2, sp\n" + " mov r1, #0xf\n" + " add r0, r4, #0\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0x3]\n" + " mov r2, #0x0\n" + "._658:\n" + " mov r0, sp\n" + " add r1, r0, r2\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x9\n" + " bhi ._656 @cond_branch\n" + " add r0, r0, #0xa1\n" + " b ._657\n" + "._656:\n" + " add r0, r0, #0xb1\n" + "._657:\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x3\n" + " bls ._658 @cond_branch\n" + " mov r0, #0x4\n" + " sub r0, r0, r3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r0, r0, sp\n" + " add r1, r6, #0\n" + " add r2, r5, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void InitSeePokemonGraphics() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl debug_80C35DC\n" + " ldr r1, ._659\n" + " ldr r2, ._659 + 4\n" + " ldr r0, ._659 + 8\n" + " str r1, [r0]\n" + " str r2, [r0, #0x4]\n" + " ldr r1, ._659 + 12\n" + " str r1, [r0, #0x8]\n" + " ldr r0, [r0, #0x8]\n" + " ldr r0, ._659 + 16\n" + " mov r1, #0x80\n" + " mov r2, #0x60\n" + " bl LoadPalette\n" + " ldr r1, ._659 + 20\n" + " add r0, sp, #0x4\n" + " strh r1, [r0]\n" + " mov r1, #0x0\n" + " mov r2, #0x2\n" + " bl LoadPalette\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r5, #0x0\n" + " str r5, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._659 + 24\n" + " mov r6, #0x0\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " ldr r1, ._659 + 28\n" + " mov r0, #0x3f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x6\n" + " mov r0, #0xf1\n" + " strh r0, [r1]\n" + " ldr r0, ._659 + 32\n" + " strh r5, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " ldr r3, ._659 + 36\n" + " ldrh r2, [r3]\n" + " strh r5, [r3]\n" + " ldr r4, ._659 + 40\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r0, ._659 + 44\n" + " bl SetVBlankCallback\n" + " ldr r0, ._659 + 48\n" + " bl SetMainCallback2\n" + " bl sub_809D51C\n" + " ldr r1, ._659 + 52\n" + " ldr r2, ._659 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._659 + 60\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0xa\n" + " mov r2, #0xcd\n" + " lsl r2, r2, #0x6\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._659 + 64\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r1, ._659 + 68\n" + " ldr r0, ._659 + 72\n" + " str r0, [r1]\n" + " ldr r1, ._659 + 76\n" + " strh r1, [r0]\n" + " strb r6, [r0, #0x2]\n" + " strb r6, [r0, #0x3]\n" + " strb r6, [r0, #0x5]\n" + " strb r6, [r0, #0x7]\n" + " strb r6, [r0, #0xa]\n" + " strb r6, [r0, #0x8]\n" + " ldr r4, ._659 + 80\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " ldr r6, ._659 + 84\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " strh r5, [r0, #0x2e]\n" + " mov r1, #0x0\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x2\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._660:\n" + " .align 2, 0\n" + "._659:\n" + " .word byte_83F88EC\n" + " .word 0x600e000\n" + " .word 0x40000d4\n" + " .word 0x80000400\n" + " .word word_83F888C\n" + " .word 0x7fff\n" + " .word 0x4000040\n" + " .word 0x4000048\n" + " .word 0x4000052\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word 0x4000008\n" + " .word 0x1f0b\n" + " .word 0x1e0a\n" + " .word debug_80C6B00+1\n" + " .word unk_debug_ewram_0+0x34\n" + " .word +0x2018000\n" + " .word 0x115\n" + " .word unk_83F8868+0xc\n" + " .word gSprites\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6B00() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xffffffec\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._666\n" + " mov r0, sp\n" + " mov r2, #0x12\n" + " bl memcpy\n" + " mov r0, #0xa\n" + " mov r1, #0x0\n" + " mov r2, #0xf\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x10\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._666 + 4\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._666 + 8\n" + " mov r1, #0x1b\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._666 + 12\n" + " mov r1, #0x11\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0x8\n" + " mov r2, #0x1d\n" + " mov r3, #0xc\n" + " bl MenuDrawTextWindow\n" + " mov r2, #0x0\n" + " ldr r4, ._666 + 16\n" + " ldr r0, ._666 + 20\n" + " add r3, r0, #0\n" + "._661:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._661 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r5, ._666 + 24\n" + " lsl r6, r7, #0x2\n" + " mov r8, r6\n" + " ldr r4, ._666 + 28\n" + " ldr r0, ._666 + 32\n" + " add r3, r0, #0\n" + "._662:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._662 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x14\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0xd\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r1, sp\n" + " mov r0, #0x23\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._666 + 36\n" + " mov r5, #0x93\n" + " lsl r5, r5, #0x8\n" + " add r3, r5, #0\n" + "._663:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._663 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x24\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r5, ._666 + 40\n" + " ldr r4, ._666 + 44\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._664:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._664 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x25\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._666 + 48\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._665:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._665 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._666 + 52\n" + " ldr r2, ._666 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r5, ._666 + 60\n" + " add r0, r5, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._666 + 64\n" + " mov r6, r8\n" + " add r0, r6, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._666 + 68\n" + " str r1, [r0]\n" + " add sp, sp, #0x14\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._667:\n" + " .align 2, 0\n" + "._666:\n" + " .word gUnknown_Debug_083F8815\n" + " .word gUnknown_Debug_083F87D0\n" + " .word gUnknown_Debug_083F87D8\n" + " .word gUnknown_Debug_083F87E0\n" + " .word 0x600fa56\n" + " .word 0xa311\n" + " .word gUnknown_Debug_083F87F4\n" + " .word 0x600f256\n" + " .word 0x8301\n" + " .word 0x600f396\n" + " .word gUnknown_Debug_083F8801\n" + " .word 0x600f3d6\n" + " .word 0x600f416\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gTasks\n" + " .word debug_80C6CB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6CB8() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffff4\n" + " mov sl, r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " ldr r5, ._668\n" + " ldr r4, [r5]\n" + " ldrh r2, [r4]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._668 + 4\n" + " add r0, r0, r1\n" + " ldr r1, ._668 + 8\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r1\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " ldr r3, ._668 + 12\n" + " mov r8, r3\n" + " ldr r6, [r3]\n" + " str r6, [sp, #0x8]\n" + " ldr r3, [r3, #0x4]\n" + " str r3, [sp]\n" + " ldrh r3, [r4]\n" + " str r3, [sp, #0x4]\n" + " add r3, r6, #0\n" + " bl DecompressPicFromTable_2\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r7, ._668 + 16\n" + " add r0, r0, r7\n" + " bl LoadCompressedObjectPalette\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1\n" + " bl GetMonSpriteTemplate_803C56C\n" + " ldr r0, ._668 + 20\n" + " mov r1, #0x28\n" + " mov r2, #0x28\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " ldr r1, [r5]\n" + " strb r0, [r1, #0x2]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._668 + 24\n" + " add r0, r0, r1\n" + " ldr r3, ._668 + 28\n" + " mov r9, r3\n" + " str r3, [r0]\n" + " ldrb r0, [r2, #0x2]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " ldr r6, ._668 + 32\n" + " add r1, r1, r6\n" + " ldrb r2, [r1, #0x5]\n" + " mov r6, #0xd\n" + " neg r6, r6\n" + " add r0, r6, #0\n" + " and r0, r0, r2\n" + " strb r0, [r1, #0x5]\n" + " ldr r4, [r5]\n" + " ldrh r2, [r4]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._668 + 36\n" + " add r0, r0, r1\n" + " ldr r1, ._668 + 40\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r1\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " mov r7, r8\n" + " ldr r3, [r7, #0x8]\n" + " str r3, [sp]\n" + " ldrh r3, [r4]\n" + " str r3, [sp, #0x4]\n" + " ldr r3, [sp, #0x8]\n" + " bl DecompressPicFromTable_2\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._668 + 16\n" + " add r0, r0, r1\n" + " bl LoadCompressedObjectPalette\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x2\n" + " bl GetMonSpriteTemplate_803C56C\n" + " ldr r0, ._668 + 20\n" + " mov r1, #0x28\n" + " mov r2, #0x78\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " ldr r1, [r5]\n" + " strb r0, [r1, #0x3]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r3, ._668 + 24\n" + " add r0, r0, r3\n" + " mov r7, r9\n" + " str r7, [r0]\n" + " ldrb r1, [r2, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._668 + 32\n" + " add r0, r0, r1\n" + " ldrb r1, [r0, #0x5]\n" + " and r6, r6, r1\n" + " strb r6, [r0, #0x5]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " ldr r1, ._668 + 44\n" + " mov r2, #0x0\n" + " str r2, [sp]\n" + " str r2, [sp, #0x4]\n" + " mov r2, #0x68\n" + " mov r3, #0x2c\n" + " bl CreateMonIcon\n" + " ldr r1, [r5]\n" + " strb r0, [r1, #0x4]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " bl SpeciesToNationalPokedexNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r2, #0xff\n" + " lsl r2, r2, #0x2\n" + " mov r1, #0x2\n" + " bl sub_8091738\n" + " ldr r1, ._668 + 48\n" + " ldr r3, ._668 + 52\n" + " add r0, r3, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r6, ._668 + 56\n" + " add r0, r6, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x3e\n" + " ldr r7, ._668 + 60\n" + " add r0, r7, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._668 + 64\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x11\n" + " mov r2, #0x3\n" + " bl debug_80C3800\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1a\n" + " mov r2, #0x5\n" + " bl debug_80C376C\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r3, ._668 + 32\n" + " add r0, r0, r3\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " strb r0, [r2, #0x6]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._668 + 68\n" + " add r0, r0, r4\n" + " ldr r6, ._668 + 72\n" + " add r1, r4, r6\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._668 + 76\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, ._668 + 80\n" + " mov r7, sl\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, sl\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._668 + 84\n" + " str r1, [r0]\n" + " ldr r0, [r5]\n" + " mov r1, #0x0\n" + " strb r1, [r0, #0x9]\n" + " bl StopCryAndClearCrySongs\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x0\n" + " bl PlayCry1\n" + " add sp, sp, #0xc\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._669:\n" + " .align 2, 0\n" + "._668:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gMonFrontPicTable\n" + " .word gMonFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gMonPaletteTable\n" + " .word gUnknown_02024E8C\n" + " .word gSprites+0x1c\n" + " .word debug_69+1\n" + " .word gSprites\n" + " .word gMonBackPicTable\n" + " .word gMonBackPicCoords\n" + " .word sub_809D62C+1\n" + " .word 0x600f858\n" + " .word 0xf3fc\n" + " .word 0xf3fd\n" + " .word 0xf3fe\n" + " .word 0xf3ff\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C6EE8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6EE8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " lsl r6, r6, #0x18\n" + " lsr r6, r6, #0x18\n" + " ldr r4, ._670\n" + " ldr r5, ._670 + 4\n" + " ldr r1, [r5]\n" + " add r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, ._670 + 8\n" + " add r4, r4, r0\n" + " ldr r3, [r5]\n" + " ldrb r0, [r3, #0x7]\n" + " add r0, r0, #0x81\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r4\n" + " ldrh r4, [r0]\n" + " mov r1, #0x1f\n" + " and r1, r1, r4\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x20\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xc]\n" + " ldr r3, [r5]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r4\n" + " ldrh r2, [r3, #0xc]\n" + " ldr r0, ._670 + 12\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strh r0, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x7\n" + " and r1, r1, r4\n" + " lsr r1, r1, #0x8\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7d\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xd]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0xd]\n" + " mov r0, #0x7f\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0xd]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x7]\n" + " add r0, r0, #0x1\n" + " mov r1, #0xb\n" + " mov r2, #0xa\n" + " mov r3, #0x2\n" + " bl debug_80C68CC\n" + " ldr r0, ._670 + 16\n" + " mov r1, #0xd\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._670 + 20\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._670 + 24\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._671:\n" + " .align 2, 0\n" + "._670:\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0xffffff00\n" + " .word 0xfffffc1f\n" + " .word gUnknown_Debug_083F8813\n" + " .word gTasks\n" + " .word debug_80C6FA8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C6FA8() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r1, ._674\n" + " ldrh r2, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " add r4, r1, #0\n" + " cmp r0, #0\n" + " beq ._672 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._674 + 4\n" + " bl SetMainCallback2\n" + " ldr r1, ._674 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._674 + 12\n" + " str r1, [r0]\n" + " b ._703\n" + "._675:\n" + " .align 2, 0\n" + "._674:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._672:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._676 @cond_branch\n" + " ldr r4, ._678\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x0\n" + " b ._677\n" + "._679:\n" + " .align 2, 0\n" + "._678:\n" + " .word unk_debug_ewram_0+0x34\n" + "._676:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._680 @cond_branch\n" + " ldr r4, ._682\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x1\n" + "._677:\n" + " bl debug_80C3878\n" + " ldr r1, [r4]\n" + " strh r0, [r1]\n" + " ldr r1, ._682 + 4\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._682 + 8\n" + " str r1, [r0]\n" + " b ._703\n" + "._683:\n" + " .align 2, 0\n" + "._682:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C71FC+1\n" + "._680:\n" + " mov r3, #0x1\n" + " and r3, r3, r2\n" + " cmp r3, #0\n" + " beq ._684 @cond_branch\n" + " ldr r0, ._686\n" + " ldr r1, [r0]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._686 + 4\n" + " ldr r2, ._686 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._686 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._686 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._686 + 20\n" + " str r1, [r0]\n" + " b ._703\n" + "._687:\n" + " .align 2, 0\n" + "._686:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x4167\n" + " .word gTasks\n" + " .word debug_80C7294+1\n" + "._684:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._689 @cond_branch\n" + " ldr r1, ._691\n" + " ldr r2, [r1]\n" + " ldrb r0, [r2, #0x7]\n" + " cmp r0, #0xd\n" + " bhi ._689 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r2, ._691 + 4\n" + " add r0, r0, r2\n" + " strh r3, [r0]\n" + " ldr r1, [r1]\n" + " ldrb r0, [r1, #0x7]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._695\n" + "._692:\n" + " .align 2, 0\n" + "._691:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000102\n" + "._689:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._694 @cond_branch\n" + " ldr r2, ._696\n" + " ldr r1, [r2]\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0\n" + " beq ._694 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r1, ._696 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r1, [r2]\n" + " ldrb r0, [r1, #0x7]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._695\n" + "._697:\n" + " .align 2, 0\n" + "._696:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000102\n" + "._694:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._698 @cond_branch\n" + " ldr r4, ._701\n" + " ldr r2, [r4]\n" + " ldrb r0, [r2, #0x9]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strb r0, [r2, #0x9]\n" + " ldr r1, [r4]\n" + " ldrb r0, [r1, #0x9]\n" + " cmp r0, #0\n" + " beq ._699 @cond_branch\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " b ._700\n" + "._702:\n" + " .align 2, 0\n" + "._701:\n" + " .word unk_debug_ewram_0+0x34\n" + "._699:\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + "._700:\n" + " ldr r5, ._704\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._704 + 4\n" + " add r0, r0, r4\n" + " ldr r2, ._704 + 8\n" + " add r1, r4, r2\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._704 + 12\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._695:\n" + " ldr r1, ._704 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._704 + 20\n" + " str r1, [r0]\n" + " b ._703\n" + "._705:\n" + " .align 2, 0\n" + "._704:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C6EE8+1\n" + "._698:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._706 @cond_branch\n" + " bl StopCryAndClearCrySongs\n" + " ldr r0, ._707\n" + " ldr r0, [r0]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x0\n" + " bl PlayCry1\n" + "._706:\n" + " ldr r2, ._707\n" + " ldr r1, [r2]\n" + " ldrb r0, [r1, #0x8]\n" + " add r0, r0, #0x4\n" + " strb r0, [r1, #0x8]\n" + " ldr r3, [r2]\n" + " ldrb r1, [r3, #0x8]\n" + " mov r0, #0x1f\n" + " and r0, r0, r1\n" + " strb r0, [r3, #0x8]\n" + " ldr r0, [r2]\n" + " ldrb r1, [r0, #0x7]\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._707 + 4\n" + " add r1, r1, r2\n" + " ldr r2, ._707 + 8\n" + " ldrb r0, [r0, #0x8]\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + "._703:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._708:\n" + " .align 2, 0\n" + "._707:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000142\n" + " .word gUnknown_Debug_083F8790\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C71FC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r6, ._709\n" + " ldr r4, ._709 + 4\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x4]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl sub_809D510\n" + " ldr r1, ._709 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._709 + 12\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._710:\n" + " .align 2, 0\n" + "._709:\n" + " .word gSprites\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C6CB8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7294() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r0, ._713\n" + " ldrh r2, [r0, #0x2e]\n" + " mov r1, #0x1\n" + " and r1, r1, r2\n" + " add r3, r0, #0\n" + " cmp r1, #0\n" + " beq ._711 @cond_branch\n" + " ldr r0, ._713 + 4\n" + " ldr r1, [r0]\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._713 + 8\n" + " ldr r2, ._713 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._713 + 16\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " b ._712\n" + "._714:\n" + " .align 2, 0\n" + "._713:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + "._711:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._715 @cond_branch\n" + " ldr r6, ._717\n" + " ldr r0, [r6]\n" + " strb r1, [r0, #0x5]\n" + " ldr r1, ._717 + 4\n" + " ldr r2, ._717 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._717 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r4, ._717 + 16\n" + " add r1, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r5, ._717 + 20\n" + " add r1, r5, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r4, r4, r2\n" + " add r1, r1, r4\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r5, r5, r2\n" + " add r1, r1, r5\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._712:\n" + " ldr r1, ._717 + 24\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._717 + 28\n" + " str r1, [r0]\n" + " b ._754\n" + "._718:\n" + " .align 2, 0\n" + "._717:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C6EE8+1\n" + "._715:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._720 @cond_branch\n" + " ldr r0, ._722\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0x1\n" + " bhi ._720 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._754\n" + "._723:\n" + " .align 2, 0\n" + "._722:\n" + " .word unk_debug_ewram_0+0x34\n" + "._720:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._725 @cond_branch\n" + " ldr r0, ._727\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0\n" + " beq ._725 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._754\n" + "._728:\n" + " .align 2, 0\n" + "._727:\n" + " .word unk_debug_ewram_0+0x34\n" + "._725:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._729 @cond_branch\n" + " ldr r0, ._734\n" + " ldr r2, [r0]\n" + " ldrb r0, [r2, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._730 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._731 @cond_branch\n" + " cmp r0, #0\n" + " beq ._732 @cond_branch\n" + " b ._754\n" + "._735:\n" + " .align 2, 0\n" + "._734:\n" + " .word unk_debug_ewram_0+0x34\n" + "._731:\n" + " cmp r0, #0x2\n" + " beq ._736 @cond_branch\n" + " b ._754\n" + "._732:\n" + " ldrb r3, [r2, #0xc]\n" + " lsl r1, r3, #0x1b\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._761 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xc]\n" + " b ._761\n" + "._730:\n" + " ldrh r3, [r2, #0xc]\n" + " lsl r1, r3, #0x16\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._761 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._742\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xc]\n" + " b ._761\n" + "._743:\n" + " .align 2, 0\n" + "._742:\n" + " .word 0xfffffc1f\n" + "._736:\n" + " ldrb r3, [r2, #0xd]\n" + " lsl r1, r3, #0x19\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._761 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xd]\n" + " b ._761\n" + "._729:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._754 @cond_branch\n" + " ldr r0, ._751\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._747 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._748 @cond_branch\n" + " cmp r0, #0\n" + " beq ._749 @cond_branch\n" + " b ._754\n" + "._752:\n" + " .align 2, 0\n" + "._751:\n" + " .word unk_debug_ewram_0+0x34\n" + "._748:\n" + " cmp r0, #0x2\n" + " beq ._753 @cond_branch\n" + " b ._754\n" + "._749:\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x1f\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._761 @cond_branch\n" + " lsl r0, r2, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xc]\n" + " b ._761\n" + "._747:\n" + " ldrh r2, [r3, #0xc]\n" + " mov r0, #0xf8\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._761 @cond_branch\n" + " lsl r0, r2, #0x16\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._759\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strh r1, [r3, #0xc]\n" + " b ._761\n" + "._760:\n" + " .align 2, 0\n" + "._759:\n" + " .word 0xfffffc1f\n" + "._753:\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7c\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._761 @cond_branch\n" + " lsl r0, r2, #0x19\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xd]\n" + "._761:\n" + " ldr r0, ._762\n" + " lsl r1, r7, #0x2\n" + " add r1, r1, r7\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._762 + 4\n" + " str r0, [r1]\n" + "._754:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._763:\n" + " .align 2, 0\n" + "._762:\n" + " .word gTasks\n" + " .word debug_80C74E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C74E4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r0, ._764\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xc]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " ldrh r2, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r2\n" + " add r0, r0, r1\n" + " ldrb r1, [r3, #0xd]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1b\n" + " lsl r1, r1, #0xa\n" + " add r0, r0, r1\n" + " ldr r6, ._764 + 4\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldr r1, ._764 + 8\n" + " mov r8, r1\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " ldr r4, ._764 + 12\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._764 + 16\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._764 + 20\n" + " str r1, [r0]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._765:\n" + " .align 2, 0\n" + "._764:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded\n" + " .word gPlttBufferFaded\n" + " .word 0x101\n" + " .word gTasks\n" + " .word debug_80C7294+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7584() +{ + asm( + " push {r4, lr}\n" + " add r2, r0, #0\n" + " ldr r0, ._771\n" + " ldr r3, [r0]\n" + " ldrb r1, [r3, #0x5]\n" + " add r4, r0, #0\n" + " cmp r1, #0\n" + " beq ._766 @cond_branch\n" + " mov r1, #0x2e\n" + " ldsh r0, [r2, r1]\n" + " cmp r0, #0x1\n" + " beq ._767 @cond_branch\n" + " cmp r0, #0x1\n" + " ble ._768 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._769 @cond_branch\n" + "._768:\n" + " ldrb r0, [r3, #0xc]\n" + " lsl r0, r0, #0x1b\n" + " b ._773\n" + "._772:\n" + " .align 2, 0\n" + "._771:\n" + " .word unk_debug_ewram_0+0x34\n" + "._767:\n" + " ldrh r0, [r3, #0xc]\n" + " lsl r0, r0, #0x16\n" + " b ._773\n" + "._769:\n" + " ldrb r0, [r3, #0xd]\n" + " lsl r0, r0, #0x19\n" + "._773:\n" + " lsr r0, r0, #0x1b\n" + " lsl r0, r0, #0x2\n" + " strh r0, [r2, #0x24]\n" + " mov r1, #0x2e\n" + " ldsh r0, [r2, r1]\n" + " lsl r0, r0, #0x3\n" + " strh r0, [r2, #0x26]\n" + " ldrh r0, [r2, #0x30]\n" + " add r3, r0, #1\n" + " strh r3, [r2, #0x30]\n" + " mov r0, #0x2e\n" + " ldsh r1, [r2, r0]\n" + " ldr r0, [r4]\n" + " ldrb r0, [r0, #0xa]\n" + " cmp r1, r0\n" + " bne ._775 @cond_branch\n" + " mov r0, #0x8\n" + " and r3, r3, r0\n" + " cmp r3, #0\n" + " bne ._775 @cond_branch\n" + "._766:\n" + " add r0, r2, #0\n" + " add r0, r0, #0x3e\n" + " ldrb r1, [r0]\n" + " mov r2, #0x4\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + " b ._776\n" + "._775:\n" + " add r2, r2, #0x3e\n" + " ldrb r1, [r2]\n" + " mov r0, #0x5\n" + " neg r0, r0\n" + " and r0, r0, r1\n" + " strb r0, [r2]\n" + "._776:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void InitSeeTrainers() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " bl debug_80C35DC\n" + " ldr r1, ._777\n" + " ldr r2, ._777 + 4\n" + " ldr r0, ._777 + 8\n" + " str r1, [r0]\n" + " str r2, [r0, #0x4]\n" + " ldr r1, ._777 + 12\n" + " str r1, [r0, #0x8]\n" + " ldr r0, [r0, #0x8]\n" + " ldr r0, ._777 + 16\n" + " mov r1, #0x80\n" + " mov r2, #0x60\n" + " bl LoadPalette\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r5, #0x0\n" + " str r5, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._777 + 20\n" + " mov r6, #0x0\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r5, [r0]\n" + " add r0, r0, #0x4\n" + " strh r5, [r0]\n" + " ldr r1, ._777 + 24\n" + " mov r0, #0x3f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " mov r0, #0x1f\n" + " strh r0, [r1]\n" + " add r1, r1, #0x6\n" + " mov r0, #0xf1\n" + " strh r0, [r1]\n" + " ldr r0, ._777 + 28\n" + " strh r5, [r0]\n" + " add r1, r1, #0x4\n" + " mov r0, #0x7\n" + " strh r0, [r1]\n" + " ldr r3, ._777 + 32\n" + " ldrh r2, [r3]\n" + " strh r5, [r3]\n" + " ldr r4, ._777 + 36\n" + " ldrh r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strh r0, [r4]\n" + " strh r2, [r3]\n" + " ldr r0, ._777 + 40\n" + " bl SetVBlankCallback\n" + " ldr r0, ._777 + 44\n" + " bl SetMainCallback2\n" + " ldr r1, ._777 + 48\n" + " ldr r2, ._777 + 52\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._777 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0xa\n" + " mov r2, #0xcd\n" + " lsl r2, r2, #0x6\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, ._777 + 60\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r1, ._777 + 64\n" + " ldr r0, ._777 + 68\n" + " str r0, [r1]\n" + " strh r5, [r0]\n" + " strb r6, [r0, #0x2]\n" + " strb r6, [r0, #0x3]\n" + " strb r6, [r0, #0x5]\n" + " strb r6, [r0, #0x7]\n" + " strb r6, [r0, #0xa]\n" + " strb r6, [r0, #0x8]\n" + " ldr r4, ._777 + 72\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " ldr r6, ._777 + 76\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " strh r5, [r0, #0x2e]\n" + " mov r1, #0x0\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add r0, r4, #0\n" + " mov r1, #0x6c\n" + " mov r2, #0x74\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " mov r1, #0x2\n" + " strh r1, [r0, #0x2e]\n" + " bl StartSpriteAnim\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._778:\n" + " .align 2, 0\n" + "._777:\n" + " .word byte_83F88EC\n" + " .word 0x600e000\n" + " .word 0x40000d4\n" + " .word 0x80000400\n" + " .word word_83F888C\n" + " .word 0x4000040\n" + " .word 0x4000048\n" + " .word 0x4000052\n" + " .word 0x4000208\n" + " .word 0x4000200\n" + " .word debug_80C3758+1\n" + " .word debug_80C370C+1\n" + " .word 0x4000008\n" + " .word 0x1f0b\n" + " .word 0x1e0a\n" + " .word debug_80C777C+1\n" + " .word unk_debug_ewram_0+0x34\n" + " .word +0x2018000\n" + " .word unk_83F8868+0xc\n" + " .word gSprites\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C777C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xffffffec\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._784\n" + " mov r0, sp\n" + " mov r2, #0x12\n" + " bl memcpy\n" + " mov r0, #0x9\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x9\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x0\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0xe\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._784 + 4\n" + " mov r1, #0xf\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._784 + 8\n" + " mov r1, #0x19\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._784 + 12\n" + " mov r1, #0xf\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0x8\n" + " mov r2, #0x1d\n" + " mov r3, #0xc\n" + " bl MenuDrawTextWindow\n" + " mov r2, #0x0\n" + " ldr r4, ._784 + 16\n" + " ldr r0, ._784 + 20\n" + " add r3, r0, #0\n" + "._779:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._779 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r5, ._784 + 24\n" + " lsl r6, r7, #0x2\n" + " mov r8, r6\n" + " ldr r4, ._784 + 28\n" + " ldr r0, ._784 + 32\n" + " add r3, r0, #0\n" + "._780:\n" + " lsl r0, r2, #0x1\n" + " add r0, r0, r4\n" + " add r1, r2, r3\n" + " strh r1, [r0]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0xe\n" + " bls ._780 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x14\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " mov r0, #0xa\n" + " mov r1, #0xd\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r1, sp\n" + " mov r0, #0x23\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._784 + 36\n" + " mov r5, #0x93\n" + " lsl r5, r5, #0x8\n" + " add r3, r5, #0\n" + "._781:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._781 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x24\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r5, ._784 + 40\n" + " ldr r4, ._784 + 44\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._782:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._782 @cond_branch\n" + " mov r1, sp\n" + " mov r0, #0x25\n" + " strb r0, [r1]\n" + " mov r2, #0x0\n" + " ldr r4, ._784 + 48\n" + " mov r0, #0x93\n" + " lsl r0, r0, #0x8\n" + " add r3, r0, #0\n" + "._783:\n" + " lsl r1, r2, #0x1\n" + " add r1, r1, r4\n" + " mov r6, sp\n" + " add r0, r6, r2\n" + " ldrb r0, [r0]\n" + " add r0, r0, r3\n" + " strh r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x11\n" + " bls ._783 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._784 + 52\n" + " ldr r2, ._784 + 56\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r5, ._784 + 60\n" + " add r0, r5, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._784 + 64\n" + " mov r6, r8\n" + " add r0, r6, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._784 + 68\n" + " str r1, [r0]\n" + " add sp, sp, #0x14\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._785:\n" + " .align 2, 0\n" + "._784:\n" + " .word gUnknown_Debug_083F8815\n" + " .word gUnknown_Debug_083F87D0\n" + " .word gUnknown_Debug_083F87D8\n" + " .word gUnknown_Debug_083F87E0\n" + " .word 0x600fa56\n" + " .word 0xa311\n" + " .word gUnknown_Debug_083F87F4\n" + " .word 0x600f256\n" + " .word 0x8301\n" + " .word 0x600f396\n" + " .word gUnknown_Debug_083F8801\n" + " .word 0x600f3d6\n" + " .word 0x600f416\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gTasks\n" + " .word debug_80C7934+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7934() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xfffffff8\n" + " mov r8, r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " ldr r5, ._786\n" + " ldr r6, [r5]\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " ldr r1, ._786 + 4\n" + " add r0, r0, r1\n" + " ldr r1, ._786 + 8\n" + " lsl r2, r2, #0x2\n" + " add r2, r2, r1\n" + " ldrb r1, [r2]\n" + " ldrb r2, [r2, #0x1]\n" + " ldr r4, ._786 + 12\n" + " ldr r3, [r4]\n" + " ldr r4, [r4, #0x4]\n" + " str r4, [sp]\n" + " ldrh r4, [r6]\n" + " str r4, [sp, #0x4]\n" + " bl DecompressPicFromTable_2\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._786 + 16\n" + " add r0, r0, r1\n" + " bl LoadCompressedObjectPalette\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1\n" + " bl GetMonSpriteTemplate_803C5A0\n" + " ldr r0, ._786 + 20\n" + " mov r1, #0x28\n" + " mov r2, #0x28\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " ldr r1, [r5]\n" + " mov r6, #0x0\n" + " strb r0, [r1, #0x2]\n" + " ldr r4, ._786 + 24\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r1, r4, #0\n" + " add r1, r1, #0x1c\n" + " add r0, r0, r1\n" + " ldr r1, ._786 + 28\n" + " str r1, [r0]\n" + " ldrb r0, [r2, #0x2]\n" + " lsl r1, r0, #0x4\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r4\n" + " ldrb r2, [r1, #0x5]\n" + " mov r0, #0xd\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r1, #0x5]\n" + " ldr r0, [r5]\n" + " ldrh r0, [r0]\n" + " mov r1, #0x1a\n" + " mov r2, #0x5\n" + " bl debug_80C376C\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r4\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " strb r0, [r2, #0x6]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._786 + 32\n" + " add r0, r0, r4\n" + " ldr r2, ._786 + 36\n" + " add r1, r4, r2\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._786 + 40\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, ._786 + 44\n" + " mov r2, r8\n" + " lsl r0, r2, #0x2\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._786 + 48\n" + " str r1, [r0]\n" + " ldr r0, [r5]\n" + " strb r6, [r0, #0x9]\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._787:\n" + " .align 2, 0\n" + "._786:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTrainerFrontPicTable\n" + " .word gTrainerFrontPicCoords\n" + " .word gUnknown_081FAF4C\n" + " .word gTrainerFrontPicPaletteTable\n" + " .word gUnknown_02024E8C\n" + " .word gSprites\n" + " .word debug_69+1\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C7A54+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7A54() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " lsl r6, r6, #0x18\n" + " lsr r6, r6, #0x18\n" + " ldr r4, ._788\n" + " ldr r5, ._788 + 4\n" + " ldr r1, [r5]\n" + " add r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, ._788 + 8\n" + " add r4, r4, r0\n" + " ldr r3, [r5]\n" + " ldrb r0, [r3, #0x7]\n" + " add r0, r0, #0x81\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r4\n" + " ldrh r4, [r0]\n" + " mov r1, #0x1f\n" + " and r1, r1, r4\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x20\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xc]\n" + " ldr r3, [r5]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r4\n" + " ldrh r2, [r3, #0xc]\n" + " ldr r0, ._788 + 12\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strh r0, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x7\n" + " and r1, r1, r4\n" + " lsr r1, r1, #0x8\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7d\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r3, #0xd]\n" + " ldr r2, [r5]\n" + " ldrb r1, [r2, #0xd]\n" + " mov r0, #0x7f\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0xd]\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x7]\n" + " add r0, r0, #0x1\n" + " mov r1, #0xb\n" + " mov r2, #0xa\n" + " mov r3, #0x2\n" + " bl debug_80C68CC\n" + " ldr r0, ._788 + 16\n" + " mov r1, #0xd\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._788 + 20\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._788 + 24\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._789:\n" + " .align 2, 0\n" + "._788:\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0xffffff00\n" + " .word 0xfffffc1f\n" + " .word gUnknown_Debug_083F8813\n" + " .word gTasks\n" + " .word debug_80C7B14+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7B14() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r1, ._792\n" + " ldrh r3, [r1, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r3\n" + " add r4, r1, #0\n" + " cmp r0, #0\n" + " beq ._790 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._792 + 4\n" + " bl SetMainCallback2\n" + " ldr r1, ._792 + 8\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._792 + 12\n" + " str r1, [r0]\n" + " b ._821\n" + "._793:\n" + " .align 2, 0\n" + "._792:\n" + " .word gMain\n" + " .word debug_80C370C+1\n" + " .word gTasks\n" + " .word debug_80C373C+1\n" + "._790:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._794 @cond_branch\n" + " ldr r4, ._796\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x0\n" + " b ._795\n" + "._797:\n" + " .align 2, 0\n" + "._796:\n" + " .word unk_debug_ewram_0+0x34\n" + "._794:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._798 @cond_branch\n" + " ldr r4, ._800\n" + " ldr r0, [r4]\n" + " ldrh r1, [r0]\n" + " mov r0, #0x1\n" + "._795:\n" + " bl debug_80C38B4\n" + " ldr r1, [r4]\n" + " strh r0, [r1]\n" + " ldr r1, ._800 + 4\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._800 + 8\n" + " str r1, [r0]\n" + " b ._821\n" + "._801:\n" + " .align 2, 0\n" + "._800:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C7D44+1\n" + "._798:\n" + " mov r2, #0x1\n" + " and r2, r2, r3\n" + " cmp r2, #0\n" + " beq ._802 @cond_branch\n" + " ldr r0, ._804\n" + " ldr r1, [r0]\n" + " mov r0, #0x1\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._804 + 4\n" + " ldr r2, ._804 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._804 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r1, ._804 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._804 + 20\n" + " str r1, [r0]\n" + " b ._821\n" + "._805:\n" + " .align 2, 0\n" + "._804:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x4167\n" + " .word gTasks\n" + " .word debug_80C7DDC+1\n" + "._802:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " ldr r3, ._809\n" + " cmp r0, #0\n" + " beq ._807 @cond_branch\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0xd\n" + " bhi ._807 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r1, ._809 + 4\n" + " add r0, r0, r1\n" + " strh r2, [r0]\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._813\n" + "._810:\n" + " .align 2, 0\n" + "._809:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x5000102\n" + "._807:\n" + " ldrh r1, [r4, #0x30]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._812 @cond_branch\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " cmp r0, #0\n" + " beq ._812 @cond_branch\n" + " lsl r0, r0, #0x1\n" + " ldr r2, ._814\n" + " add r0, r0, r2\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x7]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x7]\n" + " b ._813\n" + "._815:\n" + " .align 2, 0\n" + "._814:\n" + " .word 0x5000102\n" + "._812:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._816 @cond_branch\n" + " ldr r4, ._819\n" + " ldr r2, [r4]\n" + " ldrb r0, [r2, #0x9]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strb r0, [r2, #0x9]\n" + " ldr r1, [r4]\n" + " ldrb r0, [r1, #0x9]\n" + " cmp r0, #0\n" + " beq ._817 @cond_branch\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + " b ._818\n" + "._820:\n" + " .align 2, 0\n" + "._819:\n" + " .word unk_debug_ewram_0+0x34\n" + "._817:\n" + " ldrh r0, [r1]\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " bl species_and_otid_get_pal\n" + " ldr r1, [r4]\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x14\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x11\n" + " add r1, r1, r2\n" + " lsr r1, r1, #0x10\n" + " mov r2, #0x20\n" + " bl LoadCompressedPalette\n" + "._818:\n" + " ldr r5, ._822\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " ldr r4, ._822 + 4\n" + " add r0, r0, r4\n" + " ldr r2, ._822 + 8\n" + " add r1, r4, r2\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r5]\n" + " ldrb r0, [r0, #0x6]\n" + " lsl r0, r0, #0x5\n" + " add r0, r0, r4\n" + " ldr r1, ._822 + 12\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._813:\n" + " ldr r1, ._822 + 16\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._822 + 20\n" + " str r1, [r0]\n" + " b ._821\n" + "._823:\n" + " .align 2, 0\n" + "._822:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded+0x200\n" + " .word 0xffffff00\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C7A54+1\n" + "._816:\n" + " ldr r1, [r3]\n" + " ldrb r0, [r1, #0x8]\n" + " add r0, r0, #0x4\n" + " strb r0, [r1, #0x8]\n" + " ldr r2, [r3]\n" + " ldrb r1, [r2, #0x8]\n" + " mov r0, #0x1f\n" + " and r0, r0, r1\n" + " strb r0, [r2, #0x8]\n" + " ldr r0, [r3]\n" + " ldrb r1, [r0, #0x7]\n" + " lsl r1, r1, #0x1\n" + " ldr r2, ._824\n" + " add r1, r1, r2\n" + " ldr r2, ._824 + 4\n" + " ldrb r0, [r0, #0x8]\n" + " lsl r0, r0, #0x1\n" + " add r0, r0, r2\n" + " ldrh r0, [r0]\n" + " strh r0, [r1]\n" + "._821:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._825:\n" + " .align 2, 0\n" + "._824:\n" + " .word 0x5000142\n" + " .word gUnknown_Debug_083F8790\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7D44() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r6, ._826\n" + " ldr r4, ._826 + 4\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x2]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldrb r0, [r0, #0x5]\n" + " lsr r0, r0, #0x4\n" + " bl GetSpritePaletteTagByPaletteNum\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl FreeSpritePaletteByTag\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x3]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl DestroySprite\n" + " ldr r0, [r4]\n" + " ldrb r1, [r0, #0x4]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " bl sub_809D510\n" + " ldr r1, ._826 + 8\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._826 + 12\n" + " str r1, [r0]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._827:\n" + " .align 2, 0\n" + "._826:\n" + " .word gSprites\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gTasks\n" + " .word debug_80C7934+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C7DDC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r0, ._830\n" + " ldrh r2, [r0, #0x2e]\n" + " mov r1, #0x1\n" + " and r1, r1, r2\n" + " add r3, r0, #0\n" + " cmp r1, #0\n" + " beq ._828 @cond_branch\n" + " ldr r0, ._830 + 4\n" + " ldr r1, [r0]\n" + " mov r0, #0x0\n" + " strb r0, [r1, #0x5]\n" + " ldr r1, ._830 + 8\n" + " ldr r2, ._830 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._830 + 16\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " b ._829\n" + "._831:\n" + " .align 2, 0\n" + "._830:\n" + " .word gMain\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + "._828:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._832 @cond_branch\n" + " ldr r6, ._834\n" + " ldr r0, [r6]\n" + " strb r1, [r0, #0x5]\n" + " ldr r1, ._834 + 4\n" + " ldr r2, ._834 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x4\n" + " ldr r2, ._834 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r4, ._834 + 16\n" + " add r1, r4, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r0, [r6]\n" + " add r0, r0, #0x10\n" + " ldr r5, ._834 + 20\n" + " add r1, r5, #0\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r4, r4, r2\n" + " add r1, r1, r4\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + " ldr r1, [r6]\n" + " add r0, r1, #0\n" + " add r0, r0, #0x10\n" + " ldrb r1, [r1, #0x6]\n" + " lsl r1, r1, #0x5\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r5, r5, r2\n" + " add r1, r1, r5\n" + " mov r2, #0x10\n" + " bl CpuSet\n" + "._829:\n" + " ldr r1, ._834 + 24\n" + " lsl r0, r7, #0x2\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._834 + 28\n" + " str r1, [r0]\n" + " b ._871\n" + "._835:\n" + " .align 2, 0\n" + "._834:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word 0x4000040\n" + " .word 0x51ef\n" + " .word 0x699f\n" + " .word gPlttBufferUnfaded+0x100\n" + " .word gPlttBufferFaded+0x100\n" + " .word gTasks\n" + " .word debug_80C7A54+1\n" + "._832:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._837 @cond_branch\n" + " ldr r0, ._839\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0x1\n" + " bhi ._837 @cond_branch\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._871\n" + "._840:\n" + " .align 2, 0\n" + "._839:\n" + " .word unk_debug_ewram_0+0x34\n" + "._837:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._842 @cond_branch\n" + " ldr r0, ._844\n" + " ldr r1, [r0]\n" + " ldrb r0, [r1, #0xa]\n" + " cmp r0, #0\n" + " beq ._842 @cond_branch\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0xa]\n" + " b ._871\n" + "._845:\n" + " .align 2, 0\n" + "._844:\n" + " .word unk_debug_ewram_0+0x34\n" + "._842:\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._846 @cond_branch\n" + " ldr r0, ._851\n" + " ldr r2, [r0]\n" + " ldrb r0, [r2, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._847 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._848 @cond_branch\n" + " cmp r0, #0\n" + " beq ._849 @cond_branch\n" + " b ._871\n" + "._852:\n" + " .align 2, 0\n" + "._851:\n" + " .word unk_debug_ewram_0+0x34\n" + "._848:\n" + " cmp r0, #0x2\n" + " beq ._853 @cond_branch\n" + " b ._871\n" + "._849:\n" + " ldrb r3, [r2, #0xc]\n" + " lsl r1, r3, #0x1b\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._878 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xc]\n" + " b ._878\n" + "._847:\n" + " ldrh r3, [r2, #0xc]\n" + " lsl r1, r3, #0x16\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._878 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._859\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strh r1, [r2, #0xc]\n" + " b ._878\n" + "._860:\n" + " .align 2, 0\n" + "._859:\n" + " .word 0xfffffc1f\n" + "._853:\n" + " ldrb r3, [r2, #0xd]\n" + " lsl r1, r3, #0x19\n" + " lsr r0, r1, #0x1b\n" + " cmp r0, #0x1e\n" + " bhi ._878 @cond_branch\n" + " add r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r3\n" + " orr r1, r1, r0\n" + " strb r1, [r2, #0xd]\n" + " b ._878\n" + "._846:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._871 @cond_branch\n" + " ldr r0, ._868\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xa]\n" + " cmp r0, #0x1\n" + " beq ._864 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._865 @cond_branch\n" + " cmp r0, #0\n" + " beq ._866 @cond_branch\n" + " b ._871\n" + "._869:\n" + " .align 2, 0\n" + "._868:\n" + " .word unk_debug_ewram_0+0x34\n" + "._865:\n" + " cmp r0, #0x2\n" + " beq ._870 @cond_branch\n" + " b ._871\n" + "._866:\n" + " ldrb r2, [r3, #0xc]\n" + " mov r0, #0x1f\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._878 @cond_branch\n" + " lsl r0, r2, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " mov r1, #0x20\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xc]\n" + " b ._878\n" + "._864:\n" + " ldrh r2, [r3, #0xc]\n" + " mov r0, #0xf8\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._878 @cond_branch\n" + " lsl r0, r2, #0x16\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x5\n" + " ldr r1, ._876\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strh r1, [r3, #0xc]\n" + " b ._878\n" + "._877:\n" + " .align 2, 0\n" + "._876:\n" + " .word 0xfffffc1f\n" + "._870:\n" + " ldrb r2, [r3, #0xd]\n" + " mov r0, #0x7c\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._878 @cond_branch\n" + " lsl r0, r2, #0x19\n" + " lsr r0, r0, #0x1b\n" + " sub r0, r0, #0x1\n" + " mov r1, #0x1f\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, #0x7d\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r3, #0xd]\n" + "._878:\n" + " ldr r0, ._879\n" + " lsl r1, r7, #0x2\n" + " add r1, r1, r7\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " ldr r0, ._879 + 4\n" + " str r0, [r1]\n" + "._871:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._880:\n" + " .align 2, 0\n" + "._879:\n" + " .word gTasks\n" + " .word debug_80C802C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_80C802C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r0, ._881\n" + " ldr r3, [r0]\n" + " ldrb r0, [r3, #0xc]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1b\n" + " ldrh r2, [r3, #0xc]\n" + " mov r1, #0xf8\n" + " lsl r1, r1, #0x2\n" + " and r1, r1, r2\n" + " add r0, r0, r1\n" + " ldrb r1, [r3, #0xd]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1b\n" + " lsl r1, r1, #0xa\n" + " add r0, r0, r1\n" + " ldr r6, ._881 + 4\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldr r1, ._881 + 8\n" + " mov r8, r1\n" + " ldrb r1, [r3, #0x7]\n" + " add r1, r1, #0x81\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " ldr r4, ._881 + 12\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r6\n" + " strh r0, [r1]\n" + " ldrb r1, [r3, #0x6]\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r3, #0x7]\n" + " add r2, r2, r4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x1\n" + " add r1, r1, r8\n" + " strh r0, [r1]\n" + " mov r1, #0xe\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl debug_80C68CC\n" + " ldr r1, ._881 + 16\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._881 + 20\n" + " str r1, [r0]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._882:\n" + " .align 2, 0\n" + "._881:\n" + " .word unk_debug_ewram_0+0x34\n" + " .word gPlttBufferUnfaded\n" + " .word gPlttBufferFaded\n" + " .word 0x101\n" + " .word gTasks\n" + " .word debug_80C7DDC+1\n" + "\n" + ); +} + +#endif diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 44d832e2b..03a64afc6 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -360,6 +360,10 @@ void sub_80831F8(u8 taskId) || sub_8082DF4(taskId) == TRUE) return; +#ifdef DEBUG + sub_8082D60(taskId, GetLinkPlayerCount_2()); +#endif + gSpecialVar_Result = sub_8082D9C(local1, local2); if (gSpecialVar_Result == 0) return; diff --git a/src/engine/clock.c b/src/engine/clock.c index 416aaa6bb..fceccdfcb 100644 --- a/src/engine/clock.c +++ b/src/engine/clock.c @@ -13,12 +13,11 @@ #include "tv.h" #include "wallclock.h" -static void InitTimeBasedEvents(void); static void UpdatePerDay(struct Time *time); static void UpdatePerMinute(struct Time *time); static void ReturnFromStartWallClock(void); -static void InitTimeBasedEvents(void) +void InitTimeBasedEvents(void) { FlagSet(FLAG_SYS_CLOCK_SET); RtcCalcLocalTime(); diff --git a/src/engine/link.c b/src/engine/link.c index 34016d607..502715116 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -1,4 +1,5 @@ #include "global.h" +#include "cable_club.h" #include "link.h" #include "battle.h" #include "berry.h" @@ -543,6 +544,9 @@ static void ProcessRecvCmds(u8 unusedParam) else { SetBlockReceivedFlag(i); +#ifdef DEBUG + debug_sub_808B838(i); +#endif } } break; @@ -975,6 +979,143 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits) } } +#ifdef DEBUG + +EWRAM_DATA u16 *debugCharacterBase = NULL; +EWRAM_DATA void *unk_20238C8 = NULL; +EWRAM_DATA u16 (*debugTileMap)[] = NULL; +EWRAM_DATA u32 unk_20238D0 = 0; + +void debug_sub_8008218(u16 *buffer, void *arg1, u16 (*arg2)[], u32 arg3) +{ + CpuSet(sLinkTestDigitTiles, buffer, 272); + debugCharacterBase = buffer; + unk_20238C8 = arg1; + debugTileMap = arg2; + unk_20238D0 = arg3; +} + +#ifdef NONMATCHING +void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) +{ + u32 buffer[8]; + u32 *ptr; + + u16 *dest; + + int i; + + if (unk_20238D0 != sp0) + return; + + r3 = max(r3, 8); + + ptr = &buffer[0]; + dest = &(*debugTileMap)[left + top * 32]; + + for (i = r3; i != 0; i--) + { + *(ptr++) = value & 0xF; + value = value >> 4; + } + + ptr = &buffer[8 - r3]; + for (i = r3; i != 0; i--) + { + int charOffset = (((uintptr_t) debugCharacterBase) - ((uintptr_t) unk_20238C8)) / 32; + *dest = *ptr + charOffset + 1; + ptr--; + dest++; + } +} +#else +__attribute__((naked)) +void debug_sub_8008264() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xffffffe0\n" + " add r5, r0, #0\n" + " add r6, r1, #0\n" + " add r4, r3, #0\n" + " ldr r0, [sp, #0x38]\n" + " ldr r1, ._347\n" + " ldr r1, [r1]\n" + " cmp r1, r0\n" + " bne ._345 @cond_branch\n" + " cmp r4, #0x8\n" + " ble ._342 @cond_branch\n" + " mov r4, #0x8\n" + "._342:\n" + " mov r3, sp\n" + " ldr r0, ._347 + 4\n" + " mov r8, r0\n" + " lsl r2, r2, #0x6\n" + " mov ip, r2\n" + " lsl r6, r6, #0x1\n" + " lsl r7, r4, #0x2\n" + " cmp r4, #0\n" + " ble ._343 @cond_branch\n" + " mov r1, #0xf\n" + " add r2, r4, #0\n" + "._344:\n" + " add r0, r5, #0\n" + " and r0, r0, r1\n" + " stmia r3!, {r0}\n" + " lsr r5, r5, #0x4\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bne ._344 @cond_branch\n" + "._343:\n" + " mov r1, r8\n" + " ldr r0, [r1]\n" + " add r0, r0, ip\n" + " add r5, r0, r6\n" + " mov r1, sp\n" + " add r0, r1, r7\n" + " sub r3, r0, #4\n" + " cmp r4, #0\n" + " ble ._345 @cond_branch\n" + " ldr r7, ._347 + 8\n" + " ldr r6, ._347 + 12\n" + " add r2, r4, #0\n" + "._346:\n" + " ldr r1, [r7]\n" + " ldr r0, [r6]\n" + " sub r1, r1, r0\n" + " lsr r1, r1, #0x5\n" + " ldr r0, [r3]\n" + " add r0, r0, r1\n" + " add r0, r0, #0x1\n" + " strh r0, [r5]\n" + " sub r3, r3, #0x4\n" + " add r5, r5, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bne ._346 @cond_branch\n" + "._345:\n" + " add sp, sp, #0x20\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._348:\n" + " .align 2, 0\n" + "._347:\n" + " .word unk_20238D0\n" + " .word debugTileMap\n" + " .word debugCharacterBase\n" + " .word unk_20238C8\n" + "\n" + ); +} +#endif + +#endif + static void LinkCB_RequestPlayerDataExchange(void) { // Only one request needs to be sent, so only the master sends it. diff --git a/src/engine/rtc.c b/src/engine/rtc.c index d73f943d2..a56fcd44e 100644 --- a/src/engine/rtc.c +++ b/src/engine/rtc.c @@ -268,6 +268,28 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day) *dest = EOS; } +#ifdef DEBUG + +void debug_sub_800987C(u8 *dest) +{ + FormatHexDate(dest, sRtc.year, sRtc.month, sRtc.day); +} + +void debug_sub_8009894(u8 *dest) +{ + u16 dayCount; + + dayCount = RtcGetDayCount(&sRtc); + ConvertIntToDecimalStringN(dest, dayCount, STR_CONV_MODE_RIGHT_ALIGN, 4); +} + +void debug_sub_80098B8(u8 *dest) +{ + ConvertIntToHexStringN(dest, sRtc.status, STR_CONV_MODE_LEADING_ZEROS, 2); +} + +#endif + void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t) { u16 days = RtcGetDayCount(rtc); @@ -347,3 +369,10 @@ u32 RtcGetMinuteCount() RtcGetInfo(&sRtc); return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute; } + +#ifdef DEBUG +void debug_sub_8009A60() +{ + RtcGetRawInfo(&sRtc); +} +#endif diff --git a/src/engine/save.c b/src/engine/save.c index d5de2e408..8b045eaaa 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -574,6 +574,83 @@ u16 CalculateChecksum(void *data, u16 size) return ((checksum >> 16) + checksum); } +#ifdef DEBUG +__attribute__((naked)) +void sub_813B79C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r4, ._163\n" + " ldr r6, ._163 + 4\n" + " mov r5, #0x0\n" + "._161:\n" + " lsl r0, r5, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r4, #0\n" + " bl DoReadFlashWholeSection\n" + " ldr r1, ._163 + 8\n" + " add r0, r4, r1\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r6\n" + " ldrh r1, [r0, #0x4]\n" + " add r0, r4, #0\n" + " bl CalculateChecksum\n" + " ldr r2, ._163 + 12\n" + " add r1, r4, r2\n" + " strh r0, [r1]\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " cmp r5, #0x1b\n" + " bls ._161 @cond_branch\n" + " ldr r6, ._163\n" + " ldr r7, ._163 + 16\n" + " mov r5, #0x0\n" + "._162:\n" + " add r4, r5, #0\n" + " add r4, r4, #0x1c\n" + " lsl r0, r4, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r1, r6, #0\n" + " bl DoReadFlashWholeSection\n" + " lsl r0, r5, #0x3\n" + " add r0, r0, r7\n" + " ldrh r1, [r0, #0x4]\n" + " add r0, r6, #0\n" + " bl CalculateChecksum\n" + " ldr r2, ._163 + 8\n" + " add r1, r6, r2\n" + " strh r0, [r1]\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x10\n" + " lsr r5, r0, #0x10\n" + " cmp r5, #0x1\n" + " bls ._162 @cond_branch\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word +0x2000000\n" + " .word gSaveSectionLocations\n" + " .word 0xff4\n" + " .word 0xff6\n" + " .word gHallOfFameSaveSectionLocations\n" + "\n" + ); +} +#endif + u8 HandleSavingData(u8 saveType) { u8 i; diff --git a/src/engine/sprite.c b/src/engine/sprite.c index cf35e12a3..cec3d0b3a 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -1,8 +1,10 @@ #include "global.h" +#include "debug.h" #include "sprite.h" #include "main.h" #include "menu_cursor.h" #include "palette.h" +#include "sprite.h" #define MAX_SPRITE_COPY_REQUESTS 64 @@ -822,6 +824,12 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size; gSpriteCopyRequestCount++; } +#ifdef DEBUG + else + { + unref_sub_80AB084(sDmaOverErrorMsg); + } +#endif } void RequestSpriteCopy(const void *src, u8 *dest, u16 size) @@ -833,6 +841,12 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size) gSpriteCopyRequests[gSpriteCopyRequestCount].size = size; gSpriteCopyRequestCount++; } +#ifdef DEBUG + else + { + unref_sub_80AB084(sDmaOverErrorMsg); + } +#endif } // these two functions are unused. diff --git a/src/engine/task.c b/src/engine/task.c index 7bd2b5937..ed17d28bb 100644 --- a/src/engine/task.c +++ b/src/engine/task.c @@ -1,4 +1,5 @@ #include "global.h" +#include "debug.h" #include "task.h" #define ACTIVE_SENTINEL 0x10 @@ -11,8 +12,9 @@ struct Task gTasks[ACTIVE_SENTINEL]; static void InsertTask(u8 newTaskId); static u8 FindFirstActiveTask(); -// Unused string -const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました"); +const u8 gError_NoTasksLeft[] = _( + "TASK OVER\n" + "タスクがオーバーしました"); void ResetTasks() { @@ -49,6 +51,10 @@ u8 CreateTask(TaskFunc func, u8 priority) } } +#ifdef DEBUG + unref_sub_80AB084(gError_NoTasksLeft); +#endif + return 0; } diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 9d09575c8..daa513145 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -5,6 +5,7 @@ #include "field_effect.h" #include "graphics.h" #include "link.h" +#include "m4a.h" #include "main.h" #include "menu.h" #include "money.h" @@ -52,7 +53,6 @@ extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; -extern const u8 gBadgesTiles[]; extern const u16 gUnknown_083B5F0C[]; extern const u16 gBadgesPalette[]; extern const u16 gUnknown_083B5F4C[]; @@ -63,6 +63,34 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); // XXX: what is this? u8 *const ewram_ = gSharedMem; +#ifdef DEBUG +const struct TrainerCard gUnknown_Debug_083E0448 = +{ + .gender = FEMALE, + .stars = 4, + .hasPokedex = TRUE, + .var_3 = TRUE, + .var_4 = TRUE, + .firstHallOfFameA = 999, + .firstHallOfFameB = 99, + .firstHallOfFameC = 99, + .pokedexSeen = 411, + .trainerId = 12345, + .playTimeHours = 99, + .playTimeMinutes = 99, + .linkBattleWins = 9999, + .linkBattleLosses = 9999, + .battleTowerWins = 9999, + .battleTowerLosses = 9999, + .contestsWithFriends = 999, + .pokeblocksWithFriends = 0xFFFF, + .pokemonTrades = 0xFFFF, + .money = 99999, + .var_28 = {1, 2, 3, 4}, + .playerName = _("てすと"), +}; +#endif + bool8 TrainerCard_Init(struct Task *); bool8 TrainerCard_WaitForFadeInToFinish(struct Task *); bool8 TrainerCard_WaitForKeys(struct Task *); @@ -176,8 +204,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void); static void TrainerCard_Back_PrintPokemonTrades(void); void unref_sub_8094588(u16 left, u16 top); +#ifdef DEBUG +static u8 gDebug_03000748; +#endif + void TrainerCard_ShowPlayerCard(Callback arg1) { +#ifdef DEBUG + gDebug_03000748 = 0; +#endif TrainerCard_InitScreenForPlayer(arg1); SetMainCallback2(sub_8093174); ewram0_2.language = GAME_LANGUAGE; @@ -185,11 +220,41 @@ void TrainerCard_ShowPlayerCard(Callback arg1) void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) { +#ifdef DEBUG + gDebug_03000748 = 0; +#endif TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2); SetMainCallback2(sub_8093174); ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language; } +#ifdef DEBUG +void debug_sub_80A0710(Callback callback) +{ + gDebug_03000748 = TRUE; + TrainerCard_InitScreenForPlayer(callback); + SetMainCallback2(sub_8093174); + ewram0_2.language = GAME_LANGUAGE; +} + +void debug_sub_80A073C(Callback callback) +{ + memcpy(&gTrainerCards[0], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); + gDebug_03000748=TRUE; + TrainerCard_InitScreenForLinkPlayer(0, callback); + SetMainCallback2(sub_8093174); + ewram0_2.language = GAME_LANGUAGE; +} + +void debug_sub_80A0780() +{ + int i; + + for (i = 0; i < 4; i++) + memcpy(&gTrainerCards[i], &gUnknown_Debug_083E0448, sizeof(struct TrainerCard)); +} +#endif + static void sub_8093174(void) { switch (gMain.state) @@ -553,6 +618,19 @@ static void TrainerCard_FillFlags(void) } } } + +#ifdef DEBUG + if (gDebug_03000748 != 0) + { + ewram0_2.showHallOfFame = TRUE; + ewram0_2.showLinkBattleStatus = TRUE; + ewram0_2.showBattleTowerStatus = TRUE; + ewram0_2.showContestRecord = TRUE; + ewram0_2.showMixingRecord = TRUE; + ewram0_2.showTradingRecord = TRUE; + memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges)); + } +#endif } void sub_80937A4() @@ -645,6 +723,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task) } return TRUE; } +#ifdef DEBUG + else if (gDebug_03000748 && gMain.newKeys & R_BUTTON) + { + ewram0_2.starCount++; + ewram0_2.starCount %= 5; + TrainerCard_LoadPalettes(); + if (ewram0_2.backSideShown == 0) + TrainerCard_DrawStars(); + } +#endif + return FALSE; } @@ -1372,7 +1461,11 @@ static void TrainerCard_Front_PrintPokedexCount(void) { u8 buffer[16]; - if (!ewram0_2.showPokedexCount) + if ( +#ifdef DEBUG + gDebug_03000748 == 0 && +#endif + !ewram0_2.showPokedexCount) { TrainerCard_ClearPokedexLabel(); } diff --git a/src/field/berry.c b/src/field/berry.c index 088267ad0..7c6640dc8 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -999,6 +999,66 @@ extern u16 gSpecialVar_0x8006; static u8 CalcBerryYield(struct BerryTree *tree); static u16 GetStageDurationByBerryType(u8 berry); +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2B04() +{ + asm( + " push {lr}\n" + " mov r0, #0x0\n" + " bl sub_80B47D8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._1\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldrh r0, [r1, #0x10]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_80C2B30() +{ + asm( + " push {lr}\n" + " mov r0, #0x1\n" + " bl sub_80B47D8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._3\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r2\n" + " ldrh r0, [r1, #0x10]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r1, #0x10]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gTasks\n" + "\n" + ); +} +#endif + // unused // this could be static, but making it so causes a compile-time warning. void ClearEnigmaBerries(void) @@ -1022,6 +1082,180 @@ void SetEnigmaBerry(u8 *src) gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2BD0() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " ldr r3, ._11\n" + " ldr r1, ._11 + 4\n" + " add r4, r3, r1\n" + " ldr r6, [r4]\n" + " add r1, r1, #0x4\n" + " add r2, r3, r1\n" + " ldr r7, [r2]\n" + " mov r1, #0x0\n" + " str r1, [r4]\n" + " str r1, [r2]\n" + " add r4, r0, #0\n" + " mov r2, #0x0\n" + " ldr r5, ._11 + 8\n" + "._10:\n" + " add r0, r4, r1\n" + " ldrb r0, [r0]\n" + " add r2, r2, r0\n" + " add r1, r1, #0x1\n" + " cmp r1, r5\n" + " bls ._10 @cond_branch\n" + " ldr r1, ._11 + 4\n" + " add r0, r3, r1\n" + " str r6, [r0]\n" + " add r1, r1, #0x4\n" + " add r0, r3, r1\n" + " str r7, [r0]\n" + " add r0, r2, #0\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gSaveBlock1\n" + " .word 0x316c\n" + " .word 0x52b\n" + "\n" + ); +} +#endif + +#if DEBUG +__attribute__((naked)) +u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r3, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r9, r1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r8, r2\n" + " ldr r4, ._16\n" + " ldr r1, ._16 + 4\n" + " add r0, r4, r1\n" + " add r2, r0, #0\n" + " ldr r1, ._16 + 8\n" + " ldmia r1!, {r5, r6, r7}\n" + " stmia r2!, {r5, r6, r7}\n" + " ldmia r1!, {r5, r6, r7}\n" + " stmia r2!, {r5, r6, r7}\n" + " ldr r1, [r1]\n" + " str r1, [r2]\n" + " add r1, r3, #0\n" + " bl StringCopy\n" + " ldr r0, ._16 + 12\n" + " add r6, r4, r0\n" + " ldr r1, ._16 + 16\n" + " add r0, r6, #0\n" + " bl StringCopy\n" + " ldr r1, ._16 + 20\n" + " add r5, r4, r1\n" + " ldr r1, ._16 + 24\n" + " add r0, r5, #0\n" + " bl StringCopy\n" + " ldr r2, ._16 + 28\n" + " add r0, r4, r2\n" + " str r6, [r0]\n" + " ldr r6, ._16 + 32\n" + " add r0, r4, r6\n" + " str r5, [r0]\n" + " mov r2, #0x0\n" + " ldr r6, ._16 + 36\n" + " ldr r7, ._16 + 40\n" + " add r5, r4, r7\n" + " ldr r3, ._16 + 44\n" + "._13:\n" + " add r0, r2, r5\n" + " add r1, r2, r3\n" + " ldrb r1, [r1]\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, r6\n" + " ble ._13 @cond_branch\n" + " ldr r0, ._16\n" + " ldr r3, ._16 + 48\n" + " ldr r2, ._16 + 52\n" + " add r1, r0, r2\n" + " mov r2, #0xf\n" + "._14:\n" + " ldrh r0, [r3]\n" + " strh r0, [r1]\n" + " add r3, r3, #0x2\n" + " add r1, r1, #0x2\n" + " sub r2, r2, #0x1\n" + " cmp r2, #0\n" + " bge ._14 @cond_branch\n" + " mov r2, #0x0\n" + " ldr r5, ._16 + 56\n" + " ldr r3, ._16 + 60\n" + "._15:\n" + " add r0, r2, r5\n" + " add r1, r2, r3\n" + " ldrb r1, [r1]\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, #0x11\n" + " ble ._15 @cond_branch\n" + " ldr r5, ._16 + 64\n" + " add r0, r4, r5\n" + " mov r6, r9\n" + " strb r6, [r0]\n" + " ldr r7, ._16 + 68\n" + " add r0, r4, r7\n" + " mov r1, r8\n" + " strb r1, [r0]\n" + " ldr r2, ._16 + 4\n" + " add r0, r4, r2\n" + " bl debug_sub_80C2BD0\n" + " add r5, r5, #0x4\n" + " add r1, r4, r5\n" + " str r0, [r1]\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word gSaveBlock1\n" + " .word 0x3160\n" + " .word gBerries\n" + " .word 0x361c\n" + " .word gUnknown_Debug_083F7F84\n" + " .word 0x3649\n" + " .word gUnknown_Debug_083F7F90\n" + " .word 0x316c\n" + " .word 0x3170\n" + " .word 0x47f\n" + " .word 0x317c\n" + " .word gSpriteImage_83C172C+0x80\n" + " .word gSpriteImage_83C172C+0x500\n" + " .word 0x35fc\n" + " .word gSaveBlock1+0x3676\n" + " .word gUnknown_Debug_839B6CE\n" + " .word 0x3688\n" + " .word 0x3689\n" + "\n" + ); +} +#else static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) { const u8 *description1; @@ -1051,9 +1285,110 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) return checksum; } +#endif + +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2D24() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " ldr r6, [sp, #0x18]\n" + " ldr r4, [sp, #0x1c]\n" + " mov r8, r4\n" + " ldr r5, ._18\n" + " ldr r7, ._18 + 4\n" + " add r4, r5, r7\n" + " strb r0, [r4]\n" + " ldr r4, ._18 + 8\n" + " add r0, r5, r4\n" + " strb r1, [r0]\n" + " add r7, r7, #0x2\n" + " add r0, r5, r7\n" + " strb r2, [r0]\n" + " ldr r1, ._18 + 12\n" + " add r0, r5, r1\n" + " strb r3, [r0]\n" + " add r4, r4, #0x3\n" + " add r0, r5, r4\n" + " strb r6, [r0]\n" + " add r7, r7, #0x3\n" + " add r0, r5, r7\n" + " mov r1, r8\n" + " strb r1, [r0]\n" + " sub r4, r4, #0x19\n" + " add r0, r5, r4\n" + " bl debug_sub_80C2BD0\n" + " ldr r7, ._18 + 16\n" + " add r5, r5, r7\n" + " str r0, [r5]\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gSaveBlock1\n" + " .word 0x3175\n" + " .word 0x3176\n" + " .word 0x3178\n" + " .word 0x368c\n" + "\n" + ); +} +#endif // due to e-reader scans being particularly volatile to failure, it is a requirement to check for // their integrity here due to scans possibly failing to produce the correct result. +#if DEBUG +__attribute__((naked)) +bool32 IsEnigmaBerryValid() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._24\n" + " ldr r1, ._24 + 4\n" + " add r0, r4, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._22 @cond_branch\n" + " ldr r2, ._24 + 8\n" + " add r0, r4, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._22 @cond_branch\n" + " ldr r1, ._24 + 12\n" + " add r0, r4, r1\n" + " bl debug_sub_80C2BD0\n" + " ldr r2, ._24 + 16\n" + " add r1, r4, r2\n" + " ldr r1, [r1]\n" + " cmp r0, r1\n" + " bne ._22 @cond_branch\n" + " mov r0, #0x1\n" + " b ._23\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word gSaveBlock1\n" + " .word 0x3174\n" + " .word 0x316a\n" + " .word 0x3160\n" + " .word 0x368c\n" + "._22:\n" + " mov r0, #0x0\n" + "._23:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} +#else bool32 IsEnigmaBerryValid(void) { if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) @@ -1064,6 +1399,7 @@ bool32 IsEnigmaBerryValid(void) return FALSE; return TRUE; } +#endif const struct Berry *GetBerryInfo(u8 berry) { @@ -1417,6 +1753,177 @@ bool8 PlayerHasBerries(void) return IsBagPocketNonEmpty(BAG_BERRIES); } +#if DEBUG +void debug_sub_80C33FC(u8 *buffer, s32 value, u8 n) +{ + StringAppend(gStringVar4, buffer); + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n); + StringAppend(gStringVar4, gStringVar1); +} + +extern const u8 gUnknown_Debug_083F7F9D[]; +extern const u8 gUnknown_Debug_083F7FA2[]; +extern const u8 gUnknown_Debug_083F7FA9[]; +extern const u8 gUnknown_Debug_083F7FB0[]; +extern const u8 gUnknown_Debug_083F7FB7[]; +extern const u8 gUnknown_Debug_083F7FBE[]; +extern const u8 gUnknown_Debug_083F7FC5[]; +extern const u8 gUnknown_Debug_083F7FCC[]; +extern const u8 gUnknown_Debug_083F7FD3[]; +extern const u8 gUnknown_Debug_083F7FD3[]; +extern const u8 gUnknown_Debug_083F7FD3[]; + +#ifdef NONMATCHING +u8* DebugOpenBerryInfo(void) +{ + s32 i; + u8 berryTreeId; + struct BerryTree *berryTree; + + if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) + return NULL; + + berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject); + berryTree = GetBerryTreeInfo(berryTreeId); + + for (i = 0; i < 500; i++) + gStringVar4[i] |= 0xFF; + + debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3); + debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->secondsUntilNextStage, 5); + debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2); + debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3); + debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1); + debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1); + + return gStringVar4; +} +#else +__attribute__((naked)) +void DebugOpenBerryInfo() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " bl GetFieldObjectScriptPointerForComparison\n" + " ldr r1, ._138\n" + " cmp r0, r1\n" + " beq ._136 @cond_branch\n" + " mov r0, #0x0\n" + " b ._137\n" + "._139:\n" + " .align 2, 0\n" + "._138:\n" + " .word BerryTreeScript\n" + "._136:\n" + " ldr r0, ._141\n" + " ldrb r0, [r0]\n" + " bl FieldObjectGetBerryTreeId\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " add r0, r6, #0\n" + " bl GetBerryTreeInfo\n" + " add r5, r0, #0\n" + " mov r2, #0x0\n" + " ldr r7, ._141 + 4\n" + " ldr r4, ._141 + 8\n" + " mov r3, #0xff\n" + "._140:\n" + " add r1, r2, r4\n" + " ldrb r0, [r1]\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " add r2, r2, #0x1\n" + " cmp r2, r7\n" + " ble ._140 @cond_branch\n" + " ldr r0, ._141 + 12\n" + " add r1, r6, #0\n" + " mov r2, #0x3\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 16\n" + " ldrb r1, [r5]\n" + " mov r2, #0x2\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 20\n" + " ldrb r1, [r5, #0x1]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x19\n" + " mov r2, #0x2\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 24\n" + " ldrh r1, [r5, #0x2]\n" + " mov r2, #0x5\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 28\n" + " ldrb r1, [r5, #0x4]\n" + " mov r2, #0x2\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 32\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x1c\n" + " mov r2, #0x3\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 36\n" + " ldrb r1, [r5, #0x1]\n" + " lsr r1, r1, #0x7\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 40\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x1b\n" + " lsr r1, r1, #0x1f\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldr r4, ._141 + 44\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x1a\n" + " lsr r1, r1, #0x1f\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldrb r1, [r5, #0x5]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1f\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldrb r1, [r5, #0x5]\n" + " lsr r1, r1, #0x7\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl debug_sub_80C33FC\n" + " ldr r0, ._141 + 8\n" + "._137:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word gSelectedMapObject\n" + " .word 0x1f3\n" + " .word gStringVar4\n" + " .word gUnknown_Debug_083F7F9D\n" + " .word gUnknown_Debug_083F7FA2\n" + " .word gUnknown_Debug_083F7FA9\n" + " .word gUnknown_Debug_083F7FB0\n" + " .word gUnknown_Debug_083F7FB7\n" + " .word gUnknown_Debug_083F7FBE\n" + " .word gUnknown_Debug_083F7FC5\n" + " .word gUnknown_Debug_083F7FCC\n" + " .word gUnknown_Debug_083F7FD3\n" + "\n" + ); +} +#endif + +#endif + // whenever the player is not within view of the berry tree during its sparkle state, the // sparkle state will be reset. void ResetBerryTreeSparkleFlags(void) @@ -1445,3 +1952,17 @@ void ResetBerryTreeSparkleFlags(void) } } } + +#if DEBUG +static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); +static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); +static const u8 gUnknown_Debug_083F7F9D[] = _("POS:"); +static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:"); +static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:"); +static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:"); +static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:"); +static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:"); +static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:"); +static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:"); +static const u8 gUnknown_Debug_083F7FD3[] = _(""); +#endif diff --git a/src/field/bike.c b/src/field/bike.c index 8db01b4b4..736dbc837 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -14,6 +14,11 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; extern u8 gUnusedBikeCameraAheadPanback; +#ifdef DEBUG +extern u8 gUnknown_020297ED; +u8 debug_sub_805F2B0(u8); +#endif + static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); static void MachBikeTransition_FaceDirection(u8); @@ -126,6 +131,14 @@ static const struct BikeHistoryInputInfo gAcroBikeTricksList[] = void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) { +#ifdef DEBUG + if (gUnknown_020297ED && debug_sub_805F2B0(direction)) + { + Bike_SetBikeStill(); + return; + } +#endif + if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) MovePlayerOnMachBike(direction, newKeys, heldKeys); else @@ -271,6 +284,14 @@ static void MachBikeTransition_TrySlowDown(u8 var) // the acro bike requires the input handler to be executed before the transition can. static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys) { +#ifdef DEBUG + if (gUnknown_020297ED && debug_sub_805F2B0(newDirection)) + { + Bike_SetBikeStill(); + return; + } +#endif + sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection); } diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 3ba04e489..545c19dfa 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -527,6 +527,107 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId) sub_81227FC(taskId); } +#if DEBUG +__attribute__((naked)) +void debug_sub_81381B4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " ldr r4, ._189\n" + " add r0, r4, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x60\n" + " bl gScriptFuncs_End+0x5c24\n" + " mov r7, #0x0\n" + " mov r8, r4\n" + " mov r0, #0x4\n" + " add r0, r0, r8\n" + " mov r9, r0\n" + "._188:\n" + " mov r0, #0x64\n" + " add r1, r7, #0\n" + " mul r1, r1, r0\n" + " ldr r0, ._189 + 4\n" + " add r5, r1, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x41\n" + " bl GetMonData\n" + " lsl r4, r7, #0x5\n" + " mov r1, r8\n" + " add r6, r4, r1\n" + " strh r0, [r6]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " beq ._187 @cond_branch\n" + " add r0, r5, #0\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " strb r0, [r6, #0xf]\n" + " add r0, r5, #0\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " strh r0, [r6, #0x10]\n" + " add r0, r5, #0\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " strh r0, [r6, #0x12]\n" + " add r0, r5, #0\n" + " mov r1, #0x37\n" + " bl GetMonData\n" + " mov r1, r8\n" + " add r1, r1, #0x14\n" + " add r1, r4, r1\n" + " str r0, [r1]\n" + " add r0, r5, #0\n" + " mov r1, #0xc\n" + " bl GetMonData\n" + " strh r0, [r6, #0x2]\n" + " add r0, r5, #0\n" + " mov r1, #0x0\n" + " bl GetMonData\n" + " mov r1, r8\n" + " add r1, r1, #0x18\n" + " add r1, r4, r1\n" + " str r0, [r1]\n" + " add r0, r5, #0\n" + " bl GetMonGender\n" + " strb r0, [r6, #0x1c]\n" + " add r4, r4, r9\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl GetMonData\n" + " add r0, r4, #0\n" + " bl StripExtCtrlCodes\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " bl GetMonData\n" + " strb r0, [r6, #0x1d]\n" + "._187:\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x2\n" + " bls ._188 @cond_branch\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._190:\n" + " .align 2, 0\n" + "._189:\n" + " .word gUnknown_02023A00\n" + " .word gPlayerParty+0x12c\n" + "\n" + ); +} +#endif + bool8 SetupLinkMultiBattlePartyMenu(void) { switch (ewram1B000_alt.setupState) diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c index dd0e972aa..21ced1be8 100644 --- a/src/field/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -164,3 +164,14 @@ u8 sub_81341D4(void) } return count; } + + +#ifdef DEBUG +void debug_sub_814A3A8(void) +{ + u8 decor; + + for (decor = 0; decor < DECOR_COUNT; decor++) + IsThereStorageSpaceForDecoration(decor); +} +#endif diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 52e66f16e..dad2fb1d2 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -82,25 +82,25 @@ extern u8 gUnknown_081C6BDE[]; static void player_get_pos_to_and_height(struct MapPosition *); static void player_get_next_pos_and_height(struct MapPosition *); -static u16 cur_mapdata_block_role_at_player_pos(int); -static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c); +/*static*/ u16 cur_mapdata_block_role_at_player_pos(int); +/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c); static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c); static u8 *sub_8068364(struct MapPosition *, u8, u8); static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *, u8, u8 c); static u8 *sub_8068500(struct MapPosition *, u8, u8); static u8 *TryGetFieldMoveScript(struct MapPosition *, u8, u8); -static bool32 sub_8068770(void); -static bool32 sub_80687A4(void); -static bool8 sub_80687E4(struct MapPosition *, u16, u16); +/*static*/ bool32 sub_8068770(void); +/*static*/ bool32 sub_80687A4(void); +/*static*/ bool8 sub_80687E4(struct MapPosition *, u16, u16); static void happiness_algorithm_step(void); static bool8 overworld_poison_step(void); -static bool8 is_it_battle_time_3(u16); -static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8); +/*static*/ bool8 is_it_battle_time_3(u16); +/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8); static bool8 sub_8068B30(u16); static bool8 is_non_stair_warp_tile(u16, u8); static s8 map_warp_check_packed(struct MapHeader *, struct MapPosition *); static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *); -static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8); +/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8); static s8 map_warp_check(struct MapHeader *, u16, u16, u8); static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8); static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8); @@ -122,6 +122,230 @@ void FieldClearPlayerInput(struct FieldInput *input) input->dpadDirection = 0; } +#if DEBUG +__attribute__((naked)) +void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add r4, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " mov r8, r1\n" + " lsl r2, r2, #0x10\n" + " lsr r5, r2, #0x10\n" + " ldr r0, ._17\n" + " ldrb r6, [r0, #0x3]\n" + " ldrb r0, [r0, #0x2]\n" + " mov r9, r0\n" + " bl cur_mapdata_block_role_at_player_pos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl MetatileBehavior_IsMoveTile\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r6, #0x2\n" + " bne ._1 @cond_branch\n" + " cmp r7, #0\n" + " beq ._2 @cond_branch\n" + "._1:\n" + " cmp r6, #0\n" + " bne ._9 @cond_branch\n" + "._2:\n" + " bl GetPlayerSpeed\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0x4\n" + " beq ._8 @cond_branch\n" + " mov r0, #0x8\n" + " mov r1, r8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._5 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._5:\n" + " mov r0, #0x4\n" + " mov r3, r8\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._6 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x8\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._6:\n" + " mov r0, #0x1\n" + " mov r1, r8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._7 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._7:\n" + " mov r0, #0x2\n" + " mov r3, r8\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._8 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x80\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._8:\n" + " mov r0, #0xf0\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._9 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x10\n" + " orr r0, r0, r1\n" + " mov r1, #0x20\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._9:\n" + " cmp r7, #0\n" + " bne ._14 @cond_branch\n" + " cmp r6, #0x2\n" + " bne ._12 @cond_branch\n" + " mov r0, r9\n" + " cmp r0, #0x2\n" + " bne ._12 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x40\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._12:\n" + " cmp r7, #0\n" + " bne ._14 @cond_branch\n" + " cmp r6, #0x2\n" + " bne ._14 @cond_branch\n" + " ldrb r0, [r4]\n" + " mov r1, #0x2\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + "._14:\n" + " mov r0, #0x40\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._15 @cond_branch\n" + " mov r0, #0x2\n" + " b ._22\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word gPlayerAvatar\n" + "._15:\n" + " mov r0, #0x80\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._19 @cond_branch\n" + " mov r0, #0x1\n" + " b ._22\n" + "._19:\n" + " mov r0, #0x20\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._21 @cond_branch\n" + " mov r0, #0x3\n" + " b ._22\n" + "._21:\n" + " mov r0, #0x10\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._23 @cond_branch\n" + " mov r0, #0x4\n" + "._22:\n" + " strb r0, [r4, #0x2]\n" + "._23:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " ldrb r2, [r4]\n" + " mov r0, #0x4\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " ldrb r0, [r4, #0x1]\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x1]\n" + " mov r0, #0x5\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r4]\n" + "._25:\n" + " ldr r0, ._30\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._29 @cond_branch\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._28 @cond_branch\n" + " ldrb r1, [r4, #0x1]\n" + " mov r0, #0x2\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x1]\n" + " ldrb r0, [r4]\n" + " mov r2, #0x41\n" + " neg r2, r2\n" + " and r2, r2, r0\n" + " mov r0, #0x3\n" + " neg r0, r0\n" + " and r2, r2, r0\n" + " sub r0, r0, #0xe\n" + " and r2, r2, r0\n" + " sub r0, r0, #0x10\n" + " and r2, r2, r0\n" + " strb r2, [r4]\n" + " mov r0, #0x4\n" + " mov r3, r8\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._28 @cond_branch\n" + " mov r0, #0x1\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x1]\n" + " mov r0, #0x9\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r4]\n" + "._28:\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x2\n" + " and r0, r0, r5\n" + " cmp r0, #0\n" + " beq ._29 @cond_branch\n" + " ldrb r0, [r4, #0x1]\n" + " mov r1, #0x8\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x1]\n" + "._29:\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word gUnknown_020297ED\n" + "\n" + ); +} +#else void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) { u8 r6 = gPlayerAvatar.tileTransitionState; @@ -163,7 +387,222 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; } +#endif +#if DEBUG +__attribute__((naked)) +int sub_8068024(struct FieldInput *input) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff8\n" + " add r5, r0, #0\n" + " bl player_get_direction_lower_nybble\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r4, sp\n" + " mov r0, sp\n" + " bl player_get_pos_to_and_height\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x2\n" + " ldsh r1, [r4, r2]\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldrb r1, [r5, #0x1]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._33 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " bl dive_warp\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._33 @cond_branch\n" + " b ._63\n" + "._33:\n" + " ldrb r1, [r5, #0x1]\n" + " mov r6, #0x2\n" + " add r0, r6, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._39 @cond_branch\n" + " bl CheckTrainers\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._36 @cond_branch\n" + " b ._63\n" + "._36:\n" + " ldrb r1, [r5, #0x1]\n" + " add r0, r6, #0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._39 @cond_branch\n" + " bl mapheader_run_first_tag2_script_list_match\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._39 @cond_branch\n" + " b ._63\n" + "._39:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._42 @cond_branch\n" + " bl sub_80687A4\n" + " cmp r0, #0x1\n" + " bne ._42 @cond_branch\n" + " b ._63\n" + "._42:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._44 @cond_branch\n" + " mov r0, #0x5\n" + " bl IncrementGameStat\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl sub_80687E4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._44:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._46 @cond_branch\n" + " add r0, r4, #0\n" + " bl is_it_battle_time_3\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._46:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._49 @cond_branch\n" + " ldrb r0, [r5, #0x2]\n" + " cmp r0, r7\n" + " bne ._49 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl mapheader_run_first_tag2_script_list_match_conditionally\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._49:\n" + " mov r4, sp\n" + " mov r0, sp\n" + " bl player_get_next_pos_and_height\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x2\n" + " ldsh r1, [r4, r2]\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " ldrb r1, [r5]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._51 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl sub_80681F0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._51:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._54 @cond_branch\n" + " ldrb r0, [r5, #0x2]\n" + " cmp r0, r7\n" + " bne ._54 @cond_branch\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " add r2, r7, #0\n" + " bl map_warp_consider_2_to_inside\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._54:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._56 @cond_branch\n" + " bl sub_8068770\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._56:\n" + " ldrb r1, [r5]\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._58 @cond_branch\n" + " mov r0, #0x6\n" + " bl PlaySE\n" + " bl sub_8071310\n" + " b ._63\n" + "._58:\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._60 @cond_branch\n" + " bl sub_80A6D1C\n" + " cmp r0, #0x1\n" + " beq ._63 @cond_branch\n" + "._60:\n" + " ldrb r1, [r5, #0x1]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._62 @cond_branch\n" + " bl debug_sub_80888D8\n" + " b ._63\n" + "._62:\n" + " mov r0, #0x4\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._64 @cond_branch\n" + " mov r0, #0x0\n" + " b ._65\n" + "._64:\n" + " mov r0, #0x6\n" + " bl PlaySE\n" + " bl DebugMenu_8077048\n" + "._63:\n" + " mov r0, #0x1\n" + "._65:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} +#else int sub_8068024(struct FieldInput *input) { struct MapPosition position; @@ -213,6 +652,7 @@ int sub_8068024(struct FieldInput *input) return TRUE; return FALSE; } +#endif static void player_get_pos_to_and_height(struct MapPosition *position) { @@ -232,7 +672,7 @@ static void player_get_next_pos_and_height(struct MapPosition *position) position->height = 0; } -static u16 cur_mapdata_block_role_at_player_pos(int unused) +/*static*/ u16 cur_mapdata_block_role_at_player_pos(int unused) { s16 x, y; @@ -240,7 +680,7 @@ static u16 cur_mapdata_block_role_at_player_pos(int unused) return MapGridGetMetatileBehaviorAt(x, y); } -static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) +/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) { u8 *script = TryGetScriptOnPressingA(position, b, c); @@ -435,7 +875,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) return NULL; } -static bool32 sub_8068770(void) +/*static*/ bool32 sub_8068770(void) { if (FlagGet(FLAG_BADGE07_GET) && sub_8068F18() == 2) { @@ -445,7 +885,7 @@ static bool32 sub_8068770(void) return FALSE; } -static bool32 sub_80687A4(void) +/*static*/ bool32 sub_80687A4(void) { if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) { @@ -455,7 +895,7 @@ static bool32 sub_80687A4(void) return FALSE; } -static bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused) +/*static*/ bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused) { if (mapheader_trigger_activate_at__run_now(position) == TRUE) return TRUE; @@ -575,7 +1015,7 @@ void prev_quest_postbuffer_cursor_backup_reset(void) gUnknown_0202E8C0 = 0; } -static bool8 is_it_battle_time_3(u16 a) +/*static*/ bool8 is_it_battle_time_3(u16 a) { if (gUnknown_0202E8C0 < 4) { @@ -596,7 +1036,7 @@ static bool8 is_it_battle_time_3(u16 a) } } -static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c) +/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c) { s8 r6 = map_warp_check_packed(&gMapHeader, position); @@ -704,7 +1144,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi } } -static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c) +/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c) { s8 r4; diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 77b4c8b5c..1c0cefacb 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1917,6 +1917,40 @@ void npc_clear_ids_and_state(struct MapObject *mapObj) mapObj->mapobj_unk_1C = 0xFF; } +#if DEBUG +__attribute__((naked)) +void npcs_clear_ids_and_state() +{ + asm( + " push {r4, r5, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._2\n" + "._1:\n" + " lsl r0, r4, #0x3\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r5\n" + " bl npc_clear_ids_and_state\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0xf\n" + " bls ._1 @cond_branch\n" + " ldr r1, ._2 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._3:\n" + " .align 2, 0\n" + "._2:\n" + " .word gMapObjects\n" + " .word gUnknown_Debug_03004BC0\n" + "\n" + ); +} +#else void npcs_clear_ids_and_state(void) { u8 i; @@ -1924,6 +1958,7 @@ void npcs_clear_ids_and_state(void) for (i = 0; i < 16; i++) npc_clear_ids_and_state(&gMapObjects[i]); } +#endif void sub_805AA98(void) { @@ -2017,6 +2052,176 @@ u8 GetFieldObjectIdByLocalId(u8 localId) return 16; } +#if DEBUG +__attribute__((naked)) +u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " add r5, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r6, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r7, r2, #0x18\n" + " ldrb r0, [r5]\n" + " add r1, r6, #0\n" + " add r2, r7, #0\n" + " mov r3, sp\n" + " bl GetAvailableFieldObjectSlot\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._35 @cond_branch\n" + " mov r0, #0x10\n" + " b ._36\n" + "._35:\n" + " mov r0, sp\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._40\n" + " add r4, r0, r1\n" + " add r0, r4, #0\n" + " bl npc_clear_ids_and_state\n" + " ldrh r3, [r5, #0x4]\n" + " add r3, r3, #0x7\n" + " lsl r3, r3, #0x10\n" + " lsr r3, r3, #0x10\n" + " ldrh r2, [r5, #0x6]\n" + " add r2, r2, #0x7\n" + " lsl r2, r2, #0x10\n" + " lsr r2, r2, #0x10\n" + " ldrb r0, [r4]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " mov r1, #0x4\n" + " orr r0, r0, r1\n" + " strb r0, [r4]\n" + " ldrb r0, [r5, #0x1]\n" + " strb r0, [r4, #0x5]\n" + " ldrb r0, [r5, #0x9]\n" + " strb r0, [r4, #0x6]\n" + " ldrb r0, [r5]\n" + " strb r0, [r4, #0x8]\n" + " strb r6, [r4, #0x9]\n" + " strb r7, [r4, #0xa]\n" + " strh r3, [r4, #0xc]\n" + " strh r2, [r4, #0xe]\n" + " strh r3, [r4, #0x10]\n" + " strh r2, [r4, #0x12]\n" + " strh r3, [r4, #0x14]\n" + " strh r2, [r4, #0x16]\n" + " ldrb r0, [r5, #0x8]\n" + " mov r7, #0xf\n" + " add r1, r7, #0\n" + " and r1, r1, r0\n" + " ldrb r2, [r4, #0xb]\n" + " mov r0, #0x10\n" + " neg r0, r0\n" + " mov r8, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0xb]\n" + " ldrb r1, [r5, #0x8]\n" + " lsl r1, r1, #0x4\n" + " and r0, r0, r7\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0xb]\n" + " ldrb r1, [r5, #0xa]\n" + " lsl r1, r1, #0x1c\n" + " mov r0, #0xf\n" + " mov r9, r0\n" + " lsr r1, r1, #0x1c\n" + " ldrb r2, [r4, #0x19]\n" + " mov r0, r8\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x19]\n" + " ldrb r1, [r5, #0xa]\n" + " lsr r1, r1, #0x4\n" + " lsl r1, r1, #0x4\n" + " and r0, r0, r7\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x19]\n" + " ldrh r0, [r5, #0xc]\n" + " strb r0, [r4, #0x7]\n" + " ldrh r0, [r5, #0xe]\n" + " strb r0, [r4, #0x1d]\n" + " ldr r1, ._40 + 4\n" + " ldrb r0, [r5, #0x9]\n" + " add r0, r0, r1\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " add r0, r0, #0x20\n" + " strb r1, [r0]\n" + " ldrb r1, [r0]\n" + " add r0, r4, #0\n" + " bl FieldObjectSetDirection\n" + " add r0, r4, #0\n" + " bl FieldObjectHandleDynamicGraphicsId\n" + " ldr r1, ._40 + 8\n" + " ldrb r0, [r4, #0x6]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._39 @cond_branch\n" + " ldrb r2, [r4, #0x19]\n" + " add r0, r7, #0\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._38 @cond_branch\n" + " lsl r0, r2, #0x1c\n" + " lsr r0, r0, #0x1c\n" + " add r0, r0, #0x1\n" + " mov r1, r9\n" + " and r0, r0, r1\n" + " mov r1, r8\n" + " and r1, r1, r2\n" + " orr r1, r1, r0\n" + " strb r1, [r4, #0x19]\n" + "._38:\n" + " ldrb r2, [r4, #0x19]\n" + " mov r0, #0xf0\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._39 @cond_branch\n" + " lsr r1, r2, #0x4\n" + " add r1, r1, #0x1\n" + " lsl r1, r1, #0x4\n" + " add r0, r7, #0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x19]\n" + "._39:\n" + " ldr r1, ._40 + 12\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, sp\n" + " ldrb r0, [r0]\n" + "._36:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._41:\n" + " .align 2, 0\n" + "._40:\n" + " .word gMapObjects\n" + " .word gUnknown_0836DC09\n" + " .word gUnknown_0836DBBC\n" + " .word gUnknown_Debug_03004BC0\n" + "\n" + ); +} +#else #ifdef NONMATCHING u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) { @@ -2227,6 +2432,7 @@ _0805ADD8: .4byte gUnknown_0836DBBC\n\ .syntax divided\n"); } #endif +#endif u8 sub_805ADDC(u8 localId) { @@ -2266,11 +2472,38 @@ u8 GetAvailableFieldObjectSlot(u16 a, u8 b, u8 c, u8 *d) return 0; } +#if DEBUG +__attribute__((naked)) +void RemoveFieldObject(struct MapObject *mapObject) +{ + asm( + " push {lr}\n" + " ldrb r2, [r0]\n" + " mov r1, #0x2\n" + " neg r1, r1\n" + " and r1, r1, r2\n" + " strb r1, [r0]\n" + " bl RemoveFieldObjectInternal\n" + " ldr r1, ._72\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " pop {r0}\n" + " bx r0\n" + "._73:\n" + " .align 2, 0\n" + "._72:\n" + " .word gUnknown_Debug_03004BC0\n" + "\n" + ); +} +#else void RemoveFieldObject(struct MapObject *mapObject) { mapObject->active = FALSE; RemoveFieldObjectInternal(mapObject); } +#endif void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup) { @@ -2303,6 +2536,226 @@ void npc_hide_all_but_player(void) } } +#if DEBUG +__attribute__((naked)) +u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add r7, r1, #0\n" + " add r1, r2, #0\n" + " add r2, r3, #0\n" + " ldr r3, [sp, #0x20]\n" + " ldr r4, [sp, #0x24]\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " lsl r3, r3, #0x10\n" + " lsr r3, r3, #0x10\n" + " mov r9, r3\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " mov sl, r4\n" + " bl InitFieldObjectStateFromTemplate\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " cmp r0, #0x10\n" + " bne ._83 @cond_branch\n" + " mov r0, #0x10\n" + " b ._92\n" + "._83:\n" + " mov r0, r8\n" + " lsl r4, r0, #0x3\n" + " add r0, r4, r0\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._87\n" + " add r5, r0, r1\n" + " ldrb r0, [r5, #0x5]\n" + " bl GetFieldObjectGraphicsInfo\n" + " add r6, r0, #0\n" + " ldrb r1, [r6, #0xc]\n" + " mov r0, #0xf\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._85 @cond_branch\n" + " ldrh r0, [r6, #0x2]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x1c\n" + " bl npc_load_two_palettes__no_record\n" + " b ._89\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word gMapObjects\n" + "._85:\n" + " cmp r0, #0xa\n" + " bne ._89 @cond_branch\n" + " ldrh r0, [r6, #0x2]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x1c\n" + " bl npc_load_two_palettes__and_record\n" + "._89:\n" + " ldrb r0, [r5, #0x6]\n" + " cmp r0, #0x4c\n" + " bne ._90 @cond_branch\n" + " ldrb r0, [r5, #0x1]\n" + " mov r1, #0x20\n" + " orr r0, r0, r1\n" + " strb r0, [r5, #0x1]\n" + "._90:\n" + " ldr r1, ._93\n" + " add r0, r1, #0\n" + " strh r0, [r7, #0x2]\n" + " add r0, r7, #0\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl CreateSprite\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x40\n" + " bne ._91 @cond_branch\n" + " ldr r1, ._93 + 4\n" + " ldrb r0, [r1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._93 + 8\n" + " mov r2, r8\n" + " add r1, r4, r2\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r0\n" + " ldrb r2, [r1]\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " strb r0, [r1]\n" + " mov r0, #0x10\n" + " b ._92\n" + "._94:\n" + " .align 2, 0\n" + "._93:\n" + " .word 0xffff\n" + " .word gUnknown_Debug_03004BC0\n" + " .word gMapObjects\n" + "._91:\n" + " lsl r0, r7, #0x4\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._96\n" + " add r4, r0, r1\n" + " mov r1, r9\n" + " lsl r0, r1, #0x10\n" + " asr r0, r0, #0x10\n" + " ldrh r2, [r5, #0x10]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " mov r2, sl\n" + " lsl r1, r2, #0x10\n" + " asr r1, r1, #0x10\n" + " ldrh r2, [r5, #0x12]\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r2, r4, #0\n" + " add r2, r2, #0x20\n" + " add r3, r4, #0\n" + " add r3, r3, #0x22\n" + " bl sub_8060388\n" + " ldrh r0, [r6, #0x8]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x11\n" + " neg r0, r0\n" + " add r1, r4, #0\n" + " add r1, r1, #0x28\n" + " strb r0, [r1]\n" + " ldrh r0, [r6, #0xa]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x11\n" + " neg r0, r0\n" + " add r2, r4, #0\n" + " add r2, r2, #0x29\n" + " strb r0, [r2]\n" + " ldrh r0, [r4, #0x20]\n" + " add r0, r0, #0x8\n" + " strh r0, [r4, #0x20]\n" + " ldrh r1, [r4, #0x22]\n" + " add r1, r1, #0x10\n" + " mov r0, #0x0\n" + " ldsb r0, [r2, r0]\n" + " add r0, r0, r1\n" + " strh r0, [r4, #0x22]\n" + " ldrb r1, [r6, #0xc]\n" + " lsl r1, r1, #0x1c\n" + " lsr r1, r1, #0x18\n" + " ldrb r2, [r4, #0x5]\n" + " mov r0, #0xf\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r4, #0x5]\n" + " add r2, r4, #0\n" + " add r2, r2, #0x3e\n" + " ldrb r0, [r2]\n" + " mov r1, #0x2\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + " mov r0, r8\n" + " strh r0, [r4, #0x2e]\n" + " strb r7, [r5, #0x4]\n" + " ldrb r1, [r6, #0xc]\n" + " lsl r1, r1, #0x19\n" + " lsr r1, r1, #0x1f\n" + " lsl r1, r1, #0x4\n" + " ldrb r2, [r5, #0x1]\n" + " mov r0, #0x11\n" + " neg r0, r0\n" + " and r0, r0, r2\n" + " orr r0, r0, r1\n" + " strb r0, [r5, #0x1]\n" + " lsl r0, r0, #0x1b\n" + " cmp r0, #0\n" + " blt ._95 @cond_branch\n" + " ldrb r0, [r5, #0x18]\n" + " lsl r0, r0, #0x1c\n" + " lsr r0, r0, #0x1c\n" + " bl FieldObjectDirectionToImageAnimId\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " add r0, r4, #0\n" + " bl StartSpriteAnim\n" + "._95:\n" + " ldrb r0, [r5, #0xb]\n" + " lsr r0, r0, #0x4\n" + " add r1, r4, #0\n" + " mov r2, #0x1\n" + " bl SetObjectSubpriorityByZCoord\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " bl sub_80634D0\n" + " mov r0, r8\n" + "._92:\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word gSprites\n" + "\n" + ); +} +#else u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) { u8 mapObjectId; @@ -2352,6 +2805,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * sub_80634D0(mapObject, sprite); return mapObjectId; } +#endif u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e) { @@ -2574,6 +3028,66 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject) void sub_805B75C(u8, s16, s16); +#if DEBUG +__attribute__((naked)) +void sub_805B710(u16 u161, u16 u162) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add r4, r0, #0\n" + " add r5, r1, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " lsl r5, r5, #0x10\n" + " lsr r5, r5, #0x10\n" + " ldr r6, ._153\n" + " mov r0, #0x0\n" + " strb r0, [r6]\n" + " bl ClearPlayerAvatarInfo\n" + " mov r7, #0x0\n" + " ldr r0, ._153 + 4\n" + " mov r8, r0\n" + " lsl r4, r4, #0x10\n" + " lsl r5, r5, #0x10\n" + "._152:\n" + " lsl r0, r7, #0x3\n" + " add r0, r0, r7\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r8\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x1f\n" + " cmp r0, #0\n" + " beq ._151 @cond_branch\n" + " add r0, r7, #0\n" + " asr r1, r4, #0x10\n" + " asr r2, r5, #0x10\n" + " bl sub_805B75C\n" + " ldrb r0, [r6]\n" + " add r0, r0, #0x1\n" + " strb r0, [r6]\n" + "._151:\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0xf\n" + " bls ._152 @cond_branch\n" + " bl sub_805AAB0\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gUnknown_Debug_03004BC0\n" + " .word gMapObjects\n" + "\n" + ); +} +#else void sub_805B710(u16 a, u16 b) { u8 i; @@ -2586,6 +3100,7 @@ void sub_805B710(u16 a, u16 b) } sub_805AAB0(); } +#endif extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8); extern void sub_805B914(struct MapObject *); diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 9a29e2e92..747edf816 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -32,9 +32,9 @@ static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); static void PlayerAllowForcedMovementIfMovingSameDirection(void); static bool8 TryDoMetatileBehaviorForcedMovement(void); -static u8 GetForcedMovementByMetatileBehavior(void); +/*static*/ u8 GetForcedMovementByMetatileBehavior(void); static void MovePlayerNotOnBike(u8 a, u16 b); -static u8 CheckMovementInputNotOnBike(u8 a); +/*static*/ u8 CheckMovementInputNotOnBike(u8 a); static u8 CheckForPlayerAvatarCollision(u8 a); static u8 sub_8058EF0(s16 a, s16 b, u8 c); static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c); @@ -260,12 +260,59 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void) gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5; } +#if DEBUG +__attribute__((naked)) +u8 TryDoMetatileBehaviorForcedMovement() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._27\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " ldr r0, ._27 + 4\n" + " ldrh r1, [r0, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._25 @cond_branch\n" + " mov r0, #0x0\n" + " b ._26\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word gUnknown_020297ED\n" + " .word gMain\n" + "._25:\n" + " ldr r4, ._29\n" + " bl GetForcedMovementByMetatileBehavior\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x16\n" + " add r0, r0, r4\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + "._26:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._30:\n" + " .align 2, 0\n" + "._29:\n" + " .word gUnknown_0830FBA0\n" + "\n" + ); +} +#else static bool8 TryDoMetatileBehaviorForcedMovement(void) { return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()](); } +#endif -static u8 GetForcedMovementByMetatileBehavior(void) +/*static*/ u8 GetForcedMovementByMetatileBehavior(void) { u8 i; @@ -436,12 +483,57 @@ bool8 ForcedMovement_MuddySlope(void) } } +#if DEBUG +__attribute__((naked)) +void MovePlayerNotOnBike(u8 u81, u16 u161) +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " add r5, r2, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r6, r1, #0x10\n" + " ldr r0, ._84\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._82 @cond_branch\n" + " add r0, r2, #0\n" + " bl debug_sub_805F2B0\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._83 @cond_branch\n" + "._82:\n" + " ldr r4, ._84 + 4\n" + " add r0, r5, #0\n" + " bl CheckMovementInputNotOnBike\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x16\n" + " add r0, r0, r4\n" + " ldr r2, [r0]\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x3cfc\n" + "._83:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._85:\n" + " .align 2, 0\n" + "._84:\n" + " .word gUnknown_020297ED\n" + " .word gUnknown_0830FBEC\n" + "\n" + ); +} +#else static void MovePlayerNotOnBike(u8 direction, u16 heldKeys) { gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys); } +#endif -static u8 CheckMovementInputNotOnBike(u8 direction) +/*static*/ u8 CheckMovementInputNotOnBike(u8 direction) { if (direction == DIR_NONE) { diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 0a841eed1..1b53df6be 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -250,6 +250,87 @@ void SetupMauvilleOldMan(void) sub_80F83D0(); } +#ifdef DEBUG +__attribute__((naked)) +void debug_sub_810B32C() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x4\n" + " bhi ._37 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._23\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word ._22\n" + "._22:\n" + " .word ._25\n" + " .word ._26\n" + " .word ._27\n" + " .word ._28\n" + " .word ._29\n" + "._25:\n" + " bl sub_80F7A34\n" + " b ._37\n" + "._26:\n" + " mov r2, #0x0\n" + " ldr r3, ._34\n" + "._31:\n" + " mov r0, sp\n" + " add r1, r0, r2\n" + " add r0, r2, r3\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x7\n" + " bls ._31 @cond_branch\n" + " bl sub_80F7A6C\n" + " mov r2, #0x0\n" + " ldr r3, ._34\n" + "._32:\n" + " add r1, r2, r3\n" + " mov r4, sp\n" + " add r0, r4, r2\n" + " ldrb r0, [r0]\n" + " strb r0, [r1]\n" + " add r0, r2, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " cmp r2, #0x7\n" + " bls ._32 @cond_branch\n" + " b ._37\n" + "._35:\n" + " .align 2, 0\n" + "._34:\n" + " .word gSaveBlock1+0x2d8c\n" + "._27:\n" + " bl sub_80F7A98\n" + " b ._37\n" + "._28:\n" + " bl sub_80F7A7C\n" + " b ._37\n" + "._29:\n" + " bl sub_80F7A88\n" + "._37:\n" + " bl sub_80F83D0\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} +#endif + static u8 GetCurrentMauvilleOldMan(void) { struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common; diff --git a/src/field/overworld.c b/src/field/overworld.c index 86b0a5dac..8346ce3f9 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -25,6 +25,7 @@ #include "link.h" #include "load_save.h" #include "main.h" +#include "m4a.h" #include "constants/maps.h" #include "map_name_popup.h" #include "menu.h" @@ -62,6 +63,7 @@ struct UnkTVStruct u32 tv_field_4; }; +extern u8 gUnknown_020297ED; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; @@ -1106,6 +1108,68 @@ u8 sav1_map_get_battletype(void) return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType; } +#if DEBUG + +void debug_sub_8076B68(void); + +void debug_sub_80589D8(void); + +void debug_sub_8058A50(void); + +void CB2_InitTestMenu(void) +{ + m4aSoundVSyncOff(); + SetVBlankCallback(NULL); + DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + ScanlineEffect_Stop(); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); + debug_sub_8076B68(); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + REG_IE |= 1; + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP; + m4aSoundVSyncOn(); + SetVBlankCallback(debug_sub_8058A50); + m4aSongNumStart(0x19D); + SetMainCallback2(debug_sub_80589D8); +} + +void debug_sub_80589D8(void) +{ + if (UpdatePaletteFade()) + return; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); +} + +void debug_sub_80589F4(void) +{ + if (UpdatePaletteFade()) + return; + + SetVBlankCallback(NULL); + + DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE); + + SetMainCallback2(gMain.savedCallback); +} + +void debug_sub_8058A50(void) +{ + ProcessSpriteCopyRequests(); + LoadOam(); + TransferPlttBuffer(); +} + +#endif + void ResetSafariZoneFlag_(void) { ResetSafariZoneFlag(); @@ -1210,6 +1274,33 @@ void CB2_NewGame(void) SetMainCallback2(c2_overworld); } +#if DEBUG + +extern void (*gFieldCallback)(void); + +void debug_sub_8058C00(void) +{ + FieldClearVBlankHBlankCallbacks(); + StopMapMusic(); + ResetSafariZoneFlag_(); + player_avatar_init_params_reset(); + PlayTimeCounter_Start(); + ScriptContext1_Init(); + ScriptContext2_Disable(); + + if (gMain.heldKeys & R_BUTTON) + gFieldCallback = ExecuteTruckSequence; + else + gFieldCallback = sub_8080B60; + + do_load_map_stuff_loop(&gMain.state); + SetFieldVBlankCallback(); + set_callback1(c1_overworld); + SetMainCallback2(c2_overworld); +} + +#endif + void CB2_WhiteOut(void) { u8 val; @@ -1365,6 +1456,10 @@ void CB2_ContinueSavedGame(void) { FieldClearVBlankHBlankCallbacks(); StopMapMusic(); +#if DEBUG + if (gMain.heldKeys & R_BUTTON) + gUnknown_020297ED = TRUE; +#endif ResetSafariZoneFlag_(); LoadSaveblockMapHeader(); LoadSaveblockMapObjScripts(); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7d243f569..053368a0e 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4022,6 +4022,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) CreateTask(Task_TeamMonTMMove, 5); } +#ifdef DEBUG +extern u8 gUnknown_020297ED; +#endif + void Task_TeamMonTMMove(u8 taskId) { GetMonNickname(ewram1C000.pokemon, gStringVar1); @@ -4036,7 +4040,11 @@ void Task_TeamMonTMMove(u8 taskId) } else { - if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) + if ( +#ifdef DEBUG + !gUnknown_020297ED && +#endif + !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) { StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible); sub_806E834(gStringVar4, 1); @@ -5514,9 +5522,13 @@ _08070F8A:\n\ } #endif // NONMATCHING + +// Maybe this goes in start_menu.c +#if !DEBUG void unref_sub_8070F90(void) { FlagSet(FLAG_SYS_POKEDEX_GET); FlagSet(FLAG_SYS_POKEMON_GET); FlagSet(FLAG_SYS_POKENAV_GET); } +#endif diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 7e8bdc2ce..73fa53d97 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -95,7 +95,8 @@ static const u8 *gUnknown_03000758; #define GFX_TAG_POKEBLOCK_CASE 14800 -const s8 gPokeblockFlavorCompatibilityTable[] = { +const s8 gPokeblockFlavorCompatibilityTable[] = +{ // Cool, Beauty, Cute, Smart, Tough 0, 0, 0, 0, 0, // Hardy 1, 0, 0, 0, -1, // Lonely @@ -124,14 +125,16 @@ const s8 gPokeblockFlavorCompatibilityTable[] = { 0, 0, 0, 0, 0 // Quirky }; -void (*const gUnknown_083F7EA8[])(void) = { +void (*const gUnknown_083F7EA8[])(void) = +{ sub_80A5B40, c2_exit_to_overworld_2_switch, sub_802E424, c2_exit_to_overworld_2_switch }; -const u8 *const gPokeblockNames[] = { +const u8 *const gPokeblockNames[] = +{ NULL, ContestStatsText_RedPokeBlock, ContestStatsText_BluePokeBlock, @@ -149,7 +152,8 @@ const u8 *const gPokeblockNames[] = { ContestStatsText_GoldPokeBlock }; -const struct MenuAction2 gUnknown_083F7EF4[] = { +const struct MenuAction2 gUnknown_083F7EF4[] = +{ {OtherText_Use, sub_810C508}, {OtherText_Toss, sub_810C5C0}, {gOtherText_CancelNoTerminator, sub_810C748}, @@ -165,21 +169,25 @@ const struct YesNoFuncTable gUnknown_083F7F24 = {sub_810C610, sub_810C668}; const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f}; -const struct OamData gOamData_83F7F34 = { +const struct OamData gOamData_83F7F34 = +{ .size = 3, .priority = 2 }; -const union AnimCmd gSpriteAnim_83F7F3C[] = { +const union AnimCmd gSpriteAnim_83F7F3C[] = +{ ANIMCMD_FRAME(.imageValue = 0, .duration = 0), ANIMCMD_END }; -const union AnimCmd *const gSpriteAnimTable_83F7F44[] = { +const union AnimCmd *const gSpriteAnimTable_83F7F44[] = +{ gSpriteAnim_83F7F3C }; -const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = { +const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = +{ AFFINEANIMCMD_FRAME(0, 0, -2, 2), AFFINEANIMCMD_FRAME(0, 0, 2, 4), AFFINEANIMCMD_FRAME(0, 0, -2, 4), @@ -187,22 +195,26 @@ const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = { AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = { +const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = +{ gSpriteAffineAnim_83F7F48 }; -const struct CompressedSpriteSheet gUnknown_083F7F74 = { +const struct CompressedSpriteSheet gUnknown_083F7F74 = +{ gMenuPokeblockDevice_Gfx, 0x800, GFX_TAG_POKEBLOCK_CASE }; -const struct CompressedSpritePalette gUnknown_083F7F7C = { +const struct CompressedSpritePalette gUnknown_083F7F7C = +{ gMenuPokeblockDevice_Pal, GFX_TAG_POKEBLOCK_CASE }; -const struct SpriteTemplate gSpriteTemplate_83F7F84 = { +const struct SpriteTemplate gSpriteTemplate_83F7F84 = +{ GFX_TAG_POKEBLOCK_CASE, GFX_TAG_POKEBLOCK_CASE, &gOamData_83F7F34, @@ -212,7 +224,8 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = { SpriteCallbackDummy }; -const struct Pokeblock gUnknown_083F7F9C[] = { +const struct Pokeblock gUnknown_083F7F9C[] = +{ { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20}, { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20}, { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20}, @@ -432,14 +445,13 @@ void OpenPokeblockCaseOnFeeder(void) SetMainCallback2(sub_810B96C); } -#ifdef DEBUG +#if DEBUG void debug_sub_8120F98(void) { u8 i; - for (i=0; i<40 && gUnknown_083F7F9C[i].color != 0; i++) - { + + for (i = 0; i < 40 && gUnknown_083F7F9C[i].color != 0; i++) gSaveBlock1.pokeblocks[i] = gUnknown_083F7F9C[i]; - } } #endif diff --git a/src/field/roamer.c b/src/field/roamer.c index 2eb26ef9d..16a42e9f1 100644 --- a/src/field/roamer.c +++ b/src/field/roamer.c @@ -1,7 +1,9 @@ #include "global.h" +#include "debug.h" #include "roamer.h" #include "pokemon.h" #include "random.h" +#include "region_map.h" #include "constants/species.h" #ifdef SAPPHIRE @@ -224,3 +226,20 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) *mapGroup = sRoamerLocation[MAP_GRP]; *mapNum = sRoamerLocation[MAP_NUM]; } + +#ifdef DEBUG +void debug_sub_814A714(void) +{ + if (gSaveBlock1.location.mapGroup == 0) + { + CreateInitialRoamerMon(); + sRoamerLocation[0] = 0; + sRoamerLocation[1] = gSaveBlock1.location.mapNum; + } +} + +void debug_sub_814A73C(u8* str) +{ + GetMapSectionName(str, sRoamerLocation[1], 0); +} +#endif diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9ff3a037c..e231f686d 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -17,7 +17,8 @@ #include "menu.h" #include "ewram.h" -struct UnkStruct1 { +struct UnkStruct1 +{ /*0x00*/ u8 unk00; /*0x01*/ u8 unk01; /*0x02*/ s16 unk02; @@ -2854,7 +2855,13 @@ static void sub_8104C5C(void) static void LoadSlotMachineWheelOverlay(void); -static void sub_8104CAC(u8 arg0) { +#ifdef DEBUG +// should be static +__attribute__((section(".bss"))) u8 unk_debug_bss_1[0xC] = { 0 }; +#endif + +static void sub_8104CAC(u8 arg0) +{ u8 i; struct Task *task; @@ -2875,9 +2882,7 @@ static void sub_8104CAC(u8 arg0) { #ifdef GERMAN if (arg0 == 5 && i <= 2) - { gSprites[spriteId].invisible = TRUE; - } #endif } } @@ -3966,7 +3971,8 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { vram[16 * 32 + 1 + arg0] = arg4; } -static void sub_81065DC(void) { +static void sub_81065DC(void) +{ s16 y, x; u16 *screen; @@ -3982,7 +3988,1226 @@ static void sub_81065DC(void) { } } -static const u8 sReelSymbols[][21] = { +#if DEBUG +__attribute__((naked)) +void debug_sub_811B1C4() +{ + asm( + " ldr r1, ._1\n" + " ldrb r0, [r1]\n" + " mov r3, #0x2\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._1 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x2\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B1EC() +{ + asm( + " ldr r2, ._3\n" + " ldrb r0, [r2]\n" + " mov r1, #0x1\n" + " orr r0, r0, r1\n" + " strb r0, [r2]\n" + " ldr r2, ._3 + 4\n" + " ldrb r0, [r2]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " neg r0, r0\n" + " lsr r0, r0, #0x1f\n" + " strb r0, [r2]\n" + " bx lr\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B210() +{ + asm( + " ldr r1, ._5\n" + " ldrb r0, [r1]\n" + " mov r3, #0x4\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._5 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x4\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._6:\n" + " .align 2, 0\n" + "._5:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B238() +{ + asm( + " ldr r1, ._7\n" + " ldrb r0, [r1]\n" + " mov r3, #0x8\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._7 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x8\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B260() +{ + asm( + " ldr r1, ._9\n" + " ldrb r0, [r1]\n" + " mov r3, #0x10\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._9 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x10\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B288() +{ + asm( + " ldr r1, ._11\n" + " ldrb r0, [r1]\n" + " mov r3, #0x40\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._11 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x40\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B2B0() +{ + asm( + " ldr r1, ._13\n" + " ldrb r0, [r1]\n" + " mov r3, #0x80\n" + " orr r0, r0, r3\n" + " strb r0, [r1]\n" + " ldr r2, ._13 + 4\n" + " ldrb r1, [r2]\n" + " mov r0, #0x80\n" + " eor r1, r1, r0\n" + " neg r0, r1\n" + " orr r0, r0, r1\n" + " asr r0, r0, #0x1f\n" + " and r0, r0, r3\n" + " strb r0, [r2]\n" + " bx lr\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B2D8() +{ + asm( + " ldr r0, ._15\n" + " ldrb r1, [r0]\n" + " mov r2, #0x20\n" + " orr r1, r1, r2\n" + " strb r1, [r0]\n" + " bx lr\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word unk_debug_bss_1+0x3\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B2E8() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r0, ._17\n" + " ldrb r1, [r0, #0x1]\n" + " add r1, r1, #0x1\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x6\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add sp, sp, #0x4\n" + " pop {r0}\n" + " bx r0\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word +0x2000000\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B310() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r0, ._21\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 8\n" + " mov r1, #0x1\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 12\n" + " mov r1, #0x1\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 16\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 20\n" + " mov r1, #0x1\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 24\n" + " mov r1, #0x1\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 28\n" + " mov r1, #0x1\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 32\n" + " mov r1, #0x1\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 36\n" + " mov r1, #0xf\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 40\n" + " mov r1, #0xf\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 44\n" + " mov r1, #0xf\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 48\n" + " mov r1, #0xf\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 52\n" + " mov r1, #0xf\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 56\n" + " mov r1, #0xf\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 60\n" + " mov r1, #0xf\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 64\n" + " mov r1, #0xf\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 68\n" + " mov r1, #0xf\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r0, ._21 + 72\n" + " ldrb r0, [r0, #0x3]\n" + " cmp r0, #0\n" + " bne ._19 @cond_branch\n" + " ldr r0, ._21 + 76\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " b ._20\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word Str_841B1C4\n" + " .word Str_841B1CB\n" + " .word Str_841B1D4\n" + " .word Str_841B1DB\n" + " .word Str_841B1E2\n" + " .word Str_841B1E8\n" + " .word Str_841B1F3\n" + " .word Str_841B202\n" + " .word Str_841B24C\n" + " .word Str_841B211\n" + " .word Str_841B219\n" + " .word Str_841B220\n" + " .word Str_841B227\n" + " .word Str_841B22E\n" + " .word Str_841B235\n" + " .word Str_841B23B\n" + " .word Str_841B23F\n" + " .word Str_841B243\n" + " .word +0x2000000\n" + " .word Str_841B246\n" + "._19:\n" + " ldr r0, ._30\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + "._20:\n" + " ldr r4, ._30 + 4\n" + " ldr r1, [r4, #0x68]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xa\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x6c]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xa\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " mov r0, #0x10\n" + " ldsh r1, [r4, r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xa\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x70]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x74]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x78]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x7\n" + " bl MenuPrint\n" + " ldr r1, [r4, #0x7c]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x80\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0xb\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x84\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x88\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " add r0, r0, #0x8c\n" + " ldr r1, [r0]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0x14\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " ldr r1, ._30 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._23 @cond_branch\n" + " mov r2, #0x0\n" + " cmp r0, #0x8\n" + " beq ._24 @cond_branch\n" + " cmp r0, #0x8\n" + " bgt ._25 @cond_branch\n" + " cmp r0, #0x2\n" + " beq ._26 @cond_branch\n" + " cmp r0, #0x2\n" + " bgt ._27 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._28 @cond_branch\n" + " b ._45\n" + "._31:\n" + " .align 2, 0\n" + "._30:\n" + " .word Str_841B249\n" + " .word +0x2000000\n" + " .word unk_debug_bss_1\n" + "._27:\n" + " cmp r0, #0x4\n" + " beq ._32 @cond_branch\n" + " b ._45\n" + "._25:\n" + " cmp r0, #0x40\n" + " beq ._34 @cond_branch\n" + " cmp r0, #0x40\n" + " bgt ._35 @cond_branch\n" + " cmp r0, #0x10\n" + " beq ._36 @cond_branch\n" + " b ._45\n" + "._35:\n" + " cmp r0, #0x80\n" + " beq ._38 @cond_branch\n" + " b ._45\n" + "._26:\n" + " mov r2, #0x3\n" + " b ._45\n" + "._28:\n" + " mov r2, #0x5\n" + " b ._45\n" + "._32:\n" + " mov r2, #0x7\n" + " b ._45\n" + "._24:\n" + " mov r2, #0x9\n" + " b ._45\n" + "._36:\n" + " mov r2, #0xb\n" + " b ._45\n" + "._34:\n" + " mov r2, #0xd\n" + " b ._45\n" + "._38:\n" + " mov r2, #0xf\n" + "._45:\n" + " ldr r0, ._46\n" + " mov r1, #0x17\n" + " bl MenuPrint\n" + "._23:\n" + " bl debug_sub_811B2E8\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._47:\n" + " .align 2, 0\n" + "._46:\n" + " .word Str_841B26D\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B5B4() +{ + asm( + " push {lr}\n" + " add r2, r0, #0\n" + " ldr r0, [r2]\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " ldr r1, ._49\n" + " cmp r0, r1\n" + " ble ._48 @cond_branch\n" + " str r1, [r2]\n" + "._48:\n" + " pop {r0}\n" + " bx r0\n" + "._50:\n" + " .align 2, 0\n" + "._49:\n" + " .word 0x270f\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B5D0() +{ + asm( + " ldr r0, ._51\n" + " mov r1, #0x0\n" + " strb r1, [r0]\n" + " ldr r0, ._51 + 4\n" + " strb r1, [r0]\n" + " ldr r0, ._51 + 8\n" + " strb r1, [r0]\n" + " ldr r0, ._51 + 12\n" + " strb r1, [r0]\n" + " ldr r2, ._51 + 16\n" + " mov r0, #0x0\n" + " str r0, [r2, #0x68]\n" + " str r0, [r2, #0x6c]\n" + " str r0, [r2, #0x70]\n" + " str r0, [r2, #0x74]\n" + " str r0, [r2, #0x78]\n" + " str r0, [r2, #0x7c]\n" + " add r1, r2, #0\n" + " add r1, r1, #0x80\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " add r1, r1, #0x4\n" + " str r0, [r1]\n" + " bx lr\n" + "._52:\n" + " .align 2, 0\n" + "._51:\n" + " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1+0x2\n" + " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1+0x4\n" + " .word +0x2000000\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B620() +{ + asm( + " push {lr}\n" + " ldr r0, ._53\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._54:\n" + " .align 2, 0\n" + "._53:\n" + " .word debug_sub_811B654+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B634() +{ + asm( + " push {lr}\n" + " ldr r0, ._57\n" + " bl FindTaskIdByFunc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xff\n" + " beq ._55 @cond_branch\n" + " mov r0, #0x0\n" + " b ._56\n" + "._58:\n" + " .align 2, 0\n" + "._57:\n" + " .word debug_sub_811B654+1\n" + "._55:\n" + " mov r0, #0x1\n" + "._56:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B654() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " lsl r0, r6, #0x2\n" + " add r0, r0, r6\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._63\n" + " add r5, r0, r1\n" + " mov r0, #0x8\n" + " ldsh r1, [r5, r0]\n" + " cmp r1, #0x1\n" + " beq ._59 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._60 @cond_branch\n" + " cmp r1, #0\n" + " beq ._61 @cond_branch\n" + " b ._116\n" + "._64:\n" + " .align 2, 0\n" + "._63:\n" + " .word gTasks\n" + "._60:\n" + " cmp r1, #0x2\n" + " bne ._65 @cond_branch\n" + " b ._66\n" + "._65:\n" + " cmp r1, #0x3\n" + " bne ._67 @cond_branch\n" + " b ._68\n" + "._67:\n" + " b ._116\n" + "._61:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x18\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " bl debug_sub_811B310\n" + " ldrh r0, [r5, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r5, #0x8]\n" + " b ._116\n" + "._59:\n" + " ldr r7, ._76\n" + " ldrh r2, [r7, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._71 @cond_branch\n" + " b ._94\n" + "._71:\n" + " mov r0, #0x20\n" + " and r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " lsr r3, r0, #0x10\n" + " cmp r3, #0\n" + " beq ._73 @cond_branch\n" + " ldr r1, ._76 + 4\n" + " ldrb r0, [r1, #0x1]\n" + " sub r0, r0, #0x1\n" + " strb r0, [r1, #0x1]\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bge ._79 @cond_branch\n" + " mov r0, #0x5\n" + " strb r0, [r1, #0x1]\n" + " b ._79\n" + "._77:\n" + " .align 2, 0\n" + "._76:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._73:\n" + " mov r0, #0x10\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._78 @cond_branch\n" + " ldr r1, ._81\n" + " ldrb r0, [r1, #0x1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1, #0x1]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x5\n" + " bls ._79 @cond_branch\n" + " strb r3, [r1, #0x1]\n" + "._79:\n" + " bl debug_sub_811B2E8\n" + " b ._116\n" + "._82:\n" + " .align 2, 0\n" + "._81:\n" + " .word +0x2000000\n" + "._78:\n" + " and r1, r1, r2\n" + " lsl r0, r1, #0x10\n" + " lsr r4, r0, #0x10\n" + " cmp r4, #0\n" + " beq ._83 @cond_branch\n" + " mov r0, #0x3\n" + " strh r0, [r5, #0x8]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x5\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._85\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._85 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " b ._116\n" + "._86:\n" + " .align 2, 0\n" + "._85:\n" + " .word Str_841B25C\n" + " .word Str_841B264\n" + "._83:\n" + " mov r0, #0x4\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._87 @cond_branch\n" + " ldr r0, ._91\n" + " strb r4, [r0]\n" + " ldr r0, ._91 + 4\n" + " strb r4, [r0]\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xa\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._91 + 8\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r3, ._91 + 12\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " mov r2, #0x8\n" + " bl PrintMenuItems\n" + " str r4, [sp]\n" + " mov r0, #0x9\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " ldrh r0, [r5, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r5, #0x8]\n" + "._87:\n" + " ldrh r1, [r7, #0x2e]\n" + " mov r0, #0x8\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._88 @cond_branch\n" + " b ._116\n" + "._88:\n" + " ldr r1, ._91 + 16\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " b ._94\n" + "._92:\n" + " .align 2, 0\n" + "._91:\n" + " .word unk_debug_bss_1+0x2\n" + " .word unk_debug_bss_1+0x3\n" + " .word Str_841B254\n" + " .word _841B270\n" + " .word unk_debug_bss_1+0x4\n" + "._66:\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r2, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r2, r0\n" + " beq ._116 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r2, r0\n" + " beq ._94 @cond_branch\n" + " ldr r1, ._96\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r0, ._96 + 4\n" + " lsl r1, r2, #0x3\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, [r1]\n" + " bl _call_via_r0\n" + "._94:\n" + " bl MenuZeroFillScreen\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + " b ._116\n" + "._97:\n" + " .align 2, 0\n" + "._96:\n" + " .word unk_debug_bss_1+0x2\n" + " .word _841B270\n" + "._68:\n" + " ldr r2, ._100\n" + " ldrh r1, [r2, #0x30]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._98 @cond_branch\n" + " ldr r2, ._100 + 4\n" + " ldrh r0, [r2, #0xc]\n" + " add r0, r0, #0x64\n" + " b ._99\n" + "._101:\n" + " .align 2, 0\n" + "._100:\n" + " .word gMain\n" + " .word +0x2000000\n" + "._98:\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._102 @cond_branch\n" + " ldr r1, ._104\n" + " ldrh r0, [r1, #0xc]\n" + " sub r0, r0, #0x64\n" + " b ._103\n" + "._105:\n" + " .align 2, 0\n" + "._104:\n" + " .word +0x2000000\n" + "._102:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._106 @cond_branch\n" + " ldr r1, ._109\n" + " ldr r2, ._109 + 4\n" + " add r0, r2, #0\n" + " ldrh r2, [r1, #0xc]\n" + " add r0, r0, r2\n" + "._103:\n" + " strh r0, [r1, #0xc]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " bgt ._116 @cond_branch\n" + " ldr r0, ._109 + 8\n" + " strh r0, [r1, #0xc]\n" + " b ._116\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word +0x2000000\n" + " .word 0xfffffc18\n" + " .word 0x270f\n" + "._106:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._111 @cond_branch\n" + " ldr r2, ._114\n" + " mov r1, #0xfa\n" + " lsl r1, r1, #0x2\n" + " add r0, r1, #0\n" + " ldrh r1, [r2, #0xc]\n" + " add r0, r0, r1\n" + "._99:\n" + " strh r0, [r2, #0xc]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " ldr r1, ._114 + 4\n" + " cmp r0, r1\n" + " ble ._116 @cond_branch\n" + " strh r1, [r2, #0xc]\n" + " b ._116\n" + "._115:\n" + " .align 2, 0\n" + "._114:\n" + " .word +0x2000000\n" + " .word 0x270f\n" + "._111:\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._116 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + "._116:\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_811B894() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r1, ._122\n" + " ldrh r2, [r1, #0x8]\n" + " mov r0, #0xc0\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r2\n" + " add r4, r1, #0\n" + " cmp r0, #0\n" + " beq ._117 @cond_branch\n" + " add r1, r1, #0x90\n" + " ldr r0, [r1]\n" + " add r0, r0, #0x1\n" + " str r0, [r1]\n" + " ldr r2, ._122 + 4\n" + " cmp r0, r2\n" + " ble ._118 @cond_branch\n" + " str r2, [r1]\n" + "._118:\n" + " add r0, r4, #0\n" + " add r0, r0, #0x88\n" + " ldr r1, [r1]\n" + " ldr r0, [r0]\n" + " cmp r1, r0\n" + " beq ._119 @cond_branch\n" + " ldr r0, ._122 + 8\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r1, ._122 + 12\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._119:\n" + " ldrb r1, [r4, #0x4]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._126 @cond_branch\n" + " ldr r0, ._122 + 16\n" + " mov r1, #0x4\n" + " mov r2, #0x11\n" + " b ._121\n" + "._123:\n" + " .align 2, 0\n" + "._122:\n" + " .word +0x2000000\n" + " .word 0x270f\n" + " .word Str_841B2B0\n" + " .word unk_debug_bss_1+0x4\n" + " .word Str_841B2D3\n" + "._117:\n" + " lsl r0, r2, #0x10\n" + " cmp r0, #0\n" + " beq ._127 @cond_branch\n" + " ldrb r1, [r4, #0x4]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._126 @cond_branch\n" + " mov r4, #0x3\n" + " and r4, r4, r2\n" + " cmp r4, #0\n" + " bne ._126 @cond_branch\n" + " ldr r0, ._163\n" + " mov r1, #0x4\n" + " mov r2, #0x2\n" + "._121:\n" + " bl MenuPrint\n" + " ldr r0, ._163 + 4\n" + " strb r4, [r0]\n" + "._126:\n" + " ldr r0, ._163 + 8\n" + " ldrh r1, [r0, #0x8]\n" + " add r4, r0, #0\n" + " cmp r1, #0\n" + " beq ._127 @cond_branch\n" + " b ._162\n" + "._127:\n" + " mov r1, #0x12\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0x3\n" + " beq ._129 @cond_branch\n" + " b ._162\n" + "._129:\n" + " ldrb r1, [r4, #0x4]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._131 @cond_branch\n" + " b ._162\n" + "._131:\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x2\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp]\n" + " mov r0, #0x0\n" + " mov r1, #0x3\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r9, r0\n" + " mov r0, #0x1\n" + " mov r1, #0x2\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " mov r0, #0x1\n" + " mov r1, #0x3\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " mov r0, #0x2\n" + " mov r1, #0x2\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " mov r0, #0x2\n" + " mov r1, #0x3\n" + " bl sub_8102BA4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r7, #0\n" + " bne ._134 @cond_branch\n" + " mov r1, r9\n" + " cmp r1, #0x1\n" + " bne ._134 @cond_branch\n" + " cmp r5, #0\n" + " beq ._159 @cond_branch\n" + "._134:\n" + " ldr r1, [sp]\n" + " cmp r1, #0\n" + " bne ._137 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._137 @cond_branch\n" + " mov r1, r8\n" + " cmp r1, #0\n" + " beq ._159 @cond_branch\n" + "._137:\n" + " cmp r6, #0\n" + " bne ._140 @cond_branch\n" + " mov r1, sl\n" + " cmp r1, #0x1\n" + " bne ._140 @cond_branch\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + "._140:\n" + " cmp r7, #0\n" + " bne ._143 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._143 @cond_branch\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + "._143:\n" + " cmp r6, #0\n" + " bne ._146 @cond_branch\n" + " cmp r4, #0x1\n" + " bne ._146 @cond_branch\n" + " cmp r5, #0\n" + " beq ._159 @cond_branch\n" + "._146:\n" + " cmp r7, #0x1\n" + " bne ._149 @cond_branch\n" + " mov r1, r9\n" + " cmp r1, #0\n" + " bne ._149 @cond_branch\n" + " cmp r5, #0x1\n" + " beq ._159 @cond_branch\n" + "._149:\n" + " ldr r1, [sp]\n" + " cmp r1, #0x1\n" + " bne ._152 @cond_branch\n" + " cmp r4, #0\n" + " bne ._152 @cond_branch\n" + " mov r1, r8\n" + " cmp r1, #0x1\n" + " beq ._159 @cond_branch\n" + "._152:\n" + " cmp r6, #0x1\n" + " bne ._155 @cond_branch\n" + " mov r1, sl\n" + " cmp r1, #0\n" + " bne ._155 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._159 @cond_branch\n" + "._155:\n" + " cmp r7, #0x1\n" + " bne ._158 @cond_branch\n" + " cmp r4, #0\n" + " bne ._158 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._159 @cond_branch\n" + "._158:\n" + " cmp r6, #0x1\n" + " bne ._162 @cond_branch\n" + " cmp r4, #0\n" + " bne ._162 @cond_branch\n" + " cmp r5, #0x1\n" + " bne ._162 @cond_branch\n" + "._159:\n" + " ldr r0, ._163 + 12\n" + " mov r1, #0x4\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " ldr r1, ._163 + 4\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + "._162:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word Str_841B2E4\n" + " .word unk_debug_bss_1+0x4\n" + " .word +0x2000000\n" + " .word Str_841B2BF\n" + "\n" + ); +} +#endif + +static const u8 sReelSymbols[][21] = +{ { SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_CHERRY, diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 2f6f1e7dd..5e76d30a6 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -44,6 +44,11 @@ enum { MENU_ACTION_PLAYER_LINK }; +#ifdef DEBUG +static u32 _debugStartMenu_0 __attribute__((unused)); +static u32 _debugStartMenu_1 __attribute__((unused)); +#endif + static u8 (*saveDialogCallback)(void); static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed static bool8 savingComplete; @@ -132,6 +137,304 @@ static bool32 sub_80719FC(u8 *ptr); static void sub_8071B54(void); static void Task_8071B64(u8 taskId); +#ifdef DEBUG +__attribute__((naked)) +void debug_sub_8075C30() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl debug_sub_8075D9C\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8075C40() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._5\n" + " add r5, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r5, r1]\n" + " cmp r0, #0x1\n" + " beq ._1 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._2 @cond_branch\n" + " cmp r0, #0\n" + " beq ._3 @cond_branch\n" + " b ._18\n" + "._6:\n" + " .align 2, 0\n" + "._5:\n" + " .word gTasks+0x8\n" + "._2:\n" + " cmp r0, #0x2\n" + " beq ._7 @cond_branch\n" + " cmp r0, #0x3\n" + " beq ._8 @cond_branch\n" + " b ._18\n" + "._3:\n" + " bl m4aSoundVSyncOff\n" + " b ._12\n" + "._1:\n" + " ldr r1, ._13\n" + " ldrh r0, [r1]\n" + " mov sl, r0\n" + " mov r0, #0x0\n" + " strh r0, [r1]\n" + " ldr r1, ._13 + 4\n" + " strh r0, [r1]\n" + " mov r0, #0x83\n" + " lsl r0, r0, #0x10\n" + " str r0, [r1]\n" + " ldr r4, ._13 + 8\n" + " mov r9, r4\n" + " ldr r2, ._13 + 12\n" + " ldr r0, ._13 + 16\n" + " mov ip, r0\n" + " ldr r1, ._13 + 20\n" + " mov r8, r1\n" + " ldr r7, ._13 + 24\n" + " mov r3, r9\n" + " add r3, r3, #0x1\n" + " ldr r6, ._13 + 28\n" + " ldr r4, ._13 + 32\n" + "._11:\n" + " mov r0, ip\n" + " str r0, [r2]\n" + " str r6, [r2, #0x4]\n" + " str r4, [r2, #0x8]\n" + " ldr r0, [r2, #0x8]\n" + " ldrh r1, [r2, #0xa]\n" + " mov r0, r8\n" + " and r0, r0, r1\n" + " strh r0, [r2, #0xa]\n" + " ldrh r1, [r2, #0xa]\n" + " add r0, r7, #0\n" + " and r0, r0, r1\n" + " strh r0, [r2, #0xa]\n" + " ldrh r0, [r2, #0xa]\n" + " sub r3, r3, #0x1\n" + " cmp r3, #0\n" + " bne ._11 @cond_branch\n" + " mov r3, r9\n" + " add r3, r3, #0x1\n" + " ldr r0, ._13 + 36\n" + " mov r2, #0x0\n" + " strh r2, [r0]\n" + " ldr r1, ._13 + 4\n" + " ldrh r0, [r1]\n" + " ldr r4, ._13 + 40\n" + " str r0, [r4]\n" + " strh r2, [r1]\n" + " ldr r0, ._13\n" + " mov r1, sl\n" + " strh r1, [r0]\n" + " ldr r4, ._13 + 44\n" + " str r3, [r4]\n" + " bl m4aSoundVSyncOn\n" + " b ._12\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word 0x4000208\n" + " .word 0x4000108\n" + " .word 0xc34f\n" + " .word 0x40000b0\n" + " .word gUnknown_03004DE0\n" + " .word 0xc5ff\n" + " .word 0x7fff\n" + " .word 0x4000040\n" + " .word 0xa2600001\n" + " .word 0x400010a\n" + " .word _debugStartMenu_0\n" + " .word _debugStartMenu_1\n" + "._7:\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + " ldr r0, ._16\n" + " ldr r1, ._16 + 4\n" + " ldr r1, [r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._16 + 8\n" + " ldr r1, ._16 + 12\n" + " ldr r1, [r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl ConvertIntToDecimalStringN\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._16 + 16\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + "._12:\n" + " ldrh r0, [r5]\n" + " add r0, r0, #0x1\n" + " strh r0, [r5]\n" + " b ._18\n" + "._17:\n" + " .align 2, 0\n" + "._16:\n" + " .word gStringVar1\n" + " .word _debugStartMenu_1\n" + " .word gStringVar2\n" + " .word _debugStartMenu_0\n" + " .word gUnknown_Debug_839B6D8\n" + "._8:\n" + " ldr r0, ._19\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._18 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._18:\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._20:\n" + " .align 2, 0\n" + "._19:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8075D9C() +{ + asm( + " push {lr}\n" + " ldr r0, ._21\n" + " mov r1, #0xa\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " pop {r0}\n" + " bx r0\n" + "._22:\n" + " .align 2, 0\n" + "._21:\n" + " .word debug_sub_8075C40+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8075DB4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " add r5, r1, #0\n" + " add r4, r2, #0\n" + " add r0, r4, #0\n" + " mov r1, #0x4d\n" + " bl __umodsi3\n" + " strb r0, [r6, #0x1]\n" + " add r1, r6, #0\n" + " add r1, r1, #0xc\n" + " add r0, r4, #0\n" + " bl write_word_to_mem\n" + " add r0, r6, #4\n" + " add r1, r5, #0\n" + " bl StringCopy8\n" + " mov r3, #0x7\n" + " mov r4, #0x0\n" + " ldr r0, ._25\n" + " ldr r1, ._25 + 4\n" + " add r5, r0, r1\n" + " add r2, r6, #0\n" + " add r2, r2, #0x10\n" + " add r1, r6, #0\n" + " add r1, r1, #0x1c\n" + "._23:\n" + " ldrh r0, [r5]\n" + " strh r0, [r2]\n" + " strh r3, [r1]\n" + " add r0, r3, #6\n" + " strh r0, [r1, #0xc]\n" + " add r3, r3, #0x1\n" + " add r5, r5, #0x2\n" + " add r2, r2, #0x2\n" + " add r1, r1, #0x2\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x5\n" + " ble ._23 @cond_branch\n" + " mov r4, #0x0\n" + "._24:\n" + " mov r0, #0x64\n" + " mul r0, r0, r4\n" + " ldr r1, ._25 + 8\n" + " add r0, r0, r1\n" + " mov r1, #0x2c\n" + " mul r1, r1, r4\n" + " add r1, r1, #0x34\n" + " add r1, r6, r1\n" + " bl sub_803AF78\n" + " add r4, r4, #0x1\n" + " cmp r4, #0x2\n" + " ble ._24 @cond_branch\n" + " add r0, r6, #0\n" + " bl sub_8136088\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word gSaveBlock1\n" + " .word 0x2b28\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void unref_sub_8070F90() +{ + asm( + " push {lr}\n" + " ldr r0, ._27\n" + " bl FlagSet\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x4\n" + " bl FlagSet\n" + " ldr r0, ._27 + 4\n" + " bl FlagSet\n" + " pop {r0}\n" + " bx r0\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word 0x801\n" + " .word 0x802\n" + "\n" + ); +} +#endif static void BuildStartMenuActions(void) { diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 4bf83cad8..08913f40d 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -3802,6 +3802,19 @@ static void FeebasSeedRng(u16 seed) sFeebasRngValue = seed; } +#if DEBUG +u16 debug_sub_8092344(u8 arg0) +{ + if (arg0 == 0) + return 131; + if (arg0 == 1) + return 167; + if (arg0 == 2) + return 149; + return 0; +} +#endif + static u8 ChooseWildMonIndex_Land(void) { u8 rand = Random() % 100; @@ -4042,6 +4055,24 @@ static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate) return FALSE; } +#if DEBUG +u16 debug_sub_809283C(u16 attempts) +{ + u16 retval = 0; + u16 i = 0; + + while (i < attempts) + { + if (DoWildEncounterRateDiceRoll(320) == TRUE) + retval++; + + i++; + } + + return retval; +} +#endif + static bool8 DoWildEncounterTest(u32 encounterRate, bool8 ignoreAbility) { encounterRate *= 16; diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 921a3ad93..c652b9398 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -238,7 +238,7 @@ const struct MailLayout gUnknown_083E57A4[] = static u8 *const sSharedMemPtr = gSharedMem; static u8 sub_80F8A28(void); -static void sub_80F8D50(void); +/*static*/ void sub_80F8D50(void); static void sub_80F8DA0(void); static void sub_80F8E80(void); static void sub_80F8F18(void); @@ -247,6 +247,205 @@ static void sub_80F8F58(void); static void sub_80F8F78(void); static void sub_80F8FB4(void); + +#if DEBUG + +// should be static +__attribute__((section(".bss"))) u8 unk_debug_bss_2; + +__attribute__((naked)) +void HandleReadMail(struct MailStruct *aStruct, MainCallback callback, bool8 bool81) +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " add r6, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " ldr r0, ._3\n" + " ldrb r3, [r0]\n" + " cmp r3, #0\n" + " beq ._1 @cond_branch\n" + " ldr r2, ._3 + 4\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r0, ._3 + 8\n" + " ldrh r1, [r0]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r0, r2, r3\n" + " strb r1, [r0]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, ._3 + 12\n" + " str r0, [r1]\n" + " add r3, r3, #0x8\n" + " add r1, r2, r3\n" + " ldr r0, ._3 + 16\n" + " str r0, [r1]\n" + " ldr r0, ._3 + 20\n" + " ldrh r1, [r0]\n" + " b ._2\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gUnknown_03000748+0x4\n" + " .word +0x2000000\n" + " .word gSpecialVar_0x8004\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + " .word gSpecialVar_0x8006\n" + "._1:\n" + " ldr r2, ._7\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " add r0, r0, #0xfb\n" + " add r1, r2, r0\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, ._7 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, ._7 + 8\n" + " str r0, [r1]\n" + " ldrh r1, [r4, #0x20]\n" + " add r0, r1, #0\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._5 @cond_branch\n" + " sub r1, r1, #0x79\n" + "._2:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r1, [r0]\n" + " b ._6\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word +0x2000000\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + "._5:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r3, [r0]\n" + " mov r5, #0x0\n" + "._6:\n" + " ldr r1, ._12\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq ._9 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._10 @cond_branch\n" + "._9:\n" + " mov r3, #0x86\n" + " lsl r3, r3, #0x1\n" + " add r2, r1, r3\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._12 + 4\n" + " b ._11\n" + "._13:\n" + " .align 2, 0\n" + "._12:\n" + " .word +0x2000000\n" + " .word gUnknown_083E5730\n" + "._10:\n" + " mov r0, #0x86\n" + " lsl r0, r0, #0x1\n" + " add r2, r1, r0\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._18\n" + "._11:\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " ldrh r0, [r4, #0x1e]\n" + " mov r1, sp\n" + " bl MailSpeciesToSpecies\n" + " lsl r0, r0, #0x10\n" + " ldr r1, ._18 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xcd\n" + " lsl r1, r1, #0x11\n" + " cmp r0, r1\n" + " bhi ._14 @cond_branch\n" + " ldr r0, ._18 + 8\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfa\n" + " ldrb r2, [r1]\n" + " add r1, r0, #0\n" + " cmp r2, #0x6\n" + " beq ._15 @cond_branch\n" + " cmp r2, #0x9\n" + " beq ._16 @cond_branch\n" + " b ._17\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gUnknown_083E57A4\n" + " .word 0xffff0000\n" + " .word +0x2000000\n" + "._15:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x1\n" + " b ._21\n" + "._16:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x2\n" + " b ._21\n" + "._14:\n" + " ldr r1, ._22\n" + "._17:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x0\n" + "._21:\n" + " strb r0, [r2]\n" + " add r0, r1, #0\n" + " add r0, r0, #0xf4\n" + " str r4, [r0]\n" + " sub r0, r0, #0x8\n" + " str r6, [r0]\n" + " add r0, r0, #0xc\n" + " strb r5, [r0]\n" + " ldr r0, ._22 + 4\n" + " bl SetMainCallback2\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._23:\n" + " .align 2, 0\n" + "._22:\n" + " .word +0x2000000\n" + " .word sub_80F8D50+1\n" + "\n" + ); +} +#else void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) { u16 mailDesign; @@ -310,6 +509,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) SetMainCallback2(sub_80F8D50); } +#endif #define RETURN_UP_STATE break #define RETURN_SKIP_STATE return FALSE @@ -456,7 +656,7 @@ static u8 sub_80F8A28(void) return FALSE; } -static void sub_80F8D50(void) +/*static*/ void sub_80F8D50(void) { do { @@ -573,6 +773,60 @@ static void sub_80F8F78(void) } } +#if DEBUG +__attribute__((naked)) +void sub_80F8FB4() +{ + asm( + " push {r4, lr}\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._135 @cond_branch\n" + " ldr r4, ._138\n" + " add r0, r4, #0\n" + " add r0, r0, #0xec\n" + " ldr r0, [r0]\n" + " bl SetMainCallback2\n" + " add r0, r4, #0\n" + " add r0, r0, #0xfb\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x2\n" + " bgt ._137 @cond_branch\n" + " cmp r0, #0x1\n" + " blt ._137 @cond_branch\n" + " add r0, r4, #0\n" + " add r0, r0, #0xf4\n" + " ldr r0, [r0]\n" + " ldrh r0, [r0, #0x1e]\n" + " bl sub_809D4A8\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " bl sub_809D608\n" + " add r0, r4, #0\n" + " add r0, r0, #0xfc\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._138 + 4\n" + " add r0, r0, r1\n" + " bl sub_809D510\n" + "._137:\n" + " bl ResetPaletteFade\n" + "._135:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._139:\n" + " .align 2, 0\n" + "._138:\n" + " .word +0x2000000\n" + " .word gSprites\n" + "\n" + ); +} +#else static void sub_80F8FB4(void) { u16 local1; @@ -597,3 +851,1611 @@ static void sub_80F8FB4(void) memset(&ewram0_4, 0, 0x110); ResetPaletteFade(); } +#endif + +#if DEBUG +__attribute__((naked)) +void debug_sub_810C910() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._143\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._142 @cond_branch\n" + " ldr r1, ._143 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl Menu_EraseScreen\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " ldr r2, ._143 + 8\n" + " ldr r0, ._143 + 12\n" + " ldrh r1, [r0]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r1, r0, #0x2\n" + " add r0, r1, r2\n" + " ldr r3, ._143 + 16\n" + " add r0, r0, r3\n" + " ldrh r0, [r0]\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " sub r3, r3, #0x20\n" + " add r0, r2, r3\n" + " add r0, r1, r0\n" + " ldr r1, ._143 + 20\n" + " mov r2, #0x0\n" + " bl HandleReadMail\n" + " b ._142\n" + "._144:\n" + " .align 2, 0\n" + "._143:\n" + " .word gPaletteFade\n" + " .word unk_debug_bss_2\n" + " .word gSaveBlock1\n" + " .word gSpecialVar_0x8005\n" + " .word 0x2b6c\n" + " .word debug_sub_810D388+1\n" + "._141:\n" + " ldr r3, ._145\n" + " add r0, r2, r3\n" + " add r0, r1, r0\n" + " ldr r1, ._145 + 4\n" + " mov r2, #0x1\n" + " bl HandleReadMail\n" + "._142:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._146:\n" + " .align 2, 0\n" + "._145:\n" + " .word 0x2b4c\n" + " .word debug_sub_810D388+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810C990() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r5, r4, #0\n" + " ldr r0, ._149\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0xa0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._147 @cond_branch\n" + " ldr r4, ._149 + 4\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0xb\n" + " b ._148\n" + "._150:\n" + " .align 2, 0\n" + "._149:\n" + " .word gMain\n" + " .word gSpecialVar_0x8006\n" + "._147:\n" + " mov r2, #0x50\n" + " and r2, r2, r1\n" + " cmp r2, #0\n" + " beq ._151 @cond_branch\n" + " ldr r4, ._153\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + "._148:\n" + " mov r1, #0xc\n" + " bl __modsi3\n" + " strh r0, [r4]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r1, ._153 + 4\n" + " ldrh r0, [r4]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " b ._159\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gSpecialVar_0x8006\n" + " .word _84115C4\n" + "._151:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._155 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r2, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._157\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._157 + 4\n" + " b ._156\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gTasks\n" + " .word debug_sub_810C910+1\n" + "._155:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + " bl Menu_DisplayDialogueFrame\n" + " ldr r0, ._160\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " ldr r1, ._160 + 4\n" + " ldr r0, ._160 + 8\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " ldr r1, ._160 + 12\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._160 + 16\n" + "._156:\n" + " str r1, [r0]\n" + "._159:\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._161:\n" + " .align 2, 0\n" + "._160:\n" + " .word Str_8411540\n" + " .word _8411560\n" + " .word gSpecialVar_0x8004\n" + " .word gTasks\n" + " .word debug_sub_810CA7C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CA7C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r3, ._164\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r2, #0xf0\n" + " and r2, r2, r1\n" + " cmp r2, #0\n" + " beq ._162 @cond_branch\n" + " ldr r2, ._164 + 4\n" + " ldrh r0, [r2]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strh r0, [r2]\n" + " ldr r1, ._164 + 8\n" + " ldrh r0, [r2]\n" + " b ._163\n" + "._165:\n" + " .align 2, 0\n" + "._164:\n" + " .word gMain\n" + " .word gSpecialVar_0x8004\n" + " .word _8411560\n" + "._162:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._168 @cond_branch\n" + " ldrh r0, [r3, #0x34]\n" + " cmp r0, #0\n" + " beq ._167 @cond_branch\n" + " strh r2, [r3, #0x34]\n" + " bl Menu_DisplayDialogueFrame\n" + " ldr r0, ._169\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r1, ._169 + 4\n" + " ldr r0, ._169 + 8\n" + " ldrh r0, [r0]\n" + "._163:\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " b ._168\n" + "._170:\n" + " .align 2, 0\n" + "._169:\n" + " .word Str_8411540\n" + " .word _8411560\n" + " .word gSpecialVar_0x8004\n" + "._167:\n" + " bl Menu_DisplayDialogueFrame\n" + " ldr r0, ._171\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0xa\n" + " mov r3, #0x4\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r1, ._171 + 4\n" + " ldr r0, ._171 + 8\n" + " ldrh r0, [r0]\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl Menu_PrintText\n" + " ldr r1, ._171 + 12\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._171 + 16\n" + " str r1, [r0]\n" + "._168:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word Str_8411568\n" + " .word _84115C4\n" + " .word gSpecialVar_0x8006\n" + " .word gTasks\n" + " .word debug_sub_810C990+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CB50() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffec\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " ldr r1, ._175\n" + " mov r0, sp\n" + " mov r2, #0x6\n" + " bl memcpy\n" + " add r7, sp, #0x8\n" + " ldr r1, ._175 + 4\n" + " add r0, r7, #0\n" + " mov r2, #0x9\n" + " bl memcpy\n" + " mov r2, #0x0\n" + " ldr r0, ._175 + 8\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._173 @cond_branch\n" + " ldr r0, ._175 + 12\n" + " ldr r5, ._175 + 16\n" + " ldrh r1, [r5]\n" + " mov r2, #0x2\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._175 + 20\n" + " ldr r1, ._175 + 24\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r1\n" + " mov r1, #0x8\n" + " ldsh r2, [r4, r1]\n" + " mov r1, #0xb\n" + " mul r1, r1, r2\n" + " ldr r2, ._175 + 28\n" + " add r1, r1, r2\n" + " bl StringCopy\n" + " ldr r2, ._175 + 32\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrh r1, [r4, #0x8]\n" + " ldr r2, ._175 + 36\n" + " add r0, r0, r2\n" + " strh r1, [r0]\n" + " ldr r4, ._175 + 40\n" + " add r0, r4, #0\n" + " add r1, r7, #0\n" + " bl StringExpandPlaceholders\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r4, #0\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + " b ._174\n" + "._176:\n" + " .align 2, 0\n" + "._175:\n" + " .word Str_841160F\n" + " .word Str_841161A\n" + " .word gMain\n" + " .word gStringVar1\n" + " .word gSpecialVar_0x8005\n" + " .word gStringVar2\n" + " .word gTasks\n" + " .word gSpeciesNames\n" + " .word gSaveBlock1\n" + " .word 0x2b6a\n" + " .word gStringVar4\n" + "._173:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._177 @cond_branch\n" + " add r0, r6, #0\n" + " bl DestroyTask\n" + " bl Menu_EraseScreen\n" + "._174:\n" + " ldr r0, ._179\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " bl debug_sub_810D340\n" + " b ._186\n" + "._180:\n" + " .align 2, 0\n" + "._179:\n" + " .word debug_sub_810CE1C+1\n" + "._177:\n" + " mov r0, #0xa0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._181 @cond_branch\n" + " ldr r0, ._183\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " ldr r2, ._183 + 4\n" + " add r0, r0, r2\n" + " mov r1, #0xce\n" + " lsl r1, r1, #0x1\n" + " bl __modsi3\n" + " strh r0, [r4, #0x8]\n" + " b ._182\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word gTasks\n" + " .word 0x19b\n" + "._181:\n" + " mov r0, #0x50\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._185 @cond_branch\n" + " ldr r0, ._187\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r0\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " add r0, r0, #0x1\n" + " mov r1, #0xce\n" + " lsl r1, r1, #0x1\n" + " bl __modsi3\n" + " strh r0, [r4, #0x8]\n" + " mov r2, #0x1\n" + "._185:\n" + " cmp r2, #0\n" + " beq ._186 @cond_branch\n" + "._182:\n" + " ldr r0, ._187 + 4\n" + " ldr r1, ._187\n" + " lsl r4, r6, #0x2\n" + " add r4, r4, r6\n" + " lsl r4, r4, #0x3\n" + " add r4, r4, r1\n" + " mov r2, #0x8\n" + " ldsh r1, [r4, r2]\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._187 + 8\n" + " mov r1, #0x8\n" + " ldsh r2, [r4, r1]\n" + " mov r1, #0xb\n" + " mul r1, r1, r2\n" + " ldr r2, ._187 + 12\n" + " add r1, r1, r2\n" + " bl StringCopy\n" + " ldr r4, ._187 + 16\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl StringExpandPlaceholders\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x3\n" + " bl Menu_DrawStdWindowFrame\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl Menu_PrintText\n" + "._186:\n" + " add sp, sp, #0x14\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._188:\n" + " .align 2, 0\n" + "._187:\n" + " .word gTasks\n" + " .word gStringVar1\n" + " .word gStringVar2\n" + " .word gSpeciesNames\n" + " .word gStringVar4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CCEC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xffffffe4\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r1, ._189\n" + " mov r0, sp\n" + " mov r2, #0x11\n" + " bl memcpy\n" + " add r6, sp, #0x14\n" + " ldr r1, ._189 + 4\n" + " add r0, r6, #0\n" + " mov r2, #0x7\n" + " bl memcpy\n" + " ldr r0, ._189 + 8\n" + " mov r8, r0\n" + " ldr r0, ._189 + 12\n" + " ldrh r1, [r0]\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r4, ._189 + 16\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl StringExpandPlaceholders\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r4, #0\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + " ldr r1, ._189 + 20\n" + " mov r0, r8\n" + " bl StringCopy\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl StringExpandPlaceholders\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xc\n" + " mov r3, #0x3\n" + " bl Menu_DrawStdWindowFrame\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl Menu_PrintText\n" + " ldr r1, ._189 + 24\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r1, ._189 + 28\n" + " str r1, [r0]\n" + " add sp, sp, #0x1c\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._190:\n" + " .align 2, 0\n" + "._189:\n" + " .word Str_8411623\n" + " .word Str_8411634\n" + " .word gStringVar1\n" + " .word gSpecialVar_0x8005\n" + " .word gStringVar4\n" + " .word gSpeciesNames\n" + " .word gTasks\n" + " .word debug_sub_810CB50+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CD9C() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl ScriptContext1_Stop\n" + " bl ScriptContext2_Enable\n" + " ldr r1, ._191\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " ldr r3, ._191 + 4\n" + " ldr r2, ._191 + 8\n" + " ldr r1, ._191 + 12\n" + " mov r0, #0x0\n" + " strh r0, [r1]\n" + " strh r0, [r2]\n" + " strh r0, [r3]\n" + " ldr r0, ._191 + 16\n" + " bl SetMainCallback2\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._192:\n" + " .align 2, 0\n" + "._191:\n" + " .word unk_debug_bss_2\n" + " .word gSpecialVar_0x8004\n" + " .word gSpecialVar_0x8005\n" + " .word gSpecialVar_0x8006\n" + " .word debug_sub_810D388+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CDE0() +{ + asm( + " push {lr}\n" + " bl UpdatePaletteFade\n" + " bl RunTasks\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CDF0() +{ + asm( + " push {lr}\n" + " ldr r1, ._193\n" + " mov r0, #0x0\n" + " strh r0, [r1, #0x34]\n" + " strh r0, [r1, #0x36]\n" + " ldr r1, ._193 + 4\n" + " ldr r0, ._193 + 8\n" + " str r0, [r1]\n" + " ldr r0, ._193 + 12\n" + " bl SetMainCallback2\n" + " pop {r0}\n" + " bx r0\n" + "._194:\n" + " .align 2, 0\n" + "._193:\n" + " .word gMain\n" + " .word gFieldCallback\n" + " .word mapldr_default+1\n" + " .word c2_exit_to_overworld_2_switch+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CE1C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._196\n" + " ldr r0, [r0]\n" + " bl _call_via_r0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._195 @cond_branch\n" + " bl CloseMenu\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._195:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._197:\n" + " .align 2, 0\n" + "._196:\n" + " .word gCallback_03004AE8\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CE48() +{ + asm( + " push {r4, lr}\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._198 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._199 @cond_branch\n" + " bl Menu_EraseScreen\n" + " bl debug_sub_810D340\n" + "._198:\n" + " mov r0, #0x0\n" + " b ._200\n" + "._199:\n" + " ldr r0, ._201\n" + " strh r1, [r0]\n" + " ldr r4, ._201 + 4\n" + " ldrh r0, [r4]\n" + " mov r1, #0xc\n" + " bl __umodsi3\n" + " strh r0, [r4]\n" + " ldr r0, ._201 + 8\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r1, ._201 + 12\n" + " mov r2, #0x0\n" + " mov r0, #0x1\n" + " strh r0, [r1, #0x34]\n" + " strh r2, [r1, #0x36]\n" + "._200:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._202:\n" + " .align 2, 0\n" + "._201:\n" + " .word gSpecialVar_0x8005\n" + " .word gSpecialVar_0x8006\n" + " .word debug_sub_810CA7C+1\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CEA4() +{ + asm( + " push {lr}\n" + " ldr r0, ._205\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._203 @cond_branch\n" + " mov r0, #0x0\n" + " b ._204\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gPaletteFade\n" + "._203:\n" + " ldr r1, ._207\n" + " mov r0, #0x4\n" + " strh r0, [r1]\n" + " bl sub_80E60D8\n" + " mov r0, #0x1\n" + "._204:\n" + " pop {r1}\n" + " bx r1\n" + "._208:\n" + " .align 2, 0\n" + "._207:\n" + " .word gSpecialVar_0x8004\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CED0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xffffffdc\n" + " ldr r1, ._212\n" + " mov r0, sp\n" + " mov r2, #0x23\n" + " bl memcpy\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._215 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._210 @cond_branch\n" + " bl Menu_EraseScreen\n" + " b ._211\n" + "._213:\n" + " .align 2, 0\n" + "._212:\n" + " .word Str_841163B\n" + "._210:\n" + " ldr r5, ._216\n" + " strh r1, [r5]\n" + " ldr r6, ._216 + 4\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r1, ._216 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bls ._214 @cond_branch\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r6\n" + " ldr r2, ._216 + 8\n" + " add r0, r0, r2\n" + " ldr r1, ._216 + 12\n" + " strh r1, [r0]\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " sub r2, r2, #0xe\n" + " add r1, r6, r2\n" + " add r0, r0, r1\n" + " ldr r4, ._216 + 16\n" + " add r1, r4, #0\n" + " bl StringCopy\n" + " ldrh r1, [r5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " ldr r2, ._216 + 20\n" + " add r1, r6, r2\n" + " add r0, r0, r1\n" + " add r4, r4, #0xa\n" + " ldr r1, [r4]\n" + " str r1, [r0]\n" + " ldr r1, ._216 + 24\n" + " ldr r0, ._216 + 28\n" + " str r0, [r1]\n" + " b ._215\n" + "._217:\n" + " .align 2, 0\n" + "._216:\n" + " .word gSpecialVar_0x8005\n" + " .word gSaveBlock1\n" + " .word 0x2b6c\n" + " .word 0xffff\n" + " .word gSaveBlock2\n" + " .word 0x2b66\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CEA4+1\n" + "._214:\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " mov r0, sp\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + "._211:\n" + " bl debug_sub_810D340\n" + "._215:\n" + " mov r0, #0x0\n" + " add sp, sp, #0x24\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810CFA4() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xffffffe0\n" + " ldr r1, ._221\n" + " mov r0, sp\n" + " mov r2, #0x1f\n" + " bl memcpy\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r2, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r2, r0\n" + " beq ._218 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r2, r0\n" + " bne ._219 @cond_branch\n" + " bl Menu_EraseScreen\n" + " b ._220\n" + "._222:\n" + " .align 2, 0\n" + "._221:\n" + " .word Str_841165E\n" + "._219:\n" + " ldr r0, ._225\n" + " strh r2, [r0]\n" + " ldr r1, ._225 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldr r1, ._225 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bls ._223 @cond_branch\n" + " ldr r0, ._225 + 12\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " mov r0, #0x1\n" + " b ._224\n" + "._226:\n" + " .align 2, 0\n" + "._225:\n" + " .word gSpecialVar_0x8005\n" + " .word gSaveBlock1\n" + " .word 0x2b6c\n" + " .word debug_sub_810CCEC+1\n" + "._223:\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " mov r0, sp\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + "._220:\n" + " bl debug_sub_810D340\n" + "._218:\n" + " mov r0, #0x0\n" + "._224:\n" + " add sp, sp, #0x20\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D030() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add sp, sp, #0xffffffcc\n" + " ldr r1, ._230\n" + " mov r0, sp\n" + " mov r2, #0x10\n" + " bl memcpy\n" + " add r5, sp, #0x10\n" + " ldr r1, ._230 + 4\n" + " add r0, r5, #0\n" + " mov r2, #0x21\n" + " bl memcpy\n" + " bl Menu_ProcessInput\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._227 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._228 @cond_branch\n" + " bl Menu_EraseScreen\n" + " b ._229\n" + "._231:\n" + " .align 2, 0\n" + "._230:\n" + " .word Str_841167D\n" + " .word Str_841168D\n" + "._228:\n" + " ldr r2, ._235\n" + " strh r1, [r2]\n" + " ldr r3, ._235 + 4\n" + " ldrh r1, [r2]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " ldr r1, ._235 + 8\n" + " add r0, r0, r1\n" + " ldrh r1, [r0]\n" + " ldr r0, ._235 + 12\n" + " add r4, r2, #0\n" + " cmp r1, r0\n" + " beq ._233 @cond_branch\n" + " cmp r1, #0\n" + " beq ._233 @cond_branch\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r5, #0\n" + " b ._234\n" + "._236:\n" + " .align 2, 0\n" + "._235:\n" + " .word gSpecialVar_0x8005\n" + " .word gSaveBlock1\n" + " .word 0x2b6c\n" + " .word 0xffff\n" + "._233:\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " ldr r5, ._238\n" + " add r0, r0, r5\n" + " mov r2, #0x0\n" + " strh r2, [r0]\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " ldr r1, ._238 + 4\n" + " add r0, r0, r1\n" + " strh r2, [r0]\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r3\n" + " sub r5, r5, #0xe\n" + " add r0, r0, r5\n" + " mov r1, #0xff\n" + " strb r1, [r0]\n" + " ldrh r1, [r4]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r5, r5, #0x8\n" + " add r1, r3, r5\n" + " add r0, r0, r1\n" + " str r2, [r0]\n" + " mov r0, #0x0\n" + " ldr r1, ._238 + 8\n" + " mov ip, r1\n" + " sub r5, r5, #0x1a\n" + " add r7, r3, r5\n" + " add r6, r4, #0\n" + " ldr r1, ._238 + 12\n" + " add r5, r1, #0\n" + "._237:\n" + " lsl r1, r0, #0x18\n" + " asr r1, r1, #0x18\n" + " lsl r3, r1, #0x1\n" + " ldrh r2, [r6]\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x2\n" + " add r3, r3, r0\n" + " add r3, r3, r7\n" + " ldrh r0, [r3]\n" + " orr r0, r0, r5\n" + " strh r0, [r3]\n" + " add r1, r1, #0x1\n" + " lsl r1, r1, #0x18\n" + " lsr r0, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " cmp r1, #0x8\n" + " ble ._237 @cond_branch\n" + " ldrh r1, [r4]\n" + " mov r0, ip\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r4, ._238 + 16\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl StringExpandPlaceholders\n" + " bl Menu_EraseScreen\n" + " bl Menu_DisplayDialogueFrame\n" + " add r0, r4, #0\n" + "._234:\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl Menu_PrintText\n" + "._229:\n" + " bl debug_sub_810D340\n" + "._227:\n" + " mov r0, #0x0\n" + " add sp, sp, #0x34\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._239:\n" + " .align 2, 0\n" + "._238:\n" + " .word 0x2b6c\n" + " .word 0x2b6a\n" + " .word gStringVar1\n" + " .word 0xffff\n" + " .word gStringVar4\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D174() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffeec\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " ldr r1, ._242\n" + " add r0, sp, #0x8\n" + " mov r2, #0xc\n" + " bl memcpy\n" + " mov r5, #0x0\n" + " mov r0, sp\n" + " add r0, r0, #0x14\n" + " str r0, [sp, #0x110]\n" + " add r1, sp, #0xc8\n" + " mov r8, r1\n" + " add r2, sp, #0xcc\n" + " mov sl, r2\n" + " ldr r0, ._242 + 4\n" + " mov r9, r0\n" + "._248:\n" + " ldr r0, ._242 + 8\n" + " add r1, r5, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " lsl r1, r5, #0x3\n" + " add r0, r1, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldr r2, ._242 + 12\n" + " add r4, r0, r2\n" + " ldrh r0, [r4]\n" + " add r6, r1, #0\n" + " ldr r1, ._242 + 16\n" + " cmp r0, r1\n" + " bne ._240 @cond_branch\n" + " ldr r0, ._242 + 20\n" + " mov r1, #0x1\n" + " b ._241\n" + "._243:\n" + " .align 2, 0\n" + "._242:\n" + " .word Str_84116AE\n" + " .word gSaveBlock1\n" + " .word gStringVar1\n" + " .word 0x2b6c\n" + " .word 0xffff\n" + " .word gStringVar2\n" + "._240:\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._244 @cond_branch\n" + " ldr r0, ._246\n" + " mov r1, #0x2\n" + "._241:\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " b ._245\n" + "._247:\n" + " .align 2, 0\n" + "._246:\n" + " .word gStringVar2\n" + "._244:\n" + " ldr r0, ._253\n" + " mov r1, #0x0\n" + " mov r2, #0x1\n" + " mov r3, #0x1\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0x0\n" + " strh r0, [r4]\n" + "._245:\n" + " add r0, r6, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldr r2, ._253 + 4\n" + " add r0, r0, r2\n" + " ldrh r1, [r0]\n" + " mov r0, #0xb\n" + " mul r1, r1, r0\n" + " ldr r0, ._253 + 8\n" + " add r1, r1, r0\n" + " ldr r0, ._253 + 12\n" + " bl StringCopy\n" + " lsl r4, r5, #0x2\n" + " add r4, r4, r5\n" + " lsl r4, r4, #0x2\n" + " ldr r0, [sp, #0x110]\n" + " add r4, r0, r4\n" + " add r0, r4, #0\n" + " add r1, sp, #0x8\n" + " bl StringExpandPlaceholders\n" + " mov r1, r8\n" + " add r0, r1, r6\n" + " str r4, [r0]\n" + " mov r2, sl\n" + " add r0, r2, r6\n" + " mov r4, #0x0\n" + " str r4, [r0]\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x8\n" + " bls ._248 @cond_branch\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x10\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " mov r3, r8\n" + " bl Menu_PrintItems\n" + " str r4, [sp]\n" + " mov r0, #0xf\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x9\n" + " bl InitMenu\n" + " cmp r7, #0x1\n" + " beq ._249 @cond_branch\n" + " cmp r7, #0x1\n" + " bgt ._250 @cond_branch\n" + " cmp r7, #0\n" + " beq ._251 @cond_branch\n" + " b ._257\n" + "._254:\n" + " .align 2, 0\n" + "._253:\n" + " .word gStringVar2\n" + " .word 0x2b6a\n" + " .word gSpeciesNames\n" + " .word gStringVar3\n" + "._250:\n" + " cmp r7, #0x2\n" + " beq ._255 @cond_branch\n" + " cmp r7, #0x3\n" + " beq ._256 @cond_branch\n" + " b ._257\n" + "._251:\n" + " ldr r1, ._259\n" + " ldr r0, ._259 + 4\n" + " b ._264\n" + "._260:\n" + " .align 2, 0\n" + "._259:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CE48+1\n" + "._249:\n" + " ldr r1, ._262\n" + " ldr r0, ._262 + 4\n" + " b ._264\n" + "._263:\n" + " .align 2, 0\n" + "._262:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CED0+1\n" + "._255:\n" + " ldr r1, ._265\n" + " ldr r0, ._265 + 4\n" + " b ._264\n" + "._266:\n" + " .align 2, 0\n" + "._265:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810CFA4+1\n" + "._256:\n" + " ldr r1, ._267\n" + " ldr r0, ._267 + 4\n" + "._264:\n" + " str r0, [r1]\n" + "._257:\n" + " add sp, sp, #0x114\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._268:\n" + " .align 2, 0\n" + "._267:\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810D030+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D2F4() +{ + asm( + " push {lr}\n" + " bl Menu_ProcessInput\n" + " lsl r2, r0, #0x18\n" + " asr r1, r2, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._269 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r1, r0\n" + " bne ._270 @cond_branch\n" + " ldr r0, ._272\n" + " bl SetMainCallback2\n" + " b ._279\n" + "._273:\n" + " .align 2, 0\n" + "._272:\n" + " .word debug_sub_810CDF0+1\n" + "._270:\n" + " cmp r1, #0x1\n" + " beq ._278 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._275 @cond_branch\n" + " cmp r1, #0\n" + " beq ._278 @cond_branch\n" + " b ._279\n" + "._275:\n" + " cmp r1, #0x2\n" + " beq ._278 @cond_branch\n" + " cmp r1, #0x3\n" + " bne ._279 @cond_branch\n" + "._278:\n" + " lsr r0, r2, #0x18\n" + " bl debug_sub_810D174\n" + "._269:\n" + " mov r0, #0x0\n" + " b ._280\n" + "._279:\n" + " mov r0, #0x1\n" + "._280:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D340() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x9\n" + " mov r3, #0x9\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r3, ._281\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl Menu_PrintItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x8\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._281 + 4\n" + " ldr r0, ._281 + 8\n" + " str r0, [r1]\n" + " add sp, sp, #0x8\n" + " pop {r0}\n" + " bx r0\n" + "._282:\n" + " .align 2, 0\n" + "._281:\n" + " .word _84116BC\n" + " .word gCallback_03004AE8\n" + " .word debug_sub_810D2F4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_810D388() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " ldr r1, ._285\n" + " ldr r2, ._285 + 4\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " add r2, r1, #0\n" + " cmp r0, #0x8\n" + " bls ._283 @cond_branch\n" + " b ._320\n" + "._283:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._285 + 8\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._286:\n" + " .align 2, 0\n" + "._285:\n" + " .word gMain\n" + " .word 0x43c\n" + " .word ._287\n" + "._287:\n" + " .word ._288\n" + " .word ._289\n" + " .word ._290\n" + " .word ._291\n" + " .word ._292\n" + " .word ._293\n" + " .word ._294\n" + " .word ._295\n" + " .word ._296\n" + "._288:\n" + " ldr r3, ._299\n" + " ldrb r4, [r3]\n" + " cmp r4, #0\n" + " beq ._297 @cond_branch\n" + " ldr r1, ._299 + 4\n" + " add r0, r2, r1\n" + " mov r2, #0x0\n" + " mov r1, #0x2\n" + " strb r1, [r0]\n" + " strb r2, [r3]\n" + " b ._320\n" + "._300:\n" + " .align 2, 0\n" + "._299:\n" + " .word unk_debug_bss_2\n" + " .word 0x43c\n" + "._297:\n" + " bl remove_some_task\n" + " bl ResetPaletteFade\n" + " ldr r0, ._302\n" + " bl SetVBlankCallback\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " str r4, [sp]\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " b ._321\n" + "._303:\n" + " .align 2, 0\n" + "._302:\n" + " .word sub_80F8F18+1\n" + "._289:\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._304 @cond_branch\n" + " b ._320\n" + "._304:\n" + " b ._321\n" + "._290:\n" + " mov r0, #0x0\n" + " bl SetVBlankCallback\n" + " ldr r0, ._308\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x4\n" + " strh r1, [r0]\n" + " sub r0, r0, #0x2\n" + " strh r1, [r0]\n" + " add r0, r0, #0x4\n" + " strh r1, [r0]\n" + " add r0, r0, #0x2\n" + " strh r1, [r0]\n" + " b ._321\n" + "._309:\n" + " .align 2, 0\n" + "._308:\n" + " .word 0x4000010\n" + "._291:\n" + " bl ResetSpriteData\n" + " bl ResetTasks\n" + " bl FreeAllSpritePalettes\n" + " b ._321\n" + "._292:\n" + " ldr r4, ._312\n" + " add r0, r4, #0\n" + " bl Text_LoadWindowTemplate\n" + " add r0, r4, #0\n" + " bl InitMenuWindow\n" + " bl Menu_EraseScreen\n" + " b ._321\n" + "._313:\n" + " .align 2, 0\n" + "._312:\n" + " .word gWindowTemplate_81E6CE4\n" + "._293:\n" + " ldr r4, ._315\n" + " ldr r0, [r4]\n" + " mov r1, #0x0\n" + " mov r2, #0x20\n" + " bl LoadPalette\n" + " ldr r0, [r4, #0x4]\n" + " mov r1, #0xc0\n" + " lsl r1, r1, #0x13\n" + " bl LZ77UnCompVram\n" + " add r1, sp, #0x4\n" + " mov r0, #0x1\n" + " strh r0, [r1]\n" + " ldr r1, ._315 + 4\n" + " add r2, sp, #0x4\n" + " str r2, [r1]\n" + " ldr r0, ._315 + 8\n" + " str r0, [r1, #0x4]\n" + " ldr r0, ._315 + 12\n" + " str r0, [r1, #0x8]\n" + " ldr r0, [r1, #0x8]\n" + " b ._321\n" + "._316:\n" + " .align 2, 0\n" + "._315:\n" + " .word gMailGraphicsTable\n" + " .word 0x40000d4\n" + " .word 0x6004000\n" + " .word 0x81000280\n" + "._294:\n" + " ldr r1, ._318\n" + " ldr r2, ._318 + 4\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x2\n" + " ldr r2, ._318 + 8\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " add r1, r1, #0x46\n" + " mov r0, #0x0\n" + " strh r0, [r1]\n" + " sub r1, r1, #0x50\n" + " mov r2, #0xd0\n" + " lsl r2, r2, #0x2\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " bl debug_sub_810D340\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._318 + 12\n" + " bl SetVBlankCallback\n" + " b ._321\n" + "._319:\n" + " .align 2, 0\n" + "._318:\n" + " .word 0x4000008\n" + " .word 0x9f08\n" + " .word 0x801\n" + " .word sub_80F8F18+1\n" + "._295:\n" + " bl UpdatePaletteFade\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._320 @cond_branch\n" + " b ._321\n" + "._296:\n" + " ldr r0, ._322\n" + " mov r1, #0x0\n" + " bl CreateTask\n" + " ldr r0, ._322 + 4\n" + " bl SetMainCallback2\n" + "._321:\n" + " ldr r1, ._322 + 8\n" + " ldr r0, ._322 + 12\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._320:\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._323:\n" + " .align 2, 0\n" + "._322:\n" + " .word debug_sub_810CE1C+1\n" + " .word debug_sub_810CDE0+1\n" + " .word gMain\n" + " .word 0x43c\n" + "\n" + ); +} +#endif \ No newline at end of file diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 0242e7444..079bcf489 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -524,6 +524,328 @@ void CalculateMonStats(struct Pokemon *mon) SetMonData(mon, MON_DATA_HP, ¤tHP); } +#ifdef DEBUG +__attribute__((naked)) +void debug_sub_803F55C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xffffffc4\n" + " add r5, r0, #0\n" + " mov r1, #0x39\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x1c]\n" + " add r0, r5, #0\n" + " mov r1, #0x27\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " add r7, r0, #0\n" + " add r0, r5, #0\n" + " mov r1, #0x1a\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " add r0, r5, #0\n" + " mov r1, #0x28\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " mov r9, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x1b\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " mov r8, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x29\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x20]\n" + " add r0, r5, #0\n" + " mov r1, #0x1c\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " mov sl, r0\n" + " add r0, r5, #0\n" + " mov r1, #0x2a\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x24]\n" + " add r0, r5, #0\n" + " mov r1, #0x1d\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x28]\n" + " add r0, r5, #0\n" + " mov r1, #0x2b\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x2c]\n" + " add r0, r5, #0\n" + " mov r1, #0x1e\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x30]\n" + " add r0, r5, #0\n" + " mov r1, #0x2c\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x34]\n" + " add r0, r5, #0\n" + " mov r1, #0x1f\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " str r0, [sp, #0x38]\n" + " add r0, r5, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x0\n" + " bl GetMonData\n" + " lsl r0, r0, #0x10\n" + " lsr r6, r0, #0x10\n" + " add r0, r5, #0\n" + " bl GetLevelFromMonExp\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp]\n" + " add r0, r5, #0\n" + " mov r1, #0x38\n" + " mov r2, sp\n" + " bl SetMonData\n" + " ldr r0, ._71\n" + " cmp r6, r0\n" + " bne ._69 @cond_branch\n" + " mov r0, #0x1\n" + " str r0, [sp, #0x4]\n" + " lsl r7, r6, #0x3\n" + " b ._70\n" + "._72:\n" + " .align 2, 0\n" + "._71:\n" + " .word 0x12f\n" + "._69:\n" + " ldr r1, ._80\n" + " lsl r2, r6, #0x3\n" + " sub r0, r2, r6\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x1\n" + " add r1, r0, r7\n" + " add r0, r4, #0\n" + " add r7, r2, #0\n" + " cmp r0, #0\n" + " bge ._73 @cond_branch\n" + " add r0, r0, #0x3\n" + "._73:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r4, [sp]\n" + " mul r0, r0, r4\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, r4\n" + " add r0, r0, #0xa\n" + " str r0, [sp, #0x4]\n" + "._70:\n" + " add r2, sp, #0x4\n" + " add r0, r5, #0\n" + " mov r1, #0x3a\n" + " bl SetMonData\n" + " ldr r1, ._80\n" + " sub r0, r7, r6\n" + " lsl r0, r0, #0x2\n" + " add r6, r0, r1\n" + " ldrb r0, [r6, #0x1]\n" + " lsl r0, r0, #0x1\n" + " mov r2, r9\n" + " add r1, r0, r2\n" + " mov r0, r8\n" + " cmp r0, #0\n" + " bge ._74 @cond_branch\n" + " add r0, r0, #0x3\n" + "._74:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x8]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x8\n" + " ldrh r1, [r4]\n" + " mov r2, #0x1\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x8]\n" + " add r0, r5, #0\n" + " mov r1, #0x3b\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x2]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, [sp, #0x20]\n" + " add r1, r0, r2\n" + " mov r0, sl\n" + " cmp r0, #0\n" + " bge ._75 @cond_branch\n" + " add r0, r0, #0x3\n" + "._75:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0xc]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0xc\n" + " ldrh r1, [r4]\n" + " mov r2, #0x2\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0xc]\n" + " add r0, r5, #0\n" + " mov r1, #0x3c\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x3]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, [sp, #0x24]\n" + " add r1, r0, r2\n" + " ldr r0, [sp, #0x28]\n" + " cmp r0, #0\n" + " bge ._76 @cond_branch\n" + " add r0, r0, #0x3\n" + "._76:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x10]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x10\n" + " ldrh r1, [r4]\n" + " mov r2, #0x3\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x10]\n" + " add r0, r5, #0\n" + " mov r1, #0x3d\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x4]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, [sp, #0x2c]\n" + " add r1, r0, r2\n" + " ldr r0, [sp, #0x30]\n" + " cmp r0, #0\n" + " bge ._77 @cond_branch\n" + " add r0, r0, #0x3\n" + "._77:\n" + " asr r0, r0, #0x2\n" + " add r0, r1, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x14]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x14\n" + " ldrh r1, [r4]\n" + " mov r2, #0x4\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x14]\n" + " add r0, r5, #0\n" + " mov r1, #0x3e\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldrb r0, [r6, #0x5]\n" + " lsl r0, r0, #0x1\n" + " ldr r1, [sp, #0x34]\n" + " add r2, r0, r1\n" + " ldr r0, [sp, #0x38]\n" + " cmp r0, #0\n" + " bge ._78 @cond_branch\n" + " add r0, r0, #0x3\n" + "._78:\n" + " asr r0, r0, #0x2\n" + " add r0, r2, r0\n" + " ldr r1, [sp]\n" + " mul r0, r0, r1\n" + " mov r1, #0x64\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r0, r0, #0x5\n" + " str r0, [sp, #0x18]\n" + " add r0, r5, #0\n" + " bl GetNature\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " add r4, sp, #0x18\n" + " ldrh r1, [r4]\n" + " mov r2, #0x5\n" + " bl nature_stat_mod\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x18]\n" + " add r0, r5, #0\n" + " mov r1, #0x3f\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldr r1, [sp, #0x4]\n" + " ldr r0, [sp, #0x1c]\n" + " cmp r1, r0\n" + " bge ._79 @cond_branch\n" + " str r1, [sp, #0x1c]\n" + "._79:\n" + " add r2, sp, #0x1c\n" + " add r0, r5, #0\n" + " mov r1, #0x39\n" + " bl SetMonData\n" + " add sp, sp, #0x3c\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._81:\n" + " .align 2, 0\n" + "._80:\n" + " .word gBaseStats\n" + "\n" + ); +} +#endif + void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest) { u32 value = 0; diff --git a/src/rom3.c b/src/rom3.c index 11239a681..2b719d14a 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -67,6 +67,10 @@ void sub_800B858(void) } } +#ifdef DEBUG +extern u8 gUnknown_02023A14_50; +#endif + void setup_poochyena_battle(void) { s32 i; @@ -93,6 +97,16 @@ void setup_poochyena_battle(void) } gUnknown_020239FC = 0; gUnknown_02024C78 = 0; + +#ifdef DEBUG + if (gUnknown_02023A14_50 & 0x80) + { + ewram[0x160fd] = 0; + ewram[0x160fe] = 0; + ewram[0x160ff] = 0; + ((u32 *) gBattleBuffersTransferData)[64]++; + } +#endif } void sub_800B950(void) diff --git a/src/rom6.c b/src/rom6.c index e71484b0a..1c0654538 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -1,4 +1,6 @@ #include "global.h" +#include "constants/map_objects.h" +#include "constants/songs.h" #include "rom6.h" #include "braille_puzzles.h" #include "field_effect.h" @@ -8,7 +10,6 @@ #include "pokemon_menu.h" #include "overworld.h" #include "script.h" -#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" @@ -116,6 +117,21 @@ static void sub_810B4CC(u8 taskId) DestroyTask(taskId); } +#ifdef DEBUG +void debug_sub_8120968(void) +{ + if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE) + { + gLastFieldPokeMenuOpened = 0; + sub_810B53C(); + } + else + { + ScriptContext2_Disable(); + } +} +#endif + bool8 SetUpFieldMove_RockSmash(void) { if (npc_before_player_of_type(0x56) == TRUE) diff --git a/src/roulette.c b/src/roulette.c index 6d79f9d38..ce95bc1c9 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -308,7 +308,10 @@ extern const u16 gUnknown_083FA632[]; extern const s8 gUnknown_083FA64A[0x2]; extern const s8 gUnknown_083FA64C[0x8][0x2]; - +#if DEBUG +EWRAM_DATA u8 unk_203955C[4] = { 0 }; +EWRAM_DATA u8 unk_2039560[4] = { 0 }; +#endif void sub_81150FC(void) diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d8e099130..4bf0cef09 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -6,6 +6,7 @@ #include "palette.h" #include "random.h" #include "main.h" +#include "menu.h" #include "script.h" #include "task.h" #include "sound.h" @@ -102,6 +103,31 @@ static void sub_81248AC(u8); // .rodata +#if DEBUG + +u8 debug_sub_8138D74(void); +u8 debug_sub_8138D8C(void); +u8 debug_sub_8138C14(void); +u8 debug_sub_8138C34(void); +u8 debug_sub_810CD9C(void); + +const u8 Str_842DBD0[] = _("CABLE CAR U"); +const u8 Str_842DBDC[] = _("CABLE CAR D"); +const u8 Str_842DBE8[] = _("ROULETTE1"); +const u8 Str_842DBF2[] = _("ROULETTE3"); +const u8 Str_842DBFC[] = _("View a MAIL"); + +const struct MenuAction gUnkDebug4Menu[] = +{ + {Str_842DBD0, debug_sub_8138D74}, + {Str_842DBDC, debug_sub_8138D8C}, + {Str_842DBE8, debug_sub_8138C14}, + {Str_842DBF2, debug_sub_8138C34}, + {Str_842DBFC, debug_sub_810CD9C}, +}; + +#endif + static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz"); static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz"); @@ -182,6 +208,158 @@ static const struct SpriteTemplate gSpriteTemplate_8401D40[] = { // .text +#if DEBUG + +__attribute__((naked)) +u8 debug_sub_8138C14(void) +{ + asm("\n\ + push {lr}\n\ + ldr r0, ._1\n\ + mov r1, #0x1\n\ + strb r1, [r0]\n\ + ldr r0, ._1 + 4\n\ + bl ScriptContext1_SetupScript\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ + pop {r1}\n\ + bx r1\n\ +._2:\n\ + .align 2, 0\n\ +._1:\n\ + .word unk_203955C\n\ + .word MauvilleCity_GameCorner_EventScript_1C407E"); +} + +__attribute__((naked)) +u8 debug_sub_8138C34(void) +{ + asm("\n\ + push {lr}\n\ + ldr r0, ._3\n\ + mov r1, #0x1\n\ + strb r1, [r0]\n\ + ldr r0, ._3 + 4\n\ + bl ScriptContext1_SetupScript\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ + pop {r1}\n\ + bx r1\n\ +._4:\n\ + .align 2, 0\n\ +._3:\n\ + .word unk_203955C\n\ + .word MauvilleCity_GameCorner_EventScript_1C40AC"); +} + +__attribute__((naked)) +u8 debug_sub_8138C54(void) +{ + asm("\n\ + push {r4, lr}\n\ + ldr r4, ._10\n\ + ldrh r0, [r4, #0x2e]\n\ + cmp r0, #0x40\n\ + bne ._5 @cond_branch\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + bl Menu_MoveCursor\n\ +._5:\n\ + ldrh r0, [r4, #0x2e]\n\ + cmp r0, #0x80\n\ + bne ._6 @cond_branch\n\ + mov r0, #0x1\n\ + bl Menu_MoveCursor\n\ +._6:\n\ + ldrh r1, [r4, #0x2e]\n\ + cmp r1, #0x1\n\ + beq ._7 @cond_branch\n\ + ldr r0, ._10 + 4\n\ + cmp r1, r0\n\ + bne ._8 @cond_branch\n\ + ldr r1, ._10 + 8\n\ + mov r0, #0x1\n\ + strh r0, [r1]\n\ +._7:\n\ + ldr r4, ._10 + 12\n\ + bl Menu_GetCursorPos\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x15\n\ + add r4, r4, #0x4\n\ + add r0, r0, r4\n\ + ldr r0, [r0]\n\ + bl _call_via_r0\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + b ._13\n\ +._11:\n\ + .align 2, 0\n\ +._10:\n\ + .word gMain\n\ + .word 0x101\n\ + .word gSpecialVar_0x8004\n\ + .word gUnkDebug4Menu\n\ +._8:\n\ + cmp r1, #0x2\n\ + beq ._12 @cond_branch\n\ + mov r0, #0x0\n\ + b ._13\n\ +._12:\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ +._13:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1"); +} + +__attribute__((naked)) +u8 debug_sub_8138CC4(void) +{ + asm("\n\ + push {lr}\n\ + add sp, sp, #0xfffffff8\n\ + ldr r1, ._14\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + bl Menu_EraseScreen\n\ + mov r0, #0x13\n\ + mov r1, #0x0\n\ + mov r2, #0x1d\n\ + mov r3, #0xc\n\ + bl Menu_DrawStdWindowFrame\n\ + ldr r3, ._14 + 4\n\ + mov r0, #0x14\n\ + mov r1, #0x1\n\ + mov r2, #0x5\n\ + bl Menu_PrintItems\n\ + mov r0, #0x0\n\ + str r0, [sp]\n\ + mov r0, #0x8\n\ + str r0, [sp, #0x4]\n\ + mov r0, #0x0\n\ + mov r1, #0x14\n\ + mov r2, #0x1\n\ + mov r3, #0x5\n\ + bl InitMenu\n\ + ldr r1, ._14 + 8\n\ + ldr r0, ._14 + 12\n\ + str r0, [r1]\n\ + mov r0, #0x0\n\ + add sp, sp, #0x8\n\ + pop {r1}\n\ + bx r1\n\ +._15:\n\ + .align 2, 0\n\ +._14:\n\ + .word gSpecialVar_0x8004\n\ + .word gUnkDebug4Menu\n\ + .word gCallback_03004AE8\n\ + .word debug_sub_8138C54+1"); +} + +#endif + static void CableCarTask1(u8 taskId) { if (!gPaletteFade.active) @@ -198,6 +376,46 @@ void CableCar(void) BeginNormalPaletteFade(-1, 0, 0, 16, 0); } +#if DEBUG + +__attribute__((naked)) +u8 debug_sub_8138D74(void) +{ + asm("\n\ + push {lr}\n\ + ldr r1, ._21\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + bl CloseMenu\n\ + bl CableCar\n\ + pop {r0}\n\ + bx r0\n\ +._22:\n\ + .align 2, 0\n\ +._21:\n\ + .word gSpecialVar_0x8004"); +} + +__attribute__((naked)) +u8 debug_sub_8138D8C(void) +{ + asm("\n\ + push {lr}\n\ + ldr r1, ._23\n\ + mov r0, #0x1\n\ + strh r0, [r1]\n\ + bl CloseMenu\n\ + bl CableCar\n\ + pop {r0}\n\ + bx r0\n\ +._24:\n\ + .align 2, 0\n\ +._23:\n\ + .word gSpecialVar_0x8004"); +} + +#endif + static void CableCarMainCallback_Setup(void) { u8 i; diff --git a/src/scene/new_game.c b/src/scene/new_game.c index 0279f99c6..d954fb3c8 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -1,4 +1,7 @@ #include "global.h" +#include "constants/maps.h" +#include "constants/species.h" +#include "clock.h" #include "new_game.h" #include "battle_records.h" #include "berry.h" @@ -20,6 +23,7 @@ #include "pokemon_storage_system.h" #include "random.h" #include "roamer.h" +#include "script_pokemon_80C4.h" #include "overworld.h" #include "rtc.h" #include "script.h" @@ -27,6 +31,10 @@ #include "text.h" #include "tv.h" +#ifdef DEBUG +extern u8 gUnknown_020297ED; +#endif + EWRAM_DATA u8 gDifferentSaveFile = 0; EWRAM_DATA u8 gUnknown_020297ED = 0; @@ -42,6 +50,18 @@ static const struct ContestWinner sEmptyMuseumPortrait = .trainerName = {EOS}, }; +#ifdef DEBUG +const s8 gUnknown_Debug_0823C788[][2] = +{ + { MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK) }, + { MAP_GROUP(OLDALE_TOWN_POKEMON_CENTER_2F), MAP_NUM(OLDALE_TOWN_POKEMON_CENTER_2F) }, + { MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN) }, + { MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F) } +}; + +const u8 gUnknown_Debug_0823C790[] = _("KRÖTE"); +#endif + void write_word_to_mem(u32 var, u8 *dataPtr) { dataPtr[0] = var; @@ -94,6 +114,30 @@ void ZeroBattleTowerData(void) CpuFill32(0, &gSaveBlock2.battleTower, sizeof(gSaveBlock2.battleTower)); } +#ifdef DEBUG +void debug_sub_8052E04() +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (gUnknown_Debug_0823C788[i][0] == gSaveBlock1.location.mapGroup && + gUnknown_Debug_0823C788[i][1] == gSaveBlock1.location.mapNum) + { + break; + } + } + + i++; + if (i >= 4) + { + i = 0; + } + + Overworld_SetWarpDestination(gUnknown_Debug_0823C788[i][0], gUnknown_Debug_0823C788[i][1], -1, -1, -1); +} +#endif + void WarpToTruck(void) { Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck @@ -109,6 +153,9 @@ void ClearSav2(void) void sub_8052E4C(void) { gDifferentSaveFile = 0; +#ifdef DEBUG + gUnknown_020297ED = 0; +#endif sub_808C0A0(); ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); @@ -161,3 +208,33 @@ void NewGameInitData(void) WarpToTruck(); ScriptContext2_RunNewScript(gUnknown_0819FA81); } + +#ifdef DEBUG +extern void debug_sub_80A3904(void); +extern void debug_sub_80A3714(void); +extern void debug_sub_8120F98(void); +extern void unref_sub_8070F90(void); + +void debug_sub_8057508(bool32 arg0) +{ + gUnknown_020297ED = 1; + NewGameInitData(); + gSaveBlock1.money = 999999; + FlagSet(FLAG_SYS_POKEMON_GET); + FlagSet(FLAG_SYS_POKEDEX_GET); + FlagSet(FLAG_SYS_POKENAV_GET); + FlagSet(FLAG_SYS_B_DASH); + ScriptGiveMon(SPECIES_TREECKO, 99, 0, 0, 0, 0); + + if (arg0 == TRUE) + SetMonData(&gPlayerParty[0], MON_DATA_NICKNAME, gUnknown_Debug_0823C790); + + debug_sub_80A3904(); + debug_sub_80A3714(); + debug_sub_8120F98(); + FlagSet(FLAG_SYS_HIPSTER_MEET); + sub_80EB8EC(); + unref_sub_8070F90(); + InitTimeBasedEvents(); +} +#endif diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 202b752a6..8d5c4da13 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -8,6 +8,7 @@ #include "m4a.h" #include "main.h" #include "main_menu.h" +#include "overworld.h" #include "palette.h" #include "reset_rtc_screen.h" #include "sound.h" @@ -353,6 +354,7 @@ static void Task_TitleScreenPhase1(u8); static void Task_TitleScreenPhase2(u8); static void Task_TitleScreenPhase3(u8); static void CB2_GoToMainMenu(void); +static void CB2_GoToTestMenu(void); static void CB2_GoToClearSaveDataScreen(void); static void CB2_GoToResetRtcScreen(void); static void CB2_GoToCopyrightScreen(void); @@ -829,6 +831,13 @@ static void Task_TitleScreenPhase3(u8 taskId) BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); SetMainCallback2(CB2_GoToResetRtcScreen); } +#ifdef DEBUG + else if (gMain.heldKeys == SELECT_BUTTON) + { + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + SetMainCallback2(CB2_GoToTestMenu); + } +#endif else { REG_BG2Y = 0; @@ -855,6 +864,14 @@ static void CB2_GoToMainMenu(void) SetMainCallback2(CB2_InitMainMenu); } +#ifdef DEBUG +static void CB2_GoToTestMenu(void) +{ + if (!UpdatePaletteFade()) + SetMainCallback2(CB2_InitTestMenu); +} +#endif + static void CB2_GoToCopyrightScreen(void) { if (!UpdatePaletteFade()) -- cgit v1.2.3 From 3ab6bf09d8d6bb86e83033e8a7138d02e3917c55 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 00:29:25 -0500 Subject: split out crash.c --- src/battle/battle_party_menu.c | 6 +-- src/debug/crash.c | 55 ++++++++++++++++++++++++++++ src/debug/matsuda_debug_menu.c | 62 +------------------------------ src/field/diploma.c | 2 +- src/field/item_use.c | 22 +++++------ src/field/money.c | 2 + src/pokemon/pokedex.c | 83 +++++++++++++++++++++++++++++++++++++++--- src/pokemon/pokemon_menu.c | 6 +-- 8 files changed, 154 insertions(+), 84 deletions(-) create mode 100644 src/debug/crash.c (limited to 'src') diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c index 68a97c536..ed8cf4583 100644 --- a/src/battle/battle_party_menu.c +++ b/src/battle/battle_party_menu.c @@ -40,7 +40,7 @@ extern u8 gUnknown_0202E8F6; extern u8 gUnknown_02038470[3]; extern u8 gUnknown_02038473; extern u8 gUnknown_020384F0; -extern void (*gUnknown_03004AE4)(); //don't know types yet +extern void (*gPokemonItemUseCallback)(); //don't know types yet extern struct PokemonStorage gPokemonStorage; extern void nullsub_14(); @@ -466,7 +466,7 @@ void HandleBattlePartyMenu(u8 taskId) { if (gUnknown_02038473 == 3 && GetItemEffectType(gSpecialVar_ItemId) == 10) { - gUnknown_03004AE4(taskId, gSpecialVar_ItemId, Task_80952E4); + gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4); return; } @@ -480,7 +480,7 @@ void HandleBattlePartyMenu(u8 taskId) else { sub_806D5A4(); - gUnknown_03004AE4(taskId, gSpecialVar_ItemId, Task_80952E4); + gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4); } } else diff --git a/src/debug/crash.c b/src/debug/crash.c new file mode 100644 index 000000000..702dbc32a --- /dev/null +++ b/src/debug/crash.c @@ -0,0 +1,55 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "text.h" +#include "palette.h" + +extern struct Window gUnknown_03004210; + +static void CB2_CrashIdle(void); + +// unused exception handler. Takes a string input describing the exception +// and halts on a black screen. Used in German Debug Ruby. +void Crash(u8 *text) +{ + u16 savedIme; + + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT = 8; + ResetTasks(); + ResetSpriteData(); + SetMainCallback2(CB2_CrashIdle); + DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000); + Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); + LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); + Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); +} + +static void CB2_CrashIdle(void) +{ + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; +} diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 1da337b04..b879584dd 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -37,7 +37,7 @@ extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; extern u16 gBattle_BG3_X; extern u16 gBattle_BG3_Y; -extern struct Window gUnknown_03004210; + extern u8 (*gCallback_03004AE8)(void); extern bool8 gReceivedRemoteLinkPlayers; @@ -1032,63 +1032,3 @@ u8 MatsudaDebugMenu_SetArtMuseumItems(void) CloseMenu(); return 1; } - -void unref_sub_80AB084(u8 *text) -{ - u16 savedIme; - u8 *addr; - size_t size; - - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; - - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = savedIme; - REG_DISPSTAT = 8; - ResetTasks(); - ResetSpriteData(); - SetMainCallback2(sub_80AB184); - - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); - Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); - LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); - Text_InitWindowAndPrintText(&gUnknown_03004210, text, 1, 9, 7); -} - -void sub_80AB184(void) -{ - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; -} diff --git a/src/field/diploma.c b/src/field/diploma.c index 978eca7eb..b31fc7dec 100644 --- a/src/field/diploma.c +++ b/src/field/diploma.c @@ -125,7 +125,7 @@ static void Task_DiplomaFadeOut(u8 taskId) static void DisplayDiplomaText(void) { - if (sub_8090FF4()) + if (CompletedNationalPokedex()) { REG_BG3HOFS = 256; StringCopy(gStringVar1, gOtherText_NationalDex); diff --git a/src/field/item_use.c b/src/field/item_use.c index 9346cf42e..cdad3f840 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -40,7 +40,7 @@ extern void (*gFieldItemUseCallback)(u8); extern void (*gFieldCallback)(void); extern void (*gUnknown_0300485C)(void); -extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc); +extern void (*gPokemonItemUseCallback)(u8, u16, TaskFunc); extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; @@ -832,7 +832,7 @@ void sub_80C9D98(u8 taskId) void ItemUseOutOfBattle_Medicine(u8 taskId) { - gUnknown_03004AE4 = UseMedicine; + gPokemonItemUseCallback = UseMedicine; sub_80C9D98(taskId); } @@ -850,26 +850,26 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId) break; } } - gUnknown_03004AE4 = sub_8070048; + gPokemonItemUseCallback = sub_8070048; gUnknown_02038561 = 4; ItemMenu_ConfirmNormalFade(taskId); } void ItemUseOutOfBattle_PPRecovery(u8 taskId) { - gUnknown_03004AE4 = DoPPRecoveryItemEffect; + gPokemonItemUseCallback = DoPPRecoveryItemEffect; sub_80C9D98(taskId); } void ItemUseOutOfBattle_PPUp(u8 taskId) { - gUnknown_03004AE4 = DoPPUpItemEffect; + gPokemonItemUseCallback = DoPPUpItemEffect; sub_80C9D98(taskId); } void ItemUseOutOfBattle_RareCandy(u8 taskId) { - gUnknown_03004AE4 = DoRareCandyItemEffect; + gPokemonItemUseCallback = DoRareCandyItemEffect; sub_80C9D98(taskId); } @@ -908,7 +908,7 @@ void sub_80C9F80(u8 var) void sub_80C9FC0(u8 var) { - gUnknown_03004AE4 = TeachMonTMMove; + gPokemonItemUseCallback = TeachMonTMMove; sub_80C9D98(var); } @@ -1009,7 +1009,7 @@ void ItemUseOutOfBattle_EscapeRope(u8 taskId) void ItemUseOutOfBattle_EvolutionStone(u8 var) { - gUnknown_03004AE4 = DoEvolutionStoneItemEffect; + gPokemonItemUseCallback = DoEvolutionStoneItemEffect; sub_80C9D98(var); } @@ -1078,19 +1078,19 @@ void sub_80CA3C0(u8 taskId) void ItemUseInBattle_Medicine(u8 var) { - gUnknown_03004AE4 = UseMedicine; + gPokemonItemUseCallback = UseMedicine; sub_80CA3C0(var); } void unref_sub_80CA410(u8 var) { - gUnknown_03004AE4 = sub_8070048; + gPokemonItemUseCallback = sub_8070048; sub_80CA3C0(var); } void ItemUseInBattle_PPRecovery(u8 var) { - gUnknown_03004AE4 = DoPPRecoveryItemEffect; + gPokemonItemUseCallback = DoPPRecoveryItemEffect; sub_80CA3C0(var); } diff --git a/src/field/money.c b/src/field/money.c index 6cd73f600..3b7268dbc 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -100,6 +100,8 @@ void GetMoneyAmountText(u8 *buffer, u32 amount, u8 arg2) width = 7; else if (amount > 99999) width = 6; + // A special sprite is used for 10000 in the decoration + // shop, so be sure to account for this. else if (amount > 10000) width = 5; else if (amount > 999) diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 4fb6a4920..bdd136ff5 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -4121,28 +4121,101 @@ bool8 CompletedHoennPokedex(void) return TRUE; } -u16 sub_8090FF4(void) +bool16 CompletedNationalPokedex(void) { u16 i; + // BUG: This function indexes pokemon checks by 0, but adds + // 1 before passing to GetSetPokedexFlag. Normally, this is + // fine, because GetSetPokedexFlag subtracts by 1 to get the + // array index value, but since the array is 0 indexed + // starting with Bulbasaur, values passed actually means that + // dex entries 152 (Chikorita) and 252 (Treecko) are skipped. + // Because an earlier Hoenn Dex check prevented Treecko from + // being skippable, it means that Chikorita is not required + // to obtain the National Diploma. This was fixed in Emerald. for (i = 0; i < 150; i++) { if (GetSetPokedexFlag(i + 1, 1) == 0) - return 0; + return FALSE; } for (i = 152; i < 250; i++) { if (GetSetPokedexFlag(i + 1, 1) == 0) - return 0; + return FALSE; } for (i = 252; i < 384; i++) { if (GetSetPokedexFlag(i + 1, 1) == 0) - return 0; + return FALSE; } - return 1; + return TRUE; } +/* +CompletedNationalPokedex: + push {r4, r5, lr} + mov r0, #0x0 +.L1236: + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r4, #0 + mov r1, #0x1 + bl GetSetPokedexFlag + lsl r0, r0, #0x18 + cmp r0, #0 + beq .L1252 @cond_branch + add r0, r4, #0 + cmp r0, #0x95 + bls .L1236 @cond_branch + mov r0, #0x98 +.L1242: + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r4, #0 + mov r1, #0x1 + bl GetSetPokedexFlag + lsl r0, r0, #0x18 + cmp r0, #0 + beq .L1252 @cond_branch + add r0, r4, #0 + cmp r0, #0xf9 + bls .L1242 @cond_branch + mov r0, #0xfc + ldr r5, .L1253 +.L1248: + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r4, #0 + mov r1, #0x1 + bl GetSetPokedexFlag + lsl r0, r0, #0x18 + cmp r0, #0 + bne .L1247 @cond_branch +.L1252: + mov r0, #0x0 + b .L1251 +.L1254: + .align 2, 0 +.L1253: + .word 0x17f +.L1247: + add r0, r4, #0 + cmp r0, r5 + bls .L1248 @cond_branch + mov r0, #0x1 +.L1251: + pop {r4, r5} + pop {r1} + bx r1 +.Lfe84: + .size CompletedNationalPokedex,.Lfe84-CompletedNationalPokedex + .align 2, 0 +*/ + static void sub_8091060(u16 a) { if (!(a & 0x100)) diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 70234ac48..a41e197f2 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -51,7 +51,7 @@ extern u8 gUnknown_0202E8F5; extern u8 gUnknown_0202E8F6; extern u8 gUnknown_02038561; extern u16 gUnknown_0202E8F8; -extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func); +extern void (*gPokemonItemUseCallback)(u8 taskID, u16 itemID, TaskFunc func); extern TaskFunc gUnknown_03005CF0; void sub_808A520(void); @@ -1013,7 +1013,7 @@ void sub_808B0C0(u8 taskID) { sub_806D5A4(); if (gUnknown_02038561 == 0) - gUnknown_03004AE4(taskID, gSpecialVar_ItemId, sub_808B224); + gPokemonItemUseCallback(taskID, gSpecialVar_ItemId, sub_808B224); if (gUnknown_02038561 == 1) { PlaySE(SE_SELECT); @@ -1042,7 +1042,7 @@ void sub_808B0C0(u8 taskID) static void sub_808B1EC(u8 taskID) { if (!gPaletteFade.active) - gUnknown_03004AE4(taskID, gSpecialVar_ItemId, sub_808B224); + gPokemonItemUseCallback(taskID, gSpecialVar_ItemId, sub_808B224); } static void sub_808B224(u8 taskID) -- cgit v1.2.3 From 4c15629b612da2e10ef2aee25cd5ecd5ebaf6bf4 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 00:30:54 -0500 Subject: oops --- src/debug/crash.c | 2 +- src/pokemon/pokedex.c | 64 --------------------------------------------------- 2 files changed, 1 insertion(+), 65 deletions(-) (limited to 'src') diff --git a/src/debug/crash.c b/src/debug/crash.c index 702dbc32a..85058d285 100644 --- a/src/debug/crash.c +++ b/src/debug/crash.c @@ -35,7 +35,7 @@ void Crash(u8 *text) ResetTasks(); ResetSpriteData(); SetMainCallback2(CB2_CrashIdle); - DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000); + DmaFill32Large(3, 0, (void *)VRAM, 0x18000, 0x1000); Text_LoadWindowTemplate(&gWindowTemplate_81E6FD8); Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6FD8); LoadFontDefaultPalette(&gWindowTemplate_81E6FD8); diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index bdd136ff5..faebe526a 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -4152,70 +4152,6 @@ bool16 CompletedNationalPokedex(void) return TRUE; } -/* -CompletedNationalPokedex: - push {r4, r5, lr} - mov r0, #0x0 -.L1236: - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r4, #0 - mov r1, #0x1 - bl GetSetPokedexFlag - lsl r0, r0, #0x18 - cmp r0, #0 - beq .L1252 @cond_branch - add r0, r4, #0 - cmp r0, #0x95 - bls .L1236 @cond_branch - mov r0, #0x98 -.L1242: - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r4, #0 - mov r1, #0x1 - bl GetSetPokedexFlag - lsl r0, r0, #0x18 - cmp r0, #0 - beq .L1252 @cond_branch - add r0, r4, #0 - cmp r0, #0xf9 - bls .L1242 @cond_branch - mov r0, #0xfc - ldr r5, .L1253 -.L1248: - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r4, #0 - mov r1, #0x1 - bl GetSetPokedexFlag - lsl r0, r0, #0x18 - cmp r0, #0 - bne .L1247 @cond_branch -.L1252: - mov r0, #0x0 - b .L1251 -.L1254: - .align 2, 0 -.L1253: - .word 0x17f -.L1247: - add r0, r4, #0 - cmp r0, r5 - bls .L1248 @cond_branch - mov r0, #0x1 -.L1251: - pop {r4, r5} - pop {r1} - bx r1 -.Lfe84: - .size CompletedNationalPokedex,.Lfe84-CompletedNationalPokedex - .align 2, 0 -*/ - static void sub_8091060(u16 a) { if (!(a & 0x100)) -- cgit v1.2.3 From c8e231256e15362047760d094f62db5ab52c660c Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Wed, 17 Jan 2018 05:47:02 +0000 Subject: Document sub_8121D1C, sub_8121D74 and gUnknown_084016BC These are left over from the Japanese games, which provide more variation to the attack string than the English games. --- src/battle/battle_message.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c index e9334ef61..ed7ab3a35 100644 --- a/src/battle/battle_message.c +++ b/src/battle/battle_message.c @@ -25,6 +25,8 @@ #include "../data/battle_strings_en.h" #endif +// This is four lists of moves which use a different attack string in Japanese +// to the default. See the documentation for sub_8121D74 for more detail. const u16 gUnknown_084016BC[] = { MOVE_SWORDS_DANCE, @@ -69,7 +71,7 @@ const u16 gUnknown_084016BC[] = MOVE_MUDDY_WATER, MOVE_IRON_DEFENSE, MOVE_BOUNCE, - MOVE_NONE, + 0, MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, @@ -77,7 +79,7 @@ const u16 gUnknown_084016BC[] = MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, - MOVE_NONE, + 0, MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, @@ -96,7 +98,7 @@ const u16 gUnknown_084016BC[] = MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, - MOVE_NONE, + 0, MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP, @@ -144,7 +146,7 @@ const u16 gUnknown_084016BC[] = MOVE_ENDEAVOR, MOVE_TICKLE, MOVE_COVET, - MOVE_NONE, + 0, }; const u8 gUnknown_084017A8[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // empty flags @@ -971,6 +973,10 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst) } } +// Loads one of two text strings into the provided buffer. This is functionally +// unused, since the value loaded into the buffer is not read; it loaded one of +// two particles (either "は" or "の") which works in tandem with sub_8121D74 +// below to effect changes in the meaning of the line. void sub_8121D1C(u8* textBuff) { s32 counter = 0; @@ -993,6 +999,24 @@ void sub_8121D1C(u8* textBuff) } } +// Appends "!" to the text buffer `dst`. In the original Japanese this looked +// into the table of moves at gUnknown_084016BC and varied the line accordingly. +// +// BattleText_Exclamation was a plain "!", used for any attack not on the list. +// It resulted in the translation "'s !". +// +// BattleText_Exclamation2 was "を つかった!". This resulted in the translation +// " used !", which was used for all attacks in English. +// +// BattleText_Exclamation3 was "した!". This was used for those moves whose +// names were verbs, such as Recover, and resulted in translations like " +// recovered itself!". +// +// BattleText_Exclamation4 was "を した!" This resulted in a translation of +// " did an !". +// +// BattleText_Exclamation5 was " こうげき!" This resulted in a translation of +// "'s attack!". void sub_8121D74(u8* dst) { s32 counter = 0; -- cgit v1.2.3 From bcf3fb87450883c9c26afec55f5f0ddc04864e84 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 12:07:40 -0600 Subject: add more debug data --- src/debug/start_menu_debug.c | 6130 ++++++++++++++++++++++++++++++++++++++++++ src/debug/unk_debug_menu_3.c | 797 ++++++ src/engine/sprite.c | 4 +- 3 files changed, 6929 insertions(+), 2 deletions(-) create mode 100644 src/debug/start_menu_debug.c create mode 100644 src/debug/unk_debug_menu_3.c (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c new file mode 100644 index 000000000..28f3a26d1 --- /dev/null +++ b/src/debug/start_menu_debug.c @@ -0,0 +1,6130 @@ +__attribute__((naked)) +void debug_sub_8076AC8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " ldr r2, ._3\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x1\n" + " ldr r0, ._3 + 4\n" + " add r1, r1, r0\n" + " str r1, [r2]\n" + " mov r4, #0x0\n" + " ldrb r0, [r1]\n" + " cmp r0, #0xff\n" + " beq ._1 @cond_branch\n" + "._2:\n" + " add r4, r4, #0x1\n" + " add r0, r1, r4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._2 @cond_branch\n" + "._1:\n" + " mov r0, #0x10\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuZeroFillWindowRect\n" + " lsl r3, r4, #0x1\n" + " add r3, r3, #0x1\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x10\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " bl MenuDrawTextWindow\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r3, ._3 + 8\n" + " ldr r0, ._3\n" + " ldr r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x11\n" + " mov r1, #0x1\n" + " add r2, r4, #0\n" + " bl PrintMenuItemsReordered\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0xc\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x11\n" + " mov r2, #0x1\n" + " add r3, r4, #0\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word 0x30006c4 @ gTileset1AnimLength\n" + " .word gUnknown_Debug_0839BBC1+0x153\n" + " .word gUnknown_Debug_0839BBC1+0xd3\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8076B4C() +{ + asm( + " push {lr}\n" + " ldr r0, ._6\n" + " bl FindTaskIdByFunc\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xff\n" + " beq ._5 @cond_branch\n" + " bl DestroyTask\n" + "._5:\n" + " pop {r0}\n" + " bx r0\n" + "._7:\n" + " .align 2, 0\n" + "._6:\n" + " .word debug_sub_8076BB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8076B68() +{ + asm( + " push {lr}\n" + " ldr r0, ._8\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r0, ._8 + 4\n" + " mov r1, #0x1\n" + " mov r2, #0x3\n" + " bl MenuPrint\n" + " ldr r0, ._8 + 8\n" + " mov r1, #0x1\n" + " mov r2, #0x9\n" + " bl MenuPrint\n" + " mov r0, #0x4\n" + " mov r1, #0xb\n" + " bl debug_sub_8077CF4\n" + " mov r0, #0x0\n" + " bl debug_sub_8076AC8\n" + " ldr r0, ._8 + 12\n" + " mov r1, #0x1\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._9:\n" + " .align 2, 0\n" + "._8:\n" + " .word gUnknown_Debug_0839BBB6\n" + " .word gUnknown_Debug_0839BBC1\n" + " .word gUnknown_Debug_0839BBA4\n" + " .word debug_sub_8076BB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8076BB4() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " ldr r0, ._13\n" + " add r5, r1, r0\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._10 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r4, r0\n" + " beq ._11 @cond_branch\n" + " ldr r2, ._13 + 4\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " ldr r0, ._13 + 8\n" + " ldr r0, [r0]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r2, r2, #0x4\n" + " add r0, r0, r2\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " b ._24\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word gTasks+0x8\n" + " .word gUnknown_Debug_0839BBC1+0xd3\n" + " .word 0x30006c4 @ gTileset1AnimLength\n" + "._10:\n" + " ldr r0, ._18\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._15 @cond_branch\n" + " ldrh r1, [r5]\n" + " mov r2, #0x0\n" + " ldsh r0, [r5, r2]\n" + " cmp r0, #0\n" + " bne ._16 @cond_branch\n" + " mov r0, #0x1\n" + " b ._20\n" + "._19:\n" + " .align 2, 0\n" + "._18:\n" + " .word gMain\n" + "._16:\n" + " sub r0, r1, #1\n" + " b ._20\n" + "._15:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._24 @cond_branch\n" + " ldrh r1, [r5]\n" + " mov r3, #0x0\n" + " ldsh r0, [r5, r3]\n" + " cmp r0, #0x1\n" + " bne ._22 @cond_branch\n" + " strh r2, [r5]\n" + " b ._23\n" + "._22:\n" + " add r0, r1, #1\n" + "._20:\n" + " strh r0, [r5]\n" + "._23:\n" + " ldrb r0, [r5]\n" + " bl debug_sub_8076AC8\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._24\n" + "._11:\n" + " bl DoSoftReset\n" + "._24:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076C6C() +{ + asm( + " push {lr}\n" + " ldr r0, ._25\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word debug_sub_8010800+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076C80() +{ + asm( + " push {lr}\n" + " bl debug_sub_8076B4C\n" + " bl DebugMenu_8076FEC\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076C90() +{ + asm( + " push {lr}\n" + " ldr r0, ._29\n" + " ldrh r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._27 @cond_branch\n" + " mov r0, #0x16\n" + " bl PlaySE\n" + " b ._28\n" + "._30:\n" + " .align 2, 0\n" + "._29:\n" + " .word gSaveFileStatus\n" + "._27:\n" + " bl debug_sub_8076B4C\n" + " ldr r0, ._31\n" + " bl SetMainCallback2\n" + "._28:\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._32:\n" + " .align 2, 0\n" + "._31:\n" + " .word CB2_ContinueSavedGame+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076CBC() +{ + asm( + " mov r0, #0x0\n" + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076CC0() +{ + asm( + " push {lr}\n" + " ldr r0, ._33\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._34:\n" + " .align 2, 0\n" + "._33:\n" + " .word debug_nullsub_66+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076CD4() +{ + asm( + " mov r0, #0x0\n" + " bx lr\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076CD8() +{ + asm( + " push {lr}\n" + " ldr r0, ._35\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._36:\n" + " .align 2, 0\n" + "._35:\n" + " .word unref_sub_80524BC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076CEC() +{ + asm( + " push {lr}\n" + " ldr r0, ._37\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._38:\n" + " .align 2, 0\n" + "._37:\n" + " .word CB2_InitMysteryEventMenu+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D00() +{ + asm( + " push {lr}\n" + " ldr r0, ._39\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._40:\n" + " .align 2, 0\n" + "._39:\n" + " .word debug_sub_815D15C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D14() +{ + asm( + " push {lr}\n" + " ldr r0, ._41\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._42:\n" + " .align 2, 0\n" + "._41:\n" + " .word sub_804B790+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D28() +{ + asm( + " push {lr}\n" + " ldr r0, ._43\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._44:\n" + " .align 2, 0\n" + "._43:\n" + " .word LinkTestScreen+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D3C() +{ + asm( + " push {lr}\n" + " ldr r0, ._45\n" + " bl SetMainCallback2\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._46:\n" + " .align 2, 0\n" + "._45:\n" + " .word CB2_StartSoundCheckMenu+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D50() +{ + asm( + " push {lr}\n" + " bl ClearSaveData\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D5C() +{ + asm( + " push {lr}\n" + " bl debug_sub_8076B4C\n" + " bl debug_sub_806F8F8\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076D6C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._51\n" + " add r4, r0, r1\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " cmp r1, #0x1\n" + " beq ._47 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._48 @cond_branch\n" + " cmp r1, #0\n" + " beq ._49 @cond_branch\n" + " b ._64\n" + "._52:\n" + " .align 2, 0\n" + "._51:\n" + " .word gTasks+0x8\n" + "._48:\n" + " cmp r1, #0x2\n" + " beq ._53 @cond_branch\n" + " b ._64\n" + "._49:\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._56\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " b ._55\n" + "._57:\n" + " .align 2, 0\n" + "._56:\n" + " .word gUnknown_Debug_0839BBC1+0x16b\n" + "._47:\n" + " ldr r0, ._60\n" + " ldrh r2, [r0, #0x2e]\n" + " and r1, r1, r2\n" + " cmp r1, #0\n" + " beq ._58 @cond_branch\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._60 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r0, #0x49\n" + " bl PlaySE\n" + " bl RtcReset\n" + "._55:\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4]\n" + " b ._64\n" + "._61:\n" + " .align 2, 0\n" + "._60:\n" + " .word gMain\n" + " .word gUnknown_Debug_0839BBC1+0x18b\n" + "._58:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._64 @cond_branch\n" + " add r0, r3, #0\n" + " bl DestroyTask\n" + " bl DoSoftReset\n" + " b ._64\n" + "._53:\n" + " ldr r0, ._65\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._64 @cond_branch\n" + " add r0, r3, #0\n" + " bl DestroyTask\n" + " bl DoSoftReset\n" + "._64:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._66:\n" + " .align 2, 0\n" + "._65:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076E18() +{ + asm( + " push {lr}\n" + " bl debug_sub_8076B4C\n" + " ldr r0, ._67\n" + " mov r1, #0xa\n" + " bl CreateTask\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._68:\n" + " .align 2, 0\n" + "._67:\n" + " .word DebugMenu_8076D6C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076E30() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " lsl r0, r3, #0x2\n" + " add r0, r0, r3\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._73\n" + " add r4, r0, r1\n" + " mov r0, #0x0\n" + " ldsh r1, [r4, r0]\n" + " cmp r1, #0x1\n" + " beq ._69 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._70 @cond_branch\n" + " cmp r1, #0\n" + " beq ._71 @cond_branch\n" + " b ._86\n" + "._74:\n" + " .align 2, 0\n" + "._73:\n" + " .word gTasks+0x8\n" + "._70:\n" + " cmp r1, #0x2\n" + " beq ._75 @cond_branch\n" + " b ._86\n" + "._71:\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._78\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " b ._77\n" + "._79:\n" + " .align 2, 0\n" + "._78:\n" + " .word gUnknown_Debug_0839BBC1+0x199\n" + "._69:\n" + " ldr r0, ._82\n" + " ldrh r2, [r0, #0x2e]\n" + " and r1, r1, r2\n" + " cmp r1, #0\n" + " beq ._80 @cond_branch\n" + " bl MenuDisplayMessageBox\n" + " bl sub_813B79C\n" + " ldr r0, ._82 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r0, #0x49\n" + " bl PlaySE\n" + "._77:\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4]\n" + " b ._86\n" + "._83:\n" + " .align 2, 0\n" + "._82:\n" + " .word gMain\n" + " .word gUnknown_Debug_0839BBC1+0x1bc\n" + "._80:\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._86 @cond_branch\n" + " add r0, r3, #0\n" + " bl DestroyTask\n" + " bl DoSoftReset\n" + " b ._86\n" + "._75:\n" + " ldr r0, ._87\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._86 @cond_branch\n" + " add r0, r3, #0\n" + " bl DestroyTask\n" + " bl DoSoftReset\n" + "._86:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._88:\n" + " .align 2, 0\n" + "._87:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076EDC() +{ + asm( + " push {lr}\n" + " bl debug_sub_8076B4C\n" + " ldr r0, ._89\n" + " mov r1, #0xa\n" + " bl CreateTask\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._90:\n" + " .align 2, 0\n" + "._89:\n" + " .word DebugMenu_8076E30+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076EF4() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xb\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r4, ._93\n" + " mov r0, #0x2\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " add r3, r4, #0\n" + " bl PrintMenuItems\n" + " mov r5, #0x0\n" + " add r4, r4, #0x4\n" + "._92:\n" + " lsl r0, r5, #0x3\n" + " add r0, r0, r4\n" + " ldr r1, [r0]\n" + " mov r0, #0x1\n" + " and r1, r1, r0\n" + " mov r0, #0xb6\n" + " cmp r1, #0\n" + " bne ._91 @cond_branch\n" + " mov r0, #0xb5\n" + "._91:\n" + " lsl r2, r5, #0x1\n" + " add r2, r2, #0x1\n" + " lsl r2, r2, #0x18\n" + " lsr r2, r2, #0x18\n" + " mov r1, #0xa\n" + " bl sub_8071F60\n" + " add r0, r5, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " cmp r5, #0x7\n" + " bls ._92 @cond_branch\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x9\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._94:\n" + " .align 2, 0\n" + "._93:\n" + " .word gUnknown_Debug_0839BBC1+0x203\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076F60() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " bl ProcessMenuInput\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " lsl r4, r4, #0x18\n" + " asr r4, r4, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._97 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r4, r0\n" + " bne ._96 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl debug_sub_8076B68\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + " b ._97\n" + "._96:\n" + " ldr r3, ._100\n" + " lsl r2, r2, #0x18\n" + " asr r2, r2, #0x15\n" + " add r0, r3, #4\n" + " add r0, r2, r0\n" + " ldrb r4, [r0]\n" + " ldr r0, ._100 + 4\n" + " mov r1, #0x1\n" + " and r1, r1, r4\n" + " strb r1, [r0, #0x8]\n" + " add r2, r2, r3\n" + " ldr r1, [r2]\n" + " bl StringCopy\n" + " mov r0, #0x80\n" + " and r4, r4, r0\n" + " cmp r4, #0\n" + " bne ._98 @cond_branch\n" + " mov r0, #0x0\n" + " bl debug_sub_8057508\n" + " b ._99\n" + "._101:\n" + " .align 2, 0\n" + "._100:\n" + " .word gUnknown_Debug_0839BBC1+0x203\n" + " .word gSaveBlock2\n" + "._98:\n" + " mov r0, #0x1\n" + " bl debug_sub_8057508\n" + "._99:\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + " ldr r0, ._102\n" + " bl SetMainCallback2\n" + "._97:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._103:\n" + " .align 2, 0\n" + "._102:\n" + " .word debug_sub_8058C00+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8076FEC() +{ + asm( + " push {lr}\n" + " bl DebugMenu_8076EF4\n" + " ldr r0, ._104\n" + " mov r1, #0xa\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._105:\n" + " .align 2, 0\n" + "._104:\n" + " .word DebugMenu_8076F60+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077004() +{ + asm( + " ldr r2, ._106\n" + " ldr r0, ._106 + 4\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._106 + 8\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " bx lr\n" + "._107:\n" + " .align 2, 0\n" + "._106:\n" + " .word 0x30006c4 @ gTileset1AnimLength\n" + " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n" + " .word gDebug0x839B9BC+0x1a8\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077020() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._109\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._108 @cond_branch\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + "._108:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._110:\n" + " .align 2, 0\n" + "._109:\n" + " .word gCallback_03004AE8\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077048() +{ + asm( + " push {lr}\n" + " ldr r0, ._111\n" + " ldr r1, ._111 + 4\n" + " str r1, [r0]\n" + " bl ScriptContext2_Enable\n" + " ldr r0, ._111 + 8\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " pop {r0}\n" + " bx r0\n" + "._112:\n" + " .align 2, 0\n" + "._111:\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_807706C+1\n" + " .word DebugMenu_8077020+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807706C() +{ + asm( + " push {lr}\n" + " ldr r0, ._113\n" + " bl InitMenuWindow\n" + " bl DebugMenu_8077004\n" + " bl DebugMenu_807719C\n" + " bl DebugMenu_80771EC\n" + " bl DebugMenu_8077238\n" + " ldr r1, ._113 + 4\n" + " ldr r0, ._113 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._114:\n" + " .align 2, 0\n" + "._113:\n" + " .word gWindowConfig_81E6CE4\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_807709C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807709C() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._120\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._115 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._120 + 4\n" + " strb r0, [r1]\n" + "._115:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._116 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._120 + 4\n" + " strb r0, [r1]\n" + "._116:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._117 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._120 + 8\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " bne ._118 @cond_branch\n" + " mov r0, #0x7\n" + " b ._119\n" + "._121:\n" + " .align 2, 0\n" + "._120:\n" + " .word gMain\n" + " .word 0x030006c0 @ gNumTilesetAnimDmas\n" + " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n" + "._118:\n" + " sub r0, r0, #0x1\n" + "._119:\n" + " strb r0, [r1]\n" + " bl DebugMenu_8077004\n" + " bl DebugMenu_807719C\n" + "._117:\n" + " ldr r0, ._125\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._122 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._125 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x7\n" + " bne ._123 @cond_branch\n" + " mov r0, #0x0\n" + " b ._124\n" + "._126:\n" + " .align 2, 0\n" + "._125:\n" + " .word gMain\n" + " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n" + "._123:\n" + " add r0, r0, #0x1\n" + "._124:\n" + " strb r0, [r1]\n" + " bl DebugMenu_8077004\n" + " bl DebugMenu_807719C\n" + "._122:\n" + " ldr r0, ._129\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._127 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r1, ._129 + 4\n" + " ldr r0, ._129 + 8\n" + " ldrb r2, [r0]\n" + " ldr r0, ._129 + 12\n" + " ldr r0, [r0]\n" + " add r0, r0, r2\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " add r1, r1, #0x4\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " bl gScriptFuncs_End+0x3cf4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " b ._132\n" + "._130:\n" + " .align 2, 0\n" + "._129:\n" + " .word gMain\n" + " .word gDebug0x839B9BC\n" + " .word 0x030006c0 @ gNumTilesetAnimDmas\n" + " .word 0x30006c4 @ gTileset1AnimLength\n" + "._127:\n" + " mov r0, #0xa\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._131 @cond_branch\n" + " mov r0, #0x0\n" + " b ._132\n" + "._131:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._132:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807719C() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0xe\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r3, ._133\n" + " ldr r0, ._133 + 4\n" + " ldr r0, [r0]\n" + " str r0, [sp]\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " mov r2, #0x8\n" + " bl PrintMenuItemsReordered\n" + " ldr r4, ._133 + 8\n" + " ldrb r0, [r4]\n" + " str r0, [sp]\n" + " mov r0, #0xd\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " mov r3, #0x8\n" + " bl InitMenu\n" + " strb r0, [r4]\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._134:\n" + " .align 2, 0\n" + "._133:\n" + " .word gDebug0x839B9BC\n" + " .word 0x30006c4 @ gTileset1AnimLength\n" + " .word 0x030006c0 @ gNumTilesetAnimDmas\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80771EC() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._135\n" + " ldr r1, ._135 + 4\n" + " bl StringCopy\n" + " ldr r4, ._135 + 8\n" + " mov r1, #0x4\n" + " ldsb r1, [r4, r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r1, #0x5\n" + " ldsb r1, [r4, r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, #0x13\n" + " mov r1, #0xc\n" + " mov r2, #0x1d\n" + " mov r3, #0xf\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._135\n" + " mov r1, #0x14\n" + " mov r2, #0xd\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._136:\n" + " .align 2, 0\n" + "._135:\n" + " .word gStringVar4\n" + " .word gUnknown_Debug_0839BBC1+0x243\n" + " .word gSaveBlock1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077238() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xffffffe8\n" + " ldr r1, ._139\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, sp, #0x4\n" + " mov r9, r0\n" + " ldr r1, ._139 + 4\n" + " mov r2, #0x3\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r1, sp, #0x8\n" + " mov sl, r1\n" + " ldr r1, ._139 + 8\n" + " mov r0, sl\n" + " mov r2, #0x3\n" + " bl gScriptFuncs_End+0x5bc4\n" + " mov r2, #0x0\n" + " str r2, [sp, #0x14]\n" + " add r4, sp, #0x10\n" + " mov r6, sp\n" + " add r6, r6, #0x12\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl PlayerGetDestCoords\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " mov r2, #0x0\n" + " ldsh r1, [r6, r2]\n" + " bl MapGridGetZCoordAt\n" + " mov r8, r0\n" + " mov r0, r8\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0x7\n" + " strh r0, [r4]\n" + " ldrh r0, [r6]\n" + " sub r0, r0, #0x7\n" + " strh r0, [r6]\n" + " ldr r7, ._139 + 12\n" + " add r0, r7, #0\n" + " mov r1, sp\n" + " bl StringCopy\n" + " add r5, sp, #0xc\n" + " mov r2, #0x0\n" + " ldsh r1, [r4, r2]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " bl StringAppend\n" + " add r0, r7, #0\n" + " mov r1, r9\n" + " bl StringAppend\n" + " mov r0, #0x0\n" + " ldsh r1, [r6, r0]\n" + " add r0, r5, #0\n" + " mov r2, #0x0\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " bl StringAppend\n" + " add r0, r7, #0\n" + " mov r1, sl\n" + " bl StringAppend\n" + " add r0, r5, #0\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " bl StringAppend\n" + " ldrb r0, [r7]\n" + " cmp r0, #0xff\n" + " beq ._137 @cond_branch\n" + " add r1, r7, #0\n" + "._138:\n" + " ldr r0, [sp, #0x14]\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " str r0, [sp, #0x14]\n" + " add r0, r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, #0xff\n" + " bne ._138 @cond_branch\n" + "._137:\n" + " mov r0, #0x1c\n" + " ldr r1, [sp, #0x14]\n" + " sub r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x10\n" + " mov r2, #0x1d\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._139 + 12\n" + " mov r1, #0x1d\n" + " ldr r2, [sp, #0x14]\n" + " sub r1, r1, r2\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add sp, sp, #0x18\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._140:\n" + " .align 2, 0\n" + "._139:\n" + " .word gUnknown_Debug_0839BBC1+0x246\n" + " .word gUnknown_Debug_0839BBC1+0x248\n" + " .word gUnknown_Debug_0839BBC1+0x24b\n" + " .word gStringVar4\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_Exit() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenSogabe() +{ + asm( + " push {lr}\n" + " bl unref_sub_814A414\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenTamada() +{ + asm( + " push {lr}\n" + " bl debug_sub_8075C30\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenKagaya() +{ + asm( + " push {lr}\n" + " bl InitKagayaDebugMenu_A\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenMatsuda() +{ + asm( + " push {lr}\n" + " bl unref_sub_80A9B28\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenNohara() +{ + asm( + " push {lr}\n" + " bl InitNoharaDebugMenu\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenWatanabe() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._141\n" + " bl SetMainCallback2\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._142:\n" + " .align 2, 0\n" + "._141:\n" + " .word InitWatanabeDebugMenu+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_EndSequenceDemo() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._143\n" + " bl SetMainCallback2\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._144:\n" + " .align 2, 0\n" + "._143:\n" + " .word sub_81439D0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_HallOfFame() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl GameClear\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenSizeComparison() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl InitSizeComparison\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_HoennNationalDex() +{ + asm( + " push {lr}\n" + " bl IsNationalPokedexEnabled\n" + " cmp r0, #0\n" + " beq ._145 @cond_branch\n" + " bl DisableNationalPokedex\n" + " b ._146\n" + "._145:\n" + " bl EnableNationalPokedex\n" + "._146:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077434() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x4\n" + " bhi ._165 @cond_branch\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._149\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._150:\n" + " .align 2, 0\n" + "._149:\n" + " .word ._148\n" + "._148:\n" + " .word ._151\n" + " .word ._152\n" + " .word ._153\n" + " .word ._154\n" + " .word ._155\n" + "._151:\n" + " ldr r0, ._157\n" + " mov r1, #0x1\n" + " mov r2, #0x4\n" + " bl GetEnigmaBerryChecksum\n" + " mov r0, #0xff\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " mov r1, #0xff\n" + " mov r2, #0xff\n" + " mov r3, #0x0\n" + " bl debug_sub_80C2D24\n" + " b ._165\n" + "._158:\n" + " .align 2, 0\n" + "._157:\n" + " .word gUnknown_Debug_0839BBC1+0x24e\n" + "._152:\n" + " ldr r0, ._160\n" + " mov r1, #0x2\n" + " mov r2, #0x0\n" + " bl GetEnigmaBerryChecksum\n" + " mov r0, #0xff\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " mov r1, #0xff\n" + " mov r2, #0x0\n" + " b ._159\n" + "._161:\n" + " .align 2, 0\n" + "._160:\n" + " .word gUnknown_Debug_0839BBC1+0x251\n" + "._153:\n" + " ldr r0, ._163\n" + " mov r1, #0x3\n" + " mov r2, #0x0\n" + " bl GetEnigmaBerryChecksum\n" + " mov r0, #0xff\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " mov r1, #0x0\n" + " b ._162\n" + "._164:\n" + " .align 2, 0\n" + "._163:\n" + " .word gUnknown_Debug_0839BBC1+0x255\n" + "._154:\n" + " ldr r0, ._166\n" + " mov r1, #0x4\n" + " mov r2, #0x0\n" + " bl GetEnigmaBerryChecksum\n" + " mov r0, #0xff\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0xff\n" + "._162:\n" + " mov r2, #0xff\n" + "._159:\n" + " mov r3, #0xff\n" + " bl debug_sub_80C2D24\n" + " b ._165\n" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gUnknown_Debug_0839BBC1+0x259\n" + "._155:\n" + " ldr r0, ._168\n" + " mov r1, #0x4\n" + " mov r2, #0x0\n" + " bl GetEnigmaBerryChecksum\n" + " mov r0, #0xff\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " mov r1, #0xff\n" + " mov r2, #0xff\n" + " mov r3, #0xff\n" + " bl debug_sub_80C2D24\n" + "._165:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._169:\n" + " .align 2, 0\n" + "._168:\n" + " .word gUnknown_Debug_0839BBC1+0x25d\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807750C() +{ + asm( + " push {lr}\n" + " ldr r0, ._170\n" + " bl DebugMenu_8077D78\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._171:\n" + " .align 2, 0\n" + "._170:\n" + " .word gUnknown_Debug_0839BBC1+0x263\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_SetRamBerry() +{ + asm( + " push {lr}\n" + " ldr r0, ._172\n" + " mov r1, #0xc\n" + " mov r2, #0x5\n" + " bl DebugMenu_8077D24\n" + " ldr r1, ._172 + 4\n" + " ldr r0, ._172 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._173:\n" + " .align 2, 0\n" + "._172:\n" + " .word gUnknown_Debug_0839BBC1+0x263\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_807750C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_ToggleBGM() +{ + asm( + " push {lr}\n" + " ldr r2, ._175\n" + " mov r1, #0x0\n" + " ldrb r0, [r2]\n" + " cmp r0, #0\n" + " bne ._174 @cond_branch\n" + " mov r1, #0x1\n" + "._174:\n" + " strb r1, [r2]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._176:\n" + " .align 2, 0\n" + "._175:\n" + " .word gDisableMusic\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_BattleForDebug() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl InitBattleForDebug\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_NationalDex() +{ + asm( + " push {r4, r5, lr}\n" + " mov r4, #0x0\n" + " ldr r5, ._178\n" + "._177:\n" + " add r4, r4, #0x1\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " bl GetNationalPokedexFlag\n" + " add r0, r4, #0\n" + " mov r1, #0x3\n" + " bl GetNationalPokedexFlag\n" + " cmp r4, r5\n" + " bls ._177 @cond_branch\n" + " ldr r1, ._178 + 4\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "._179:\n" + " .align 2, 0\n" + "._178:\n" + " .word 0x181\n" + " .word gUnknown_03005CE8\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_HoennDex() +{ + asm( + " push {r4, r5, lr}\n" + " mov r5, #0x0\n" + "._180:\n" + " add r5, r5, #0x1\n" + " lsl r5, r5, #0x10\n" + " lsr r5, r5, #0x10\n" + " add r0, r5, #0\n" + " bl HoennToNationalOrder\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " bl GetNationalPokedexFlag\n" + " add r0, r4, #0\n" + " mov r1, #0x3\n" + " bl GetNationalPokedexFlag\n" + " cmp r5, #0xc9\n" + " bls ._180 @cond_branch\n" + " ldr r1, ._181\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "._182:\n" + " .align 2, 0\n" + "._181:\n" + " .word gUnknown_03005CE8\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_CreatePKMN() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl InitCreatePokemon\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_ViewPokemonGraphics() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl InitSeePokemonGraphics\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenSeeTrainers() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl InitSeeTrainers\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenMori() +{ + asm( + " push {lr}\n" + " bl InitMoriDebugMenu\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenTomomichi() +{ + asm( + " push {lr}\n" + " bl InitTomomichiDebugWindow\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenAoki() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenTaya() +{ + asm( + " push {lr}\n" + " bl InitTayaDebugWindow\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenNakamura() +{ + asm( + " push {lr}\n" + " bl InitNakamuraDebugMenu\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenIwasawa() +{ + asm( + " push {lr}\n" + " bl debug_sub_8138CC4\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_Teleport() +{ + asm( + " push {lr}\n" + " bl sub_8053570\n" + " bl sub_8080E88\n" + " bl ScriptContext2_Enable\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_EditPKMN() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " bl debug_sub_815FFDC\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80776B4() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff8\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r1, ._183\n" + " mov r0, sp\n" + " mov r2, #0x7\n" + " bl gScriptFuncs_End+0x5bc4\n" + " lsl r3, r4, #0x1\n" + " lsl r5, r4, #0x19\n" + " lsr r5, r5, #0x18\n" + " add r3, r3, #0x1\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x19\n" + " add r1, r5, #0\n" + " mov r2, #0x1d\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._183 + 4\n" + " ldrb r0, [r0]\n" + " ASR r0, r4\n" + " mov r1, #0x1\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, sp\n" + " mov r1, #0x19\n" + " add r2, r5, #0\n" + " bl MenuPrint\n" + " add sp, sp, #0x8\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word gUnknown_Debug_0839BBC1+0x28b\n" + " .word 0x30006c8 @ gTileset2AnimLength\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077704() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xffffffec\n" + " ldr r1, ._185\n" + " mov r0, sp\n" + " mov r2, #0x11\n" + " bl gScriptFuncs_End+0x5bc4\n" + " mov r0, #0x13\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x8\n" + " bl MenuFillWindowRectWithBlankTile\n" + " mov r0, sp\n" + " mov r1, #0x15\n" + " mov r2, #0x0\n" + " bl MenuPrint\n" + " ldr r2, ._185 + 4\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x13\n" + " ldrh r0, [r0]\n" + " lsr r0, r0, #0x8\n" + " mov r1, #0xf\n" + " and r0, r0, r1\n" + " strb r0, [r2]\n" + " mov r0, #0x0\n" + " bl DebugMenu_80776B4\n" + " mov r0, #0x1\n" + " bl DebugMenu_80776B4\n" + " mov r0, #0x2\n" + " bl DebugMenu_80776B4\n" + " mov r0, #0x3\n" + " bl DebugMenu_80776B4\n" + " add sp, sp, #0x14\n" + " pop {r0}\n" + " bx r0\n" + "._186:\n" + " .align 2, 0\n" + "._185:\n" + " .word gUnknown_Debug_0839BBC1+0x292\n" + " .word 0x30006c8 @ gTileset2AnimLength\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077760() +{ + asm( + " push {r4, r5, lr}\n" + " ldr r2, ._190\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " add r5, r2, #0\n" + " cmp r0, #0\n" + " beq ._187 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " bl MoveMenuCursor\n" + " ldr r1, ._190 + 4\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._188 @cond_branch\n" + " sub r0, r0, #0x1\n" + " b ._189\n" + "._191:\n" + " .align 2, 0\n" + "._190:\n" + " .word gMain\n" + " .word 0x030006b0+0x8 @ gMenu+0x8\n" + "._188:\n" + " mov r0, #0x3\n" + "._189:\n" + " strb r0, [r1]\n" + "._187:\n" + " ldrh r1, [r5, #0x2e]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._192 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + " bl MoveMenuCursor\n" + " ldr r1, ._195\n" + " ldrb r0, [r1]\n" + " cmp r0, #0x3\n" + " beq ._193 @cond_branch\n" + " add r0, r0, #0x1\n" + " b ._194\n" + "._196:\n" + " .align 2, 0\n" + "._195:\n" + " .word 0x030006b0+0x8 @ gMenu+0x8\n" + "._193:\n" + " mov r0, #0x0\n" + "._194:\n" + " strb r0, [r1]\n" + "._192:\n" + " ldrh r1, [r5, #0x2e]\n" + " mov r0, #0x30\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._197 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r4, ._201\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x1\n" + " LSL r1, r0\n" + " ldrb r0, [r4]\n" + " eor r1, r1, r0\n" + " strb r1, [r4]\n" + " bl GetMenuCursorPos\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl DebugMenu_80776B4\n" + "._197:\n" + " ldrh r2, [r5, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " bne ._198 @cond_branch\n" + " mov r0, #0x2\n" + " and r0, r0, r2\n" + " cmp r0, #0\n" + " beq ._199 @cond_branch\n" + "._198:\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x13\n" + " ldrh r0, [r2]\n" + " ldr r1, ._201 + 4\n" + " and r1, r1, r0\n" + " ldr r0, ._201\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x8\n" + " add r1, r1, r0\n" + " strh r1, [r2]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._200\n" + "._202:\n" + " .align 2, 0\n" + "._201:\n" + " .word 0x30006c8 @ gTileset2AnimLength\n" + " .word 0xf0ff\n" + "._199:\n" + " mov r0, #0x0\n" + "._200:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_SwitchBG() +{ + asm( + " push {lr}\n" + " add sp, sp, #0xfffffff8\n" + " bl MenuZeroFillScreen\n" + " bl DebugMenu_8077704\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, #0x6\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x0\n" + " mov r1, #0x14\n" + " mov r2, #0x0\n" + " mov r3, #0x4\n" + " bl InitMenu\n" + " ldr r1, ._203\n" + " ldr r0, ._203 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " add sp, sp, #0x8\n" + " pop {r1}\n" + " bx r1\n" + "._204:\n" + " .align 2, 0\n" + "._203:\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077760+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807786C() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffff8\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " ldr r1, ._205\n" + " mov r0, sp\n" + " mov r2, #0x7\n" + " bl gScriptFuncs_End+0x5bc4\n" + " mov r0, #0x19\n" + " mov r1, #0x0\n" + " mov r2, #0x1d\n" + " mov r3, #0x3\n" + " bl MenuDrawTextWindow\n" + " lsl r0, r4, #0x1\n" + " add r0, r0, r4\n" + " add r0, r0, sp\n" + " mov r1, #0x1a\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " add sp, sp, #0x8\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._206:\n" + " .align 2, 0\n" + "._205:\n" + " .word gUnknown_Debug_0839BBC1+0x2a3\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80778A8() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._211\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x30\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._207 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r2, ._211 + 4\n" + " ldrb r0, [r2]\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " strb r0, [r2]\n" + " ldrb r0, [r2]\n" + " bl DebugMenu_807786C\n" + "._207:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._208 @cond_branch\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._209 @cond_branch\n" + "._208:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._210\n" + "._212:\n" + " .align 2, 0\n" + "._211:\n" + " .word gMain\n" + " .word sWildEncountersDisabled\n" + "._209:\n" + " mov r0, #0x0\n" + "._210:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_ControlEncounter() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._213\n" + " ldrb r0, [r0]\n" + " bl DebugMenu_807786C\n" + " ldr r1, ._213 + 4\n" + " ldr r0, ._213 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._214:\n" + " .align 2, 0\n" + "._213:\n" + " .word sWildEncountersDisabled\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_80778A8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_UseHM() +{ + asm( + " ldr r1, ._215\n" + " ldr r0, ._215 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " bx lr\n" + "._216:\n" + " .align 2, 0\n" + "._215:\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077C14+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077934() +{ + asm( + " push {lr}\n" + " mov r1, #0x0\n" + " ldr r3, ._218\n" + " mov r2, #0x1\n" + "._217:\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, #0x63\n" + " bls ._217 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._219:\n" + " .align 2, 0\n" + "._218:\n" + " .word gSaveBlock1+0x97a\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077954() +{ + asm( + " push {lr}\n" + " mov r1, #0x0\n" + " ldr r3, ._222\n" + " mov r2, #0x0\n" + "._221:\n" + " add r0, r1, r3\n" + " strb r2, [r0]\n" + " add r1, r1, #0x1\n" + " cmp r1, #0x63\n" + " bls ._221 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._223:\n" + " .align 2, 0\n" + "._222:\n" + " .word gSaveBlock1+0x97a\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077974() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r1, ._226\n" + " mov r0, #0x4\n" + " ldsb r0, [r1, r0]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " ldrb r1, [r1, #0x5]\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " bl unref_sub_8082C2C\n" + " cmp r0, #0\n" + " beq ._224 @cond_branch\n" + " ldr r0, ._226 + 4\n" + " ldr r1, ._226 + 8\n" + " bl StringCopy\n" + " b ._225\n" + "._227:\n" + " .align 2, 0\n" + "._226:\n" + " .word gSaveBlock1\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_0839BBC1+0x2cc\n" + "._224:\n" + " ldr r0, ._230\n" + " ldr r1, ._230 + 4\n" + " bl StringCopy\n" + "._225:\n" + " ldr r1, ._230 + 8\n" + " mov r0, #0x4\n" + " ldsb r0, [r1, r0]\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " ldrb r1, [r1, #0x5]\n" + " lsl r1, r1, #0x18\n" + " asr r1, r1, #0x18\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " bl sub_8082C0C\n" + " cmp r0, #0\n" + " beq ._228 @cond_branch\n" + " ldr r0, ._230 + 12\n" + " ldr r1, ._230 + 16\n" + " bl StringCopy\n" + " b ._229\n" + "._231:\n" + " .align 2, 0\n" + "._230:\n" + " .word gStringVar1\n" + " .word gUnknown_Debug_0839BBC1+0x2cf\n" + " .word gSaveBlock1\n" + " .word gStringVar2\n" + " .word gUnknown_Debug_0839BBC1+0x2cc\n" + "._228:\n" + " ldr r0, ._232\n" + " ldr r1, ._232 + 4\n" + " bl StringCopy\n" + "._229:\n" + " ldr r0, ._232 + 8\n" + " bl sub_8071F40\n" + " ldr r1, ._232 + 12\n" + " ldr r0, ._232 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._233:\n" + " .align 2, 0\n" + "._232:\n" + " .word gStringVar2\n" + " .word gUnknown_Debug_0839BBC1+0x2cf\n" + " .word gUnknown_Debug_0839BBC1+0x2aa\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077DB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077A20() +{ + asm( + " push {lr}\n" + " ldr r0, ._234\n" + " ldr r1, ._234 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xff\n" + " strh r1, [r0]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._235:\n" + " .align 2, 0\n" + "._234:\n" + " .word gSaveBlock1\n" + " .word 0x978\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077A40() +{ + asm( + " push {lr}\n" + " ldr r0, ._236\n" + " ldr r1, ._236 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " strh r1, [r0]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._237:\n" + " .align 2, 0\n" + "._236:\n" + " .word gSaveBlock1\n" + " .word 0x978\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077A60() +{ + asm( + " push {lr}\n" + " ldr r0, ._238\n" + " bl DebugMenu_8077D78\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._239:\n" + " .align 2, 0\n" + "._238:\n" + " .word gUnknown_Debug_0839BBC1+0x323\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_RematchTrainers() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._240\n" + " mov r1, #0xd\n" + " mov r2, #0x5\n" + " bl DebugMenu_8077D24\n" + " ldr r1, ._240 + 4\n" + " ldr r0, ._240 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._241:\n" + " .align 2, 0\n" + "._240:\n" + " .word gUnknown_Debug_0839BBC1+0x323\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077A60+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077A9C() +{ + asm( + " push {lr}\n" + " ldr r1, ._242\n" + " mov r0, #0x1e\n" + " strb r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._243:\n" + " .align 2, 0\n" + "._242:\n" + " .word gNumSafariBalls\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077AB4() +{ + asm( + " push {lr}\n" + " ldr r1, ._244\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._245:\n" + " .align 2, 0\n" + "._244:\n" + " .word gNumSafariBalls\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077ACC() +{ + asm( + " push {lr}\n" + " ldr r1, ._246\n" + " mov r2, #0xfa\n" + " lsl r2, r2, #0x1\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._247:\n" + " .align 2, 0\n" + "._246:\n" + " .word gSafariZoneStepCounter\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077AE8() +{ + asm( + " push {lr}\n" + " ldr r1, ._248\n" + " mov r0, #0x1\n" + " strh r0, [r1]\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._249:\n" + " .align 2, 0\n" + "._248:\n" + " .word gSafariZoneStepCounter\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077B00() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " bl unref_sub_80C853C\n" + " cmp r0, #0\n" + " beq ._250 @cond_branch\n" + " ldr r0, ._252\n" + " bl sub_8071F40\n" + " b ._251\n" + "._253:\n" + " .align 2, 0\n" + "._252:\n" + " .word gUnknown_Debug_0839BBC1+0x353\n" + "._250:\n" + " ldr r0, ._254\n" + " bl sub_8071F40\n" + "._251:\n" + " ldr r1, ._254 + 4\n" + " ldr r0, ._254 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._255:\n" + " .align 2, 0\n" + "._254:\n" + " .word gUnknown_Debug_0839BBC1+0x35e\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077DB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077B3C() +{ + asm( + " push {lr}\n" + " ldr r0, ._256\n" + " bl DebugMenu_8077D78\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._257:\n" + " .align 2, 0\n" + "._256:\n" + " .word gUnknown_Debug_0839BBC1+0x3ab\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_Safari() +{ + asm( + " push {lr}\n" + " bl GetSafariZoneFlag\n" + " cmp r0, #0\n" + " beq ._258 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._260\n" + " mov r1, #0xe\n" + " mov r2, #0x5\n" + " bl DebugMenu_8077D24\n" + " ldr r0, ._260 + 4\n" + " ldr r1, ._260 + 8\n" + " ldrh r1, [r1]\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._260 + 12\n" + " bl sub_8071F40\n" + " ldr r1, ._260 + 16\n" + " ldr r0, ._260 + 20\n" + " str r0, [r1]\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x0\n" + " b ._259\n" + "._261:\n" + " .align 2, 0\n" + "._260:\n" + " .word gUnknown_Debug_0839BBC1+0x3ab\n" + " .word gStringVar1\n" + " .word gSafariZoneStepCounter\n" + " .word gUnknown_Debug_0839BBC1+0x34b\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077B3C+1\n" + "._258:\n" + " bl CloseMenu\n" + " mov r0, #0x16\n" + " bl PlaySE\n" + " mov r0, #0x1\n" + "._259:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077BB4() +{ + asm( + " push {lr}\n" + " bl debug_sub_80AFEE4\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077BC0() +{ + asm( + " push {lr}\n" + " bl debug_sub_8122080\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077BCC() +{ + asm( + " push {lr}\n" + " bl debug_sub_8120968\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077BD8() +{ + asm( + " push {lr}\n" + " bl debug_sub_8130318\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077BE4() +{ + asm( + " push {lr}\n" + " bl debug_sub_80986AC\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077BF4() +{ + asm( + " push {lr}\n" + " bl debug_sub_80D93F4\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077C00() +{ + asm( + " push {lr}\n" + " ldr r0, ._262\n" + " bl DebugMenu_8077D78\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._263:\n" + " .align 2, 0\n" + "._262:\n" + " .word gUnknown_Debug_0839BBC1+0x3d3\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077C14() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._264\n" + " mov r1, #0xa\n" + " mov r2, #0x9\n" + " bl DebugMenu_8077D24\n" + " ldr r1, ._264 + 4\n" + " ldr r0, ._264 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._265:\n" + " .align 2, 0\n" + "._264:\n" + " .word gUnknown_Debug_0839BBC1+0x3d3\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077C00+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077C3C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " mov sl, r0\n" + " add r7, r1, #0\n" + " ldr r0, ._271\n" + " ldr r1, ._271 + 4\n" + " str r1, [r0]\n" + " mov r1, #0x0\n" + " strb r1, [r7]\n" + " add r7, r7, #0x1\n" + " strb r1, [r7]\n" + " add r7, r7, #0x1\n" + " mov r3, #0x0\n" + " mov r8, r0\n" + "._269:\n" + " mov r5, #0x0\n" + " ldr r1, ._271\n" + " ldr r0, [r1]\n" + " ldr r2, [r0, #0x4]\n" + " mov r4, #0x0\n" + " ldr r1, [r0, #0x8]\n" + " add r3, r3, #0x1\n" + " mov r9, r3\n" + " cmp r5, r1\n" + " bge ._266 @cond_branch\n" + " add r3, r0, #0\n" + " add r6, r1, #0\n" + "._267:\n" + " ldr r0, [r3, #0xc]\n" + " add r0, r0, r4\n" + " add r0, r0, sl\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x30\n" + " mul r0, r0, r2\n" + " add r5, r5, r0\n" + " add r4, r4, #0x1\n" + " add r0, r2, #0\n" + " mov r1, #0xa\n" + " str r3, [sp]\n" + " bl gScriptFuncs_End+0x3d30\n" + " add r2, r0, #0\n" + " ldr r3, [sp]\n" + " cmp r4, r6\n" + " blt ._267 @cond_branch\n" + "._266:\n" + " mov r0, r8\n" + " ldr r1, [r0]\n" + " ldr r0, [r1]\n" + " cmp r0, r5\n" + " bcs ._268 @cond_branch\n" + " add r5, r0, #0\n" + "._268:\n" + " ldrb r3, [r1, #0x8]\n" + " add r0, r7, #0\n" + " add r1, r5, #0\n" + " mov r2, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r7, r0, #0\n" + " mov r3, r9\n" + " mov r1, r8\n" + " ldr r0, [r1]\n" + " add r0, r0, #0x10\n" + " str r0, [r1]\n" + " cmp r3, #0x1\n" + " ble ._269 @cond_branch\n" + " mov r1, sl\n" + " ldrb r0, [r1, #0x1d]\n" + " add r0, r0, #0x7a\n" + " strb r0, [r7]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0xf6\n" + " bls ._270 @cond_branch\n" + " mov r0, #0xf6\n" + " strb r0, [r7]\n" + "._270:\n" + " mov r0, #0xff\n" + " strb r0, [r7, #0x1]\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._272:\n" + " .align 2, 0\n" + "._271:\n" + " .word 0x030006b0+0xc @ gMenu+0xc\n" + " .word gUnknown_Debug_0839BBC1+0x427\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_8077CF4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r4, r0, #0\n" + " add r5, r1, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " ldr r0, ._273\n" + " ldr r6, ._273 + 4\n" + " add r1, r6, #0\n" + " bl DebugMenu_8077C3C\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl MenuPrint\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._274:\n" + " .align 2, 0\n" + "._273:\n" + " .word BuildDateTime\n" + " .word gStringVar4\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077D24() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffff8\n" + " add r6, r0, #0\n" + " add r4, r1, #0\n" + " add r5, r2, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " bl MenuZeroFillScreen\n" + " lsl r3, r5, #0x1\n" + " add r3, r3, #0x1\n" + " lsl r3, r3, #0x18\n" + " lsr r3, r3, #0x18\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " add r2, r4, #0\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x1\n" + " mov r1, #0x1\n" + " add r2, r5, #0\n" + " add r3, r6, #0\n" + " bl PrintMenuItems\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " sub r4, r4, #0x1\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " str r4, [sp, #0x4]\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " add r3, r5, #0\n" + " bl InitMenu\n" + " add sp, sp, #0x8\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077D78() +{ + asm( + " push {r4, r5, lr}\n" + " add r5, r0, #0\n" + " bl ProcessMenuInput\n" + " lsl r0, r0, #0x18\n" + " asr r4, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r4, r0\n" + " beq ._275 @cond_branch\n" + " add r0, r0, #0x1\n" + " cmp r4, r0\n" + " beq ._276 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._278\n" + " lsl r1, r4, #0x3\n" + " add r1, r1, r5\n" + " ldr r1, [r1, #0x4]\n" + " str r1, [r0]\n" + "._275:\n" + " mov r0, #0x0\n" + " b ._277\n" + "._279:\n" + " .align 2, 0\n" + "._278:\n" + " .word gCallback_03004AE8\n" + "._276:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._277:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077DB4() +{ + asm( + " push {lr}\n" + " ldr r0, ._282\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._280 @cond_branch\n" + " mov r0, #0x0\n" + " b ._281\n" + "._283:\n" + " .align 2, 0\n" + "._282:\n" + " .word gMain\n" + "._280:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._281:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077DD8() +{ + asm( + " push {r4, r5, lr}\n" + " add r4, r0, #0\n" + " add r5, r1, #0\n" + " lsl r3, r3, #0x10\n" + " lsr r3, r3, #0x10\n" + " add r1, r3, #0\n" + " mov r0, #0x80\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._284 @cond_branch\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0x1\n" + " b ._285\n" + "._284:\n" + " mov r0, #0x40\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._286 @cond_branch\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + " b ._287\n" + "._286:\n" + " mov r0, #0x20\n" + " and r0, r0, r3\n" + " cmp r0, #0\n" + " beq ._288 @cond_branch\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0xa\n" + "._285:\n" + " strh r0, [r4]\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, r5\n" + " bge ._293 @cond_branch\n" + " strh r2, [r4]\n" + " b ._293\n" + "._288:\n" + " mov r0, #0x10\n" + " and r1, r1, r0\n" + " cmp r1, #0\n" + " bne ._291 @cond_branch\n" + " mov r0, #0x0\n" + " b ._292\n" + "._291:\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0xa\n" + "._287:\n" + " strh r0, [r4]\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, r2\n" + " ble ._293 @cond_branch\n" + " strh r5, [r4]\n" + "._293:\n" + " mov r0, #0x1\n" + "._292:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077E40() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " ldr r0, ._297\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._294 @cond_branch\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._295 @cond_branch\n" + "._294:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " b ._302\n" + "._298:\n" + " .align 2, 0\n" + "._297:\n" + " .word gMain\n" + "._295:\n" + " mov r0, #0x30\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._299 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " cmp r4, #0\n" + " beq ._300 @cond_branch\n" + " mov r0, #0x1\n" + " bl DebugMenu_807786C\n" + " mov r0, #0x0\n" + " b ._302\n" + "._300:\n" + " mov r0, #0x0\n" + " bl DebugMenu_807786C\n" + " mov r0, #0x1\n" + " b ._302\n" + "._299:\n" + " add r0, r4, #0\n" + "._302:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_MakeItems() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl DebugMenu_8077EAC\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077EAC() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._303\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl MenuZeroFillScreen\n" + " ldr r1, ._303 + 4\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x1\n" + " strh r1, [r0, #0xa]\n" + " strh r1, [r0, #0xc]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._304:\n" + " .align 2, 0\n" + "._303:\n" + " .word DebugMenu_8077F40+1\n" + " .word gTasks\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077EE0() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r4, r0, #0\n" + " add r6, r1, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " lsl r6, r6, #0x10\n" + " lsr r6, r6, #0x10\n" + " mov r0, #0x4\n" + " mov r1, #0x11\n" + " mov r2, #0x16\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r5, ._305\n" + " add r0, r5, #0\n" + " add r1, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x4\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r4, #0\n" + " bl ItemId_GetItem\n" + " mov r1, #0x8\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " add r0, r5, #0\n" + " add r1, r6, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r5, #0\n" + " mov r1, #0x12\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._306:\n" + " .align 2, 0\n" + "._305:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077F40() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r4, r0, #0x2\n" + " add r4, r4, r0\n" + " lsl r4, r4, #0x3\n" + " ldr r0, ._307\n" + " add r4, r4, r0\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._307 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldrh r0, [r4, #0xa]\n" + " ldrh r1, [r4, #0xc]\n" + " bl DebugMenu_8077EE0\n" + " ldr r0, ._307 + 8\n" + " str r0, [r4]\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._308:\n" + " .align 2, 0\n" + "._307:\n" + " .word gTasks\n" + " .word gDebug0x839C008\n" + " .word DebugMenu_8077F7C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077F7C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " ldr r0, ._311\n" + " add r4, r1, r0\n" + " ldr r3, ._311 + 4\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._309 @cond_branch\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._311 + 8\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldrh r0, [r4, #0xa]\n" + " ldrh r1, [r4, #0xc]\n" + " bl DebugMenu_8077EE0\n" + " ldr r0, ._311 + 12\n" + " str r0, [r4]\n" + " b ._317\n" + "._312:\n" + " .align 2, 0\n" + "._311:\n" + " .word gTasks\n" + " .word gMain\n" + " .word gDebug0x839C008+0xc\n" + " .word DebugMenu_8077FFC+1\n" + "._309:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._313 @cond_branch\n" + " ldr r0, ._315\n" + " str r0, [r4]\n" + " b ._317\n" + "._316:\n" + " .align 2, 0\n" + "._315:\n" + " .word DebugMenu_807806C+1\n" + "._313:\n" + " add r0, r4, #0\n" + " add r0, r0, #0xa\n" + " mov r2, #0xae\n" + " lsl r2, r2, #0x1\n" + " ldrh r3, [r3, #0x30]\n" + " mov r1, #0x1\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0x1\n" + " bne ._317 @cond_branch\n" + " ldrh r0, [r4, #0xa]\n" + " ldrh r1, [r4, #0xc]\n" + " bl DebugMenu_8077EE0\n" + "._317:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8077FFC() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " ldr r0, ._321\n" + " add r4, r1, r0\n" + " ldr r2, ._321 + 4\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._318 @cond_branch\n" + " ldrh r0, [r4, #0xa]\n" + " ldrh r1, [r4, #0xc]\n" + " bl AddBagItem\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._320 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " b ._320\n" + "._322:\n" + " .align 2, 0\n" + "._321:\n" + " .word gTasks\n" + " .word gMain\n" + "._318:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._323 @cond_branch\n" + "._320:\n" + " ldr r0, ._325\n" + " str r0, [r4]\n" + " b ._327\n" + "._326:\n" + " .align 2, 0\n" + "._325:\n" + " .word DebugMenu_8077F40+1\n" + "._323:\n" + " add r0, r4, #0\n" + " add r0, r0, #0xc\n" + " ldrh r3, [r2, #0x30]\n" + " mov r1, #0x1\n" + " mov r2, #0x63\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0x1\n" + " bne ._327 @cond_branch\n" + " ldrh r0, [r4, #0xa]\n" + " ldrh r1, [r4, #0xc]\n" + " bl DebugMenu_8077EE0\n" + "._327:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807806C() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " bl DebugMenu_8077048\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807808C() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffff4\n" + " add r4, r0, #0\n" + " sub r0, r4, #1\n" + " cmp r0, #0xc\n" + " bls ._328 @cond_branch\n" + " mov r4, #0x1\n" + "._328:\n" + " lsl r1, r4, #0x5\n" + " ldr r0, ._331\n" + " add r5, r1, r0\n" + " bl MenuZeroFillScreen\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x13\n" + " mov r3, #0x11\n" + " bl MenuDrawTextWindow\n" + " ldr r0, ._331 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0x2\n" + " bl MenuPrint\n" + " mov r0, sp\n" + " add r1, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xb\n" + " mov r2, #0x2\n" + " bl MenuPrint\n" + " ldrh r1, [r5, #0x8]\n" + " mov r0, sp\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xb\n" + " mov r2, #0x4\n" + " bl MenuPrint\n" + " add r4, r5, #0\n" + " add r4, r4, #0xb\n" + " add r0, r4, #0\n" + " bl StringLength\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._329 @cond_branch\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x6\n" + " bl MenuPrint\n" + " b ._330\n" + "._332:\n" + " .align 2, 0\n" + "._331:\n" + " .word gSaveBlock1+0x2ddc\n" + " .word gDebug0x839C008+0x16\n" + "._329:\n" + " ldr r0, ._335\n" + " mov r1, #0xb\n" + " mov r2, #0x6\n" + " bl MenuPrint\n" + "._330:\n" + " add r4, r5, #0\n" + " add r4, r4, #0x16\n" + " add r0, r4, #0\n" + " bl StringLength\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi ._333 @cond_branch\n" + " add r0, r4, #0\n" + " mov r1, #0xb\n" + " mov r2, #0x8\n" + " bl MenuPrint\n" + " b ._334\n" + "._336:\n" + " .align 2, 0\n" + "._335:\n" + " .word gDebug0x839C008+0x45\n" + "._333:\n" + " ldr r0, ._337\n" + " mov r1, #0xb\n" + " mov r2, #0x8\n" + " bl MenuPrint\n" + "._334:\n" + " ldrb r1, [r5, #0xa]\n" + " mov r0, sp\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r0, sp\n" + " mov r1, #0xb\n" + " mov r2, #0xa\n" + " bl MenuPrint\n" + " ldr r1, [r5]\n" + " mov r0, sp\n" + " mov r2, #0x2\n" + " mov r3, #0x8\n" + " bl ConvertIntToHexStringN\n" + " mov r0, sp\n" + " mov r1, #0xb\n" + " mov r2, #0xc\n" + " bl MenuPrint\n" + " add sp, sp, #0xc\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._338:\n" + " .align 2, 0\n" + "._337:\n" + " .word gDebug0x839C008+0x45\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807817C() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, ._340\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._339 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " bl ScriptContext2_Disable\n" + "._339:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._341:\n" + " .align 2, 0\n" + "._340:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80781A8() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r1, r1, #0x3\n" + " ldr r0, ._344\n" + " add r5, r1, r0\n" + " ldrh r1, [r5, #0x8]\n" + " mov r2, #0x8\n" + " ldsh r0, [r5, r2]\n" + " cmp r0, #0\n" + " bne ._342 @cond_branch\n" + " add r0, r1, #1\n" + " strh r0, [r5, #0x8]\n" + " b ._343\n" + "._345:\n" + " .align 2, 0\n" + "._344:\n" + " .word gTasks\n" + "._342:\n" + " ldr r2, ._348\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._346 @cond_branch\n" + " mov r1, #0x8\n" + " ldsh r0, [r5, r1]\n" + " bl DebugMenu_807808C\n" + " ldr r0, ._348 + 4\n" + " str r0, [r5]\n" + " b ._350\n" + "._349:\n" + " .align 2, 0\n" + "._348:\n" + " .word gMain\n" + " .word DebugMenu_807817C+1\n" + "._346:\n" + " add r0, r5, #0\n" + " add r0, r0, #0x8\n" + " ldrh r1, [r2, #0x30]\n" + " mov r3, #0xc0\n" + " and r3, r3, r1\n" + " mov r1, #0x1\n" + " mov r2, #0xd\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0\n" + " beq ._350 @cond_branch\n" + "._343:\n" + " mov r0, #0x4\n" + " mov r1, #0x11\n" + " mov r2, #0x16\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r4, ._351\n" + " mov r2, #0x8\n" + " ldsh r1, [r5, r2]\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x4\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + "._350:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._352:\n" + " .align 2, 0\n" + "._351:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_ViewPortraits() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._353\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._354:\n" + " .align 2, 0\n" + "._353:\n" + " .word DebugMenu_80781A8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078254() +{ + asm( + " push {lr}\n" + " bl DebugMenu_807808C\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_AllBadges() +{ + asm( + " push {lr}\n" + " ldr r0, ._355\n" + " bl FlagSet\n" + " ldr r0, ._355 + 4\n" + " bl FlagSet\n" + " ldr r0, ._355 + 8\n" + " bl FlagSet\n" + " ldr r0, ._355 + 12\n" + " bl FlagSet\n" + " ldr r0, ._355 + 16\n" + " bl FlagSet\n" + " ldr r0, ._355 + 20\n" + " bl FlagSet\n" + " ldr r0, ._355 + 24\n" + " bl FlagSet\n" + " ldr r0, ._355 + 28\n" + " bl FlagSet\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._356:\n" + " .align 2, 0\n" + "._355:\n" + " .word 0x807\n" + " .word 0x808\n" + " .word 0x809\n" + " .word 0x80a\n" + " .word 0x80b\n" + " .word 0x80c\n" + " .word 0x80d\n" + " .word 0x80e\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_TimeRecords() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._357\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._358:\n" + " .align 2, 0\n" + "._357:\n" + " .word debug_sub_806F9E4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_SetTime() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl debug_sub_806F99C\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80782EC() +{ + asm( + " push {lr}\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r0, ._359\n" + " mov r2, #0x0\n" + " mov r3, #0x4\n" + " bl ConvertIntToHexStringN\n" + " ldr r0, ._359 + 4\n" + " bl sub_8071F40\n" + " pop {r0}\n" + " bx r0\n" + "._360:\n" + " .align 2, 0\n" + "._359:\n" + " .word gStringVar1\n" + " .word gDebug0x839C008+0x4b\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078310() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._364\n" + " add r4, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0\n" + " beq ._361 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._362 @cond_branch\n" + " b ._375\n" + "._365:\n" + " .align 2, 0\n" + "._364:\n" + " .word gTasks+0x8\n" + "._361:\n" + " ldr r0, ._367\n" + " bl VarGet\n" + " strh r0, [r4, #0x2]\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_80782EC\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4]\n" + " b ._375\n" + "._368:\n" + " .align 2, 0\n" + "._367:\n" + " .word 0x4024\n" + "._362:\n" + " ldr r3, ._371\n" + " ldrh r1, [r3, #0x2e]\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._369 @cond_branch\n" + " mov r0, #0x49\n" + " bl PlaySE\n" + " ldr r0, ._371 + 4\n" + " bl GetVarPointer\n" + " ldrh r1, [r4, #0x2]\n" + " strh r1, [r0]\n" + " b ._370\n" + "._372:\n" + " .align 2, 0\n" + "._371:\n" + " .word gMain\n" + " .word 0x4024\n" + "._369:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._373 @cond_branch\n" + "._370:\n" + " bl MenuZeroFillScreen\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + " bl ScriptContext2_Disable\n" + " b ._375\n" + "._373:\n" + " add r0, r4, #2\n" + " ldr r2, ._376\n" + " ldrh r3, [r3, #0x30]\n" + " mov r1, #0x0\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0x1\n" + " bne ._375 @cond_branch\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_80782EC\n" + "._375:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._377:\n" + " .align 2, 0\n" + "._376:\n" + " .word 0xffff\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_MiragaIslandRND() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._378\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._379:\n" + " .align 2, 0\n" + "._378:\n" + " .word DebugMenu_8078310+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80783C8() +{ + asm( + " push {r4, lr}\n" + " ldr r0, ._383\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x30\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._382 @cond_branch\n" + " mov r0, #0x5\n" + " bl PlaySE\n" + " ldr r4, ._383 + 4\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._381 @cond_branch\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " mov r0, #0x0\n" + " bl DebugMenu_807786C\n" + " b ._382\n" + "._384:\n" + " .align 2, 0\n" + "._383:\n" + " .word gMain\n" + " .word 0x804\n" + "._381:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + " mov r0, #0x1\n" + " bl DebugMenu_807786C\n" + "._382:\n" + " ldr r0, ._388\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._385 @cond_branch\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._386 @cond_branch\n" + "._385:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._387\n" + "._389:\n" + " .align 2, 0\n" + "._388:\n" + " .word gMain\n" + "._386:\n" + " mov r0, #0x0\n" + "._387:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_ToggleClearFlag() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._390\n" + " bl FlagGet\n" + " mov r1, #0x1\n" + " eor r0, r0, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl DebugMenu_807786C\n" + " ldr r1, ._390 + 4\n" + " ldr r0, ._390 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._391:\n" + " .align 2, 0\n" + "._390:\n" + " .word 0x804\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_80783C8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078464() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._396\n" + " add r0, r4, #0\n" + " bl FlagGet\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl DebugMenu_8077E40\n" + " add r1, r0, #0\n" + " cmp r1, #0\n" + " beq ._392 @cond_branch\n" + " cmp r1, #0\n" + " bgt ._393 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._394 @cond_branch\n" + " b ._401\n" + "._397:\n" + " .align 2, 0\n" + "._396:\n" + " .word 0x82a\n" + "._393:\n" + " cmp r1, #0x1\n" + " beq ._398 @cond_branch\n" + " b ._401\n" + "._392:\n" + " add r0, r4, #0\n" + " bl FlagReset\n" + " b ._401\n" + "._398:\n" + " add r0, r4, #0\n" + " bl FlagSet\n" + " b ._401\n" + "._394:\n" + " mov r0, #0x1\n" + " b ._402\n" + "._401:\n" + " mov r0, #0x0\n" + "._402:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenWeatherEvents() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._404\n" + " bl FlagGet\n" + " mov r1, #0x0\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._403 @cond_branch\n" + " mov r1, #0x1\n" + "._403:\n" + " add r0, r1, #0\n" + " bl DebugMenu_807786C\n" + " ldr r1, ._404 + 4\n" + " ldr r0, ._404 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._405:\n" + " .align 2, 0\n" + "._404:\n" + " .word 0x82a\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078464+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80784E8() +{ + asm( + " push {lr}\n" + " bl IsMysteryGiftEnabled\n" + " bl DebugMenu_8077E40\n" + " add r1, r0, #0\n" + " cmp r1, #0\n" + " beq ._406 @cond_branch\n" + " cmp r1, #0\n" + " bgt ._407 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._408 @cond_branch\n" + " b ._413\n" + "._407:\n" + " cmp r1, #0x1\n" + " beq ._410 @cond_branch\n" + " b ._413\n" + "._406:\n" + " bl DisableMysteryGift\n" + " b ._413\n" + "._410:\n" + " bl EnableMysteryGift\n" + " b ._413\n" + "._408:\n" + " mov r0, #0x1\n" + " b ._414\n" + "._413:\n" + " mov r0, #0x0\n" + "._414:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenMysteryEvent() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " bl IsMysteryGiftEnabled\n" + " mov r1, #0x0\n" + " cmp r0, #0\n" + " bne ._415 @cond_branch\n" + " mov r1, #0x1\n" + "._415:\n" + " add r0, r1, #0\n" + " bl DebugMenu_807786C\n" + " ldr r1, ._416\n" + " ldr r0, ._416 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._417:\n" + " .align 2, 0\n" + "._416:\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_80784E8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078550() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x10\n" + " lsr r6, r0, #0x10\n" + " lsl r0, r6, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl GetGameStat\n" + " add r7, r0, #0\n" + " ldr r0, ._420\n" + " add r1, r6, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " ldr r0, ._420 + 4\n" + " ldr r5, ._420 + 8\n" + " lsl r4, r6, #0x3\n" + " add r1, r5, #4\n" + " add r1, r4, r1\n" + " ldr r1, [r1]\n" + " bl StringCopy\n" + " add r4, r4, r5\n" + " ldr r0, [r4]\n" + " cmp r0, #0\n" + " bne ._418 @cond_branch\n" + " ldr r0, ._420 + 12\n" + " ldr r1, ._420 + 16\n" + " bl StringCopy\n" + " b ._423\n" + "._421:\n" + " .align 2, 0\n" + "._420:\n" + " .word gStringVar1\n" + " .word gStringVar2\n" + " .word gDebug0x839C008+0x264\n" + " .word gStringVar3\n" + " .word gDebug0x839C008+0x7d\n" + "._418:\n" + " cmp r6, #0x1\n" + " beq ._422 @cond_branch\n" + " ldr r0, ._424\n" + " add r1, r7, #0\n" + " mov r2, #0x1\n" + " mov r3, #0xa\n" + " bl ConvertIntToDecimalStringN\n" + " b ._423\n" + "._425:\n" + " .align 2, 0\n" + "._424:\n" + " .word gStringVar3\n" + "._422:\n" + " ldr r4, ._426\n" + " lsr r1, r7, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " mov r6, #0xf0\n" + " strb r6, [r4, #0x3]\n" + " add r0, r4, #4\n" + " lsr r1, r7, #0x8\n" + " mov r5, #0xff\n" + " and r1, r1, r5\n" + " mov r2, #0x2\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " strb r6, [r4, #0x6]\n" + " add r4, r4, #0x7\n" + " and r7, r7, r5\n" + " add r0, r4, #0\n" + " add r1, r7, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + "._423:\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._426 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._427:\n" + " .align 2, 0\n" + "._426:\n" + " .word gStringVar3\n" + " .word gDebug0x839C008+0x74\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807860C() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._432\n" + " add r4, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0x1\n" + " beq ._428 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._429 @cond_branch\n" + " cmp r0, #0\n" + " beq ._430 @cond_branch\n" + " b ._447\n" + "._433:\n" + " .align 2, 0\n" + "._432:\n" + " .word gTasks+0x8\n" + "._429:\n" + " cmp r0, #0x2\n" + " beq ._434 @cond_branch\n" + " b ._447\n" + "._430:\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_8078550\n" + "._441:\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4]\n" + " b ._447\n" + "._428:\n" + " ldr r3, ._439\n" + " ldrh r1, [r3, #0x2e]\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._437 @cond_branch\n" + " ldrh r0, [r4]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r4]\n" + " mov r0, #0x1\n" + " b ._438\n" + "._440:\n" + " .align 2, 0\n" + "._439:\n" + " .word gMain\n" + "._437:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " bne ._441 @cond_branch\n" + " ldrh r1, [r3, #0x30]\n" + " mov r0, #0x40\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._442 @cond_branch\n" + " ldrh r0, [r4, #0x2]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4, #0x2]\n" + " lsl r0, r0, #0x10\n" + " asr r0, r0, #0x10\n" + " cmp r0, #0x32\n" + " bne ._446 @cond_branch\n" + " strh r2, [r4, #0x2]\n" + " b ._446\n" + "._442:\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._447 @cond_branch\n" + " ldrh r0, [r4, #0x2]\n" + " sub r0, r0, #0x1\n" + " strh r0, [r4, #0x2]\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " bge ._446 @cond_branch\n" + " mov r0, #0x31\n" + " strh r0, [r4, #0x2]\n" + "._446:\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_8078550\n" + " b ._447\n" + "._434:\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + "._447:\n" + " mov r0, #0x0\n" + "._438:\n" + " pop {r4, r5}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80786C0() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " bl DebugMenu_807860C\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80786D0() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r0, r4, #0\n" + " bl DebugMenu_807860C\n" + " cmp r0, #0\n" + " beq ._449 @cond_branch\n" + " ldr r1, ._450\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrb r2, [r0, #0xa]\n" + " ldr r1, ._450 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._449 @cond_branch\n" + " sub r1, r0, #1\n" + " add r0, r2, #0\n" + " bl SetGameStat\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + "._449:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._451:\n" + " .align 2, 0\n" + "._450:\n" + " .word gTasks\n" + " .word gDebug0x839C008+0x264\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078714() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r0, r4, #0\n" + " bl DebugMenu_807860C\n" + " cmp r0, #0\n" + " beq ._453 @cond_branch\n" + " ldr r1, ._454\n" + " lsl r0, r4, #0x2\n" + " add r0, r0, r4\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrb r2, [r0, #0xa]\n" + " ldr r1, ._454 + 4\n" + " lsl r0, r2, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " beq ._453 @cond_branch\n" + " add r0, r2, #0\n" + " mov r1, #0x0\n" + " bl SetGameStat\n" + " mov r0, #0x15\n" + " bl PlaySE\n" + "._453:\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._455:\n" + " .align 2, 0\n" + "._454:\n" + " .word gTasks\n" + " .word gDebug0x839C008+0x264\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078758() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " add r0, r4, #0\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " mov r0, #0x1\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078774() +{ + asm( + " push {lr}\n" + " ldr r0, ._456\n" + " bl DebugMenu_8078758\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._457:\n" + " .align 2, 0\n" + "._456:\n" + " .word DebugMenu_80786C0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078788() +{ + asm( + " push {lr}\n" + " ldr r0, ._458\n" + " bl DebugMenu_8078758\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._459:\n" + " .align 2, 0\n" + "._458:\n" + " .word DebugMenu_80786D0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_807879C() +{ + asm( + " push {lr}\n" + " ldr r0, ._460\n" + " bl DebugMenu_8078758\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._461:\n" + " .align 2, 0\n" + "._460:\n" + " .word DebugMenu_8078714+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80787B0() +{ + asm( + " push {lr}\n" + " ldr r0, ._462\n" + " bl DebugMenu_8077D78\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._463:\n" + " .align 2, 0\n" + "._462:\n" + " .word gDebug0x839C008+0x3f4\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenLegendsRecord() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._464\n" + " mov r1, #0xc\n" + " mov r2, #0x3\n" + " bl DebugMenu_8077D24\n" + " ldr r1, ._464 + 4\n" + " ldr r0, ._464 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._465:\n" + " .align 2, 0\n" + "._464:\n" + " .word gDebug0x839C008+0x3f4\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_80787B0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80787EC() +{ + asm( + " push {r4, r5, lr}\n" + " add sp, sp, #0xfffffffc\n" + " mov r5, sp\n" + " add r5, r5, #0x2\n" + " mov r0, sp\n" + " add r1, r5, #0\n" + " bl GetXYCoordsOneStepInFrontOfPlayer\n" + " ldr r4, ._466\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x0\n" + " ldsh r1, [r5, r2]\n" + " bl MapGridGetMetatileBehaviorAt\n" + " strh r0, [r4]\n" + " ldr r0, ._466 + 4\n" + " ldrh r1, [r4]\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToHexStringN\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x0\n" + " ldsh r1, [r5, r2]\n" + " bl MapGridGetMetatileIdAt\n" + " strh r0, [r4]\n" + " ldr r0, ._466 + 8\n" + " ldrh r1, [r4]\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToHexStringN\n" + " mov r0, sp\n" + " mov r1, #0x0\n" + " ldsh r0, [r0, r1]\n" + " mov r2, #0x0\n" + " ldsh r1, [r5, r2]\n" + " bl MapGridGetZCoordAt\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " strh r0, [r4]\n" + " ldr r0, ._466 + 12\n" + " ldrh r1, [r4]\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToHexStringN\n" + " ldr r0, ._466 + 16\n" + " ldr r1, ._466 + 20\n" + " bl StringExpandPlaceholders\n" + " add sp, sp, #0x4\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._467:\n" + " .align 2, 0\n" + "._466:\n" + " .word gScriptResult\n" + " .word gStringVar1\n" + " .word gStringVar2\n" + " .word gStringVar3\n" + " .word gStringVar4\n" + " .word gDebug0x839C008+0x40c\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078880() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._472\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r4, r0, r1\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0x1\n" + " beq ._468 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._469 @cond_branch\n" + " cmp r0, #0\n" + " beq ._470 @cond_branch\n" + " b ._480\n" + "._473:\n" + " .align 2, 0\n" + "._472:\n" + " .word gTasks\n" + "._469:\n" + " cmp r0, #0x2\n" + " beq ._474 @cond_branch\n" + " b ._480\n" + "._470:\n" + " bl MenuDisplayMessageBox\n" + " b ._476\n" + "._468:\n" + " ldr r0, ._478\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + "._476:\n" + " ldrh r0, [r4, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4, #0x8]\n" + " b ._480\n" + "._479:\n" + " .align 2, 0\n" + "._478:\n" + " .word gStringVar4\n" + "._474:\n" + " ldr r0, ._481\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._480 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + "._480:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._482:\n" + " .align 2, 0\n" + "._481:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_CellInfo() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._483\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl DebugMenu_80787EC\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._484:\n" + " .align 2, 0\n" + "._483:\n" + " .word DebugMenu_8078880+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenBerryInfo() +{ + asm( + " push {r4, lr}\n" + " bl DebugOpenBerryInfo\n" + " add r4, r0, #0\n" + " cmp r4, #0\n" + " bne ._485 @cond_branch\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + " b ._486\n" + "._485:\n" + " mov r0, #0x0\n" + " mov r1, #0x0\n" + " mov r2, #0x13\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " add r0, r4, #0\n" + " mov r1, #0x1\n" + " mov r2, #0x1\n" + " bl MenuPrint\n" + " ldr r1, ._487\n" + " ldr r0, ._487 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + "._486:\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._488:\n" + " .align 2, 0\n" + "._487:\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8077DB4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078950() +{ + asm( + " push {lr}\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._489\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._490:\n" + " .align 2, 0\n" + "._489:\n" + " .word gDebug0x839C008+0x426\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078968() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x10\n" + " cmp r0, #0\n" + " bne ._491 @cond_branch\n" + " ldr r0, ._493\n" + " mov r1, #0x32\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " b ._492\n" + "._494:\n" + " .align 2, 0\n" + "._493:\n" + " .word gStringVar1\n" + "._491:\n" + " ldr r0, ._495\n" + " mov r1, #0x64\n" + " mov r2, #0x2\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + "._492:\n" + " ldr r0, ._495\n" + " mov r1, #0x4\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r0}\n" + " bx r0\n" + "._496:\n" + " .align 2, 0\n" + "._495:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80789A4() +{ + asm( + " push {r4, lr}\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r4, ._497\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x4\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x9\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._498:\n" + " .align 2, 0\n" + "._497:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_80789CC() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r4, r0, #0x2\n" + " add r4, r4, r0\n" + " lsl r4, r4, #0x3\n" + " ldr r6, ._499\n" + " add r5, r4, r6\n" + " mov r0, #0x0\n" + " strh r0, [r5]\n" + " ldr r0, ._499 + 4\n" + " ldr r1, ._499 + 8\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " strh r0, [r5, #0x2]\n" + " bl DebugMenu_8078950\n" + " ldrh r0, [r5]\n" + " bl DebugMenu_8078968\n" + " sub r6, r6, #0x8\n" + " add r4, r4, r6\n" + " ldr r0, ._499 + 12\n" + " str r0, [r4]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._500:\n" + " .align 2, 0\n" + "._499:\n" + " .word gTasks+0x8\n" + " .word gSaveBlock2\n" + " .word 0x55c\n" + " .word DebugMenu_8078A14+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078A14() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r4, r1, #0x3\n" + " ldr r5, ._504\n" + " add r2, r4, r5\n" + " ldr r0, ._504 + 4\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0xc0\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._501 @cond_branch\n" + " mov r1, #0x0\n" + " mov r3, #0x0\n" + " ldsh r0, [r2, r3]\n" + " cmp r0, #0\n" + " bne ._502 @cond_branch\n" + " mov r1, #0x1\n" + "._502:\n" + " strh r1, [r2]\n" + " ldrh r0, [r2]\n" + " bl DebugMenu_8078968\n" + " b ._510\n" + "._505:\n" + " .align 2, 0\n" + "._504:\n" + " .word gTasks+0x8\n" + " .word gMain\n" + "._501:\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._506 @cond_branch\n" + " ldr r1, ._508\n" + " mov r3, #0x0\n" + " ldsh r0, [r2, r3]\n" + " lsl r0, r0, #0x1\n" + " ldr r3, ._508 + 4\n" + " add r1, r1, r3\n" + " add r0, r0, r1\n" + " ldrh r0, [r0]\n" + " strh r0, [r2, #0x2]\n" + " ldrh r0, [r2, #0x2]\n" + " bl DebugMenu_80789A4\n" + " add r0, r5, #0\n" + " sub r0, r0, #0x8\n" + " add r0, r4, r0\n" + " ldr r1, ._508 + 8\n" + " b ._507\n" + "._509:\n" + " .align 2, 0\n" + "._508:\n" + " .word gSaveBlock2\n" + " .word 0x55c\n" + " .word DebugMenu_8078AA4+1\n" + "._506:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._510 @cond_branch\n" + " add r0, r5, #0\n" + " sub r0, r0, #0x8\n" + " add r0, r4, r0\n" + " ldr r1, ._511\n" + "._507:\n" + " str r1, [r0]\n" + "._510:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._512:\n" + " .align 2, 0\n" + "._511:\n" + " .word DebugMenu_8078B38+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078AA4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r5, r1, #0x3\n" + " ldr r7, ._515\n" + " add r4, r5, r7\n" + " add r0, r4, #2\n" + " mov r2, #0xfa\n" + " lsl r2, r2, #0x3\n" + " ldr r6, ._515 + 4\n" + " ldrh r3, [r6, #0x30]\n" + " mov r1, #0x0\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0x1\n" + " bne ._513 @cond_branch\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_80789A4\n" + " b ._521\n" + "._516:\n" + " .align 2, 0\n" + "._515:\n" + " .word gTasks+0x8\n" + " .word gMain\n" + "._513:\n" + " ldrh r1, [r6, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._517 @cond_branch\n" + " ldr r1, ._519\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " lsl r0, r0, #0x1\n" + " ldr r2, ._519 + 4\n" + " add r1, r1, r2\n" + " add r0, r0, r1\n" + " ldrh r1, [r4, #0x2]\n" + " strh r1, [r0]\n" + " mov r0, #0x49\n" + " bl PlaySE\n" + " add r0, r7, #0\n" + " sub r0, r0, #0x8\n" + " add r0, r5, r0\n" + " ldr r1, ._519 + 8\n" + " b ._518\n" + "._520:\n" + " .align 2, 0\n" + "._519:\n" + " .word gSaveBlock2\n" + " .word 0x55c\n" + " .word DebugMenu_8078B38+1\n" + "._517:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._521 @cond_branch\n" + " bl DebugMenu_8078950\n" + " ldrh r0, [r4]\n" + " bl DebugMenu_8078968\n" + " add r0, r7, #0\n" + " sub r0, r0, #0x8\n" + " add r0, r5, r0\n" + " ldr r1, ._522\n" + "._518:\n" + " str r1, [r0]\n" + "._521:\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._523:\n" + " .align 2, 0\n" + "._522:\n" + " .word DebugMenu_8078A14+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078B38() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_BattleTowerStages() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " bl ScriptContext2_Enable\n" + " ldr r0, ._524\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._525:\n" + " .align 2, 0\n" + "._524:\n" + " .word DebugMenu_80789CC+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078B70() +{ + asm( + " push {lr}\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " lsr r1, r1, #0x10\n" + " ldr r0, ._526\n" + " mov r2, #0x0\n" + " mov r3, #0x1\n" + " bl ConvertIntToHexStringN\n" + " ldr r0, ._526 + 4\n" + " bl sub_8071F40\n" + " pop {r0}\n" + " bx r0\n" + "._527:\n" + " .align 2, 0\n" + "._526:\n" + " .word gStringVar1\n" + " .word gDebug0x839C008+0x430\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078B94() +{ + asm( + " push {r4, r5, lr}\n" + " mov r3, #0x0\n" + " ldr r1, ._531\n" + " ldrb r0, [r1]\n" + " cmp r0, #0\n" + " beq ._529 @cond_branch\n" + " ldr r5, ._531 + 4\n" + " add r4, r1, #0\n" + "._530:\n" + " lsl r0, r3, #0x3\n" + " add r2, r0, r5\n" + " add r0, r0, r4\n" + " ldr r1, [r0, #0x4]\n" + " ldr r0, [r0]\n" + " str r0, [r2]\n" + " str r1, [r2, #0x4]\n" + " add r0, r3, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r3, r0, #0x18\n" + " cmp r3, #0x27\n" + " bhi ._529 @cond_branch\n" + " lsl r0, r3, #0x3\n" + " add r0, r0, r4\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._530 @cond_branch\n" + "._529:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._532:\n" + " .align 2, 0\n" + "._531:\n" + " .word gDebug0x839C008+0x43c\n" + " .word gSaveBlock1+0x7f8\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078BD4() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " ldr r1, ._536\n" + " add r4, r0, r1\n" + " mov r1, #0x0\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0\n" + " beq ._533 @cond_branch\n" + " cmp r0, #0x1\n" + " beq ._534 @cond_branch\n" + " b ._545\n" + "._537:\n" + " .align 2, 0\n" + "._536:\n" + " .word gTasks+0x8\n" + "._533:\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_8078B70\n" + " ldrh r0, [r4]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4]\n" + " b ._545\n" + "._534:\n" + " ldr r2, ._541\n" + " ldrh r1, [r2, #0x2e]\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._539 @cond_branch\n" + " mov r0, #0x49\n" + " bl PlaySE\n" + " bl MenuZeroFillScreen\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + " bl ScriptContext2_Disable\n" + " bl DebugMenu_8078B94\n" + " b ._545\n" + "._542:\n" + " .align 2, 0\n" + "._541:\n" + " .word gMain\n" + "._539:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._543 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + " bl ScriptContext2_Disable\n" + " b ._545\n" + "._543:\n" + " add r0, r4, #2\n" + " ldrh r3, [r2, #0x30]\n" + " mov r1, #0x0\n" + " mov r2, #0x4\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0x1\n" + " bne ._545 @cond_branch\n" + " ldrh r0, [r4, #0x2]\n" + " bl DebugMenu_8078B70\n" + "._545:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_CheckPKBLCK() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._546\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._547:\n" + " .align 2, 0\n" + "._546:\n" + " .word DebugMenu_8078BD4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078C80() +{ + asm( + " push {lr}\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._548\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r1, ._548 + 4\n" + " ldr r0, ._548 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._549:\n" + " .align 2, 0\n" + "._548:\n" + " .word gDebug0x839C574+0x30\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078CA8+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078CA8() +{ + asm( + " push {lr}\n" + " ldr r0, ._552\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._550 @cond_branch\n" + " ldr r1, ._552 + 4\n" + " ldr r0, ._552 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " b ._555\n" + "._553:\n" + " .align 2, 0\n" + "._552:\n" + " .word gMain\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078CE4+1\n" + "._550:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._554 @cond_branch\n" + " mov r0, #0x0\n" + " b ._555\n" + "._554:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._555:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078CE4() +{ + asm( + " push {lr}\n" + " ldr r1, ._558\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0xa\n" + " mov r0, #0x0\n" + " bl DebugMenu_8078E40\n" + " cmp r0, #0x1\n" + " bne ._556 @cond_branch\n" + " ldr r0, ._558 + 4\n" + " ldr r1, ._558 + 8\n" + " bl StringCopy\n" + " b ._557\n" + "._559:\n" + " .align 2, 0\n" + "._558:\n" + " .word +0x2000000\n" + " .word gStringVar4\n" + " .word gDebug0x839C574+0x58\n" + "._556:\n" + " ldr r0, ._560\n" + " ldr r1, ._560 + 4\n" + " bl StringCopy\n" + "._557:\n" + " ldr r1, ._560 + 8\n" + " ldr r0, ._560 + 12\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._561:\n" + " .align 2, 0\n" + "._560:\n" + " .word gStringVar4\n" + " .word gDebug0x839C574+0x6b\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078D7C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078D30() +{ + asm( + " push {r4, r5, r6, lr}\n" + " ldr r5, ._563\n" + " mov r4, #0x0\n" + " mov r6, #0x80\n" + " lsl r6, r6, #0x5\n" + "._562:\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " add r2, r6, #0\n" + " bl DebugMenu_8078E68\n" + " add r5, r5, r6\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0x1f\n" + " bls ._562 @cond_branch\n" + " ldr r0, ._563 + 4\n" + " ldr r1, ._563 + 8\n" + " bl StringCopy\n" + " ldr r1, ._563 + 12\n" + " ldr r0, ._563 + 16\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._564:\n" + " .align 2, 0\n" + "._563:\n" + " .word +0x2000000\n" + " .word gStringVar4\n" + " .word gDebug0x839C574+0x62\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078D7C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078D7C() +{ + asm( + " push {lr}\n" + " bl MenuDisplayMessageBox\n" + " ldr r0, ._565\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r1, ._565 + 4\n" + " ldr r0, ._565 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._566:\n" + " .align 2, 0\n" + "._565:\n" + " .word gStringVar4\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078DA4+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078DA4() +{ + asm( + " push {lr}\n" + " ldr r0, ._569\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._567 @cond_branch\n" + " mov r0, #0x0\n" + " b ._568\n" + "._570:\n" + " .align 2, 0\n" + "._569:\n" + " .word gMain\n" + "._567:\n" + " bl CloseMenu\n" + " mov r0, #0x1\n" + "._568:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_MeTooBackupMan() +{ + asm( + " push {lr}\n" + " bl MenuZeroFillScreen\n" + " ldr r0, ._571\n" + " mov r1, #0xc\n" + " mov r2, #0x2\n" + " bl DebugMenu_8077D24\n" + " ldr r1, ._571 + 4\n" + " ldr r0, ._571 + 8\n" + " str r0, [r1]\n" + " mov r0, #0x0\n" + " pop {r1}\n" + " bx r1\n" + "._572:\n" + " .align 2, 0\n" + "._571:\n" + " .word gDebug0x839C574+0x20\n" + " .word gCallback_03004AE8\n" + " .word DebugMenu_8078DF0+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078DF0() +{ + asm( + " push {lr}\n" + " ldr r0, ._573\n" + " bl DebugMenu_8077D78\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " pop {r1}\n" + " bx r1\n" + "._574:\n" + " .align 2, 0\n" + "._573:\n" + " .word gDebug0x839C574+0x20\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078E04() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r1, #0\n" + " add r5, r2, #0\n" + " b ._575\n" + "._577:\n" + " ldr r0, ._579\n" + " add r5, r5, r0\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x5\n" + " add r6, r6, r0\n" + " add r0, r4, #1\n" + "._575:\n" + " lsl r0, r0, #0x10\n" + " lsr r4, r0, #0x10\n" + " add r0, r4, #0\n" + " add r1, r6, #0\n" + " bl gScriptFuncs_End+0x2f60\n" + " cmp r0, #0\n" + " bne ._576 @cond_branch\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x5\n" + " cmp r5, r0\n" + " bhi ._577 @cond_branch\n" + " mov r0, #0x1\n" + " b ._578\n" + "._580:\n" + " .align 2, 0\n" + "._579:\n" + " .word 0xfffff000\n" + "._576:\n" + " mov r0, #0x0\n" + "._578:\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078E40() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r4, r0, #0\n" + " add r5, r1, #0\n" + " add r6, r2, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl gScriptFuncs_End+0x19f4\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " add r2, r6, #0\n" + " bl DebugMenu_8078E04\n" + " add r4, r0, #0\n" + " bl gScriptFuncs_End+0x1a70\n" + " add r0, r4, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078E68() +{ + asm( + " push {r4, lr}\n" + " add r4, r1, #0\n" + " add r3, r2, #0\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r1, #0x0\n" + " add r2, r4, #0\n" + " bl gScriptFuncs_End+0x2d64\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078E80() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " mov r0, #0x2\n" + " mov r1, #0xf\n" + " mov r2, #0x16\n" + " mov r3, #0x10\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r1, ._581\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldrb r1, [r0, #0x4]\n" + " mov r0, #0xd0\n" + " mov r2, #0xf\n" + " bl sub_8071F60\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._582:\n" + " .align 2, 0\n" + "._581:\n" + " .word gDebug0x839C574+0x80\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078EB0() +{ + asm( + " push {r4, r5, lr}\n" + " add r5, r0, #0\n" + " ldr r4, ._583\n" + " mov r0, #0x2\n" + " ldsh r1, [r5, r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " mov r3, #0x3\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0xf0\n" + " mov r1, #0x5\n" + " mov r2, #0x11\n" + " bl sub_8071F60\n" + " mov r0, #0x4\n" + " ldsh r1, [r5, r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x6\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " mov r0, #0xf0\n" + " mov r1, #0x8\n" + " mov r2, #0x11\n" + " bl sub_8071F60\n" + " mov r0, #0x6\n" + " ldsh r1, [r5, r0]\n" + " add r0, r4, #0\n" + " mov r2, #0x2\n" + " mov r3, #0x2\n" + " bl ConvertIntToDecimalStringN\n" + " add r0, r4, #0\n" + " mov r1, #0x9\n" + " mov r2, #0x11\n" + " bl MenuPrint\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._584:\n" + " .align 2, 0\n" + "._583:\n" + " .word gStringVar1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078F1C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r4, r0, #0x2\n" + " add r4, r4, r0\n" + " lsl r4, r4, #0x3\n" + " ldr r6, ._585\n" + " add r5, r4, r6\n" + " mov r0, #0x0\n" + " strh r0, [r5]\n" + " ldr r1, ._585 + 4\n" + " ldrh r0, [r1, #0xe]\n" + " strh r0, [r5, #0x2]\n" + " ldrb r0, [r1, #0x10]\n" + " strh r0, [r5, #0x4]\n" + " ldrb r0, [r1, #0x11]\n" + " strh r0, [r5, #0x6]\n" + " bl MenuDisplayMessageBox\n" + " add r0, r5, #0\n" + " bl DebugMenu_8078EB0\n" + " add r0, r5, #0\n" + " bl DebugMenu_8078E80\n" + " sub r6, r6, #0x8\n" + " add r4, r4, r6\n" + " ldr r0, ._585 + 8\n" + " str r0, [r4]\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._586:\n" + " .align 2, 0\n" + "._585:\n" + " .word gTasks+0x8\n" + " .word gSaveBlock2\n" + " .word DebugMenu_8078F68+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8078F68() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " lsl r1, r0, #0x2\n" + " add r1, r1, r0\n" + " lsl r5, r1, #0x3\n" + " ldr r6, ._589\n" + " add r4, r5, r6\n" + " ldr r3, ._589 + 4\n" + " ldrh r1, [r3, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._587 @cond_branch\n" + " ldr r1, ._589 + 8\n" + " ldrh r0, [r4, #0x2]\n" + " strh r0, [r1, #0xe]\n" + " ldrh r0, [r4, #0x4]\n" + " strb r0, [r1, #0x10]\n" + " ldrh r0, [r4, #0x6]\n" + " strb r0, [r1, #0x11]\n" + " mov r0, #0x49\n" + " bl PlaySE\n" + " b ._588\n" + "._590:\n" + " .align 2, 0\n" + "._589:\n" + " .word gTasks+0x8\n" + " .word gMain\n" + " .word gSaveBlock2\n" + "._587:\n" + " mov r0, #0x2\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._591 @cond_branch\n" + "._588:\n" + " add r0, r6, #0\n" + " sub r0, r0, #0x8\n" + " add r0, r5, r0\n" + " ldr r1, ._593\n" + " str r1, [r0]\n" + " b ._601\n" + "._594:\n" + " .align 2, 0\n" + "._593:\n" + " .word DebugMenu_8079020+1\n" + "._591:\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._595 @cond_branch\n" + " ldrh r1, [r4]\n" + " mov r2, #0x0\n" + " ldsh r0, [r4, r2]\n" + " cmp r0, #0\n" + " beq ._601 @cond_branch\n" + " sub r0, r1, #1\n" + " b ._597\n" + "._595:\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._598 @cond_branch\n" + " ldrh r0, [r4]\n" + " cmp r0, #0x1\n" + " bhi ._601 @cond_branch\n" + " add r0, r0, #0x1\n" + "._597:\n" + " strh r0, [r4]\n" + " add r0, r4, #0\n" + " bl DebugMenu_8078E80\n" + " b ._601\n" + "._598:\n" + " mov r0, #0x0\n" + " ldsh r2, [r4, r0]\n" + " lsl r2, r2, #0x3\n" + " ldr r0, ._602\n" + " add r2, r2, r0\n" + " ldrb r0, [r2, #0x5]\n" + " lsl r0, r0, #0x1\n" + " add r0, r4, r0\n" + " ldrh r1, [r2]\n" + " ldrh r2, [r2, #0x2]\n" + " ldrh r3, [r3, #0x30]\n" + " bl DebugMenu_8077DD8\n" + " cmp r0, #0x1\n" + " bne ._601 @cond_branch\n" + " add r0, r4, #0\n" + " bl DebugMenu_8078EB0\n" + "._601:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._603:\n" + " .align 2, 0\n" + "._602:\n" + " .word gDebug0x839C574+0x80\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8079020() +{ + asm( + " push {r4, lr}\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r4, #0\n" + " bl DestroyTask\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_PTime() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._604\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._605:\n" + " .align 2, 0\n" + "._604:\n" + " .word DebugMenu_8078F1C+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8079058() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._610\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r4, r0, r1\n" + " mov r0, #0x8\n" + " ldsh r1, [r4, r0]\n" + " cmp r1, #0x1\n" + " beq ._606 @cond_branch\n" + " cmp r1, #0x1\n" + " bgt ._607 @cond_branch\n" + " cmp r1, #0\n" + " beq ._608 @cond_branch\n" + " b ._620\n" + "._611:\n" + " .align 2, 0\n" + "._610:\n" + " .word gTasks\n" + "._607:\n" + " cmp r1, #0x2\n" + " beq ._612 @cond_branch\n" + " b ._620\n" + "._608:\n" + " ldr r0, ._615\n" + " str r1, [r0]\n" + " bl MenuDisplayMessageBox\n" + " b ._614\n" + "._616:\n" + " .align 2, 0\n" + "._615:\n" + " .word gUnknown_Debug_03004BD0\n" + "._606:\n" + " ldr r0, ._618\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " mov r0, #0x14\n" + " mov r1, #0x8\n" + " mov r2, #0x1\n" + " bl DisplayYesNoMenu\n" + "._614:\n" + " ldrh r0, [r4, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4, #0x8]\n" + " b ._620\n" + "._619:\n" + " .align 2, 0\n" + "._618:\n" + " .word gDebug0x839C60C\n" + "._612:\n" + " bl ProcessMenuInputNoWrap_\n" + " lsl r0, r0, #0x18\n" + " asr r1, r0, #0x18\n" + " mov r0, #0x2\n" + " neg r0, r0\n" + " cmp r1, r0\n" + " beq ._620 @cond_branch\n" + " cmp r1, #0\n" + " bne ._621 @cond_branch\n" + " ldr r1, ._623\n" + " mov r0, #0x1\n" + " b ._622\n" + "._624:\n" + " .align 2, 0\n" + "._623:\n" + " .word gUnknown_Debug_03004BD0\n" + "._621:\n" + " ldr r1, ._625\n" + " mov r0, #0x0\n" + "._622:\n" + " str r0, [r1]\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + "._620:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._626:\n" + " .align 2, 0\n" + "._625:\n" + " .word gUnknown_Debug_03004BD0\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenMurakawa() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._627\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " mov r0, #0x1\n" + " pop {r1}\n" + " bx r1\n" + "._628:\n" + " .align 2, 0\n" + "._627:\n" + " .word DebugMenu_8079058+1\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_8079110() +{ + asm( + " push {r4, r5, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._633\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r4, r0, r1\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0x1\n" + " beq ._629 @cond_branch\n" + " cmp r0, #0x1\n" + " bgt ._630 @cond_branch\n" + " cmp r0, #0\n" + " beq ._631 @cond_branch\n" + " b ._642\n" + "._634:\n" + " .align 2, 0\n" + "._633:\n" + " .word gTasks\n" + "._630:\n" + " cmp r0, #0x2\n" + " beq ._635 @cond_branch\n" + " b ._642\n" + "._631:\n" + " bl MenuDisplayMessageBox\n" + " b ._637\n" + "._629:\n" + " ldr r0, ._639\n" + " mov r1, #0x2\n" + " mov r2, #0xf\n" + " bl MenuPrintMessage\n" + "._637:\n" + " ldrh r0, [r4, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4, #0x8]\n" + " b ._642\n" + "._640:\n" + " .align 2, 0\n" + "._639:\n" + " .word gDebug0x839C60C+0xe\n" + "._635:\n" + " bl MenuUpdateWindowText\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._642 @cond_branch\n" + " ldr r0, ._643\n" + " ldrh r1, [r0, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._642 @cond_branch\n" + " bl MenuZeroFillScreen\n" + " bl ScriptContext2_Disable\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + "._642:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._644:\n" + " .align 2, 0\n" + "._643:\n" + " .word gMain\n" + "\n" + ); +} + +__attribute__((naked)) +void DebugMenu_OpenKiwa() +{ + asm( + " push {lr}\n" + " bl CloseMenu\n" + " ldr r0, ._645\n" + " mov r1, #0x50\n" + " bl CreateTask\n" + " bl ScriptContext2_Enable\n" + " pop {r1}\n" + " bx r1\n" + "._646:\n" + " .align 2, 0\n" + "._645:\n" + " .word DebugMenu_8079110+1\n" + "\n" + ); +} + diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c new file mode 100644 index 000000000..70e194907 --- /dev/null +++ b/src/debug/unk_debug_menu_3.c @@ -0,0 +1,797 @@ +__attribute__((naked)) +void debug_sub_813C404() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " ldr r5, ._1\n" + " ldr r4, ._1 + 4\n" + " sub r5, r5, r4\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl unref_sub_812620C\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._2:\n" + " .align 2, 0\n" + "._1:\n" + " .word gOtherText_DataCannotUseVersion+0x30d\n" + " .word gOtherText_DataCannotUseVersion+0x3c\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C430() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " ldr r5, ._3\n" + " ldr r4, ._3 + 4\n" + " sub r5, r5, r4\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl unref_sub_812620C\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gOtherText_DataCannotUseVersion+0x95d\n" + " .word gOtherText_DataCannotUseVersion+0x93b\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C45C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " ldr r5, ._5\n" + " ldr r4, ._5 + 4\n" + " sub r5, r5, r4\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl unref_sub_812620C\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._6:\n" + " .align 2, 0\n" + "._5:\n" + " .word gOtherText_DataCannotUseVersion+0x99e\n" + " .word gOtherText_DataCannotUseVersion+0x97d\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C488() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " ldr r5, ._7\n" + " ldr r4, ._7 + 4\n" + " sub r5, r5, r4\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl unref_sub_812620C\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._8:\n" + " .align 2, 0\n" + "._7:\n" + " .word gOtherText_DataCannotUseVersion+0x97d\n" + " .word gOtherText_DataCannotUseVersion+0x95d\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C4B4() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._9\n" + " ldr r1, ._9 + 4\n" + " sub r4, r4, r1\n" + " add r2, r4, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r4, #0\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word gOtherText_DataCannotUseVersion+0xb74\n" + " .word gOtherText_DataCannotUseVersion+0xb61\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C4D4() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " ldr r5, ._11\n" + " ldr r4, ._11 + 4\n" + " sub r5, r5, r4\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl unref_sub_81261B4\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._12:\n" + " .align 2, 0\n" + "._11:\n" + " .word gOtherText_DataCannotUseVersion+0xc6d\n" + " .word gOtherText_DataCannotUseVersion+0xb74\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C500() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add r6, r0, #0\n" + " ldr r5, ._13\n" + " ldr r4, ._13 + 4\n" + " sub r5, r5, r4\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r4, #0\n" + " bl unref_sub_812620C\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._14:\n" + " .align 2, 0\n" + "._13:\n" + " .word gOtherText_DataCannotUseVersion+0xcf2\n" + " .word gOtherText_DataCannotUseVersion+0xc6d\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C52C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6}\n" + " mov r8, r0\n" + " lsl r5, r1, #0x10\n" + " lsr r0, r5, #0x10\n" + " mov r9, r0\n" + " ldr r6, ._15\n" + " ldr r4, ._15 + 4\n" + " sub r6, r6, r4\n" + " mov r0, r8\n" + " add r1, r4, #0\n" + " add r2, r6, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r0, ._15 + 8\n" + " sub r0, r0, r4\n" + " add r0, r0, r8\n" + " add r0, r0, #0x3\n" + " mov r1, r9\n" + " strb r1, [r0]\n" + " lsr r5, r5, #0x18\n" + " strb r5, [r0, #0x1]\n" + " mov r0, r8\n" + " add r1, r4, #0\n" + " bl unref_sub_812620C\n" + " add r0, r6, #0\n" + " pop {r3, r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._16:\n" + " .align 2, 0\n" + "._15:\n" + " .word gOtherText_DataCannotUseVersion+0xd16\n" + " .word gOtherText_DataCannotUseVersion+0xcf2\n" + " .word gOtherText_DataCannotUseVersion+0xd10\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C580() +{ + asm( + " push {lr}\n" + " mov r1, #0xd\n" + " bl debug_sub_813C52C\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C58C() +{ + asm( + " push {lr}\n" + " mov r1, #0x4\n" + " bl debug_sub_813C52C\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C598() +{ + asm( + " push {lr}\n" + " mov r1, #0x85\n" + " bl debug_sub_813C52C\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C5A4() +{ + asm( + " push {lr}\n" + " ldr r1, ._17\n" + " bl debug_sub_813C52C\n" + " pop {r1}\n" + " bx r1\n" + "._18:\n" + " .align 2, 0\n" + "._17:\n" + " .word 0x121\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C5B4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " add r4, r0, #0\n" + " ldr r7, ._23\n" + " ldr r0, ._23 + 4\n" + " ldr r1, ._23 + 8\n" + " sub r0, r0, r1\n" + " add r6, r0, r4\n" + " ldr r0, ._23 + 12\n" + " sub r5, r0, r1\n" + " ldr r0, ._23 + 16\n" + " mov r1, #0x0\n" + " mov r2, #0x0\n" + " bl GetEnigmaBerryChecksum\n" + " mov r2, #0x0\n" + " ldr r3, ._23 + 20\n" + " mov r1, #0x0\n" + "._19:\n" + " add r0, r4, r2\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, r3\n" + " ble ._19 @cond_branch\n" + " mov r2, #0x0\n" + " cmp r2, r5\n" + " bcs ._20 @cond_branch\n" + " ldr r3, ._23 + 8\n" + "._21:\n" + " add r0, r4, r2\n" + " add r1, r2, r3\n" + " ldrb r1, [r1]\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, r5\n" + " bcc ._21 @cond_branch\n" + "._20:\n" + " mov r2, #0x0\n" + " ldr r3, ._23 + 24\n" + "._22:\n" + " add r0, r6, r2\n" + " add r1, r7, r2\n" + " ldrb r1, [r1]\n" + " strb r1, [r0]\n" + " add r2, r2, #0x1\n" + " cmp r2, r3\n" + " bls ._22 @cond_branch\n" + " bl ClearEnigmaBerries\n" + " ldr r1, ._23 + 8\n" + " add r0, r4, #0\n" + " bl unref_sub_81261B4\n" + " add r0, r5, #0\n" + " pop {r4, r5, r6, r7}\n" + " pop {r1}\n" + " bx r1\n" + "._24:\n" + " .align 2, 0\n" + "._23:\n" + " .word gSaveBlock1+0x3160\n" + " .word gOtherText_DataCannotUseVersion+0x331\n" + " .word gOtherText_DataCannotUseVersion+0x30d\n" + " .word gOtherText_DataCannotUseVersion+0x861\n" + " .word gFlashSectors+0x8\n" + " .word 0xfff\n" + " .word 0x52f\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C638() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xffffffec\n" + " mov r8, r0\n" + " add r4, r1, #0\n" + " add r5, r2, #0\n" + " add r6, r3, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " lsl r5, r5, #0x18\n" + " lsr r5, r5, #0x18\n" + " lsl r6, r6, #0x10\n" + " lsr r6, r6, #0x10\n" + " bl ZeroMonData\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " str r0, [sp, #0x4]\n" + " mov r0, #0x1\n" + " str r0, [sp, #0x8]\n" + " ldr r0, ._25\n" + " str r0, [sp, #0xc]\n" + " mov r0, r8\n" + " add r1, r4, #0\n" + " add r2, r5, #0\n" + " mov r3, #0x20\n" + " bl CreateMon\n" + " ldr r2, ._25 + 4\n" + " mov r0, r8\n" + " mov r1, #0x7\n" + " bl SetMonData\n" + " ldr r2, ._25 + 8\n" + " mov r0, r8\n" + " mov r1, #0x2\n" + " bl SetMonData\n" + " str r6, [sp, #0x10]\n" + " mov r0, r8\n" + " mov r1, #0xc\n" + " add r2, sp, #0x10\n" + " bl SetMonData\n" + " add sp, sp, #0x14\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._26:\n" + " .align 2, 0\n" + "._25:\n" + " .word 0x270f\n" + " .word gFlashSectors+0xc\n" + " .word gFlashSectors+0x14\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C6AC() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " add sp, sp, #0xfffffff8\n" + " add r6, r0, #0\n" + " add r5, r1, #0\n" + " add r0, r5, #0\n" + " bl ClearMailStruct\n" + " add r0, r6, #0\n" + " mov r1, #0xc\n" + " bl GetMonData\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " mov r8, r0\n" + " bl ItemIsMail\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._27 @cond_branch\n" + " add r4, r5, #0\n" + " add r4, r4, #0x12\n" + " add r7, r5, #0\n" + " add r7, r7, #0x1a\n" + " mov r1, #0x9\n" + " add r0, r5, #0\n" + " add r0, r0, #0x10\n" + "._28:\n" + " strh r1, [r0]\n" + " sub r1, r1, #0x1\n" + " sub r0, r0, #0x2\n" + " cmp r0, r5\n" + " bge ._28 @cond_branch\n" + " add r0, r6, #0\n" + " mov r1, #0x7\n" + " mov r2, sp\n" + " bl GetMonData\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " mov r2, #0x8\n" + " bl StringCopyN\n" + " add r0, r6, #0\n" + " mov r1, #0x1\n" + " bl GetMonData\n" + " add r1, r7, #0\n" + " bl write_word_to_mem\n" + " add r0, r6, #0\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x10\n" + " lsr r4, r4, #0x10\n" + " add r0, r6, #0\n" + " mov r1, #0x0\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " add r0, r4, #0\n" + " bl SpeciesToMailSpecies\n" + " strh r0, [r5, #0x1e]\n" + " mov r0, r8\n" + " strh r0, [r5, #0x20]\n" + "._27:\n" + " add sp, sp, #0x8\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C740() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, sl\n" + " mov r5, r9\n" + " mov r4, r8\n" + " push {r4, r5, r6}\n" + " add sp, sp, #0xffffffd0\n" + " add r6, r0, #0\n" + " ldr r0, ._29\n" + " mov r8, r0\n" + " ldr r1, ._29 + 4\n" + " ldr r5, ._29 + 8\n" + " sub r1, r1, r0\n" + " mov r9, r1\n" + " add r0, r6, #0\n" + " mov r1, r8\n" + " mov r2, r9\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r5, #0\n" + " mov r1, #0x19\n" + " mov r2, #0x5\n" + " mov r3, #0x0\n" + " bl debug_sub_813C638\n" + " add r4, sp, #0x24\n" + " mov r0, #0x1\n" + " mov sl, r0\n" + " mov r1, sl\n" + " strb r1, [r4]\n" + " add r0, r5, #0\n" + " mov r1, #0x2d\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " mov r0, #0x3\n" + " strb r0, [r4]\n" + " add r0, r5, #0\n" + " mov r1, #0x20\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " mov r0, #0xff\n" + " strb r0, [r4]\n" + " add r0, r5, #0\n" + " mov r1, #0x23\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldr r1, ._29 + 12\n" + " add r0, r4, #0\n" + " mov r2, #0xb\n" + " bl StringCopyN\n" + " add r0, r5, #0\n" + " mov r1, #0x2\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " mov r0, sl\n" + " strb r0, [r4]\n" + " add r0, r5, #0\n" + " mov r1, #0x3\n" + " add r2, r4, #0\n" + " bl SetMonData\n" + " ldr r0, ._29 + 16\n" + " add r0, r6, r0\n" + " mov r1, r8\n" + " sub r0, r0, r1\n" + " add r1, r5, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r0, ._29 + 20\n" + " add r6, r6, r0\n" + " mov r0, r8\n" + " sub r6, r6, r0\n" + " add r0, r6, #0\n" + " mov r1, sp\n" + " mov r2, #0x24\n" + " bl gScriptFuncs_End+0x5bc4\n" + " mov r0, r9\n" + " add sp, sp, #0x30\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._30:\n" + " .align 2, 0\n" + "._29:\n" + " .word gOtherText_DataCannotUseVersion+0x99e\n" + " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gEnemyParty\n" + " .word gFlashSectors+0x4\n" + " .word gOtherText_DataCannotUseVersion+0x9c2\n" + " .word gOtherText_DataCannotUseVersion+0xa26\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C810() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xffffffdc\n" + " add r6, r0, #0\n" + " ldr r5, ._31\n" + " ldr r0, ._31 + 4\n" + " ldr r4, ._31 + 8\n" + " sub r0, r0, r5\n" + " mov r8, r0\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " mov r2, r8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r4, #0\n" + " mov r1, #0xc9\n" + " mov r2, #0x15\n" + " mov r3, #0x82\n" + " bl debug_sub_813C638\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl debug_sub_813C6AC\n" + " ldr r0, ._31 + 12\n" + " add r0, r6, r0\n" + " sub r0, r0, r5\n" + " add r1, r4, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r0, ._31 + 16\n" + " add r0, r6, r0\n" + " sub r0, r0, r5\n" + " mov r1, sp\n" + " mov r2, #0x24\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl unref_sub_812620C\n" + " mov r0, r8\n" + " add sp, sp, #0x24\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._32:\n" + " .align 2, 0\n" + "._31:\n" + " .word gOtherText_DataCannotUseVersion+0x99e\n" + " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gEnemyParty\n" + " .word gOtherText_DataCannotUseVersion+0x9c2\n" + " .word gOtherText_DataCannotUseVersion+0xa26\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C888() +{ + asm( + " push {r4, r5, r6, lr}\n" + " mov r6, r8\n" + " push {r6}\n" + " add sp, sp, #0xffffffdc\n" + " add r6, r0, #0\n" + " ldr r5, ._33\n" + " ldr r0, ._33 + 4\n" + " ldr r4, ._33 + 8\n" + " sub r0, r0, r5\n" + " mov r8, r0\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " mov r2, r8\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r4, #0\n" + " mov r1, #0xc9\n" + " mov r2, #0x15\n" + " mov r3, #0x82\n" + " bl debug_sub_813C638\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " bl debug_sub_813C6AC\n" + " mov r0, #0x0\n" + " strh r0, [r4, #0x1c]\n" + " ldr r0, ._33 + 12\n" + " add r0, r6, r0\n" + " sub r0, r0, r5\n" + " add r1, r4, #0\n" + " mov r2, #0x64\n" + " bl gScriptFuncs_End+0x5bc4\n" + " ldr r0, ._33 + 16\n" + " add r0, r6, r0\n" + " sub r0, r0, r5\n" + " mov r1, sp\n" + " mov r2, #0x24\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r6, #0\n" + " add r1, r5, #0\n" + " bl unref_sub_812620C\n" + " mov r0, r8\n" + " add sp, sp, #0x24\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._34:\n" + " .align 2, 0\n" + "._33:\n" + " .word gOtherText_DataCannotUseVersion+0x99e\n" + " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gEnemyParty\n" + " .word gOtherText_DataCannotUseVersion+0x9c2\n" + " .word gOtherText_DataCannotUseVersion+0xa26\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C904() +{ + asm( + " push {r4, lr}\n" + " ldr r4, ._35\n" + " add r0, r4, #0\n" + " mov r1, #0x5\n" + " mov r2, #0x32\n" + " mov r3, #0xb7\n" + " bl debug_sub_813C638\n" + " add r0, r4, #0\n" + " add r0, r0, #0x64\n" + " mov r1, #0x8\n" + " mov r2, #0x32\n" + " mov r3, #0xc4\n" + " bl debug_sub_813C638\n" + " add r4, r4, #0xc8\n" + " add r0, r4, #0\n" + " mov r1, #0x2\n" + " mov r2, #0x32\n" + " mov r3, #0x8d\n" + " bl debug_sub_813C638\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._36:\n" + " .align 2, 0\n" + "._35:\n" + " .word gPlayerParty\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_813C93C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xffffff44\n" + " add r4, r0, #0\n" + " ldr r6, ._37\n" + " ldr r5, ._37 + 4\n" + " sub r5, r5, r6\n" + " add r1, r6, #0\n" + " add r2, r5, #0\n" + " bl gScriptFuncs_End+0x5bc4\n" + " bl SavePlayerParty\n" + " bl debug_sub_813C904\n" + " ldr r1, ._37 + 8\n" + " ldr r2, ._37 + 12\n" + " mov r0, sp\n" + " bl debug_sub_8075DB4\n" + " bl LoadPlayerParty\n" + " ldr r0, ._37 + 16\n" + " add r4, r4, r0\n" + " sub r4, r4, r6\n" + " add r0, r4, #0\n" + " mov r1, sp\n" + " mov r2, #0xbc\n" + " bl gScriptFuncs_End+0x5bc4\n" + " add r0, r5, #0\n" + " add sp, sp, #0xbc\n" + " pop {r4, r5, r6}\n" + " pop {r1}\n" + " bx r1\n" + "._38:\n" + " .align 2, 0\n" + "._37:\n" + " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gOtherText_DataCannotUseVersion+0xb61\n" + " .word gFlashSectors+0x24\n" + " .word 0x270f\n" + " .word gOtherText_DataCannotUseVersion+0xa61\n" + "\n" + ); +} + diff --git a/src/engine/sprite.c b/src/engine/sprite.c index cec3d0b3a..ed143ae8e 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -815,7 +815,7 @@ void ProcessSpriteCopyRequests(void) } } -static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images) +/*static*/ void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images) { if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS) { @@ -824,7 +824,7 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size; gSpriteCopyRequestCount++; } -#ifdef DEBUG +#if DEBUG else { unref_sub_80AB084(sDmaOverErrorMsg); -- cgit v1.2.3 From d79f440b8d4c5af26a98011719807b05745533e1 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 12:10:41 -0600 Subject: use 'if DEBUG' instead of 'ifdef DEBUG' --- src/battle/battle_2.c | 4 ++-- src/battle/battle_interface.c | 2 +- src/battle/battle_records.c | 2 +- src/debug/kagaya_debug_menu.c | 2 +- src/debug/nakamura_debug_menu.c | 2 +- src/debug/nohara_debug_menu.c | 2 +- src/debug/taya_debug_window.c | 2 +- src/debug/tomomichi_debug_menu.c | 2 +- src/debug/watanabe_debug_menu.c | 2 +- src/engine/cable_club.c | 2 +- src/engine/link.c | 4 ++-- src/engine/rtc.c | 4 ++-- src/engine/save.c | 2 +- src/engine/sprite.c | 2 +- src/engine/task.c | 2 +- src/engine/trainer_card.c | 16 ++++++++-------- src/field/bike.c | 6 +++--- src/field/decoration_inventory.c | 2 +- src/field/mauville_man.c | 2 +- src/field/party_menu.c | 4 ++-- src/field/roamer.c | 2 +- src/field/slot_machine.c | 2 +- src/field/start_menu.c | 4 ++-- src/pokemon/pokemon_1.c | 2 +- src/rom3.c | 4 ++-- src/rom6.c | 2 +- src/scene/new_game.c | 10 +++++----- src/scene/title_screen.c | 4 ++-- 28 files changed, 48 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 12b18bb52..5700d1b7e 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1258,7 +1258,7 @@ void sub_800F02C(void) memcpy(gSharedMem, gUnknown_02023A00, 0x60); } -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void sub_800F104() { @@ -1554,7 +1554,7 @@ void sub_800F104(void) } #endif -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void sub_800F298() { diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index f7734301c..b19547d52 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -3045,7 +3045,7 @@ static u8 sub_80457E8(u8 a, u8 b) } } -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index a03a215fd..17e2352ff 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -17,7 +17,7 @@ struct DebugStruct1 extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4]; extern u8 gBattleOutcome; -#ifdef DEBUG +#if DEBUG const struct DebugStruct1 gUnknown_Debug_4245CC[] = { { 1, _("NUMBER1") }, diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 6f2734b08..e54e0d17f 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -1,4 +1,4 @@ -#ifdef DEBUG +#if DEBUG #include "global.h" #include "menu.h" diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 48b6d91b8..343d56bc2 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1,4 +1,4 @@ -#ifdef DEBUG +#if DEBUG #include "global.h" #include "menu.h" diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index b7e62481b..2e739ef4d 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -1,4 +1,4 @@ -#ifdef DEBUG +#if DEBUG #include "global.h" #define BSS_DATA __attribute__((section(".bss"))) diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index 4f9b588d8..c20d9b87c 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -1,4 +1,4 @@ -#ifdef DEBUG +#if DEBUG #include "global.h" EWRAM_DATA u8 unk_2030224[4] = { 0 }; diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index f745f2993..eb2fd8a7e 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -1,4 +1,4 @@ -#ifdef DEBUG +#if DEBUG #include "global.h" #define BSS_DATA __attribute__((section(".bss"))) diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index fed5b4e52..dcb3bd90b 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -1,4 +1,4 @@ -#ifdef DEBUG +#if DEBUG #include "global.h" EWRAM_DATA u8 unk_debug_ewram_0[56] = { 0 }; diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 03a64afc6..688560218 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -360,7 +360,7 @@ void sub_80831F8(u8 taskId) || sub_8082DF4(taskId) == TRUE) return; -#ifdef DEBUG +#if DEBUG sub_8082D60(taskId, GetLinkPlayerCount_2()); #endif diff --git a/src/engine/link.c b/src/engine/link.c index f93fb775f..5747915d7 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -544,7 +544,7 @@ static void ProcessRecvCmds(u8 unusedParam) else { SetBlockReceivedFlag(i); -#ifdef DEBUG +#if DEBUG debug_sub_808B838(i); #endif } @@ -979,7 +979,7 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits) } } -#ifdef DEBUG +#if DEBUG EWRAM_DATA u16 *debugCharacterBase = NULL; EWRAM_DATA void *unk_20238C8 = NULL; diff --git a/src/engine/rtc.c b/src/engine/rtc.c index a56fcd44e..5462298ed 100644 --- a/src/engine/rtc.c +++ b/src/engine/rtc.c @@ -268,7 +268,7 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day) *dest = EOS; } -#ifdef DEBUG +#if DEBUG void debug_sub_800987C(u8 *dest) { @@ -370,7 +370,7 @@ u32 RtcGetMinuteCount() return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute; } -#ifdef DEBUG +#if DEBUG void debug_sub_8009A60() { RtcGetRawInfo(&sRtc); diff --git a/src/engine/save.c b/src/engine/save.c index d7df98e5f..5564a6ce3 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -663,7 +663,7 @@ static u16 CalculateChecksum(void *data, u16 size) return ((checksum >> 16) + checksum); } -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void sub_813B79C() { diff --git a/src/engine/sprite.c b/src/engine/sprite.c index ed143ae8e..eaffedfdc 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -841,7 +841,7 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size) gSpriteCopyRequests[gSpriteCopyRequestCount].size = size; gSpriteCopyRequestCount++; } -#ifdef DEBUG +#if DEBUG else { unref_sub_80AB084(sDmaOverErrorMsg); diff --git a/src/engine/task.c b/src/engine/task.c index ed17d28bb..d1f2cb5df 100644 --- a/src/engine/task.c +++ b/src/engine/task.c @@ -51,7 +51,7 @@ u8 CreateTask(TaskFunc func, u8 priority) } } -#ifdef DEBUG +#if DEBUG unref_sub_80AB084(gError_NoTasksLeft); #endif diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index daa513145..f9adc5777 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -63,7 +63,7 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp"); // XXX: what is this? u8 *const ewram_ = gSharedMem; -#ifdef DEBUG +#if DEBUG const struct TrainerCard gUnknown_Debug_083E0448 = { .gender = FEMALE, @@ -204,13 +204,13 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void); static void TrainerCard_Back_PrintPokemonTrades(void); void unref_sub_8094588(u16 left, u16 top); -#ifdef DEBUG +#if DEBUG static u8 gDebug_03000748; #endif void TrainerCard_ShowPlayerCard(Callback arg1) { -#ifdef DEBUG +#if DEBUG gDebug_03000748 = 0; #endif TrainerCard_InitScreenForPlayer(arg1); @@ -220,7 +220,7 @@ void TrainerCard_ShowPlayerCard(Callback arg1) void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) { -#ifdef DEBUG +#if DEBUG gDebug_03000748 = 0; #endif TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2); @@ -228,7 +228,7 @@ void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2) ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language; } -#ifdef DEBUG +#if DEBUG void debug_sub_80A0710(Callback callback) { gDebug_03000748 = TRUE; @@ -619,7 +619,7 @@ static void TrainerCard_FillFlags(void) } } -#ifdef DEBUG +#if DEBUG if (gDebug_03000748 != 0) { ewram0_2.showHallOfFame = TRUE; @@ -723,7 +723,7 @@ bool8 TrainerCard_WaitForKeys(struct Task *task) } return TRUE; } -#ifdef DEBUG +#if DEBUG else if (gDebug_03000748 && gMain.newKeys & R_BUTTON) { ewram0_2.starCount++; @@ -1462,7 +1462,7 @@ static void TrainerCard_Front_PrintPokedexCount(void) u8 buffer[16]; if ( -#ifdef DEBUG +#if DEBUG gDebug_03000748 == 0 && #endif !ewram0_2.showPokedexCount) diff --git a/src/field/bike.c b/src/field/bike.c index 736dbc837..eb9d56a64 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -14,7 +14,7 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; extern u8 gUnusedBikeCameraAheadPanback; -#ifdef DEBUG +#if DEBUG extern u8 gUnknown_020297ED; u8 debug_sub_805F2B0(u8); #endif @@ -131,7 +131,7 @@ static const struct BikeHistoryInputInfo gAcroBikeTricksList[] = void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) { -#ifdef DEBUG +#if DEBUG if (gUnknown_020297ED && debug_sub_805F2B0(direction)) { Bike_SetBikeStill(); @@ -284,7 +284,7 @@ static void MachBikeTransition_TrySlowDown(u8 var) // the acro bike requires the input handler to be executed before the transition can. static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys) { -#ifdef DEBUG +#if DEBUG if (gUnknown_020297ED && debug_sub_805F2B0(newDirection)) { Bike_SetBikeStill(); diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c index 21ced1be8..8f7f5eb92 100644 --- a/src/field/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -166,7 +166,7 @@ u8 sub_81341D4(void) } -#ifdef DEBUG +#if DEBUG void debug_sub_814A3A8(void) { u8 decor; diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 1b53df6be..00368c2f5 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -250,7 +250,7 @@ void SetupMauvilleOldMan(void) sub_80F83D0(); } -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void debug_sub_810B32C() { diff --git a/src/field/party_menu.c b/src/field/party_menu.c index c099fd8f4..7994dd60c 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4025,7 +4025,7 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) CreateTask(Task_TeamMonTMMove, 5); } -#ifdef DEBUG +#if DEBUG extern u8 gUnknown_020297ED; #endif @@ -4044,7 +4044,7 @@ void Task_TeamMonTMMove(u8 taskId) else { if ( -#ifdef DEBUG +#if DEBUG !gUnknown_020297ED && #endif !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) diff --git a/src/field/roamer.c b/src/field/roamer.c index 16a42e9f1..6ed5b6c89 100644 --- a/src/field/roamer.c +++ b/src/field/roamer.c @@ -227,7 +227,7 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum) *mapNum = sRoamerLocation[MAP_NUM]; } -#ifdef DEBUG +#if DEBUG void debug_sub_814A714(void) { if (gSaveBlock1.location.mapGroup == 0) diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index e231f686d..311679cb7 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -2855,7 +2855,7 @@ static void sub_8104C5C(void) static void LoadSlotMachineWheelOverlay(void); -#ifdef DEBUG +#if DEBUG // should be static __attribute__((section(".bss"))) u8 unk_debug_bss_1[0xC] = { 0 }; #endif diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 105ef1756..36295b3f8 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -44,7 +44,7 @@ enum { MENU_ACTION_PLAYER_LINK }; -#ifdef DEBUG +#if DEBUG static u32 _debugStartMenu_0 __attribute__((unused)); static u32 _debugStartMenu_1 __attribute__((unused)); #endif @@ -137,7 +137,7 @@ static bool32 sub_80719FC(u8 *ptr); static void sub_8071B54(void); static void Task_8071B64(u8 taskId); -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void debug_sub_8075C30() { diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 079bcf489..fd4684832 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -524,7 +524,7 @@ void CalculateMonStats(struct Pokemon *mon) SetMonData(mon, MON_DATA_HP, ¤tHP); } -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void debug_sub_803F55C() { diff --git a/src/rom3.c b/src/rom3.c index 0fe67dcec..efaa1d97f 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -67,7 +67,7 @@ void sub_800B858(void) } } -#ifdef DEBUG +#if DEBUG extern u8 gUnknown_02023A14_50; #endif @@ -98,7 +98,7 @@ void setup_poochyena_battle(void) gUnknown_020239FC = 0; gUnknown_02024C78 = 0; -#ifdef DEBUG +#if DEBUG if (gUnknown_02023A14_50 & 0x80) { ewram[0x160fd] = 0; diff --git a/src/rom6.c b/src/rom6.c index 1c0654538..b23f1c15a 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -117,7 +117,7 @@ static void sub_810B4CC(u8 taskId) DestroyTask(taskId); } -#ifdef DEBUG +#if DEBUG void debug_sub_8120968(void) { if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE) diff --git a/src/scene/new_game.c b/src/scene/new_game.c index d954fb3c8..cec7134a3 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -31,7 +31,7 @@ #include "text.h" #include "tv.h" -#ifdef DEBUG +#if DEBUG extern u8 gUnknown_020297ED; #endif @@ -50,7 +50,7 @@ static const struct ContestWinner sEmptyMuseumPortrait = .trainerName = {EOS}, }; -#ifdef DEBUG +#if DEBUG const s8 gUnknown_Debug_0823C788[][2] = { { MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK) }, @@ -114,7 +114,7 @@ void ZeroBattleTowerData(void) CpuFill32(0, &gSaveBlock2.battleTower, sizeof(gSaveBlock2.battleTower)); } -#ifdef DEBUG +#if DEBUG void debug_sub_8052E04() { u8 i; @@ -153,7 +153,7 @@ void ClearSav2(void) void sub_8052E4C(void) { gDifferentSaveFile = 0; -#ifdef DEBUG +#if DEBUG gUnknown_020297ED = 0; #endif sub_808C0A0(); @@ -209,7 +209,7 @@ void NewGameInitData(void) ScriptContext2_RunNewScript(gUnknown_0819FA81); } -#ifdef DEBUG +#if DEBUG extern void debug_sub_80A3904(void); extern void debug_sub_80A3714(void); extern void debug_sub_8120F98(void); diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 8d5c4da13..4ff02d93c 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -831,7 +831,7 @@ static void Task_TitleScreenPhase3(u8 taskId) BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); SetMainCallback2(CB2_GoToResetRtcScreen); } -#ifdef DEBUG +#if DEBUG else if (gMain.heldKeys == SELECT_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); @@ -864,7 +864,7 @@ static void CB2_GoToMainMenu(void) SetMainCallback2(CB2_InitMainMenu); } -#ifdef DEBUG +#if DEBUG static void CB2_GoToTestMenu(void) { if (!UpdatePaletteFade()) -- cgit v1.2.3 From 05d18468a4b817c0976b16017ef7b6044befed7f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 13:18:23 -0500 Subject: Dma macro cleanup and cleanup sub_8076034 and sub_8076464 --- src/battle/anim/love_bg.c | 16 +------ src/battle/anim/scary_face.c | 16 +------ src/battle/battle_anim.c | 106 ++++++++--------------------------------- src/debug/matsuda_debug_menu.c | 24 ++-------- src/debug/mori_debug_menu.c | 8 ++-- src/debug/unknown_debug_menu.c | 6 +-- src/field/start_menu.c | 20 ++++---- 7 files changed, 43 insertions(+), 153 deletions(-) (limited to 'src') diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c index bd3d22ca6..ef524e4be 100644 --- a/src/battle/anim/love_bg.c +++ b/src/battle/anim/love_bg.c @@ -90,21 +90,7 @@ void sub_80D21F0(u8 taskId) break; case 3: sub_8078914(&subStruct); - { - u8 *addr = subStruct.field_0; - u32 size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - } + DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); DmaClear32(3, subStruct.field_4, 0x800); if (!IsContest()) REG_BG1CNT_BITFIELD.charBaseBlock = 0; diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c index 47776a3cb..65b9637c0 100644 --- a/src/battle/anim/scary_face.c +++ b/src/battle/anim/scary_face.c @@ -98,21 +98,7 @@ void sub_80D24E0(u8 taskId) break; case 3: sub_8078914(&subStruct); - { - u8 *addr = subStruct.field_0; - u32 size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - } + DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); DmaClear32(3, subStruct.field_4, 0x800); if (!IsContest()) REG_BG1CNT_BITFIELD.charBaseBlock = 0; diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 4549d1fcb..059b8df1f 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -1910,36 +1910,19 @@ bool8 IsAnimBankSpriteVisible(u8 bank) void sub_8076034(u8 a, u8 b) { - volatile u8 pointlessZero; - u16 *addr2; u8 spriteId; if (b == 0) { + volatile u8 pointlessZero; struct UnknownStruct2 s; - u8 *addr; - u32 size; u8 r2; - u16 *addr3; sub_8078914(&s); - addr = s.unk0; - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = (void *)s.unk4; - DmaFill16(3, 0xFF, addr2, 0x1000); + DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill16Defvars(3, 0xFF, (void *)s.unk4, 0x1000); REG_BG1CNT_BITFIELD.priority = 2; REG_BG1CNT_BITFIELD.screenSize = 1; @@ -1956,8 +1939,7 @@ void sub_8076034(u8 a, u8 b) REG_BG1VOFS = gBattle_BG1_Y; LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32); - addr3 = (u16 *)PLTT + s.unk8 * 16; - DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (u16 *)PLTT + s.unk8 * 16, 32); if (IsContest() != 0) r2 = 0; @@ -1969,27 +1951,12 @@ void sub_8076034(u8 a, u8 b) } else { - u8 *addr; - u32 size; - u16 *addr3; + volatile u8 pointlessZero; - addr = (void *)(VRAM + 0x6000); - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = (void *)(VRAM + 0xF000); - DmaFill32(3, 0, addr2, 0x800); + DmaFill32Large(3, 0, (void *)(VRAM + 0x6000), 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill32Defvars(3, 0, (void *)(VRAM + 0xF000), 0x800); REG_BG2CNT_BITFIELD.priority = 2; REG_BG2CNT_BITFIELD.screenSize = 1; @@ -2004,8 +1971,7 @@ void sub_8076034(u8 a, u8 b) REG_BG2VOFS = gBattle_BG2_Y; LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32); - addr3 = (void *)(PLTT + 0x120); - DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (void *)(PLTT + 0x120), 32); sub_80E4EF8(0, 0, GetBankIdentity(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); } @@ -2060,57 +2026,25 @@ void sub_80763FC(u16 a, u16 *b, u32 c, u8 d) void sub_8076464(u8 a) { - u8 *addr; - u32 size; volatile u8 pointlessZero; struct UnknownStruct2 s; sub_8078914(&s); if (a == 0 || IsContest() != 0) { - u16 *addr2; - - addr = s.unk0; - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = s.unk4; - DmaFill32(3, 0, addr2, 0x800); + DmaFill32Large(3, 0, s.unk0, 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill32Defvars(3, 0, s.unk4, 0x800); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; } else { - u16 *addr2; - - addr = (void *)(VRAM + 0x6000); - size = 0x2000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } - pointlessZero = 0; - pointlessZero = 0; - addr2 = (void *)(VRAM + 0xF000); - DmaFill32(3, 0, addr2, 0x800); + DmaFill32Large(3, 0, (void *)(VRAM + 0x6000), 0x2000, 0x1000); + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + pointlessZero = 0; // is there a stubbed out Dma macro here that left the 0 load in? + DmaFill32Defvars(3, 0, (void *)(VRAM + 0xF000), 0x800); gBattle_BG2_X = 0; gBattle_BG2_Y = 0; } diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index b879584dd..da1937adb 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -38,7 +38,7 @@ extern u16 gBattle_BG2_Y; extern u16 gBattle_BG3_X; extern u16 gBattle_BG3_Y; -extern u8 (*gCallback_03004AE8)(void); +extern u8 (*gMenuCallback)(void); extern bool8 gReceivedRemoteLinkPlayers; @@ -251,7 +251,7 @@ u8 unref_sub_80A9B28(void) Menu_DrawStdWindowFrame(0, 0, 17, 18); Menu_PrintItems(1, 1, 7, gMatsudaDebugMenuActions); InitMenu(0, 1, 1, 7, 0, 16); - gCallback_03004AE8 = sub_80A9B78; + gMenuCallback = sub_80A9B78; return 0; } @@ -264,7 +264,7 @@ static bool8 sub_80A9B78(void) case -2: return FALSE; default: - gCallback_03004AE8 = gMatsudaDebugMenuActions[choice].func; + gMenuCallback = gMatsudaDebugMenuActions[choice].func; return FALSE; case -1: CloseMenu(); @@ -469,26 +469,10 @@ static void sub_80A9F50(void) static void sub_80A9FE4(void) { - u8 *addr; - u32 i; u8 ptr[5]; memcpy(ptr, gMatsudaDebugMenu_UnknownByteArray, 5); - - addr = (void *)VRAM; - i = VRAM_SIZE; - - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - i -= 0x1000; - if (i <= 0x1000) - { - DmaFill32(3, 0, addr, i); - break; - } - } + DmaFill32Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); sub_80034D4((void *)VRAM, ptr); LoadFontDefaultPalette(&gWindowTemplate_81E6C3C); } diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 7b9a579a7..767f4cda0 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -12,7 +12,7 @@ #define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT) -extern u8 (*gCallback_03004AE8)(void); +extern u8 (*gMenuCallback)(void); u8 gUnknown_03004DA0[0x20]; @@ -98,7 +98,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 14, 30, 19); Menu_PrintText(localPtr, 1, 15); - gCallback_03004AE8 = sub_8083D4C; + gMenuCallback = sub_8083D4C; return 0; } @@ -184,7 +184,7 @@ bool8 MoriDebugMenuProcessInput(void) switch (choice) { default: - gCallback_03004AE8 = gMoriDebugMenuActions[choice].func; + gMenuCallback = gMoriDebugMenuActions[choice].func; return FALSE; case -2: return FALSE; @@ -200,6 +200,6 @@ s8 InitMoriDebugMenu(void) Menu_DrawStdWindowFrame(0, 0, 10, 19); Menu_PrintItems(1, 1, 9, gMoriDebugMenuActions); InitMenu(0, 1, 1, 9, 0, 9); - gCallback_03004AE8 = MoriDebugMenuProcessInput; + gMenuCallback = MoriDebugMenuProcessInput; return 0; } diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index 9cece924d..ef3e0e66c 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -4,7 +4,7 @@ extern u8 gBattleCommunication[]; -extern u8 (*gCallback_03004AE8)(void); +extern u8 (*gMenuCallback)(void); static u8 sub_814A4B8(void); static u8 sub_814A464(void); @@ -36,7 +36,7 @@ int unref_sub_814A414(void) Menu_DrawStdWindowFrame(0, 0, 16, 18); Menu_PrintItems(2, 1, 8, gUnknown_0842C29C); InitMenu(0, 1, 1, 8, 0, 15); - gCallback_03004AE8 = sub_814A464; + gMenuCallback = sub_814A464; return 0; } @@ -55,7 +55,7 @@ static u8 sub_814A464(void) else { gBattleCommunication[0] = result; - gCallback_03004AE8 = gUnknown_0842C29C[result].func; + gMenuCallback = gUnknown_0842C29C[result].func; return 0; } } diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 110351016..95aa9c79e 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -54,7 +54,7 @@ extern u16 gSpecialVar_Result; extern u8 gUnknown_03004860; -u8 (*gCallback_03004AE8)(void); +u8 (*gMenuCallback)(void); EWRAM_DATA static u8 sStartMenuCursorPos = 0; EWRAM_DATA static u8 sNumStartMenuActions = 0; @@ -283,11 +283,11 @@ void sub_80712B4(u8 taskId) switch (task->data[0]) { case 0: - gCallback_03004AE8 = StartMenu_InputProcessCallback; + gMenuCallback = StartMenu_InputProcessCallback; task->data[0]++; break; case 1: - if (gCallback_03004AE8() == 1) + if (gMenuCallback() == 1) DestroyTask(taskId); break; } @@ -325,10 +325,10 @@ static u8 StartMenu_InputProcessCallback(void) if (GetNationalPokedexCount(0) == 0) return 0; } - gCallback_03004AE8 = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func; - if (gCallback_03004AE8 != StartMenu_SaveCallback && - gCallback_03004AE8 != StartMenu_ExitCallback && - gCallback_03004AE8 != StartMenu_RetireCallback) + gMenuCallback = sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func; + if (gMenuCallback != StartMenu_SaveCallback && + gMenuCallback != StartMenu_ExitCallback && + gMenuCallback != StartMenu_RetireCallback) fade_screen(1, 0); return 0; } @@ -405,7 +405,7 @@ static u8 StartMenu_PlayerCallback(void) static u8 StartMenu_SaveCallback(void) { Menu_DestroyCursor(); - gCallback_03004AE8 = SaveCallback1; + gMenuCallback = SaveCallback1; return 0; } @@ -461,7 +461,7 @@ enum static u8 SaveCallback1(void) { sub_807160C(); - gCallback_03004AE8 = SaveCallback2; + gMenuCallback = SaveCallback2; return FALSE; } @@ -475,7 +475,7 @@ static u8 SaveCallback2(void) //Go back to start menu Menu_EraseScreen(); InitStartMenu(); - gCallback_03004AE8 = StartMenu_InputProcessCallback; + gMenuCallback = StartMenu_InputProcessCallback; return FALSE; case SAVE_SUCCESS: case SAVE_ERROR: -- cgit v1.2.3 From 6903b3626aed4e5521243b4517c43fed3c4d0ff5 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 13:11:10 -0600 Subject: resolve some undefined references --- src/battle/battle_2.c | 90 +++--- src/debug/kagaya_debug_menu.c | 8 +- src/debug/nakamura_debug_menu.c | 272 ++++++++-------- src/debug/nohara_debug_menu.c | 86 +++--- src/debug/start_menu_debug.c | 224 +++++++------- src/debug/taya_debug_window.c | 62 ++-- src/debug/tomomichi_debug_menu.c | 652 +++++++++++++++++++-------------------- src/debug/watanabe_debug_menu.c | 194 ++++++------ src/field/slot_machine.c | 96 +++--- src/field/start_menu.c | 6 +- 10 files changed, 845 insertions(+), 845 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 5700d1b7e..78fc35ba5 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -275,7 +275,7 @@ void InitBattle(void) " bl sub_80895F8\n" " ldr r4, ._10 + 32\n" " add r0, r4, #0\n" - " bl SetUpWindowConfig\n" + " bl Text_LoadWindowTemplate\n" " bl ResetPaletteFade\n" " ldr r0, ._10 + 36\n" " mov r1, #0x0\n" @@ -306,13 +306,13 @@ void InitBattle(void) "._7:\n" " ldr r0, ._10 + 76\n" " add r1, r4, #0\n" - " bl InitWindowFromConfig\n" + " bl Text_InitWindowWithTemplate\n" " ldr r0, ._10 + 80\n" " ldr r1, ._10 + 84\n" - " bl InitWindowFromConfig\n" + " bl Text_InitWindowWithTemplate\n" " ldr r0, ._10 + 88\n" " ldr r1, ._10 + 92\n" - " bl InitWindowFromConfig\n" + " bl Text_InitWindowWithTemplate\n" " bl sub_800D6D4\n" " bl sub_800DAB8\n" " bl ResetSpriteData\n" @@ -348,7 +348,7 @@ void InitBattle(void) " .word gWindowConfig_81E6C58\n" " .word gUnknown_030042A4\n" " .word gUnknown_030042A0\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_030041B4\n" " .word gUnknown_03004288\n" " .word gUnknown_03004280\n" @@ -3274,10 +3274,10 @@ void debug_sub_80108B8() " bl remove_some_task\n" " ldr r4, ._507 + 84\n" " add r0, r4, #0\n" - " bl SetUpWindowConfig\n" + " bl Text_LoadWindowTemplate\n" " ldr r0, ._507 + 88\n" " add r1, r4, #0\n" - " bl InitWindowFromConfig\n" + " bl Text_InitWindowWithTemplate\n" " ldr r0, ._507 + 92\n" " strb r5, [r0]\n" " ldr r0, ._507 + 96\n" @@ -3334,7 +3334,7 @@ void debug_sub_80108B8() " .word 0x4000200\n" " .word gUnknown_030042A4\n" " .word gUnknown_030042A0\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_030041B4\n" " .word gUnknown_03004288\n" " .word gUnknown_03004280\n" @@ -3987,7 +3987,7 @@ void debug_sub_8010CAC() " .align 2, 0\n" "._581:\n" " .word gUnknown_Debug_03004360\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_Debug_030043A4\n" " .word gMain\n" " .word gUnknown_Debug_030043A0\n" @@ -4043,7 +4043,7 @@ void debug_sub_8010CAC() " .align 2, 0\n" "._587:\n" " .word gUnknown_Debug_03004360\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_Debug_030043A4\n" " .word gMain\n" " .word gUnknown_Debug_030043A0\n" @@ -5839,7 +5839,7 @@ void debug_sub_8011D40() " .word 0x80000800\n" " .word gUnknown_030042A4\n" " .word gUnknown_030042A0\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_030041B4\n" " .word gUnknown_03004288\n" " .word gUnknown_03004280\n" @@ -5912,7 +5912,7 @@ void debug_sub_8011DD4() " .word 0x9803\n" " .word gUnknown_030042A4\n" " .word gUnknown_030042A0\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_030041B4\n" " .word gUnknown_03004288\n" " .word gUnknown_03004280\n" @@ -6061,7 +6061,7 @@ void debug_sub_8011EA0() " add r1, r6, #0\n" " ldr r2, [sp, #0x4]\n" " mov r3, r8\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " ldr r0, ._823 + 8\n" " bl sub_8002F44\n" " ldr r1, ._823 + 12\n" @@ -6090,7 +6090,7 @@ void debug_sub_8011EA0() " str r0, [sp]\n" " ldr r0, ._823 + 8\n" " add r1, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " ldr r0, ._823 + 8\n" " bl sub_8002F44\n" " mov r0, #0xff\n" @@ -6113,7 +6113,7 @@ void debug_sub_8011EA0() " add r1, r6, #0\n" " ldr r2, [sp, #0x4]\n" " mov r3, r8\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " ldr r0, ._823 + 8\n" " bl sub_8002F44\n" " b ._848\n" @@ -6171,7 +6171,7 @@ void debug_sub_8011EA0() " str r0, [sp]\n" " add r0, r6, #0\n" " mov r1, sl\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl sub_8002F44\n" " lsl r4, r7, #0x1\n" @@ -6199,7 +6199,7 @@ void debug_sub_8011EA0() " str r0, [sp]\n" " add r0, r6, #0\n" " mov r1, sl\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl sub_8002F44\n" " mov r0, #0xff\n" @@ -6250,7 +6250,7 @@ void debug_sub_8011EA0() " ldrb r0, [r4]\n" " str r0, [sp]\n" " add r0, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl sub_8002F44\n" " b ._848\n" @@ -6282,7 +6282,7 @@ void debug_sub_8011EA0() " str r0, [sp]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" " mov r4, #0x0\n" @@ -6364,7 +6364,7 @@ void debug_sub_8011EA0() " str r0, [sp]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" " b ._848\n" @@ -6406,7 +6406,7 @@ void debug_sub_8011EA0() " str r0, [sp]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" "._848:\n" @@ -6476,7 +6476,7 @@ void debug_sub_8012294() " str r0, [sp]\n" " mov r0, sl\n" " mov r1, r9\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " mov r0, sl\n" " bl sub_8002F44\n" " ldrb r4, [r7]\n" @@ -6513,7 +6513,7 @@ void debug_sub_8012294() " str r0, [sp]\n" " mov r0, sl\n" " mov r1, r9\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " mov r0, sl\n" " bl sub_8002F44\n" " mov r0, #0xff\n" @@ -6553,7 +6553,7 @@ void debug_sub_8012294() " str r0, [sp]\n" " mov r0, sl\n" " mov r1, r9\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " mov r0, sl\n" " bl sub_8002F44\n" "._853:\n" @@ -6614,7 +6614,7 @@ void debug_sub_80123D8() " mov r1, r8\n" " mov r2, sl\n" " add r3, r7, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " lsl r5, r5, #0x1\n" @@ -6646,7 +6646,7 @@ void debug_sub_80123D8() " mov r1, r8\n" " mov r2, sl\n" " add r3, r7, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " mov r0, #0x0\n" @@ -6661,7 +6661,7 @@ void debug_sub_80123D8() " add r0, r4, #0\n" " mov r1, r8\n" " mov r3, sl\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " ldr r1, ._858 + 12\n" @@ -6691,7 +6691,7 @@ void debug_sub_80123D8() " mov r1, r8\n" " mov r2, r9\n" " mov r3, sl\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " b ._857\n" @@ -6718,7 +6718,7 @@ void debug_sub_80123D8() " str r0, [sp]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" " ldrh r2, [r4, #0x6]\n" @@ -6727,7 +6727,7 @@ void debug_sub_80123D8() " str r0, [sp]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" "._857:\n" @@ -6781,7 +6781,7 @@ void debug_sub_8012540() " str r0, [sp]\n" " add r0, r4, #0\n" " add r1, r5, #0\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " add sp, sp, #0x4\n" @@ -6998,7 +6998,7 @@ void debug_sub_8012688() " strh r5, [r0]\n" " ldr r4, ._873 + 16\n" " add r0, r4, #0\n" - " bl SetUpWindowConfig\n" + " bl Text_LoadWindowTemplate\n" " bl ResetPaletteFade\n" " ldr r0, ._873 + 20\n" " strh r5, [r0]\n" @@ -7033,7 +7033,7 @@ void debug_sub_8012688() " strh r0, [r6]\n" " ldr r0, ._873 + 64\n" " add r1, r4, #0\n" - " bl InitWindowFromConfig\n" + " bl Text_InitWindowWithTemplate\n" " ldrh r2, [r6]\n" " lsl r0, r2, #0x3\n" " ldr r1, ._873 + 68\n" @@ -7133,7 +7133,7 @@ void debug_sub_8012688() " .word gWindowConfig_81E6C58\n" " .word gUnknown_030042A4\n" " .word gUnknown_030042A0\n" - " .word gUnknown_030042C0\n" + " .word gBattle_BG1_X\n" " .word gUnknown_030041B4\n" " .word gUnknown_03004288\n" " .word gUnknown_03004280\n" @@ -7211,7 +7211,7 @@ void debug_sub_80128B4() " add r1, r4, #0\n" " mov r2, #0x90\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" " ldr r6, ._878 + 8\n" @@ -7237,7 +7237,7 @@ void debug_sub_80128B4() " add r1, r4, #0\n" " mov r2, #0x90\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" " add sp, sp, #0x4\n" @@ -7282,7 +7282,7 @@ void debug_sub_8012938() " add r1, r4, #0\n" " mov r2, #0xa2\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl sub_8002F44\n" " ldr r1, ._880 + 8\n" @@ -7306,7 +7306,7 @@ void debug_sub_8012938() " add r1, r4, #0\n" " mov r2, #0xa2\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl sub_8002F44\n" " ldr r2, ._880 + 20\n" @@ -7622,7 +7622,7 @@ void debug_sub_8012B70() " str r0, [sp]\n" " add r0, r5, #0\n" " mov r3, #0x1a\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl sub_8002F44\n" " strh r6, [r4, #0xe]\n" @@ -7668,7 +7668,7 @@ void debug_sub_8012C08() " add r1, r5, #0\n" " mov r2, #0x90\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r7, #0\n" " bl sub_8002F44\n" " mov r0, #0x0\n" @@ -7680,7 +7680,7 @@ void debug_sub_8012C08() " add r1, r5, #0\n" " mov r2, #0xa2\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r7, #0\n" " bl sub_8002F44\n" " mov r0, #0x0\n" @@ -7705,7 +7705,7 @@ void debug_sub_8012C08() " add r0, r7, #0\n" " mov r2, #0x90\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " b ._904\n" "._906:\n" " .align 2, 0\n" @@ -7728,7 +7728,7 @@ void debug_sub_8012C08() " add r0, r7, #0\n" " mov r2, #0x90\n" " mov r3, #0x2\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" "._904:\n" " add r5, r4, #0\n" " ldr r4, ._907 + 8\n" @@ -7741,7 +7741,7 @@ void debug_sub_8012C08() " str r0, [sp]\n" " add r0, r4, #0\n" " mov r3, #0x1a\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " ldr r1, ._907\n" @@ -7816,7 +7816,7 @@ void debug_sub_8012D10() " str r0, [sp]\n" " add r0, r4, #0\n" " mov r3, #0x13\n" - " bl InitWindow\n" + " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl sub_8002F44\n" " ldr r1, ._920 + 8\n" diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index e54e0d17f..8ece4ebec 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -35,17 +35,17 @@ void InitKagayaDebugMenu_B() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._1\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xd\n" @@ -76,7 +76,7 @@ void debug_sub_80B061C() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 343d56bc2..1d36d528f 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -178,17 +178,17 @@ void debug_sub_815F1B8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0xe\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._1\n" " mov r0, #0x10\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xe\n" @@ -243,7 +243,7 @@ void debug_sub_815F214() " beq ._5 @cond_branch\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" "._5:\n" " ldrh r1, [r4, #0x2e]\n" " mov r0, #0x80\n" @@ -251,7 +251,7 @@ void debug_sub_815F214() " cmp r0, #0\n" " beq ._6 @cond_branch\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" "._6:\n" " ldrh r1, [r4, #0x2e]\n" " mov r0, #0x1\n" @@ -259,13 +259,13 @@ void debug_sub_815F214() " cmp r0, #0\n" " beq ._7 @cond_branch\n" " ldr r4, ._9 + 4\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, #0x4\n" " add r0, r0, r4\n" " ldr r4, [r0]\n" - " bl HandleDestroyMenuCursors\n" + " bl Menu_DestroyCursor\n" " bl _call_via_r4\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -331,7 +331,7 @@ u8 debug_sub_815F2B4() " push {lr}\n" " add sp, sp, #0xfffffffc\n" " bl CloseMenu\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r1, ._16\n" " ldr r0, ._16 + 4\n" " str r0, [r1, #0x8]\n" @@ -632,7 +632,7 @@ void debug_sub_815F4D8() " mov r1, #0x1\n" " mov r2, #0xa\n" " mov r3, #0xa\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r6, ._43\n" " ldr r7, ._43 + 4\n" " ldrb r1, [r7]\n" @@ -643,7 +643,7 @@ void debug_sub_815F4D8() " add r0, r6, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r2, ._43 + 8\n" " ldrb r1, [r7]\n" " lsl r0, r1, #0x2\n" @@ -669,11 +669,11 @@ void debug_sub_815F4D8() " add r0, r6, #0\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._43 + 16\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, sp\n" " ldrb r1, [r0]\n" " add r0, r6, #0\n" @@ -683,11 +683,11 @@ void debug_sub_815F4D8() " add r0, r6, #0\n" " mov r1, #0x2\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._43 + 20\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldrb r1, [r4]\n" " add r0, r6, #0\n" " mov r2, #0x0\n" @@ -696,11 +696,11 @@ void debug_sub_815F4D8() " add r0, r6, #0\n" " mov r1, #0x3\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._43 + 24\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldrb r1, [r5]\n" " add r0, r6, #0\n" " mov r2, #0x0\n" @@ -709,7 +709,7 @@ void debug_sub_815F4D8() " add r0, r6, #0\n" " mov r1, #0x3\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._42:\n" " add sp, sp, #0x4\n" " pop {r4, r5, r6, r7}\n" @@ -811,12 +811,12 @@ u8 debug_sub_815F62C() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xb\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " bl debug_sub_815F4D8\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -866,7 +866,7 @@ void debug_sub_815F668() " add r0, r5, #0\n" " mov r1, #0x2\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " add r1, r6, #0\n" " bl __umodsi3\n" @@ -878,7 +878,7 @@ void debug_sub_815F668() " add r0, r5, #0\n" " mov r1, #0x7\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5, r6}\n" " pop {r0}\n" " bx r0\n" @@ -902,7 +902,7 @@ void debug_sub_815F6E4() " mov r1, #0x3\n" " mov r2, #0xb\n" " mov r3, #0x4\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._63\n" " ldr r0, ._63 + 4\n" " ldrb r0, [r0]\n" @@ -919,7 +919,7 @@ void debug_sub_815F6E4() " add r0, r4, #0\n" " mov r1, #0x2\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" @@ -942,7 +942,7 @@ void debug_sub_815F72C() " mov r1, #0x1\n" " mov r2, #0xb\n" " mov r3, #0xa\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._66\n" " ldr r5, ._66 + 4\n" " ldrb r1, [r5]\n" @@ -953,7 +953,7 @@ void debug_sub_815F72C() " add r0, r4, #0\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r2, ._66 + 8\n" " ldrb r1, [r5]\n" " lsl r0, r1, #0x2\n" @@ -991,7 +991,7 @@ void debug_sub_815F788() " mov r1, #0x5\n" " mov r2, #0xb\n" " mov r3, #0x6\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r0, ._68\n" " ldr r1, ._68 + 4\n" " ldrb r1, [r1]\n" @@ -999,7 +999,7 @@ void debug_sub_815F788() " lsl r1, r1, #0x18\n" " lsr r1, r1, #0x18\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r0}\n" " bx r0\n" "._69:\n" @@ -1024,7 +1024,7 @@ void debug_sub_815F7B4() " mov r1, #0x1\n" " mov r2, #0xb\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " b ._71\n" "._73:\n" " .align 2, 0\n" @@ -1038,7 +1038,7 @@ void debug_sub_815F7B4() " add r0, r0, r1\n" " mov r1, #0xb\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._71:\n" " pop {r0}\n" " bx r0\n" @@ -1354,12 +1354,12 @@ void debug_sub_815F930() " mov r1, #0x5\n" " mov r2, #0xb\n" " mov r3, #0x6\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " mov r0, #0xb\n" " mov r1, #0x1\n" " mov r2, #0xb\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r1, ._133\n" " ldr r0, ._133 + 4\n" " str r0, [r1]\n" @@ -1413,7 +1413,7 @@ void debug_sub_815FA38() " beq ._141 @cond_branch\n" " mov r0, #0x2\n" "._138:\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" "._161:\n" " mov r0, #0x0\n" " b ._142\n" @@ -1481,7 +1481,7 @@ void debug_sub_815FA38() " ldrb r0, [r0]\n" " cmp r0, #0\n" " beq ._161 @cond_branch\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " ldr r1, ._159 + 12\n" " strb r0, [r1]\n" " ldr r0, ._159 + 16\n" @@ -1535,12 +1535,12 @@ u8 debug_sub_815FB1C() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xc\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " bl debug_sub_815F72C\n" " mov r0, #0x0\n" " str r0, [sp]\n" @@ -1591,7 +1591,7 @@ void debug_sub_815FB78() " beq ._168 @cond_branch\n" " mov r0, #0x1\n" "._165:\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " mov r0, #0x0\n" " b ._177\n" "._168:\n" @@ -1600,7 +1600,7 @@ void debug_sub_815FB78() " cmp r0, #0\n" " beq ._170 @cond_branch\n" " bl CloseMenu\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r0, #0\n" @@ -1646,7 +1646,7 @@ u8 debug_sub_815FBE8() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " ldr r4, ._178 + 8\n" " add r0, r4, #0\n" " bl debug_sub_814A73C\n" @@ -1654,15 +1654,15 @@ u8 debug_sub_815FBE8() " mov r1, #0x0\n" " mov r2, #0xb\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r4, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._178 + 12\n" " mov r1, #0x2\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xa\n" @@ -1739,7 +1739,7 @@ u8 debug_sub_815FC94() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl CloseMenu\n" " mov r0, #0x1\n" " pop {r1}\n" @@ -1945,7 +1945,7 @@ void debug_sub_815FDE4() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl CloseMenu\n" " mov r0, #0x1\n" " b ._204\n" @@ -1971,16 +1971,16 @@ u8 debug_sub_815FE1C() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x10\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._210\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r6, ._210 + 4\n" " mov r0, #0x0\n" " bl debug_sub_815FCB4\n" @@ -1994,7 +1994,7 @@ u8 debug_sub_815FE1C() " add r0, r6, #0\n" " mov r1, #0x5\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x1\n" " bl debug_sub_815FCB4\n" " add r1, r0, #0\n" @@ -2007,7 +2007,7 @@ u8 debug_sub_815FE1C() " add r0, r6, #0\n" " mov r1, #0x5\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x2\n" " bl debug_sub_815FCB4\n" " add r1, r0, #0\n" @@ -2020,7 +2020,7 @@ u8 debug_sub_815FE1C() " add r0, r6, #0\n" " mov r1, #0x5\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " bl debug_sub_8092344\n" " add r1, r0, #0\n" @@ -2033,7 +2033,7 @@ u8 debug_sub_815FE1C() " add r0, r6, #0\n" " mov r1, #0xb\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x1\n" " bl debug_sub_8092344\n" " add r1, r0, #0\n" @@ -2046,7 +2046,7 @@ u8 debug_sub_815FE1C() " add r0, r6, #0\n" " mov r1, #0xb\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x2\n" " bl debug_sub_8092344\n" " add r1, r0, #0\n" @@ -2059,7 +2059,7 @@ u8 debug_sub_815FE1C() " add r0, r6, #0\n" " mov r1, #0xb\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._210 + 8\n" " ldr r1, ._210 + 12\n" " add r0, r0, r1\n" @@ -2120,7 +2120,7 @@ u8 debug_sub_815FE1C() " lsr r2, r2, #0x18\n" " add r0, r6, #0\n" " add r1, r4, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" @@ -2139,7 +2139,7 @@ u8 debug_sub_815FE1C() " add r0, r4, #0\n" " mov r1, #0x2\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._210 + 16\n" " ldr r0, ._210 + 20\n" " str r0, [r1]\n" @@ -2171,16 +2171,16 @@ void debug_sub_815FFDC() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0xe\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._214\n" " mov r1, #0x1\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r5, #0x0\n" " ldr r0, ._214 + 4\n" " mov r8, r0\n" @@ -2278,7 +2278,7 @@ void debug_sub_816009C() " lsl r2, r2, #0x18\n" " lsr r2, r2, #0x18\n" " mov r1, #0x10\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r0}\n" " bx r0\n" "._220:\n" @@ -2330,7 +2330,7 @@ void debug_sub_81600D0() " lsl r2, r2, #0x18\n" " lsr r2, r2, #0x18\n" " mov r1, #0x17\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._226\n" "._228:\n" " .align 2, 0\n" @@ -2343,7 +2343,7 @@ void debug_sub_81600D0() " lsr r2, r2, #0x18\n" " mov r0, sp\n" " mov r1, #0x17\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._226:\n" " add sp, sp, #0x4\n" " pop {r4, r5}\n" @@ -2378,7 +2378,7 @@ void debug_sub_816013C() " add r0, r5, #0\n" " mov r1, #0x1a\n" " add r2, r4, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5}\n" " pop {r0}\n" " bx r0\n" @@ -2407,7 +2407,7 @@ void debug_sub_816017C() " lsr r3, r3, #0x18\n" " mov r0, #0x10\n" " mov r2, #0x1c\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r1, ._232\n" " lsl r0, r4, #0x2\n" " add r0, r0, r1\n" @@ -2634,7 +2634,7 @@ void debug_sub_8160308() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " mov r2, #0x0\n" "._252:\n" " add r1, r2, #1\n" @@ -2748,7 +2748,7 @@ void debug_sub_81603B8() " lsl r3, r3, #0x18\n" " lsr r3, r3, #0x18\n" " add r0, r2, #0\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " cmp r6, #0\n" " bne ._256 @cond_branch\n" " cmp r4, #0\n" @@ -3698,7 +3698,7 @@ void debug_sub_8160A80() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._440\n" "._423:\n" " .align 2, 0\n" @@ -3715,7 +3715,7 @@ void debug_sub_8160A80() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._440\n" "._427:\n" " .align 2, 0\n" @@ -3731,7 +3731,7 @@ void debug_sub_8160A80() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._440\n" "._431:\n" " .align 2, 0\n" @@ -3747,7 +3747,7 @@ void debug_sub_8160A80() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._440\n" "._435:\n" " .align 2, 0\n" @@ -3763,7 +3763,7 @@ void debug_sub_8160A80() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._440\n" "._439:\n" " .align 2, 0\n" @@ -3779,7 +3779,7 @@ void debug_sub_8160A80() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._440:\n" " pop {r4}\n" " pop {r0}\n" @@ -3871,11 +3871,11 @@ void debug_sub_8160BB0() " mov r1, #0x1\n" " mov r2, #0x8\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5}\n" " pop {r0}\n" " bx r0\n" @@ -3898,32 +3898,32 @@ void debug_sub_8160BE4() " mov r1, #0x0\n" " mov r2, #0xc\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " bl debug_sub_8160BB0\n" " ldr r0, ._459\n" " mov r1, #0x2\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._459 + 4\n" " mov r1, #0x2\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._459 + 8\n" " mov r1, #0x2\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._459 + 12\n" " mov r1, #0x2\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._459 + 16\n" " mov r1, #0x2\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._459 + 20\n" " mov r1, #0x2\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r4, #0x0\n" "._458:\n" " add r0, r4, #0\n" @@ -4057,7 +4057,7 @@ void debug_sub_8160CF4() " beq ._475 @cond_branch\n" " mov r0, #0x1\n" "._472:\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " mov r0, #0x0\n" " b ._484\n" "._475:\n" @@ -4065,7 +4065,7 @@ void debug_sub_8160CF4() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._477 @cond_branch\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov r1, #0x1\n" @@ -4076,13 +4076,13 @@ void debug_sub_8160CF4() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._479 @cond_branch\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov r1, #0x1\n" "._478:\n" " bl debug_sub_8160B50\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " bl debug_sub_8160A80\n" @@ -4112,7 +4112,7 @@ void debug_sub_8160CF4() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl CloseMenu\n" " mov r0, #0x1\n" "._484:\n" @@ -4131,7 +4131,7 @@ u8 debug_sub_8160D98() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl debug_sub_8160BE4\n" " ldr r1, ._485\n" " ldr r0, ._485 + 4\n" @@ -4157,43 +4157,43 @@ void debug_sub_8160DC0() " mov r1, #0x0\n" " mov r2, #0x16\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._487\n" " mov r1, #0xb\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 4\n" " mov r1, #0x2\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 8\n" " mov r1, #0x2\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 12\n" " mov r1, #0x2\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 16\n" " mov r1, #0x2\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 20\n" " mov r1, #0x2\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 24\n" " mov r1, #0x2\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 28\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._487 + 32\n" " mov r1, #0x2\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r0}\n" " bx r0\n" "._488:\n" @@ -4222,7 +4222,7 @@ void debug_sub_8160E50() " mov r1, #0x1\n" " mov r2, #0xa\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r5, ._489\n" " add r0, r6, #0\n" " mov r1, #0x2\n" @@ -4231,12 +4231,12 @@ void debug_sub_8160E50() " add r0, r5, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xc\n" " mov r1, #0x1\n" " mov r2, #0x15\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r6, #0\n" " mov r1, #0xb\n" " bl GetMonData\n" @@ -4246,7 +4246,7 @@ void debug_sub_8160E50() " add r0, r0, r1\n" " mov r1, #0xc\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x1a\n" " bl GetMonData\n" @@ -4262,11 +4262,11 @@ void debug_sub_8160E50() " mov r1, #0x3\n" " mov r2, #0x11\n" " mov r3, #0x4\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x1b\n" " bl GetMonData\n" @@ -4284,11 +4284,11 @@ void debug_sub_8160E50() " mov r1, #0x5\n" " mov r2, #0x11\n" " mov r3, #0x6\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x1c\n" " bl GetMonData\n" @@ -4306,11 +4306,11 @@ void debug_sub_8160E50() " mov r1, #0x7\n" " mov r2, #0x11\n" " mov r3, #0x8\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x1d\n" " bl GetMonData\n" @@ -4328,11 +4328,11 @@ void debug_sub_8160E50() " mov r1, #0x9\n" " mov r2, #0x11\n" " mov r3, #0xa\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x1e\n" " bl GetMonData\n" @@ -4350,11 +4350,11 @@ void debug_sub_8160E50() " mov r1, #0xb\n" " mov r2, #0x11\n" " mov r3, #0xc\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x1f\n" " bl GetMonData\n" @@ -4372,11 +4372,11 @@ void debug_sub_8160E50() " mov r1, #0xd\n" " mov r2, #0x11\n" " mov r3, #0xe\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r5, #0\n" " add r1, r4, #0\n" " mov r2, #0x0\n" @@ -4386,11 +4386,11 @@ void debug_sub_8160E50() " mov r1, #0xf\n" " mov r2, #0x11\n" " mov r3, #0x10\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x20\n" " bl GetMonData\n" @@ -4403,11 +4403,11 @@ void debug_sub_8160E50() " mov r1, #0x11\n" " mov r2, #0x11\n" " mov r3, #0x12\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0xd\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5, r6}\n" " pop {r0}\n" " bx r0\n" @@ -4565,7 +4565,7 @@ void debug_sub_81610BC() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl CloseMenu\n" " mov r0, #0x1\n" "._518:\n" @@ -4584,7 +4584,7 @@ void DebugMenu_EffortValues() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " ldr r1, ._519\n" " mov r0, #0x0\n" " strb r0, [r1]\n" @@ -4689,52 +4689,52 @@ void debug_sub_81611D8() " mov r1, #0x0\n" " mov r2, #0xf\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._531\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._531 + 4\n" " mov r1, #0x2\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._531 + 8\n" " mov r1, #0x2\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._531 + 12\n" " mov r1, #0x2\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._531 + 16\n" " mov r1, #0x2\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._531 + 20\n" " mov r1, #0xd\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r4, ._531 + 24\n" " add r0, r4, #0\n" " mov r1, #0xc\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0xc\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0xc\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0xc\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0xc\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xe\n" @@ -4778,7 +4778,7 @@ void debug_sub_8161290() " add r0, r4, #0\n" " mov r1, #0x8\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" @@ -4812,7 +4812,7 @@ void debug_sub_81612B8() " add r0, r5, #0\n" " mov r1, #0x8\n" " add r2, r4, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5}\n" " pop {r0}\n" " bx r0\n" @@ -4858,7 +4858,7 @@ void debug_sub_81612EC() " beq ._542 @cond_branch\n" " mov r0, #0x1\n" "._539:\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" "._565:\n" " mov r0, #0x0\n" " b ._543\n" @@ -4867,7 +4867,7 @@ void debug_sub_81612EC() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._544 @cond_branch\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " asr r4, r0, #0x18\n" " cmp r4, #0\n" @@ -4910,7 +4910,7 @@ void debug_sub_81612EC() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._552 @cond_branch\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " asr r4, r0, #0x18\n" " cmp r4, #0\n" @@ -4978,7 +4978,7 @@ void debug_sub_81612EC() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl CloseMenu\n" " mov r0, #0x1\n" "._543:\n" @@ -5007,7 +5007,7 @@ void DebugMenu_RandomNumberTest() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " bl debug_sub_81611D8\n" " ldr r1, ._566 + 16\n" " ldr r0, ._566 + 20\n" diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 2e739ef4d..f929170fd 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -11,17 +11,17 @@ void InitNoharaDebugMenu() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x13\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._1\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x12\n" @@ -53,7 +53,7 @@ void debug_sub_808F414() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -97,17 +97,17 @@ void NoharaDebugMenu_TV() " ldr r1, ._8\n" " mov r0, #0x0\n" " strb r0, [r1]\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xa\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._8 + 4\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x9\n" @@ -140,7 +140,7 @@ void debug_sub_808F4AC() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -356,7 +356,7 @@ void debug_sub_808F5D8() " add r0, r0, r8\n" " ldrb r2, [r0]\n" " add r0, r6, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" @@ -400,7 +400,7 @@ void debug_sub_808F648() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " ldr r0, ._35 + 4\n" " ldrb r1, [r0]\n" " mov r2, #0x1\n" @@ -478,7 +478,7 @@ void debug_sub_808F6BC() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" @@ -505,7 +505,7 @@ void debug_sub_808F6BC() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._47\n" "._49:\n" " .align 2, 0\n" @@ -521,7 +521,7 @@ void debug_sub_808F6BC() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x6\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._47:\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" @@ -550,7 +550,7 @@ void debug_sub_808F6BC() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._52\n" "._54:\n" " .align 2, 0\n" @@ -566,7 +566,7 @@ void debug_sub_808F6BC() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0xc\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._52:\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" @@ -607,7 +607,7 @@ void debug_sub_808F7B4() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" @@ -634,7 +634,7 @@ void debug_sub_808F7B4() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._58\n" "._60:\n" " .align 2, 0\n" @@ -650,7 +650,7 @@ void debug_sub_808F7B4() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x6\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._58:\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" @@ -679,7 +679,7 @@ void debug_sub_808F7B4() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._63\n" "._65:\n" " .align 2, 0\n" @@ -695,7 +695,7 @@ void debug_sub_808F7B4() " lsr r1, r1, #0x18\n" " add r0, r5, #0\n" " mov r2, #0xc\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._63:\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" @@ -745,17 +745,17 @@ void debug_sub_808F8CC() " mov r1, #0x6\n" " mov r2, #0x1a\n" " mov r3, #0x8\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r0, ._69 + 8\n" " ldr r0, [r0]\n" " mov r1, #0xe\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x16\n" " mov r1, #0x1\n" " mov r2, #0x18\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._69 + 12\n" " add r0, r4, #0\n" " mov r1, #0x0\n" @@ -765,7 +765,7 @@ void debug_sub_808F8CC() " add r0, r4, #0\n" " mov r1, #0x17\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._69 + 16\n" " ldr r0, ._69 + 20\n" " str r0, [r1]\n" @@ -878,7 +878,7 @@ void debug_sub_808F93C() " mov r1, #0x6\n" " mov r2, #0x1a\n" " mov r3, #0x8\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r1, ._83 + 12\n" " ldr r0, ._83 + 8\n" " ldrb r0, [r0]\n" @@ -887,12 +887,12 @@ void debug_sub_808F93C() " ldr r0, [r0]\n" " mov r1, #0xe\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x16\n" " mov r1, #0x1\n" " mov r2, #0x18\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._83 + 16\n" " ldr r0, ._83 + 4\n" " ldrb r1, [r0]\n" @@ -903,7 +903,7 @@ void debug_sub_808F93C() " add r0, r4, #0\n" " mov r1, #0x17\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._79:\n" " ldr r4, ._83\n" " ldrh r1, [r4, #0x2e]\n" @@ -1483,17 +1483,17 @@ void debug_sub_808FECC() " mov r1, #0x6\n" " mov r2, #0x17\n" " mov r3, #0x8\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r0, ._178 + 8\n" " ldr r0, [r0]\n" " mov r1, #0xe\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x16\n" " mov r1, #0x1\n" " mov r2, #0x18\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._178 + 12\n" " add r0, r4, #0\n" " mov r1, #0x0\n" @@ -1503,7 +1503,7 @@ void debug_sub_808FECC() " add r0, r4, #0\n" " mov r1, #0x17\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._178 + 16\n" " ldr r0, ._178 + 20\n" " str r0, [r1]\n" @@ -1616,7 +1616,7 @@ void debug_sub_808FF3C() " mov r1, #0x6\n" " mov r2, #0x17\n" " mov r3, #0x8\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r1, ._192 + 12\n" " ldr r0, ._192 + 8\n" " ldrb r0, [r0]\n" @@ -1625,12 +1625,12 @@ void debug_sub_808FF3C() " ldr r0, [r0]\n" " mov r1, #0xe\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x16\n" " mov r1, #0x1\n" " mov r2, #0x18\n" " mov r3, #0x2\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._192 + 16\n" " ldr r0, ._192 + 4\n" " ldrb r1, [r0]\n" @@ -1641,7 +1641,7 @@ void debug_sub_808FF3C() " add r0, r4, #0\n" " mov r1, #0x17\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._188:\n" " ldr r4, ._192\n" " ldrh r1, [r4, #0x2e]\n" @@ -1816,17 +1816,17 @@ void NoharaDebugMenu_Fan() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xb\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._204\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xa\n" @@ -1858,7 +1858,7 @@ void debug_sub_80901A4() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -1926,7 +1926,7 @@ void debug_sub_80901F8() " ldr r0, [r0]\n" " mov r1, #0xe\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._211 + 8\n" " ldr r0, ._211 + 12\n" " str r0, [r1]\n" @@ -1962,7 +1962,7 @@ void debug_sub_8090238() " ldr r0, [r0]\n" " mov r1, #0xe\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._213 + 8\n" " ldr r0, ._213 + 12\n" " str r0, [r1]\n" @@ -2026,7 +2026,7 @@ void debug_sub_809029C() " add r0, r4, #0\n" " mov r1, #0x10\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._219 + 12\n" " ldr r0, ._219 + 16\n" " str r0, [r1]\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 28f3a26d1..6f9f0d02c 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -28,7 +28,7 @@ void debug_sub_8076AC8() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuZeroFillWindowRect\n" + " bl Menu_EraseWindowRect\n" " lsl r3, r4, #0x1\n" " add r3, r3, #0x1\n" " lsl r3, r3, #0x18\n" @@ -36,7 +36,7 @@ void debug_sub_8076AC8() " mov r0, #0x10\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" " ldr r3, ._3 + 8\n" @@ -101,15 +101,15 @@ void debug_sub_8076B68() " ldr r0, ._8\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._8 + 4\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._8 + 8\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x4\n" " mov r1, #0xb\n" " bl debug_sub_8077CF4\n" @@ -143,11 +143,11 @@ void debug_sub_8076BB4() " lsl r1, r1, #0x3\n" " ldr r0, ._13\n" " add r5, r1, r0\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r1, r0, #0x18\n" " lsl r4, r4, #0x18\n" @@ -500,11 +500,11 @@ void DebugMenu_8076D6C() " beq ._53 @cond_branch\n" " b ._64\n" "._49:\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._56\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._55\n" "._57:\n" " .align 2, 0\n" @@ -516,11 +516,11 @@ void DebugMenu_8076D6C() " and r1, r1, r2\n" " cmp r1, #0\n" " beq ._58 @cond_branch\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._60 + 4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x49\n" " bl PlaySE\n" " bl RtcReset\n" @@ -615,11 +615,11 @@ void DebugMenu_8076E30() " beq ._75 @cond_branch\n" " b ._86\n" "._71:\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._78\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._77\n" "._79:\n" " .align 2, 0\n" @@ -631,12 +631,12 @@ void DebugMenu_8076E30() " and r1, r1, r2\n" " cmp r1, #0\n" " beq ._80 @cond_branch\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " bl sub_813B79C\n" " ldr r0, ._82 + 4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x49\n" " bl PlaySE\n" "._77:\n" @@ -710,13 +710,13 @@ void DebugMenu_8076EF4() " mov r1, #0x0\n" " mov r2, #0xb\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r4, ._93\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x8\n" " add r3, r4, #0\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r5, #0x0\n" " add r4, r4, #0x4\n" "._92:\n" @@ -769,11 +769,11 @@ void DebugMenu_8076F60() " push {r4, r5, lr}\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r2, r0, #0x18\n" " lsl r4, r4, #0x18\n" @@ -785,7 +785,7 @@ void DebugMenu_8076F60() " add r0, r0, #0x1\n" " cmp r4, r0\n" " bne ._96 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl debug_sub_8076B68\n" " add r0, r5, #0\n" " bl DestroyTask\n" @@ -971,7 +971,7 @@ void DebugMenu_807709C() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._120 + 4\n" " strb r0, [r1]\n" "._115:\n" @@ -983,7 +983,7 @@ void DebugMenu_807709C() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._120 + 4\n" " strb r0, [r1]\n" "._116:\n" @@ -1097,7 +1097,7 @@ void DebugMenu_807719C() " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._133\n" " ldr r0, ._133 + 4\n" " ldr r0, [r0]\n" @@ -1154,11 +1154,11 @@ void DebugMenu_80771EC() " mov r1, #0xc\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._135\n" " mov r1, #0x14\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" @@ -1281,7 +1281,7 @@ void DebugMenu_8077238() " mov r1, #0x10\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._139 + 12\n" " mov r1, #0x1d\n" " ldr r2, [sp, #0x14]\n" @@ -1289,7 +1289,7 @@ void DebugMenu_8077238() " lsl r1, r1, #0x18\n" " lsr r1, r1, #0x18\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0x18\n" " pop {r3, r4, r5}\n" " mov r8, r3\n" @@ -1489,7 +1489,7 @@ void DebugMenu_8077434() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r0, #0x4\n" @@ -1909,7 +1909,7 @@ void DebugMenu_EditPKMN() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl debug_sub_815FFDC\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -1940,7 +1940,7 @@ void DebugMenu_80776B4() " mov r0, #0x19\n" " add r1, r5, #0\n" " mov r2, #0x1d\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r0, ._183 + 4\n" " ldrb r0, [r0]\n" " ASR r0, r4\n" @@ -1950,7 +1950,7 @@ void DebugMenu_80776B4() " add r0, r0, sp\n" " mov r1, #0x19\n" " add r2, r5, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0x8\n" " pop {r4, r5}\n" " pop {r0}\n" @@ -1978,11 +1978,11 @@ void DebugMenu_8077704() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x8\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " mov r0, sp\n" " mov r1, #0x15\n" " mov r2, #0x0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r2, ._185 + 4\n" " mov r0, #0x80\n" " lsl r0, r0, #0x13\n" @@ -2027,7 +2027,7 @@ void DebugMenu_8077760() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._190 + 4\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" @@ -2052,7 +2052,7 @@ void DebugMenu_8077760() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._195\n" " ldrb r0, [r1]\n" " cmp r0, #0x3\n" @@ -2076,7 +2076,7 @@ void DebugMenu_8077760() " mov r0, #0x5\n" " bl PlaySE\n" " ldr r4, ._201\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov r1, #0x1\n" @@ -2084,7 +2084,7 @@ void DebugMenu_8077760() " ldrb r0, [r4]\n" " eor r1, r1, r0\n" " strb r1, [r4]\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " bl DebugMenu_80776B4\n" @@ -2133,7 +2133,7 @@ void DebugMenu_SwitchBG() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl DebugMenu_8077704\n" " mov r0, #0x0\n" " str r0, [sp]\n" @@ -2177,13 +2177,13 @@ void DebugMenu_807786C() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x3\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " lsl r0, r4, #0x1\n" " add r0, r0, r4\n" " add r0, r0, sp\n" " mov r1, #0x1a\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0x8\n" " pop {r4}\n" " pop {r0}\n" @@ -2250,7 +2250,7 @@ void DebugMenu_ControlEncounter() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._213\n" " ldrb r0, [r0]\n" " bl DebugMenu_807786C\n" @@ -2345,7 +2345,7 @@ void DebugMenu_8077974() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r1, ._226\n" " mov r0, #0x4\n" " ldsb r0, [r1, r0]\n" @@ -2494,7 +2494,7 @@ void DebugMenu_RematchTrainers() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._240\n" " mov r1, #0xd\n" " mov r2, #0x5\n" @@ -2602,7 +2602,7 @@ void DebugMenu_8077B00() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl unref_sub_80C853C\n" " cmp r0, #0\n" " beq ._250 @cond_branch\n" @@ -2660,7 +2660,7 @@ void DebugMenu_Safari() " bl GetSafariZoneFlag\n" " cmp r0, #0\n" " beq ._258 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._260\n" " mov r1, #0xe\n" " mov r2, #0x5\n" @@ -2803,7 +2803,7 @@ void DebugMenu_8077C14() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._264\n" " mov r1, #0xa\n" " mov r2, #0x9\n" @@ -2945,7 +2945,7 @@ void debug_sub_8077CF4() " add r0, r6, #0\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5, r6}\n" " pop {r0}\n" " bx r0\n" @@ -2971,7 +2971,7 @@ void DebugMenu_8077D24() " lsr r4, r4, #0x18\n" " lsl r5, r5, #0x18\n" " lsr r5, r5, #0x18\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " lsl r3, r5, #0x1\n" " add r3, r3, #0x1\n" " lsl r3, r3, #0x18\n" @@ -2979,12 +2979,12 @@ void DebugMenu_8077D24() " mov r0, #0x0\n" " mov r1, #0x0\n" " add r2, r4, #0\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " add r2, r5, #0\n" " add r3, r6, #0\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " sub r4, r4, #0x1\n" @@ -3009,7 +3009,7 @@ void DebugMenu_8077D78() asm( " push {r4, r5, lr}\n" " add r5, r0, #0\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r4, r0, #0x18\n" " mov r0, #0x2\n" @@ -3019,7 +3019,7 @@ void DebugMenu_8077D78() " add r0, r0, #0x1\n" " cmp r4, r0\n" " beq ._276 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._278\n" " lsl r1, r4, #0x3\n" " add r1, r1, r5\n" @@ -3216,7 +3216,7 @@ void DebugMenu_8077EAC() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r1, ._303 + 4\n" " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" @@ -3252,7 +3252,7 @@ void DebugMenu_8077EE0() " mov r1, #0x11\n" " mov r2, #0x16\n" " mov r3, #0x12\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r5, ._305\n" " add r0, r5, #0\n" " add r1, r4, #0\n" @@ -3262,12 +3262,12 @@ void DebugMenu_8077EE0() " add r0, r5, #0\n" " mov r1, #0x4\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " bl ItemId_GetItem\n" " mov r1, #0x8\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r5, #0\n" " add r1, r6, #0\n" " mov r2, #0x1\n" @@ -3276,7 +3276,7 @@ void DebugMenu_8077EE0() " add r0, r5, #0\n" " mov r1, #0x12\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5, r6}\n" " pop {r0}\n" " bx r0\n" @@ -3300,11 +3300,11 @@ void DebugMenu_8077F40() " lsl r4, r4, #0x3\n" " ldr r0, ._307\n" " add r4, r4, r0\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._307 + 4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldrh r0, [r4, #0xa]\n" " ldrh r1, [r4, #0xc]\n" " bl DebugMenu_8077EE0\n" @@ -3341,11 +3341,11 @@ void DebugMenu_8077F7C() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._309 @cond_branch\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._311 + 8\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldrh r0, [r4, #0xa]\n" " ldrh r1, [r4, #0xc]\n" " bl DebugMenu_8077EE0\n" @@ -3466,7 +3466,7 @@ void DebugMenu_807806C() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r4, #0\n" " bl DestroyTask\n" @@ -3493,16 +3493,16 @@ void DebugMenu_807808C() " lsl r1, r4, #0x5\n" " ldr r0, ._331\n" " add r5, r1, r0\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x13\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._331 + 4\n" " mov r1, #0x2\n" " mov r2, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, sp\n" " add r1, r4, #0\n" " mov r2, #0x1\n" @@ -3511,7 +3511,7 @@ void DebugMenu_807808C() " mov r0, sp\n" " mov r1, #0xb\n" " mov r2, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldrh r1, [r5, #0x8]\n" " mov r0, sp\n" " mov r2, #0x1\n" @@ -3520,7 +3520,7 @@ void DebugMenu_807808C() " mov r0, sp\n" " mov r1, #0xb\n" " mov r2, #0x4\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r4, r5, #0\n" " add r4, r4, #0xb\n" " add r0, r4, #0\n" @@ -3532,7 +3532,7 @@ void DebugMenu_807808C() " add r0, r4, #0\n" " mov r1, #0xb\n" " mov r2, #0x6\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._330\n" "._332:\n" " .align 2, 0\n" @@ -3543,7 +3543,7 @@ void DebugMenu_807808C() " ldr r0, ._335\n" " mov r1, #0xb\n" " mov r2, #0x6\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._330:\n" " add r4, r5, #0\n" " add r4, r4, #0x16\n" @@ -3556,7 +3556,7 @@ void DebugMenu_807808C() " add r0, r4, #0\n" " mov r1, #0xb\n" " mov r2, #0x8\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._334\n" "._336:\n" " .align 2, 0\n" @@ -3566,7 +3566,7 @@ void DebugMenu_807808C() " ldr r0, ._337\n" " mov r1, #0xb\n" " mov r2, #0x8\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._334:\n" " ldrb r1, [r5, #0xa]\n" " mov r0, sp\n" @@ -3576,7 +3576,7 @@ void DebugMenu_807808C() " mov r0, sp\n" " mov r1, #0xb\n" " mov r2, #0xa\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [r5]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -3585,7 +3585,7 @@ void DebugMenu_807808C() " mov r0, sp\n" " mov r1, #0xb\n" " mov r2, #0xc\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0xc\n" " pop {r4, r5}\n" " pop {r0}\n" @@ -3611,7 +3611,7 @@ void DebugMenu_807817C() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._339 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " add r0, r4, #0\n" " bl DestroyTask\n" " bl ScriptContext2_Disable\n" @@ -3685,7 +3685,7 @@ void DebugMenu_80781A8() " mov r1, #0x11\n" " mov r2, #0x16\n" " mov r3, #0x12\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r4, ._351\n" " mov r2, #0x8\n" " ldsh r1, [r5, r2]\n" @@ -3696,7 +3696,7 @@ void DebugMenu_80781A8() " add r0, r4, #0\n" " mov r1, #0x4\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._350:\n" " pop {r4, r5}\n" " pop {r0}\n" @@ -3904,7 +3904,7 @@ void DebugMenu_8078310() " cmp r0, #0\n" " beq ._373 @cond_branch\n" "._370:\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " add r0, r5, #0\n" " bl DestroyTask\n" " bl ScriptContext2_Disable\n" @@ -4020,7 +4020,7 @@ void DebugMenu_ToggleClearFlag() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._390\n" " bl FlagGet\n" " mov r1, #0x1\n" @@ -4099,7 +4099,7 @@ void DebugMenu_OpenWeatherEvents() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._404\n" " bl FlagGet\n" " mov r1, #0x0\n" @@ -4170,7 +4170,7 @@ void DebugMenu_OpenMysteryEvent() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl IsMysteryGiftEnabled\n" " mov r1, #0x0\n" " cmp r0, #0\n" @@ -4271,11 +4271,11 @@ void DebugMenu_8078550() " mov r3, #0x2\n" " bl ConvertIntToDecimalStringN\n" "._423:\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._426 + 4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5, r6, r7}\n" " pop {r0}\n" " bx r0\n" @@ -4379,7 +4379,7 @@ void DebugMenu_807860C() " bl DebugMenu_8078550\n" " b ._447\n" "._434:\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r5, #0\n" " bl DestroyTask\n" @@ -4589,7 +4589,7 @@ void DebugMenu_OpenLegendsRecord() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._464\n" " mov r1, #0xc\n" " mov r2, #0x3\n" @@ -4710,13 +4710,13 @@ void DebugMenu_8078880() " beq ._474 @cond_branch\n" " b ._480\n" "._470:\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " b ._476\n" "._468:\n" " ldr r0, ._478\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._476:\n" " ldrh r0, [r4, #0x8]\n" " add r0, r0, #0x1\n" @@ -4733,7 +4733,7 @@ void DebugMenu_8078880() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._480 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r5, #0\n" " bl DestroyTask\n" @@ -4788,11 +4788,11 @@ void DebugMenu_OpenBerryInfo() " mov r1, #0x0\n" " mov r2, #0x13\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r4, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._487\n" " ldr r0, ._487 + 4\n" " str r0, [r1]\n" @@ -4815,11 +4815,11 @@ void DebugMenu_8078950() { asm( " push {lr}\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._489\n" " mov r1, #0x4\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r0}\n" " bx r0\n" "._490:\n" @@ -4858,7 +4858,7 @@ void DebugMenu_8078968() " ldr r0, ._495\n" " mov r1, #0x4\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r0}\n" " bx r0\n" "._496:\n" @@ -4885,7 +4885,7 @@ void DebugMenu_80789A4() " add r0, r4, #0\n" " mov r1, #0x9\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" @@ -5112,7 +5112,7 @@ void DebugMenu_8078B38() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r4, #0\n" " bl DestroyTask\n" @@ -5250,7 +5250,7 @@ void DebugMenu_8078BD4() " beq ._539 @cond_branch\n" " mov r0, #0x49\n" " bl PlaySE\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " add r0, r5, #0\n" " bl DestroyTask\n" " bl ScriptContext2_Disable\n" @@ -5265,7 +5265,7 @@ void DebugMenu_8078BD4() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._543 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " add r0, r5, #0\n" " bl DestroyTask\n" " bl ScriptContext2_Disable\n" @@ -5314,11 +5314,11 @@ void DebugMenu_8078C80() { asm( " push {lr}\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._548\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._548 + 4\n" " ldr r0, ._548 + 8\n" " str r0, [r1]\n" @@ -5465,11 +5465,11 @@ void DebugMenu_8078D7C() { asm( " push {lr}\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._565\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._565 + 4\n" " ldr r0, ._565 + 8\n" " str r0, [r1]\n" @@ -5518,7 +5518,7 @@ void DebugMenu_MeTooBackupMan() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " ldr r0, ._571\n" " mov r1, #0xc\n" " mov r2, #0x2\n" @@ -5655,7 +5655,7 @@ void DebugMenu_8078E80() " mov r1, #0xf\n" " mov r2, #0x16\n" " mov r3, #0x10\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r1, ._581\n" " mov r2, #0x0\n" " ldsh r0, [r4, r2]\n" @@ -5692,7 +5692,7 @@ void DebugMenu_8078EB0() " add r0, r4, #0\n" " mov r1, #0x2\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xf0\n" " mov r1, #0x5\n" " mov r2, #0x11\n" @@ -5706,7 +5706,7 @@ void DebugMenu_8078EB0() " add r0, r4, #0\n" " mov r1, #0x6\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xf0\n" " mov r1, #0x8\n" " mov r2, #0x11\n" @@ -5720,7 +5720,7 @@ void DebugMenu_8078EB0() " add r0, r4, #0\n" " mov r1, #0x9\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5}\n" " pop {r0}\n" " bx r0\n" @@ -5753,7 +5753,7 @@ void DebugMenu_8078F1C() " strh r0, [r5, #0x4]\n" " ldrb r0, [r1, #0x11]\n" " strh r0, [r5, #0x6]\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " add r0, r5, #0\n" " bl DebugMenu_8078EB0\n" " add r0, r5, #0\n" @@ -5888,7 +5888,7 @@ void DebugMenu_8079020() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r4, #0\n" " bl DestroyTask\n" @@ -5952,7 +5952,7 @@ void DebugMenu_8079058() "._608:\n" " ldr r0, ._615\n" " str r1, [r0]\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " b ._614\n" "._616:\n" " .align 2, 0\n" @@ -5962,7 +5962,7 @@ void DebugMenu_8079058() " ldr r0, ._618\n" " mov r1, #0x4\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x14\n" " mov r1, #0x8\n" " mov r2, #0x1\n" @@ -5998,7 +5998,7 @@ void DebugMenu_8079058() " mov r0, #0x0\n" "._622:\n" " str r0, [r1]\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r5, #0\n" " bl DestroyTask\n" @@ -6065,7 +6065,7 @@ void DebugMenu_8079110() " beq ._635 @cond_branch\n" " b ._642\n" "._631:\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " b ._637\n" "._629:\n" " ldr r0, ._639\n" @@ -6092,7 +6092,7 @@ void DebugMenu_8079110() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._642 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r5, #0\n" " bl DestroyTask\n" diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index c20d9b87c..ce1cc47ee 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -13,12 +13,12 @@ void TayaDebugMenu_Trend() " mov r5, r8\n" " push {r5, r6, r7}\n" " add sp, sp, #0xffffffd8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1e\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r5, ._3\n" " mov r7, #0x0\n" " mov r0, #0x1\n" @@ -89,7 +89,7 @@ void TayaDebugMenu_Trend() " lsr r2, r2, #0x18\n" " mov r0, sp\n" " mov r1, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r5, r5, #0x8\n" " add r0, r7, #1\n" " lsl r0, r0, #0x10\n" @@ -136,7 +136,7 @@ void debug_sub_8090808() "._7:\n" " .word gMain\n" "._5:\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl CloseMenu\n" " mov r0, #0x1\n" "._6:\n" @@ -179,7 +179,7 @@ void TayaDebugMenu_TrendR() " lsr r0, r0, #0x10\n" " cmp r0, #0x4\n" " bls ._10 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl CloseMenu\n" " mov r0, #0x1\n" " pop {r4, r5, r6, r7}\n" @@ -219,7 +219,7 @@ void debug_sub_809089C() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -303,12 +303,12 @@ void TayaDebugMenu_SimpleText() " mov r1, #0x0\n" " mov r2, #0xc\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._32\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xb\n" @@ -340,7 +340,7 @@ void debug_sub_8090984() { asm( " push {r4, r5, r6, r7, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r2, r0, #0x18\n" " asr r1, r2, #0x18\n" " mov r0, #0x2\n" @@ -432,12 +432,12 @@ void TayaDebugMenu_OldMan() " mov r1, #0x0\n" " mov r2, #0xa\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._48\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x8\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " bl GetCurrentMauvilleOldMan\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -471,7 +471,7 @@ void TayaDebugMenu_LanettesPC() { asm( " push {lr}\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ShowPokemonStorageSystem\n" " mov r0, #0x1\n" " pop {r1}\n" @@ -658,7 +658,7 @@ void debug_sub_8090C44() " add r0, r4, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0x0\n" " mov r2, #0x5\n" @@ -670,7 +670,7 @@ void debug_sub_8090C44() " add r0, r4, #0\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4, r5}\n" " pop {r0}\n" " bx r0\n" @@ -874,7 +874,7 @@ void TayaDebugMenu_PKMNLottery() " mov r1, #0x0\n" " mov r2, #0x6\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " bl RetrieveLotteryNumber\n" " ldr r2, ._83\n" " ldr r0, ._83 + 4\n" @@ -979,7 +979,7 @@ void TayaDebugMenu_PokenavD() " mov r5, r8\n" " push {r5, r6, r7}\n" " add sp, sp, #0xffffffe4\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " mov r0, #0x0\n" " mov sl, r0\n" " mov r6, #0x1\n" @@ -999,7 +999,7 @@ void TayaDebugMenu_PokenavD() " add r0, r4, #0\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " mov r8, r0\n" " str r5, [sp, #0x14]\n" @@ -1299,7 +1299,7 @@ void TayaDebugMenu_8091190() asm( " push {r4, r5, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r3, r0, #0x18\n" " mov r0, #0x2\n" @@ -1370,12 +1370,12 @@ void TayaDebugMenu_8091190() " ldrsb r1, [r5, r1]\n" " cmp r0, r1\n" " beq ._106 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xb\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r4, ._107 + 8\n" " mov r0, #0x0\n" " ldrsb r0, [r5, r0]\n" @@ -1385,7 +1385,7 @@ void TayaDebugMenu_8091190() " ldr r3, [r0]\n" " mov r0, #0x1\n" " mov r1, #0x1\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " ldrsb r0, [r5, r0]\n" " lsl r0, r0, #0x3\n" @@ -1427,18 +1427,18 @@ void InitTayaDebugWindow() " ldr r1, ._109\n" " mov r0, #0x0\n" " strb r0, [r1]\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xb\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._109 + 4\n" " ldr r3, [r0]\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xa\n" @@ -1944,29 +1944,29 @@ void debug_sub_80915BC() " bls ._171 @cond_branch\n" " ldr r4, ._172\n" " add r0, r4, #0\n" - " bl SetUpWindowConfig\n" + " bl Text_LoadWindowTemplate\n" " add r0, r4, #0\n" " bl InitMenuWindow\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x3\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._172 + 4\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " mov r1, #0x4\n" " mov r2, #0x1d\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0x12\n" " mov r2, #0x1d\n" " mov r3, #0x15\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r1, #0x80\n" " lsl r1, r1, #0x13\n" " mov r2, #0x8a\n" @@ -2096,7 +2096,7 @@ void debug_sub_80916AC() " add r0, r7, #0\n" " add r0, r0, #0x12\n" " mov r1, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [sp]\n" " lsl r0, r1, #0x18\n" " lsr r6, r0, #0x18\n" diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index eb2fd8a7e..cc2bdd80e 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -36,17 +36,17 @@ void debug_sub_808B874() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xd\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._1\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " ldr r0, ._1 + 4\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -90,7 +90,7 @@ void debug_sub_808B8C8() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._7 + 4\n" " strb r0, [r1]\n" "._3:\n" @@ -102,7 +102,7 @@ void debug_sub_808B8C8() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._7 + 4\n" " strb r0, [r1]\n" "._4:\n" @@ -154,21 +154,21 @@ void TomomichiDebugMenu_ContestGraphics() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x14\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._11\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._11 + 4\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x4\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x13\n" @@ -218,21 +218,21 @@ void TomomichiDebugMenu_ArtMusGraphics() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x14\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._13\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._13 + 4\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x4\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x13\n" @@ -282,21 +282,21 @@ void TomomichiDebugMenu_PreviewData() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x14\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._15\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._15 + 4\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x4\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x13\n" @@ -346,21 +346,21 @@ void TomomichiDebugMenu_TrickHouse() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._17\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._17 + 4\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " ldr r0, ._17 + 8\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -396,17 +396,17 @@ void TomomichiDebugMenu_ControlEvents() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._19\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " ldr r0, ._19 + 4\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -441,17 +441,17 @@ void TomomichiDebugMenu_ControlFlags() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._21\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " ldr r0, ._21 + 4\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -486,17 +486,17 @@ void TomomichiDebugMenu_ControlWorks() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._23\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " ldr r0, ._23 + 4\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -530,10 +530,10 @@ void debug_sub_808BC48() { asm( " push {r4, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " asr r0, r0, #0x18\n" " cmp r0, #0x1\n" @@ -598,10 +598,10 @@ void debug_sub_808BCBC() { asm( " push {r4, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " asr r0, r0, #0x18\n" " cmp r0, #0x1\n" @@ -666,10 +666,10 @@ void debug_sub_808BD30() { asm( " push {r4, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " asr r0, r0, #0x18\n" " cmp r0, #0x1\n" @@ -744,7 +744,7 @@ void debug_sub_808BDA4() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._71 + 4\n" " strb r0, [r1]\n" "._67:\n" @@ -756,7 +756,7 @@ void debug_sub_808BDA4() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._71 + 4\n" " strb r0, [r1]\n" "._68:\n" @@ -817,7 +817,7 @@ void debug_sub_808BE2C() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._79 + 4\n" " strb r0, [r1]\n" "._75:\n" @@ -829,7 +829,7 @@ void debug_sub_808BE2C() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._79 + 4\n" " strb r0, [r1]\n" "._76:\n" @@ -890,7 +890,7 @@ void debug_sub_808BEB4() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._87 + 4\n" " strb r0, [r1]\n" "._83:\n" @@ -902,7 +902,7 @@ void debug_sub_808BEB4() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._87 + 4\n" " strb r0, [r1]\n" "._84:\n" @@ -963,7 +963,7 @@ void debug_sub_808BF3C() " bl PlaySE\n" " mov r0, #0x1\n" " neg r0, r0\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._95 + 4\n" " strb r0, [r1]\n" "._91:\n" @@ -975,7 +975,7 @@ void debug_sub_808BF3C() " mov r0, #0x5\n" " bl PlaySE\n" " mov r0, #0x1\n" - " bl MoveMenuCursor\n" + " bl Menu_MoveCursor\n" " ldr r1, ._95 + 4\n" " strb r0, [r1]\n" "._92:\n" @@ -1027,17 +1027,17 @@ void debug_sub_808BFC4() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._99\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -1070,17 +1070,17 @@ void debug_sub_808C014() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._101\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -1112,7 +1112,7 @@ void debug_sub_808C064() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -1155,7 +1155,7 @@ void debug_sub_808C0A8() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -1610,17 +1610,17 @@ void debug_sub_808C31C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._157\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -1652,7 +1652,7 @@ void debug_sub_808C36C() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -1696,17 +1696,17 @@ void debug_sub_808C3B0() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._165\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -1743,17 +1743,17 @@ void debug_sub_808C408() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._167\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -1790,17 +1790,17 @@ void debug_sub_808C460() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._169\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -1837,17 +1837,17 @@ void debug_sub_808C4B8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._171\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -1884,17 +1884,17 @@ void debug_sub_808C510() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._173\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -1931,17 +1931,17 @@ void debug_sub_808C568() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._175\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -1978,17 +1978,17 @@ void debug_sub_808C5C0() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._177\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2025,17 +2025,17 @@ void debug_sub_808C618() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._179\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2072,17 +2072,17 @@ void debug_sub_808C670() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._181\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2118,11 +2118,11 @@ void debug_sub_808C6C8() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._186\n" " ldrb r0, [r5]\n" @@ -2270,17 +2270,17 @@ void debug_sub_808C7C8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._197\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -2312,7 +2312,7 @@ void debug_sub_808C818() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -2356,17 +2356,17 @@ void debug_sub_808C85C() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._205\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -2403,17 +2403,17 @@ void debug_sub_808C8B4() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._207\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2450,17 +2450,17 @@ void debug_sub_808C90C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._209\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2497,17 +2497,17 @@ void debug_sub_808C964() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._211\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2544,17 +2544,17 @@ void debug_sub_808C9BC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._213\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2591,17 +2591,17 @@ void debug_sub_808CA14() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._215\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2638,17 +2638,17 @@ void debug_sub_808CA6C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._217\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2685,17 +2685,17 @@ void debug_sub_808CAC4() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._219\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -2732,17 +2732,17 @@ void debug_sub_808CB1C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._221\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -2778,11 +2778,11 @@ void debug_sub_808CB74() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._226\n" " ldrb r0, [r5]\n" @@ -2930,17 +2930,17 @@ void debug_sub_808CC74() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._237\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -2972,7 +2972,7 @@ void debug_sub_808CCC4() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -3016,17 +3016,17 @@ void debug_sub_808CD08() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._245\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x8\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -3063,17 +3063,17 @@ void debug_sub_808CD60() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._247\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x4\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3110,17 +3110,17 @@ void debug_sub_808CDB8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x3\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._249\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3156,11 +3156,11 @@ void debug_sub_808CE10() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._254\n" " ldrb r0, [r5]\n" @@ -3308,17 +3308,17 @@ void debug_sub_808CF10() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._265\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -3350,7 +3350,7 @@ void debug_sub_808CF60() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -3394,17 +3394,17 @@ void debug_sub_808CFA4() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._273\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x8\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -3441,17 +3441,17 @@ void debug_sub_808CFFC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._275\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3488,17 +3488,17 @@ void debug_sub_808D054() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._277\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3535,17 +3535,17 @@ void debug_sub_808D0AC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._279\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x4\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3582,17 +3582,17 @@ void debug_sub_808D104() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._281\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3629,17 +3629,17 @@ void debug_sub_808D15C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._283\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3676,17 +3676,17 @@ void debug_sub_808D1B4() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._285\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3723,17 +3723,17 @@ void debug_sub_808D20C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._287\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3770,17 +3770,17 @@ void debug_sub_808D264() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._289\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -3816,11 +3816,11 @@ void debug_sub_808D2BC() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._294\n" " ldrb r0, [r5]\n" @@ -3968,17 +3968,17 @@ void debug_sub_808D3BC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._305\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -4010,7 +4010,7 @@ void debug_sub_808D40C() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -4054,17 +4054,17 @@ void debug_sub_808D450() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._313\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -4101,17 +4101,17 @@ void debug_sub_808D4A8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._315\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -4147,11 +4147,11 @@ void debug_sub_808D500() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._320\n" " ldrb r0, [r5]\n" @@ -4299,17 +4299,17 @@ void debug_sub_808D600() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._331\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -4341,7 +4341,7 @@ void debug_sub_808D650() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -4385,17 +4385,17 @@ void debug_sub_808D694() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._339\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -4432,17 +4432,17 @@ void debug_sub_808D6EC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._341\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -4478,11 +4478,11 @@ void debug_sub_808D744() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._346\n" " ldrb r0, [r5]\n" @@ -4630,17 +4630,17 @@ void debug_sub_808D844() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1c\n" " mov r3, #0x3\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._357\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1b\n" @@ -4672,7 +4672,7 @@ void debug_sub_808D894() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r3, r0, #0x18\n" " mov r0, #0x2\n" @@ -4715,17 +4715,17 @@ void debug_sub_808D8D8() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._365\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -4761,11 +4761,11 @@ void debug_sub_808D930() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._370\n" " ldrb r0, [r5]\n" @@ -4913,17 +4913,17 @@ void debug_sub_808DA30() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x3\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._381\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -4955,11 +4955,11 @@ void debug_sub_808DA80() { asm( " push {r4, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " bl debug_sub_808DAD4\n" " bl debug_sub_808DABC\n" " lsl r4, r4, #0x18\n" @@ -5054,17 +5054,17 @@ void debug_sub_808DB0C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._395\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x17\n" @@ -5096,7 +5096,7 @@ void debug_sub_808DB5C() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -5140,17 +5140,17 @@ void debug_sub_808DBA0() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x11\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._403\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x8\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -5187,17 +5187,17 @@ void debug_sub_808DBF8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._405\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5234,17 +5234,17 @@ void debug_sub_808DC50() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._407\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5281,17 +5281,17 @@ void debug_sub_808DCA8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._409\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5328,17 +5328,17 @@ void debug_sub_808DD00() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._411\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5375,17 +5375,17 @@ void debug_sub_808DD58() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._413\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5422,17 +5422,17 @@ void debug_sub_808DDB0() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._415\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5469,17 +5469,17 @@ void debug_sub_808DE08() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._417\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5516,17 +5516,17 @@ void debug_sub_808DE60() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._419\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5562,11 +5562,11 @@ void debug_sub_808DEB8() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._424\n" " ldrb r0, [r5]\n" @@ -5723,17 +5723,17 @@ void debug_sub_808DFC0() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._437\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x17\n" @@ -5765,7 +5765,7 @@ void debug_sub_808E010() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -5809,17 +5809,17 @@ void debug_sub_808E054() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._445\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -5856,17 +5856,17 @@ void debug_sub_808E0AC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._447\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5903,17 +5903,17 @@ void debug_sub_808E104() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._449\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5950,17 +5950,17 @@ void debug_sub_808E15C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._451\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -5997,17 +5997,17 @@ void debug_sub_808E1B4() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._453\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6044,17 +6044,17 @@ void debug_sub_808E20C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._455\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6090,11 +6090,11 @@ void debug_sub_808E264() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._460\n" " ldrb r0, [r5]\n" @@ -6251,17 +6251,17 @@ void debug_sub_808E36C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._473\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x17\n" @@ -6293,7 +6293,7 @@ void debug_sub_808E3BC() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -6337,17 +6337,17 @@ void debug_sub_808E400() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._481\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -6384,17 +6384,17 @@ void debug_sub_808E458() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._483\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6431,17 +6431,17 @@ void debug_sub_808E4B0() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._485\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x6\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6478,17 +6478,17 @@ void debug_sub_808E508() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._487\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6525,17 +6525,17 @@ void debug_sub_808E560() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._489\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6571,11 +6571,11 @@ void debug_sub_808E5B8() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._494\n" " ldrb r0, [r5]\n" @@ -6732,17 +6732,17 @@ void debug_sub_808E6C0() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._507\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x17\n" @@ -6774,7 +6774,7 @@ void debug_sub_808E710() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -6818,17 +6818,17 @@ void debug_sub_808E754() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._515\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -6865,17 +6865,17 @@ void debug_sub_808E7AC() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._517\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -6911,11 +6911,11 @@ void debug_sub_808E804() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._522\n" " ldrb r0, [r5]\n" @@ -7072,17 +7072,17 @@ void debug_sub_808E90C() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._535\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x2\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x17\n" @@ -7114,7 +7114,7 @@ void debug_sub_808E95C() { asm( " push {lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -7158,17 +7158,17 @@ void debug_sub_808E9A0() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._543\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r4, #0x0\n" " str r4, [sp]\n" " mov r0, #0x1c\n" @@ -7205,17 +7205,17 @@ void debug_sub_808E9F8() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r3, ._545\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x1c\n" @@ -7251,11 +7251,11 @@ void debug_sub_808EA50() { asm( " push {r4, r5, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " add r1, r0, #0\n" " ldr r5, ._550\n" " ldrb r0, [r5]\n" @@ -7412,21 +7412,21 @@ void debug_sub_808EB58() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xc\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._563\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._563 + 4\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x8\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xb\n" @@ -7460,21 +7460,21 @@ void debug_sub_808EBB4() asm( " push {lr}\n" " add sp, sp, #0xfffffff8\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xd\n" " mov r3, #0xd\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._565\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._565 + 4\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x5\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xc\n" @@ -7507,11 +7507,11 @@ void debug_sub_808EC10() { asm( " push {r4, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r2, r0, #0x18\n" " lsl r4, r4, #0x18\n" @@ -7553,11 +7553,11 @@ void debug_sub_808EC5C() { asm( " push {r4, lr}\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl GetMenuCursorPos\n" + " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r1, r0, #0x18\n" " lsl r4, r4, #0x18\n" @@ -8127,7 +8127,7 @@ void debug_sub_808EF8C() " strb r1, [r0, #0x8]\n" " mov r1, #0xc\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._653:\n" " mov r3, #0x0\n" " ldr r7, ._666\n" @@ -8189,7 +8189,7 @@ void debug_sub_808EF8C() " add r0, r7, #0\n" " mov r1, #0x8\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._665\n" "._667:\n" " .align 2, 0\n" @@ -8201,7 +8201,7 @@ void debug_sub_808EF8C() " ldr r0, ._672\n" " mov r1, #0xc\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._665:\n" " ldr r5, ._672\n" " mov r0, #0xff\n" @@ -8229,7 +8229,7 @@ void debug_sub_808EF8C() " add r0, r5, #0\n" " mov r1, #0xc\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " cmp r6, #0x1\n" " beq ._668 @cond_branch\n" " cmp r6, #0x1\n" @@ -8278,7 +8278,7 @@ void debug_sub_808EF8C() " add r0, r5, #0\n" " mov r1, #0xc\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._679\n" "._681:\n" " .align 2, 0\n" @@ -8308,7 +8308,7 @@ void debug_sub_808EF8C() " add r0, r5, #0\n" " mov r1, #0xc\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._679:\n" " pop {r3}\n" " mov r8, r3\n" @@ -8537,7 +8537,7 @@ void debug_sub_808F2E0() " add r0, r1, #0\n" " add r1, r4, #0\n" " add r2, r3, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" @@ -8615,7 +8615,7 @@ void debug_sub_808F31C() " add r0, r5, #0\n" " mov r1, r8\n" " mov r2, r9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " pop {r3, r4}\n" " mov r8, r3\n" " mov r9, r4\n" diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index dcb3bd90b..731e58986 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -126,7 +126,7 @@ void debug_80C35DC() " ldr r0, ._2 + 12\n" " bl LoadSpritePalette\n" " ldr r0, ._2 + 16\n" - " bl SetUpWindowConfig\n" + " bl Text_LoadWindowTemplate\n" " ldr r0, ._2 + 20\n" " bl InitMenuWindow\n" " add sp, sp, #0x8\n" @@ -298,7 +298,7 @@ void debug_80C376C() " mov r0, sp\n" " add r1, r7, #0\n" " add r2, r6, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0x4\n" " pop {r4, r5, r6, r7}\n" " pop {r0}\n" @@ -365,7 +365,7 @@ void debug_80C3800() " mov r0, sp\n" " add r1, r6, #0\n" " add r2, r5, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0xc\n" " pop {r4, r5, r6, r7}\n" " pop {r0}\n" @@ -491,13 +491,13 @@ void debug_80C38E4() " add r1, r4, #0\n" " add r2, r7, #0\n" " add r3, r5, #0\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " cmp r6, #0\n" " beq ._36 @cond_branch\n" " mov r0, sp\n" " add r1, r7, #0\n" " mov r2, r8\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._36:\n" " add sp, sp, #0x4\n" " pop {r3}\n" @@ -699,82 +699,82 @@ void debug_80C3A50() " mov r1, #0x0\n" " mov r2, #0x17\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x5\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r5, ._56 + 8\n" " add r0, r5, #0\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r4, ._56 + 12\n" " add r0, r4, #0\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x18\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r5, #0\n" " mov r1, #0x19\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0x19\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " mov r1, #0xa\n" " mov r2, #0xb\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._56 + 16\n" " mov r1, #0x1\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._56 + 20\n" " mov r1, #0x1\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._56 + 24\n" " mov r1, #0x1\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._56 + 28\n" " mov r1, #0x1\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xc\n" " mov r1, #0xa\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._56 + 32\n" " mov r1, #0xd\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._56 + 36\n" " mov r1, #0xd\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xc\n" " mov r1, #0x10\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._56 + 40\n" " mov r1, #0xd\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._56 + 44\n" " mov r1, #0x18\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, r9\n" " mov r1, #0x12\n" " mov r2, #0x11\n" @@ -1788,15 +1788,15 @@ void debug_80C42B8() " mov r1, #0x10\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, sp\n" " mov r1, #0x1\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0x14\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " bl debug_80C4694\n" " bl debug_80C4704\n" " ldr r0, ._150 + 8\n" @@ -2298,11 +2298,11 @@ void debug_80C4694() " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, sp\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r4, #0x0\n" " add r5, sp, #0x10\n" "._212:\n" @@ -2324,7 +2324,7 @@ void debug_80C4694() " lsr r2, r2, #0x18\n" " add r0, r5, #0\n" " mov r1, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" @@ -2357,11 +2357,11 @@ void debug_80C4704() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, sp\n" " mov r1, #0x11\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r4, #0x0\n" " add r5, sp, #0x10\n" "._215:\n" @@ -2383,7 +2383,7 @@ void debug_80C4704() " lsr r2, r2, #0x18\n" " add r0, r5, #0\n" " mov r1, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" @@ -2476,24 +2476,24 @@ void debug_80C47BC() " mov r1, #0x10\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, sp\n" " mov r1, #0x1\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0x14\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r6, #0\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r4, #0x0\n" " ldr r6, ._224 + 16\n" "._223:\n" @@ -2506,7 +2506,7 @@ void debug_80C47BC() " add r2, r2, r1\n" " lsr r2, r2, #0x18\n" " mov r1, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" @@ -2516,11 +2516,11 @@ void debug_80C47BC() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r5, #0\n" " mov r1, #0x11\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._224 + 20\n" " ldrb r0, [r0, #0x4]\n" " bl debug_80C4C44\n" @@ -3142,7 +3142,7 @@ void debug_80C4C44() " lsr r2, r2, #0x18\n" " mov r0, sp\n" " mov r1, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._280:\n" " mov r7, r8\n" " lsl r0, r7, #0x18\n" @@ -3188,24 +3188,24 @@ void debug_80C4D14() " mov r1, #0x10\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, sp\n" " mov r1, #0x1\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r5, #0\n" " mov r1, #0x14\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r6, #0\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._291 + 12\n" " ldrb r0, [r0, #0x6]\n" " bl debug_80C4F00\n" @@ -3213,7 +3213,7 @@ void debug_80C4D14() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r1, ._291 + 16\n" " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" @@ -3431,7 +3431,7 @@ void debug_80C4F00() " mov r1, #0x3\n" " mov r2, #0xd\n" " mov r3, #0xe\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " mov r4, #0x0\n" " ldr r6, ._318\n" "._317:\n" @@ -3447,7 +3447,7 @@ void debug_80C4F00() " add r2, r2, r1\n" " lsr r2, r2, #0x18\n" " mov r1, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._316:\n" " add r0, r4, #1\n" " lsl r0, r0, #0x18\n" @@ -3505,46 +3505,46 @@ void debug_80C4F48() " mov r1, #0x10\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, sp\n" " mov r1, #0x1\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r6, #0\n" " mov r1, #0x14\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, r5, #0\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x1\n" " mov r1, #0x3\n" " mov r2, #0xd\n" " mov r3, #0xe\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " add r0, r5, #0\n" " mov r1, #0x2\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, r9\n" " mov r1, #0x2\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, r8\n" " mov r1, #0x2\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xf\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0xf\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r1, ._320 + 20\n" " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" @@ -4039,11 +4039,11 @@ void InitCreatePokemon() " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x3\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " add r0, sp, #0x4\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r1, #0x80\n" " lsl r1, r1, #0x13\n" " mov r2, #0x8a\n" @@ -4244,13 +4244,13 @@ void debug_80C53F0() " mov r1, #0x8\n" " mov r2, #0x1a\n" " mov r3, #0xb\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " cmp r4, #0\n" " beq ._379 @cond_branch\n" " ldr r0, ._381 + 4\n" " mov r1, #0x4\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._380\n" "._382:\n" " .align 2, 0\n" @@ -4261,7 +4261,7 @@ void debug_80C53F0() " ldr r0, ._384\n" " mov r1, #0x4\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._380:\n" " ldr r0, ._384 + 4\n" " lsl r1, r5, #0x2\n" @@ -6028,7 +6028,7 @@ void debug_80C627C() " lsr r2, r2, #0x18\n" " add r0, r5, #0\n" " mov r1, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, [r4]\n" " ldr r2, ._593 + 4\n" " add r1, r0, r2\n" @@ -6046,7 +6046,7 @@ void debug_80C627C() " lsr r2, r2, #0x18\n" " mov r0, sp\n" " mov r1, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._595\n" "._594:\n" " .align 2, 0\n" @@ -6070,7 +6070,7 @@ void debug_80C627C() " lsr r2, r2, #0x18\n" " add r0, r5, #0\n" " mov r1, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, [r4]\n" " ldr r2, ._596 + 4\n" " add r1, r0, r2\n" @@ -6085,7 +6085,7 @@ void debug_80C627C() " lsr r2, r2, #0x18\n" " mov r0, sp\n" " mov r1, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._595:\n" " add sp, sp, #0x8\n" " pop {r4, r5, r6}\n" @@ -6112,7 +6112,7 @@ void debug_80C6384() " mov r1, #0x4\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r5, #0x0\n" " ldr r3, ._600\n" " ldr r1, ._600 + 4\n" @@ -6166,7 +6166,7 @@ void debug_80C6384() " add r2, r2, r1\n" " lsr r2, r2, #0x18\n" " mov r1, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" @@ -6209,7 +6209,7 @@ void debug_80C643C() " mov r1, #0x5\n" " mov r2, #0x1c\n" " mov r3, #0x12\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " mov r5, #0x0\n" " ldr r6, ._605\n" " ldr r1, ._605 + 4\n" @@ -6301,7 +6301,7 @@ void debug_80C643C() " add r2, r2, r1\n" " lsr r2, r2, #0x18\n" " mov r1, #0x2\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" @@ -6888,7 +6888,7 @@ void debug_80C68CC() " add r0, r0, sp\n" " add r1, r6, #0\n" " add r2, r5, #0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0x8\n" " pop {r4, r5, r6, r7}\n" " pop {r0}\n" @@ -7092,39 +7092,39 @@ void debug_80C6B00() " mov r1, #0x0\n" " mov r2, #0xf\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x9\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0xa\n" " mov r2, #0x9\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x10\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._666 + 4\n" " mov r1, #0x11\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._666 + 8\n" " mov r1, #0x1b\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._666 + 12\n" " mov r1, #0x11\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xa\n" " mov r1, #0x8\n" " mov r2, #0x1d\n" " mov r3, #0xc\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r2, #0x0\n" " ldr r4, ._666 + 16\n" " ldr r0, ._666 + 20\n" @@ -7159,12 +7159,12 @@ void debug_80C6B00() " add r0, r5, #0\n" " mov r1, #0x14\n" " mov r2, #0xa\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xa\n" " mov r1, #0xd\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r1, sp\n" " mov r0, #0x23\n" " strb r0, [r1]\n" @@ -7232,7 +7232,7 @@ void debug_80C6B00() " add r0, r5, #0\n" " mov r1, #0xf\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._666 + 52\n" " ldr r2, ._666 + 56\n" " add r0, r2, #0\n" @@ -7595,7 +7595,7 @@ void debug_80C6EE8() " ldr r0, ._670 + 16\n" " mov r1, #0xd\n" " mov r2, #0xa\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0xe\n" " mov r2, #0xa\n" @@ -8665,39 +8665,39 @@ void debug_80C777C() " mov r1, #0x0\n" " mov r2, #0xe\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x9\n" " mov r3, #0x9\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x0\n" " mov r1, #0xa\n" " mov r2, #0x9\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0xe\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._784 + 4\n" " mov r1, #0xf\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._784 + 8\n" " mov r1, #0x19\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._784 + 12\n" " mov r1, #0xf\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xa\n" " mov r1, #0x8\n" " mov r2, #0x1d\n" " mov r3, #0xc\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r2, #0x0\n" " ldr r4, ._784 + 16\n" " ldr r0, ._784 + 20\n" @@ -8732,12 +8732,12 @@ void debug_80C777C() " add r0, r5, #0\n" " mov r1, #0x14\n" " mov r2, #0xa\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0xa\n" " mov r1, #0xd\n" " mov r2, #0x1d\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r1, sp\n" " mov r0, #0x23\n" " strb r0, [r1]\n" @@ -8805,7 +8805,7 @@ void debug_80C777C() " add r0, r5, #0\n" " mov r1, #0xf\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._784 + 52\n" " ldr r2, ._784 + 56\n" " add r0, r2, #0\n" @@ -9052,7 +9052,7 @@ void debug_80C7A54() " ldr r0, ._788 + 16\n" " mov r1, #0xd\n" " mov r2, #0xa\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " mov r1, #0xe\n" " mov r2, #0xa\n" diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 311679cb7..3aefa80de 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -4217,7 +4217,7 @@ void debug_sub_811B2E8() " mov r0, sp\n" " mov r1, #0x6\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add sp, sp, #0x4\n" " pop {r0}\n" " bx r0\n" @@ -4238,75 +4238,75 @@ void debug_sub_811B310() " ldr r0, ._21\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 4\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 8\n" " mov r1, #0x1\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 12\n" " mov r1, #0x1\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 16\n" " mov r1, #0x1\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 20\n" " mov r1, #0x1\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 24\n" " mov r1, #0x1\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 28\n" " mov r1, #0x1\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 32\n" " mov r1, #0x1\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 36\n" " mov r1, #0xf\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 40\n" " mov r1, #0xf\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 44\n" " mov r1, #0xf\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 48\n" " mov r1, #0xf\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 52\n" " mov r1, #0xf\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 56\n" " mov r1, #0xf\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 60\n" " mov r1, #0xf\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 64\n" " mov r1, #0xf\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 68\n" " mov r1, #0xf\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._21 + 72\n" " ldrb r0, [r0, #0x3]\n" " cmp r0, #0\n" @@ -4314,7 +4314,7 @@ void debug_sub_811B310() " ldr r0, ._21 + 76\n" " mov r1, #0xa\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._20\n" "._22:\n" " .align 2, 0\n" @@ -4343,7 +4343,7 @@ void debug_sub_811B310() " ldr r0, ._30\n" " mov r1, #0xa\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._20:\n" " ldr r4, ._30 + 4\n" " ldr r1, [r4, #0x68]\n" @@ -4354,7 +4354,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0xa\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [r4, #0x6c]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -4363,7 +4363,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0xa\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " mov r0, #0x10\n" " ldsh r1, [r4, r0]\n" " mov r0, sp\n" @@ -4373,7 +4373,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0xa\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [r4, #0x70]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -4382,7 +4382,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [r4, #0x74]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -4391,7 +4391,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [r4, #0x78]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -4400,7 +4400,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0x7\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, [r4, #0x7c]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -4409,7 +4409,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0x9\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " add r0, r0, #0x80\n" " ldr r1, [r0]\n" @@ -4420,7 +4420,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0xb\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " add r0, r0, #0x84\n" " ldr r1, [r0]\n" @@ -4431,7 +4431,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0xd\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " add r0, r0, #0x88\n" " ldr r1, [r0]\n" @@ -4442,7 +4442,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " add r0, r4, #0\n" " add r0, r0, #0x8c\n" " ldr r1, [r0]\n" @@ -4453,7 +4453,7 @@ void debug_sub_811B310() " mov r0, sp\n" " mov r1, #0x14\n" " mov r2, #0x11\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._30 + 8\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" @@ -4515,7 +4515,7 @@ void debug_sub_811B310() "._45:\n" " ldr r0, ._46\n" " mov r1, #0x17\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._23:\n" " bl debug_sub_811B2E8\n" " add sp, sp, #0x8\n" @@ -4684,7 +4684,7 @@ void debug_sub_811B654() " mov r1, #0x0\n" " mov r2, #0x18\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " bl debug_sub_811B310\n" " ldrh r0, [r5, #0x8]\n" " add r0, r0, #0x1\n" @@ -4749,20 +4749,20 @@ void debug_sub_811B654() " beq ._83 @cond_branch\n" " mov r0, #0x3\n" " strh r0, [r5, #0x8]\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x9\n" " mov r3, #0x5\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._85\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._85 + 4\n" " mov r1, #0x1\n" " mov r2, #0x3\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " b ._116\n" "._86:\n" " .align 2, 0\n" @@ -4778,21 +4778,21 @@ void debug_sub_811B654() " strb r4, [r0]\n" " ldr r0, ._91 + 4\n" " strb r4, [r0]\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0xa\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r0, ._91 + 8\n" " mov r1, #0x1\n" " mov r2, #0x1\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r3, ._91 + 12\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x8\n" - " bl PrintMenuItems\n" + " bl Menu_PrintItems\n" " str r4, [sp]\n" " mov r0, #0x9\n" " str r0, [sp, #0x4]\n" @@ -4825,7 +4825,7 @@ void debug_sub_811B654() " .word _841B270\n" " .word unk_debug_bss_1+0x4\n" "._66:\n" - " bl ProcessMenuInput\n" + " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r2, r0, #0x18\n" " mov r0, #0x2\n" @@ -4845,7 +4845,7 @@ void debug_sub_811B654() " ldr r0, [r1]\n" " bl _call_via_r0\n" "._94:\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " add r0, r6, #0\n" " bl DestroyTask\n" " b ._116\n" @@ -4938,7 +4938,7 @@ void debug_sub_811B654() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._116 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " add r0, r6, #0\n" " bl DestroyTask\n" "._116:\n" @@ -4986,7 +4986,7 @@ void debug_sub_811B894() " ldr r0, ._122 + 8\n" " mov r1, #0x4\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._122 + 12\n" " mov r0, #0x0\n" " strb r0, [r1]\n" @@ -5027,7 +5027,7 @@ void debug_sub_811B894() " mov r1, #0x4\n" " mov r2, #0x2\n" "._121:\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r0, ._163 + 4\n" " strb r4, [r0]\n" "._126:\n" @@ -5181,7 +5181,7 @@ void debug_sub_811B894() " ldr r0, ._163 + 12\n" " mov r1, #0x4\n" " mov r2, #0x0\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._163 + 4\n" " mov r0, #0x0\n" " strb r0, [r1]\n" diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 36295b3f8..1e4eace87 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -278,11 +278,11 @@ void debug_sub_8075C40() " mov r2, #0x1\n" " mov r3, #0x8\n" " bl ConvertIntToDecimalStringN\n" - " bl MenuDisplayMessageBox\n" + " bl Menu_DisplayDialogueFrame\n" " ldr r0, ._16 + 16\n" " mov r1, #0x2\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" "._12:\n" " ldrh r0, [r5]\n" " add r0, r0, #0x1\n" @@ -303,7 +303,7 @@ void debug_sub_8075C40() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._18 @cond_branch\n" - " bl MenuZeroFillScreen\n" + " bl Menu_EraseScreen\n" " bl ScriptContext2_Disable\n" " add r0, r4, #0\n" " bl DestroyTask\n" -- cgit v1.2.3 From 6efb614f3f3bf1b1b381bdfe220391e152fc8ebe Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 15:49:51 -0600 Subject: add more debug things --- src/battle/battle_2.c | 140 +-- src/battle/battle_ai.c | 2 +- src/battle/battle_interface.c | 6 +- src/debug/nakamura_debug_menu.c | 6 +- src/debug/nohara_debug_menu.c | 4 +- src/debug/start_menu_debug.c | 32 +- src/debug/tomomichi_debug_menu.c | 14 +- src/debug/unk_debug_menu_3.c | 38 +- src/engine/save.c | 4 +- src/field/choose_party.c | 2 +- src/field/field_player_avatar.c | 99 +- src/field/field_weather.c | 181 ++++ src/field/fldeff_secretpower.c | 96 ++ src/field/mauville_man.c | 2 +- src/field/party_menu.c | 17 +- src/field/region_map.c | 4 +- src/field/slot_machine.c | 1863 ++++++++++++++++++++++++++++------ src/pokemon/mail.c | 75 ++ src/pokemon/pokemon_1.c | 12 +- src/pokemon/pokemon_storage_system.c | 3 +- 20 files changed, 2150 insertions(+), 450 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 78fc35ba5..454b47e08 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -220,7 +220,7 @@ void InitBattle(void) " lsl r1, r1, #0x13\n" " ldr r2, ._10\n" " mov r0, sp\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " ldr r0, ._10 + 4\n" " strh r4, [r0]\n" " sub r0, r0, #0xc\n" @@ -347,13 +347,13 @@ void InitBattle(void) " .word 0xff10\n" " .word gWindowConfig_81E6C58\n" " .word gUnknown_030042A4\n" - " .word gUnknown_030042A0\n" + " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" - " .word gUnknown_030041B4\n" - " .word gUnknown_03004288\n" - " .word gUnknown_03004280\n" - " .word gUnknown_030041B0\n" - " .word gUnknown_030041B8\n" + " .word gBattle_BG1_Y\n" + " .word gBattle_BG2_X\n" + " .word gBattle_BG2_Y\n" + " .word gBattle_BG3_X\n" + " .word gBattle_BG3_Y\n" " .word gUnknown_02023A14+0x50\n" " .word gBattleTerrain\n" " .word gUnknown_03004210\n" @@ -907,7 +907,7 @@ void sub_800EC9C() " ldr r2, ._116 + 4\n" " add r1, r1, r2\n" " mov r2, #0xc8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " b ._129\n" "._117:\n" " .align 2, 0\n" @@ -946,7 +946,7 @@ void sub_800EC9C() " ldr r2, ._126 + 4\n" " add r1, r1, r2\n" " mov r2, #0xc8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " b ._129\n" "._127:\n" " .align 2, 0\n" @@ -982,7 +982,7 @@ void sub_800EC9C() " add r1, r1, r0\n" " add r0, r4, #0\n" " mov r2, #0xc8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " ldr r1, ._134 + 8\n" " add r0, r4, r1\n" " bl shedinja_something\n" @@ -1407,7 +1407,7 @@ void sub_800F104() " add r1, r1, r0\n" " ldr r0, ._177 + 4\n" " mov r2, #0x60\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" "._174:\n" " add r7, r7, #0x1c\n" " add r4, r4, #0x1\n" @@ -1781,7 +1781,7 @@ void sub_800F298() " ldr r1, ._239 + 4\n" " mov r2, #0x96\n" " lsl r2, r2, #0x1\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " ldr r0, ._239 + 8\n" " mov r1, #0x0\n" " bl CreateTask\n" @@ -2018,7 +2018,7 @@ void sub_800F298() "._283:\n" " add r1, r5, #0\n" " mov r2, #0xc8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " b ._291\n" "._293:\n" " .align 2, 0\n" @@ -2028,7 +2028,7 @@ void sub_800F298() " ldr r0, ._296\n" " add r1, r5, #0\n" " mov r2, #0xc8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" "._291:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -2185,7 +2185,7 @@ void sub_800F298() "._333:\n" " add r1, r5, #0\n" " mov r2, #0x64\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " b ._341\n" "._343:\n" " .align 2, 0\n" @@ -2195,7 +2195,7 @@ void sub_800F298() " ldr r0, ._346\n" " add r1, r5, #0\n" " mov r2, #0x64\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" "._341:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -2627,7 +2627,7 @@ void BattleMainCB2(void) " str r0, [r4]\n" " bl ZeroEnemyPartyMons\n" " mov r0, #0x5a\n" - " bl gScriptFuncs_End+0x148c\n" + " bl gMysteryEventScriptCmdTableEnd+0x148c\n" " ldr r0, ._358 + 24\n" " ldrh r1, [r0]\n" " mov r0, #0x2\n" @@ -3197,7 +3197,7 @@ void debug_sub_80108B8() asm( " push {r4, r5, lr}\n" " add sp, sp, #0xfffffffc\n" - " bl gScriptFuncs_End+0x19f4\n" + " bl gMysteryEventScriptCmdTableEnd+0x19f4\n" " mov r0, #0x0\n" " bl SetHBlankCallback\n" " mov r0, #0x0\n" @@ -3264,7 +3264,7 @@ void debug_sub_80108B8() " ldr r1, ._507 + 72\n" " add r0, r4, #0\n" " bl LZDecompressVram\n" - " bl gScriptFuncs_End+0x1a70\n" + " bl gMysteryEventScriptCmdTableEnd+0x1a70\n" " ldr r0, ._507 + 76\n" " bl SetVBlankCallback\n" " ldr r0, ._507 + 80\n" @@ -3333,13 +3333,13 @@ void debug_sub_80108B8() " .word 0x85006000\n" " .word 0x4000200\n" " .word gUnknown_030042A4\n" - " .word gUnknown_030042A0\n" + " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" - " .word gUnknown_030041B4\n" - " .word gUnknown_03004288\n" - " .word gUnknown_03004280\n" - " .word gUnknown_030041B0\n" - " .word gUnknown_030041B8\n" + " .word gBattle_BG1_Y\n" + " .word gBattle_BG2_X\n" + " .word gBattle_BG2_Y\n" + " .word gBattle_BG3_X\n" + " .word gBattle_BG3_Y\n" " .word 0x1f09\n" " .word 0x4801\n" " .word 0x4000050\n" @@ -3860,7 +3860,7 @@ void debug_sub_8010CAC() " strb r0, [r3, #0x15]\n" " lsl r0, r0, #0x1f\n" " lsr r0, r0, #0x1f\n" - " bl gScriptFuncs_End+0x2aa0\n" + " bl gMysteryEventScriptCmdTableEnd+0x2aa0\n" " bl debug_nullsub_3\n" "._559:\n" " ldr r4, ._565 + 12\n" @@ -4774,7 +4774,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4830,7 +4830,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4886,7 +4886,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4929,7 +4929,7 @@ void debug_sub_8011498() " lsl r4, r5, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4965,7 +4965,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -5002,7 +5002,7 @@ void debug_sub_8011498() " lsl r4, r5, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -5200,7 +5200,7 @@ void debug_sub_801174C() "._713:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" " ldr r1, ._719\n" @@ -5223,7 +5223,7 @@ void debug_sub_801174C() "._699:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r2, #0x64\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" @@ -5282,7 +5282,7 @@ void debug_sub_801174C() " str r0, [sp, #0xc]\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" " ldr r1, ._726\n" @@ -5355,7 +5355,7 @@ void debug_sub_801174C() "._735:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r2, #0x64\n" " mul r0, r0, r2\n" " ldr r1, ._741\n" @@ -5382,7 +5382,7 @@ void debug_sub_801174C() "._721:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r2, #0x64\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" @@ -5441,7 +5441,7 @@ void debug_sub_801174C() " str r0, [sp, #0xc]\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r2, #0x64\n" " mul r0, r0, r2\n" " ldr r1, ._750\n" @@ -5460,7 +5460,7 @@ void debug_sub_801174C() " ble ._743 @cond_branch\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" " ldr r1, ._750\n" @@ -5838,13 +5838,13 @@ void debug_sub_8011D40() " .word 0x6004000\n" " .word 0x80000800\n" " .word gUnknown_030042A4\n" - " .word gUnknown_030042A0\n" + " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" - " .word gUnknown_030041B4\n" - " .word gUnknown_03004288\n" - " .word gUnknown_03004280\n" - " .word gUnknown_030041B0\n" - " .word gUnknown_030041B8\n" + " .word gBattle_BG1_Y\n" + " .word gBattle_BG2_X\n" + " .word gBattle_BG2_Y\n" + " .word gBattle_BG3_X\n" + " .word gBattle_BG3_Y\n" "\n" ); } @@ -5911,13 +5911,13 @@ void debug_sub_8011DD4() " .word 0x4000008\n" " .word 0x9803\n" " .word gUnknown_030042A4\n" - " .word gUnknown_030042A0\n" + " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" - " .word gUnknown_030041B4\n" - " .word gUnknown_03004288\n" - " .word gUnknown_03004280\n" - " .word gUnknown_030041B0\n" - " .word gUnknown_030041B8\n" + " .word gBattle_BG1_Y\n" + " .word gBattle_BG2_X\n" + " .word gBattle_BG2_Y\n" + " .word gBattle_BG3_X\n" + " .word gBattle_BG3_Y\n" "\n" ); } @@ -6483,7 +6483,7 @@ void debug_sub_8012294() " lsl r4, r4, #0x1\n" " add r0, r5, #0\n" " mov r1, #0x5\n" - " bl gScriptFuncs_End+0x4358\n" + " bl gMysteryEventScriptCmdTableEnd+0x4358\n" " add r5, r0, #0\n" " lsl r5, r5, #0x18\n" " lsr r5, r5, #0x15\n" @@ -7102,7 +7102,7 @@ void debug_sub_8012688() " bl SetHBlankCallback\n" " ldr r0, ._873 + 100\n" " bl SetVBlankCallback\n" - " bl gScriptFuncs_End+0x14f4\n" + " bl gMysteryEventScriptCmdTableEnd+0x14f4\n" " ldr r0, ._873 + 104\n" " mov r1, #0x0\n" " bl CreateTask\n" @@ -7132,13 +7132,13 @@ void debug_sub_8012688() " .word 0x400004c\n" " .word gWindowConfig_81E6C58\n" " .word gUnknown_030042A4\n" - " .word gUnknown_030042A0\n" + " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" - " .word gUnknown_030041B4\n" - " .word gUnknown_03004288\n" - " .word gUnknown_03004280\n" - " .word gUnknown_030041B0\n" - " .word gUnknown_030041B8\n" + " .word gBattle_BG1_Y\n" + " .word gBattle_BG2_X\n" + " .word gBattle_BG2_Y\n" + " .word gBattle_BG3_X\n" + " .word gBattle_BG3_Y\n" " .word gBattleTerrain\n" " .word gReservedSpritePaletteCount\n" " .word gCurrentMove\n" @@ -7764,7 +7764,7 @@ void debug_sub_8012C08() " .word gTasks\n" " .word UnkDebug0+0x432\n" " .word gUnknown_03004210\n" - " .word gUnknown_08400D7A\n" + " .word BattleText_YesNo\n" "\n" ); } @@ -8484,7 +8484,7 @@ void debug_sub_8013240() { asm( " push {lr}\n" - " bl gScriptFuncs_End+0x2fec\n" + " bl gMysteryEventScriptCmdTableEnd+0x2fec\n" " lsl r0, r0, #0x10\n" " cmp r0, #0\n" " beq ._1068 @cond_branch\n" @@ -8519,7 +8519,7 @@ void debug_sub_8013258() " lsr r4, r0, #0x10\n" " add r0, r4, #0\n" " add r1, r6, #0\n" - " bl gScriptFuncs_End+0x2f60\n" + " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" " cmp r0, #0\n" " bne ._1071 @cond_branch\n" " mov r0, #0x80\n" @@ -8555,13 +8555,13 @@ void debug_sub_8013294() " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " bne ._1076 @cond_branch\n" - " bl gScriptFuncs_End+0x19f4\n" + " bl gMysteryEventScriptCmdTableEnd+0x19f4\n" " add r0, r4, #0\n" " add r1, r5, #0\n" " add r2, r6, #0\n" " bl debug_sub_8013258\n" " add r4, r0, #0\n" - " bl gScriptFuncs_End+0x1a70\n" + " bl gMysteryEventScriptCmdTableEnd+0x1a70\n" " add r0, r4, #0\n" " b ._1077\n" "._1076:\n" @@ -8591,7 +8591,7 @@ void debug_sub_80132C8() " mov r1, #0x0\n" " add r2, r5, #0\n" " add r3, r6, #0\n" - " bl gScriptFuncs_End+0x2d64\n" + " bl gMysteryEventScriptCmdTableEnd+0x2d64\n" "._1078:\n" " pop {r4, r5, r6}\n" " pop {r0}\n" @@ -9066,7 +9066,7 @@ void debug_sub_80139E4() "._1193:\n" " ldr r0, ._1198 + 12\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " ldr r1, ._1198 + 4\n" " mov r0, #0x0\n" " strb r0, [r1]\n" @@ -9081,7 +9081,7 @@ void debug_sub_80139E4() " lsl r0, r0, #0x2\n" " add r0, r0, r5\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " ldrb r0, [r4]\n" " add r0, r0, #0x1\n" " strb r0, [r4]\n" @@ -9103,7 +9103,7 @@ void debug_sub_80139E4() "._1192:\n" " ldr r0, ._1202\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " ldr r1, ._1202 + 4\n" " strb r4, [r1]\n" " ldr r0, ._1202 + 8\n" @@ -9117,7 +9117,7 @@ void debug_sub_80139E4() " lsl r0, r0, #0x2\n" " add r0, r0, r5\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " ldrb r0, [r4]\n" " add r0, r0, #0x1\n" " strb r0, [r4]\n" @@ -9349,7 +9349,7 @@ void sub_8010874() " mov r0, #0x64\n" " mul r0, r0, r1\n" " ldr r1, ._1215 + 160\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " ldr r2, ._1215 + 164\n" " add r1, r4, r2\n" " strb r0, [r1]\n" diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 938d0fde1..ffc9281e4 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -318,7 +318,7 @@ void BattleAI_SetupAIData() " ldrb r0, [r3]\n" " mov r1, #0x0\n" " mov r2, #0xff\n" - " bl sub_8015A98\n" + " bl CheckMoveLimitations\n" " lsl r0, r0, #0x18\n" " lsr r7, r0, #0x18\n" " mov r4, #0x0\n" diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index b19547d52..1b6240159 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1405,7 +1405,7 @@ void sub_804454C() " add r1, r1, r0\n" " mov r0, sp\n" " ldr r2, ._150 + 36\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" @@ -1467,7 +1467,7 @@ void sub_804454C() " ldr r2, ._153 + 4\n" " add r1, r1, r2\n" " ldr r2, ._153 + 8\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " b ._163\n" "._154:\n" " .align 2, 0\n" @@ -1521,7 +1521,7 @@ void sub_804454C() " add r1, r1, r6\n" " mov r0, sp\n" " ldr r2, ._161 + 4\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 1d36d528f..b86fa0abf 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -2237,7 +2237,7 @@ void debug_sub_815FFDC() " mov r0, #0xf\n" " mov r1, #0x1\n" " mov r2, #0xff\n" - " bl unref_sub_80F924C\n" + " bl PrintTriangleCursorWithPalette\n" " ldr r1, ._217 + 4\n" " ldr r0, ._217 + 8\n" " str r0, [r1]\n" @@ -2831,7 +2831,7 @@ void debug_sub_81603B8() " lsl r1, r1, #0x18\n" " lsr r1, r1, #0x18\n" " mov r2, #0xff\n" - " bl unref_sub_80F924C\n" + " bl PrintTriangleCursorWithPalette\n" " pop {r4, r5, r6, r7}\n" " pop {r0}\n" " bx r0\n" @@ -3206,7 +3206,7 @@ void debug_sub_8160714() " lsr r1, r1, #0x18\n" " mov r0, r9\n" " str r2, [sp, #0xc]\n" - " bl sub_810CA9C\n" + " bl GetPokeblockData\n" " add r1, r0, #0\n" " lsl r0, r5, #0x1\n" " add r0, r0, sp\n" diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index f929170fd..766137871 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -2177,7 +2177,7 @@ void NoharaDebugMenu_SootopolisCity() " mov r0, #0x71\n" " bl FlagSet\n" " ldr r0, ._227\n" - " bl FlagReset\n" + " bl FlagClear\n" " bl CloseMenu\n" " mov r0, #0x1\n" " pop {r1}\n" @@ -2196,7 +2196,7 @@ void NoharaDebugMenu_Embark() asm( " push {lr}\n" " ldr r0, ._229\n" - " bl FlagReset\n" + " bl FlagClear\n" " ldr r0, ._229 + 4\n" " mov r1, #0x1\n" " bl VarSet\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 6f9f0d02c..e4ae404e2 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -170,7 +170,7 @@ void debug_sub_8076BB4() " add r2, r2, #0x4\n" " add r0, r0, r2\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " b ._24\n" "._14:\n" " .align 2, 0\n" @@ -886,7 +886,7 @@ void DebugMenu_8077020() " lsr r4, r0, #0x18\n" " ldr r0, ._109\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r0, #0x1\n" @@ -1058,7 +1058,7 @@ void DebugMenu_807709C() " add r1, r1, #0x4\n" " add r0, r0, r1\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " b ._132\n" @@ -1185,18 +1185,18 @@ void DebugMenu_8077238() " ldr r1, ._139\n" " mov r0, sp\n" " mov r2, #0x2\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, sp, #0x4\n" " mov r9, r0\n" " ldr r1, ._139 + 4\n" " mov r2, #0x3\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r1, sp, #0x8\n" " mov sl, r1\n" " ldr r1, ._139 + 8\n" " mov r0, sl\n" " mov r2, #0x3\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " mov r2, #0x0\n" " str r2, [sp, #0x14]\n" " add r4, sp, #0x10\n" @@ -1930,7 +1930,7 @@ void DebugMenu_80776B4() " ldr r1, ._183\n" " mov r0, sp\n" " mov r2, #0x7\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " lsl r3, r4, #0x1\n" " lsl r5, r4, #0x19\n" " lsr r5, r5, #0x18\n" @@ -1973,7 +1973,7 @@ void DebugMenu_8077704() " ldr r1, ._185\n" " mov r0, sp\n" " mov r2, #0x11\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " mov r0, #0x13\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" @@ -2172,7 +2172,7 @@ void DebugMenu_807786C() " ldr r1, ._205\n" " mov r0, sp\n" " mov r2, #0x7\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " mov r0, #0x19\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" @@ -2871,7 +2871,7 @@ void DebugMenu_8077C3C() " add r0, r2, #0\n" " mov r1, #0xa\n" " str r3, [sp]\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r2, r0, #0\n" " ldr r3, [sp]\n" " cmp r4, r6\n" @@ -3983,7 +3983,7 @@ void DebugMenu_80783C8() " .word 0x804\n" "._381:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" " mov r0, #0x1\n" " bl DebugMenu_807786C\n" "._382:\n" @@ -4075,7 +4075,7 @@ void DebugMenu_8078464() " b ._401\n" "._392:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" " b ._401\n" "._398:\n" " add r0, r4, #0\n" @@ -5578,7 +5578,7 @@ void DebugMenu_8078E04() " lsr r4, r0, #0x10\n" " add r0, r4, #0\n" " add r1, r6, #0\n" - " bl gScriptFuncs_End+0x2f60\n" + " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" " cmp r0, #0\n" " bne ._576 @cond_branch\n" " mov r0, #0x80\n" @@ -5611,13 +5611,13 @@ void DebugMenu_8078E40() " add r6, r2, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl gScriptFuncs_End+0x19f4\n" + " bl gMysteryEventScriptCmdTableEnd+0x19f4\n" " add r0, r4, #0\n" " add r1, r5, #0\n" " add r2, r6, #0\n" " bl DebugMenu_8078E04\n" " add r4, r0, #0\n" - " bl gScriptFuncs_End+0x1a70\n" + " bl gMysteryEventScriptCmdTableEnd+0x1a70\n" " add r0, r4, #0\n" " pop {r4, r5, r6}\n" " pop {r1}\n" @@ -5637,7 +5637,7 @@ void DebugMenu_8078E68() " lsr r0, r0, #0x18\n" " mov r1, #0x0\n" " add r2, r4, #0\n" - " bl gScriptFuncs_End+0x2d64\n" + " bl gMysteryEventScriptCmdTableEnd+0x2d64\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index cc2bdd80e..2d9074d19 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -2197,7 +2197,7 @@ void debug_sub_808C714() " .word gUnknown_Debug_083C31DC+0xa\n" "._189:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._190:\n" " pop {r4}\n" " pop {r0}\n" @@ -2857,7 +2857,7 @@ void debug_sub_808CBC0() " .word gUnknown_Debug_083C2710+0xa\n" "._229:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._230:\n" " pop {r4}\n" " pop {r0}\n" @@ -3235,7 +3235,7 @@ void debug_sub_808CE5C() " .word gUnknown_Debug_083C1C34+0x4\n" "._257:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._258:\n" " pop {r4}\n" " pop {r0}\n" @@ -3895,7 +3895,7 @@ void debug_sub_808D308() " .word gUnknown_Debug_083C19C6\n" "._297:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._298:\n" " pop {r4}\n" " pop {r0}\n" @@ -4226,7 +4226,7 @@ void debug_sub_808D54C() " .word gUnknown_Debug_083C1194+0x2\n" "._323:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._324:\n" " pop {r4}\n" " pop {r0}\n" @@ -4557,7 +4557,7 @@ void debug_sub_808D790() " .word gUnknown_Debug_083C12D0+0x2\n" "._349:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._350:\n" " pop {r4}\n" " pop {r0}\n" @@ -4840,7 +4840,7 @@ void debug_sub_808D97C() " .word gUnknown_Debug_083C1AAC+0x2\n" "._373:\n" " add r0, r4, #0\n" - " bl FlagReset\n" + " bl FlagClear\n" "._374:\n" " pop {r4}\n" " pop {r0}\n" diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 70e194907..a217a0258 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -9,7 +9,7 @@ void debug_sub_813C404() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -37,7 +37,7 @@ void debug_sub_813C430() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -65,7 +65,7 @@ void debug_sub_813C45C() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -93,7 +93,7 @@ void debug_sub_813C488() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -119,7 +119,7 @@ void debug_sub_813C4B4() " ldr r1, ._9 + 4\n" " sub r4, r4, r1\n" " add r2, r4, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r4, #0\n" " pop {r4}\n" " pop {r1}\n" @@ -144,7 +144,7 @@ void debug_sub_813C4D4() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_81261B4\n" @@ -172,7 +172,7 @@ void debug_sub_813C500() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -207,7 +207,7 @@ void debug_sub_813C52C() " mov r0, r8\n" " add r1, r4, #0\n" " add r2, r6, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " ldr r0, ._15 + 8\n" " sub r0, r0, r4\n" " add r0, r0, r8\n" @@ -517,7 +517,7 @@ void debug_sub_813C740() " add r0, r6, #0\n" " mov r1, r8\n" " mov r2, r9\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r5, #0\n" " mov r1, #0x19\n" " mov r2, #0x5\n" @@ -564,7 +564,7 @@ void debug_sub_813C740() " sub r0, r0, r1\n" " add r1, r5, #0\n" " mov r2, #0x64\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " ldr r0, ._29 + 20\n" " add r6, r6, r0\n" " mov r0, r8\n" @@ -572,7 +572,7 @@ void debug_sub_813C740() " add r0, r6, #0\n" " mov r1, sp\n" " mov r2, #0x24\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " mov r0, r9\n" " add sp, sp, #0x30\n" " pop {r3, r4, r5}\n" @@ -612,7 +612,7 @@ void debug_sub_813C810() " add r0, r6, #0\n" " add r1, r5, #0\n" " mov r2, r8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r4, #0\n" " mov r1, #0xc9\n" " mov r2, #0x15\n" @@ -626,13 +626,13 @@ void debug_sub_813C810() " sub r0, r0, r5\n" " add r1, r4, #0\n" " mov r2, #0x64\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " ldr r0, ._31 + 16\n" " add r0, r6, r0\n" " sub r0, r0, r5\n" " mov r1, sp\n" " mov r2, #0x24\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r5, #0\n" " bl unref_sub_812620C\n" @@ -672,7 +672,7 @@ void debug_sub_813C888() " add r0, r6, #0\n" " add r1, r5, #0\n" " mov r2, r8\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r4, #0\n" " mov r1, #0xc9\n" " mov r2, #0x15\n" @@ -688,13 +688,13 @@ void debug_sub_813C888() " sub r0, r0, r5\n" " add r1, r4, #0\n" " mov r2, #0x64\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " ldr r0, ._33 + 16\n" " add r0, r6, r0\n" " sub r0, r0, r5\n" " mov r1, sp\n" " mov r2, #0x24\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r6, #0\n" " add r1, r5, #0\n" " bl unref_sub_812620C\n" @@ -763,7 +763,7 @@ void debug_sub_813C93C() " sub r5, r5, r6\n" " add r1, r6, #0\n" " add r2, r5, #0\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " bl SavePlayerParty\n" " bl debug_sub_813C904\n" " ldr r1, ._37 + 8\n" @@ -777,7 +777,7 @@ void debug_sub_813C93C() " add r0, r4, #0\n" " mov r1, sp\n" " mov r2, #0xbc\n" - " bl gScriptFuncs_End+0x5bc4\n" + " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" " add r0, r5, #0\n" " add sp, sp, #0xbc\n" " pop {r4, r5, r6}\n" diff --git a/src/engine/save.c b/src/engine/save.c index 5564a6ce3..e1fb47dcc 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -690,7 +690,7 @@ void sub_813B79C() " strh r0, [r1]\n" " add r0, r5, #0\n" " add r1, r4, #0\n" - " bl gScriptFuncs_End+0x2f60\n" + " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" @@ -718,7 +718,7 @@ void sub_813B79C() " lsr r4, r4, #0x10\n" " add r0, r4, #0\n" " add r1, r6, #0\n" - " bl gScriptFuncs_End+0x2f60\n" + " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 545c19dfa..8a54b0ad0 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -540,7 +540,7 @@ void debug_sub_81381B4() " add r0, r4, #0\n" " mov r1, #0x0\n" " mov r2, #0x60\n" - " bl gScriptFuncs_End+0x5c24\n" + " bl gMysteryEventScriptCmdTableEnd+0x5c24\n" " mov r7, #0x0\n" " mov r8, r4\n" " mov r0, #0x4\n" diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 747edf816..db674e52f 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -291,7 +291,7 @@ u8 TryDoMetatileBehaviorForcedMovement() " lsr r0, r0, #0x16\n" " add r0, r0, r4\n" " ldr r0, [r0]\n" - " bl gScriptFuncs_End+0x3cf4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" "._26:\n" @@ -513,7 +513,7 @@ void MovePlayerNotOnBike(u8 u81, u16 u161) " ldr r2, [r0]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl gScriptFuncs_End+0x3cfc\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cfc\n" "._83:\n" " pop {r4, r5, r6}\n" " pop {r0}\n" @@ -1855,3 +1855,98 @@ static void sub_805A954(void) if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 1, playerSprite->pos2.y); } + +#if DEBUG +__attribute__((naked)) +void debug_sub_805F2B0() +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r2, r0, #0x18\n" + " ldr r0, ._422\n" + " ldrh r1, [r0, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._420 @cond_branch\n" + " mov r0, #0x0\n" + " b ._421\n" + "._423:\n" + " .align 2, 0\n" + "._422:\n" + " .word gMain\n" + "._420:\n" + " add r0, r2, #0\n" + " bl debug_sub_805F2DC\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + "._421:\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} + +__attribute__((naked)) +void debug_sub_805F2DC() +{ + asm( + " push {r4, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " cmp r4, #0\n" + " bne ._424 @cond_branch\n" + " ldr r2, ._426\n" + " ldr r0, ._426 + 4\n" + " ldrb r1, [r0, #0x5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r0, [r0, #0x18]\n" + " lsr r0, r0, #0x4\n" + " bl PlayerFaceDirection\n" + " b ._430\n" + "._427:\n" + " .align 2, 0\n" + "._426:\n" + " .word gMapObjects\n" + " .word gPlayerAvatar\n" + "._424:\n" + " ldr r2, ._431\n" + " ldr r0, ._431 + 4\n" + " ldrb r1, [r0, #0x5]\n" + " lsl r0, r1, #0x3\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r0, [r0, #0x1]\n" + " lsr r0, r0, #0x7\n" + " cmp r0, #0\n" + " beq ._429 @cond_branch\n" + " add r0, r4, #0\n" + " bl CanCameraMoveInDirection\n" + " cmp r0, #0\n" + " bne ._429 @cond_branch\n" + " add r0, r4, #0\n" + " bl PlayerOnBikeCollide\n" + " b ._430\n" + "._432:\n" + " .align 2, 0\n" + "._431:\n" + " .word gMapObjects\n" + " .word gPlayerAvatar\n" + "._429:\n" + " add r0, r4, #0\n" + " bl sub_80593F4\n" + "._430:\n" + " mov r0, #0x1\n" + " pop {r4}\n" + " pop {r1}\n" + " bx r1\n" + "\n" + ); +} +#endif diff --git a/src/field/field_weather.c b/src/field/field_weather.c index b6475d8ff..97eba16e0 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -188,6 +188,45 @@ const u8 gUnknown_083970C8[] = 1, }; +#if DEBUG + +const u8 gDebugText_Weather_0[] = _("なし   "); +const u8 gDebugText_Weather_1[] = _("はれ   "); +const u8 gDebugText_Weather_2[] = _("はれ2  "); +const u8 gDebugText_Weather_3[] = _("あめ   "); +const u8 gDebugText_Weather_4[] = _("ゆき   "); +const u8 gDebugText_Weather_5[] = _("かみなり "); +const u8 gDebugText_Weather_6[] = _("きり   "); +const u8 gDebugText_Weather_7[] = _("かざんばい"); +const u8 gDebugText_Weather_8[] = _("すなあらし"); +const u8 gDebugText_Weather_9[] = _("きり2  "); +const u8 gDebugText_Weather_10[] = _("かいてい "); +const u8 gDebugText_Weather_11[] = _("くもり  "); +const u8 gDebugText_Weather_12[] = _("はれ3  "); +const u8 gDebugText_Weather_13[] = _("おおあめ"); +const u8 gDebugText_Weather_14[] = _("かいてい2"); + +const u8 *const gDebugText_Weather[] = +{ + gDebugText_Weather_0, + gDebugText_Weather_1, + gDebugText_Weather_2, + gDebugText_Weather_3, + gDebugText_Weather_4, + gDebugText_Weather_5, + gDebugText_Weather_6, + gDebugText_Weather_7, + gDebugText_Weather_8, + gDebugText_Weather_9, + gDebugText_Weather_10, + gDebugText_Weather_11, + gDebugText_Weather_12, + gDebugText_Weather_13, + gDebugText_Weather_14, +}; + +#endif + const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); void StartWeather(void) @@ -1159,3 +1198,145 @@ void sub_807DE68(void) { gUnknown_030006DC = gUnknown_083970C8; } + +#if DEBUG + +__attribute__((naked)) +u8 debug_sub_8085564(void) +{ + asm("\ + push {lr}\n\ + mov r2, #0x0\n\ + ldr r0, ._375\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._370 @cond_branch\n\ + ldr r1, ._375 + 4\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xf\n\ + bne ._371 @cond_branch\n\ + strb r2, [r1]\n\ +._371:\n\ + mov r2, #0x1\n\ +._370:\n\ + ldr r0, ._375\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._372 @cond_branch\n\ + ldr r1, ._375 + 4\n\ + ldrb r0, [r1]\n\ + cmp r0, #0\n\ + beq ._373 @cond_branch\n\ + sub r0, r0, #0x1\n\ + b ._374\n\ +._376:\n\ + .align 2, 0\n\ +._375:\n\ + .word gMain\n\ + .word gUnknown_0202FF58+0x2\n\ +._373:\n\ + mov r0, #0xe\n\ +._374:\n\ + strb r0, [r1]\n\ + mov r2, #0x1\n\ +._372:\n\ + cmp r2, #0\n\ + beq ._377 @cond_branch\n\ + mov r0, #0x16\n\ + mov r1, #0x1\n\ + mov r2, #0x1c\n\ + mov r3, #0x2\n\ + bl MenuFillWindowRectWithBlankTile\n\ + ldr r1, ._380\n\ + ldr r0, ._380 + 4\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x17\n\ + mov r2, #0x1\n\ + bl MenuPrint\n\ +._377:\n\ + ldr r0, ._380 + 8\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._378 @cond_branch\n\ + mov r0, #0x0\n\ + b ._379\n\ +._381:\n\ + .align 2, 0\n\ +._380:\n\ + .word gDebugText_Weather\n\ + .word gUnknown_0202FF58+0x2\n\ + .word gMain\n\ +._378:\n\ + ldr r0, ._382\n\ + ldrb r0, [r0]\n\ + bl DoWeatherEffect\n\ + bl CloseMenu\n\ + mov r0, #0x1\n\ +._379:\n\ + pop {r1}\n\ + bx r1\n\ +._383:\n\ + .align 2, 0\n\ +._382:\n\ + .word gUnknown_0202FF58+0x2"); +} + +__attribute__((naked)) +u8 debug_sub_808560C(void) +{ + asm("\ + push {r4, lr}\n\ + ldr r4, ._384\n\ + ldr r0, ._384 + 4\n\ + mov r1, #0xda\n\ + lsl r1, r1, #0x3\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + strb r0, [r4]\n\ + bl MenuZeroFillScreen\n\ + mov r0, #0x16\n\ + mov r1, #0x1\n\ + mov r2, #0x1c\n\ + mov r3, #0x2\n\ + bl MenuFillWindowRectWithBlankTile\n\ + ldr r1, ._384 + 8\n\ + ldrb r0, [r4]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x17\n\ + mov r2, #0x1\n\ + bl MenuPrint\n\ + ldr r1, ._384 + 12\n\ + ldr r0, ._384 + 16\n\ + str r0, [r1]\n\ + mov r0, #0x0\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ +._385:\n\ + .align 2, 0\n\ +._384:\n\ + .word gUnknown_0202FF58+0x2\n\ + .word gUnknown_0202F7E8\n\ + .word gDebugText_Weather\n\ + .word gCallback_03004AE8\n\ + .word debug_sub_8085564+1"); +} + +#endif diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index bf8e98403..c200ce2f5 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -243,6 +243,102 @@ void sub_80C6280(void) } } +#if DEBUG + +__attribute__((naked)) +void debug_sub_80D93F4() +{ + asm("\ + push {r4, lr}\n\ + bl sub_80BB63C\n\ + ldr r0, ._98\n\ + ldrh r0, [r0]\n\ + cmp r0, #0x1\n\ + beq ._95 @cond_branch\n\ + bl player_get_direction_lower_nybble\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x2\n\ + beq ._96 @cond_branch\n\ +._95:\n\ + bl ScriptContext2_Disable\n\ + b ._109\n\ +._99:\n\ + .align 2, 0\n\ +._98:\n\ + .word gScriptResult\n\ +._96:\n\ + ldr r4, ._102\n\ + add r1, r4, #2\n\ + add r0, r4, #0\n\ + bl GetXYCoordsOneStepInFrontOfPlayer\n\ + mov r1, #0x0\n\ + ldsh r0, [r4, r1]\n\ + mov r2, #0x2\n\ + ldsh r1, [r4, r2]\n\ + bl MapGridGetMetatileBehaviorAt\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + add r0, r4, #0\n\ + bl MetatileBehavior_IsSecretBaseCave\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._100 @cond_branch\n\ + bl sub_80C6264\n\ + ldr r1, ._102 + 4\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + bl sub_80C639C\n\ + b ._109\n\ +._103:\n\ + .align 2, 0\n\ +._102:\n\ + .word gUnknown_0203923C\n\ + .word gLastFieldPokeMenuOpened\n\ +._100:\n\ + add r0, r4, #0\n\ + bl MetatileBehavior_IsSecretBaseTree\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._104 @cond_branch\n\ + bl sub_80C6264\n\ + ldr r1, ._106\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + bl sub_80C64A8\n\ + b ._109\n\ +._107:\n\ + .align 2, 0\n\ +._106:\n\ + .word gLastFieldPokeMenuOpened\n\ +._104:\n\ + add r0, r4, #0\n\ + bl MetatileBehavior_IsSecretBaseShrub\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._108 @cond_branch\n\ + bl sub_80C6264\n\ + ldr r1, ._110\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + bl sub_80C660C\n\ + b ._109\n\ +._111:\n\ + .align 2, 0\n\ +._110:\n\ + .word gLastFieldPokeMenuOpened\n\ +._108:\n\ + bl ScriptContext2_Disable\n\ +._109:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0"); +} +#endif + bool8 SetUpFieldMove_SecretPower(void) { u8 behavior; diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 00368c2f5..1bce9bc3f 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -277,7 +277,7 @@ void debug_sub_810B32C() " .word ._28\n" " .word ._29\n" "._25:\n" - " bl sub_80F7A34\n" + " bl SetupBard\n" " b ._37\n" "._26:\n" " mov r2, #0x0\n" diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7994dd60c..75c0cba78 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4777,7 +4777,8 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c) gMain.newKeys = 0; } -static const u8 *const StatNames[] = { +static const u8 *const StatNames[] = +{ gOtherText_HP, gOtherText_Attack, gOtherText_Defense, @@ -4786,7 +4787,8 @@ static const u8 *const StatNames[] = { gOtherText_Speed, }; -static const u8 StatDataTypes[] = { +static const u8 StatDataTypes[] = +{ MON_DATA_MAX_HP, MON_DATA_ATK, MON_DATA_DEF, @@ -4794,6 +4796,17 @@ static const u8 StatDataTypes[] = { MON_DATA_SPDEF, MON_DATA_SPEED, }; + +#if DEBUG + +const u8 gUnknown_Debug_839B6CE[] = {0x40, 0, 0, 0, 0x44, 0, 0xFF, 0, 0, 0}; + +const u8 gUnknown_Debug_839B6D8[] = _( + "{STR_VAR_1}かい じっこう\n" + "{STR_VAR_2}たんいじかん しょうひ"); + +#endif + void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c) { u8 i; diff --git a/src/field/region_map.c b/src/field/region_map.c index a098eb73d..3bd64a8a0 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -280,7 +280,7 @@ static u16 sub_80FB9C0(u16); static void sub_80FBA18(void); static bool8 sub_80FBAA0(u16); void CreateRegionMapCursor(u16, u16); -static void sub_80FBCA0(void); +void sub_80FBCA0(void); static void sub_80FBDF8(void); static void sub_80FBE24(void); static void SpriteCB_PlayerIconZoomedOut(struct Sprite *); @@ -1127,7 +1127,7 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) } } -static void sub_80FBCA0(void) +void sub_80FBCA0(void) { if (gRegionMap->cursorSprite != NULL) { diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 3aefa80de..d84a6e592 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -30,6 +30,8 @@ struct UnkStruct1 #define SLOTMACHINE_GFX_TILES 236 #endif +// TODO: figure out which functions are static and which are not. +#define static static void CB2_SlotMachineSetup(void); static void CB2_SlotMachineLoop(void); @@ -77,6 +79,7 @@ static bool8 sub_81023E0(struct Task *task); static bool8 sub_81023FC(struct Task *task); static bool8 sub_8102424(struct Task *task); static bool8 sub_8102460(struct Task *task); +static bool8 debug_sub_8116E74(struct Task *); static void sub_8102484(void); static void sub_81024F0(void); static bool8 sub_8102540(void); @@ -230,11 +233,59 @@ static const u8 gUnknown_083ECE3A[]; static const u16 gUnknown_083ECE42[]; static const u16 gUnknown_083ECE48[]; +#if DEBUG +__attribute__((naked)) +void PlaySlotMachine(u8 arg0, MainCallback cb) +{ + asm("\ + push {lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r3, ._1\n\ + mov r2, #0x0\n\ + strb r2, [r3]\n\ + bl sub_81019B0\n\ + ldr r0, ._1 + 4\n\ + bl SetMainCallback2\n\ + pop {r0}\n\ + bx r0\n\ +._2:\n\ + .align 2, 0\n\ +._1:\n\ + .word unk_debug_bss_1+0x1\n\ + .word sub_81018B8+1"); +} +#else void PlaySlotMachine(u8 arg0, MainCallback cb) { PlaySlotMachine_Internal(arg0, cb); SetMainCallback2(CB2_SlotMachineSetup); } +#endif + +#if DEBUG +__attribute__((naked)) +void debug_sub_811609C() +{ + asm("\ + push {lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r3, ._3\n\ + mov r2, #0x1\n\ + strb r2, [r3]\n\ + bl sub_81019B0\n\ + ldr r0, ._3 + 4\n\ + bl SetMainCallback2\n\ + pop {r0}\n\ + bx r0\n\ +._4:\n\ + .align 2, 0\n\ +._3:\n\ + .word unk_debug_bss_1+0x1\n\ + .word sub_81018B8+1"); +} +#endif static void CB2_SlotMachineSetup(void) { @@ -367,6 +418,135 @@ static void SlotMachineSetup_2_1(void) static const s16 gUnknown_083ECCF8[][2]; +#if DEBUG +__attribute__((naked)) +static void SlotMachineSetup_0_1(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + bl sub_81019EC\n\ + ldr r5, ._43\n\ + mov r4, #0x0\n\ + strb r4, [r5]\n\ + strb r4, [r5, #0x2]\n\ + bl Random\n\ + mov r1, #0x1\n\ + and r1, r1, r0\n\ + strb r1, [r5, #0x3]\n\ + strb r4, [r5, #0x4]\n\ + mov r0, #0x0\n\ + strh r4, [r5, #0x8]\n\ + strb r0, [r5, #0xa]\n\ + strb r0, [r5, #0xb]\n\ + ldr r0, ._43 + 4\n\ + ldr r1, ._43 + 8\n\ + add r0, r0, r1\n\ + ldrh r0, [r0]\n\ + strh r0, [r5, #0xc]\n\ + strh r4, [r5, #0xe]\n\ + strh r4, [r5, #0x10]\n\ + strh r4, [r5, #0x12]\n\ + strh r4, [r5, #0x18]\n\ + mov r0, #0x8\n\ + strh r0, [r5, #0x1a]\n\ + add r1, r5, #0\n\ + add r1, r1, #0x58\n\ + mov r0, #0xf0\n\ + strh r0, [r1]\n\ + add r1, r1, #0x2\n\ + mov r0, #0xa0\n\ + strh r0, [r1]\n\ + add r0, r5, #0\n\ + add r0, r0, #0x5c\n\ + mov r1, #0x3f\n\ + strh r1, [r0]\n\ + add r0, r0, #0x2\n\ + strh r1, [r0]\n\ + bl GetCurrentMapMusic\n\ + add r1, r5, #0\n\ + add r1, r1, #0x60\n\ + strh r0, [r1]\n\ + mov r7, #0x0\n\ + add r6, r5, #0\n\ + ldr r2, ._43 + 12\n\ + mov sl, r2\n\ + mov r0, #0x1c\n\ + add r0, r0, r6\n\ + mov r9, r0\n\ +._41:\n\ + lsl r5, r7, #0x1\n\ + mov r1, #0x22\n\ + add r1, r1, r6\n\ + mov r8, r1\n\ + add r1, r5, r1\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + add r4, r6, #0\n\ + add r4, r4, #0x28\n\ + add r4, r5, r4\n\ + ldrb r0, [r6, #0x3]\n\ + lsl r0, r0, #0x1\n\ + lsl r1, r7, #0x2\n\ + add r0, r0, r1\n\ + add r0, r0, sl\n\ + mov r2, #0x0\n\ + ldsh r0, [r0, r2]\n\ + mov r1, #0x15\n\ + bl __modsi3\n\ + strh r0, [r4]\n\ + add r5, r5, r9\n\ + mov r1, #0x0\n\ + ldsh r0, [r4, r1]\n\ + lsl r1, r0, #0x1\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + mov r2, #0xfc\n\ + lsl r2, r2, #0x1\n\ + add r0, r2, #0\n\ + sub r0, r0, r1\n\ + strh r0, [r5]\n\ + mov r1, #0x0\n\ + ldsh r0, [r5, r1]\n\ + add r1, r2, #0\n\ + bl __modsi3\n\ + strh r0, [r5]\n\ + add r0, r7, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + cmp r7, #0x2\n\ + bls ._41 @cond_branch\n\ + bl debug_sub_811B5D0\n\ + ldr r0, ._43 + 16\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._42 @cond_branch\n\ + mov r1, r8\n\ + sub r1, r1, #0x22\n\ + mov r0, #0xfa\n\ + lsl r0, r0, #0x2\n\ + strh r0, [r1, #0xc]\n\ +._42:\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._44:\n\ + .align 2, 0\n\ +._43:\n\ + .word +0x2000000\n\ + .word gSaveBlock1\n\ + .word 0x494\n\ + .word gUnknown_083ECCF8\n\ + .word unk_debug_bss_1+0x1"); +} +#else static void SlotMachineSetup_0_1(void) { u8 i; @@ -398,6 +578,7 @@ static void SlotMachineSetup_0_1(void) eSlotMachine->unk1C[i] %= 0x1f8; } } +#endif static void SlotMachineSetup_3_0(void) { @@ -442,7 +623,8 @@ static void sub_8101D04(void) sub_8101D24(CreateTask(sub_8101D24, 0)); } -static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { +static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = +{ sub_8101D5C, sub_8101D8C, sub_8101DB0, @@ -471,7 +653,10 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = { sub_81023E0, sub_81023FC, sub_8102424, - sub_8102460 + sub_8102460, +#if DEBUG + debug_sub_8116E74, +#endif }; static void sub_8101D24(u8 taskId) @@ -524,6 +709,46 @@ static bool8 sub_8101DF4(struct Task *task) return FALSE; } +#if DEBUG +__attribute__((naked)) +static bool8 sub_8101E10(struct Task *task) +{ + asm("\ + push {lr}\n\ + mov r0, #0x0\n\ + bl sub_8104CAC\n\ + ldr r2, ._70\n\ + mov r0, #0x5\n\ + strb r0, [r2]\n\ + ldr r0, ._70 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._67 @cond_branch\n\ + ldr r0, ._70 + 8\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._69 @cond_branch\n\ +._67:\n\ + mov r0, #0xc\n\ + ldsh r1, [r2, r0]\n\ + ldr r0, ._70 + 12\n\ + cmp r1, r0\n\ + ble ._69 @cond_branch\n\ + mov r0, #0x17\n\ + strb r0, [r2]\n\ +._69:\n\ + mov r0, #0x1\n\ + pop {r1}\n\ + bx r1\n\ +._71:\n\ + .align 2, 0\n\ +._70:\n\ + .word +0x2000000\n\ + .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1+0x4\n\ + .word 0x270e"); +} +#else static bool8 sub_8101E10(struct Task *task) { sub_8104CAC(0); @@ -534,7 +759,205 @@ static bool8 sub_8101E10(struct Task *task) } return TRUE; } +#endif +#if DEBUG +__attribute__((naked)) +static bool8 sub_8101E3C(struct Task *task) +{ + asm("\ + push {r4, r5, lr}\n\ + ldr r0, ._77\n\ + ldrb r1, [r0]\n\ + add r3, r0, #0\n\ + ldr r5, ._77 + 4\n\ + cmp r1, #0\n\ + beq ._76 @cond_branch\n\ + ldr r2, ._77 + 8\n\ + ldrb r0, [r2]\n\ + cmp r0, #0\n\ + beq ._76 @cond_branch\n\ + ldr r4, ._77 + 12\n\ + mov r1, #0xc\n\ + ldsh r0, [r4, r1]\n\ + cmp r0, #0x3\n\ + ble ._74 @cond_branch\n\ + ldrh r1, [r5, #0x2c]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._75 @cond_branch\n\ +._74:\n\ + mov r0, #0x0\n\ + strb r0, [r2]\n\ + b ._76\n\ +._78:\n\ + .align 2, 0\n\ +._77:\n\ + .word unk_debug_bss_1+0x1\n\ + .word gMain\n\ + .word unk_debug_bss_1+0x4\n\ + .word +0x2000000\n\ +._75:\n\ + mov r0, #0x0\n\ + bl sub_8103D50\n\ + mov r0, #0x1\n\ + bl sub_8103D50\n\ + mov r0, #0x2\n\ + bl sub_8103D50\n\ + ldrh r0, [r4, #0xc]\n\ + sub r0, r0, #0x3\n\ + strh r0, [r4, #0xc]\n\ + mov r0, #0x3\n\ + strh r0, [r4, #0x12]\n\ + mov r0, #0x9\n\ + strb r0, [r4]\n\ + b ._102\n\ +._76:\n\ + ldrb r0, [r3]\n\ + cmp r0, #0\n\ + beq ._81 @cond_branch\n\ + ldrh r1, [r5, #0x2e]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._81 @cond_branch\n\ + bl debug_sub_811B620\n\ + ldr r1, ._83\n\ + mov r0, #0x1d\n\ + strb r0, [r1]\n\ + b ._102\n\ +._84:\n\ + .align 2, 0\n\ +._83:\n\ + .word +0x2000000\n\ +._81:\n\ + ldrh r1, [r5, #0x2e]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._85 @cond_branch\n\ + mov r0, #0x0\n\ + bl sub_8104AB8\n\ + ldr r1, ._87\n\ + mov r0, #0x8\n\ + strb r0, [r1]\n\ + b ._102\n\ +._88:\n\ + .align 2, 0\n\ +._87:\n\ + .word +0x2000000\n\ +._85:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._89 @cond_branch\n\ + ldr r2, ._94\n\ + mov r3, #0xc\n\ + ldsh r0, [r2, r3]\n\ + sub r0, r0, #0x3\n\ + mov r3, #0x12\n\ + ldsh r1, [r2, r3]\n\ + add r0, r0, r1\n\ + cmp r0, #0\n\ + blt ._90 @cond_branch\n\ + ldrh r4, [r2, #0x12]\n\ + add r0, r1, #0\n\ + cmp r0, #0x2\n\ + bgt ._91 @cond_branch\n\ +._92:\n\ + lsl r0, r4, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl sub_8103D50\n\ + lsl r0, r4, #0x10\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0x9\n\ + add r0, r0, r2\n\ + lsr r4, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0x2\n\ + ble ._92 @cond_branch\n\ +._91:\n\ + ldr r1, ._94\n\ + ldrh r0, [r1, #0xc]\n\ + sub r0, r0, #0x3\n\ + ldrh r3, [r1, #0x12]\n\ + add r0, r0, r3\n\ + strh r0, [r1, #0xc]\n\ + mov r0, #0x3\n\ + strh r0, [r1, #0x12]\n\ + mov r0, #0x9\n\ + strb r0, [r1]\n\ + mov r0, #0x5f\n\ + bl PlaySE\n\ + b ._102\n\ +._95:\n\ + .align 2, 0\n\ +._94:\n\ + .word +0x2000000\n\ +._90:\n\ + mov r0, #0x6\n\ + b ._96\n\ +._89:\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._98 @cond_branch\n\ + ldr r4, ._103\n\ + mov r1, #0xc\n\ + ldsh r0, [r4, r1]\n\ + cmp r0, #0\n\ + beq ._98 @cond_branch\n\ + mov r0, #0x5f\n\ + bl PlaySE\n\ + ldrb r0, [r4, #0x12]\n\ + bl sub_8103D50\n\ + ldrh r0, [r4, #0xc]\n\ + sub r0, r0, #0x1\n\ + strh r0, [r4, #0xc]\n\ + ldrh r0, [r4, #0x12]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4, #0x12]\n\ +._98:\n\ + ldr r0, ._103\n\ + mov r2, #0x12\n\ + ldsh r1, [r0, r2]\n\ + add r2, r0, #0\n\ + ldr r5, ._103 + 4\n\ + cmp r1, #0x2\n\ + bgt ._99 @cond_branch\n\ + cmp r1, #0\n\ + beq ._101 @cond_branch\n\ + ldrh r1, [r5, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._101 @cond_branch\n\ +._99:\n\ + mov r0, #0x9\n\ + strb r0, [r2]\n\ +._101:\n\ + ldrh r1, [r5, #0x2e]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._102 @cond_branch\n\ + mov r0, #0x15\n\ +._96:\n\ + strb r0, [r2]\n\ +._102:\n\ + mov r0, #0x0\n\ + pop {r4, r5}\n\ + pop {r1}\n\ + bx r1\n\ +._104:\n\ + .align 2, 0\n\ +._103:\n\ + .word +0x2000000\n\ + .word gMain"); +} +#else static bool8 sub_8101E3C(struct Task *task) { s16 i; @@ -582,6 +1005,7 @@ static bool8 sub_8101E3C(struct Task *task) } return FALSE; } +#endif static void sub_8101F2C(const u8 *str) { @@ -615,6 +1039,71 @@ static bool8 sub_8101F88(struct Task *task) return FALSE; } +#if DEBUG +__attribute__((naked)) +static bool8 sub_8101FA4(struct Task *task) +{ + asm("\ + push {r4, lr}\n\ + add r4, r0, #0\n\ + bl sub_8102484\n\ + bl sub_8104DA4\n\ + mov r0, #0x0\n\ + bl sub_8102DEC\n\ + mov r0, #0x1\n\ + bl sub_8102DEC\n\ + mov r0, #0x2\n\ + bl sub_8102DEC\n\ + mov r0, #0x0\n\ + strh r0, [r4, #0x8]\n\ + ldr r4, ._115\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._113 @cond_branch\n\ + bl sub_810430C\n\ + mov r0, #0xa\n\ + b ._114\n\ +._116:\n\ + .align 2, 0\n\ +._115:\n\ + .word +0x2000000\n\ +._113:\n\ + mov r0, #0x1\n\ + bl sub_8104CAC\n\ + mov r0, #0xb\n\ +._114:\n\ + strb r0, [r4]\n\ + ldr r4, ._119\n\ + mov r0, #0x8\n\ + strh r0, [r4, #0x1a]\n\ + ldrb r0, [r4, #0xa]\n\ + cmp r0, #0\n\ + beq ._117 @cond_branch\n\ + bl dp15_jump_random_unknown\n\ + strh r0, [r4, #0x1a]\n\ +._117:\n\ + ldr r0, ._119 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._118 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x68\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._118:\n\ + mov r0, #0x0\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ +._120:\n\ + .align 2, 0\n\ +._119:\n\ + .word +0x2000000\n\ + .word unk_debug_bss_1+0x1"); +} +#else static bool8 sub_8101FA4(struct Task *task) { sub_8102484(); @@ -640,6 +1129,7 @@ static bool8 sub_8101FA4(struct Task *task) } return FALSE; } +#endif static bool8 sub_8102008(struct Task *task) { @@ -652,6 +1142,52 @@ static bool8 sub_8102008(struct Task *task) return FALSE; } +#if DEBUG +__attribute__((naked)) +static bool8 sub_8102034(struct Task *task) +{ + asm("\ + push {r4, lr}\n\ + ldrh r1, [r0, #0x8]\n\ + add r1, r1, #0x1\n\ + strh r1, [r0, #0x8]\n\ + lsl r1, r1, #0x10\n\ + asr r1, r1, #0x10\n\ + cmp r1, #0x1d\n\ + ble ._124 @cond_branch\n\ + ldr r0, ._127\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._126 @cond_branch\n\ + ldr r0, ._127 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._126 @cond_branch\n\ + ldr r4, ._127 + 8\n\ + bl Random\n\ + mov r1, #0x1f\n\ + and r1, r1, r0\n\ + add r1, r1, #0x1\n\ + str r1, [r4]\n\ +._126:\n\ + bl sub_81024F0\n\ + ldr r1, ._127 + 12\n\ + mov r0, #0xc\n\ + strb r0, [r1]\n\ +._124:\n\ + mov r0, #0x0\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ +._128:\n\ + .align 2, 0\n\ +._127:\n\ + .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1+0x4\n\ + .word unk_debug_bss_1+0x8\n\ + .word +0x2000000"); +} +#else static bool8 sub_8102034(struct Task *task) { if (++task->data[0] >= 30) @@ -661,7 +1197,77 @@ static bool8 sub_8102034(struct Task *task) } return FALSE; } +#endif +#if DEBUG +__attribute__((naked)) +static bool8 sub_8102058(struct Task *task) +{ + asm("\ + push {r4, r5, lr}\n\ + ldr r0, ._133\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._130 @cond_branch\n\ + ldr r0, ._133 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._130 @cond_branch\n\ + ldr r5, ._133 + 8\n\ + ldr r0, [r5]\n\ + sub r0, r0, #0x1\n\ + str r0, [r5]\n\ + cmp r0, #0\n\ + bne ._135 @cond_branch\n\ + mov r0, #0x18\n\ + bl PlaySE\n\ + ldr r4, ._133 + 12\n\ + ldrb r0, [r4, #0x18]\n\ + bl sub_8102E1C\n\ + ldrb r0, [r4, #0x18]\n\ + bl sub_8103C14\n\ + bl Random\n\ + mov r1, #0x1f\n\ + and r1, r1, r0\n\ + add r1, r1, #0x1\n\ + str r1, [r5]\n\ + b ._132\n\ +._134:\n\ + .align 2, 0\n\ +._133:\n\ + .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1+0x4\n\ + .word unk_debug_bss_1+0x8\n\ + .word +0x2000000\n\ +._130:\n\ + ldr r0, ._136\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._135 @cond_branch\n\ + mov r0, #0x18\n\ + bl PlaySE\n\ + ldr r4, ._136 + 4\n\ + ldrb r0, [r4, #0x18]\n\ + bl sub_8102E1C\n\ + ldrb r0, [r4, #0x18]\n\ + bl sub_8103C14\n\ +._132:\n\ + mov r0, #0xd\n\ + strb r0, [r4]\n\ +._135:\n\ + mov r0, #0x0\n\ + pop {r4, r5}\n\ + pop {r1}\n\ + bx r1\n\ +._137:\n\ + .align 2, 0\n\ +._136:\n\ + .word gMain\n\ + .word +0x2000000"); +} +#else static bool8 sub_8102058(struct Task *task) { if (gMain.newKeys & A_BUTTON) @@ -673,7 +1279,121 @@ static bool8 sub_8102058(struct Task *task) } return FALSE; } +#endif +#if DEBUG +__attribute__((naked)) +static bool8 sub_8102090(struct Task *task) +{ + asm("\ + push {r4, lr}\n\ + ldr r4, ._146\n\ + ldrb r0, [r4, #0x18]\n\ + bl sub_8102E40\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + bne ._138 @cond_branch\n\ + ldrh r0, [r4, #0x18]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4, #0x18]\n\ + mov r1, #0xc\n\ + strb r1, [r4]\n\ + lsl r0, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0x2\n\ + ble ._161 @cond_branch\n\ + mov r0, #0xe\n\ + strb r0, [r4]\n\ + ldr r0, ._146 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x8\n\ + beq ._140 @cond_branch\n\ + cmp r0, #0x8\n\ + bgt ._141 @cond_branch\n\ + cmp r0, #0x2\n\ + beq ._142 @cond_branch\n\ + cmp r0, #0x2\n\ + bgt ._143 @cond_branch\n\ + cmp r0, #0x1\n\ + beq ._144 @cond_branch\n\ + b ._161\n\ +._147:\n\ + .align 2, 0\n\ +._146:\n\ + .word +0x2000000\n\ + .word unk_debug_bss_1\n\ +._143:\n\ + cmp r0, #0x4\n\ + beq ._148 @cond_branch\n\ + b ._161\n\ +._141:\n\ + cmp r0, #0x40\n\ + beq ._150 @cond_branch\n\ + cmp r0, #0x40\n\ + bgt ._151 @cond_branch\n\ + cmp r0, #0x10\n\ + beq ._152 @cond_branch\n\ + b ._161\n\ +._151:\n\ + cmp r0, #0x80\n\ + beq ._154 @cond_branch\n\ + b ._161\n\ +._142:\n\ + mov r0, #0x14\n\ + strh r0, [r4, #0x28]\n\ + strh r0, [r4, #0x2a]\n\ + mov r0, #0x12\n\ + b ._160\n\ +._144:\n\ + mov r0, #0x14\n\ + strh r0, [r4, #0x28]\n\ + strh r0, [r4, #0x2a]\n\ + mov r0, #0x12\n\ + b ._160\n\ +._148:\n\ + mov r0, #0x3\n\ + strh r0, [r4, #0x28]\n\ + mov r0, #0x1\n\ + strh r0, [r4, #0x2a]\n\ + mov r0, #0x2\n\ + b ._160\n\ +._140:\n\ + strh r2, [r4, #0x28]\n\ + mov r0, #0x2\n\ + strh r0, [r4, #0x2a]\n\ + mov r0, #0x3\n\ + b ._160\n\ +._152:\n\ + mov r0, #0x2\n\ + strh r0, [r4, #0x28]\n\ + mov r0, #0x5\n\ + strh r0, [r4, #0x2a]\n\ + mov r0, #0x14\n\ + b ._160\n\ +._150:\n\ + mov r0, #0x13\n\ + strh r0, [r4, #0x28]\n\ + strh r0, [r4, #0x2a]\n\ + strh r2, [r4, #0x2c]\n\ + b ._161\n\ +._154:\n\ + mov r0, #0x13\n\ + strh r0, [r4, #0x28]\n\ + strh r0, [r4, #0x2a]\n\ +._160:\n\ + strh r0, [r4, #0x2c]\n\ +._161:\n\ + mov r0, #0x1\n\ + b ._162\n\ +._138:\n\ + mov r0, #0x0\n\ +._162:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1"); +} +#else static bool8 sub_8102090(struct Task *task) { if (!sub_8102E40(eSlotMachine->unk18)) @@ -688,7 +1408,168 @@ static bool8 sub_8102090(struct Task *task) } return FALSE; } +#endif +#if DEBUG +__attribute__((naked)) +static bool8 sub_81020C8(struct Task *task) +{ + asm("\ + push {r4, lr}\n\ + ldr r4, ._165\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0xc0\n\ + and r0, r0, r1\n\ + strb r0, [r4, #0x4]\n\ + bl sub_81027A0\n\ + ldrb r0, [r4, #0xa]\n\ + cmp r0, #0\n\ + beq ._163 @cond_branch\n\ + sub r0, r0, #0x1\n\ + strb r0, [r4, #0xa]\n\ + ldrb r0, [r4, #0xb]\n\ + add r0, r0, #0x1\n\ + strb r0, [r4, #0xb]\n\ + b ._164\n\ +._166:\n\ + .align 2, 0\n\ +._165:\n\ + .word +0x2000000\n\ +._163:\n\ + bl debug_sub_811B894\n\ +._164:\n\ + ldr r4, ._171\n\ + ldrh r0, [r4, #0x8]\n\ + cmp r0, #0\n\ + beq ._167 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x6c\n\ + mov r2, #0xe\n\ + ldsh r1, [r4, r2]\n\ + bl debug_sub_811B5B4\n\ + mov r0, #0xf\n\ + strb r0, [r4]\n\ + bl sub_8102A24\n\ + bl sub_8103F70\n\ + ldrh r0, [r4, #0x10]\n\ + ldrh r1, [r4, #0xe]\n\ + sub r0, r0, r1\n\ + strh r0, [r4, #0x10]\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + bge ._168 @cond_branch\n\ + mov r0, #0x0\n\ + strh r0, [r4, #0x10]\n\ +._168:\n\ + ldrh r1, [r4, #0x8]\n\ + mov r0, #0xc0\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._169 @cond_branch\n\ + ldr r0, ._171 + 4\n\ + bl PlayFanfare\n\ + mov r0, #0x6\n\ + bl sub_8104CAC\n\ + b ._174\n\ +._172:\n\ + .align 2, 0\n\ +._171:\n\ + .word +0x2000000\n\ + .word 0x185\n\ +._169:\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._173 @cond_branch\n\ + ldr r0, ._175\n\ + bl PlayFanfare\n\ + mov r0, #0x5\n\ + bl sub_8104CAC\n\ + b ._174\n\ +._176:\n\ + .align 2, 0\n\ +._175:\n\ + .word 0x185\n\ +._173:\n\ + mov r0, #0xc3\n\ + lsl r0, r0, #0x1\n\ + bl PlayFanfare\n\ + mov r0, #0x2\n\ + bl sub_8104CAC\n\ +._174:\n\ + ldr r1, ._183\n\ + ldrh r3, [r1, #0x8]\n\ + mov r0, #0xe0\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r3\n\ + add r2, r1, #0\n\ + cmp r0, #0\n\ + beq ._179 @cond_branch\n\ + ldrb r1, [r2, #0x4]\n\ + mov r0, #0x3f\n\ + and r0, r0, r1\n\ + mov r1, #0x0\n\ + strb r0, [r2, #0x4]\n\ + mov r0, #0xc0\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r3\n\ + cmp r0, #0\n\ + beq ._179 @cond_branch\n\ + strb r1, [r2, #0xa]\n\ + strb r1, [r2, #0xb]\n\ + strb r1, [r2, #0x3]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r3\n\ + cmp r0, #0\n\ + beq ._179 @cond_branch\n\ + mov r0, #0x1\n\ + strb r0, [r2, #0x3]\n\ +._179:\n\ + ldrh r1, [r2, #0x8]\n\ + mov r0, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._185 @cond_branch\n\ + ldrb r0, [r2, #0x2]\n\ + cmp r0, #0xf\n\ + bhi ._185 @cond_branch\n\ + add r0, r0, #0x1\n\ + strb r0, [r2, #0x2]\n\ + ldrb r0, [r2, #0x2]\n\ + bl sub_8104064\n\ + b ._185\n\ +._184:\n\ + .align 2, 0\n\ +._183:\n\ + .word +0x2000000\n\ +._167:\n\ + mov r0, #0x3\n\ + bl sub_8104CAC\n\ + mov r0, #0x14\n\ + strb r0, [r4]\n\ + ldrh r0, [r4, #0x12]\n\ + ldrh r1, [r4, #0x10]\n\ + add r0, r0, r1\n\ + strh r0, [r4, #0x10]\n\ + lsl r0, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + ldr r1, ._186\n\ + cmp r0, r1\n\ + ble ._185 @cond_branch\n\ + strh r1, [r4, #0x10]\n\ +._185:\n\ + mov r0, #0x0\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ +._187:\n\ + .align 2, 0\n\ +._186:\n\ + .word 0x270f"); +} +#else static bool8 sub_81020C8(struct Task *task) { eSlotMachine->unk04 &= 0xc0; @@ -753,6 +1634,7 @@ static bool8 sub_81020C8(struct Task *task) } return FALSE; } +#endif static bool8 sub_81021E0(struct Task *task) { @@ -903,6 +1785,48 @@ static bool8 sub_81023FC(struct Task *task) return FALSE; } +#if DEBUG +__attribute__((naked)) +static bool8 sub_8102424(struct Task *task) +{ + asm("\ + push {lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._234\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._233 @cond_branch\n\ + ldr r0, ._234 + 4\n\ + ldr r1, ._234 + 8\n\ + ldrh r1, [r1, #0xc]\n\ + ldr r2, ._234 + 12\n\ + add r0, r0, r2\n\ + strh r1, [r0]\n\ +._233:\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + ldr r1, ._234 + 8\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + mov r0, #0x0\n\ + add sp, sp, #0x4\n\ + pop {r1}\n\ + bx r1\n\ +._235:\n\ + .align 2, 0\n\ +._234:\n\ + .word unk_debug_bss_1+0x1\n\ + .word gSaveBlock1\n\ + .word +0x2000000\n\ + .word 0x494"); +} +#else static bool8 sub_8102424(struct Task *task) { gSaveBlock1.coins = eSlotMachine->coins; @@ -910,6 +1834,7 @@ static bool8 sub_8102424(struct Task *task) eSlotMachine->state++; return FALSE; } +#endif static bool8 sub_8102460(struct Task *task) { @@ -920,6 +1845,272 @@ static bool8 sub_8102460(struct Task *task) return FALSE; } +#if DEBUG +__attribute__((naked)) +static bool8 debug_sub_8116E74(struct Task *task) +{ + asm("\ + push {lr}\n\ + bl debug_sub_811B634\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._239 @cond_branch\n\ + ldr r1, ._240\n\ + mov r0, #0x5\n\ + strb r0, [r1]\n\ +._239:\n\ + mov r0, #0x0\n\ + pop {r1}\n\ + bx r1\n\ +._241:\n\ + .align 2, 0\n\ +._240:\n\ + .word +0x2000000"); +} +#endif + +#if DEBUG +__attribute__((naked)) +static void sub_8102484(void) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + ldr r0, ._256\n\ + ldrb r2, [r0, #0xa]\n\ + add r4, r0, #0\n\ + cmp r2, #0\n\ + beq ._242 @cond_branch\n\ + b ._270\n\ +._242:\n\ + ldr r0, ._256 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._245 @cond_branch\n\ + ldr r3, ._256 + 8\n\ + ldrb r0, [r3]\n\ + cmp r0, #0\n\ + beq ._245 @cond_branch\n\ + ldr r0, ._256 + 12\n\ + ldrb r1, [r0]\n\ + strb r1, [r4, #0x4]\n\ + strb r2, [r3]\n\ + strb r2, [r0]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._246 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x88\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._246:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._247 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x84\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._247:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._248 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x8c\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._248:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._249 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x80\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._249:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._250 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x7c\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._250:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._251 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x78\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._251:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._252 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x74\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._252:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._253 @cond_branch\n\ + b ._270\n\ +._253:\n\ + add r0, r4, #0\n\ + add r0, r0, #0x70\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ + b ._270\n\ +._257:\n\ + .align 2, 0\n\ +._256:\n\ + .word +0x2000000\n\ + .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1+0x2\n\ + .word unk_debug_bss_1+0x3\n\ +._245:\n\ + add r5, r4, #0\n\ + ldrb r1, [r5, #0x4]\n\ + mov r0, #0xc0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._270 @cond_branch\n\ + bl sub_8102540\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._260 @cond_branch\n\ + bl sub_8102578\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + cmp r6, #0x3\n\ + beq ._260 @cond_branch\n\ + ldr r1, ._271\n\ + lsl r0, r6, #0x1\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + ldrb r0, [r5, #0x4]\n\ + orr r0, r0, r1\n\ + strb r0, [r5, #0x4]\n\ + mov r1, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._261 @cond_branch\n\ + add r0, r5, #0\n\ + add r0, r0, #0x88\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._261:\n\ + ldrb r1, [r5, #0x4]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._262 @cond_branch\n\ + add r0, r5, #0\n\ + add r0, r0, #0x84\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._262:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._263 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x8c\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._263:\n\ + cmp r6, #0x1\n\ + bne ._270 @cond_branch\n\ +._260:\n\ + bl sub_81025BC\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + cmp r6, #0x5\n\ + beq ._270 @cond_branch\n\ + ldr r4, ._271 + 4\n\ + ldr r1, ._271 + 8\n\ + lsl r0, r6, #0x1\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + ldrb r0, [r4, #0x4]\n\ + orr r0, r0, r1\n\ + strb r0, [r4, #0x4]\n\ + mov r1, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._266 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x80\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._266:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._267 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x7c\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._267:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._268 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x78\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._268:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._269 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x74\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._269:\n\ + ldrb r1, [r4, #0x4]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._270 @cond_branch\n\ + add r0, r4, #0\n\ + add r0, r0, #0x70\n\ + mov r1, #0x1\n\ + bl debug_sub_811B5B4\n\ +._270:\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._272:\n\ + .align 2, 0\n\ +._271:\n\ + .word gUnknown_083ECE42\n\ + .word +0x2000000\n\ + .word gUnknown_083ECE48"); +} +#else static void sub_8102484(void) { u8 r3; @@ -945,6 +2136,7 @@ static void sub_8102484(void) } } } +#endif static void sub_81024F0(void) { @@ -3993,12 +5185,12 @@ __attribute__((naked)) void debug_sub_811B1C4() { asm( - " ldr r1, ._1\n" + " ldr r1, .__1_\n" " ldrb r0, [r1]\n" " mov r3, #0x2\n" " orr r0, r0, r3\n" " strb r0, [r1]\n" - " ldr r2, ._1 + 4\n" + " ldr r2, .__1_ + 4\n" " ldrb r1, [r2]\n" " mov r0, #0x2\n" " eor r1, r1, r0\n" @@ -4008,9 +5200,9 @@ void debug_sub_811B1C4() " and r0, r0, r3\n" " strb r0, [r2]\n" " bx lr\n" - "._2:\n" + ".__2_:\n" " .align 2, 0\n" - "._1:\n" + ".__1_:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4021,12 +5213,12 @@ __attribute__((naked)) void debug_sub_811B1EC() { asm( - " ldr r2, ._3\n" + " ldr r2, .__3\n" " ldrb r0, [r2]\n" " mov r1, #0x1\n" " orr r0, r0, r1\n" " strb r0, [r2]\n" - " ldr r2, ._3 + 4\n" + " ldr r2, .__3 + 4\n" " ldrb r0, [r2]\n" " mov r1, #0x1\n" " eor r0, r0, r1\n" @@ -4034,9 +5226,9 @@ void debug_sub_811B1EC() " lsr r0, r0, #0x1f\n" " strb r0, [r2]\n" " bx lr\n" - "._4:\n" + ".__4:\n" " .align 2, 0\n" - "._3:\n" + ".__3:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4047,12 +5239,12 @@ __attribute__((naked)) void debug_sub_811B210() { asm( - " ldr r1, ._5\n" + " ldr r1, .__5\n" " ldrb r0, [r1]\n" " mov r3, #0x4\n" " orr r0, r0, r3\n" " strb r0, [r1]\n" - " ldr r2, ._5 + 4\n" + " ldr r2, .__5 + 4\n" " ldrb r1, [r2]\n" " mov r0, #0x4\n" " eor r1, r1, r0\n" @@ -4062,9 +5254,9 @@ void debug_sub_811B210() " and r0, r0, r3\n" " strb r0, [r2]\n" " bx lr\n" - "._6:\n" + ".__6:\n" " .align 2, 0\n" - "._5:\n" + ".__5:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4075,12 +5267,12 @@ __attribute__((naked)) void debug_sub_811B238() { asm( - " ldr r1, ._7\n" + " ldr r1, .__7\n" " ldrb r0, [r1]\n" " mov r3, #0x8\n" " orr r0, r0, r3\n" " strb r0, [r1]\n" - " ldr r2, ._7 + 4\n" + " ldr r2, .__7 + 4\n" " ldrb r1, [r2]\n" " mov r0, #0x8\n" " eor r1, r1, r0\n" @@ -4090,9 +5282,9 @@ void debug_sub_811B238() " and r0, r0, r3\n" " strb r0, [r2]\n" " bx lr\n" - "._8:\n" + ".__8:\n" " .align 2, 0\n" - "._7:\n" + ".__7:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4103,12 +5295,12 @@ __attribute__((naked)) void debug_sub_811B260() { asm( - " ldr r1, ._9\n" + " ldr r1, .__9\n" " ldrb r0, [r1]\n" " mov r3, #0x10\n" " orr r0, r0, r3\n" " strb r0, [r1]\n" - " ldr r2, ._9 + 4\n" + " ldr r2, .__9 + 4\n" " ldrb r1, [r2]\n" " mov r0, #0x10\n" " eor r1, r1, r0\n" @@ -4118,9 +5310,9 @@ void debug_sub_811B260() " and r0, r0, r3\n" " strb r0, [r2]\n" " bx lr\n" - "._10:\n" + ".__10:\n" " .align 2, 0\n" - "._9:\n" + ".__9:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4131,12 +5323,12 @@ __attribute__((naked)) void debug_sub_811B288() { asm( - " ldr r1, ._11\n" + " ldr r1, .__11\n" " ldrb r0, [r1]\n" " mov r3, #0x40\n" " orr r0, r0, r3\n" " strb r0, [r1]\n" - " ldr r2, ._11 + 4\n" + " ldr r2, .__11 + 4\n" " ldrb r1, [r2]\n" " mov r0, #0x40\n" " eor r1, r1, r0\n" @@ -4146,9 +5338,9 @@ void debug_sub_811B288() " and r0, r0, r3\n" " strb r0, [r2]\n" " bx lr\n" - "._12:\n" + ".__12:\n" " .align 2, 0\n" - "._11:\n" + ".__11:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4159,12 +5351,12 @@ __attribute__((naked)) void debug_sub_811B2B0() { asm( - " ldr r1, ._13\n" + " ldr r1, .__13\n" " ldrb r0, [r1]\n" " mov r3, #0x80\n" " orr r0, r0, r3\n" " strb r0, [r1]\n" - " ldr r2, ._13 + 4\n" + " ldr r2, .__13 + 4\n" " ldrb r1, [r2]\n" " mov r0, #0x80\n" " eor r1, r1, r0\n" @@ -4174,9 +5366,9 @@ void debug_sub_811B2B0() " and r0, r0, r3\n" " strb r0, [r2]\n" " bx lr\n" - "._14:\n" + ".__14:\n" " .align 2, 0\n" - "._13:\n" + ".__13:\n" " .word unk_debug_bss_1+0x3\n" " .word unk_debug_bss_1\n" "\n" @@ -4187,15 +5379,15 @@ __attribute__((naked)) void debug_sub_811B2D8() { asm( - " ldr r0, ._15\n" + " ldr r0, .__15\n" " ldrb r1, [r0]\n" " mov r2, #0x20\n" " orr r1, r1, r2\n" " strb r1, [r0]\n" " bx lr\n" - "._16:\n" + ".__16:\n" " .align 2, 0\n" - "._15:\n" + ".__15:\n" " .word unk_debug_bss_1+0x3\n" "\n" ); @@ -4207,7 +5399,7 @@ void debug_sub_811B2E8() asm( " push {lr}\n" " add sp, sp, #0xfffffffc\n" - " ldr r0, ._17\n" + " ldr r0, .__17\n" " ldrb r1, [r0, #0x1]\n" " add r1, r1, #0x1\n" " mov r0, sp\n" @@ -4221,9 +5413,9 @@ void debug_sub_811B2E8() " add sp, sp, #0x4\n" " pop {r0}\n" " bx r0\n" - "._18:\n" + ".__18:\n" " .align 2, 0\n" - "._17:\n" + ".__17:\n" " .word +0x2000000\n" "\n" ); @@ -4235,90 +5427,90 @@ void debug_sub_811B310() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffff8\n" - " ldr r0, ._21\n" + " ldr r0, .__21\n" " mov r1, #0x1\n" " mov r2, #0x1\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 4\n" + " ldr r0, .__21 + 4\n" " mov r1, #0x1\n" " mov r2, #0x3\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 8\n" + " ldr r0, .__21 + 8\n" " mov r1, #0x1\n" " mov r2, #0x5\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 12\n" + " ldr r0, .__21 + 12\n" " mov r1, #0x1\n" " mov r2, #0x7\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 16\n" + " ldr r0, .__21 + 16\n" " mov r1, #0x1\n" " mov r2, #0x9\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 20\n" + " ldr r0, .__21 + 20\n" " mov r1, #0x1\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 24\n" + " ldr r0, .__21 + 24\n" " mov r1, #0x1\n" " mov r2, #0xd\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 28\n" + " ldr r0, .__21 + 28\n" " mov r1, #0x1\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 32\n" + " ldr r0, .__21 + 32\n" " mov r1, #0x1\n" " mov r2, #0x11\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 36\n" + " ldr r0, .__21 + 36\n" " mov r1, #0xf\n" " mov r2, #0x1\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 40\n" + " ldr r0, .__21 + 40\n" " mov r1, #0xf\n" " mov r2, #0x3\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 44\n" + " ldr r0, .__21 + 44\n" " mov r1, #0xf\n" " mov r2, #0x5\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 48\n" + " ldr r0, .__21 + 48\n" " mov r1, #0xf\n" " mov r2, #0x7\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 52\n" + " ldr r0, .__21 + 52\n" " mov r1, #0xf\n" " mov r2, #0x9\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 56\n" + " ldr r0, .__21 + 56\n" " mov r1, #0xf\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 60\n" + " ldr r0, .__21 + 60\n" " mov r1, #0xf\n" " mov r2, #0xd\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 64\n" + " ldr r0, .__21 + 64\n" " mov r1, #0xf\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 68\n" + " ldr r0, .__21 + 68\n" " mov r1, #0xf\n" " mov r2, #0x11\n" " bl Menu_PrintText\n" - " ldr r0, ._21 + 72\n" + " ldr r0, .__21 + 72\n" " ldrb r0, [r0, #0x3]\n" " cmp r0, #0\n" - " bne ._19 @cond_branch\n" - " ldr r0, ._21 + 76\n" + " bne .__19 @cond_branch\n" + " ldr r0, .__21 + 76\n" " mov r1, #0xa\n" " mov r2, #0x9\n" " bl Menu_PrintText\n" - " b ._20\n" - "._22:\n" + " b .__20\n" + ".__22:\n" " .align 2, 0\n" - "._21:\n" + ".__21:\n" " .word Str_841B1C4\n" " .word Str_841B1CB\n" " .word Str_841B1D4\n" @@ -4339,13 +5531,13 @@ void debug_sub_811B310() " .word Str_841B243\n" " .word +0x2000000\n" " .word Str_841B246\n" - "._19:\n" - " ldr r0, ._30\n" + ".__19:\n" + " ldr r0, .__30\n" " mov r1, #0xa\n" " mov r2, #0x9\n" " bl Menu_PrintText\n" - "._20:\n" - " ldr r4, ._30 + 4\n" + ".__20:\n" + " ldr r4, .__30 + 4\n" " ldr r1, [r4, #0x68]\n" " mov r0, sp\n" " mov r2, #0x2\n" @@ -4454,77 +5646,77 @@ void debug_sub_811B310() " mov r1, #0x14\n" " mov r2, #0x11\n" " bl Menu_PrintText\n" - " ldr r1, ._30 + 8\n" + " ldr r1, .__30 + 8\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" - " beq ._23 @cond_branch\n" + " beq .__23 @cond_branch\n" " mov r2, #0x0\n" " cmp r0, #0x8\n" - " beq ._24 @cond_branch\n" + " beq .__24 @cond_branch\n" " cmp r0, #0x8\n" - " bgt ._25 @cond_branch\n" + " bgt .__25 @cond_branch\n" " cmp r0, #0x2\n" - " beq ._26 @cond_branch\n" + " beq .__26 @cond_branch\n" " cmp r0, #0x2\n" - " bgt ._27 @cond_branch\n" + " bgt .__27 @cond_branch\n" " cmp r0, #0x1\n" - " beq ._28 @cond_branch\n" - " b ._45\n" - "._31:\n" + " beq .__28 @cond_branch\n" + " b .__45\n" + ".__31:\n" " .align 2, 0\n" - "._30:\n" + ".__30:\n" " .word Str_841B249\n" " .word +0x2000000\n" " .word unk_debug_bss_1\n" - "._27:\n" + ".__27:\n" " cmp r0, #0x4\n" - " beq ._32 @cond_branch\n" - " b ._45\n" - "._25:\n" + " beq .__32 @cond_branch\n" + " b .__45\n" + ".__25:\n" " cmp r0, #0x40\n" - " beq ._34 @cond_branch\n" + " beq .__34 @cond_branch\n" " cmp r0, #0x40\n" - " bgt ._35 @cond_branch\n" + " bgt .__35 @cond_branch\n" " cmp r0, #0x10\n" - " beq ._36 @cond_branch\n" - " b ._45\n" - "._35:\n" + " beq .__36 @cond_branch\n" + " b .__45\n" + ".__35:\n" " cmp r0, #0x80\n" - " beq ._38 @cond_branch\n" - " b ._45\n" - "._26:\n" + " beq .__38 @cond_branch\n" + " b .__45\n" + ".__26:\n" " mov r2, #0x3\n" - " b ._45\n" - "._28:\n" + " b .__45\n" + ".__28:\n" " mov r2, #0x5\n" - " b ._45\n" - "._32:\n" + " b .__45\n" + ".__32:\n" " mov r2, #0x7\n" - " b ._45\n" - "._24:\n" + " b .__45\n" + ".__24:\n" " mov r2, #0x9\n" - " b ._45\n" - "._36:\n" + " b .__45\n" + ".__36:\n" " mov r2, #0xb\n" - " b ._45\n" - "._34:\n" + " b .__45\n" + ".__34:\n" " mov r2, #0xd\n" - " b ._45\n" - "._38:\n" + " b .__45\n" + ".__38:\n" " mov r2, #0xf\n" - "._45:\n" - " ldr r0, ._46\n" + ".__45:\n" + " ldr r0, .__46\n" " mov r1, #0x17\n" " bl Menu_PrintText\n" - "._23:\n" + ".__23:\n" " bl debug_sub_811B2E8\n" " add sp, sp, #0x8\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" - "._47:\n" + ".__47:\n" " .align 2, 0\n" - "._46:\n" + ".__46:\n" " .word Str_841B26D\n" "\n" ); @@ -4539,16 +5731,16 @@ void debug_sub_811B5B4() " ldr r0, [r2]\n" " add r0, r0, r1\n" " str r0, [r2]\n" - " ldr r1, ._49\n" + " ldr r1, .__49\n" " cmp r0, r1\n" - " ble ._48 @cond_branch\n" + " ble .__48 @cond_branch\n" " str r1, [r2]\n" - "._48:\n" + ".__48:\n" " pop {r0}\n" " bx r0\n" - "._50:\n" + ".__50:\n" " .align 2, 0\n" - "._49:\n" + ".__49:\n" " .word 0x270f\n" "\n" ); @@ -4558,16 +5750,16 @@ __attribute__((naked)) void debug_sub_811B5D0() { asm( - " ldr r0, ._51\n" + " ldr r0, .__51\n" " mov r1, #0x0\n" " strb r1, [r0]\n" - " ldr r0, ._51 + 4\n" + " ldr r0, .__51 + 4\n" " strb r1, [r0]\n" - " ldr r0, ._51 + 8\n" + " ldr r0, .__51 + 8\n" " strb r1, [r0]\n" - " ldr r0, ._51 + 12\n" + " ldr r0, .__51 + 12\n" " strb r1, [r0]\n" - " ldr r2, ._51 + 16\n" + " ldr r2, .__51 + 16\n" " mov r0, #0x0\n" " str r0, [r2, #0x68]\n" " str r0, [r2, #0x6c]\n" @@ -4587,9 +5779,9 @@ void debug_sub_811B5D0() " add r1, r1, #0x4\n" " str r0, [r1]\n" " bx lr\n" - "._52:\n" + ".__52:\n" " .align 2, 0\n" - "._51:\n" + ".__51:\n" " .word unk_debug_bss_1\n" " .word unk_debug_bss_1+0x2\n" " .word unk_debug_bss_1+0x3\n" @@ -4604,14 +5796,14 @@ void debug_sub_811B620() { asm( " push {lr}\n" - " ldr r0, ._53\n" + " ldr r0, .__53\n" " mov r1, #0x0\n" " bl CreateTask\n" " pop {r0}\n" " bx r0\n" - "._54:\n" + ".__54:\n" " .align 2, 0\n" - "._53:\n" + ".__53:\n" " .word debug_sub_811B654+1\n" "\n" ); @@ -4622,21 +5814,21 @@ void debug_sub_811B634() { asm( " push {lr}\n" - " ldr r0, ._57\n" + " ldr r0, .__57\n" " bl FindTaskIdByFunc\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r0, #0xff\n" - " beq ._55 @cond_branch\n" + " beq .__55 @cond_branch\n" " mov r0, #0x0\n" - " b ._56\n" - "._58:\n" + " b .__56\n" + ".__58:\n" " .align 2, 0\n" - "._57:\n" + ".__57:\n" " .word debug_sub_811B654+1\n" - "._55:\n" + ".__55:\n" " mov r0, #0x1\n" - "._56:\n" + ".__56:\n" " pop {r1}\n" " bx r1\n" "\n" @@ -4654,32 +5846,32 @@ void debug_sub_811B654() " lsl r0, r6, #0x2\n" " add r0, r0, r6\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._63\n" + " ldr r1, .__63\n" " add r5, r0, r1\n" " mov r0, #0x8\n" " ldsh r1, [r5, r0]\n" " cmp r1, #0x1\n" - " beq ._59 @cond_branch\n" + " beq .__59 @cond_branch\n" " cmp r1, #0x1\n" - " bgt ._60 @cond_branch\n" + " bgt .__60 @cond_branch\n" " cmp r1, #0\n" - " beq ._61 @cond_branch\n" - " b ._116\n" - "._64:\n" + " beq .__61 @cond_branch\n" + " b .__116\n" + ".__64:\n" " .align 2, 0\n" - "._63:\n" + ".__63:\n" " .word gTasks\n" - "._60:\n" + ".__60:\n" " cmp r1, #0x2\n" - " bne ._65 @cond_branch\n" - " b ._66\n" - "._65:\n" + " bne .__65 @cond_branch\n" + " b .__66\n" + ".__65:\n" " cmp r1, #0x3\n" - " bne ._67 @cond_branch\n" - " b ._68\n" - "._67:\n" - " b ._116\n" - "._61:\n" + " bne .__67 @cond_branch\n" + " b .__68\n" + ".__67:\n" + " b .__116\n" + ".__61:\n" " mov r0, #0x0\n" " mov r1, #0x0\n" " mov r2, #0x18\n" @@ -4689,64 +5881,64 @@ void debug_sub_811B654() " ldrh r0, [r5, #0x8]\n" " add r0, r0, #0x1\n" " strh r0, [r5, #0x8]\n" - " b ._116\n" - "._59:\n" - " ldr r7, ._76\n" + " b .__116\n" + ".__59:\n" + " ldr r7, .__76\n" " ldrh r2, [r7, #0x2e]\n" " mov r0, #0x2\n" " and r0, r0, r2\n" " cmp r0, #0\n" - " beq ._71 @cond_branch\n" - " b ._94\n" - "._71:\n" + " beq .__71 @cond_branch\n" + " b .__94\n" + ".__71:\n" " mov r0, #0x20\n" " and r0, r0, r2\n" " lsl r0, r0, #0x10\n" " lsr r3, r0, #0x10\n" " cmp r3, #0\n" - " beq ._73 @cond_branch\n" - " ldr r1, ._76 + 4\n" + " beq .__73 @cond_branch\n" + " ldr r1, .__76 + 4\n" " ldrb r0, [r1, #0x1]\n" " sub r0, r0, #0x1\n" " strb r0, [r1, #0x1]\n" " lsl r0, r0, #0x18\n" " cmp r0, #0\n" - " bge ._79 @cond_branch\n" + " bge .__79 @cond_branch\n" " mov r0, #0x5\n" " strb r0, [r1, #0x1]\n" - " b ._79\n" - "._77:\n" + " b .__79\n" + ".__77:\n" " .align 2, 0\n" - "._76:\n" + ".__76:\n" " .word gMain\n" " .word +0x2000000\n" - "._73:\n" + ".__73:\n" " mov r0, #0x10\n" " and r0, r0, r2\n" " cmp r0, #0\n" - " beq ._78 @cond_branch\n" - " ldr r1, ._81\n" + " beq .__78 @cond_branch\n" + " ldr r1, .__81\n" " ldrb r0, [r1, #0x1]\n" " add r0, r0, #0x1\n" " strb r0, [r1, #0x1]\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r0, #0x5\n" - " bls ._79 @cond_branch\n" + " bls .__79 @cond_branch\n" " strb r3, [r1, #0x1]\n" - "._79:\n" + ".__79:\n" " bl debug_sub_811B2E8\n" - " b ._116\n" - "._82:\n" + " b .__116\n" + ".__82:\n" " .align 2, 0\n" - "._81:\n" + ".__81:\n" " .word +0x2000000\n" - "._78:\n" + ".__78:\n" " and r1, r1, r2\n" " lsl r0, r1, #0x10\n" " lsr r4, r0, #0x10\n" " cmp r4, #0\n" - " beq ._83 @cond_branch\n" + " beq .__83 @cond_branch\n" " mov r0, #0x3\n" " strh r0, [r5, #0x8]\n" " bl Menu_EraseScreen\n" @@ -4755,28 +5947,28 @@ void debug_sub_811B654() " mov r2, #0x9\n" " mov r3, #0x5\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._85\n" + " ldr r0, .__85\n" " mov r1, #0x1\n" " mov r2, #0x1\n" " bl Menu_PrintText\n" - " ldr r0, ._85 + 4\n" + " ldr r0, .__85 + 4\n" " mov r1, #0x1\n" " mov r2, #0x3\n" " bl Menu_PrintText\n" - " b ._116\n" - "._86:\n" + " b .__116\n" + ".__86:\n" " .align 2, 0\n" - "._85:\n" + ".__85:\n" " .word Str_841B25C\n" " .word Str_841B264\n" - "._83:\n" + ".__83:\n" " mov r0, #0x4\n" " and r0, r0, r2\n" " cmp r0, #0\n" - " beq ._87 @cond_branch\n" - " ldr r0, ._91\n" + " beq .__87 @cond_branch\n" + " ldr r0, .__91\n" " strb r4, [r0]\n" - " ldr r0, ._91 + 4\n" + " ldr r0, .__91 + 4\n" " strb r4, [r0]\n" " bl Menu_EraseScreen\n" " mov r0, #0x0\n" @@ -4784,11 +5976,11 @@ void debug_sub_811B654() " mov r2, #0xa\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._91 + 8\n" + " ldr r0, .__91 + 8\n" " mov r1, #0x1\n" " mov r2, #0x1\n" " bl Menu_PrintText\n" - " ldr r3, ._91 + 12\n" + " ldr r3, .__91 + 12\n" " mov r0, #0x2\n" " mov r1, #0x3\n" " mov r2, #0x8\n" @@ -4804,144 +5996,144 @@ void debug_sub_811B654() " ldrh r0, [r5, #0x8]\n" " add r0, r0, #0x1\n" " strh r0, [r5, #0x8]\n" - "._87:\n" + ".__87:\n" " ldrh r1, [r7, #0x2e]\n" " mov r0, #0x8\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " bne ._88 @cond_branch\n" - " b ._116\n" - "._88:\n" - " ldr r1, ._91 + 16\n" + " bne .__88 @cond_branch\n" + " b .__116\n" + ".__88:\n" + " ldr r1, .__91 + 16\n" " mov r0, #0x1\n" " strb r0, [r1]\n" - " b ._94\n" - "._92:\n" + " b .__94\n" + ".__92:\n" " .align 2, 0\n" - "._91:\n" + ".__91:\n" " .word unk_debug_bss_1+0x2\n" " .word unk_debug_bss_1+0x3\n" " .word Str_841B254\n" " .word _841B270\n" " .word unk_debug_bss_1+0x4\n" - "._66:\n" + ".__66:\n" " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" " asr r2, r0, #0x18\n" " mov r0, #0x2\n" " neg r0, r0\n" " cmp r2, r0\n" - " beq ._116 @cond_branch\n" + " beq .__116 @cond_branch\n" " add r0, r0, #0x1\n" " cmp r2, r0\n" - " beq ._94 @cond_branch\n" - " ldr r1, ._96\n" + " beq .__94 @cond_branch\n" + " ldr r1, .__96\n" " mov r0, #0x1\n" " strb r0, [r1]\n" - " ldr r0, ._96 + 4\n" + " ldr r0, .__96 + 4\n" " lsl r1, r2, #0x3\n" " add r0, r0, #0x4\n" " add r1, r1, r0\n" " ldr r0, [r1]\n" " bl _call_via_r0\n" - "._94:\n" + ".__94:\n" " bl Menu_EraseScreen\n" " add r0, r6, #0\n" " bl DestroyTask\n" - " b ._116\n" - "._97:\n" + " b .__116\n" + ".__97:\n" " .align 2, 0\n" - "._96:\n" + ".__96:\n" " .word unk_debug_bss_1+0x2\n" " .word _841B270\n" - "._68:\n" - " ldr r2, ._100\n" + ".__68:\n" + " ldr r2, .__100\n" " ldrh r1, [r2, #0x30]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._98 @cond_branch\n" - " ldr r2, ._100 + 4\n" + " beq .__98 @cond_branch\n" + " ldr r2, .__100 + 4\n" " ldrh r0, [r2, #0xc]\n" " add r0, r0, #0x64\n" - " b ._99\n" - "._101:\n" + " b .__99\n" + ".__101:\n" " .align 2, 0\n" - "._100:\n" + ".__100:\n" " .word gMain\n" " .word +0x2000000\n" - "._98:\n" + ".__98:\n" " mov r0, #0x40\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._102 @cond_branch\n" - " ldr r1, ._104\n" + " beq .__102 @cond_branch\n" + " ldr r1, .__104\n" " ldrh r0, [r1, #0xc]\n" " sub r0, r0, #0x64\n" - " b ._103\n" - "._105:\n" + " b .__103\n" + ".__105:\n" " .align 2, 0\n" - "._104:\n" + ".__104:\n" " .word +0x2000000\n" - "._102:\n" + ".__102:\n" " mov r0, #0x20\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._106 @cond_branch\n" - " ldr r1, ._109\n" - " ldr r2, ._109 + 4\n" + " beq .__106 @cond_branch\n" + " ldr r1, .__109\n" + " ldr r2, .__109 + 4\n" " add r0, r2, #0\n" " ldrh r2, [r1, #0xc]\n" " add r0, r0, r2\n" - "._103:\n" + ".__103:\n" " strh r0, [r1, #0xc]\n" " lsl r0, r0, #0x10\n" " cmp r0, #0\n" - " bgt ._116 @cond_branch\n" - " ldr r0, ._109 + 8\n" + " bgt .__116 @cond_branch\n" + " ldr r0, .__109 + 8\n" " strh r0, [r1, #0xc]\n" - " b ._116\n" - "._110:\n" + " b .__116\n" + ".__110:\n" " .align 2, 0\n" - "._109:\n" + ".__109:\n" " .word +0x2000000\n" " .word 0xfffffc18\n" " .word 0x270f\n" - "._106:\n" + ".__106:\n" " mov r0, #0x10\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._111 @cond_branch\n" - " ldr r2, ._114\n" + " beq .__111 @cond_branch\n" + " ldr r2, .__114\n" " mov r1, #0xfa\n" " lsl r1, r1, #0x2\n" " add r0, r1, #0\n" " ldrh r1, [r2, #0xc]\n" " add r0, r0, r1\n" - "._99:\n" + ".__99:\n" " strh r0, [r2, #0xc]\n" " lsl r0, r0, #0x10\n" " asr r0, r0, #0x10\n" - " ldr r1, ._114 + 4\n" + " ldr r1, .__114 + 4\n" " cmp r0, r1\n" - " ble ._116 @cond_branch\n" + " ble .__116 @cond_branch\n" " strh r1, [r2, #0xc]\n" - " b ._116\n" - "._115:\n" + " b .__116\n" + ".__115:\n" " .align 2, 0\n" - "._114:\n" + ".__114:\n" " .word +0x2000000\n" " .word 0x270f\n" - "._111:\n" + ".__111:\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x2\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._116 @cond_branch\n" + " beq .__116 @cond_branch\n" " bl Menu_EraseScreen\n" " add r0, r6, #0\n" " bl DestroyTask\n" - "._116:\n" + ".__116:\n" " add sp, sp, #0x8\n" " pop {r4, r5, r6, r7}\n" " pop {r0}\n" @@ -4960,232 +6152,232 @@ void debug_sub_811B894() " mov r5, r8\n" " push {r5, r6, r7}\n" " add sp, sp, #0xfffffffc\n" - " ldr r1, ._122\n" + " ldr r1, .__122\n" " ldrh r2, [r1, #0x8]\n" " mov r0, #0xc0\n" " lsl r0, r0, #0x1\n" " and r0, r0, r2\n" " add r4, r1, #0\n" " cmp r0, #0\n" - " beq ._117 @cond_branch\n" + " beq .__117 @cond_branch\n" " add r1, r1, #0x90\n" " ldr r0, [r1]\n" " add r0, r0, #0x1\n" " str r0, [r1]\n" - " ldr r2, ._122 + 4\n" + " ldr r2, .__122 + 4\n" " cmp r0, r2\n" - " ble ._118 @cond_branch\n" + " ble .__118 @cond_branch\n" " str r2, [r1]\n" - "._118:\n" + ".__118:\n" " add r0, r4, #0\n" " add r0, r0, #0x88\n" " ldr r1, [r1]\n" " ldr r0, [r0]\n" " cmp r1, r0\n" - " beq ._119 @cond_branch\n" - " ldr r0, ._122 + 8\n" + " beq .__119 @cond_branch\n" + " ldr r0, .__122 + 8\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" - " ldr r1, ._122 + 12\n" + " ldr r1, .__122 + 12\n" " mov r0, #0x0\n" " strb r0, [r1]\n" - "._119:\n" + ".__119:\n" " ldrb r1, [r4, #0x4]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" " cmp r4, #0\n" - " bne ._126 @cond_branch\n" - " ldr r0, ._122 + 16\n" + " bne .__126 @cond_branch\n" + " ldr r0, .__122 + 16\n" " mov r1, #0x4\n" " mov r2, #0x11\n" - " b ._121\n" - "._123:\n" + " b .__121\n" + ".__123:\n" " .align 2, 0\n" - "._122:\n" + ".__122:\n" " .word +0x2000000\n" " .word 0x270f\n" " .word Str_841B2B0\n" " .word unk_debug_bss_1+0x4\n" " .word Str_841B2D3\n" - "._117:\n" + ".__117:\n" " lsl r0, r2, #0x10\n" " cmp r0, #0\n" - " beq ._127 @cond_branch\n" + " beq .__127 @cond_branch\n" " ldrb r1, [r4, #0x4]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._126 @cond_branch\n" + " beq .__126 @cond_branch\n" " mov r4, #0x3\n" " and r4, r4, r2\n" " cmp r4, #0\n" - " bne ._126 @cond_branch\n" - " ldr r0, ._163\n" + " bne .__126 @cond_branch\n" + " ldr r0, .__163\n" " mov r1, #0x4\n" " mov r2, #0x2\n" - "._121:\n" + ".__121:\n" " bl Menu_PrintText\n" - " ldr r0, ._163 + 4\n" + " ldr r0, .__163 + 4\n" " strb r4, [r0]\n" - "._126:\n" - " ldr r0, ._163 + 8\n" + ".__126:\n" + " ldr r0, .__163 + 8\n" " ldrh r1, [r0, #0x8]\n" " add r4, r0, #0\n" " cmp r1, #0\n" - " beq ._127 @cond_branch\n" - " b ._162\n" - "._127:\n" + " beq .__127 @cond_branch\n" + " b .__162\n" + ".__127:\n" " mov r1, #0x12\n" " ldsh r0, [r4, r1]\n" " cmp r0, #0x3\n" - " beq ._129 @cond_branch\n" - " b ._162\n" - "._129:\n" + " beq .__129 @cond_branch\n" + " b .__162\n" + ".__129:\n" " ldrb r1, [r4, #0x4]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" " cmp r0, #0\n" - " beq ._131 @cond_branch\n" - " b ._162\n" - "._131:\n" + " beq .__131 @cond_branch\n" + " b .__162\n" + ".__131:\n" " mov r0, #0x0\n" " mov r1, #0x1\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r7, r0, #0x18\n" " mov r0, #0x0\n" " mov r1, #0x2\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " str r0, [sp]\n" " mov r0, #0x0\n" " mov r1, #0x3\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r6, r0, #0x18\n" " mov r0, #0x1\n" " mov r1, #0x1\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov r9, r0\n" " mov r0, #0x1\n" " mov r1, #0x2\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" " mov r0, #0x1\n" " mov r1, #0x3\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov sl, r0\n" " mov r0, #0x2\n" " mov r1, #0x1\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" " mov r0, #0x2\n" " mov r1, #0x2\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov r8, r0\n" " mov r0, #0x2\n" " mov r1, #0x3\n" - " bl sub_8102BA4\n" + " bl GetTagOfReelSymbolOnScreenAtPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r7, #0\n" - " bne ._134 @cond_branch\n" + " bne .__134 @cond_branch\n" " mov r1, r9\n" " cmp r1, #0x1\n" - " bne ._134 @cond_branch\n" + " bne .__134 @cond_branch\n" " cmp r5, #0\n" - " beq ._159 @cond_branch\n" - "._134:\n" + " beq .__159 @cond_branch\n" + ".__134:\n" " ldr r1, [sp]\n" " cmp r1, #0\n" - " bne ._137 @cond_branch\n" + " bne .__137 @cond_branch\n" " cmp r4, #0x1\n" - " bne ._137 @cond_branch\n" + " bne .__137 @cond_branch\n" " mov r1, r8\n" " cmp r1, #0\n" - " beq ._159 @cond_branch\n" - "._137:\n" + " beq .__159 @cond_branch\n" + ".__137:\n" " cmp r6, #0\n" - " bne ._140 @cond_branch\n" + " bne .__140 @cond_branch\n" " mov r1, sl\n" " cmp r1, #0x1\n" - " bne ._140 @cond_branch\n" + " bne .__140 @cond_branch\n" " cmp r0, #0\n" - " beq ._159 @cond_branch\n" - "._140:\n" + " beq .__159 @cond_branch\n" + ".__140:\n" " cmp r7, #0\n" - " bne ._143 @cond_branch\n" + " bne .__143 @cond_branch\n" " cmp r4, #0x1\n" - " bne ._143 @cond_branch\n" + " bne .__143 @cond_branch\n" " cmp r0, #0\n" - " beq ._159 @cond_branch\n" - "._143:\n" + " beq .__159 @cond_branch\n" + ".__143:\n" " cmp r6, #0\n" - " bne ._146 @cond_branch\n" + " bne .__146 @cond_branch\n" " cmp r4, #0x1\n" - " bne ._146 @cond_branch\n" + " bne .__146 @cond_branch\n" " cmp r5, #0\n" - " beq ._159 @cond_branch\n" - "._146:\n" + " beq .__159 @cond_branch\n" + ".__146:\n" " cmp r7, #0x1\n" - " bne ._149 @cond_branch\n" + " bne .__149 @cond_branch\n" " mov r1, r9\n" " cmp r1, #0\n" - " bne ._149 @cond_branch\n" + " bne .__149 @cond_branch\n" " cmp r5, #0x1\n" - " beq ._159 @cond_branch\n" - "._149:\n" + " beq .__159 @cond_branch\n" + ".__149:\n" " ldr r1, [sp]\n" " cmp r1, #0x1\n" - " bne ._152 @cond_branch\n" + " bne .__152 @cond_branch\n" " cmp r4, #0\n" - " bne ._152 @cond_branch\n" + " bne .__152 @cond_branch\n" " mov r1, r8\n" " cmp r1, #0x1\n" - " beq ._159 @cond_branch\n" - "._152:\n" + " beq .__159 @cond_branch\n" + ".__152:\n" " cmp r6, #0x1\n" - " bne ._155 @cond_branch\n" + " bne .__155 @cond_branch\n" " mov r1, sl\n" " cmp r1, #0\n" - " bne ._155 @cond_branch\n" + " bne .__155 @cond_branch\n" " cmp r0, #0x1\n" - " beq ._159 @cond_branch\n" - "._155:\n" + " beq .__159 @cond_branch\n" + ".__155:\n" " cmp r7, #0x1\n" - " bne ._158 @cond_branch\n" + " bne .__158 @cond_branch\n" " cmp r4, #0\n" - " bne ._158 @cond_branch\n" + " bne .__158 @cond_branch\n" " cmp r0, #0x1\n" - " beq ._159 @cond_branch\n" - "._158:\n" + " beq .__159 @cond_branch\n" + ".__158:\n" " cmp r6, #0x1\n" - " bne ._162 @cond_branch\n" + " bne .__162 @cond_branch\n" " cmp r4, #0\n" - " bne ._162 @cond_branch\n" + " bne .__162 @cond_branch\n" " cmp r5, #0x1\n" - " bne ._162 @cond_branch\n" - "._159:\n" - " ldr r0, ._163 + 12\n" + " bne .__162 @cond_branch\n" + ".__159:\n" + " ldr r0, .__163 + 12\n" " mov r1, #0x4\n" " mov r2, #0x0\n" " bl Menu_PrintText\n" - " ldr r1, ._163 + 4\n" + " ldr r1, .__163 + 4\n" " mov r0, #0x0\n" " strb r0, [r1]\n" - "._162:\n" + ".__162:\n" " add sp, sp, #0x4\n" " pop {r3, r4, r5}\n" " mov r8, r3\n" @@ -5194,9 +6386,9 @@ void debug_sub_811B894() " pop {r4, r5, r6, r7}\n" " pop {r0}\n" " bx r0\n" - "._164:\n" + ".__164:\n" " .align 2, 0\n" - "._163:\n" + ".__163:\n" " .word Str_841B2E4\n" " .word unk_debug_bss_1+0x4\n" " .word +0x2000000\n" @@ -6636,3 +7828,50 @@ static const struct SpritePalette gSlotMachineSpritePalettes[] = { static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz"); static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin"); + +#if DEBUG + +const u8 Str_841B1C4[] = _("SETTEI"); +const u8 Str_841B1CB[] = _("MAWASITA"); +const u8 Str_841B1D4[] = _("MODOSI"); +const u8 Str_841B1DB[] = _("NOMARE"); +const u8 Str_841B1E2[] = _("MAE 7"); +const u8 Str_841B1E8[] = _("LR  HENKOU"); +const u8 Str_841B1F3[] = _("START  JIDOUSU"); +const u8 Str_841B202[] = _("SELECT  SETTEI"); +const u8 Str_841B211[] = _("TYUHSEN"); +const u8 Str_841B219[] = _("CHERRY"); +const u8 Str_841B220[] = _("REPLAY"); +const u8 Str_841B227[] = _("HASUBO"); +const u8 Str_841B22E[] = _("RURIRI"); +const u8 Str_841B235[] = _("INAZU"); +const u8 Str_841B23B[] = _("REG"); +const u8 Str_841B23F[] = _("BIG"); +const u8 Str_841B243[] = _("BD"); +const u8 Str_841B246[] = _("R7"); +const u8 Str_841B249[] = _("B7"); +const u8 Str_841B24C[] = _("A  COIN"); +const u8 Str_841B254[] = _("TYUHSEN"); +const u8 Str_841B25C[] = _("UD  100"); +const u8 Str_841B264[] = _("LR  1000"); +const u8 Str_841B26D[] = _("×"); + +// Is this MenuAction2? I'm not sure. +const struct {const u8 *text; void (*func)();} _841B270[] = +{ + {Str_841B219, debug_sub_811B1C4}, + {Str_841B220, debug_sub_811B1EC}, + {Str_841B227, debug_sub_811B210}, + {Str_841B22E, debug_sub_811B238}, + {Str_841B235, debug_sub_811B260}, + {Str_841B23B, debug_sub_811B288}, + {Str_841B23F, debug_sub_811B2B0}, + {Str_841B243, debug_sub_811B2D8}, +}; + +const u8 Str_841B2B0[] = _("·カウントエラーがおきました"); +const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました"); +const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました"); +const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました"); + +#endif diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index c652b9398..ecff15c21 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -234,9 +234,84 @@ const struct MailLayout gUnknown_083E57A4[] = {5, 15, 15, 4, 3, Unknown_3E5790}, }; +#if DEBUG + +const u8 Str_8411540[] = _("レイアウトを にほんごで ひょうじ?"); // Display using Japanese layout? +const u8 Str_8411553[] = _("にほんご "); // Japanese +const u8 Str_8411559[] = _("かいがい "); // Overseas + +const u8 *const _8411560[] = +{ + Str_8411553, + Str_8411559, +}; + +const u8 Str_8411568[] = _("イメージ タイプを えらんでね"); // Choose an image type +const u8 Str_8411578[] = _("{STR_VAR_1}"); +const u8 Str_841157B[] = _("オレンジ "); // Orange +const u8 Str_8411581[] = _("ハーバー "); // Harbor +const u8 Str_8411587[] = _("キラキラ "); // Glitter +const u8 Str_841158D[] = _("メカニカル"); // Mech +const u8 Str_8411593[] = _("ウッディー"); // Wood +const u8 Str_8411599[] = _("クロス  "); // Wave +const u8 Str_841159F[] = _("トレジャー"); // Bead +const u8 Str_84115A5[] = _("シャドウ "); // Shadow +const u8 Str_84115AB[] = _("トロピカル"); // Tropic +const u8 Str_84115B1[] = _("ドリーム "); // Dream +const u8 Str_84115B7[] = _("ミラクル "); // Fab +const u8 Str_84115BD[] = _("レトロ  "); // Retro + +const u8 *const _84115C4[] = +{ + Str_841157B, + Str_8411581, + Str_8411587, + Str_841158D, + Str_8411593, + Str_8411599, + Str_841159F, + Str_84115A5, + Str_84115AB, + Str_84115B1, + Str_84115B7, + Str_84115BD, +}; + +const u8 Str_84115F4[] = _("メールをみる"); // View Mail +const u8 Str_84115FB[] = _("メールとうろく"); // Register Mail +const u8 Str_8411603[] = _("もたせる"); // Give to Pokémon +const u8 Str_8411608[] = _("メールをけす"); // Delete Mail + +#endif + // XXX: what is this? static u8 *const sSharedMemPtr = gSharedMem; +#if DEBUG + +const u8 Str_841160F[] = _("{STR_VAR_1} {STR_VAR_2}"); +const u8 Str_841161A[] = _("メール{STR_VAR_1} {STR_VAR_2}"); +const u8 Str_8411623[] = _("メール{STR_VAR_1}を だれに もたせる?"); +const u8 Str_8411634[] = _("000 {STR_VAR_1}"); +const u8 Str_841163B[] = _("せいきの データが とうろくずみ です\n"); +const u8 Str_841163B_after[] = _("しんき とうろく できません"); +const u8 Str_841165E[] = _("せいきに とうろくされたメールデータは\n"); +const u8 Str_841165E_after[] = _("へんこう できません"); +const u8 Str_841167D[] = _("メール{STR_VAR_1} とうろく かいじょ"); +const u8 Str_841168D[] = _("デバッグメニューから とうろくした\n"); +const u8 Str_841168D_after[] = _("メール いがいは けせません"); +const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); + +const struct MenuAction _84116BC[] = +{ + {Str_84115F4, NULL}, + {Str_84115FB, NULL}, + {Str_8411603, NULL}, + {Str_8411608, NULL}, +}; + +#endif + static u8 sub_80F8A28(void); /*static*/ void sub_80F8D50(void); static void sub_80F8DA0(void); diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index fd4684832..63f1b322a 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -646,7 +646,7 @@ void debug_sub_803F55C() " ldr r4, [sp]\n" " mul r0, r0, r4\n" " mov r1, #0x64\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r0, r0, r4\n" " add r0, r0, #0xa\n" " str r0, [sp, #0x4]\n" @@ -673,7 +673,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x8]\n" " add r0, r5, #0\n" @@ -705,7 +705,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r0, r0, #0x5\n" " str r0, [sp, #0xc]\n" " add r0, r5, #0\n" @@ -737,7 +737,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x10]\n" " add r0, r5, #0\n" @@ -769,7 +769,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x14]\n" " add r0, r5, #0\n" @@ -801,7 +801,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gScriptFuncs_End+0x3d30\n" + " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x18]\n" " add r0, r5, #0\n" diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c index 001cebe45..cd4c18252 100644 --- a/src/pokemon/pokemon_storage_system.c +++ b/src/pokemon/pokemon_storage_system.c @@ -13,7 +13,8 @@ extern const struct StorageAction gUnknown_083B6DF4[]; EWRAM_DATA struct PokemonStorage gPokemonStorage = {0}; -void sub_8098898(u8 index) { +void sub_8098898(u8 index) +{ u8 *ptr; Menu_DrawStdWindowFrame(10, 16, 29, 19); -- cgit v1.2.3 From c3534e7b0e2df48fe989deb74c26f98e1fe759b8 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 16:46:54 -0600 Subject: add more debug code --- src/engine/cable_club.c | 436 +++++++++++++++++++++++++++++++++- src/engine/mystery_event_menu.c | 460 ++++++++++++++++++++++++++++++++++++ src/engine/reset_rtc_screen.c | 316 +++++++++++++++++++++++++ src/field/field_fadetransition.c | 16 ++ src/field/fldeff_cut.c | 109 +++++++++ src/field/fldeff_flash.c | 30 +++ src/field/fldeff_strength.c | 23 ++ src/field/item_menu.c | 498 +++++++++++++++++++++++++++++++++++++++ src/pokemon/pokemon_menu.c | 42 ++++ 9 files changed, 1929 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 688560218..c0397f67b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -95,6 +95,325 @@ const u8 *const gTrainerCardColorNames[] = TrainerCardColorName_Gold, }; +#if DEBUG + +__attribute__((naked)) +int debug_sub_808A4D0() +{ + asm("\ + push {lr}\n\ + add r1, r0, #0\n\ + ldr r0, ._3\n\ + cmp r1, r0\n\ + bne ._1 @cond_branch\n\ + mov r0, #0x1\n\ + b ._30\n\ +._4:\n\ + .align 2, 0\n\ +._3:\n\ + .word sub_8082F68+1\n\ +._1:\n\ + ldr r0, ._7\n\ + cmp r1, r0\n\ + bne ._5 @cond_branch\n\ + mov r0, #0x11\n\ + b ._30\n\ +._8:\n\ + .align 2, 0\n\ +._7:\n\ + .word sub_8082FEC+1\n\ +._5:\n\ + ldr r0, ._11\n\ + cmp r1, r0\n\ + bne ._9 @cond_branch\n\ + mov r0, #0x12\n\ + b ._30\n\ +._12:\n\ + .align 2, 0\n\ +._11:\n\ + .word sub_808303C+1\n\ +._9:\n\ + ldr r0, ._15\n\ + cmp r1, r0\n\ + bne ._13 @cond_branch\n\ + mov r0, #0x13\n\ + b ._30\n\ +._16:\n\ + .align 2, 0\n\ +._15:\n\ + .word sub_8083188+1\n\ +._13:\n\ + ldr r0, ._19\n\ + cmp r1, r0\n\ + bne ._17 @cond_branch\n\ + mov r0, #0x14\n\ + b ._30\n\ +._20:\n\ + .align 2, 0\n\ +._19:\n\ + .word sub_80830E4+1\n\ +._17:\n\ + ldr r0, ._23\n\ + cmp r1, r0\n\ + bne ._21 @cond_branch\n\ + mov r0, #0x21\n\ + b ._30\n\ +._24:\n\ + .align 2, 0\n\ +._23:\n\ + .word sub_80831F8+1\n\ +._21:\n\ + ldr r0, ._27\n\ + cmp r1, r0\n\ + bne ._25 @cond_branch\n\ + mov r0, #0x2\n\ + b ._30\n\ +._28:\n\ + .align 2, 0\n\ +._27:\n\ + .word sub_8083314+1\n\ +._25:\n\ + ldr r0, ._31\n\ + cmp r1, r0\n\ + beq ._29 @cond_branch\n\ + mov r0, #0x0\n\ + b ._30\n\ +._32:\n\ + .align 2, 0\n\ +._31:\n\ + .word sub_80833C4+1\n\ +._29:\n\ + mov r0, #0x3\n\ +._30:\n\ + pop {r1}\n\ + bx r1"); +} + +__attribute__((naked)) +void debug_sub_808A55C() +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + ldr r2, ._37\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r4, r0, r2\n\ + mov r0, #0x8\n\ + ldsh r1, [r4, r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r2\n\ + ldrb r0, [r0, #0x4]\n\ + cmp r0, #0\n\ + bne ._33 @cond_branch\n\ + mov r1, #0xa\n\ + ldsh r0, [r4, r1]\n\ + cmp r0, #0x5\n\ + bne ._34 @cond_branch\n\ + add r0, r7, #0\n\ + bl DestroyTask\n\ +._34:\n\ + ldrh r0, [r4, #0xa]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4, #0xa]\n\ +._33:\n\ + ldr r0, ._37 + 4\n\ + ldrb r0, [r0]\n\ + mov r1, #0x2\n\ + mov r2, #0x0\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + ldr r0, ._37 + 8\n\ + ldrb r0, [r0]\n\ + mov r1, #0x16\n\ + mov r2, #0x5\n\ + mov r3, #0x4\n\ + bl PrintHex\n\ + mov r4, #0x0\n\ + lsl r3, r7, #0x2\n\ + mov r8, r3\n\ + mov r6, #0xc0\n\ + lsl r6, r6, #0x13\n\ + mov r5, #0xa0\n\ + lsl r5, r5, #0x13\n\ +._35:\n\ + ldr r0, ._37 + 12\n\ + add r0, r4, r0\n\ + ldrb r0, [r0]\n\ + lsr r1, r5, #0x18\n\ + mov r2, #0x0\n\ + mov r3, #0x1\n\ + bl PrintHex\n\ + ldr r1, ._37 + 16\n\ + lsl r0, r4, #0x8\n\ + add r0, r0, r1\n\ + ldrh r0, [r0]\n\ + lsr r2, r6, #0x18\n\ + mov r1, #0x16\n\ + mov r3, #0x4\n\ + bl PrintHex\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x11\n\ + add r6, r6, r0\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x12\n\ + add r5, r5, r1\n\ + add r4, r4, #0x1\n\ + cmp r4, #0x3\n\ + ble ._35 @cond_branch\n\ + ldr r4, ._37 + 20\n\ + ldr r0, [r4]\n\ + mov r1, #0xf\n\ + mov r2, #0x0\n\ + mov r3, #0x8\n\ + bl PrintHex\n\ + ldr r0, ._37 + 24\n\ + ldrb r0, [r0, #0x1]\n\ + mov r1, #0x2\n\ + mov r2, #0xa\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + bl GetMultiplayerId\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0x7\n\ + mov r2, #0xc\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + bl GetBlockReceivedStatus\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0x7\n\ + mov r2, #0xa\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + ldr r0, ._37 + 28\n\ + ldrb r0, [r0]\n\ + mov r1, #0x2\n\ + mov r2, #0xc\n\ + mov r3, #0x1\n\ + bl PrintHex\n\ + ldr r0, ._37 + 32\n\ + ldrh r0, [r0]\n\ + mov r1, #0xb\n\ + mov r2, #0x8\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + ldr r0, [r4]\n\ + mov r1, #0x1c\n\ + and r0, r0, r1\n\ + lsr r0, r0, #0x2\n\ + mov r1, #0xb\n\ + mov r2, #0xa\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + bl IsLinkConnectionEstablished\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0xb\n\ + mov r2, #0xc\n\ + mov r3, #0x1\n\ + bl PrintHex\n\ + bl sub_8007ECC\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0xf\n\ + mov r2, #0xa\n\ + mov r3, #0x1\n\ + bl PrintHex\n\ + ldr r2, ._37\n\ + mov r3, r8\n\ + add r0, r3, r7\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r2\n\ + mov r3, #0x8\n\ + ldsh r1, [r0, r3]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + bl debug_sub_808A4D0\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0xf\n\ + mov r2, #0xc\n\ + mov r3, #0x2\n\ + bl PrintHex\n\ + ldr r0, ._37 + 36\n\ + ldr r0, [r0]\n\ + mov r1, #0x2\n\ + mov r2, #0xd\n\ + mov r3, #0x8\n\ + bl PrintHex\n\ + bl HasLinkErrorOccurred\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0x2\n\ + mov r2, #0x2\n\ + mov r3, #0x1\n\ + bl PrintHex\n\ + ldr r0, ._37 + 40\n\ + mov r6, #0x80\n\ + lsl r6, r6, #0x12\n\ + add r5, r0, #0\n\ + add r5, r5, #0x14\n\ + mov r4, #0x3\n\ +._36:\n\ + ldr r0, [r5]\n\ + lsr r1, r6, #0x18\n\ + mov r2, #0x3\n\ + mov r3, #0x4\n\ + bl PrintHex\n\ + mov r0, #0xc0\n\ + lsl r0, r0, #0x13\n\ + add r6, r6, r0\n\ + add r5, r5, #0x1c\n\ + sub r4, r4, #0x1\n\ + cmp r4, #0\n\ + bge ._36 @cond_branch\n\ + ldr r0, ._37 + 44\n\ + ldrh r0, [r0]\n\ + mov r1, #0x2\n\ + mov r2, #0x6\n\ + mov r3, #0x4\n\ + bl PrintHex\n\ + bl debug_sub_808B850\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r1, #0x19\n\ + mov r2, #0x3\n\ + mov r3, #0x1\n\ + bl PrintHex\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._38:\n\ + .align 2, 0\n\ +._37:\n\ + .word gTasks\n\ + .word gShouldAdvanceLinkState\n\ + .word gBlockSendBuffer\n\ + .word gLinkPlayerPending\n\ + .word gBlockRecvBuffer\n\ + .word gLinkStatus\n\ + .word gLink\n\ + .word gReceivedRemoteLinkPlayers\n\ + .word gScriptResult\n\ + .word gLinkCallback\n\ + .word gLinkPlayers\n\ + .word 0x4000128"); +} +#endif + static void sub_8082CD4(u8 arg0, u8 arg1) { if (FindTaskIdByFunc(sub_8082F20) == 0xFF) @@ -912,6 +1231,74 @@ void sub_8083C50(u8 taskId) DestroyTask(taskId); } +#if DEBUG + +__attribute__((naked)) +void debug_sub_808B778() +{ + asm("\ + push {r4, lr}\n\ + ldr r4, ._390\n\ + add r0, r4, #0\n\ + bl FuncIsActiveTask\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._389 @cond_branch\n\ + add r0, r4, #0\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ +._389:\n\ + ldr r1, ._390 + 4\n\ + ldr r0, [r1]\n\ + add r0, r0, #0x1\n\ + str r0, [r1]\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._391:\n\ + .align 2, 0\n\ +._390:\n\ + .word debug_sub_808B7A8+1\n\ + .word unk_3004E98"); +} + +__attribute__((naked)) +void debug_sub_808B7A8() +{ + asm("\ + push {lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r2, ._393\n\ + lsl r1, r0, #0x2\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r2\n\ + ldrh r0, [r1, #0x8]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1, #0x8]\n\ + lsl r0, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0x1e\n\ + bne ._392 @cond_branch\n\ + mov r0, #0x0\n\ + strh r0, [r1, #0x8]\n\ + ldr r2, ._393 + 4\n\ + ldrh r0, [r2]\n\ + mov r1, #0x1\n\ + orr r0, r0, r1\n\ + strh r0, [r2]\n\ +._392:\n\ + pop {r0}\n\ + bx r0\n\ +._394:\n\ + .align 2, 0\n\ +._393:\n\ + .word gTasks\n\ + .word unk_3004E94"); +} +#endif + static void sub_8083CA4(u8 taskId) { if (!gReceivedRemoteLinkPlayers) @@ -925,4 +1312,51 @@ void unref_sub_8083CC8(u8 taskId) { sub_800832C(); gTasks[taskId].func = sub_8083CA4; -} \ No newline at end of file +} + +#if DEBUG + +void debug_sub_808B82C() +{ + asm("\ + ldr r1, ._400\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + bx lr\n\ +._401:\n\ + .align 2, 0\n\ +._400:\n\ + .word unk_2030220"); +} + +void debug_sub_808B838(u8 a) +{ + asm("\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r2, ._402\n\ + mov r1, #0x1\n\ + LSL r1, r0\n\ + ldrb r0, [r2]\n\ + orr r1, r1, r0\n\ + strb r1, [r2]\n\ + bx lr\n\ +._403:\n\ + .align 2, 0\n\ +._402:\n\ + .word unk_2030220"); +} + +int debug_sub_808B850() +{ + asm("\ + ldr r0, ._404\n\ + ldrb r0, [r0]\n\ + bx lr\n\ +._405:\n\ + .align 2, 0\n\ +._404:\n\ + .word unk_2030220"); +} + +#endif \ No newline at end of file diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 8fad563e6..522a185c8 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -338,3 +338,463 @@ static void CB2_MysteryEventMenu(void) BuildOamBuffer(); UpdatePaletteFade(); } + +#if DEBUG + +void debug_sub_815D1D8(); + +__attribute__((naked)) +void debug_sub_815D04C() +{ + asm( + " push {r4, r5, r6, lr}\n" + " lsl r0, r0, #0x18\n" + " lsr r5, r0, #0x18\n" + " ldr r1, ._125\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r4, r0, r1\n" + " mov r1, #0x8\n" + " ldsh r0, [r4, r1]\n" + " cmp r0, #0\n" + " bne ._121 @cond_branch\n" + " mov r0, #0x4\n" + " mov r1, #0x4\n" + " mov r2, #0xd\n" + " mov r3, #0x7\n" + " bl MenuDrawTextWindow\n" + " ldr r1, ._125 + 4\n" + " mov r2, #0xa\n" + " ldsh r0, [r4, r2]\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov r1, #0x5\n" + " mov r2, #0x5\n" + " bl MenuPrint\n" + " ldrh r0, [r4, #0x8]\n" + " add r0, r0, #0x1\n" + " strh r0, [r4, #0x8]\n" + "._121:\n" + " ldr r2, ._125 + 8\n" + " ldrh r1, [r2, #0x2e]\n" + " mov r0, #0x20\n" + " and r0, r0, r1\n" + " add r6, r2, #0\n" + " cmp r0, #0\n" + " beq ._122 @cond_branch\n" + " ldrh r1, [r4, #0xa]\n" + " mov r2, #0xa\n" + " ldsh r0, [r4, r2]\n" + " cmp r0, #0\n" + " bne ._123 @cond_branch\n" + " ldr r0, ._125 + 12\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " b ._124\n" + "._126:\n" + " .align 2, 0\n" + "._125:\n" + " .word gTasks\n" + " .word gFlashSectors+0x9c\n" + " .word gMain\n" + " .word gFlashSectors+0x11c\n" + "._123:\n" + " sub r0, r1, #1\n" + "._124:\n" + " strh r0, [r4, #0xa]\n" + " ldr r0, ._130\n" + " lsl r1, r5, #0x2\n" + " add r1, r1, r5\n" + " lsl r1, r1, #0x3\n" + " add r1, r1, r0\n" + " mov r0, #0x0\n" + " strh r0, [r1, #0x8]\n" + "._122:\n" + " ldrh r1, [r6, #0x2e]\n" + " mov r0, #0x10\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._127 @cond_branch\n" + " ldr r1, ._130\n" + " lsl r2, r5, #0x2\n" + " add r0, r2, r5\n" + " lsl r0, r0, #0x3\n" + " add r4, r0, r1\n" + " mov r0, #0xa\n" + " ldsh r3, [r4, r0]\n" + " ldr r0, ._130 + 4\n" + " ldrb r0, [r0]\n" + " sub r0, r0, #0x1\n" + " cmp r3, r0\n" + " bne ._128 @cond_branch\n" + " mov r0, #0x0\n" + " b ._129\n" + "._131:\n" + " .align 2, 0\n" + "._130:\n" + " .word gTasks\n" + " .word gFlashSectors+0x11c\n" + "._128:\n" + " ldrh r0, [r4, #0xa]\n" + " add r0, r0, #0x1\n" + "._129:\n" + " strh r0, [r4, #0xa]\n" + " add r0, r2, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r1, #0x0\n" + " strh r1, [r0, #0x8]\n" + "._127:\n" + " ldrh r1, [r6, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._132 @cond_branch\n" + " ldr r1, ._133\n" + " lsl r0, r5, #0x2\n" + " add r0, r0, r5\n" + " lsl r0, r0, #0x3\n" + " add r0, r0, r1\n" + " mov r2, #0xa\n" + " ldsh r1, [r0, r2]\n" + " lsl r1, r1, #0x3\n" + " ldr r0, ._133 + 4\n" + " add r0, r0, #0x4\n" + " add r1, r1, r0\n" + " ldr r0, ._133 + 8\n" + " ldr r1, [r1]\n" + " bl gScriptFuncs_End+0x3cf8\n" + " ldr r0, ._133 + 12\n" + " add r1, r6, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " add r0, r5, #0\n" + " bl DestroyTask\n" + "._132:\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + "._134:\n" + " .align 2, 0\n" + "._133:\n" + " .word gTasks\n" + " .word gFlashSectors+0x9c\n" + " .word +0x2004000\n" + " .word 0x43c\n" + "\n" + ); +} + +void debug_sub_815D15C(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + SetVBlankCallback(VBlankCB); + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); + Menu_EraseScreen(); + REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; + REG_BLDCNT = 0; + + CreateTask(Task_DestroySelf, 0); + StopMapMusic(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + FillPalette(0, 0, 2); + SetMainCallback2(debug_sub_815D1D8); +} + +__attribute__((naked)) +void debug_sub_815D1D8() +{ + asm( + " push {r4, lr}\n" + " add sp, sp, #0xfffffffc\n" + " ldr r1, ._139\n" + " ldr r2, ._139 + 4\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " add r4, r1, #0\n" + " cmp r0, #0xb\n" + " bls ._137 @cond_branch\n" + " b ._196\n" + "._137:\n" + " lsl r0, r0, #0x2\n" + " ldr r1, ._139 + 8\n" + " add r0, r0, r1\n" + " ldr r0, [r0]\n" + " mov pc, r0\n" + "._140:\n" + " .align 2, 0\n" + "._139:\n" + " .word gMain\n" + " .word 0x43c\n" + " .word ._141\n" + "._141:\n" + " .word ._142\n" + " .word ._143\n" + " .word ._144\n" + " .word ._145\n" + " .word ._146\n" + " .word ._196\n" + " .word ._148\n" + " .word ._149\n" + " .word ._150\n" + " .word ._151\n" + " .word ._152\n" + " .word ._153\n" + "._142:\n" + " mov r0, #0x3\n" + " mov r1, #0xe\n" + " mov r2, #0x1b\n" + " mov r3, #0x13\n" + " bl MenuDrawTextWindow\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x10\n" + " mov r3, #0x0\n" + " bl BeginNormalPaletteFade\n" + " ldr r1, ._155\n" + " ldr r0, ._155 + 4\n" + " add r1, r1, r0\n" + " b ._189\n" + "._156:\n" + " .align 2, 0\n" + "._155:\n" + " .word gMain\n" + " .word 0x43c\n" + "._143:\n" + " ldr r0, ._161\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._157 @cond_branch\n" + " b ._196\n" + "._157:\n" + " ldrh r1, [r4, #0x2c]\n" + " mov r0, #0x80\n" + " lsl r0, r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._159 @cond_branch\n" + " ldr r1, ._161 + 4\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + "._159:\n" + " ldr r0, ._161 + 8\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrintMessage\n" + " ldr r2, ._161 + 12\n" + " add r1, r4, r2\n" + " b ._189\n" + "._162:\n" + " .align 2, 0\n" + "._161:\n" + " .word gPaletteFade\n" + " .word gLinkTestBlockChecksums+0x8\n" + " .word gUnknown_0841192C+0x14\n" + " .word 0x43c\n" + "._144:\n" + " bl MenuUpdateWindowText\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._163 @cond_branch\n" + " b ._196\n" + "._163:\n" + " ldr r1, ._166\n" + " ldr r0, ._166 + 4\n" + " add r1, r1, r0\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " ldr r1, ._166 + 8\n" + " ldr r2, ._166 + 12\n" + " add r0, r2, #0\n" + " strh r0, [r1]\n" + " bl OpenLink\n" + " b ._196\n" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gMain\n" + " .word 0x43c\n" + " .word gLinkType\n" + " .word 0x5501\n" + "._145:\n" + " ldr r0, ._171\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._168 @cond_branch\n" + " b ._196\n" + "._168:\n" + " ldr r1, ._171 + 4\n" + " add r0, r4, r1\n" + " ldrb r1, [r0]\n" + " add r1, r1, #0x1\n" + " strb r1, [r0]\n" + " ldr r0, ._171 + 8\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrintMessage\n" + " b ._196\n" + "._172:\n" + " .align 2, 0\n" + "._171:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word 0x43c\n" + " .word gUnknown_0841192C+0x28\n" + "._146:\n" + " bl MenuUpdateWindowText\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._173 @cond_branch\n" + " b ._196\n" + "._173:\n" + " ldr r0, ._176\n" + " mov r1, #0xa\n" + " bl CreateTask\n" + " ldr r1, ._176 + 4\n" + " ldr r2, ._176 + 8\n" + " add r1, r1, r2\n" + " b ._189\n" + "._177:\n" + " .align 2, 0\n" + "._176:\n" + " .word debug_sub_815D04C+1\n" + " .word gMain\n" + " .word 0x43c\n" + "._148:\n" + " ldr r0, ._179\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrintMessage\n" + " ldr r1, ._179 + 4\n" + " ldr r2, ._179 + 8\n" + " mov r0, #0x0\n" + " bl SendBlock\n" + " ldr r1, ._179 + 12\n" + " ldr r0, ._179 + 16\n" + " add r1, r1, r0\n" + " b ._189\n" + "._180:\n" + " .align 2, 0\n" + "._179:\n" + " .word gUnknown_0841192C+0x3c\n" + " .word +0x2004000\n" + " .word 0x2004\n" + " .word gMain\n" + " .word 0x43c\n" + "._149:\n" + " bl MenuUpdateWindowText\n" + " bl sub_8007ECC\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._196 @cond_branch\n" + " ldr r1, ._183\n" + " ldr r2, ._183 + 4\n" + " add r1, r1, r2\n" + " b ._189\n" + "._184:\n" + " .align 2, 0\n" + "._183:\n" + " .word gMain\n" + " .word 0x43c\n" + "._150:\n" + " bl sub_800832C\n" + " ldr r1, ._186\n" + " ldr r0, ._186 + 4\n" + " add r1, r1, r0\n" + " b ._189\n" + "._187:\n" + " .align 2, 0\n" + "._186:\n" + " .word gMain\n" + " .word 0x43c\n" + "._151:\n" + " ldr r0, ._190\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " bne ._196 @cond_branch\n" + " mov r0, #0x4\n" + " mov r1, #0xf\n" + " mov r2, #0x1a\n" + " mov r3, #0x12\n" + " bl MenuFillWindowRectWithBlankTile\n" + " ldr r0, ._190 + 4\n" + " mov r1, #0x4\n" + " mov r2, #0xf\n" + " bl MenuPrint\n" + " ldr r1, ._190 + 8\n" + " ldr r2, ._190 + 12\n" + " add r1, r1, r2\n" + " b ._189\n" + "._191:\n" + " .align 2, 0\n" + "._190:\n" + " .word gReceivedRemoteLinkPlayers\n" + " .word gUnknown_0841192C+0x47\n" + " .word gMain\n" + " .word 0x43c\n" + "._152:\n" + " ldrh r1, [r4, #0x2e]\n" + " mov r0, #0x1\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._196 @cond_branch\n" + " mov r0, #0x1\n" + " neg r0, r0\n" + " mov r1, #0x0\n" + " str r1, [sp]\n" + " mov r2, #0x0\n" + " mov r3, #0x10\n" + " bl BeginNormalPaletteFade\n" + " ldr r0, ._194\n" + " add r1, r4, r0\n" + "._189:\n" + " ldrb r0, [r1]\n" + " add r0, r0, #0x1\n" + " strb r0, [r1]\n" + " b ._196\n" + "._195:\n" + " .align 2, 0\n" + "._194:\n" + " .word 0x43c\n" + "._153:\n" + " ldr r0, ._197\n" + " ldrb r1, [r0, #0x7]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " bne ._196 @cond_branch\n" + " ldr r0, ._197 + 4\n" + " bl SetMainCallback2\n" + "._196:\n" + " bl RunTasks\n" + " bl AnimateSprites\n" + " bl BuildOamBuffer\n" + " bl UpdatePaletteFade\n" + " add sp, sp, #0x4\n" + " pop {r4}\n" + " pop {r0}\n" + " bx r0\n" + "._198:\n" + " .align 2, 0\n" + "._197:\n" + " .word gPaletteFade\n" + " .word CB2_InitTitleScreen+1\n" + "\n" + ); +} + +#endif diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index c7d45e929..a11e1b3e3 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -605,3 +605,319 @@ void Task_ResetRtcScreen(u8 taskId) } } } + +#if DEBUG + +__attribute__((naked)) +void debug_sub_806F8F8(void) +{ + asm("\ + push {lr}\n\ + ldr r0, ._131\n\ + bl SetMainCallback2\n\ + pop {r0}\n\ + bx r0\n\ +._132:\n\ + .align 2, 0\n\ +._131:\n\ + .word CB2_InitResetRtcScreen+1"); +} + +__attribute__((naked)) +void debug_sub_806F908(u8 a) +{ + asm("\ + push {r4, r5, lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + lsl r0, r5, #0x2\n\ + add r0, r0, r5\n\ + lsl r0, r0, #0x3\n\ + ldr r2, ._136\n\ + add r4, r0, r2\n\ + mov r1, #0x0\n\ + ldsh r0, [r4, r1]\n\ + cmp r0, #0\n\ + beq ._133 @cond_branch\n\ + cmp r0, #0x1\n\ + beq ._134 @cond_branch\n\ + b ._141\n\ +._137:\n\ + .align 2, 0\n\ +._136:\n\ + .word gTasks+0x8\n\ +._133:\n\ + ldr r0, ._139\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + strh r0, [r4, #0x2]\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._141\n\ +._140:\n\ + .align 2, 0\n\ +._139:\n\ + .word Task_ResetRtc_0+1\n\ +._134:\n\ + sub r2, r2, #0x8\n\ + mov r0, #0x2\n\ + ldsh r1, [r4, r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x3\n\ + add r2, r0, r2\n\ + mov r1, #0x8\n\ + ldsh r0, [r2, r1]\n\ + cmp r0, #0\n\ + beq ._141 @cond_branch\n\ + mov r1, #0xa\n\ + ldsh r0, [r2, r1]\n\ + cmp r0, #0x1\n\ + bne ._142 @cond_branch\n\ + ldr r3, ._143\n\ + mov r1, #0x0\n\ + ldsh r0, [r3, r1]\n\ + mov r1, #0x2\n\ + ldsb r1, [r3, r1]\n\ + mov r2, #0x3\n\ + ldsb r2, [r3, r2]\n\ + ldrb r3, [r3, #0x4]\n\ + lsl r3, r3, #0x18\n\ + asr r3, r3, #0x18\n\ + bl RtcCalcLocalTimeOffset\n\ +._142:\n\ + ldrb r0, [r4, #0x2]\n\ + bl DestroyTask\n\ + bl MenuZeroFillScreen\n\ + bl ScriptContext2_Disable\n\ + add r0, r5, #0\n\ + bl DestroyTask\n\ +._141:\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._144:\n\ + .align 2, 0\n\ +._143:\n\ + .word gLocalTime"); +} + +__attribute__((naked)) +void debug_sub_806F99C() +{ + asm("\ + push {lr}\n\ + bl RtcCalcLocalTime\n\ + ldr r0, ._145\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + bl ScriptContext2_Enable\n\ + pop {r0}\n\ + bx r0\n\ +._146:\n\ + .align 2, 0\n\ +._145:\n\ + .word debug_sub_806F908+1"); +} + +__attribute__((naked)) +void debug_sub_806F9B8() +{ + asm("\ + push {lr}\n\ + ldr r2, ._147\n\ + ldr r0, ._147 + 4\n\ + add r0, r0, #0xa0\n\ + ldr r1, [r0, #0x4]\n\ + ldr r0, [r0]\n\ + str r0, [r2]\n\ + str r1, [r2, #0x4]\n\ + ldr r0, ._147 + 8\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + bl ScriptContext2_Enable\n\ + pop {r0}\n\ + bx r0\n\ +._148:\n\ + .align 2, 0\n\ +._147:\n\ + .word gLocalTime\n\ + .word gSaveBlock2\n\ + .word debug_sub_806F908+1"); +} + +__attribute__((naked)) +void debug_sub_806F9E4() +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + ldr r1, ._153\n\ + add r5, r0, r1\n\ + ldr r6, ._153 + 4\n\ + mov r1, #0x0\n\ + ldsh r0, [r5, r1]\n\ + cmp r0, #0x1\n\ + beq ._149 @cond_branch\n\ + cmp r0, #0x1\n\ + bgt ._150 @cond_branch\n\ + cmp r0, #0\n\ + beq ._151 @cond_branch\n\ + b ._165\n\ +._154:\n\ + .align 2, 0\n\ +._153:\n\ + .word gTasks+0x8\n\ + .word gStringVar4\n\ +._150:\n\ + cmp r0, #0x2\n\ + beq ._155 @cond_branch\n\ + b ._165\n\ +._149:\n\ + mov r0, #0x0\n\ + mov r1, #0x9\n\ + mov r2, #0x1d\n\ + mov r3, #0x13\n\ + bl MenuDrawTextWindow\n\ + add r4, r6, #0\n\ + add r4, r4, #0x50\n\ + bl RtcGetErrorStatus\n\ + add r1, r0, #0\n\ + lsl r1, r1, #0x10\n\ + lsr r1, r1, #0x10\n\ + add r0, r4, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x4\n\ + bl ConvertIntToHexStringN\n\ + add r0, r4, #0\n\ + mov r1, #0x2\n\ + mov r2, #0xa\n\ + bl MenuPrint\n\ + ldr r0, ._158\n\ + mov r1, #0xc\n\ + mov r2, #0xc\n\ + bl MenuPrint\n\ + ldr r0, ._158 + 4\n\ + mov r1, #0x14\n\ + mov r2, #0xc\n\ + bl MenuPrint\n\ + ldr r0, ._158 + 8\n\ + mov r1, #0x1\n\ + mov r2, #0xe\n\ + bl MenuPrint\n\ + ldr r0, ._158 + 12\n\ + mov r1, #0x1\n\ + mov r2, #0x10\n\ + bl MenuPrint\n\ +._151:\n\ + ldrh r0, [r5]\n\ + add r0, r0, #0x1\n\ + strh r0, [r5]\n\ + b ._165\n\ +._159:\n\ + .align 2, 0\n\ +._158:\n\ + .word gUnknown_08376500+0x4\n\ + .word gUnknown_08376500+0x9\n\ + .word gUnknown_08376500+0x17\n\ + .word gUnknown_08376500+0xd\n\ +._155:\n\ + bl RtcCalcLocalTime\n\ + add r0, r6, #0\n\ + bl FormatHexRtcTime\n\ + mov r2, #0x14\n\ + add r2, r2, r6\n\ + mov r9, r2\n\ + mov r0, r9\n\ + bl debug_sub_8009894\n\ + mov r0, #0x28\n\ + add r0, r0, r6\n\ + mov sl, r0\n\ + ldr r4, ._163\n\ + mov r1, #0x2\n\ + ldsb r1, [r4, r1]\n\ + mov r2, #0x3\n\ + ldsb r2, [r4, r2]\n\ + mov r3, #0x4\n\ + ldsb r3, [r4, r3]\n\ + bl FormatDecimalTime\n\ + mov r1, #0x3c\n\ + add r1, r1, r6\n\ + mov r8, r1\n\ + mov r2, #0x0\n\ + ldsh r1, [r4, r2]\n\ + mov r0, r8\n\ + mov r2, #0x1\n\ + mov r3, #0x4\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r0, ._163 + 4\n\ + ldrb r0, [r0, #0x12]\n\ + cmp r0, #0\n\ + bne ._160 @cond_branch\n\ + add r0, r6, #0\n\ + mov r1, #0x14\n\ + mov r2, #0xe\n\ + bl MenuPrint\n\ + mov r0, r9\n\ + mov r1, #0xc\n\ + mov r2, #0xe\n\ + bl MenuPrint\n\ + mov r0, sl\n\ + mov r1, #0x14\n\ + mov r2, #0x10\n\ + bl MenuPrint\n\ + mov r0, r8\n\ + mov r1, #0xc\n\ + mov r2, #0x10\n\ + bl MenuPrint\n\ +._160:\n\ + ldrh r1, [r5, #0x2]\n\ + mov r2, #0x2\n\ + ldsh r0, [r5, r2]\n\ + cmp r0, #0x13\n\ + ble ._161 @cond_branch\n\ + add r0, r1, #1\n\ + strh r0, [r5, #0x2]\n\ + b ._165\n\ +._164:\n\ + .align 2, 0\n\ +._163:\n\ + .word gLocalTime\n\ + .word gSaveBlock2\n\ +._161:\n\ + ldr r0, ._166\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._165 @cond_branch\n\ + bl MenuZeroFillScreen\n\ + add r0, r7, #0\n\ + bl DestroyTask\n\ + bl ScriptContext2_Disable\n\ +._165:\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._167:\n\ + .align 2, 0\n\ +._166:\n\ + .word gMain"); +} + +#endif \ No newline at end of file diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c index 5014e97e3..6d40c53aa 100644 --- a/src/field/field_fadetransition.c +++ b/src/field/field_fadetransition.c @@ -511,6 +511,22 @@ void sub_80810DC(void) CreateTask(sub_8081050, 10); } +#if DEBUG + +__attribute__((naked)) +void debug_sub_80888D8() +{ + asm("\ + PUSH {LR}\n\ + BL debug_sub_8052E04\n\ + BL sub_8080E88\n\ + BL ScriptContext2_Enable\n\ + POP {R0}\n\ + BX R0"); +} + +#endif + void task0A_fade_n_map_maybe(u8 taskId) { struct Task *task = &gTasks[taskId]; diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index e4328acfc..7d90b9f4d 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -72,6 +72,115 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass = .callback = sub_80A2A48, }; +#if DEBUG +__attribute__((naked)) +void debug_sub_80AFEE4() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, r8\n" + " push {r7}\n" + " mov r0, #0x52\n" + " bl npc_before_player_of_type\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._1 @cond_branch\n" + " ldr r1, ._3\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl sub_80A2634\n" + " b ._8\n" + "._4:\n" + " .align 2, 0\n" + "._3:\n" + " .word gLastFieldPokeMenuOpened\n" + "._1:\n" + " ldr r4, ._9\n" + " add r1, r4, #2\n" + " add r0, r4, #0\n" + " bl PlayerGetDestCoords\n" + " mov r7, #0x0\n" + " mov r8, r4\n" + "._12:\n" + " ldr r1, ._9 + 4\n" + " add r0, r7, r1\n" + " mov r2, r8\n" + " ldrh r2, [r2, #0x2]\n" + " add r0, r0, r2\n" + " mov r6, #0x0\n" + " lsl r0, r0, #0x10\n" + " asr r5, r0, #0x10\n" + "._11:\n" + " ldr r1, ._9 + 4\n" + " add r0, r6, r1\n" + " mov r2, r8\n" + " ldrh r2, [r2]\n" + " add r0, r0, r2\n" + " lsl r0, r0, #0x10\n" + " asr r4, r0, #0x10\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " bl MapGridGetZCoordAt\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r2, r8\n" + " mov r1, #0x4\n" + " ldsb r1, [r2, r1]\n" + " cmp r0, r1\n" + " bne ._7 @cond_branch\n" + " add r0, r4, #0\n" + " add r1, r5, #0\n" + " bl MapGridGetMetatileBehaviorAt\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " add r0, r4, #0\n" + " bl MetatileBehavior_IsPokeGrass\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " beq ._6 @cond_branch\n" + " add r0, r4, #0\n" + " bl MetatileBehavior_IsAshGrass\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._7 @cond_branch\n" + "._6:\n" + " ldr r1, ._9 + 8\n" + " mov r0, #0x0\n" + " strb r0, [r1]\n" + " bl sub_80A25E8\n" + " b ._8\n" + "._10:\n" + " .align 2, 0\n" + "._9:\n" + " .word gUnknown_0203923C\n" + " .word 0xffff\n" + " .word gLastFieldPokeMenuOpened\n" + "._7:\n" + " add r0, r6, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r6, r0, #0x18\n" + " cmp r6, #0x2\n" + " bls ._11 @cond_branch\n" + " add r0, r7, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r7, r0, #0x18\n" + " cmp r7, #0x2\n" + " bls ._12 @cond_branch\n" + " bl ScriptContext2_Disable\n" + "._8:\n" + " pop {r3}\n" + " mov r8, r3\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "\n" + ); +} +#endif + bool8 SetUpFieldMove_Cut(void) { s16 x, y; diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c index 22f170184..d8f70200c 100644 --- a/src/field/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -71,6 +71,36 @@ static const u16 gUnknown_083F809C[] = INCBIN_U16("graphics/misc/83F809C.gbapal" static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz"); static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz"); +#if DEBUG +__attribute__((naked)) +void debug_sub_8122080(void) +{ + asm("\ + push {lr}\n\ + ldr r0, ._4\n\ + ldrb r0, [r0, #0x15]\n\ + cmp r0, #0x1\n\ + bne ._2 @cond_branch\n\ + ldr r0, ._4 + 4\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._2 @cond_branch\n\ + bl sub_810CBFC\n\ + b ._3\n\ +._5:\n\ + .align 2, 0\n\ +._4:\n\ + .word gMapHeader\n\ + .word 0x828\n\ +._2:\n\ + bl ScriptContext2_Disable\n\ +._3:\n\ + pop {r0}\n\ + bx r0"); +} +#endif + bool8 SetUpFieldMove_Flash(void) { if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH)) diff --git a/src/field/fldeff_strength.c b/src/field/fldeff_strength.c index 565ac1651..9f9cd4013 100644 --- a/src/field/fldeff_strength.c +++ b/src/field/fldeff_strength.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/map_objects.h" #include "braille_puzzles.h" #include "field_effect.h" #include "party_menu.h" @@ -20,6 +21,28 @@ extern void (*gUnknown_03005CE4)(void); extern u8 S_UseStrength[]; +#if DEBUG +void debug_sub_8130318(void) +{ + if (ShouldDoBrailleStrengthEffect()) + { + gLastFieldPokeMenuOpened = 0; + gSpecialVar_Result = 0; + sub_811AA38(); + } + else if (npc_before_player_of_type(MAP_OBJ_GFX_PUSHABLE_BOULDER) == TRUE) + { + gLastFieldPokeMenuOpened = 0; + gSpecialVar_Result = 0; + sub_811AA18(); + } + else + { + ScriptContext2_Disable(); + } +} +#endif + bool8 SetUpFieldMove_Strength(void) { if (ShouldDoBrailleStrengthEffect()) diff --git a/src/field/item_menu.c b/src/field/item_menu.c index e0575af4c..125edfef2 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -158,6 +158,9 @@ extern struct PocketScrollState gBagPocketScrollStates[]; extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots extern const u8 Event_NoRegisteredItem[]; +// TODO: decompile the debug code so we can use static in this file +#define static + extern const struct CompressedSpriteSheet sMaleBagSpriteSheet; extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet; extern const struct CompressedSpritePalette sBagSpritePalette; @@ -384,6 +387,390 @@ static void sub_80A3134(void) } } +#if DEBUG +__attribute__((naked)) +static bool8 SetupBagMultistep(void) +{ + asm("\ + push {r4, r5, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._5\n\ + ldr r1, ._5 + 4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x10\n\ + bls ._3 @cond_branch\n\ + b ._66\n\ +._3:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._5 + 8\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._6:\n\ + .align 2, 0\n\ +._5:\n\ + .word gMain\n\ + .word 0x43c\n\ + .word ._7\n\ +._7:\n\ + .word ._8\n\ + .word ._9\n\ + .word ._10\n\ + .word ._11\n\ + .word ._12\n\ + .word ._13\n\ + .word ._14\n\ + .word ._15\n\ + .word ._16\n\ + .word ._17\n\ + .word ._18\n\ + .word ._19\n\ + .word ._20\n\ + .word ._21\n\ + .word ._22\n\ + .word ._23\n\ + .word ._24\n\ +._8:\n\ + bl sub_80F9438\n\ + bl sub_80A34E8\n\ + b ._61\n\ +._9:\n\ + bl remove_some_task\n\ + ldr r1, ._27\n\ + ldr r0, ._27 + 4\n\ + add r1, r1, r0\n\ + b ._62\n\ +._28:\n\ + .align 2, 0\n\ +._27:\n\ + .word gMain\n\ + .word 0x43c\n\ +._10:\n\ + bl gpu_pal_allocator_reset__manage_upper_four\n\ + b ._61\n\ +._11:\n\ + bl sub_80F9020\n\ + ldr r0, ._31\n\ + ldr r1, ._31 + 4\n\ + add r0, r0, r1\n\ + mov r1, #0x0\n\ + strb r1, [r0]\n\ + b ._61\n\ +._32:\n\ + .align 2, 0\n\ +._31:\n\ + .word +0x2000000\n\ + .word 0x1ffff\n\ +._12:\n\ + bl ResetPaletteFade\n\ + ldr r2, ._34\n\ + ldrb r0, [r2, #0x8]\n\ + mov r1, #0x80\n\ + orr r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ + ldr r1, ._34 + 4\n\ + ldr r0, ._34 + 8\n\ + add r1, r1, r0\n\ + b ._62\n\ +._35:\n\ + .align 2, 0\n\ +._34:\n\ + .word gPaletteFade\n\ + .word gMain\n\ + .word 0x43c\n\ +._13:\n\ + bl ResetSpriteData\n\ + b ._61\n\ +._14:\n\ + bl sub_80A3520\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._37 @cond_branch\n\ + b ._66\n\ +._37:\n\ + ldr r1, ._40\n\ + ldr r0, ._40 + 4\n\ + add r1, r1, r0\n\ + b ._62\n\ +._41:\n\ + .align 2, 0\n\ +._40:\n\ + .word gMain\n\ + .word 0x43c\n\ +._15:\n\ + ldr r0, ._43\n\ + bl SetUpWindowConfig\n\ + b ._61\n\ +._44:\n\ + .align 2, 0\n\ +._43:\n\ + .word gWindowConfig_81E6DFC\n\ +._16:\n\ + ldr r0, ._46\n\ + bl MultistepInitMenuWindowBegin\n\ + ldr r1, ._46 + 4\n\ + ldr r0, ._46 + 8\n\ + add r1, r1, r0\n\ + b ._62\n\ +._47:\n\ + .align 2, 0\n\ +._46:\n\ + .word gWindowConfig_81E6DFC\n\ + .word gMain\n\ + .word 0x43c\n\ +._17:\n\ + bl MultistepInitMenuWindowContinue\n\ + cmp r0, #0\n\ + bne ._48 @cond_branch\n\ + b ._66\n\ +._48:\n\ + b ._61\n\ +._18:\n\ + bl sub_80F944C\n\ + bl LoadScrollIndicatorPalette\n\ + mov r0, #0x0\n\ + mov r1, #0xac\n\ + mov r2, #0xc\n\ + bl CreateVerticalScrollIndicators\n\ + mov r0, #0x1\n\ + mov r1, #0xac\n\ + mov r2, #0x94\n\ + bl CreateVerticalScrollIndicators\n\ + mov r0, #0x2\n\ + mov r1, #0x1c\n\ + mov r2, #0x58\n\ + bl CreateVerticalScrollIndicators\n\ + mov r0, #0x3\n\ + mov r1, #0x64\n\ + mov r2, #0x58\n\ + bl CreateVerticalScrollIndicators\n\ + mov r0, #0x0\n\ + mov r1, #0x2\n\ + bl sub_80F9988\n\ + mov r0, #0x1\n\ + mov r1, #0x2\n\ + bl sub_80F9988\n\ + mov r0, #0x2\n\ + mov r1, #0x2\n\ + bl sub_80F9988\n\ + mov r0, #0x3\n\ + mov r1, #0x2\n\ + bl sub_80F9988\n\ + ldr r0, ._53\n\ + ldrb r0, [r0]\n\ + sub r0, r0, #0x4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bhi ._51 @cond_branch\n\ + mov r0, #0x2\n\ + mov r1, #0x1\n\ + bl sub_80F979C\n\ + mov r0, #0x3\n\ + mov r1, #0x1\n\ + bl sub_80F979C\n\ +._51:\n\ + ldr r1, ._53 + 4\n\ + ldr r0, ._53 + 8\n\ + add r1, r1, r0\n\ + b ._62\n\ +._54:\n\ + .align 2, 0\n\ +._53:\n\ + .word gUnknown_03000701\n\ + .word gMain\n\ + .word 0x43c\n\ +._19:\n\ + ldr r1, ._56\n\ + mov r0, #0x10\n\ + strb r0, [r1]\n\ + ldr r4, ._56 + 4\n\ + ldr r5, ._56 + 8\n\ + ldrb r1, [r5]\n\ + add r1, r1, #0x1\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + add r0, r4, #0\n\ + bl sub_80A39B8\n\ + ldrb r1, [r5]\n\ + add r0, r4, #0\n\ + bl sub_80A3AC0\n\ + bl sub_80A3D08\n\ + ldr r4, ._56 + 12\n\ + ldr r0, [r4, #0x10]\n\ + ldr r1, [r4, #0x14]\n\ + bl sub_80A3C34\n\ + ldr r0, [r4, #0x18]\n\ + ldr r1, [r4, #0x1c]\n\ + bl sub_80A3C34\n\ + bl sub_80A3D40\n\ + ldr r1, ._56 + 16\n\ + mov r0, #0x0\n\ + ldsb r0, [r5, r0]\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r4\n\ + ldr r0, [r0]\n\ + str r0, [r1]\n\ + bl sub_80A362C\n\ + b ._61\n\ +._57:\n\ + .align 2, 0\n\ +._56:\n\ + .word gUnknown_0203855A\n\ + .word gBGTilemapBuffers+0x1000\n\ + .word gUnknown_02038559\n\ + .word gBagPockets\n\ + .word gUnknown_03005D24\n\ +._20:\n\ + ldr r0, ._59\n\ + mov r1, #0x0\n\ + mov r2, #0x7\n\ + bl sub_80A48E8\n\ + ldr r1, ._59 + 4\n\ + ldr r4, ._59 + 8\n\ + mov r0, #0x0\n\ + ldsb r0, [r4, r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x1]\n\ + ldrb r0, [r0]\n\ + add r1, r1, r0\n\ + ldr r0, ._59 + 12\n\ + ldr r0, [r0]\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + mov r2, #0x0\n\ + ldsh r0, [r1, r2]\n\ + bl ItemListMenu_InitDescription\n\ + bl ItemListMenu_InitMenu\n\ + ldr r1, ._59 + 16\n\ + ldrb r0, [r4]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + ldr r1, ._59 + 20\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + ldr r1, ._59 + 24\n\ + ldr r0, ._59 + 28\n\ + add r1, r1, r0\n\ + b ._62\n\ +._60:\n\ + .align 2, 0\n\ +._59:\n\ + .word 0xffff\n\ + .word gUnknown_03005D10\n\ + .word gUnknown_02038559\n\ + .word gUnknown_03005D24\n\ + .word gUnknown_0203855B\n\ + .word gUnknown_0203855C\n\ + .word gMain\n\ + .word 0x43c\n\ +._21:\n\ + bl CreateBagSprite\n\ + mov r0, #0x0\n\ + bl CreateBagPokeballSprite\n\ + bl sub_80A3740\n\ + b ._61\n\ +._22:\n\ + ldr r3, ._63\n\ + ldrh r2, [r3]\n\ + mov r0, #0x0\n\ + strh r0, [r3]\n\ + ldr r4, ._63 + 4\n\ + ldrh r0, [r4]\n\ + mov r1, #0x1\n\ + orr r0, r0, r1\n\ + strh r0, [r4]\n\ + strh r2, [r3]\n\ + ldr r2, ._63 + 8\n\ + ldrh r0, [r2]\n\ + mov r1, #0x8\n\ + orr r0, r0, r1\n\ + strh r0, [r2]\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r2, ._63 + 12\n\ + ldrb r1, [r2, #0x8]\n\ + mov r0, #0x7f\n\ + and r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ + ldr r1, ._63 + 16\n\ + ldr r0, ._63 + 20\n\ + add r1, r1, r0\n\ + b ._62\n\ +._64:\n\ + .align 2, 0\n\ +._63:\n\ + .word 0x4000208\n\ + .word 0x4000200\n\ + .word 0x4000004\n\ + .word gPaletteFade\n\ + .word gMain\n\ + .word 0x43c\n\ +._23:\n\ + bl sub_8055870\n\ + cmp r0, #0x1\n\ + beq ._66 @cond_branch\n\ +._61:\n\ + ldr r1, ._67\n\ + ldr r2, ._67 + 4\n\ + add r1, r1, r2\n\ +._62:\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + b ._66\n\ +._68:\n\ + .align 2, 0\n\ +._67:\n\ + .word gMain\n\ + .word 0x43c\n\ +._24:\n\ + ldr r0, ._71\n\ + bl SetVBlankCallback\n\ + ldr r0, ._71 + 4\n\ + bl SetMainCallback2\n\ + bl sub_80A751C\n\ + bl sub_80A7630\n\ + bl sub_80A770C\n\ + bl sub_80A7828\n\ + bl sub_80A78B8\n\ + ldr r0, ._71 + 8\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._69 @cond_branch\n\ + ldr r0, ._71 + 12\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x8\n\ + ldr r2, ._71 + 16\n\ + mov r3, #0x0\n\ + bl debug_sub_8008218\n\ +._69:\n\ + mov r0, #0x1\n\ + b ._70\n\ +._72:\n\ + .align 2, 0\n\ +._71:\n\ + .word sub_80A3134+1\n\ + .word sub_80A3118+1\n\ + .word gLinkOpen\n\ + .word 0x600f5e0\n\ + .word 0x600f800\n\ +._66:\n\ + mov r0, #0x0\n\ +._70:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5}\n\ + pop {r1}\n\ + bx r1"); +} +#else static bool8 SetupBagMultistep(void) { u32 index; @@ -508,6 +895,7 @@ static bool8 SetupBagMultistep(void) } return FALSE; } +#endif static bool8 sub_80A34B4(void) { @@ -634,6 +1022,79 @@ void ClearBag(void) ResetBagScrollPositions(); } +#if DEBUG +__attribute__((naked)) +void debug_sub_80A3714() +{ + asm("\ + push {r4, r5, r6, lr}\n\ + add sp, sp, #0xfffffff4\n\ + mov r5, #0x0\n\ + ldr r2, ._138\n\ + mov r1, #0x0\n\ +._134:\n\ + lsl r0, r5, #0x1\n\ + add r0, r0, sp\n\ + strh r1, [r0]\n\ + add r0, r5, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r5, r0, #0x10\n\ + cmp r5, #0x4\n\ + bls ._134 @cond_branch\n\ + mov r5, #0x0\n\ + ldrh r0, [r2]\n\ + cmp r0, #0\n\ + beq ._136 @cond_branch\n\ + add r6, r2, #0\n\ +._137:\n\ + lsl r4, r5, #0x2\n\ + add r4, r4, r6\n\ + ldrh r0, [r4]\n\ + bl ItemId_GetPocket\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x8\n\ + ldr r1, ._138 + 4\n\ + add r0, r0, r1\n\ + lsr r0, r0, #0x10\n\ + ldr r1, ._138 + 8\n\ + lsl r2, r0, #0x3\n\ + add r2, r2, r1\n\ + lsl r0, r0, #0x1\n\ + mov r1, sp\n\ + add r3, r1, r0\n\ + ldrh r1, [r3]\n\ + ldr r0, [r2]\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + ldr r0, [r4]\n\ + str r0, [r1]\n\ + ldrh r0, [r3]\n\ + add r0, r0, #0x1\n\ + strh r0, [r3]\n\ + add r0, r5, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r5, r0, #0x10\n\ + cmp r5, #0x3b\n\ + bhi ._136 @cond_branch\n\ + lsl r0, r5, #0x2\n\ + add r0, r0, r6\n\ + ldrh r0, [r0]\n\ + cmp r0, #0\n\ + bne ._137 @cond_branch\n\ +._136:\n\ + add sp, sp, #0xc\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._139:\n\ + .align 2, 0\n\ +._138:\n\ + .word gUnknown_Debug_083EBC68\n\ + .word 0xffff0000\n\ + .word gBagPockets"); +} +#endif + static void sub_80A3740(void) { const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE}; @@ -3573,12 +4034,49 @@ static void sub_80A73FC(void) MenuCursor_Destroy814AD44(); } +#if DEBUG +__attribute__((naked)) +static void sub_80A740C(void) +{ + asm("\ + push {lr}\n\ + add sp, sp, #0xfffffffc\n\ + bl sub_80A75E4\n\ + bl sub_80A7768\n\ + bl sub_80A7420\n\ + ldr r0, ._931\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._930 @cond_branch\n\ + ldr r0, ._931 + 4\n\ + ldr r1, ._931 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x1\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._930:\n\ + add sp, sp, #0x4\n\ + pop {r0}\n\ + bx r0\n\ +._932:\n\ + .align 2, 0\n\ +._931:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else static void sub_80A740C(void) { sub_80A75E4(); sub_80A7768(); sub_80A7420(); } +#endif static void sub_80A7420(void) { diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 70234ac48..2b3405640 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -912,6 +912,48 @@ static bool8 SetUpFieldMove_Waterfall(void) return FALSE; } +#if DEBUG +__attribute__((naked)) +void debug_sub_80986AC() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + mov r4, sp\n\ + add r4, r4, #0x2\n\ + mov r0, sp\n\ + add r1, r4, #0\n\ + bl GetXYCoordsOneStepInFrontOfPlayer\n\ + mov r0, sp\n\ + mov r1, #0x0\n\ + ldsh r0, [r0, r1]\n\ + mov r2, #0x0\n\ + ldsh r1, [r4, r2]\n\ + bl MapGridGetMetatileBehaviorAt\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl MetatileBehavior_IsWaterfall\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._274 @cond_branch\n\ + bl IsPlayerSurfingNorth\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._274 @cond_branch\n\ + bl sub_808AE08\n\ + b ._275\n\ +._274:\n\ + bl ScriptContext2_Disable\n\ +._275:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0"); +} +#endif + static void sub_808AE8C(void) { u8 i; -- cgit v1.2.3 From f07cdb4c9723bdbb1fcdbbe622d39936ae5b532f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 17:47:46 -0500 Subject: use Dma Large loops for every while(1) Dma loop --- src/battle/battle_controller_player.c | 17 +------------ src/engine/naming_screen.c | 15 +----------- src/engine/option_menu.c | 17 +------------ src/engine/reset_rtc_screen.c | 20 +-------------- src/engine/trade.c | 20 ++------------- src/engine/trainer_card.c | 46 +++-------------------------------- src/field/menu_helpers.c | 19 +-------------- src/field/overworld.c | 19 +-------------- src/field/party_menu.c | 18 +------------- src/field/wallclock.c | 19 ++------------- src/pokemon/pokedex.c | 29 +++++----------------- src/scene/contest_painting.c | 17 +------------ 12 files changed, 22 insertions(+), 234 deletions(-) (limited to 'src') diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 0d05b7aed..f036e841f 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -2749,22 +2749,7 @@ void PlayerHandleDMATransfer(void) | (gBattleBufferA[gActiveBank][4] << 24); u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); - const u8 *src = &gBattleBufferA[gActiveBank][7]; - u8 *dst = (u8 *)val1; - u32 size = val2; - - while (1) - { - if (size <= 0x1000) - { - DmaCopy16(3, src, dst, size); - break; - } - DmaCopy16(3, src, dst, 0x1000); - src += 0x1000; - dst += 0x1000; - size -= 0x1000; - } + Dma3CopyLarge16_(&gBattleBufferA[gActiveBank][7], (u8 *)val1, val2); PlayerBufferExecCompleted(); } diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index eddfdeda5..d54b84720 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -258,20 +258,7 @@ static void NamingScreen_InitDisplayMode(void) static void NamingScreen_ClearVram(void) { - u8 *addr = (void *)VRAM; - u32 size = 0x10000; - - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (void *)VRAM, 0x10000, 0x1000); } static void NamingScreen_ClearOam(void) diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index 1fc78efaa..d4e921a0e 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -76,9 +76,6 @@ void CB2_InitOptionMenu(void) default: case 0: { - u8 *addr; - u32 size; - SetVBlankCallback(NULL); REG_DISPCNT = 0; REG_BG2CNT = 0; @@ -90,19 +87,7 @@ void CB2_InitOptionMenu(void) REG_BG1VOFS = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; - addr = (u8 *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); gMain.state++; diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index c7d45e929..ce4afe922 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -414,28 +414,10 @@ void Task_ResetRtc_0(u8 taskId) void CB2_InitResetRtcScreen(void) { - u8 *addr; - u32 size; - REG_DISPCNT = 0; SetVBlankCallback(NULL); - DmaClear16(3, PLTT, PLTT_SIZE); - - addr = (u8 *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); ResetOamRange(0, 128); LoadOam(); ScanlineEffect_Stop(); diff --git a/src/engine/trade.c b/src/engine/trade.c index 3a14adaca..81485d3f6 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1453,9 +1453,7 @@ static void sub_8048AB4(void) static void sub_8048B0C(u8 a0) { int i; - u16 *dest; - const u16 *src; - u32 size; + switch (a0) { case 0: @@ -1464,21 +1462,7 @@ static void sub_8048B0C(u8 a0) gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i); gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i); } - src = gUnknown_08EA0348; - dest = (u16 *)BG_VRAM; - size = 0x1280; - while (1) - { - DmaCopy16(3, src, dest, BLOCKSIZE * sizeof(u16)); - src += BLOCKSIZE; - dest += BLOCKSIZE; - size -= BLOCKSIZE * sizeof(u16); - if (size <= BLOCKSIZE * sizeof(u16)) - { - DmaCopy16(3, src, dest, size); - break; - } - } + DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); for (i = 0; i < 0x400; i ++) gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; dest = BG_SCREEN_ADDR(6); diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c index 9d09575c8..b49628bfa 100644 --- a/src/engine/trainer_card.c +++ b/src/engine/trainer_card.c @@ -441,27 +441,12 @@ static void sub_8093550(void) void sub_8093598(void) { - u8 *addr = (void *)VRAM; - u32 size = 0x10000; - - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (void *)VRAM, 0x10000, 0x1000); } void sub_80935EC(void) { - void *addr = (void *)OAM; - - DmaFill16(3, 0, addr, 0x400); + DmaFill16Defvars(3, 0, (void *)OAM, 0x400); } void sub_8093610(void) @@ -1163,33 +1148,10 @@ static void TrainerCard_ResetOffsetRegisters(void) static void TrainerCard_CopyGraphics(void) { - const u8 *src; - u8 *dst; - u32 size; - TrainerCard_LoadPalettes(); LoadPalette(gUnknown_083B5F6C, 0xE0, 32); - src = gMenuTrainerCard_Gfx; - dst = (void *)VRAM; - size = 0x1480; - while (1) - { - DmaCopy16(3, src, dst, 0x1000); - src += 0x1000; - dst += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, src, dst, size); - break; - } - } - { - const void *src = gBadgesTiles; - void *dst = (void *)(VRAM + 0x1480); - - DmaCopy16(3, src, dst, 0x400); - } + DmaCopyLarge16(3, gMenuTrainerCard_Gfx, (void *)VRAM, 0x1480, 0x1000); + DmaCopy16Defvars(3, gBadgesTiles, (void *)(VRAM + 0x1480), 0x400); } extern const u16 *const gTrainerCardPalettes[]; diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 54668addb..388d98ec7 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -296,9 +296,6 @@ bool8 sub_80F9344(void) void sub_80F9368(void) { - u8 *addr; - u32 size; - REG_DISPCNT = 0; REG_BG3CNT = 0; REG_BG2CNT = 0; @@ -312,21 +309,7 @@ void sub_80F9368(void) REG_BG1VOFS = 0; REG_BG0HOFS = 0; REG_BG0VOFS = 0; - - addr = (u8 *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); } diff --git a/src/field/overworld.c b/src/field/overworld.c index 86b0a5dac..a6d34e103 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1664,29 +1664,12 @@ void do_load_map_stuff_loop(u8 *a1) void sub_8054BA8(void) { - u8 *addr; - u32 size; - REG_DISPCNT = 0; ScanlineEffect_Stop(); DmaClear16(3, PLTT + 2, PLTT_SIZE - 2); - - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); ResetOamRange(0, 128); LoadOam(); } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 48275435e..53bad9618 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -620,27 +620,11 @@ bool8 SetupDefaultPartyMenu(void) bool8 InitPartyMenu(void) { - u8 *addr; - u32 size; - switch (gMain.state) { case 0: SetVBlankCallback(NULL); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); diff --git a/src/field/wallclock.c b/src/field/wallclock.c index aaa7f9ae8..1f743a61a 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -190,10 +190,7 @@ static void WallClockVblankCallback(void) static void LoadWallClockGraphics(void) { - u8 *addr; - u32 size; - - SetVBlankCallback(0); + SetVBlankCallback(NULL); REG_DISPCNT = 0; REG_BG3CNT = 0; REG_BG2CNT = 0; @@ -208,19 +205,7 @@ static void LoadWallClockGraphics(void) REG_BG0HOFS = 0; REG_BG0VOFS = 0; - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); DmaClear32(3, OAM, OAM_SIZE); DmaClear16(3, PLTT, PLTT_SIZE); diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index faebe526a..cbd816206 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1394,29 +1394,12 @@ void CB2_InitPokedex(void) { case 0: default: - { - u8 *addr; - u32 size; - - SetVBlankCallback(NULL); - sub_8091060(0); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state = 1; - } + SetVBlankCallback(NULL); + sub_8091060(0); + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; break; case 1: ScanlineEffect_Stop(); diff --git a/src/scene/contest_painting.c b/src/scene/contest_painting.c index 3aa898b03..0aa02312f 100644 --- a/src/scene/contest_painting.c +++ b/src/scene/contest_painting.c @@ -156,23 +156,8 @@ static void ShowContestPainting(void) break; case 1: { - u8 *addr; - size_t size; - ResetPaletteFade(); - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill32(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill32(3, 0, addr, size); - break; - } - } + DmaFill32Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); ResetSpriteData(); gMain.state++; break; -- cgit v1.2.3 From 093422f3065ed47db9a475b0c9d67e9c5bc2c364 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 18:10:16 -0500 Subject: use dma macros for remaining missing dma while(1) loops --- src/field/slot_machine.c | 19 +------------------ src/pokemon/mon_markings.c | 3 +-- src/pokemon/pokemon_summary_screen.c | 22 +++++----------------- src/scene/berry_blender.c | 20 ++------------------ src/scene/egg_hatch.c | 19 +------------------ src/scene/hall_of_fame.c | 33 ++++----------------------------- 6 files changed, 14 insertions(+), 102 deletions(-) (limited to 'src') diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 9ff3a037c..21bf29e91 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3901,26 +3901,9 @@ static void sub_8106404(void) } static void sub_8106448(void) { - u32 offsetRead, offsetWrite; - u32 size; - LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer); - offsetRead = (u32)eSlotMachineGfxBuffer; - offsetWrite = BG_VRAM; - size = SLOTMACHINE_GFX_TILES * 32; - while (TRUE) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); - offsetRead += 0x1000; - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); - break; - } - } + DmaCopyLarge16(3, eSlotMachineGfxBuffer, BG_VRAM, SLOTMACHINE_GFX_TILES * 32, 0x1000); LoadPalette(gUnknown_08E95A18, 0, 160); LoadPalette(gPalette_83EDE24, 208, 32); diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c index 3734856b8..66c82a706 100644 --- a/src/pokemon/mon_markings.c +++ b/src/pokemon/mon_markings.c @@ -631,6 +631,5 @@ struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, const u16 *palette, u16 void sub_80F7A10(u8 markings, void *dest) { - const void *src = gUnknown_083E4A14 + markings * 0x80; - DmaCopy16(3, src, dest, 0x80); + DmaCopy16Defvars(3, gUnknown_083E4A14 + markings * 0x80, dest, 0x80); } diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index bf8306fc0..eab6fb4ee 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -690,9 +690,6 @@ void sub_809DA1C(void) bool8 sub_809DA84(void) { - const u16 *src; - void *dest; - switch (gMain.state) { case 0: @@ -709,8 +706,7 @@ bool8 sub_809DA84(void) gMain.state++; break; case 3: - dest = (void *)VRAM; - DmaClearLarge(3, dest, 0x10000, 0x1000, 32); + DmaClearLarge(3, (void *)(VRAM + 0x0), 0x10000, 0x1000, 32); gMain.state++; break; case 4: @@ -736,14 +732,8 @@ bool8 sub_809DA84(void) gMain.state++; break; case 9: - src = gSummaryScreenTextTiles; - dest = (void *)VRAM + 0xD000; - DmaCopy16(3, src, dest, 320); - - src = sSummaryScreenButtonTiles; - dest = (void *)VRAM + 0xD140; - DmaCopy16(3, src, dest, 256); - + DmaCopy16Defvars(3, gSummaryScreenTextTiles, (void *)(VRAM + 0xD000), 320); + DmaCopy16Defvars(3, sSummaryScreenButtonTiles, (void *)(VRAM + 0xD140), 256); pssData.loadGfxState = 0; gMain.state++; break; @@ -3622,16 +3612,14 @@ static void DrawSummaryScreenNavigationDots(void) } } - dest = (void *)(VRAM + 0xE016); - DmaCopy16(3, arr, dest, 16); + DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE016), 16); for (i = 0; i < 8; i++) { arr[i] += 0x10; } - dest = (void *)(VRAM + 0xE056); - DmaCopy16(3, arr, dest, 16); + DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16); } #else __attribute__((naked)) diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 0a7e14e4e..6b6469634 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -842,24 +842,8 @@ static bool8 sub_804E2EC(void) } break; case 2: - { - void* offsetRead = ewram10000; - void* offsetWrite = (void*)(VRAM); - u32 size = 0x2000; - while (TRUE) - { - DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - offsetRead += 0x1000; - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, offsetRead, offsetWrite, size); - break; - } - } - gBerryBlenderData->field_1++; - } + DmaCopyLarge16(3, ewram10000, (void *)(VRAM + 0x0), 0x2000, 0x1000); + gBerryBlenderData->field_1++; break; case 3: LZDecompressWram(gUnknown_08E6C920, ewram10000); diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index e0b798aea..8c585e067 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -505,28 +505,11 @@ static void CB2_EggHatch_0(void) break; case 7: { - u32 offsetRead, offsetWrite; u32 offsetRead2, offsetWrite2; - u32 size; REG_BG2CNT = 0x4C06; LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); - - offsetRead = (u32)(&gUnknown_0820CA98); - offsetWrite = (VRAM + 0x4000); - size = 0x1300; - while (TRUE) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000); - offsetRead += 0x1000; - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaCopy16(3, offsetRead, (void *) (offsetWrite), size); - break; - } - } + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)(VRAM + 0x4000), 0x1300, 0x1000); offsetRead2 = (u32)(&gUnknown_0820F798); offsetWrite2 = (u32)(VRAM + 0x6000); diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index a9532fd09..f7f7fb1cc 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -1199,8 +1199,8 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) static void sub_81433E0(void) { - u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4; - u32 size, size2, size3, size4; + u32 offsetWrite2, offsetWrite3; + u32 size2, size3; u16 i; REG_DISPCNT = 0; @@ -1221,19 +1221,7 @@ static void sub_81433E0(void) REG_BG3HOFS = 0; REG_BG3VOFS = 0; - offsetWrite = (VRAM); - size = 0x18000; - while (TRUE) - { - DmaFill16(3, 0, offsetWrite, 0x1000); - offsetWrite += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, offsetWrite, size); - break; - } - } + DmaFill16Large(3, 0, VRAM, 0x18000, 0x1000); offsetWrite2 = OAM; size2 = OAM_SIZE; @@ -1258,20 +1246,7 @@ static void sub_81433E0(void) *((u16*)(VRAM + 0x3000) + i) = 2; } - offsetWrite4 = ewram0_6; - size4 = 0x4000; - while (TRUE) - { - DmaFill16(3, 0, offsetWrite4, 0x1000); - offsetWrite4 += 0x1000; - size4 -= 0x1000; - if (size4 <= 0x1000) - { - DmaFill16(3, 0, offsetWrite4, size4); - break; - } - } - + DmaFill16Large(3, 0, ewram0_6, 0x4000, 0x1000); ResetPaletteFade(); LoadPalette(gHallOfFame_Pal, 0, 0x20); } -- cgit v1.2.3 From 233654746815b884d303cc3416c3fe6c377b4a73 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 17:30:45 -0600 Subject: resolve more undefined references --- src/battle/battle_2.c | 86 ++++++++++++++++++++--------------------- src/debug/kagaya_debug_menu.c | 6 +-- src/debug/nohara_debug_menu.c | 4 +- src/debug/start_menu_debug.c | 10 ++--- src/debug/taya_debug_window.c | 6 +-- src/debug/unk_debug_menu_3.c | 10 ++--- src/debug/watanabe_debug_menu.c | 4 +- src/engine/mystery_event_menu.c | 24 ++++++------ src/engine/reset_rtc_screen.c | 20 +++++----- src/engine/save.c | 4 +- src/field/berry_tag_screen.c | 2 +- src/field/choose_party.c | 2 +- src/field/field_weather.c | 10 ++--- src/field/item_menu.c | 28 +++++++------- src/field/mauville_man.c | 10 ++--- src/field/region_map.c | 14 +++---- src/field/slot_machine.c | 16 ++++---- src/field/start_menu.c | 2 +- src/pokemon/pokedex.c | 4 +- 19 files changed, 131 insertions(+), 131 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 454b47e08..7a819a8ef 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -340,13 +340,13 @@ void InitBattle(void) " .word 0x5006000\n" " .word 0x400004c\n" " .word 0x5051\n" - " .word gUnknown_030042C4\n" + " .word gBattle_WIN0H\n" " .word gUnknown_03004240\n" - " .word gUnknown_03004DE0\n" + " .word gScanlineEffectRegBuffers\n" " .word gUnknown_081F9674\n" " .word 0xff10\n" - " .word gWindowConfig_81E6C58\n" - " .word gUnknown_030042A4\n" + " .word gWindowTemplate_81E6C58\n" + " .word gBattle_BG0_X\n" " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" " .word gBattle_BG1_Y\n" @@ -358,9 +358,9 @@ void InitBattle(void) " .word gBattleTerrain\n" " .word gUnknown_03004210\n" " .word gUnknown_030041D0\n" - " .word gWindowConfig_81E71D0\n" + " .word gWindowTemplate_81E71D0\n" " .word gUnknown_03004250\n" - " .word gWindowConfig_81E71EC\n" + " .word gWindowTemplate_81E71EC\n" " .word gReservedSpritePaletteCount\n" " .word sub_800FCFC+1\n" " .word gBattleTypeFlags\n" @@ -1068,7 +1068,7 @@ void sub_800EC9C() " .word gPreBattleCallback1\n" " .word gMain\n" " .word debug_sub_80139E4+1\n" - " .word sub_800F808+1\n" + " .word BattleMainCB2+1\n" " .word gBattleTypeFlags\n" " .word gTrainerBattleOpponent\n" "\n" @@ -2313,7 +2313,7 @@ void sub_800F298() " .word gPreBattleCallback1\n" " .word gMain\n" " .word debug_sub_80139E4+1\n" - " .word sub_800F808+1\n" + " .word BattleMainCB2+1\n" " .word gBattleTypeFlags\n" " .word gTrainerBattleOpponent\n" "\n" @@ -3332,7 +3332,7 @@ void debug_sub_80108B8() " .word 0x40000d4\n" " .word 0x85006000\n" " .word 0x4000200\n" - " .word gUnknown_030042A4\n" + " .word gBattle_BG0_X\n" " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" " .word gBattle_BG1_Y\n" @@ -3350,7 +3350,7 @@ void debug_sub_80108B8() " .word 0x50001e0\n" " .word debug_sub_8011D40+1\n" " .word debug_sub_8010CAC+1\n" - " .word gWindowConfig_81E6C3C\n" + " .word gWindowTemplate_81E6C3C\n" " .word gUnknown_Debug_03004370\n" " .word gUnknown_Debug_03004360\n" " .word gUnknown_Debug_030043A0\n" @@ -5837,7 +5837,7 @@ void debug_sub_8011D40() " .word +0x2000000\n" " .word 0x6004000\n" " .word 0x80000800\n" - " .word gUnknown_030042A4\n" + " .word gBattle_BG0_X\n" " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" " .word gBattle_BG1_Y\n" @@ -5910,7 +5910,7 @@ void debug_sub_8011DD4() "._776:\n" " .word 0x4000008\n" " .word 0x9803\n" - " .word gUnknown_030042A4\n" + " .word gBattle_BG0_X\n" " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" " .word gBattle_BG1_Y\n" @@ -6063,7 +6063,7 @@ void debug_sub_8011EA0() " mov r3, r8\n" " bl Text_InitWindow\n" " ldr r0, ._823 + 8\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r1, ._823 + 12\n" " mov sl, r1\n" " lsl r4, r7, #0x1\n" @@ -6092,7 +6092,7 @@ void debug_sub_8011EA0() " add r1, r6, #0\n" " bl Text_InitWindow\n" " ldr r0, ._823 + 8\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r0, #0xff\n" " strb r0, [r6]\n" " ldrb r0, [r5]\n" @@ -6115,7 +6115,7 @@ void debug_sub_8011EA0() " mov r3, r8\n" " bl Text_InitWindow\n" " ldr r0, ._823 + 8\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " b ._848\n" "._824:\n" " .align 2, 0\n" @@ -6173,7 +6173,7 @@ void debug_sub_8011EA0() " mov r1, sl\n" " bl Text_InitWindow\n" " add r0, r6, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " lsl r4, r7, #0x1\n" " ldr r5, ._830 + 12\n" " ldrb r0, [r5]\n" @@ -6201,7 +6201,7 @@ void debug_sub_8011EA0() " mov r1, sl\n" " bl Text_InitWindow\n" " add r0, r6, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r0, #0xff\n" " mov r1, sl\n" " strb r0, [r1]\n" @@ -6252,7 +6252,7 @@ void debug_sub_8011EA0() " add r0, r6, #0\n" " bl Text_InitWindow\n" " add r0, r6, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " b ._848\n" "._834:\n" " .align 2, 0\n" @@ -6284,7 +6284,7 @@ void debug_sub_8011EA0() " add r1, r6, #0\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r4, #0x0\n" " ldr r3, ._839 + 12\n" " lsl r1, r7, #0x1\n" @@ -6366,7 +6366,7 @@ void debug_sub_8011EA0() " add r1, r6, #0\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " b ._848\n" "._850:\n" " .align 2, 0\n" @@ -6408,7 +6408,7 @@ void debug_sub_8011EA0() " add r1, r6, #0\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" "._848:\n" " add sp, sp, #0xc\n" " pop {r3, r4, r5}\n" @@ -6478,7 +6478,7 @@ void debug_sub_8012294() " mov r1, r9\n" " bl Text_InitWindow\n" " mov r0, sl\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldrb r4, [r7]\n" " lsl r4, r4, #0x1\n" " add r0, r5, #0\n" @@ -6515,7 +6515,7 @@ void debug_sub_8012294() " mov r1, r9\n" " bl Text_InitWindow\n" " mov r0, sl\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r0, #0xff\n" " mov r1, r9\n" " strb r0, [r1]\n" @@ -6555,7 +6555,7 @@ void debug_sub_8012294() " mov r1, r9\n" " bl Text_InitWindow\n" " mov r0, sl\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" "._853:\n" " add sp, sp, #0x4\n" " pop {r3, r4, r5}\n" @@ -6616,7 +6616,7 @@ void debug_sub_80123D8() " add r3, r7, #0\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " lsl r5, r5, #0x1\n" " ldr r1, ._858 + 12\n" " ldrb r0, [r1]\n" @@ -6648,7 +6648,7 @@ void debug_sub_80123D8() " add r3, r7, #0\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r0, #0x0\n" " mov r1, #0x12\n" " bl debug_sub_8010A7C\n" @@ -6663,7 +6663,7 @@ void debug_sub_80123D8() " mov r3, sl\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r1, ._858 + 12\n" " ldrb r0, [r1]\n" " mov r2, #0x46\n" @@ -6693,7 +6693,7 @@ void debug_sub_80123D8() " mov r3, sl\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " b ._857\n" "._859:\n" " .align 2, 0\n" @@ -6720,7 +6720,7 @@ void debug_sub_80123D8() " add r1, r6, #0\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldrh r2, [r4, #0x6]\n" " ldrb r3, [r4, #0x8]\n" " ldrb r0, [r4, #0xa]\n" @@ -6729,7 +6729,7 @@ void debug_sub_80123D8() " add r1, r6, #0\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" "._857:\n" " add sp, sp, #0x4\n" " pop {r3, r4, r5}\n" @@ -6783,7 +6783,7 @@ void debug_sub_8012540() " add r1, r5, #0\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " add sp, sp, #0x4\n" " pop {r4, r5, r6}\n" " pop {r0}\n" @@ -7130,8 +7130,8 @@ void debug_sub_8012688() " .word 0x40000d4\n" " .word 0x85006000\n" " .word 0x400004c\n" - " .word gWindowConfig_81E6C58\n" - " .word gUnknown_030042A4\n" + " .word gWindowTemplate_81E6C58\n" + " .word gBattle_BG0_X\n" " .word gBattle_BG0_Y\n" " .word gBattle_BG1_X\n" " .word gBattle_BG1_Y\n" @@ -7213,7 +7213,7 @@ void debug_sub_80128B4() " mov r3, #0x2\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r6, ._878 + 8\n" " ldrh r1, [r6]\n" " add r0, r4, #0\n" @@ -7239,7 +7239,7 @@ void debug_sub_80128B4() " mov r3, #0x2\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " add sp, sp, #0x4\n" " pop {r3}\n" " mov r8, r3\n" @@ -7284,7 +7284,7 @@ void debug_sub_8012938() " mov r3, #0x2\n" " bl Text_InitWindow\n" " add r0, r6, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r1, ._880 + 8\n" " add r0, r4, #0\n" " bl StringCopy\n" @@ -7308,7 +7308,7 @@ void debug_sub_8012938() " mov r3, #0x2\n" " bl Text_InitWindow\n" " add r0, r6, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r2, ._880 + 20\n" " ldr r1, ._880 + 24\n" " lsl r0, r5, #0x2\n" @@ -7624,7 +7624,7 @@ void debug_sub_8012B70() " mov r3, #0x1a\n" " bl Text_InitWindow\n" " add r0, r5, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " strh r6, [r4, #0xe]\n" " mov r0, #0x0\n" " bl debug_sub_8012B2C\n" @@ -7670,7 +7670,7 @@ void debug_sub_8012C08() " mov r3, #0x2\n" " bl Text_InitWindow\n" " add r0, r7, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r0, #0x0\n" " mov r1, #0x7\n" " bl debug_sub_8010A7C\n" @@ -7682,7 +7682,7 @@ void debug_sub_8012C08() " mov r3, #0x2\n" " bl Text_InitWindow\n" " add r0, r7, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0x18\n" @@ -7733,7 +7733,7 @@ void debug_sub_8012C08() " add r5, r4, #0\n" " ldr r4, ._907 + 8\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r1, ._907 + 12\n" " mov r2, #0xa4\n" " lsl r2, r2, #0x2\n" @@ -7743,7 +7743,7 @@ void debug_sub_8012C08() " mov r3, #0x1a\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r1, ._907\n" " add r0, r5, r6\n" " lsl r0, r0, #0x3\n" @@ -7818,7 +7818,7 @@ void debug_sub_8012D10() " mov r3, #0x13\n" " bl Text_InitWindow\n" " add r0, r4, #0\n" - " bl sub_8002F44\n" + " bl Text_PrintWindow8002F44\n" " ldr r1, ._920 + 8\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 8ece4ebec..321627a10 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -319,7 +319,7 @@ void debug_sub_80B0770() " .align 2, 0\n" "._30:\n" " .word gPlayerAvatar\n" - " .word gUnknown_0202FF84\n" + " .word gFieldEffectArguments\n" "._27:\n" " bl CloseMenu\n" "._29:\n" @@ -382,7 +382,7 @@ void debug_sub_80B07DC() "._37:\n" " .align 2, 0\n" "._36:\n" - " .word sub_80FC074+1\n" + " .word CB2_InitFlyRegionMap+1\n" "\n" ); } @@ -412,7 +412,7 @@ void debug_sub_80B0800() "._40:\n" " .align 2, 0\n" "._39:\n" - " .word gUnknown_0202FF84\n" + " .word gFieldEffectArguments\n" "\n" ); } diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 766137871..53c6394ba 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -419,7 +419,7 @@ void debug_sub_808F648() " bl debug_sub_808F6BC\n" " b ._40\n" "._32:\n" - " bl ProcessMenuInputNoWrap_\n" + " bl Menu_ProcessInputNoWrap_\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x1\n" @@ -998,7 +998,7 @@ void debug_sub_808FA88() " cmp r1, #0x21\n" " bls ._87 @cond_branch\n" " add r0, r7, #0\n" - " bl sub_80BFB54\n" + " bl GetTVChannelByShowType\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " add r1, r0, #0\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index e4ae404e2..321bbb951 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -949,7 +949,7 @@ void DebugMenu_807706C() "._114:\n" " .align 2, 0\n" "._113:\n" - " .word gWindowConfig_81E6CE4\n" + " .word gWindowTemplate_81E6CE4\n" " .word gCallback_03004AE8\n" " .word DebugMenu_807709C+1\n" "\n" @@ -1893,7 +1893,7 @@ void DebugMenu_Teleport() { asm( " push {lr}\n" - " bl sub_8053570\n" + " bl Overworld_SetWarpDestToLastHealLoc\n" " bl sub_8080E88\n" " bl ScriptContext2_Enable\n" " bl CloseMenu\n" @@ -2384,7 +2384,7 @@ void DebugMenu_8077974() " asr r1, r1, #0x18\n" " lsl r1, r1, #0x10\n" " lsr r1, r1, #0x10\n" - " bl sub_8082C0C\n" + " bl DoesSomeoneWantRematchIn\n" " cmp r0, #0\n" " beq ._228 @cond_branch\n" " ldr r0, ._230 + 12\n" @@ -5977,7 +5977,7 @@ void DebugMenu_8079058() "._618:\n" " .word gDebug0x839C60C\n" "._612:\n" - " bl ProcessMenuInputNoWrap_\n" + " bl Menu_ProcessInputNoWrap_\n" " lsl r0, r0, #0x18\n" " asr r1, r0, #0x18\n" " mov r0, #0x2\n" @@ -6082,7 +6082,7 @@ void DebugMenu_8079110() "._639:\n" " .word gDebug0x839C60C+0xe\n" "._635:\n" - " bl MenuUpdateWindowText\n" + " bl Menu_UpdateWindowText\n" " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " beq ._642 @cond_branch\n" diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index ce1cc47ee..842837b18 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -41,7 +41,7 @@ void TayaDebugMenu_Trend() " strb r1, [r0]\n" " ldrh r1, [r5, #0x4]\n" " add r0, r6, #0\n" - " bl sub_80EB3FC\n" + " bl EasyChat_GetWordText\n" " mov r0, sl\n" " add r1, r6, #0\n" " mov r2, #0x0\n" @@ -50,7 +50,7 @@ void TayaDebugMenu_Trend() " add r4, r0, #0\n" " ldrh r1, [r5, #0x6]\n" " add r0, r6, #0\n" - " bl sub_80EB3FC\n" + " bl EasyChat_GetWordText\n" " add r0, r4, #0\n" " add r1, r6, #0\n" " mov r2, #0x0\n" @@ -1995,7 +1995,7 @@ void debug_sub_80915BC() "._173:\n" " .align 2, 0\n" "._172:\n" - " .word gWindowConfig_81E7224\n" + " .word gWindowTemplate_81E7224\n" " .word gUnknown_Debug_083C517C\n" " .word +0x2000000\n" " .word debug_sub_8091320+1\n" diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index a217a0258..dfb92feb9 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -356,7 +356,7 @@ void debug_sub_813C5B4() " .word gOtherText_DataCannotUseVersion+0x331\n" " .word gOtherText_DataCannotUseVersion+0x30d\n" " .word gOtherText_DataCannotUseVersion+0x861\n" - " .word gFlashSectors+0x8\n" + " .word sUnusedFlashSectors+0x8\n" " .word 0xfff\n" " .word 0x52f\n" "\n" @@ -417,8 +417,8 @@ void debug_sub_813C638() " .align 2, 0\n" "._25:\n" " .word 0x270f\n" - " .word gFlashSectors+0xc\n" - " .word gFlashSectors+0x14\n" + " .word sUnusedFlashSectors+0xc\n" + " .word sUnusedFlashSectors+0x14\n" "\n" ); } @@ -588,7 +588,7 @@ void debug_sub_813C740() " .word gOtherText_DataCannotUseVersion+0x99e\n" " .word gOtherText_DataCannotUseVersion+0xa4a\n" " .word gEnemyParty\n" - " .word gFlashSectors+0x4\n" + " .word sUnusedFlashSectors+0x4\n" " .word gOtherText_DataCannotUseVersion+0x9c2\n" " .word gOtherText_DataCannotUseVersion+0xa26\n" "\n" @@ -788,7 +788,7 @@ void debug_sub_813C93C() "._37:\n" " .word gOtherText_DataCannotUseVersion+0xa4a\n" " .word gOtherText_DataCannotUseVersion+0xb61\n" - " .word gFlashSectors+0x24\n" + " .word sUnusedFlashSectors+0x24\n" " .word 0x270f\n" " .word gOtherText_DataCannotUseVersion+0xa61\n" "\n" diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 731e58986..7288f602e 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -142,8 +142,8 @@ void debug_80C35DC() " .word 0x81000800\n" " .word stru_83F8828\n" " .word stru_83F8838\n" - " .word gWindowConfig_81E6C3C\n" - " .word gWindowConfig_81E6CE4\n" + " .word gWindowTemplate_81E6C3C\n" + " .word gWindowTemplate_81E6CE4\n" "\n" ); } diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 522a185c8..8f280dc18 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -363,7 +363,7 @@ void debug_sub_815D04C() " mov r1, #0x4\n" " mov r2, #0xd\n" " mov r3, #0x7\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " ldr r1, ._125 + 4\n" " mov r2, #0xa\n" " ldsh r0, [r4, r2]\n" @@ -372,7 +372,7 @@ void debug_sub_815D04C() " ldr r0, [r0]\n" " mov r1, #0x5\n" " mov r2, #0x5\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldrh r0, [r4, #0x8]\n" " add r0, r0, #0x1\n" " strh r0, [r4, #0x8]\n" @@ -397,9 +397,9 @@ void debug_sub_815D04C() " .align 2, 0\n" "._125:\n" " .word gTasks\n" - " .word gFlashSectors+0x9c\n" + " .word sUnusedFlashSectors+0x9c\n" " .word gMain\n" - " .word gFlashSectors+0x11c\n" + " .word sUnusedFlashSectors+0x11c\n" "._123:\n" " sub r0, r1, #1\n" "._124:\n" @@ -435,7 +435,7 @@ void debug_sub_815D04C() " .align 2, 0\n" "._130:\n" " .word gTasks\n" - " .word gFlashSectors+0x11c\n" + " .word sUnusedFlashSectors+0x11c\n" "._128:\n" " ldrh r0, [r4, #0xa]\n" " add r0, r0, #0x1\n" @@ -481,7 +481,7 @@ void debug_sub_815D04C() " .align 2, 0\n" "._133:\n" " .word gTasks\n" - " .word gFlashSectors+0x9c\n" + " .word sUnusedFlashSectors+0x9c\n" " .word +0x2004000\n" " .word 0x43c\n" "\n" @@ -554,7 +554,7 @@ void debug_sub_815D1D8() " mov r1, #0xe\n" " mov r2, #0x1b\n" " mov r3, #0x13\n" - " bl MenuDrawTextWindow\n" + " bl Menu_DrawStdWindowFrame\n" " mov r0, #0x1\n" " neg r0, r0\n" " mov r1, #0x0\n" @@ -606,7 +606,7 @@ void debug_sub_815D1D8() " .word gUnknown_0841192C+0x14\n" " .word 0x43c\n" "._144:\n" - " bl MenuUpdateWindowText\n" + " bl Menu_UpdateWindowText\n" " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " bne ._163 @cond_branch\n" @@ -655,7 +655,7 @@ void debug_sub_815D1D8() " .word 0x43c\n" " .word gUnknown_0841192C+0x28\n" "._146:\n" - " bl MenuUpdateWindowText\n" + " bl Menu_UpdateWindowText\n" " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " bne ._173 @cond_branch\n" @@ -696,7 +696,7 @@ void debug_sub_815D1D8() " .word gMain\n" " .word 0x43c\n" "._149:\n" - " bl MenuUpdateWindowText\n" + " bl Menu_UpdateWindowText\n" " bl sub_8007ECC\n" " lsl r0, r0, #0x18\n" " cmp r0, #0\n" @@ -730,11 +730,11 @@ void debug_sub_815D1D8() " mov r1, #0xf\n" " mov r2, #0x1a\n" " mov r3, #0x12\n" - " bl MenuFillWindowRectWithBlankTile\n" + " bl Menu_BlankWindowRect\n" " ldr r0, ._190 + 4\n" " mov r1, #0x4\n" " mov r2, #0xf\n" - " bl MenuPrint\n" + " bl Menu_PrintText\n" " ldr r1, ._190 + 8\n" " ldr r2, ._190 + 12\n" " add r1, r1, r2\n" diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index a11e1b3e3..df4ab4f76 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -789,7 +789,7 @@ void debug_sub_806F9E4() mov r1, #0x9\n\ mov r2, #0x1d\n\ mov r3, #0x13\n\ - bl MenuDrawTextWindow\n\ + bl Menu_DrawStdWindowFrame\n\ add r4, r6, #0\n\ add r4, r4, #0x50\n\ bl RtcGetErrorStatus\n\ @@ -803,23 +803,23 @@ void debug_sub_806F9E4() add r0, r4, #0\n\ mov r1, #0x2\n\ mov r2, #0xa\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r0, ._158\n\ mov r1, #0xc\n\ mov r2, #0xc\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r0, ._158 + 4\n\ mov r1, #0x14\n\ mov r2, #0xc\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r0, ._158 + 8\n\ mov r1, #0x1\n\ mov r2, #0xe\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r0, ._158 + 12\n\ mov r1, #0x1\n\ mov r2, #0x10\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ._151:\n\ ldrh r0, [r5]\n\ add r0, r0, #0x1\n\ @@ -868,19 +868,19 @@ void debug_sub_806F9E4() add r0, r6, #0\n\ mov r1, #0x14\n\ mov r2, #0xe\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, r9\n\ mov r1, #0xc\n\ mov r2, #0xe\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, sl\n\ mov r1, #0x14\n\ mov r2, #0x10\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ mov r0, r8\n\ mov r1, #0xc\n\ mov r2, #0x10\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ._160:\n\ ldrh r1, [r5, #0x2]\n\ mov r2, #0x2\n\ diff --git a/src/engine/save.c b/src/engine/save.c index e1fb47dcc..1245d0a62 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -731,7 +731,7 @@ void sub_813B79C() " .align 2, 0\n" "._163:\n" " .word +0x2000000\n" - " .word gSaveSectionLocations\n" + " .word sSaveBlockChunks\n" " .word 0xff4\n" " .word 0xff6\n" " .word gHallOfFameSaveSectionLocations\n" @@ -892,7 +892,7 @@ u8 Save_LoadGameData(u8 saveType) return result; } -static const u8 sUnusedFlashSectors[] = { 30, 31 }; +const u8 sUnusedFlashSectors[] = { 30, 31 }; bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) { diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index a05d9bf87..56d578464 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -42,7 +42,7 @@ extern u8 gBerryCheck_Pal[]; extern u8 gUnknown_08E788E4[]; extern u8 gUnknown_08E78A84[]; -static const u8 *const gUnknown_0841192C[] = +const u8 *const gUnknown_0841192C[] = { ContestStatsText_VerySoft, ContestStatsText_Soft, diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 8a54b0ad0..b108ede5a 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -601,7 +601,7 @@ void debug_sub_81381B4() " add r2, r4, #0\n" " bl GetMonData\n" " add r0, r4, #0\n" - " bl StripExtCtrlCodes\n" + " bl Text_StripExtCtrlCodes\n" " add r0, r5, #0\n" " mov r1, #0x3\n" " bl GetMonData\n" diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 97eba16e0..1a4985892 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -1256,7 +1256,7 @@ u8 debug_sub_8085564(void) mov r1, #0x1\n\ mov r2, #0x1c\n\ mov r3, #0x2\n\ - bl MenuFillWindowRectWithBlankTile\n\ + bl Menu_BlankWindowRect\n\ ldr r1, ._380\n\ ldr r0, ._380 + 4\n\ ldrb r0, [r0]\n\ @@ -1265,7 +1265,7 @@ u8 debug_sub_8085564(void) ldr r0, [r0]\n\ mov r1, #0x17\n\ mov r2, #0x1\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ._377:\n\ ldr r0, ._380 + 8\n\ ldrh r1, [r0, #0x2e]\n\ @@ -1313,7 +1313,7 @@ u8 debug_sub_808560C(void) mov r1, #0x1\n\ mov r2, #0x1c\n\ mov r3, #0x2\n\ - bl MenuFillWindowRectWithBlankTile\n\ + bl Menu_BlankWindowRect\n\ ldr r1, ._384 + 8\n\ ldrb r0, [r4]\n\ lsl r0, r0, #0x2\n\ @@ -1321,7 +1321,7 @@ u8 debug_sub_808560C(void) ldr r0, [r0]\n\ mov r1, #0x17\n\ mov r2, #0x1\n\ - bl MenuPrint\n\ + bl Menu_PrintText\n\ ldr r1, ._384 + 12\n\ ldr r0, ._384 + 16\n\ str r0, [r1]\n\ @@ -1333,7 +1333,7 @@ u8 debug_sub_808560C(void) .align 2, 0\n\ ._384:\n\ .word gUnknown_0202FF58+0x2\n\ - .word gUnknown_0202F7E8\n\ + .word gWeather\n\ .word gDebugText_Weather\n\ .word gCallback_03004AE8\n\ .word debug_sub_8085564+1"); diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 125edfef2..ce1f18cdb 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -483,7 +483,7 @@ static bool8 SetupBagMultistep(void) bl ResetSpriteData\n\ b ._61\n\ ._14:\n\ - bl sub_80A3520\n\ + bl LoadBagGraphicsMultistep\n\ lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._37 @cond_branch\n\ @@ -500,12 +500,12 @@ static bool8 SetupBagMultistep(void) .word 0x43c\n\ ._15:\n\ ldr r0, ._43\n\ - bl SetUpWindowConfig\n\ + bl Text_LoadWindowTemplate\n\ b ._61\n\ ._44:\n\ .align 2, 0\n\ ._43:\n\ - .word gWindowConfig_81E6DFC\n\ + .word gWindowTemplate_81E6DFC\n\ ._16:\n\ ldr r0, ._46\n\ bl MultistepInitMenuWindowBegin\n\ @@ -516,7 +516,7 @@ static bool8 SetupBagMultistep(void) ._47:\n\ .align 2, 0\n\ ._46:\n\ - .word gWindowConfig_81E6DFC\n\ + .word gWindowTemplate_81E6DFC\n\ .word gMain\n\ .word 0x43c\n\ ._17:\n\ @@ -578,7 +578,7 @@ static bool8 SetupBagMultistep(void) ._54:\n\ .align 2, 0\n\ ._53:\n\ - .word gUnknown_03000701\n\ + .word sReturnLocation\n\ .word gMain\n\ .word 0x43c\n\ ._19:\n\ @@ -595,15 +595,15 @@ static bool8 SetupBagMultistep(void) bl sub_80A39B8\n\ ldrb r1, [r5]\n\ add r0, r4, #0\n\ - bl sub_80A3AC0\n\ - bl sub_80A3D08\n\ + bl DrawPocketIndicatorDots\n\ + bl UpdateAllBagPockets\n\ ldr r4, ._56 + 12\n\ ldr r0, [r4, #0x10]\n\ ldr r1, [r4, #0x14]\n\ - bl sub_80A3C34\n\ + bl SortItemSlots\n\ ldr r0, [r4, #0x18]\n\ ldr r1, [r4, #0x1c]\n\ - bl sub_80A3C34\n\ + bl SortItemSlots\n\ bl sub_80A3D40\n\ ldr r1, ._56 + 16\n\ mov r0, #0x0\n\ @@ -619,9 +619,9 @@ static bool8 SetupBagMultistep(void) ._56:\n\ .word gUnknown_0203855A\n\ .word gBGTilemapBuffers+0x1000\n\ - .word gUnknown_02038559\n\ + .word sCurrentBagPocket\n\ .word gBagPockets\n\ - .word gUnknown_03005D24\n\ + .word gCurrentBagPocketItemSlots\n\ ._20:\n\ ldr r0, ._59\n\ mov r1, #0x0\n\ @@ -659,9 +659,9 @@ static bool8 SetupBagMultistep(void) .align 2, 0\n\ ._59:\n\ .word 0xffff\n\ - .word gUnknown_03005D10\n\ - .word gUnknown_02038559\n\ - .word gUnknown_03005D24\n\ + .word gBagPocketScrollStates\n\ + .word sCurrentBagPocket\n\ + .word gCurrentBagPocketItemSlots\n\ .word gUnknown_0203855B\n\ .word gUnknown_0203855C\n\ .word gMain\n\ diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 1bce9bc3f..91165a2ee 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -293,7 +293,7 @@ void debug_sub_810B32C() " lsr r2, r0, #0x18\n" " cmp r2, #0x7\n" " bls ._31 @cond_branch\n" - " bl sub_80F7A6C\n" + " bl SetupHipster\n" " mov r2, #0x0\n" " ldr r3, ._34\n" "._32:\n" @@ -313,13 +313,13 @@ void debug_sub_810B32C() "._34:\n" " .word gSaveBlock1+0x2d8c\n" "._27:\n" - " bl sub_80F7A98\n" + " bl SetupTrader\n" " b ._37\n" "._28:\n" - " bl sub_80F7A7C\n" + " bl SetupStoryteller\n" " b ._37\n" "._29:\n" - " bl sub_80F7A88\n" + " bl SetupGiddy\n" "._37:\n" " bl sub_80F83D0\n" " add sp, sp, #0x8\n" @@ -1313,7 +1313,7 @@ static void PrintStoryList(void) Menu_PrintText(gPCText_Cancel, 1, 2 + i * 2); } -static u8 gUnknown_03000748; +u8 gUnknown_03000748; static void Task_StoryListMenu(u8 taskId) { diff --git a/src/field/region_map.c b/src/field/region_map.c index 3bd64a8a0..d6ebf0b9f 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -289,7 +289,7 @@ static void SpriteCB_PlayerIconZoomedIn(struct Sprite *); const u8 *GetMapSectionName(u8 *, u16, u16); static void VBlankCB_FlyRegionMap(void); static void CB2_FlyRegionMap(void); -static void sub_80FC244(void (*func)(void)); +void sub_80FC244(void (*func)(void)); static void PrintFlyTargetName(void); static void CreateFlyTargetGraphics(void); static void CreateCityTownFlyTargetIcons(void); @@ -297,7 +297,7 @@ static void CreateSpecialAreaFlyTargetIcons(void); static void SpriteCB_FlyTargetIcons(struct Sprite *); static void sub_80FC5B4(void); static void sub_80FC600(void); -static void sub_80FC69C(void); +void sub_80FC69C(void); void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed) { @@ -1420,7 +1420,7 @@ struct UnknownStruct4 static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter}; -static const struct UnknownStruct4 sUnknown_083E79C0[1] = +const struct UnknownStruct4 gUnknown_083E79C0[1] = { {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY}, }; @@ -1598,7 +1598,7 @@ static void CB2_FlyRegionMap(void) BuildOamBuffer(); } -static void sub_80FC244(void (*func)(void)) +void sub_80FC244(void (*func)(void)) { ewram0_3.unk0 = func; ewram0_3.unk4 = 0; @@ -1611,9 +1611,9 @@ static void PrintFlyTargetName(void) u16 i = 0; int zero; - for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++) + for (i = 0; i < ARRAY_COUNT(gUnknown_083E79C0); i++) { - const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i]; + const struct UnknownStruct4 *r4 = &gUnknown_083E79C0[i]; if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId) { @@ -1796,7 +1796,7 @@ static void sub_80FC600(void) } } -static void sub_80FC69C(void) +void sub_80FC69C(void) { switch (ewram0_3.unk4) { diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index d84a6e592..c4a4128b3 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -64,7 +64,7 @@ static bool8 sub_8102008(struct Task *task); static bool8 sub_8102034(struct Task *task); static bool8 sub_8102058(struct Task *task); static bool8 sub_8102090(struct Task *task); -static bool8 sub_81020C8(struct Task *task); +bool8 sub_81020C8(struct Task *task); static bool8 sub_81021E0(struct Task *task); static bool8 sub_81021FC(struct Task *task); static bool8 sub_8102264(struct Task *task); @@ -244,7 +244,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) ldr r3, ._1\n\ mov r2, #0x0\n\ strb r2, [r3]\n\ - bl sub_81019B0\n\ + bl PlaySlotMachine_Internal\n\ ldr r0, ._1 + 4\n\ bl SetMainCallback2\n\ pop {r0}\n\ @@ -253,7 +253,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) .align 2, 0\n\ ._1:\n\ .word unk_debug_bss_1+0x1\n\ - .word sub_81018B8+1"); + .word CB2_SlotMachineSetup+1"); } #else void PlaySlotMachine(u8 arg0, MainCallback cb) @@ -274,7 +274,7 @@ void debug_sub_811609C() ldr r3, ._3\n\ mov r2, #0x1\n\ strb r2, [r3]\n\ - bl sub_81019B0\n\ + bl PlaySlotMachine_Internal\n\ ldr r0, ._3 + 4\n\ bl SetMainCallback2\n\ pop {r0}\n\ @@ -283,7 +283,7 @@ void debug_sub_811609C() .align 2, 0\n\ ._3:\n\ .word unk_debug_bss_1+0x1\n\ - .word sub_81018B8+1"); + .word CB2_SlotMachineSetup+1"); } #endif @@ -1412,7 +1412,7 @@ static bool8 sub_8102090(struct Task *task) #if DEBUG __attribute__((naked)) -static bool8 sub_81020C8(struct Task *task) +bool8 sub_81020C8(struct Task *task) { asm("\ push {r4, lr}\n\ @@ -1421,7 +1421,7 @@ static bool8 sub_81020C8(struct Task *task) mov r0, #0xc0\n\ and r0, r0, r1\n\ strb r0, [r4, #0x4]\n\ - bl sub_81027A0\n\ + bl CheckMatch\n\ ldrb r0, [r4, #0xa]\n\ cmp r0, #0\n\ beq ._163 @cond_branch\n\ @@ -1570,7 +1570,7 @@ static bool8 sub_81020C8(struct Task *task) .word 0x270f"); } #else -static bool8 sub_81020C8(struct Task *task) +bool8 sub_81020C8(struct Task *task) { eSlotMachine->unk04 &= 0xc0; CheckMatch(); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 1e4eace87..17aeb8242 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -255,7 +255,7 @@ void debug_sub_8075C40() " .word 0x4000108\n" " .word 0xc34f\n" " .word 0x40000b0\n" - " .word gUnknown_03004DE0\n" + " .word gScanlineEffectRegBuffers\n" " .word 0xc5ff\n" " .word 0x7fff\n" " .word 0x4000040\n" diff --git a/src/pokemon/pokedex.c b/src/pokemon/pokedex.c index 4fb6a4920..4f656a910 100644 --- a/src/pokemon/pokedex.c +++ b/src/pokemon/pokedex.c @@ -1273,7 +1273,7 @@ static u8 sub_8091260(u16 num, u8, u8, u8); static void sub_8091304(const u8 *name, u8, u8); static void sub_8091458(u16 height, u8 i, u8 i1); static void sub_8091564(u16 weight, u8 i, u8 i1); -static void sub_8091738(u16, u16, u16); +void sub_8091738(u16, u16, u16); static void sub_80917CC(u16 i, u16 i1); static u16 sub_8091818(u8, u16, u16, u16); u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); @@ -4457,7 +4457,7 @@ static void sub_8091564(u16 arg0, u8 left, u8 top) } #endif -static void sub_8091738(u16 num, u16 b, u16 c) +void sub_8091738(u16 num, u16 b, u16 c) { u8 arr[0x80]; u16 i; -- cgit v1.2.3 From 73392181fe47fd0fe5ac3702978307926a442ef4 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 18:08:02 -0600 Subject: resolve more undefined references --- src/battle/battle_2.c | 26 +++++++++++++------------- src/data/pokedex_entries_de.h | 3 ++- src/data/pokedex_entries_en.h | 2 +- src/debug/nohara_debug_menu.c | 2 +- src/debug/start_menu_debug.c | 18 +++++++++--------- src/debug/taya_debug_window.c | 30 +++++++++++++++--------------- src/debug/tomomichi_debug_menu.c | 4 ++-- src/debug/watanabe_debug_menu.c | 14 +++++++------- src/engine/cable_club.c | 2 +- src/engine/link.c | 4 ++-- src/engine/reset_rtc_screen.c | 4 ++-- src/engine/save.c | 2 +- src/engine/trade.c | 2 +- src/field/berry.c | 6 +++--- src/field/field_player_avatar.c | 2 +- src/field/field_weather.c | 2 +- src/field/fldeff_secretpower.c | 2 +- src/field/item_menu.c | 2 +- src/field/mauville_man.c | 2 +- src/field/region_map.c | 4 ++-- src/field/safari_zone.c | 2 +- src/field/start_menu.c | 2 +- src/field/wild_encounter.c | 10 +++++----- src/pokemon/mail.c | 2 +- 24 files changed, 75 insertions(+), 74 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 7a819a8ef..bedcb0bb6 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -238,7 +238,7 @@ void InitBattle(void) " strh r2, [r0]\n" " ldr r0, ._10 + 16\n" " strh r1, [r0]\n" - " bl dp12_8087EA4\n" + " bl ScanlineEffect_Clear\n" " ldr r0, ._10 + 20\n" " mov r3, #0xf0\n" " mov r5, #0xf0\n" @@ -272,7 +272,7 @@ void InitBattle(void) " ldr r0, [r4]\n" " ldr r1, [r4, #0x4]\n" " ldr r2, [r4, #0x8]\n" - " bl sub_80895F8\n" + " bl ScanlineEffect_SetParams\n" " ldr r4, ._10 + 32\n" " add r0, r4, #0\n" " bl Text_LoadWindowTemplate\n" @@ -300,7 +300,7 @@ void InitBattle(void) " and r0, r0, r1\n" " cmp r0, #0\n" " bne ._7 @cond_branch\n" - " bl GetBattleTerrain\n" + " bl BattleSetup_GetTerrain\n" " ldr r1, ._10 + 72\n" " strb r0, [r1]\n" "._7:\n" @@ -341,7 +341,7 @@ void InitBattle(void) " .word 0x400004c\n" " .word 0x5051\n" " .word gBattle_WIN0H\n" - " .word gUnknown_03004240\n" + " .word gBattle_WIN0V\n" " .word gScanlineEffectRegBuffers\n" " .word gUnknown_081F9674\n" " .word 0xff10\n" @@ -2641,10 +2641,10 @@ void BattleMainCB2(void) " .align 2, 0\n" "._358:\n" " .word gMain\n" - " .word gScriptResult\n" + " .word gSpecialVar_Result\n" " .word gBattleOutcome\n" " .word 0x43d\n" - " .word gUnknown_03004DC0\n" + " .word gScanlineEffect\n" " .word gPreBattleCallback1\n" " .word gBattleTypeFlags\n" " .word sub_805465C+1\n" @@ -2684,7 +2684,7 @@ void BattleMainCB2(void) " bl debug_sub_8008264\n" "._360:\n" " ldr r0, ._361 + 4\n" - " bl sub_800374C\n" + " bl Text_UpdateWindowInBattle\n" " bl UpdatePaletteFade\n" " bl RunTasks\n" " add sp, sp, #0x4\n" @@ -3255,7 +3255,7 @@ void debug_sub_80108B8() " bl LZDecompressVram\n" " ldr r0, ._507 + 60\n" " ldr r1, ._507 + 64\n" - " bl sub_800D238\n" + " bl LZDecompressWram\n" " ldr r4, ._507 + 68\n" " mov r1, #0xa0\n" " lsl r1, r1, #0x13\n" @@ -3271,7 +3271,7 @@ void debug_sub_80108B8() " bl SetMainCallback2\n" " bl ResetTasks\n" " bl ResetSpriteData\n" - " bl remove_some_task\n" + " bl ScanlineEffect_Stop\n" " ldr r4, ._507 + 84\n" " add r0, r4, #0\n" " bl Text_LoadWindowTemplate\n" @@ -3816,7 +3816,7 @@ void debug_sub_8010CAC() "._557:\n" " .align 2, 0\n" "._556:\n" - " .word gUnknown_03005E94\n" + " .word gCB2_AfterEvolution\n" " .word debug_sub_80108B8+1\n" " .word gPlayerParty\n" "._551:\n" @@ -5902,7 +5902,7 @@ void debug_sub_8011DD4() " bl LoadOam\n" " bl ProcessSpriteCopyRequests\n" " bl TransferPlttBuffer\n" - " bl sub_8089668\n" + " bl ScanlineEffect_InitHBlankDmaTransfer\n" " pop {r0}\n" " bx r0\n" "._777:\n" @@ -7167,7 +7167,7 @@ void debug_sub_8012878() " bl AnimateSprites\n" " bl BuildOamBuffer\n" " ldr r0, ._876\n" - " bl sub_800374C\n" + " bl Text_UpdateWindowInBattle\n" " bl UpdatePaletteFade\n" " bl RunTasks\n" " ldr r0, ._876 + 4\n" @@ -9472,7 +9472,7 @@ void sub_8010874() " .align 2, 0\n" "._1215:\n" " .word gUnknown_02024C4C\n" - " .word gUnknown_02024C44\n" + " .word gLastHitByType\n" " .word gMoveHitWith\n" " .word gLastUsedMove\n" " .word gDisableStructs\n" diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h index 0f64cba66..413b73d90 100644 --- a/src/data/pokedex_entries_de.h +++ b/src/data/pokedex_entries_de.h @@ -6337,7 +6337,8 @@ static const u8 DexDescription_Deoxys_2[] = _( "dieses POKéMON ist sein Gehirn."); #endif -static const struct PokedexEntry gPokedexEntries[] = { +const struct PokedexEntry gPokedexEntries[] = +{ { // Dummy .categoryName = _("UNBEKANNT"), diff --git a/src/data/pokedex_entries_en.h b/src/data/pokedex_entries_en.h index 86da3d67b..933b1fc7d 100644 --- a/src/data/pokedex_entries_en.h +++ b/src/data/pokedex_entries_en.h @@ -5389,7 +5389,7 @@ static const u8 DexDescription_Deoxys_2[] = _( "chest appears to be its brain."); #endif -static const struct PokedexEntry gPokedexEntries[] = +const struct PokedexEntry gPokedexEntries[] = { { //Dummy .categoryName = _("UNKNOWN"), diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index 53c6394ba..629b7b9eb 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -340,7 +340,7 @@ void debug_sub_808F5D8() "._29:\n" " ldr r5, ._30 + 8\n" " strh r4, [r5]\n" - " bl sub_810F424\n" + " bl GetSlotMachineId\n" " add r1, r0, #0\n" " lsl r1, r1, #0x10\n" " lsr r1, r1, #0x10\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 321bbb951..b376a4076 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -46,7 +46,7 @@ void debug_sub_8076AC8() " mov r0, #0x11\n" " mov r1, #0x1\n" " add r2, r4, #0\n" - " bl PrintMenuItemsReordered\n" + " bl Menu_PrintItemsReordered\n" " mov r0, #0x0\n" " str r0, [sp]\n" " mov r0, #0xc\n" @@ -448,7 +448,7 @@ void DebugMenu_8076D50() { asm( " push {lr}\n" - " bl ClearSaveData\n" + " bl Save_EraseAllData\n" " mov r0, #0x0\n" " pop {r1}\n" " bx r1\n" @@ -1105,7 +1105,7 @@ void DebugMenu_807719C() " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x8\n" - " bl PrintMenuItemsReordered\n" + " bl Menu_PrintItemsReordered\n" " ldr r4, ._133 + 8\n" " ldrb r0, [r4]\n" " str r0, [sp]\n" @@ -1698,10 +1698,10 @@ void DebugMenu_NationalDex() " lsr r4, r4, #0x10\n" " add r0, r4, #0\n" " mov r1, #0x2\n" - " bl GetNationalPokedexFlag\n" + " bl GetSetPokedexFlag\n" " add r0, r4, #0\n" " mov r1, #0x3\n" - " bl GetNationalPokedexFlag\n" + " bl GetSetPokedexFlag\n" " cmp r4, r5\n" " bls ._177 @cond_branch\n" " ldr r1, ._178 + 4\n" @@ -1738,10 +1738,10 @@ void DebugMenu_HoennDex() " lsr r4, r4, #0x10\n" " add r0, r4, #0\n" " mov r1, #0x2\n" - " bl GetNationalPokedexFlag\n" + " bl GetSetPokedexFlag\n" " add r0, r4, #0\n" " mov r1, #0x3\n" - " bl GetNationalPokedexFlag\n" + " bl GetSetPokedexFlag\n" " cmp r5, #0xc9\n" " bls ._180 @cond_branch\n" " ldr r1, ._181\n" @@ -2356,7 +2356,7 @@ void DebugMenu_8077974() " asr r1, r1, #0x18\n" " lsl r1, r1, #0x10\n" " lsr r1, r1, #0x10\n" - " bl unref_sub_8082C2C\n" + " bl IsRematchTrainerIn\n" " cmp r0, #0\n" " beq ._224 @cond_branch\n" " ldr r0, ._226 + 4\n" @@ -4670,7 +4670,7 @@ void DebugMenu_80787EC() "._467:\n" " .align 2, 0\n" "._466:\n" - " .word gScriptResult\n" + " .word gSpecialVar_Result\n" " .word gStringVar1\n" " .word gStringVar2\n" " .word gStringVar3\n" diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index 842837b18..8b586deb2 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -893,7 +893,7 @@ void TayaDebugMenu_PKMNLottery() " .align 2, 0\n" "._83:\n" " .word +0x2000000\n" - " .word gScriptResult\n" + " .word gSpecialVar_Result\n" " .word gCallback_03004AE8\n" " .word debug_sub_8090C88+1\n" "\n" @@ -911,44 +911,44 @@ void TayaDebugMenu_Trainer() " lsl r0, r4, #0x4\n" " add r0, r0, r5\n" " ldrh r0, [r0]\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " add r0, r4, #1\n" " lsl r0, r0, #0x10\n" " lsr r4, r0, #0x10\n" " cmp r4, #0x37\n" " bls ._85 @cond_branch\n" " ldr r0, ._86 + 4\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " mov r0, #0x85\n" " lsl r0, r0, #0x1\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " ldr r0, ._86 + 8\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " mov r0, #0x86\n" " lsl r0, r0, #0x1\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " ldr r0, ._86 + 12\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " mov r0, #0x87\n" " lsl r0, r0, #0x1\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " ldr r0, ._86 + 16\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " mov r0, #0x88\n" " lsl r0, r0, #0x1\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " ldr r0, ._86 + 20\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " mov r0, #0x83\n" " lsl r0, r0, #0x1\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " ldr r0, ._86 + 24\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " mov r0, #0x84\n" " lsl r0, r0, #0x1\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " ldr r0, ._86 + 28\n" - " bl trainer_flag_set\n" + " bl SetTrainerFlag\n" " bl CloseMenu\n" " mov r0, #0x1\n" " pop {r4, r5}\n" diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 2d9074d19..28bb2717d 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -5001,7 +5001,7 @@ void debug_sub_808DABC() "._387:\n" " .align 2, 0\n" "._386:\n" - " .word gScriptResult\n" + " .word gSpecialVar_Result\n" "\n" ); } @@ -5043,7 +5043,7 @@ void debug_sub_808DAD4() " .align 2, 0\n" "._393:\n" " .word 0xffff\n" - " .word gScriptResult\n" + " .word gSpecialVar_Result\n" "\n" ); } diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 7288f602e..b0fbebac1 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -116,7 +116,7 @@ void debug_80C35DC() " str r3, [r2, #0x8]\n" " ldr r0, [r2, #0x8]\n" " bl ResetPaletteFade\n" - " bl remove_some_task\n" + " bl ScanlineEffect_Stop\n" " bl ResetTasks\n" " bl ResetSpriteData\n" " bl ResetPaletteFade\n" @@ -4289,10 +4289,10 @@ void debug_80C53F0() " lsr r4, r4, #0x10\n" " add r0, r4, #0\n" " mov r1, #0x2\n" - " bl GetNationalPokedexFlag\n" + " bl GetSetPokedexFlag\n" " add r0, r4, #0\n" " mov r1, #0x3\n" - " bl GetNationalPokedexFlag\n" + " bl GetSetPokedexFlag\n" " mov r0, #0x5\n" " bl PlaySE\n" " b ._400\n" @@ -7813,7 +7813,7 @@ void debug_80C6FA8() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x0\n" - " bl species_and_otid_get_pal\n" + " bl GetMonSpritePal\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" @@ -7832,7 +7832,7 @@ void debug_80C6FA8() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x9\n" - " bl species_and_otid_get_pal\n" + " bl GetMonSpritePal\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" @@ -9268,7 +9268,7 @@ void debug_80C7B14() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x0\n" - " bl species_and_otid_get_pal\n" + " bl GetMonSpritePal\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" @@ -9287,7 +9287,7 @@ void debug_80C7B14() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x9\n" - " bl species_and_otid_get_pal\n" + " bl GetMonSpritePal\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index c0397f67b..4063aee3a 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -407,7 +407,7 @@ void debug_sub_808A55C() .word gLinkStatus\n\ .word gLink\n\ .word gReceivedRemoteLinkPlayers\n\ - .word gScriptResult\n\ + .word gSpecialVar_Result\n\ .word gLinkCallback\n\ .word gLinkPlayers\n\ .word 0x4000128"); diff --git a/src/engine/link.c b/src/engine/link.c index 5747915d7..3bcacd12b 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -67,7 +67,7 @@ u32 sub_8007E40(void); static void SetBlockReceivedFlag(u8); static u16 LinkTestCalcBlockChecksum(void *, u16); static void PrintHexDigit(u8, u8, u8); -static void PrintHex(u32, u8, u8, u8); +void PrintHex(u32, u8, u8, u8); static void LinkCB_RequestPlayerDataExchange(void); static void Task_PrintTestData(u8); bool8 sub_8008224(void); @@ -961,7 +961,7 @@ static void PrintHexDigit(u8 tileNum, u8 x, u8 y) tilemap[(32 * y) + x] = (gLinkTestBGInfo.paletteNum << 12) | (tileNum + 1); } -static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits) +void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits) { u8 buffer[16]; s32 i; diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index df4ab4f76..0cfa1e71a 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -691,7 +691,7 @@ void debug_sub_806F908(u8 a) ._142:\n\ ldrb r0, [r4, #0x2]\n\ bl DestroyTask\n\ - bl MenuZeroFillScreen\n\ + bl Menu_EraseScreen\n\ bl ScriptContext2_Disable\n\ add r0, r5, #0\n\ bl DestroyTask\n\ @@ -902,7 +902,7 @@ void debug_sub_806F9E4() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._165 @cond_branch\n\ - bl MenuZeroFillScreen\n\ + bl Menu_EraseScreen\n\ add r0, r7, #0\n\ bl DestroyTask\n\ bl ScriptContext2_Disable\n\ diff --git a/src/engine/save.c b/src/engine/save.c index 1245d0a62..a9945a80d 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -734,7 +734,7 @@ void sub_813B79C() " .word sSaveBlockChunks\n" " .word 0xff4\n" " .word 0xff6\n" - " .word gHallOfFameSaveSectionLocations\n" + " .word sHallOfFameChunks\n" "\n" ); } diff --git a/src/engine/trade.c b/src/engine/trade.c index e49cde6cd..715cc0377 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -4514,8 +4514,8 @@ static __attribute__((naked)) void sub_804B41C(void) } #endif -static void sub_804B790(void) // In-game trade init +void sub_804B790(void) { u8 otName[11]; switch (gMain.state) diff --git a/src/field/berry.c b/src/field/berry.c index 7c6640dc8..d6982479e 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1780,7 +1780,7 @@ u8* DebugOpenBerryInfo(void) u8 berryTreeId; struct BerryTree *berryTree; - if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript) + if (GetFieldObjectScriptPointerPlayerFacing() != &S_BerryTree) return NULL; berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject); @@ -1809,7 +1809,7 @@ void DebugOpenBerryInfo() { asm( " push {r4, r5, r6, r7, lr}\n" - " bl GetFieldObjectScriptPointerForComparison\n" + " bl GetFieldObjectScriptPointerPlayerFacing\n" " ldr r1, ._138\n" " cmp r0, r1\n" " beq ._136 @cond_branch\n" @@ -1818,7 +1818,7 @@ void DebugOpenBerryInfo() "._139:\n" " .align 2, 0\n" "._138:\n" - " .word BerryTreeScript\n" + " .word S_BerryTree\n" "._136:\n" " ldr r0, ._141\n" " ldrb r0, [r0]\n" diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index db674e52f..795a53d0b 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -1940,7 +1940,7 @@ void debug_sub_805F2DC() " .word gPlayerAvatar\n" "._429:\n" " add r0, r4, #0\n" - " bl sub_80593F4\n" + " bl PlayerGoSpeed4\n" "._430:\n" " mov r0, #0x1\n" " pop {r4}\n" diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 1a4985892..4a03322d5 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -1308,7 +1308,7 @@ u8 debug_sub_808560C(void) add r0, r0, r1\n\ ldrb r0, [r0]\n\ strb r0, [r4]\n\ - bl MenuZeroFillScreen\n\ + bl Menu_EraseScreen\n\ mov r0, #0x16\n\ mov r1, #0x1\n\ mov r2, #0x1c\n\ diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index c200ce2f5..3f539fc6e 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -266,7 +266,7 @@ void debug_sub_80D93F4() ._99:\n\ .align 2, 0\n\ ._98:\n\ - .word gScriptResult\n\ + .word gSpecialVar_Result\n\ ._96:\n\ ldr r4, ._102\n\ add r1, r4, #2\n\ diff --git a/src/field/item_menu.c b/src/field/item_menu.c index ce1f18cdb..61774f816 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -436,7 +436,7 @@ static bool8 SetupBagMultistep(void) bl sub_80A34E8\n\ b ._61\n\ ._9:\n\ - bl remove_some_task\n\ + bl ScanlineEffect_Stop\n\ ldr r1, ._27\n\ ldr r0, ._27 + 4\n\ add r1, r1, r0\n\ diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 91165a2ee..51bd9bb35 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -331,7 +331,7 @@ void debug_sub_810B32C() } #endif -static u8 GetCurrentMauvilleOldMan(void) +u8 GetCurrentMauvilleOldMan(void) { struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common; diff --git a/src/field/region_map.c b/src/field/region_map.c index d6ebf0b9f..9194e791d 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -288,7 +288,7 @@ static void UpdateIconBlink(struct Sprite *); static void SpriteCB_PlayerIconZoomedIn(struct Sprite *); const u8 *GetMapSectionName(u8 *, u16, u16); static void VBlankCB_FlyRegionMap(void); -static void CB2_FlyRegionMap(void); +void CB2_FlyRegionMap(void); void sub_80FC244(void (*func)(void)); static void PrintFlyTargetName(void); static void CreateFlyTargetGraphics(void); @@ -1591,7 +1591,7 @@ static void VBlankCB_FlyRegionMap(void) TransferPlttBuffer(); } -static void CB2_FlyRegionMap(void) +void CB2_FlyRegionMap(void) { ewram0_3.unk0(); AnimateSprites(); diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c index e9ca3a9f9..2829001f6 100644 --- a/src/field/safari_zone.c +++ b/src/field/safari_zone.c @@ -26,7 +26,7 @@ static void DecrementFeederStepCounters(void); extern u8 gBattleOutcome; EWRAM_DATA u8 gNumSafariBalls = 0; -EWRAM_DATA static u16 gSafariZoneStepCounter = 0; +EWRAM_DATA u16 gSafariZoneStepCounter = 0; EWRAM_DATA static struct PokeblockFeeder gPokeblockFeeders[NUM_POKEBLOCK_FEEDERS] = {0}; extern void (*gFieldCallback)(void); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 17aeb8242..47c7fca05 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -398,7 +398,7 @@ void debug_sub_8075DB4() " cmp r4, #0x2\n" " ble ._24 @cond_branch\n" " add r0, r6, #0\n" - " bl sub_8136088\n" + " bl SetEReaderTrainerChecksum\n" " pop {r4, r5, r6}\n" " pop {r0}\n" " bx r0\n" diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 08913f40d..10391348d 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -3698,13 +3698,13 @@ const u16 gRoute119WaterTileData[] = extern u16 gSpecialVar_Result; extern u8 S_RepelWoreOff[]; -EWRAM_DATA static u8 sWildEncountersDisabled = 0; +EWRAM_DATA u8 sWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; #define NUM_FEEBAS_SPOTS 6 -static u16 FeebasRandom(void); -static void FeebasSeedRng(u16 seed); +u16 FeebasRandom(void); +void FeebasSeedRng(u16 seed); static bool8 IsWildLevelAllowedByRepel(u8 level); static void ApplyFluteEncounterRateMod(u32 *encRate); @@ -3791,13 +3791,13 @@ static bool8 CheckFeebas(void) return FALSE; } -static u16 FeebasRandom(void) +u16 FeebasRandom(void) { sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue; return sFeebasRngValue >> 16; } -static void FeebasSeedRng(u16 seed) +void FeebasSeedRng(u16 seed) { sFeebasRngValue = seed; } diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index ecff15c21..565a9861b 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -2369,7 +2369,7 @@ void debug_sub_810D388() " .word unk_debug_bss_2\n" " .word 0x43c\n" "._297:\n" - " bl remove_some_task\n" + " bl ScanlineEffect_Stop\n" " bl ResetPaletteFade\n" " ldr r0, ._302\n" " bl SetVBlankCallback\n" -- cgit v1.2.3 From 8835353325d9c7eba7664bde5d5a2d4c40c4376d Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 18:24:33 -0600 Subject: resolve more undefined references --- src/battle/battle_2.c | 6 +++--- src/engine/mystery_event_menu.c | 2 +- src/field/battle_tower.c | 2 +- src/field/trader.c | 2 +- src/pokemon/pokemon_summary_screen.c | 4 ++-- src/rom3.c | 6 +++--- src/strings.c | 14 ++++++++++---- 7 files changed, 21 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index bedcb0bb6..6d2045604 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -9473,16 +9473,16 @@ void sub_8010874() "._1215:\n" " .word gUnknown_02024C4C\n" " .word gLastHitByType\n" - " .word gMoveHitWith\n" + " .word gLastLandedMoves\n" " .word gLastUsedMove\n" " .word gDisableStructs\n" " .word gUnknown_02024C2C\n" - " .word gLockedMove\n" + " .word gLockedMoves\n" " .word gStatuses3\n" " .word gUnknown_02024C70\n" " .word gUnknown_02024C5C\n" " .word +0x2017100\n" - " .word gSideTimer\n" + " .word gSideTimers\n" " .word gSideAffecting\n" " .word gBankAttacker\n" " .word gBankTarget\n" diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 8f280dc18..656e774c5 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -465,7 +465,7 @@ void debug_sub_815D04C() " add r1, r1, r0\n" " ldr r0, ._133 + 8\n" " ldr r1, [r1]\n" - " bl gScriptFuncs_End+0x3cf8\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cf8\n" " ldr r0, ._133 + 12\n" " add r1, r6, r0\n" " ldrb r0, [r1]\n" diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index ab2a818a7..41d5ae9d1 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -259,7 +259,7 @@ static void SaveCurrentWinStreak(void); static void sub_8135CFC(void); static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *); static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *); -static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); +void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *); static void ClearBattleTowerRecord(struct BattleTowerRecord *); diff --git a/src/field/trader.c b/src/field/trader.c index b4732ab15..2801df322 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -108,7 +108,7 @@ void CreateAvailableDecorationsMenu(u8 taskId) { if (trader->unk1[i] > DECOR_REGISTEEL_DOLL) { - Menu_PrintText(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2); + Menu_PrintText(gOtherText_FiveQuestions, 1, numDecorations * 2 + 2); } else { diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 7b40918e9..0102b7526 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -2576,14 +2576,14 @@ static void sub_809FC34(struct Pokemon *mon) buffer = gStringVar1; buffer = sub_80A1E58(buffer, 13); buffer = StringCopy(buffer, gOtherText_OriginalTrainer); - buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash); + buffer = StringCopy(buffer, gOtherText_FiveQuestions); buffer[0] = EXT_CTRL_CODE_BEGIN; buffer[1] = 0x13; buffer[2] = 0x4E; buffer[3] = EOS; Menu_PrintText(gStringVar1, 11, 4); - sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1); + sub_80A1EF8(gOtherText_FiveQuestions, 13, 193, 32, 1); sub_80A198C(9, 120, 48, 0); friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); diff --git a/src/rom3.c b/src/rom3.c index efaa1d97f..34746c1a8 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -101,9 +101,9 @@ void setup_poochyena_battle(void) #if DEBUG if (gUnknown_02023A14_50 & 0x80) { - ewram[0x160fd] = 0; - ewram[0x160fe] = 0; - ewram[0x160ff] = 0; + gSharedMem[0x160fd] = 0; + gSharedMem[0x160fe] = 0; + gSharedMem[0x160ff] = 0; ((u32 *) gBattleBuffersTransferData)[64]++; } #endif diff --git a/src/strings.c b/src/strings.c index 06bbadb8f..0f599db72 100644 --- a/src/strings.c +++ b/src/strings.c @@ -173,7 +173,8 @@ const u8 gOtherText_None[] = _("NONE"); const u8 gOtherText_ThreeQuestions2[] = _("???"); -const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/"); +const u8 gOtherText_FiveQuestions[] = _("?????"); +const u8 gOtherText_Slash[] = _("/"); const u8 gOtherText_OneDash[] = _("-"); const u8 gOtherText_TwoDashes[] = _("--"); @@ -267,7 +268,9 @@ const u8 gContestStatsText_Spicy[] = _("SPICY"); const u8 gContestStatsText_Dry[] = _("DRY"); const u8 gContestStatsText_Sweet[] = _("SWEET"); const u8 gContestStatsText_Bitter[] = _("BITTER"); -const u8 gContestStatsText_Sour[] = _("SOUR$TASTY$FEEL"); // tasty is unused, feel might not be +const u8 gContestStatsText_Sour[] = _("SOUR"); +const u8 gContestStatsText_Tasty[] = _("TASTY"); +const u8 gContestStatsText_Feel[] = _("FEEL"); const u8 gContestStatsText_StowCase[] = _("Stow CASE."); const u8 gContestStatsText_ThrowAwayPrompt[] = _("Throw away this\n{STR_VAR_1}?"); @@ -1096,7 +1099,8 @@ const u8 gOtherText_None[] = _("KEINES"); const u8 gOtherText_ThreeQuestions2[] = _("???"); -const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/"); +const u8 gOtherText_FiveQuestions[] = _("?????"); +const u8 gOtherText_Slash[] = _("/"); const u8 gOtherText_OneDash[] = _("-"); const u8 gOtherText_TwoDashes[] = _("--"); @@ -1190,7 +1194,9 @@ const u8 gContestStatsText_Spicy[] = _("SCHARF"); const u8 gContestStatsText_Dry[] = _("TROCKEN"); const u8 gContestStatsText_Sweet[] = _("SÜSS"); const u8 gContestStatsText_Bitter[] = _("BITTER"); -const u8 gContestStatsText_Sour[] = _("SAUER$LECKER$WÜRZE"); +const u8 gContestStatsText_Sour[] = _("SAUER"); +const u8 gContestStatsText_Tasty[] = _("LECKER"); +const u8 gContestStatsText_Feel[] = _("WÜRZE"); const u8 gContestStatsText_StowCase[] = _("BOX verstauen."); const u8 gContestStatsText_ThrowAwayPrompt[] = _("{STR_VAR_1}\nwegwerfen?"); -- cgit v1.2.3 From 2869160d630f569110ca895ff924070d626fd54b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 17 Jan 2018 19:31:23 -0500 Subject: use Defvars instead of some Dma macros and hopefully last while(1)s --- src/battle/anim/love_bg.c | 7 +++---- src/battle/anim/scary_face.c | 5 ++--- src/battle/battle_7.c | 7 +------ src/battle/battle_anim.c | 22 ++++------------------ src/contest.c | 20 ++++---------------- src/engine/naming_screen.c | 12 ++---------- src/engine/palette.c | 4 +--- src/engine/trade.c | 13 +++---------- src/field/berry_tag_screen.c | 4 +--- src/field/item_menu.c | 16 ++-------------- src/field/party_menu.c | 4 +--- src/field/pokeblock.c | 6 +----- src/field/start_menu.c | 21 ++------------------- src/scene/berry_blender.c | 35 ++++++++--------------------------- src/scene/egg_hatch.c | 17 +++++------------ src/scene/hall_of_fame.c | 12 ++---------- src/scene/intro.c | 4 +--- 17 files changed, 43 insertions(+), 166 deletions(-) (limited to 'src') diff --git a/src/battle/anim/love_bg.c b/src/battle/anim/love_bg.c index ef524e4be..c3828c681 100644 --- a/src/battle/anim/love_bg.c +++ b/src/battle/anim/love_bg.c @@ -25,7 +25,7 @@ static void sub_80D21F0(u8 taskId); void sub_80D2100(u8 taskId) { struct Struct_sub_8078914 subStruct; - u8* tempvar; + REG_BLDCNT = 0x3F42; REG_BLDALPHA = 0x1000; REG_BG1CNT_BITFIELD.priority = 3; @@ -38,9 +38,8 @@ void sub_80D2100(u8 taskId) REG_BG1HOFS = 0; REG_BG1VOFS = 0; sub_8078914(&subStruct); - tempvar = subStruct.field_4; - DmaFill32(3, 0x0, tempvar, 0x1000); - LZDecompressVram(&gAttractTilemap, tempvar); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); + LZDecompressVram(&gAttractTilemap, subStruct.field_4); LZDecompressVram(&gAttractGfx, subStruct.field_0); LoadCompressedPalette(&gAttractPal, subStruct.field_8 << 4, 32); if (IsContest()) diff --git a/src/battle/anim/scary_face.c b/src/battle/anim/scary_face.c index 65b9637c0..8d51521ee 100644 --- a/src/battle/anim/scary_face.c +++ b/src/battle/anim/scary_face.c @@ -27,7 +27,7 @@ static void sub_80D24E0(u8 taskId); void sub_80D23B4(u8 taskId) { struct Struct_sub_8078914 subStruct; - u8* tempvar; + REG_BLDCNT = 0x3F42; REG_BLDALPHA = 0x1000; REG_BG1CNT_BITFIELD.priority = 1; @@ -40,8 +40,7 @@ void sub_80D23B4(u8 taskId) REG_BG1HOFS = 0; REG_BG1VOFS = 0; sub_8078914(&subStruct); - tempvar = subStruct.field_4; - DmaFill32(3, 0x0, tempvar, 0x1000); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); if (IsContest()) LZDecompressVram(&gBattleAnimBackgroundTilemap_ScaryFaceContest, subStruct.field_4); else if (GetBankSide(gAnimBankTarget) == 1) diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c index 00216ce05..b4c71b9c2 100644 --- a/src/battle/battle_7.c +++ b/src/battle/battle_7.c @@ -624,9 +624,6 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) } else { - const void *src; - void *dst; - if (IsContest()) { r10 = 0; @@ -676,9 +673,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c) gTransformedPersonalities[a]); } } - src = gUnknown_081FAF4C[r10]; - dst = (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32); - DmaCopy32(3, src, dst, 0x800); + DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32), 0x800); paletteOffset = 0x100 + a * 16; lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue); LZDecompressWram(lzPaletteData, gSharedMem); diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 059b8df1f..a4540868c 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2064,25 +2064,15 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) if (gTasks[taskId].data[5] == 0) { - u16 *src; - u16 *dst; - gBattle_BG1_X = x + gTasks[taskId].data[3]; gBattle_BG1_Y = y + gTasks[taskId].data[4]; - src = gPlttBufferFaded + 0x100 + palIndex * 16; - dst = gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256; - DmaCopy32(3, src, dst, 32); + DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256, 32); } else { - u16 *src; - u16 *dst; - gBattle_BG2_X = x + gTasks[taskId].data[3]; gBattle_BG2_Y = y + gTasks[taskId].data[4]; - src = gPlttBufferFaded + 0x100 + palIndex * 16; - dst = gPlttBufferFaded + 0x100 - 112; - DmaCopy32(3, src, dst, 32); + DmaCopy32Defvars(3, gPlttBufferFaded + 0x100 + palIndex * 16, gPlttBufferFaded + 0x100 - 112, 32); } } @@ -2426,14 +2416,10 @@ static void LoadMoveBg(u16 bgId) if (IsContest()) { void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; - void *dmaSrc; - void *dmaDest; - LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); - dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000; - dmaDest = (void *)(VRAM + 0xD000); - DmaCopy32(3, dmaSrc, dmaDest, 0x800); + DmaCopy32Defvars(3, IsContest() ? EWRAM_14800 : EWRAM_18000, (void *)(VRAM + 0xD000), 0x800); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80789BC() * 16, 32); } diff --git a/src/contest.c b/src/contest.c index df4bb361d..8081e8a8d 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3671,12 +3671,8 @@ void sub_80B0748(u8 taskId) { // What the hell? These aren't pointers. // This code would crash if run. - { - void *src = (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1]; - void *dest = (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1]; - u32 size = 6; - DmaCopy16(3, src, dest, size); - } + DmaCopy16Defvars(3, (void *)(u32)gPlttBufferFaded[(r4 + 5) * 16 + 1], + (void *)(u32)gPlttBufferUnfaded[(r4 + 5) * 16 + 1], 6); gTasks[taskId].data[r1 + 0] = 0; } } @@ -4046,21 +4042,13 @@ u8 sub_80B09E4(u8 a) CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x26), (u8 *)(VRAM + 0x10000 + gSprites[r8].oam.tileNum * 32)); CopySpriteTiles(0, 3, (void *)VRAM, (u16 *)(VRAM + 0xE000 + gUnknown_02038696[a] * 5 * 64 + 0x36), (u8 *)(VRAM + 0x10000 + gSprites[r6].oam.tileNum * 32)); - { - void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32); - u32 size = 0x300; - DmaFill32(3, 0, dest, size); - } + DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r8].oam.tileNum) * 32), 0x300); // What is this? zero = 0; zero = 0; - { - void *dest = (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32); - u32 size = 0x300; - DmaFill32(3, 0, dest, size); - } + DmaFill32Defvars(3, 0, (void *)(VRAM + 0x10000 + (0x28 + gSprites[r6].oam.tileNum) * 32), 0x300); gSprites[r8].data[0] = r6; gSprites[r6].data[0] = r8; diff --git a/src/engine/naming_screen.c b/src/engine/naming_screen.c index d54b84720..97819322c 100644 --- a/src/engine/naming_screen.c +++ b/src/engine/naming_screen.c @@ -1616,16 +1616,8 @@ static void sub_80B7558(void) static void sub_80B7568(void) { - const void *src; - void *dst; - - src = gNamingScreenMenu_Gfx; - dst = (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32); - DmaCopy16(3, src, dst, 0x800); - - src = gNamingScreenMenu_Gfx; - dst = (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32); - DmaCopy16(3, src, dst, 0x800); + DmaCopy16Defvars(3, gNamingScreenMenu_Gfx, (void *)(VRAM + gMenuMessageBoxContentTileOffset * 32), 0x800); + DmaCopy16Defvars(3, gNamingScreenMenu_Gfx, (void *)(VRAM + 0x8000 + gMenuMessageBoxContentTileOffset * 32), 0x800); } static void sub_80B75B0(void) diff --git a/src/engine/palette.c b/src/engine/palette.c index 17e9ca178..2a6602503 100644 --- a/src/engine/palette.c +++ b/src/engine/palette.c @@ -827,8 +827,6 @@ void BlendPalettes(u32 selectedPalettes, u8 coeff, u16 color) void BlendPalettesUnfaded(u32 selectedPalettes, u8 coeff, u16 color) { - void *src = gPlttBufferUnfaded; - void *dest = gPlttBufferFaded; - DmaCopy32(3, src, dest, PLTT_SIZE); + DmaCopy32Defvars(3, gPlttBufferUnfaded, gPlttBufferFaded, PLTT_SIZE); BlendPalettes(selectedPalettes, coeff, color); } diff --git a/src/engine/trade.c b/src/engine/trade.c index 81485d3f6..c271649c1 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1465,13 +1465,10 @@ static void sub_8048B0C(u8 a0) DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); for (i = 0; i < 0x400; i ++) gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; - dest = BG_SCREEN_ADDR(6); - DmaCopy16(3, gTradeStripesBG2Tilemap, dest, 0x800); + DmaCopy16Defvars(3, gTradeStripesBG2Tilemap, BG_SCREEN_ADDR(6), 0x800); break; case 1: - src = gTradeStripesBG3Tilemap; - dest = BG_SCREEN_ADDR(7); - DmaCopy16(3, src, dest, 0x800); + DmaCopy16Defvars(3, gTradeStripesBG3Tilemap, BG_SCREEN_ADDR(7), 0x800); sub_804A6DC(0); sub_804A6DC(1); sub_804A938(&gUnknown_03004824->unk_00c8); @@ -5685,13 +5682,9 @@ static void sub_804E1DC(void) void sub_804E22C(void) { - const u16 *src; - u16 *dest; LZDecompressVram(gUnknown_08D00000, (void *)VRAM); CpuCopy16(gUnknown_08D00524, gSharedMem, 0x1000); - src = (const u16 *)gSharedMem; - dest = BG_SCREEN_ADDR(5); - DmaCopy16(3, src, dest, 0x500) + DmaCopy16Defvars(3, gSharedMem, BG_SCREEN_ADDR(5), 0x500); LoadCompressedPalette(gUnknown_08D004E0, 0, 32); REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5); } diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index bec16334d..bb937ea43 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -189,7 +189,6 @@ static void sub_8146288(void) bool8 sub_81462B8(void) { u16 i; - void *addr; switch (gSharedMem.var_1FFFF) { @@ -213,8 +212,7 @@ bool8 sub_81462B8(void) else gBGTilemapBuffers[2][i] = 0x5042; } - addr = (void *)(VRAM + 0x3800); - DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x3800), 0x800); gSharedMem.var_1FFFF += 1; break; case 4: diff --git a/src/field/item_menu.c b/src/field/item_menu.c index d86550eb6..6bad9f4d6 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -368,20 +368,8 @@ static void sub_80A3134(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - - { - const void *src = gBGTilemapBuffers[1]; - void *dst = (void *)(VRAM + 0x2000); - - DmaCopy16(3, src, dst, 0x800); - } - - { - const void *src = gBGTilemapBuffers[2]; - void *dst = (void *)(VRAM + 0x6000); - - DmaCopy16(3, src, dst, 0x800); - } + DmaCopy16Defvars(3, gBGTilemapBuffers[1], (void *)(VRAM + 0x2000), 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x6000), 0x800); } static bool8 SetupBagMultistep(void) diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 53bad9618..31dd55dda 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -777,9 +777,7 @@ void ReDrawPartyMonBackgrounds(void) { if (ewram1B000.unk261) { - const void *src = gBGTilemapBuffers[2]; - void *dest = (void *)(BG_VRAM + 0x3000); - DmaCopy16(3, src, dest, 0x800); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800); if (ewram1B000.unk261 == 2) { diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 31bdcc398..e08a65f49 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -228,14 +228,10 @@ static void sub_810B674(void) static void sub_810B68C(void) { - u16 *src; - vu16 *dest; LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - src = gBGTilemapBuffers[2]; - dest = (vu16 *)(VRAM + 0x7800); - DmaCopy16(3, src, dest, sizeof gBGTilemapBuffers[2]); + DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(VRAM + 0x7800), sizeof gBGTilemapBuffers[2]); } static bool8 sub_810B6C0(void) diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 95aa9c79e..db41919be 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -744,29 +744,12 @@ static bool32 sub_80719FC(u8 *step) switch (*step) { case 0: - { - u8 *addr; - u32 size; - REG_DISPCNT = 0; SetVBlankCallback(NULL); ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); - addr = (void *)VRAM; - size = 0x18000; - while (1) - { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } - } - break; - } + DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); + break; case 1: ResetSpriteData(); ResetTasks(); diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 6b6469634..7567899ae 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -832,14 +832,9 @@ static bool8 sub_804E2EC(void) gBerryBlenderData->field_1++; break; case 1: - { - const void* offsetRead = sBlenderCenterMap; - void* offsetWrite = (void*)(VRAM + 0x4000); - - DmaCopy16(3, offsetRead, offsetWrite, 0x400); - LoadPalette(sBlenderCenterPal, 0, 0x100); - gBerryBlenderData->field_1++; - } + DmaCopy16Defvars(3, sBlenderCenterMap, (void *)(VRAM + 0x4000), 0x400); + LoadPalette(sBlenderCenterPal, 0, 0x100); + gBerryBlenderData->field_1++; break; case 2: DmaCopyLarge16(3, ewram10000, (void *)(VRAM + 0x0), 0x2000, 0x1000); @@ -854,37 +849,23 @@ static bool8 sub_804E2EC(void) gBerryBlenderData->field_1++; break; case 5: - { - void* offsetRead = ewram10000; - void* offsetWrite = (void*)(VRAM + 0xE000); - - DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - gBerryBlenderData->field_1++; - } + DmaCopy16Defvars(3, ewram10000, (void *)(VRAM + 0xE000), 0x1000); + gBerryBlenderData->field_1++; break; case 6: - { - void* offsetRead = ewram11000; - void* offsetWrite = (void*)(VRAM + 0xF000); - - DmaCopy16(3, offsetRead, offsetWrite, 0x1000); - gBerryBlenderData->field_1++; - } + DmaCopy16Defvars(3, ewram11000, (void *)(VRAM + 0xF000), 0x1000); + gBerryBlenderData->field_1++; break; case 7: { u16 i; u16* palStore = (u16*)(ewram13000); - void* offsetRead; - void* offsetWrite; for (i = 0; i < 640; i++) { *(palStore + i) |= 0x100; } - offsetRead = ewram13000; - offsetWrite = (void*)(VRAM + 0x6000); - DmaCopy16(3, offsetRead, offsetWrite, 0x500); + DmaCopy16Defvars(3, ewram13000, (void *)(VRAM + 0x6000), 0x500); LoadPalette(sBlenderOuterPal, 0x80, 0x20); gBerryBlenderData->field_1++; } diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c index 8c585e067..282ad31fb 100644 --- a/src/scene/egg_hatch.c +++ b/src/scene/egg_hatch.c @@ -504,18 +504,11 @@ static void CB2_EggHatch_0(void) gMain.state++; break; case 7: - { - u32 offsetRead2, offsetWrite2; - - REG_BG2CNT = 0x4C06; - LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); - DmaCopyLarge16(3, gUnknown_0820CA98, (void *)(VRAM + 0x4000), 0x1300, 0x1000); - - offsetRead2 = (u32)(&gUnknown_0820F798); - offsetWrite2 = (u32)(VRAM + 0x6000); - DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000); - gMain.state++; - } + REG_BG2CNT = 0x4C06; + LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0); + DmaCopyLarge16(3, gUnknown_0820CA98, (void *)(VRAM + 0x4000), 0x1300, 0x1000); + DmaCopy16Defvars(3, gUnknown_0820F798, (void *)(VRAM + 0x6000), 0x1000); + gMain.state++; break; case 8: REG_BG1CNT = 0x501; diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c index f7f7fb1cc..e486c65a3 100644 --- a/src/scene/hall_of_fame.c +++ b/src/scene/hall_of_fame.c @@ -1199,8 +1199,6 @@ static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1) static void sub_81433E0(void) { - u32 offsetWrite2, offsetWrite3; - u32 size2, size3; u16 i; REG_DISPCNT = 0; @@ -1222,14 +1220,8 @@ static void sub_81433E0(void) REG_BG3VOFS = 0; DmaFill16Large(3, 0, VRAM, 0x18000, 0x1000); - - offsetWrite2 = OAM; - size2 = OAM_SIZE; - DmaFill32(3, 0, offsetWrite2, size2); - - offsetWrite3 = PLTT; - size3 = PLTT_SIZE; - DmaFill16(3, 0, offsetWrite3, size3); + DmaFill32Defvars(3, 0, OAM, OAM_SIZE); + DmaFill16Defvars(3, 0, PLTT, PLTT_SIZE); LZ77UnCompVram(gHallOfFame_Gfx, (void*)(VRAM)); diff --git a/src/scene/intro.c b/src/scene/intro.c index f7e196133..4da341744 100644 --- a/src/scene/intro.c +++ b/src/scene/intro.c @@ -1217,7 +1217,6 @@ static void Task_IntroWaitToSetupPart3DoubleFight(u8 taskId) static void Task_IntroLoadPart3Streaks(u8 taskId) { u16 i; - void *vram; intro_reset_and_hide_bgs(); for (i = 0; i < 32; i++) @@ -1226,8 +1225,7 @@ static void Task_IntroLoadPart3Streaks(u8 taskId) ewram0arr[1][i] = 17; ewram0arr[2][i] = 34; } - vram = (void *)VRAM; - DmaCopy16(3, gSharedMem, vram, 0x60); + DmaCopy16Defvars(3, gSharedMem, (void *)(VRAM + 0x0), 0x60); for (i = 0; i < 0x280; i++) ((u16 *)(VRAM + 0x3000))[i] = 0xF001; for (i = 0; i < 0x80; i++) -- cgit v1.2.3 From a02a85f477cbf44aa0370de8f40bd8ced77513c2 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 18:56:16 -0600 Subject: get nonmatching debug rom to build --- src/field/field_map_obj.c | 3 + src/field/item_menu.c | 18 ++++ src/field/mauville_man.c | 197 +++++++++++++++++++++++++++++++++++++++++++- src/pokemon/mail.c | 205 ++-------------------------------------------- 4 files changed, 222 insertions(+), 201 deletions(-) (limited to 'src') diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 1c0cefacb..c255d3013 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1907,6 +1907,9 @@ static u8 gUnknown_030005A4; static u16 gUnknown_030005A6; struct MapObject gMapObjects[16]; +#if DEBUG +u8 gUnknown_Debug_03004BC0[4]; // unknown type +#endif void npc_clear_ids_and_state(struct MapObject *mapObj) { diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 61774f816..7922bf69d 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -289,6 +289,24 @@ static void sub_80A6618(u8); const struct YesNoFuncTable gUnknown_083C16FC = {sub_80A65AC, sub_80A6618}; +#if DEBUG +const struct {u16 item; u8 unk;} gUnknown_Debug_083EBC68[12+48] = +{ + {ITEM_POKE_BALL, 10}, + {ITEM_ULTRA_BALL, 15}, + {ITEM_GREAT_BALL, 20}, + {ITEM_MASTER_BALL, 25}, + {ITEM_ACRO_BIKE, 1 }, + {ITEM_OLD_ROD, 1 }, + {ITEM_GOOD_ROD, 1 }, + {ITEM_SUPER_ROD, 1 }, + {ITEM_POKEBLOCK_CASE, 1 }, + {ITEM_WAILMER_PAIL, 1 }, + {ITEM_ITEMFINDER, 1 }, + {ITEM_NONE, 1 }, +}; +#endif + void sub_80A34E8(void); static bool8 LoadBagGraphicsMultistep(void); static void sub_80A362C(void); diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 51bd9bb35..144c0235a 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -1313,7 +1313,7 @@ static void PrintStoryList(void) Menu_PrintText(gPCText_Cancel, 1, 2 + i * 2); } -u8 gUnknown_03000748; +static u8 gUnknown_03000748; static void Task_StoryListMenu(u8 taskId) { @@ -1392,3 +1392,198 @@ bool8 ScrSpecial_StorytellerInitializeRandomStat(void) { return StorytellerInitializeRandomStat(); } + +#if DEBUG +__attribute__((naked)) +void This_is_not_HandleReadMail() +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " add r6, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " ldr r0, .__3\n" + " ldrb r3, [r0]\n" + " cmp r3, #0\n" + " beq .__1 @cond_branch\n" + " ldr r2, .__3 + 4\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r0, .__3 + 8\n" + " ldrh r1, [r0]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r0, r2, r3\n" + " strb r1, [r0]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, .__3 + 12\n" + " str r0, [r1]\n" + " add r3, r3, #0x8\n" + " add r1, r2, r3\n" + " ldr r0, .__3 + 16\n" + " str r0, [r1]\n" + " ldr r0, .__3 + 20\n" + " ldrh r1, [r0]\n" + " b .__2\n" + ".__4:\n" + " .align 2, 0\n" + ".__3:\n" + " .word gUnknown_03000748+0x4\n" + " .word +0x2000000\n" + " .word gSpecialVar_0x8004\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + " .word gSpecialVar_0x8006\n" + ".__1:\n" + " ldr r2, .__7\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " add r0, r0, #0xfb\n" + " add r1, r2, r0\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, .__7 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, .__7 + 8\n" + " str r0, [r1]\n" + " ldrh r1, [r4, #0x20]\n" + " add r0, r1, #0\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi .__5 @cond_branch\n" + " sub r1, r1, #0x79\n" + ".__2:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r1, [r0]\n" + " b .__6\n" + ".__8:\n" + " .align 2, 0\n" + ".__7:\n" + " .word +0x2000000\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + ".__5:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r3, [r0]\n" + " mov r5, #0x0\n" + ".__6:\n" + " ldr r1, .__12\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq .__9 @cond_branch\n" + " cmp r0, #0x1\n" + " beq .__10 @cond_branch\n" + ".__9:\n" + " mov r3, #0x86\n" + " lsl r3, r3, #0x1\n" + " add r2, r1, r3\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, .__12 + 4\n" + " b .__11\n" + ".__13:\n" + " .align 2, 0\n" + ".__12:\n" + " .word +0x2000000\n" + " .word gUnknown_083E5730\n" + ".__10:\n" + " mov r0, #0x86\n" + " lsl r0, r0, #0x1\n" + " add r2, r1, r0\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, .__18\n" + ".__11:\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " ldrh r0, [r4, #0x1e]\n" + " mov r1, sp\n" + " bl MailSpeciesToSpecies\n" + " lsl r0, r0, #0x10\n" + " ldr r1, .__18 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xcd\n" + " lsl r1, r1, #0x11\n" + " cmp r0, r1\n" + " bhi .__14 @cond_branch\n" + " ldr r0, .__18 + 8\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfa\n" + " ldrb r2, [r1]\n" + " add r1, r0, #0\n" + " cmp r2, #0x6\n" + " beq .__15 @cond_branch\n" + " cmp r2, #0x9\n" + " beq .__16 @cond_branch\n" + " b .__17\n" + ".__19:\n" + " .align 2, 0\n" + ".__18:\n" + " .word gUnknown_083E57A4\n" + " .word 0xffff0000\n" + " .word +0x2000000\n" + ".__15:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x1\n" + " b .__21\n" + ".__16:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x2\n" + " b .__21\n" + ".__14:\n" + " ldr r1, .__22\n" + ".__17:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x0\n" + ".__21:\n" + " strb r0, [r2]\n" + " add r0, r1, #0\n" + " add r0, r0, #0xf4\n" + " str r4, [r0]\n" + " sub r0, r0, #0x8\n" + " str r6, [r0]\n" + " add r0, r0, #0xc\n" + " strb r5, [r0]\n" + " ldr r0, .__22 + 4\n" + " bl SetMainCallback2\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + ".__23:\n" + " .align 2, 0\n" + ".__22:\n" + " .word +0x2000000\n" + " .word sub_80F8D50+1\n" + "\n" + ); +} +#endif diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 565a9861b..6e03958e6 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -68,6 +68,11 @@ struct MailGraphics u16 color12; }; +#if DEBUG +// should be static +__attribute__((section(".bss"))) u8 unk_debug_bss_2; +#endif + const u16 gUnknown_083E562C[][2] = { {0x6ACD, 0x51A5}, @@ -322,205 +327,6 @@ static void sub_80F8F58(void); static void sub_80F8F78(void); static void sub_80F8FB4(void); - -#if DEBUG - -// should be static -__attribute__((section(".bss"))) u8 unk_debug_bss_2; - -__attribute__((naked)) -void HandleReadMail(struct MailStruct *aStruct, MainCallback callback, bool8 bool81) -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r2, r2, #0x18\n" - " lsr r5, r2, #0x18\n" - " ldr r0, ._3\n" - " ldrb r3, [r0]\n" - " cmp r3, #0\n" - " beq ._1 @cond_branch\n" - " ldr r2, ._3 + 4\n" - " add r1, r2, #0\n" - " add r1, r1, #0xff\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r0, ._3 + 8\n" - " ldrh r1, [r0]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - " add r0, r2, r3\n" - " strb r1, [r0]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, ._3 + 12\n" - " str r0, [r1]\n" - " add r3, r3, #0x8\n" - " add r1, r2, r3\n" - " ldr r0, ._3 + 16\n" - " str r0, [r1]\n" - " ldr r0, ._3 + 20\n" - " ldrh r1, [r0]\n" - " b ._2\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gUnknown_03000748+0x4\n" - " .word +0x2000000\n" - " .word gSpecialVar_0x8004\n" - " .word EasyChat_GetWordText+1\n" - " .word ConvertEasyChatWordsToString+1\n" - " .word gSpecialVar_0x8006\n" - "._1:\n" - " ldr r2, ._7\n" - " add r1, r2, #0\n" - " add r1, r1, #0xff\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " add r0, r0, #0xfb\n" - " add r1, r2, r0\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, ._7 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x84\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, ._7 + 8\n" - " str r0, [r1]\n" - " ldrh r1, [r4, #0x20]\n" - " add r0, r1, #0\n" - " sub r0, r0, #0x79\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._5 @cond_branch\n" - " sub r1, r1, #0x79\n" - "._2:\n" - " add r0, r2, #0\n" - " add r0, r0, #0xfa\n" - " strb r1, [r0]\n" - " b ._6\n" - "._8:\n" - " .align 2, 0\n" - "._7:\n" - " .word +0x2000000\n" - " .word EasyChat_GetWordText+1\n" - " .word ConvertEasyChatWordsToString+1\n" - "._5:\n" - " add r0, r2, #0\n" - " add r0, r0, #0xfa\n" - " strb r3, [r0]\n" - " mov r5, #0x0\n" - "._6:\n" - " ldr r1, ._12\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._9 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._10 @cond_branch\n" - "._9:\n" - " mov r3, #0x86\n" - " lsl r3, r3, #0x1\n" - " add r2, r1, r3\n" - " add r0, r1, #0\n" - " add r0, r0, #0xfa\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._12 + 4\n" - " b ._11\n" - "._13:\n" - " .align 2, 0\n" - "._12:\n" - " .word +0x2000000\n" - " .word gUnknown_083E5730\n" - "._10:\n" - " mov r0, #0x86\n" - " lsl r0, r0, #0x1\n" - " add r2, r1, r0\n" - " add r0, r1, #0\n" - " add r0, r0, #0xfa\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._18\n" - "._11:\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " ldrh r0, [r4, #0x1e]\n" - " mov r1, sp\n" - " bl MailSpeciesToSpecies\n" - " lsl r0, r0, #0x10\n" - " ldr r1, ._18 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xcd\n" - " lsl r1, r1, #0x11\n" - " cmp r0, r1\n" - " bhi ._14 @cond_branch\n" - " ldr r0, ._18 + 8\n" - " add r1, r0, #0\n" - " add r1, r1, #0xfa\n" - " ldrb r2, [r1]\n" - " add r1, r0, #0\n" - " cmp r2, #0x6\n" - " beq ._15 @cond_branch\n" - " cmp r2, #0x9\n" - " beq ._16 @cond_branch\n" - " b ._17\n" - "._19:\n" - " .align 2, 0\n" - "._18:\n" - " .word gUnknown_083E57A4\n" - " .word 0xffff0000\n" - " .word +0x2000000\n" - "._15:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x1\n" - " b ._21\n" - "._16:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x2\n" - " b ._21\n" - "._14:\n" - " ldr r1, ._22\n" - "._17:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x0\n" - "._21:\n" - " strb r0, [r2]\n" - " add r0, r1, #0\n" - " add r0, r0, #0xf4\n" - " str r4, [r0]\n" - " sub r0, r0, #0x8\n" - " str r6, [r0]\n" - " add r0, r0, #0xc\n" - " strb r5, [r0]\n" - " ldr r0, ._22 + 4\n" - " bl SetMainCallback2\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._23:\n" - " .align 2, 0\n" - "._22:\n" - " .word +0x2000000\n" - " .word sub_80F8D50+1\n" - "\n" - ); -} -#else void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) { u16 mailDesign; @@ -584,7 +390,6 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) SetMainCallback2(sub_80F8D50); } -#endif #define RETURN_UP_STATE break #define RETURN_SKIP_STATE return FALSE -- cgit v1.2.3 From 8a21a49a35d91ba9b07ac5027a0560ddf1f4ad25 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 21:04:48 -0600 Subject: add some debug changes that I missed --- src/battle/battle_2.c | 19 +- src/battle/battle_util.c | 4473 ++++++++++++++++++++++++++++++++++++++++++++++ src/engine/link.c | 22 +- 3 files changed, 4503 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 6d2045604..696f1fde0 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -9141,17 +9141,7 @@ void debug_sub_80139E4() "\n" ); } -#endif - -void sub_8010824(void) -{ - gBattleMainFunc(); - for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) - gBattleBankFunc[gActiveBank](); -} - -#if DEBUG __attribute__((naked)) void sub_8010874() { @@ -9525,6 +9515,15 @@ void sub_8010874() ); } #else + +void sub_8010824(void) +{ + gBattleMainFunc(); + + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + gBattleBankFunc[gActiveBank](); +} + void sub_8010874(void) { s32 i; diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index f93664593..3bb99f845 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -1683,6 +1683,4066 @@ u8 CastformDataTypeChange(u8 bank) return formChange; } +#if DEBUG +__attribute__((naked)) +u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + add sp, sp, #0xffffffd8\n\ + ldr r4, [sp, #0x48]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + str r0, [sp, #0x4]\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + mov sl, r1\n\ + lsl r2, r2, #0x18\n\ + lsr r6, r2, #0x18\n\ + lsl r3, r3, #0x18\n\ + lsr r3, r3, #0x18\n\ + mov r8, r3\n\ + lsl r4, r4, #0x10\n\ + lsr r4, r4, #0x10\n\ + mov r0, #0x0\n\ + mov r9, r0\n\ + ldr r5, ._718\n\ + ldr r1, ._718 + 4\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc ._715 @cond_branch\n\ + mov r1, sl\n\ + strb r1, [r5]\n\ +._715:\n\ + ldrb r0, [r5]\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._716 @cond_branch\n\ + ldr r1, ._718 + 8\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r1, r1, r0\n\ + ldr r0, ._718 + 12\n\ + b ._717\n\ +._719:\n\ + .align 2, 0\n\ +._718:\n\ + .word gBankAttacker\n\ + .word gNoOfAllBanks\n\ + .word gBattlePartyID\n\ + .word gPlayerParty\n\ +._716:\n\ + ldr r1, ._723\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r1, r1, r0\n\ + ldr r0, ._723 + 4\n\ +._717:\n\ + add r7, r1, r0\n\ + ldr r5, ._723 + 8\n\ + ldr r1, ._723 + 12\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc ._720 @cond_branch\n\ + mov r2, sl\n\ + strb r2, [r5]\n\ +._720:\n\ + ldrb r0, [r5]\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._721 @cond_branch\n\ + ldr r1, ._723\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r1, r1, r0\n\ + ldr r0, ._723 + 16\n\ + b ._722\n\ +._724:\n\ + .align 2, 0\n\ +._723:\n\ + .word gBattlePartyID\n\ + .word gEnemyParty\n\ + .word gBankTarget\n\ + .word gNoOfAllBanks\n\ + .word gPlayerParty\n\ +._721:\n\ + ldr r1, ._729\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r1, r1, r0\n\ + ldr r0, ._729 + 4\n\ +._722:\n\ + add r5, r1, r0\n\ + add r0, r7, #0\n\ + mov r1, #0xb\n\ + bl GetMonData\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + str r0, [sp, #0x8]\n\ + add r0, r7, #0\n\ + mov r1, #0x0\n\ + bl GetMonData\n\ + str r0, [sp, #0x10]\n\ + add r0, r5, #0\n\ + mov r1, #0xb\n\ + bl GetMonData\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + str r0, [sp, #0xc]\n\ + add r0, r5, #0\n\ + mov r1, #0x0\n\ + bl GetMonData\n\ + str r0, [sp, #0x14]\n\ + ldr r0, ._729 + 8\n\ + ldrh r1, [r0]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._725 @cond_branch\n\ + bl ._1540\n\ +._725:\n\ + mov r3, r8\n\ + cmp r3, #0\n\ + beq ._727 @cond_branch\n\ + ldr r0, ._729 + 12\n\ + strb r3, [r0]\n\ + mov r8, r0\n\ + b ._728\n\ +._730:\n\ + .align 2, 0\n\ +._729:\n\ + .word gBattlePartyID\n\ + .word gEnemyParty\n\ + .word gBattleTypeFlags\n\ + .word gLastUsedAbility\n\ +._727:\n\ + ldr r2, ._733\n\ + ldr r1, ._733 + 4\n\ + mov r0, #0x58\n\ + mov r5, sl\n\ + mul r5, r5, r0\n\ + add r0, r5, #0\n\ + add r0, r0, r1\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + strb r0, [r2]\n\ + mov r8, r2\n\ +._728:\n\ + cmp r4, #0\n\ + beq ._731 @cond_branch\n\ + add r3, r4, #0\n\ + b ._732\n\ +._734:\n\ + .align 2, 0\n\ +._733:\n\ + .word gLastUsedAbility\n\ + .word gBattleMons\n\ +._731:\n\ + ldr r0, ._737\n\ + ldrh r3, [r0]\n\ +._732:\n\ + ldr r1, ._737 + 4\n\ + ldr r2, ._737 + 8\n\ + add r0, r1, r2\n\ + ldrb r0, [r0]\n\ + add r7, r1, #0\n\ + cmp r0, #0\n\ + beq ._735 @cond_branch\n\ + mov r4, #0x3f\n\ + and r4, r4, r0\n\ + b ._736\n\ +._738:\n\ + .align 2, 0\n\ +._737:\n\ + .word gCurrentMove\n\ + .word +0x2000000\n\ + .word 0x1601c\n\ +._735:\n\ + ldr r1, ._741\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r4, [r0, #0x2]\n\ +._736:\n\ + ldr r5, [sp, #0x4]\n\ + cmp r5, #0x13\n\ + bls ._739 @cond_branch\n\ + bl ._1534\n\ +._739:\n\ + lsl r0, r5, #0x2\n\ + ldr r1, ._741 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._742:\n\ + .align 2, 0\n\ +._741:\n\ + .word gBattleMoves\n\ + .word ._743\n\ +._743:\n\ + .word ._744\n\ + .word ._745\n\ + .word ._746\n\ + .word ._747\n\ + .word ._748\n\ + .word ._749\n\ + .word ._750\n\ + .word ._751\n\ + .word ._752\n\ + .word ._753\n\ + .word ._754\n\ + .word ._755\n\ + .word ._756\n\ + .word ._757\n\ + .word ._758\n\ + .word ._759\n\ + .word ._760\n\ + .word ._761\n\ + .word ._762\n\ + .word ._763\n\ +._744:\n\ + ldr r2, ._774\n\ + ldr r0, ._774 + 4\n\ + ldrb r1, [r2]\n\ + add r5, r0, #0\n\ + ldrb r0, [r5]\n\ + cmp r1, r0\n\ + bcc ._764 @cond_branch\n\ + mov r1, sl\n\ + strb r1, [r2]\n\ +._764:\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + cmp r0, #0x2d\n\ + bne ._765 @cond_branch\n\ + b ._766\n\ +._765:\n\ + cmp r0, #0x2d\n\ + bgt ._767 @cond_branch\n\ + cmp r0, #0xd\n\ + bne ._768 @cond_branch\n\ + b ._788\n\ +._768:\n\ + cmp r0, #0xd\n\ + bgt ._770 @cond_branch\n\ + cmp r0, #0x2\n\ + bne ._771 @cond_branch\n\ + b ._772\n\ +._771:\n\ + bl ._1534\n\ +._775:\n\ + .align 2, 0\n\ +._774:\n\ + .word gBankAttacker\n\ + .word gNoOfAllBanks\n\ +._770:\n\ + cmp r0, #0x16\n\ + bne ._776 @cond_branch\n\ + b ._777\n\ +._776:\n\ + cmp r0, #0x24\n\ + bne ._778 @cond_branch\n\ + b ._779\n\ +._778:\n\ + bl ._1534\n\ +._767:\n\ + cmp r0, #0x46\n\ + bne ._781 @cond_branch\n\ + b ._782\n\ +._781:\n\ + cmp r0, #0x46\n\ + bgt ._783 @cond_branch\n\ + cmp r0, #0x3b\n\ + bne ._784 @cond_branch\n\ + b ._785\n\ +._784:\n\ + bl ._1534\n\ +._783:\n\ + cmp r0, #0x4d\n\ + bne ._787 @cond_branch\n\ + b ._788\n\ +._787:\n\ + cmp r0, #0xff\n\ + beq ._789 @cond_branch\n\ + bl ._1534\n\ +._789:\n\ + bl weather_get_current\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + sub r0, r0, #0x3\n\ + cmp r0, #0xa\n\ + bhi ._814 @cond_branch\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._793\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._794:\n\ + .align 2, 0\n\ +._793:\n\ + .word ._792\n\ +._792:\n\ + .word ._805\n\ + .word ._814\n\ + .word ._805\n\ + .word ._814\n\ + .word ._814\n\ + .word ._800\n\ + .word ._814\n\ + .word ._814\n\ + .word ._814\n\ + .word ._804\n\ + .word ._805\n\ +._805:\n\ + ldr r2, ._808\n\ + ldrh r1, [r2]\n\ + mov r0, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._814 @cond_branch\n\ + mov r0, #0x5\n\ + strh r0, [r2]\n\ + ldr r0, ._808 + 4\n\ + ldr r3, ._808 + 8\n\ + add r2, r0, r3\n\ + mov r1, #0xa\n\ + b ._811\n\ +._809:\n\ + .align 2, 0\n\ +._808:\n\ + .word gBattleWeather\n\ + .word +0x2000000\n\ + .word 0x160a4\n\ +._800:\n\ + ldr r3, ._812\n\ + ldrh r1, [r3]\n\ + mov r2, #0x18\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._814 @cond_branch\n\ + strh r2, [r3]\n\ + ldr r0, ._812 + 4\n\ + ldr r3, ._812 + 8\n\ + add r2, r0, r3\n\ + mov r1, #0xc\n\ + b ._811\n\ +._813:\n\ + .align 2, 0\n\ +._812:\n\ + .word gBattleWeather\n\ + .word +0x2000000\n\ + .word 0x160a4\n\ +._804:\n\ + ldr r3, ._818\n\ + ldrh r1, [r3]\n\ + mov r2, #0x60\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._814 @cond_branch\n\ + strh r2, [r3]\n\ + ldr r0, ._818 + 4\n\ + ldr r3, ._818 + 8\n\ + add r2, r0, r3\n\ + mov r1, #0xb\n\ +._811:\n\ + strb r1, [r2]\n\ + ldr r5, ._818 + 12\n\ + add r0, r0, r5\n\ + mov r1, sl\n\ + strb r1, [r0]\n\ + mov r0, r9\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._814:\n\ + mov r2, r9\n\ + cmp r2, #0\n\ + bne ._815 @cond_branch\n\ + bl ._1540\n\ +._815:\n\ + bl weather_get_current\n\ + ldr r1, ._818 + 16\n\ + strb r0, [r1, #0x5]\n\ + ldr r0, ._818 + 20\n\ + bl BattleScriptPushCursorAndCallback\n\ + bl ._1534\n\ +._819:\n\ + .align 2, 0\n\ +._818:\n\ + .word gBattleWeather\n\ + .word +0x2000000\n\ + .word 0x160a4\n\ + .word 0x16003\n\ + .word gBattleCommunication\n\ + .word BattleScript_OverworldWeatherStarts\n\ +._772:\n\ + ldr r2, ._823\n\ + ldrh r1, [r2]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._820 @cond_branch\n\ + bl ._1534\n\ +._820:\n\ + mov r0, #0x5\n\ + strh r0, [r2]\n\ + ldr r0, ._823 + 4\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r0, ._823 + 8\n\ + ldr r3, ._823 + 12\n\ + add r0, r0, r3\n\ + mov r5, sl\n\ + strb r5, [r0]\n\ + bl ._1392\n\ +._824:\n\ + .align 2, 0\n\ +._823:\n\ + .word gBattleWeather\n\ + .word BattleScript_DrizzleActivates\n\ + .word +0x2000000\n\ + .word 0x16003\n\ +._766:\n\ + ldr r2, ._828\n\ + ldrh r1, [r2]\n\ + mov r0, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._825 @cond_branch\n\ + bl ._1534\n\ +._825:\n\ + mov r0, #0x18\n\ + strh r0, [r2]\n\ + ldr r0, ._828 + 4\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r0, ._828 + 8\n\ + ldr r1, ._828 + 12\n\ + add r0, r0, r1\n\ + mov r2, sl\n\ + strb r2, [r0]\n\ + bl ._1392\n\ +._829:\n\ + .align 2, 0\n\ +._828:\n\ + .word gBattleWeather\n\ + .word BattleScript_SandstreamActivates\n\ + .word +0x2000000\n\ + .word 0x16003\n\ +._782:\n\ + ldr r2, ._833\n\ + ldrh r1, [r2]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._830 @cond_branch\n\ + bl ._1534\n\ +._830:\n\ + mov r0, #0x60\n\ + strh r0, [r2]\n\ + ldr r0, ._833 + 4\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r0, ._833 + 8\n\ + ldr r3, ._833 + 12\n\ + add r0, r0, r3\n\ + mov r5, sl\n\ + strb r5, [r0]\n\ + bl ._1392\n\ +._834:\n\ + .align 2, 0\n\ +._833:\n\ + .word gBattleWeather\n\ + .word BattleScript_DroughtActivates\n\ + .word +0x2000000\n\ + .word 0x16003\n\ +._777:\n\ + ldr r0, ._838\n\ + mov r1, sl\n\ + lsl r2, r1, #0x2\n\ + add r1, r2, r1\n\ + lsl r1, r1, #0x2\n\ + add r3, r1, r0\n\ + ldrb r0, [r3]\n\ + lsl r0, r0, #0x1c\n\ + cmp r0, #0\n\ + bge ._835 @cond_branch\n\ + bl ._1534\n\ +._835:\n\ + ldr r1, ._838 + 4\n\ + add r1, r2, r1\n\ + ldr r0, [r1]\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0xc\n\ + orr r0, r0, r2\n\ + str r0, [r1]\n\ + ldrb r0, [r3]\n\ + mov r1, #0x8\n\ + b ._837\n\ +._839:\n\ + .align 2, 0\n\ +._838:\n\ + .word gSpecialStatuses\n\ + .word gStatuses3\n\ +._785:\n\ + mov r0, sl\n\ + bl CastformDataTypeChange\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ + cmp r0, #0\n\ + bne ._840 @cond_branch\n\ + bl ._1540\n\ +._840:\n\ + ldr r0, ._843\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r0, ._843 + 4\n\ + ldr r2, ._843 + 8\n\ + add r1, r0, r2\n\ + mov r3, sl\n\ + strb r3, [r1]\n\ + mov r1, r9\n\ + sub r1, r1, #0x1\n\ + ldr r5, ._843 + 12\n\ + add r0, r0, r5\n\ + strb r1, [r0]\n\ + bl ._1534\n\ +._844:\n\ + .align 2, 0\n\ +._843:\n\ + .word BattleScript_CastformChange\n\ + .word +0x2000000\n\ + .word 0x16003\n\ + .word 0x1609b\n\ +._779:\n\ + ldr r0, ._848\n\ + mov r1, sl\n\ + lsl r2, r1, #0x2\n\ + add r1, r2, r1\n\ + lsl r1, r1, #0x2\n\ + add r3, r1, r0\n\ + ldrb r0, [r3]\n\ + lsl r0, r0, #0x1b\n\ + cmp r0, #0\n\ + bge ._845 @cond_branch\n\ + bl ._1534\n\ +._845:\n\ + ldr r1, ._848 + 4\n\ + add r1, r2, r1\n\ + ldr r0, [r1]\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0xd\n\ + orr r0, r0, r2\n\ + str r0, [r1]\n\ + ldrb r0, [r3]\n\ + mov r1, #0x10\n\ +._837:\n\ + orr r0, r0, r1\n\ + strb r0, [r3]\n\ + bl ._1534\n\ +._849:\n\ + .align 2, 0\n\ +._848:\n\ + .word gSpecialStatuses\n\ + .word gStatuses3\n\ +._788:\n\ + mov r6, #0x0\n\ + ldrb r5, [r5]\n\ + cmp r6, r5\n\ + bcc ._854 @cond_branch\n\ + bl ._1534\n\ +._854:\n\ + add r0, r6, #0\n\ + bl CastformDataTypeChange\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ + cmp r0, #0\n\ + beq ._852 @cond_branch\n\ + bl ._853\n\ +._852:\n\ + add r0, r6, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + ldr r0, ._856\n\ + ldrb r0, [r0]\n\ + cmp r6, r0\n\ + bcc ._854 @cond_branch\n\ + bl ._1534\n\ +._857:\n\ + .align 2, 0\n\ +._856:\n\ + .word gNoOfAllBanks\n\ +._745:\n\ + ldr r2, ._865\n\ + mov r0, #0x58\n\ + mov r1, sl\n\ + mul r1, r1, r0\n\ + add r4, r1, r2\n\ + ldrh r0, [r4, #0x28]\n\ + cmp r0, #0\n\ + bne ._858 @cond_branch\n\ + bl ._1534\n\ +._858:\n\ + ldr r0, ._865 + 4\n\ + mov r3, sl\n\ + strb r3, [r0]\n\ + mov r3, r8\n\ + ldrb r5, [r3]\n\ + cmp r5, #0x2c\n\ + beq ._860 @cond_branch\n\ + cmp r5, #0x2c\n\ + bgt ._861 @cond_branch\n\ + cmp r5, #0x3\n\ + bne ._862 @cond_branch\n\ + b ._863\n\ +._862:\n\ + bl ._1534\n\ +._866:\n\ + .align 2, 0\n\ +._865:\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ +._861:\n\ + cmp r5, #0x36\n\ + bne ._867 @cond_branch\n\ + b ._868\n\ +._867:\n\ + cmp r5, #0x3d\n\ + beq ._869 @cond_branch\n\ + bl ._1534\n\ +._860:\n\ + mov r0, #0x0\n\ + str r0, [sp]\n\ + mov r0, #0x13\n\ + mov r1, #0x0\n\ + mov r2, #0xd\n\ + mov r3, #0x0\n\ + bl AbilityBattleEffects\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._871 @cond_branch\n\ + bl ._1534\n\ +._871:\n\ + str r0, [sp]\n\ + mov r0, #0x13\n\ + mov r1, #0x0\n\ + mov r2, #0x4d\n\ + mov r3, #0x0\n\ + bl AbilityBattleEffects\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._873 @cond_branch\n\ + bl ._1534\n\ +._873:\n\ + ldr r0, ._881\n\ + ldrh r1, [r0]\n\ + mov r0, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._875 @cond_branch\n\ + bl ._1534\n\ +._875:\n\ + ldrh r0, [r4, #0x2c]\n\ + ldrh r1, [r4, #0x28]\n\ + cmp r0, r1\n\ + bhi ._877 @cond_branch\n\ + bl ._1534\n\ +._877:\n\ + mov r2, r8\n\ + strb r5, [r2]\n\ + ldr r0, ._881 + 4\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r1, ._881 + 8\n\ + ldrh r0, [r4, #0x2c]\n\ + lsr r0, r0, #0x4\n\ + str r0, [r1]\n\ + cmp r0, #0\n\ + bne ._879 @cond_branch\n\ + mov r0, #0x1\n\ + str r0, [r1]\n\ +._879:\n\ + ldr r0, [r1]\n\ + neg r0, r0\n\ + str r0, [r1]\n\ + bl ._1392\n\ +._882:\n\ + .align 2, 0\n\ +._881:\n\ + .word gBattleWeather\n\ + .word BattleScript_RainDishActivates\n\ + .word gBattleMoveDamage\n\ +._869:\n\ + add r0, r2, #0\n\ + add r0, r0, #0x4c\n\ + add r5, r1, r0\n\ + ldrb r0, [r5]\n\ + cmp r0, #0\n\ + bne ._883 @cond_branch\n\ + bl ._1534\n\ +._883:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0x3\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + lsr r4, r0, #0x10\n\ + cmp r4, #0\n\ + beq ._885 @cond_branch\n\ + bl ._1534\n\ +._885:\n\ + ldr r0, [r5]\n\ + mov r1, #0x88\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._887 @cond_branch\n\ + ldr r0, ._893\n\ + ldr r1, ._893 + 4\n\ + bl StringCopy\n\ +._887:\n\ + ldr r0, [r5]\n\ + mov r1, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._888 @cond_branch\n\ + ldr r0, ._893\n\ + ldr r1, ._893 + 8\n\ + bl StringCopy\n\ +._888:\n\ + ldr r0, [r5]\n\ + mov r1, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._889 @cond_branch\n\ + ldr r0, ._893\n\ + ldr r1, ._893 + 12\n\ + bl StringCopy\n\ +._889:\n\ + ldr r0, [r5]\n\ + mov r1, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._890 @cond_branch\n\ + ldr r0, ._893\n\ + ldr r1, ._893 + 16\n\ + bl StringCopy\n\ +._890:\n\ + ldr r0, [r5]\n\ + mov r1, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._891 @cond_branch\n\ + ldr r0, ._893\n\ + ldr r1, ._893 + 20\n\ + bl StringCopy\n\ +._891:\n\ + str r4, [r5]\n\ + ldr r0, ._893 + 24\n\ + ldr r4, ._893 + 28\n\ + mov r3, sl\n\ + strb r3, [r4]\n\ + ldr r1, ._893 + 32\n\ + add r0, r0, r1\n\ + strb r3, [r0]\n\ + ldr r0, ._893 + 36\n\ + bl BattleScriptPushCursorAndCallback\n\ + str r5, [sp]\n\ + mov r0, #0x0\n\ + mov r1, #0x28\n\ + mov r2, #0x0\n\ + mov r3, #0x4\n\ + bl EmitSetMonData\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl ._1392\n\ +._894:\n\ + .align 2, 0\n\ +._893:\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_PoisonJpn\n\ + .word gStatusConditionString_SleepJpn\n\ + .word gStatusConditionString_ParalysisJpn\n\ + .word gStatusConditionString_BurnJpn\n\ + .word gStatusConditionString_IceJpn\n\ + .word +0x2000000\n\ + .word gActiveBank\n\ + .word 0x16003\n\ + .word BattleScript_ShedSkinActivates\n\ +._863:\n\ + ldrb r2, [r4, #0x1b]\n\ + mov r0, #0x1b\n\ + ldsb r0, [r4, r0]\n\ + cmp r0, #0xb\n\ + ble ._895 @cond_branch\n\ + bl ._1534\n\ +._895:\n\ + ldr r0, ._900\n\ + mov r3, sl\n\ + lsl r1, r3, #0x3\n\ + sub r1, r1, r3\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x16]\n\ + cmp r0, #0x2\n\ + bne ._897 @cond_branch\n\ + bl ._1534\n\ +._897:\n\ + add r0, r2, #1\n\ + mov r2, #0x0\n\ + strb r0, [r4, #0x1b]\n\ + ldr r5, ._900 + 4\n\ + add r1, r7, r5\n\ + mov r0, #0x11\n\ + strb r0, [r1]\n\ + ldr r1, ._900 + 8\n\ + add r0, r7, r1\n\ + strb r2, [r0]\n\ + ldr r0, ._900 + 12\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r2, ._900 + 16\n\ + add r0, r7, r2\n\ + mov r3, sl\n\ + strb r3, [r0]\n\ + bl ._1392\n\ +._901:\n\ + .align 2, 0\n\ +._900:\n\ + .word gDisableStructs\n\ + .word 0x160a4\n\ + .word 0x160a5\n\ + .word BattleScript_SpeedBoostActivates\n\ + .word 0x16003\n\ +._868:\n\ + ldr r2, ._903\n\ + ldrb r0, [r0]\n\ + lsl r1, r0, #0x3\n\ + sub r1, r1, r0\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r2\n\ + ldrb r3, [r1, #0x18]\n\ + lsl r0, r3, #0x1f\n\ + lsr r0, r0, #0x1f\n\ + mov r2, #0x1\n\ + eor r2, r2, r0\n\ + mov r0, #0x2\n\ + neg r0, r0\n\ + and r0, r0, r3\n\ + orr r0, r0, r2\n\ + strb r0, [r1, #0x18]\n\ + bl ._1534\n\ +._904:\n\ + .align 2, 0\n\ +._903:\n\ + .word gDisableStructs\n\ +._746:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + cmp r0, #0x2b\n\ + beq ._905 @cond_branch\n\ + bl ._1534\n\ +._905:\n\ + mov r4, #0x0\n\ + ldr r0, ._917\n\ + ldrh r2, [r0]\n\ + ldr r5, ._917 + 4\n\ + add r1, r0, #0\n\ + cmp r2, r5\n\ + bne ._907 @cond_branch\n\ + bl ._1534\n\ +._907:\n\ + cmp r2, r3\n\ + beq ._909 @cond_branch\n\ + add r2, r1, #0\n\ +._912:\n\ + add r2, r2, #0x2\n\ + add r4, r4, #0x1\n\ + ldrh r0, [r2]\n\ + cmp r0, r5\n\ + bne ._910 @cond_branch\n\ + bl ._1534\n\ +._910:\n\ + cmp r0, r3\n\ + bne ._912 @cond_branch\n\ +._909:\n\ + lsl r0, r4, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + ldr r0, ._917 + 4\n\ + cmp r1, r0\n\ + bne ._913 @cond_branch\n\ + bl ._1534\n\ +._913:\n\ + ldr r1, ._917 + 8\n\ + ldr r0, ._917 + 12\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r1, r1, #0x50\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x5\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._915 @cond_branch\n\ + ldr r0, ._917 + 16\n\ + ldr r1, [r0]\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0x4\n\ + orr r1, r1, r2\n\ + str r1, [r0]\n\ +._915:\n\ + ldr r1, ._917 + 20\n\ + ldr r0, ._917 + 24\n\ + str r0, [r1]\n\ + mov r0, #0x1\n\ + mov r9, r0\n\ + bl ._916\n\ +._918:\n\ + .align 2, 0\n\ +._917:\n\ + .word gSoundMovesTable\n\ + .word 0xffff\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gHitMarker\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_SoundproofProtected\n\ +._747:\n\ + cmp r3, #0\n\ + bne ._919 @cond_branch\n\ + bl ._1534\n\ +._919:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, #0xb\n\ + beq ._921 @cond_branch\n\ + cmp r0, #0xb\n\ + bgt ._922 @cond_branch\n\ + cmp r0, #0xa\n\ + beq ._923 @cond_branch\n\ + b ._956\n\ +._922:\n\ + cmp r0, #0x12\n\ + beq ._925 @cond_branch\n\ + b ._956\n\ +._923:\n\ + cmp r4, #0xd\n\ + beq ._927 @cond_branch\n\ + b ._956\n\ +._927:\n\ + ldr r0, ._933\n\ + lsl r1, r3, #0x1\n\ + add r1, r1, r3\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + cmp r0, #0\n\ + bne ._929 @cond_branch\n\ + b ._956\n\ +._929:\n\ + ldr r1, ._933 + 4\n\ + ldr r0, ._933 + 8\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0, #0x2]\n\ + lsl r0, r0, #0x1c\n\ + cmp r0, #0\n\ + bge ._931 @cond_branch\n\ + ldr r1, ._933 + 12\n\ + ldr r0, ._933 + 16\n\ + b ._932\n\ +._934:\n\ + .align 2, 0\n\ +._933:\n\ + .word gBattleMoves\n\ + .word gProtectStructs\n\ + .word gBankAttacker\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_MoveHPDrain\n\ +._931:\n\ + ldr r1, ._936\n\ + ldr r0, ._936 + 4\n\ +._932:\n\ + str r0, [r1]\n\ + mov r2, #0x1\n\ + b ._935\n\ +._937:\n\ + .align 2, 0\n\ +._936:\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_MoveHPDrain_PPLoss\n\ +._921:\n\ + cmp r4, #0xb\n\ + beq ._938 @cond_branch\n\ + b ._956\n\ +._938:\n\ + ldr r0, ._944\n\ + lsl r1, r3, #0x1\n\ + add r1, r1, r3\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + cmp r0, #0\n\ + bne ._940 @cond_branch\n\ + b ._956\n\ +._940:\n\ + ldr r1, ._944 + 4\n\ + ldr r0, ._944 + 8\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0, #0x2]\n\ + lsl r0, r0, #0x1c\n\ + cmp r0, #0\n\ + bge ._942 @cond_branch\n\ + ldr r1, ._944 + 12\n\ + ldr r0, ._944 + 16\n\ + b ._943\n\ +._945:\n\ + .align 2, 0\n\ +._944:\n\ + .word gBattleMoves\n\ + .word gProtectStructs\n\ + .word gBankAttacker\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_MoveHPDrain\n\ +._942:\n\ + ldr r1, ._947\n\ + ldr r0, ._947 + 4\n\ +._943:\n\ + str r0, [r1]\n\ + mov r3, #0x1\n\ + mov r9, r3\n\ + b ._956\n\ +._948:\n\ + .align 2, 0\n\ +._947:\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_MoveHPDrain_PPLoss\n\ +._925:\n\ + cmp r4, #0xa\n\ + bne ._956 @cond_branch\n\ + ldr r1, ._954\n\ + mov r0, #0x58\n\ + mov r5, sl\n\ + mul r5, r5, r0\n\ + add r0, r5, #0\n\ + add r1, r1, #0x4c\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._956 @cond_branch\n\ + ldr r2, ._954 + 4\n\ + mov r0, sl\n\ + lsl r1, r0, #0x2\n\ + add r0, r1, r2\n\ + ldr r3, [r0]\n\ + mov r4, #0x1\n\ + and r3, r3, r4\n\ + add r5, r1, #0\n\ + cmp r3, #0\n\ + bne ._951 @cond_branch\n\ + ldr r0, ._954 + 8\n\ + strb r3, [r0, #0x5]\n\ + ldr r1, ._954 + 12\n\ + ldr r0, ._954 + 16\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0, #0x2]\n\ + lsl r0, r0, #0x1c\n\ + cmp r0, #0\n\ + bge ._952 @cond_branch\n\ + ldr r1, ._954 + 20\n\ + ldr r0, ._954 + 24\n\ + b ._953\n\ +._955:\n\ + .align 2, 0\n\ +._954:\n\ + .word gBattleMons\n\ + .word +0x2017100\n\ + .word gBattleCommunication\n\ + .word gProtectStructs\n\ + .word gBankAttacker\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_FlashFireBoost\n\ +._952:\n\ + ldr r1, ._957\n\ + ldr r0, ._957 + 4\n\ +._953:\n\ + str r0, [r1]\n\ + add r0, r5, r2\n\ + ldr r1, [r0]\n\ + mov r2, #0x1\n\ + orr r1, r1, r2\n\ + str r1, [r0]\n\ + mov r1, #0x2\n\ + mov r9, r1\n\ + b ._956\n\ +._958:\n\ + .align 2, 0\n\ +._957:\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_FlashFireBoost_PPLoss\n\ +._951:\n\ + ldr r0, ._961\n\ + strb r4, [r0, #0x5]\n\ + ldr r1, ._961 + 4\n\ + ldr r0, ._961 + 8\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0, #0x2]\n\ + lsl r0, r0, #0x1c\n\ + cmp r0, #0\n\ + bge ._959 @cond_branch\n\ + ldr r1, ._961 + 12\n\ + ldr r0, ._961 + 16\n\ + b ._960\n\ +._962:\n\ + .align 2, 0\n\ +._961:\n\ + .word gBattleCommunication\n\ + .word gProtectStructs\n\ + .word gBankAttacker\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_FlashFireBoost\n\ +._959:\n\ + ldr r1, ._968\n\ + ldr r0, ._968 + 4\n\ +._960:\n\ + str r0, [r1]\n\ + mov r2, #0x2\n\ +._935:\n\ + mov r9, r2\n\ +._956:\n\ + mov r3, r9\n\ + cmp r3, #0x1\n\ + beq ._963 @cond_branch\n\ + bl ._1534\n\ +._963:\n\ + ldr r1, ._968 + 8\n\ + mov r0, #0x58\n\ + mov r5, sl\n\ + mul r5, r5, r0\n\ + add r0, r5, #0\n\ + add r1, r0, r1\n\ + ldrh r0, [r1, #0x2c]\n\ + ldrh r2, [r1, #0x28]\n\ + cmp r0, r2\n\ + bne ._965 @cond_branch\n\ + ldr r1, ._968 + 12\n\ + ldr r0, ._968 + 16\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0, #0x2]\n\ + lsl r0, r0, #0x1c\n\ + cmp r0, #0\n\ + bge ._966 @cond_branch\n\ + ldr r1, ._968\n\ + ldr r0, ._968 + 20\n\ + str r0, [r1]\n\ + bl ._1534\n\ +._969:\n\ + .align 2, 0\n\ +._968:\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_FlashFireBoost_PPLoss\n\ + .word gBattleMons\n\ + .word gProtectStructs\n\ + .word gBankAttacker\n\ + .word BattleScript_MoveHPDrain_FullHP\n\ +._966:\n\ + ldr r1, ._971\n\ + ldr r0, ._971 + 4\n\ + str r0, [r1]\n\ + bl ._1534\n\ +._972:\n\ + .align 2, 0\n\ +._971:\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_MoveHPDrain_FullHP_PPLoss\n\ +._965:\n\ + ldr r2, ._975\n\ + ldrh r0, [r1, #0x2c]\n\ + lsr r0, r0, #0x2\n\ + str r0, [r2]\n\ + cmp r0, #0\n\ + bne ._973 @cond_branch\n\ + mov r3, r9\n\ + str r3, [r2]\n\ +._973:\n\ + ldr r0, [r2]\n\ + neg r0, r0\n\ + str r0, [r2]\n\ + bl ._1534\n\ +._976:\n\ + .align 2, 0\n\ +._975:\n\ + .word gBattleMoveDamage\n\ +._748:\n\ + mov r5, r8\n\ + ldrb r0, [r5]\n\ + sub r0, r0, #0x9\n\ + cmp r0, #0x2f\n\ + bls ._977 @cond_branch\n\ + bl ._1534\n\ +._977:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._980\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._981:\n\ + .align 2, 0\n\ +._980:\n\ + .word ._979\n\ +._979:\n\ + .word ._982\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._989\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._997\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1000\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1011\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1022\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1534\n\ + .word ._1029\n\ +._989:\n\ + ldr r0, ._1046\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1030 @cond_branch\n\ + bl ._1534\n\ +._1030:\n\ + cmp r3, #0xa5\n\ + bne ._1032 @cond_branch\n\ + bl ._1534\n\ +._1032:\n\ + ldr r0, ._1046 + 4\n\ + lsl r1, r3, #0x1\n\ + add r1, r1, r3\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + cmp r0, #0\n\ + bne ._1034 @cond_branch\n\ + bl ._1534\n\ +._1034:\n\ + ldr r2, ._1046 + 8\n\ + ldr r0, ._1046 + 12\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1037 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1037 @cond_branch\n\ + bl ._1534\n\ +._1037:\n\ + ldr r1, ._1046 + 16\n\ + mov r0, #0x58\n\ + mov r2, sl\n\ + mul r2, r2, r0\n\ + add r0, r2, #0\n\ + add r1, r0, r1\n\ + add r3, r1, #0\n\ + add r3, r3, #0x21\n\ + ldrb r0, [r3]\n\ + cmp r0, r4\n\ + bne ._1039 @cond_branch\n\ + bl ._1534\n\ +._1039:\n\ + add r2, r1, #0\n\ + add r2, r2, #0x22\n\ + ldrb r0, [r2]\n\ + cmp r0, r4\n\ + bne ._1041 @cond_branch\n\ + bl ._1534\n\ +._1041:\n\ + ldrh r0, [r1, #0x28]\n\ + cmp r0, #0\n\ + bne ._1043 @cond_branch\n\ + bl ._1534\n\ +._1043:\n\ + strb r4, [r3]\n\ + strb r4, [r2]\n\ + ldr r1, ._1046 + 20\n\ + mov r0, #0xfd\n\ + strb r0, [r1]\n\ + mov r0, #0x3\n\ + strb r0, [r1, #0x1]\n\ + strb r4, [r1, #0x2]\n\ + mov r0, #0xff\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1046 + 24\n\ + ldr r0, ._1046 + 28\n\ + str r0, [r1]\n\ + bl ._1392\n\ +._1047:\n\ + .align 2, 0\n\ +._1046:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMoves\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMons\n\ + .word gBattleTextBuff1\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ColorChangeActivates\n\ +._997:\n\ + ldr r0, ._1061\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1048 @cond_branch\n\ + bl ._1534\n\ +._1048:\n\ + ldr r1, ._1061 + 4\n\ + ldr r0, ._1061 + 8\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r4, r0, r1\n\ + ldrh r0, [r4, #0x28]\n\ + cmp r0, #0\n\ + bne ._1050 @cond_branch\n\ + bl ._1534\n\ +._1050:\n\ + ldr r0, ._1061 + 12\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1052 @cond_branch\n\ + bl ._1534\n\ +._1052:\n\ + ldr r2, ._1061 + 16\n\ + ldr r0, ._1061 + 20\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1055 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1055 @cond_branch\n\ + bl ._1534\n\ +._1055:\n\ + ldr r1, ._1061 + 24\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r2, #0x1\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1057 @cond_branch\n\ + bl ._1534\n\ +._1057:\n\ + ldr r1, ._1061 + 28\n\ + ldrh r0, [r4, #0x2c]\n\ + lsr r0, r0, #0x4\n\ + str r0, [r1]\n\ + cmp r0, #0\n\ + bne ._1059 @cond_branch\n\ + str r2, [r1]\n\ +._1059:\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1061 + 32\n\ + ldr r0, ._1061 + 36\n\ + str r0, [r1]\n\ + bl ._1392\n\ +._1062:\n\ + .align 2, 0\n\ +._1061:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleMoveDamage\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_RoughSkinActivates\n\ +._1000:\n\ + ldr r0, ._1078\n\ + ldrb r1, [r0]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1063 @cond_branch\n\ + ldr r0, ._1078 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1064 @cond_branch\n\ + bl ._1534\n\ +._1064:\n\ + ldr r1, ._1078 + 8\n\ + ldr r0, ._1078 + 12\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1066 @cond_branch\n\ + bl ._1534\n\ +._1066:\n\ + ldr r0, ._1078 + 16\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1068 @cond_branch\n\ + bl ._1534\n\ +._1068:\n\ + ldr r2, ._1078 + 20\n\ + ldr r0, ._1078 + 24\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1071 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1071 @cond_branch\n\ + bl ._1534\n\ +._1071:\n\ + ldr r1, ._1078 + 28\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1073 @cond_branch\n\ + bl ._1534\n\ +._1073:\n\ + ldr r5, ._1078 + 32\n\ + mov r4, #0x3\n\ +._1075:\n\ + bl Random\n\ + and r0, r0, r4\n\ + strb r0, [r5, #0x3]\n\ + cmp r0, #0\n\ + beq ._1075 @cond_branch\n\ + ldr r1, ._1078 + 32\n\ + ldrb r0, [r1, #0x3]\n\ + cmp r0, #0x3\n\ + bne ._1076 @cond_branch\n\ + add r0, r0, #0x2\n\ + strb r0, [r1, #0x3]\n\ +._1076:\n\ + ldrb r0, [r1, #0x3]\n\ + add r0, r0, #0x40\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1078 + 36\n\ + ldr r0, ._1078 + 40\n\ + str r0, [r1]\n\ + ldr r2, ._1078 + 44\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1079:\n\ + .align 2, 0\n\ +._1078:\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1063:\n\ + ldr r0, ._1096\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1080 @cond_branch\n\ + bl ._1534\n\ +._1080:\n\ + ldr r1, ._1096 + 4\n\ + ldr r0, ._1096 + 8\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1082 @cond_branch\n\ + bl ._1534\n\ +._1082:\n\ + ldr r0, ._1096 + 12\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1084 @cond_branch\n\ + bl ._1534\n\ +._1084:\n\ + ldr r2, ._1096 + 16\n\ + ldr r0, ._1096 + 20\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1087 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1087 @cond_branch\n\ + bl ._1534\n\ +._1087:\n\ + ldr r1, ._1096 + 24\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1089 @cond_branch\n\ + bl ._1534\n\ +._1089:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0xa\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + beq ._1091 @cond_branch\n\ + bl ._1534\n\ +._1091:\n\ + ldr r5, ._1096 + 28\n\ + mov r4, #0x3\n\ +._1093:\n\ + bl Random\n\ + and r0, r0, r4\n\ + strb r0, [r5, #0x3]\n\ + cmp r0, #0\n\ + beq ._1093 @cond_branch\n\ + ldr r1, ._1096 + 28\n\ + ldrb r0, [r1, #0x3]\n\ + cmp r0, #0x3\n\ + bne ._1094 @cond_branch\n\ + add r0, r0, #0x2\n\ + strb r0, [r1, #0x3]\n\ +._1094:\n\ + ldrb r0, [r1, #0x3]\n\ + add r0, r0, #0x40\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1096 + 32\n\ + ldr r0, ._1096 + 36\n\ + str r0, [r1]\n\ + ldr r2, ._1096 + 40\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1097:\n\ + .align 2, 0\n\ +._1096:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1011:\n\ + ldr r0, ._1111\n\ + ldrb r1, [r0]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1098 @cond_branch\n\ + ldr r0, ._1111 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1099 @cond_branch\n\ + bl ._1534\n\ +._1099:\n\ + ldr r1, ._1111 + 8\n\ + ldr r0, ._1111 + 12\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1101 @cond_branch\n\ + bl ._1534\n\ +._1101:\n\ + ldr r0, ._1111 + 16\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1103 @cond_branch\n\ + bl ._1534\n\ +._1103:\n\ + ldr r2, ._1111 + 20\n\ + ldr r0, ._1111 + 24\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1106 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1106 @cond_branch\n\ + bl ._1534\n\ +._1106:\n\ + ldr r1, ._1111 + 28\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1108 @cond_branch\n\ + bl ._1534\n\ +._1108:\n\ + ldr r1, ._1111 + 32\n\ + mov r0, #0x42\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1111 + 36\n\ + ldr r0, ._1111 + 40\n\ + str r0, [r1]\n\ + ldr r2, ._1111 + 44\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1112:\n\ + .align 2, 0\n\ +._1111:\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1098:\n\ + ldr r0, ._1127\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1113 @cond_branch\n\ + bl ._1534\n\ +._1113:\n\ + ldr r1, ._1127 + 4\n\ + ldr r0, ._1127 + 8\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1115 @cond_branch\n\ + bl ._1534\n\ +._1115:\n\ + ldr r0, ._1127 + 12\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1117 @cond_branch\n\ + bl ._1534\n\ +._1117:\n\ + ldr r2, ._1127 + 16\n\ + ldr r0, ._1127 + 20\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1120 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1120 @cond_branch\n\ + bl ._1534\n\ +._1120:\n\ + ldr r1, ._1127 + 24\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1122 @cond_branch\n\ + bl ._1534\n\ +._1122:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0x3\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + beq ._1124 @cond_branch\n\ + bl ._1534\n\ +._1124:\n\ + ldr r1, ._1127 + 28\n\ + mov r0, #0x42\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1127 + 32\n\ + ldr r0, ._1127 + 36\n\ + str r0, [r1]\n\ + ldr r2, ._1127 + 40\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1128:\n\ + .align 2, 0\n\ +._1127:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._982:\n\ + ldr r0, ._1142\n\ + ldrb r1, [r0]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1129 @cond_branch\n\ + ldr r0, ._1142 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1130 @cond_branch\n\ + bl ._1534\n\ +._1130:\n\ + ldr r1, ._1142 + 8\n\ + ldr r0, ._1142 + 12\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1132 @cond_branch\n\ + bl ._1534\n\ +._1132:\n\ + ldr r0, ._1142 + 16\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1134 @cond_branch\n\ + bl ._1534\n\ +._1134:\n\ + ldr r2, ._1142 + 20\n\ + ldr r0, ._1142 + 24\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1137 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1137 @cond_branch\n\ + bl ._1534\n\ +._1137:\n\ + ldr r1, ._1142 + 28\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1139 @cond_branch\n\ + bl ._1534\n\ +._1139:\n\ + ldr r1, ._1142 + 32\n\ + mov r0, #0x45\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1142 + 36\n\ + ldr r0, ._1142 + 40\n\ + str r0, [r1]\n\ + ldr r2, ._1142 + 44\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1143:\n\ + .align 2, 0\n\ +._1142:\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1129:\n\ + ldr r0, ._1158\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1144 @cond_branch\n\ + bl ._1534\n\ +._1144:\n\ + ldr r1, ._1158 + 4\n\ + ldr r0, ._1158 + 8\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1146 @cond_branch\n\ + bl ._1534\n\ +._1146:\n\ + ldr r0, ._1158 + 12\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1148 @cond_branch\n\ + bl ._1534\n\ +._1148:\n\ + ldr r2, ._1158 + 16\n\ + ldr r0, ._1158 + 20\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1151 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1151 @cond_branch\n\ + bl ._1534\n\ +._1151:\n\ + ldr r1, ._1158 + 24\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1153 @cond_branch\n\ + bl ._1534\n\ +._1153:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0x3\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + beq ._1155 @cond_branch\n\ + bl ._1534\n\ +._1155:\n\ + ldr r1, ._1158 + 28\n\ + mov r0, #0x45\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1158 + 32\n\ + ldr r0, ._1158 + 36\n\ + str r0, [r1]\n\ + ldr r2, ._1158 + 40\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1159:\n\ + .align 2, 0\n\ +._1158:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleMoves\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1022:\n\ + ldr r0, ._1173\n\ + ldrb r1, [r0]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1160 @cond_branch\n\ + ldr r0, ._1173 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1161 @cond_branch\n\ + bl ._1534\n\ +._1161:\n\ + ldr r1, ._1173 + 8\n\ + ldr r0, ._1173 + 12\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1163 @cond_branch\n\ + bl ._1534\n\ +._1163:\n\ + ldr r0, ._1173 + 16\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1165 @cond_branch\n\ + bl ._1534\n\ +._1165:\n\ + ldr r1, ._1173 + 20\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1167 @cond_branch\n\ + bl ._1534\n\ +._1167:\n\ + ldr r2, ._1173 + 24\n\ + ldr r0, ._1173 + 28\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1170 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1170 @cond_branch\n\ + bl ._1534\n\ +._1170:\n\ + ldr r1, ._1173 + 32\n\ + mov r0, #0x43\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1173 + 36\n\ + ldr r0, ._1173 + 40\n\ + str r0, [r1]\n\ + ldr r2, ._1173 + 44\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1174:\n\ + .align 2, 0\n\ +._1173:\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gBattleMoves\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1160:\n\ + ldr r0, ._1189\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1175 @cond_branch\n\ + bl ._1534\n\ +._1175:\n\ + ldr r1, ._1189 + 4\n\ + ldr r0, ._1189 + 8\n\ + ldrb r2, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1177 @cond_branch\n\ + bl ._1534\n\ +._1177:\n\ + ldr r0, ._1189 + 12\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1179 @cond_branch\n\ + bl ._1534\n\ +._1179:\n\ + ldr r1, ._1189 + 16\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1181 @cond_branch\n\ + bl ._1534\n\ +._1181:\n\ + ldr r2, ._1189 + 20\n\ + ldr r0, ._1189 + 24\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r1, r0, #0x2\n\ + add r0, r2, #0\n\ + add r0, r0, #0x8\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1184 @cond_branch\n\ + add r0, r2, #0\n\ + add r0, r0, #0xc\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1184 @cond_branch\n\ + bl ._1534\n\ +._1184:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0x3\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + beq ._1186 @cond_branch\n\ + bl ._1534\n\ +._1186:\n\ + ldr r1, ._1189 + 28\n\ + mov r0, #0x43\n\ + strb r0, [r1, #0x3]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1189 + 32\n\ + ldr r0, ._1189 + 36\n\ + str r0, [r1]\n\ + ldr r2, ._1189 + 40\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl ._1392\n\ +._1190:\n\ + .align 2, 0\n\ +._1189:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gBattleMoves\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_ApplySecondaryEffect\n\ + .word gHitMarker\n\ +._1029:\n\ + ldr r0, ._1217\n\ + ldrb r1, [r0]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1191 @cond_branch\n\ + b ._1192\n\ +._1191:\n\ + ldr r0, ._1217 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1193 @cond_branch\n\ + bl ._1534\n\ +._1193:\n\ + ldr r5, ._1217 + 8\n\ + ldr r7, ._1217 + 12\n\ + ldrb r1, [r7]\n\ + mov r6, #0x58\n\ + add r0, r1, #0\n\ + mul r0, r0, r6\n\ + add r4, r0, r5\n\ + ldrh r0, [r4, #0x28]\n\ + cmp r0, #0\n\ + bne ._1195 @cond_branch\n\ + bl ._1534\n\ +._1195:\n\ + ldr r0, ._1217 + 16\n\ + lsl r1, r1, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1197 @cond_branch\n\ + bl ._1534\n\ +._1197:\n\ + ldr r1, ._1217 + 20\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1199 @cond_branch\n\ + bl ._1534\n\ +._1199:\n\ + ldr r3, ._1217 + 24\n\ + ldr r0, ._1217 + 28\n\ + mov r8, r0\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r2, r0, #0x2\n\ + add r0, r3, #0\n\ + add r0, r0, #0x8\n\ + add r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1202 @cond_branch\n\ + add r0, r3, #0\n\ + add r0, r0, #0xc\n\ + add r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1202 @cond_branch\n\ + bl ._1534\n\ +._1202:\n\ + add r0, r1, #0\n\ + mul r0, r0, r6\n\ + add r0, r0, r5\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1204 @cond_branch\n\ + bl ._1534\n\ +._1204:\n\ + add r0, r4, #0\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0xc\n\ + bne ._1206 @cond_branch\n\ + bl ._1534\n\ +._1206:\n\ + ldr r0, [sp, #0x8]\n\ + ldr r1, [sp, #0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + add r4, r0, #0\n\ + ldr r0, [sp, #0xc]\n\ + ldr r1, [sp, #0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsl r4, r4, #0x18\n\ + lsl r0, r0, #0x18\n\ + cmp r4, r0\n\ + bne ._1208 @cond_branch\n\ + bl ._1534\n\ +._1208:\n\ + ldrb r0, [r7]\n\ + mul r0, r0, r6\n\ + add r4, r5, #0\n\ + add r4, r4, #0x50\n\ + add r0, r0, r4\n\ + ldr r0, [r0]\n\ + mov r1, #0xf0\n\ + lsl r1, r1, #0xc\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1210 @cond_branch\n\ + bl ._1534\n\ +._1210:\n\ + ldr r0, [sp, #0x8]\n\ + ldr r1, [sp, #0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._1212 @cond_branch\n\ + bl ._1534\n\ +._1212:\n\ + ldr r0, [sp, #0xc]\n\ + ldr r1, [sp, #0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._1214 @cond_branch\n\ + bl ._1534\n\ +._1214:\n\ + ldrb r0, [r7]\n\ + add r2, r0, #0\n\ + mul r2, r2, r6\n\ + add r2, r2, r4\n\ + ldr r1, ._1217 + 32\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, [r0]\n\ + lsl r1, r1, #0x10\n\ + ldr r0, [r2]\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1217 + 36\n\ + ldr r0, ._1217 + 40\n\ + str r0, [r1]\n\ + bl ._1392\n\ +._1218:\n\ + .align 2, 0\n\ +._1217:\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gBattleMoves\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBitTable\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_CuteCharmActivates\n\ +._1192:\n\ + ldr r0, ._1245\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1219 @cond_branch\n\ + bl ._1534\n\ +._1219:\n\ + ldr r5, ._1245 + 4\n\ + ldr r7, ._1245 + 8\n\ + ldrb r1, [r7]\n\ + mov r6, #0x58\n\ + add r0, r1, #0\n\ + mul r0, r0, r6\n\ + add r0, r0, r5\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1221 @cond_branch\n\ + bl ._1534\n\ +._1221:\n\ + ldr r0, ._1245 + 12\n\ + lsl r1, r1, #0x4\n\ + add r1, r1, r0\n\ + ldrb r0, [r1, #0x1]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._1223 @cond_branch\n\ + bl ._1534\n\ +._1223:\n\ + ldr r1, ._1245 + 16\n\ + lsl r0, r3, #0x1\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x8]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1225 @cond_branch\n\ + bl ._1534\n\ +._1225:\n\ + ldr r3, ._1245 + 20\n\ + ldr r0, ._1245 + 24\n\ + mov r8, r0\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r2, r0, #0x2\n\ + add r0, r3, #0\n\ + add r0, r0, #0x8\n\ + add r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1228 @cond_branch\n\ + add r0, r3, #0\n\ + add r0, r0, #0xc\n\ + add r0, r2, r0\n\ + ldr r0, [r0]\n\ + cmp r0, #0\n\ + bne ._1228 @cond_branch\n\ + bl ._1534\n\ +._1228:\n\ + add r0, r1, #0\n\ + mul r0, r0, r6\n\ + add r0, r0, r5\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + bne ._1230 @cond_branch\n\ + bl ._1534\n\ +._1230:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0x3\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + beq ._1232 @cond_branch\n\ + bl ._1534\n\ +._1232:\n\ + ldrb r0, [r7]\n\ + mul r0, r0, r6\n\ + add r0, r0, r5\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0xc\n\ + bne ._1234 @cond_branch\n\ + bl ._1534\n\ +._1234:\n\ + ldr r0, [sp, #0x8]\n\ + ldr r1, [sp, #0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + add r4, r0, #0\n\ + ldr r0, [sp, #0xc]\n\ + ldr r1, [sp, #0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsl r4, r4, #0x18\n\ + lsl r0, r0, #0x18\n\ + cmp r4, r0\n\ + bne ._1236 @cond_branch\n\ + bl ._1534\n\ +._1236:\n\ + ldrb r0, [r7]\n\ + mul r0, r0, r6\n\ + add r4, r5, #0\n\ + add r4, r4, #0x50\n\ + add r0, r0, r4\n\ + ldr r0, [r0]\n\ + mov r1, #0xf0\n\ + lsl r1, r1, #0xc\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1238 @cond_branch\n\ + bl ._1534\n\ +._1238:\n\ + ldr r0, [sp, #0x8]\n\ + ldr r1, [sp, #0x10]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._1240 @cond_branch\n\ + bl ._1534\n\ +._1240:\n\ + ldr r0, [sp, #0xc]\n\ + ldr r1, [sp, #0x14]\n\ + bl GetGenderFromSpeciesAndPersonality\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._1242 @cond_branch\n\ + bl ._1534\n\ +._1242:\n\ + ldrb r0, [r7]\n\ + add r2, r0, #0\n\ + mul r2, r2, r6\n\ + add r2, r2, r4\n\ + ldr r1, ._1245 + 28\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, [r0]\n\ + lsl r1, r1, #0x10\n\ + ldr r0, [r2]\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1245 + 32\n\ + ldr r0, ._1245 + 36\n\ + str r0, [r1]\n\ + bl ._1392\n\ +._1246:\n\ + .align 2, 0\n\ +._1245:\n\ + .word gBattleMoveFlags\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gProtectStructs\n\ + .word gBattleMoves\n\ + .word gSpecialStatuses\n\ + .word gBankTarget\n\ + .word gBitTable\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_CuteCharmActivates\n\ +._749:\n\ + mov r5, #0x0\n\ + mov sl, r5\n\ + ldr r0, ._1251\n\ + ldrb r0, [r0]\n\ + cmp sl, r0\n\ + bcc ._1366 @cond_branch\n\ + bl ._1534\n\ +._1366:\n\ + ldr r1, ._1251 + 4\n\ + mov r0, #0x58\n\ + mov r2, sl\n\ + mul r2, r2, r0\n\ + add r0, r2, #0\n\ + add r0, r0, r1\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + sub r0, r0, #0x7\n\ + add r2, r1, #0\n\ + cmp r0, #0x41\n\ + bls ._1249 @cond_branch\n\ + b ._1346\n\ +._1249:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._1251 + 8\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._1252:\n\ + .align 2, 0\n\ +._1251:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word ._1253\n\ +._1253:\n\ + .word ._1254\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1259\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1319\n\ + .word ._1346\n\ + .word ._1264\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1267\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1287\n\ + .word ._1288\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1346\n\ + .word ._1319\n\ +._1264:\n\ + mov r0, #0x58\n\ + mov r3, sl\n\ + mul r3, r3, r0\n\ + add r0, r3, #0\n\ + add r1, r2, #0\n\ + add r1, r1, #0x4c\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + ldr r1, ._1323\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1320 @cond_branch\n\ + b ._1346\n\ +._1320:\n\ + ldr r0, ._1323 + 4\n\ + ldr r1, ._1323 + 8\n\ + b ._1331\n\ +._1324:\n\ + .align 2, 0\n\ +._1323:\n\ + .word 0xf88\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_PoisonJpn\n\ +._1267:\n\ + mov r0, #0x58\n\ + mov r1, sl\n\ + mul r1, r1, r0\n\ + add r0, r1, #0\n\ + add r1, r2, #0\n\ + add r1, r1, #0x50\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1325 @cond_branch\n\ + b ._1346\n\ +._1325:\n\ + ldr r0, ._1328\n\ + ldr r1, ._1328 + 4\n\ + bl StringCopy\n\ + mov r2, #0x2\n\ + mov r9, r2\n\ + b ._1343\n\ +._1329:\n\ + .align 2, 0\n\ +._1328:\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_ConfusionJpn\n\ +._1254:\n\ + mov r0, #0x58\n\ + mov r3, sl\n\ + mul r3, r3, r0\n\ + add r0, r3, #0\n\ + add r1, r2, #0\n\ + add r1, r1, #0x4c\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1346 @cond_branch\n\ + ldr r0, ._1332\n\ + ldr r1, ._1332 + 4\n\ + b ._1331\n\ +._1333:\n\ + .align 2, 0\n\ +._1332:\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_ParalysisJpn\n\ +._1319:\n\ + mov r0, #0x58\n\ + mov r3, sl\n\ + mul r3, r3, r0\n\ + add r0, r2, #0\n\ + add r0, r0, #0x4c\n\ + add r0, r3, r0\n\ + ldr r0, [r0]\n\ + mov r1, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1346 @cond_branch\n\ + add r2, r2, #0x50\n\ + add r2, r3, r2\n\ + ldr r0, [r2]\n\ + ldr r1, ._1336\n\ + and r0, r0, r1\n\ + str r0, [r2]\n\ + ldr r0, ._1336 + 4\n\ + ldr r1, ._1336 + 8\n\ + bl StringCopy\n\ + mov r0, #0x1\n\ + mov r9, r0\n\ + b ._1343\n\ +._1337:\n\ + .align 2, 0\n\ +._1336:\n\ + .word 0xf7ffffff\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_SleepJpn\n\ +._1288:\n\ + mov r0, #0x58\n\ + mov r1, sl\n\ + mul r1, r1, r0\n\ + add r0, r1, #0\n\ + add r1, r2, #0\n\ + add r1, r1, #0x4c\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1346 @cond_branch\n\ + ldr r0, ._1340\n\ + ldr r1, ._1340 + 4\n\ + bl StringCopy\n\ + mov r2, #0x1\n\ + mov r9, r2\n\ + b ._1343\n\ +._1341:\n\ + .align 2, 0\n\ +._1340:\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_BurnJpn\n\ +._1287:\n\ + mov r0, #0x58\n\ + mov r3, sl\n\ + mul r3, r3, r0\n\ + add r0, r3, #0\n\ + add r1, r2, #0\n\ + add r1, r1, #0x4c\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1346 @cond_branch\n\ + ldr r0, ._1344\n\ + ldr r1, ._1344 + 4\n\ +._1331:\n\ + bl StringCopy\n\ + mov r5, #0x1\n\ + mov r9, r5\n\ + b ._1343\n\ +._1345:\n\ + .align 2, 0\n\ +._1344:\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_IceJpn\n\ +._1259:\n\ + mov r0, #0x58\n\ + mov r1, sl\n\ + mul r1, r1, r0\n\ + add r0, r1, #0\n\ + add r1, r2, #0\n\ + add r1, r1, #0x50\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0xf0\n\ + lsl r1, r1, #0xc\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1346 @cond_branch\n\ + ldr r0, ._1352\n\ + ldr r1, ._1352 + 4\n\ + bl StringCopy\n\ + mov r2, #0x3\n\ + mov r9, r2\n\ +._1346:\n\ + mov r3, r9\n\ + cmp r3, #0\n\ + beq ._1347 @cond_branch\n\ +._1343:\n\ + mov r5, r9\n\ + cmp r5, #0x2\n\ + beq ._1348 @cond_branch\n\ + cmp r5, #0x2\n\ + bgt ._1349 @cond_branch\n\ + cmp r5, #0x1\n\ + beq ._1350 @cond_branch\n\ + b ._1355\n\ +._1353:\n\ + .align 2, 0\n\ +._1352:\n\ + .word gBattleTextBuff1\n\ + .word gStatusConditionString_LoveJpn\n\ +._1349:\n\ + mov r0, r9\n\ + cmp r0, #0x3\n\ + beq ._1354 @cond_branch\n\ + b ._1355\n\ +._1350:\n\ + ldr r1, ._1357\n\ + mov r0, #0x58\n\ + mov r2, sl\n\ + mul r2, r2, r0\n\ + add r1, r1, #0x4c\n\ + add r2, r2, r1\n\ + mov r0, #0x0\n\ + b ._1356\n\ +._1358:\n\ + .align 2, 0\n\ +._1357:\n\ + .word gBattleMons\n\ +._1348:\n\ + ldr r1, ._1360\n\ + mov r0, #0x58\n\ + mov r2, sl\n\ + mul r2, r2, r0\n\ + add r1, r1, #0x50\n\ + add r2, r2, r1\n\ + ldr r0, [r2]\n\ + mov r1, #0x8\n\ + neg r1, r1\n\ + b ._1359\n\ +._1361:\n\ + .align 2, 0\n\ +._1360:\n\ + .word gBattleMons\n\ +._1354:\n\ + ldr r1, ._1363\n\ + mov r0, #0x58\n\ + mov r2, sl\n\ + mul r2, r2, r0\n\ + add r1, r1, #0x50\n\ + add r2, r2, r1\n\ + ldr r0, [r2]\n\ + ldr r1, ._1363 + 4\n\ +._1359:\n\ + and r0, r0, r1\n\ +._1356:\n\ + str r0, [r2]\n\ +._1355:\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1363 + 8\n\ + ldr r0, ._1363 + 12\n\ + str r0, [r1]\n\ + ldr r0, ._1363 + 16\n\ + ldr r1, ._1363 + 20\n\ + add r0, r0, r1\n\ + mov r2, sl\n\ + strb r2, [r0]\n\ + ldr r4, ._1363 + 24\n\ + strb r2, [r4]\n\ + ldrb r1, [r4]\n\ + mov r0, #0x58\n\ + mul r0, r0, r1\n\ + ldr r1, ._1363 + 28\n\ + add r0, r0, r1\n\ + str r0, [sp]\n\ + mov r0, #0x0\n\ + mov r1, #0x28\n\ + mov r2, #0x0\n\ + mov r3, #0x4\n\ + bl EmitSetMonData\n\ + ldrb r0, [r4]\n\ + bl MarkBufferBankForExecution\n\ + bl ._1540\n\ +._1364:\n\ + .align 2, 0\n\ +._1363:\n\ + .word gBattleMons\n\ + .word 0xfff0ffff\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_AbilityCuredStatus\n\ + .word +0x2000000\n\ + .word 0x16003\n\ + .word gActiveBank\n\ + .word gUnknown_02024ACC\n\ +._1347:\n\ + mov r0, sl\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov sl, r0\n\ + ldr r0, ._1368\n\ + ldrb r0, [r0]\n\ + cmp sl, r0\n\ + bcs ._1365 @cond_branch\n\ + b ._1366\n\ +._1365:\n\ + bl ._1534\n\ +._1369:\n\ + .align 2, 0\n\ +._1368:\n\ + .word gNoOfAllBanks\n\ +._750:\n\ + mov r3, #0x0\n\ + mov sl, r3\n\ + ldr r0, ._1377\n\ + ldrb r0, [r0]\n\ + cmp sl, r0\n\ + bcc ._1370 @cond_branch\n\ + b ._1534\n\ +._1370:\n\ + ldr r4, ._1377 + 4\n\ +._1375:\n\ + mov r0, #0x58\n\ + mov r5, sl\n\ + mul r5, r5, r0\n\ + add r0, r5, #0\n\ + add r0, r0, r4\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x3b\n\ + bne ._1373 @cond_branch\n\ + mov r0, sl\n\ + bl CastformDataTypeChange\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ + cmp r0, #0\n\ + beq ._1373 @cond_branch\n\ + b ._1374\n\ +._1373:\n\ + mov r0, sl\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov sl, r0\n\ + ldr r0, ._1377\n\ + ldrb r0, [r0]\n\ + cmp sl, r0\n\ + bcc ._1375 @cond_branch\n\ + b ._1534\n\ +._1378:\n\ + .align 2, 0\n\ +._1377:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ +._751:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, #0x1c\n\ + beq ._1379 @cond_branch\n\ + b ._1534\n\ +._1379:\n\ + ldr r4, ._1385\n\ + ldr r1, [r4]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1381 @cond_branch\n\ + b ._1534\n\ +._1381:\n\ + ldr r0, ._1385 + 4\n\ + and r1, r1, r0\n\ + str r1, [r4]\n\ + ldr r3, ._1385 + 8\n\ + add r2, r7, r3\n\ + ldrb r1, [r2]\n\ + mov r0, #0x3f\n\ + and r0, r0, r1\n\ + strb r0, [r2]\n\ + cmp r0, #0x6\n\ + bne ._1383 @cond_branch\n\ + mov r0, #0x2\n\ + strb r0, [r2]\n\ +._1383:\n\ + ldr r1, ._1385 + 12\n\ + ldrb r0, [r2]\n\ + add r0, r0, #0x40\n\ + strb r0, [r1, #0x3]\n\ + ldr r0, ._1385 + 16\n\ + ldrb r1, [r0]\n\ + ldr r5, ._1385 + 20\n\ + add r0, r7, r5\n\ + strb r1, [r0]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1385 + 24\n\ + ldr r0, ._1385 + 28\n\ + str r0, [r1]\n\ + ldr r0, [r4]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r4]\n\ + b ._1392\n\ +._1386:\n\ + .align 2, 0\n\ +._1385:\n\ + .word gHitMarker\n\ + .word 0xffffbfff\n\ + .word 0x160ca\n\ + .word gBattleCommunication\n\ + .word gBankTarget\n\ + .word 0x16003\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_SynchronizeActivates\n\ +._752:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, #0x1c\n\ + beq ._1387 @cond_branch\n\ + b ._1534\n\ +._1387:\n\ + ldr r4, ._1393\n\ + ldr r1, [r4]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1389 @cond_branch\n\ + b ._1534\n\ +._1389:\n\ + ldr r0, ._1393 + 4\n\ + and r1, r1, r0\n\ + str r1, [r4]\n\ + ldr r3, ._1393 + 8\n\ + add r2, r7, r3\n\ + ldrb r1, [r2]\n\ + mov r0, #0x3f\n\ + and r0, r0, r1\n\ + strb r0, [r2]\n\ + cmp r0, #0x6\n\ + bne ._1391 @cond_branch\n\ + mov r0, #0x2\n\ + strb r0, [r2]\n\ +._1391:\n\ + ldr r1, ._1393 + 12\n\ + ldrb r0, [r2]\n\ + strb r0, [r1, #0x3]\n\ + ldr r0, ._1393 + 16\n\ + ldrb r1, [r0]\n\ + ldr r5, ._1393 + 20\n\ + add r0, r7, r5\n\ + strb r1, [r0]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1393 + 24\n\ + ldr r0, ._1393 + 28\n\ + str r0, [r1]\n\ + ldr r0, [r4]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x6\n\ + orr r0, r0, r1\n\ + str r0, [r4]\n\ + b ._1392\n\ +._1394:\n\ + .align 2, 0\n\ +._1393:\n\ + .word gHitMarker\n\ + .word 0xffffbfff\n\ + .word 0x160ca\n\ + .word gBattleCommunication\n\ + .word gBankAttacker\n\ + .word 0x16003\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_SynchronizeActivates\n\ +._753:\n\ + mov r4, #0x0\n\ + ldr r0, ._1402\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt ._1395 @cond_branch\n\ + b ._1534\n\ +._1395:\n\ + ldr r0, ._1402 + 4\n\ + add r5, r1, #0\n\ + ldr r2, ._1402 + 8\n\ + add r3, r0, #0\n\ + add r3, r3, #0x20\n\ + mov r6, #0x80\n\ + lsl r6, r6, #0xc\n\ +._1400:\n\ + ldrb r1, [r3]\n\ + cmp r1, #0x16\n\ + bne ._1398 @cond_branch\n\ + ldr r0, [r2]\n\ + and r0, r0, r6\n\ + cmp r0, #0\n\ + beq ._1398 @cond_branch\n\ + b ._1399\n\ +._1398:\n\ + add r2, r2, #0x4\n\ + add r3, r3, #0x58\n\ + add r4, r4, #0x1\n\ + cmp r4, r5\n\ + blt ._1400 @cond_branch\n\ + b ._1534\n\ +._1403:\n\ + .align 2, 0\n\ +._1402:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gStatuses3\n\ +._755:\n\ + mov r4, #0x0\n\ + ldr r0, ._1417\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1404 @cond_branch\n\ + b ._1534\n\ +._1404:\n\ + ldr r0, ._1417 + 4\n\ + mov r8, r0\n\ + ldr r1, ._1417 + 8\n\ + add r1, r1, #0x20\n\ + str r1, [sp, #0x1c]\n\ + mov r2, #0x0\n\ + str r2, [sp, #0x20]\n\ +._1434:\n\ + ldr r3, [sp, #0x1c]\n\ + ldrb r0, [r3]\n\ + cmp r0, #0x24\n\ + beq ._1406 @cond_branch\n\ + b ._1431\n\ +._1406:\n\ + ldr r0, ._1417 + 12\n\ + ldr r5, [sp, #0x20]\n\ + add r0, r5, r0\n\ + ldr r1, [r0]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0xd\n\ + and r1, r1, r0\n\ + str r5, [sp, #0x18]\n\ + cmp r1, #0\n\ + bne ._1408 @cond_branch\n\ + b ._1431\n\ +._1408:\n\ + lsl r0, r4, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl GetBankIdentity\n\ + mov r1, #0x1\n\ + add r5, r0, #0\n\ + eor r5, r5, r1\n\ + and r5, r5, r1\n\ + add r0, r5, #0\n\ + bl GetBankByIdentity\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + add r0, r5, #2\n\ + bl GetBankByIdentity\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + ldr r0, ._1417 + 16\n\ + ldrh r1, [r0]\n\ + mov r2, #0x1\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1410 @cond_branch\n\ + b ._1411\n\ +._1410:\n\ + mov r1, #0x58\n\ + add r0, r6, #0\n\ + mul r0, r0, r1\n\ + ldr r3, ._1417 + 8\n\ + add r1, r0, r3\n\ + add r0, r1, #0\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._1420 @cond_branch\n\ + ldrh r0, [r1, #0x28]\n\ + cmp r0, #0\n\ + beq ._1415 @cond_branch\n\ + mov r1, #0x58\n\ + add r0, r7, #0\n\ + mul r0, r0, r1\n\ + add r1, r0, r3\n\ + add r0, r1, #0\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._1415 @cond_branch\n\ + ldrh r0, [r1, #0x28]\n\ + cmp r0, #0\n\ + beq ._1415 @cond_branch\n\ + str r2, [sp, #0x24]\n\ + bl Random\n\ + ldr r2, [sp, #0x24]\n\ + add r1, r2, #0\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x1\n\ + orr r5, r5, r1\n\ + add r0, r5, #0\n\ + bl GetBankByIdentity\n\ + mov r2, r8\n\ + strb r0, [r2]\n\ + ldrb r0, [r2]\n\ + mov r3, #0x58\n\ + mul r0, r0, r3\n\ + ldr r5, ._1417 + 8\n\ + add r0, r0, r5\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + ldr r1, [sp, #0x1c]\n\ + strb r0, [r1]\n\ + ldrb r0, [r2]\n\ + mul r0, r0, r3\n\ + add r0, r0, r5\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + ldr r2, ._1417 + 20\n\ + strb r0, [r2]\n\ + b ._1416\n\ +._1418:\n\ + .align 2, 0\n\ +._1417:\n\ + .word gNoOfAllBanks\n\ + .word gActiveBank\n\ + .word gBattleMons\n\ + .word gStatuses3\n\ + .word gBattleTypeFlags\n\ + .word gLastUsedAbility\n\ +._1415:\n\ + ldr r3, ._1422\n\ + mov r2, #0x58\n\ + add r0, r6, #0\n\ + mul r0, r0, r2\n\ + add r1, r0, r3\n\ + add r0, r1, #0\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._1420 @cond_branch\n\ + ldrh r0, [r1, #0x28]\n\ + cmp r0, #0\n\ + beq ._1420 @cond_branch\n\ + mov r5, r8\n\ + strb r6, [r5]\n\ + add r1, r4, #0\n\ + mul r1, r1, r2\n\ + add r1, r1, r3\n\ + ldrb r0, [r5]\n\ + mul r0, r0, r2\n\ + add r0, r0, r3\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + add r1, r1, #0x20\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + mul r0, r0, r2\n\ + add r0, r0, r3\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + b ._1426\n\ +._1423:\n\ + .align 2, 0\n\ +._1422:\n\ + .word gBattleMons\n\ +._1420:\n\ + ldr r3, ._1427\n\ + mov r2, #0x58\n\ + add r0, r7, #0\n\ + mul r0, r0, r2\n\ + add r1, r0, r3\n\ + add r0, r1, #0\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._1430 @cond_branch\n\ + ldrh r0, [r1, #0x28]\n\ + cmp r0, #0\n\ + beq ._1430 @cond_branch\n\ + mov r5, r8\n\ + strb r7, [r5]\n\ + add r1, r4, #0\n\ + mul r1, r1, r2\n\ + add r1, r1, r3\n\ + ldrb r0, [r5]\n\ + mul r0, r0, r2\n\ + add r0, r0, r3\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + add r1, r1, #0x20\n\ + strb r0, [r1]\n\ + ldrb r0, [r5]\n\ + mul r0, r0, r2\n\ + add r0, r0, r3\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + b ._1426\n\ +._1428:\n\ + .align 2, 0\n\ +._1427:\n\ + .word gBattleMons\n\ +._1411:\n\ + mov r2, r8\n\ + strb r6, [r2]\n\ + mov r3, #0x58\n\ + add r0, r6, #0\n\ + mul r0, r0, r3\n\ + ldr r5, ._1436\n\ + add r0, r0, r5\n\ + add r2, r0, #0\n\ + add r2, r2, #0x20\n\ + ldrb r1, [r2]\n\ + cmp r1, #0\n\ + beq ._1430 @cond_branch\n\ + ldrh r0, [r0, #0x28]\n\ + cmp r0, #0\n\ + beq ._1430 @cond_branch\n\ + ldr r0, [sp, #0x1c]\n\ + strb r1, [r0]\n\ + ldrb r0, [r2]\n\ +._1426:\n\ + ldr r1, ._1436 + 4\n\ + strb r0, [r1]\n\ +._1416:\n\ + mov r0, r9\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1430:\n\ + mov r2, r9\n\ + cmp r2, #0\n\ + beq ._1431 @cond_branch\n\ + b ._1432\n\ +._1431:\n\ + ldr r3, [sp, #0x1c]\n\ + add r3, r3, #0x58\n\ + str r3, [sp, #0x1c]\n\ + ldr r5, [sp, #0x20]\n\ + add r5, r5, #0x4\n\ + str r5, [sp, #0x20]\n\ + add r4, r4, #0x1\n\ + ldr r0, ._1436 + 8\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + bge ._1433 @cond_branch\n\ + b ._1434\n\ +._1433:\n\ + b ._1534\n\ +._1437:\n\ + .align 2, 0\n\ +._1436:\n\ + .word gBattleMons\n\ + .word gLastUsedAbility\n\ + .word gNoOfAllBanks\n\ +._754:\n\ + mov r4, #0x0\n\ + ldr r0, ._1445\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + blt ._1438 @cond_branch\n\ + b ._1534\n\ +._1438:\n\ + ldr r0, ._1445 + 4\n\ + add r5, r1, #0\n\ + ldr r2, ._1445 + 8\n\ + add r3, r0, #0\n\ + add r3, r3, #0x20\n\ + mov r6, #0x80\n\ + lsl r6, r6, #0xc\n\ +._1443:\n\ + ldrb r1, [r3]\n\ + cmp r1, #0x16\n\ + bne ._1441 @cond_branch\n\ + ldr r0, [r2]\n\ + and r0, r0, r6\n\ + cmp r0, #0\n\ + beq ._1441 @cond_branch\n\ + b ._1442\n\ +._1441:\n\ + add r2, r2, #0x4\n\ + add r3, r3, #0x58\n\ + add r4, r4, #0x1\n\ + cmp r4, r5\n\ + blt ._1443 @cond_branch\n\ + b ._1534\n\ +._1446:\n\ + .align 2, 0\n\ +._1445:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gStatuses3\n\ +._756:\n\ + mov r0, sl\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + mov r4, #0x0\n\ + ldr r0, ._1453\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1447 @cond_branch\n\ + b ._1534\n\ +._1447:\n\ + ldr r7, ._1453 + 4\n\ +._1451:\n\ + lsl r0, r4, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + add r3, r4, #1\n\ + cmp r0, r5\n\ + beq ._1450 @cond_branch\n\ + mov r0, #0x58\n\ + mul r0, r0, r4\n\ + add r0, r0, r7\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne ._1450 @cond_branch\n\ + ldr r0, ._1453 + 8\n\ + strb r6, [r0]\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1450:\n\ + add r4, r3, #0\n\ + ldr r0, ._1453\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1451 @cond_branch\n\ + b ._1534\n\ +._1454:\n\ + .align 2, 0\n\ +._1453:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gLastUsedAbility\n\ +._757:\n\ + mov r0, sl\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + mov r4, #0x0\n\ + ldr r0, ._1461\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1455 @cond_branch\n\ + b ._1534\n\ +._1455:\n\ + ldr r7, ._1461 + 4\n\ +._1459:\n\ + lsl r0, r4, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + add r3, r4, #1\n\ + cmp r0, r5\n\ + bne ._1458 @cond_branch\n\ + mov r0, #0x58\n\ + mul r0, r0, r4\n\ + add r0, r0, r7\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne ._1458 @cond_branch\n\ + ldr r0, ._1461 + 8\n\ + strb r6, [r0]\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1458:\n\ + add r4, r3, #0\n\ + ldr r0, ._1461\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1459 @cond_branch\n\ + b ._1534\n\ +._1462:\n\ + .align 2, 0\n\ +._1461:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gLastUsedAbility\n\ +._758:\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + cmp r0, #0xfd\n\ + beq ._1463 @cond_branch\n\ + cmp r0, #0xfe\n\ + beq ._1464 @cond_branch\n\ + mov r4, #0x0\n\ + ldr r0, ._1468\n\ + add r5, r0, #0\n\ + ldrb r2, [r5]\n\ + cmp r4, r2\n\ + blt ._1465 @cond_branch\n\ + b ._1534\n\ +._1465:\n\ + ldr r2, ._1468 + 4\n\ + b ._1485\n\ +._1469:\n\ + .align 2, 0\n\ +._1468:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ +._1463:\n\ + mov r4, #0x0\n\ + ldr r0, ._1475\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1470 @cond_branch\n\ + b ._1534\n\ +._1470:\n\ + ldr r5, ._1475 + 4\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0x9\n\ + add r1, r0, #0\n\ +._1473:\n\ + lsl r0, r4, #0x2\n\ + add r0, r0, r5\n\ + ldr r0, [r0]\n\ + and r0, r0, r2\n\ + add r3, r4, #1\n\ + cmp r0, #0\n\ + beq ._1472 @cond_branch\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1472:\n\ + add r4, r3, #0\n\ + cmp r4, r1\n\ + blt ._1473 @cond_branch\n\ + b ._1534\n\ +._1476:\n\ + .align 2, 0\n\ +._1475:\n\ + .word gNoOfAllBanks\n\ + .word gStatuses3\n\ +._1464:\n\ + mov r4, #0x0\n\ + ldr r0, ._1482\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1477 @cond_branch\n\ + b ._1534\n\ +._1477:\n\ + ldr r5, ._1482 + 4\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0xa\n\ + add r1, r0, #0\n\ +._1480:\n\ + lsl r0, r4, #0x2\n\ + add r0, r0, r5\n\ + ldr r0, [r0]\n\ + and r0, r0, r2\n\ + add r3, r4, #1\n\ + cmp r0, #0\n\ + beq ._1479 @cond_branch\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1479:\n\ + add r4, r3, #0\n\ + cmp r4, r1\n\ + blt ._1480 @cond_branch\n\ + b ._1534\n\ +._1483:\n\ + .align 2, 0\n\ +._1482:\n\ + .word gNoOfAllBanks\n\ + .word gStatuses3\n\ +._1485:\n\ + mov r0, #0x58\n\ + mul r0, r0, r4\n\ + add r0, r0, r2\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + add r3, r4, #1\n\ + cmp r0, r6\n\ + bne ._1484 @cond_branch\n\ + mov r0, r8\n\ + strb r6, [r0]\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1484:\n\ + add r4, r3, #0\n\ + ldrb r1, [r5]\n\ + cmp r4, r1\n\ + blt ._1485 @cond_branch\n\ + b ._1534\n\ +._763:\n\ + mov r4, #0x0\n\ + ldr r0, ._1493\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1487 @cond_branch\n\ + b ._1534\n\ +._1487:\n\ + ldr r7, ._1493 + 4\n\ + add r2, r0, #0\n\ + mov r5, #0x58\n\ +._1491:\n\ + add r0, r4, #0\n\ + mul r0, r0, r5\n\ + add r1, r0, r7\n\ + add r0, r1, #0\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + add r3, r4, #1\n\ + cmp r0, r6\n\ + bne ._1490 @cond_branch\n\ + ldrh r0, [r1, #0x28]\n\ + cmp r0, #0\n\ + beq ._1490 @cond_branch\n\ + mov r0, r8\n\ + strb r6, [r0]\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1490:\n\ + add r4, r3, #0\n\ + cmp r4, r2\n\ + blt ._1491 @cond_branch\n\ + b ._1534\n\ +._1494:\n\ + .align 2, 0\n\ +._1493:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ +._759:\n\ + mov r4, #0x0\n\ + ldr r0, ._1501\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1495 @cond_branch\n\ + b ._1534\n\ +._1495:\n\ + ldr r7, ._1501 + 4\n\ + add r1, r0, #0\n\ + mov r5, #0x58\n\ + ldr r2, ._1501 + 8\n\ +._1499:\n\ + add r0, r4, #0\n\ + mul r0, r0, r5\n\ + add r0, r0, r7\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + add r3, r4, #1\n\ + cmp r0, r6\n\ + bne ._1498 @cond_branch\n\ + cmp r4, sl\n\ + beq ._1498 @cond_branch\n\ + strb r6, [r2]\n\ + lsl r0, r3, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1498:\n\ + add r4, r3, #0\n\ + cmp r4, r1\n\ + blt ._1499 @cond_branch\n\ + b ._1534\n\ +._1502:\n\ + .align 2, 0\n\ +._1501:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gLastUsedAbility\n\ +._760:\n\ + mov r0, sl\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + mov r4, #0x0\n\ + ldr r0, ._1509\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1503 @cond_branch\n\ + b ._1534\n\ +._1503:\n\ + ldr r7, ._1509 + 4\n\ +._1507:\n\ + lsl r0, r4, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, r5\n\ + beq ._1506 @cond_branch\n\ + mov r0, #0x58\n\ + mul r0, r0, r4\n\ + add r0, r0, r7\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne ._1506 @cond_branch\n\ + ldr r0, ._1509 + 8\n\ + strb r6, [r0]\n\ + mov r0, r9\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1506:\n\ + add r4, r4, #0x1\n\ + ldr r0, ._1509\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1507 @cond_branch\n\ + b ._1534\n\ +._1510:\n\ + .align 2, 0\n\ +._1509:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gLastUsedAbility\n\ +._761:\n\ + mov r0, sl\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + mov r4, #0x0\n\ + ldr r0, ._1517\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1511 @cond_branch\n\ + b ._1534\n\ +._1511:\n\ + ldr r7, ._1517 + 4\n\ +._1515:\n\ + lsl r0, r4, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, r5\n\ + bne ._1514 @cond_branch\n\ + mov r0, #0x58\n\ + mul r0, r0, r4\n\ + add r0, r0, r7\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, r6\n\ + bne ._1514 @cond_branch\n\ + ldr r0, ._1517 + 8\n\ + strb r6, [r0]\n\ + mov r0, r9\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1514:\n\ + add r4, r4, #0x1\n\ + ldr r0, ._1517\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._1515 @cond_branch\n\ + b ._1534\n\ +._1518:\n\ + .align 2, 0\n\ +._1517:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gLastUsedAbility\n\ +._853:\n\ + ldr r0, ._1520\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r0, ._1520 + 4\n\ + ldr r2, ._1520 + 8\n\ + add r1, r0, r2\n\ + strb r6, [r1]\n\ + mov r1, r9\n\ + sub r1, r1, #0x1\n\ + ldr r3, ._1520 + 12\n\ + add r0, r0, r3\n\ + strb r1, [r0]\n\ + b ._1534\n\ +._1521:\n\ + .align 2, 0\n\ +._1520:\n\ + .word BattleScript_CastformChange\n\ + .word +0x2000000\n\ + .word 0x16003\n\ + .word 0x1609b\n\ +._1374:\n\ + ldr r0, ._1523\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r0, ._1523 + 4\n\ + ldr r5, ._1523 + 8\n\ + add r1, r0, r5\n\ + mov r2, sl\n\ + strb r2, [r1]\n\ + mov r1, r9\n\ + sub r1, r1, #0x1\n\ + ldr r3, ._1523 + 12\n\ + add r0, r0, r3\n\ + strb r1, [r0]\n\ + b ._1540\n\ +._1524:\n\ + .align 2, 0\n\ +._1523:\n\ + .word BattleScript_CastformChange\n\ + .word +0x2000000\n\ + .word 0x16003\n\ + .word 0x1609b\n\ +._1399:\n\ + mov r5, r8\n\ + strb r1, [r5]\n\ + ldr r0, [r2]\n\ + ldr r1, ._1526\n\ + and r0, r0, r1\n\ + str r0, [r2]\n\ + ldr r0, ._1526 + 4\n\ + bl BattleScriptPushCursorAndCallback\n\ + b ._1525\n\ +._1527:\n\ + .align 2, 0\n\ +._1526:\n\ + .word 0xfff7ffff\n\ + .word gUnknown_081D978C\n\ +._1432:\n\ + ldr r0, ._1529\n\ + bl BattleScriptPushCursorAndCallback\n\ + ldr r1, ._1529 + 4\n\ + ldr r2, [sp, #0x18]\n\ + add r1, r2, r1\n\ + ldr r0, [r1]\n\ + ldr r2, ._1529 + 8\n\ + and r0, r0, r2\n\ + str r0, [r1]\n\ + ldr r0, ._1529 + 12\n\ + ldr r3, ._1529 + 16\n\ + add r0, r0, r3\n\ + strb r4, [r0]\n\ + ldr r1, ._1529 + 20\n\ + mov r4, #0xfd\n\ + strb r4, [r1]\n\ + mov r0, #0x4\n\ + strb r0, [r1, #0x1]\n\ + ldr r2, ._1529 + 24\n\ + ldrb r0, [r2]\n\ + strb r0, [r1, #0x2]\n\ + ldr r3, ._1529 + 28\n\ + ldrb r0, [r2]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r3\n\ + ldrh r0, [r0]\n\ + strb r0, [r1, #0x3]\n\ + mov r0, #0xff\n\ + strb r0, [r1, #0x4]\n\ + ldr r1, ._1529 + 32\n\ + strb r4, [r1]\n\ + mov r0, #0x9\n\ + strb r0, [r1, #0x1]\n\ + ldr r0, ._1529 + 36\n\ + ldrb r0, [r0]\n\ + strb r0, [r1, #0x2]\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + strb r0, [r1, #0x3]\n\ + b ._1534\n\ +._1530:\n\ + .align 2, 0\n\ +._1529:\n\ + .word BattleScript_TraceActivates\n\ + .word gStatuses3\n\ + .word 0xffefffff\n\ + .word +0x2000000\n\ + .word 0x16003\n\ + .word gBattleTextBuff1\n\ + .word gActiveBank\n\ + .word gBattlePartyID\n\ + .word gBattleTextBuff2\n\ + .word gLastUsedAbility\n\ +._1442:\n\ + mov r5, r8\n\ + strb r1, [r5]\n\ + ldr r0, [r2]\n\ + ldr r1, ._1532\n\ + and r0, r0, r1\n\ + str r0, [r2]\n\ + bl BattleScriptPushCursor\n\ + ldr r1, ._1532 + 4\n\ + ldr r0, ._1532 + 8\n\ + str r0, [r1]\n\ +._1525:\n\ + ldr r0, ._1532 + 12\n\ + ldr r1, ._1532 + 16\n\ + add r0, r0, r1\n\ + strb r4, [r0]\n\ +._1392:\n\ + mov r0, r9\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ + b ._1534\n\ +._1533:\n\ + .align 2, 0\n\ +._1532:\n\ + .word 0xfff7ffff\n\ + .word gBattlescriptCurrInstr\n\ + .word gUnknown_081D9795\n\ + .word +0x2000000\n\ + .word 0x160dd\n\ +._762:\n\ + mov r4, #0x0\n\ + ldr r0, ._1541\n\ + ldrb r1, [r0]\n\ + cmp r4, r1\n\ + bge ._1534 @cond_branch\n\ + ldr r0, ._1541 + 4\n\ + add r2, r1, #0\n\ + add r1, r0, #0\n\ + add r1, r1, #0x20\n\ + ldr r3, ._1541 + 8\n\ +._1537:\n\ + ldrb r0, [r1]\n\ + cmp r0, r6\n\ + bne ._1536 @cond_branch\n\ + cmp r4, sl\n\ + beq ._1536 @cond_branch\n\ + strb r6, [r3]\n\ + mov r0, r9\n\ + add r0, r0, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r9, r0\n\ +._1536:\n\ + add r1, r1, #0x58\n\ + add r4, r4, #0x1\n\ + cmp r4, r2\n\ + blt ._1537 @cond_branch\n\ +._1534:\n\ + mov r2, r9\n\ + cmp r2, #0\n\ + beq ._1540 @cond_branch\n\ +._916:\n\ + ldr r3, [sp, #0x4]\n\ + cmp r3, #0xb\n\ + bhi ._1540 @cond_branch\n\ + ldr r1, ._1541 + 8\n\ + ldrb r0, [r1]\n\ + cmp r0, #0xff\n\ + beq ._1540 @cond_branch\n\ + add r1, r0, #0\n\ + mov r0, sl\n\ + bl RecordAbilityBattle\n\ +._1540:\n\ + mov r0, r9\n\ + add sp, sp, #0x28\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r1}\n\ + bx r1\n\ +._1542:\n\ + .align 2, 0\n\ +._1541:\n\ + .word gNoOfAllBanks\n\ + .word gBattleMons\n\ + .word gLastUsedAbility"); +} +#else u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { u8 effect = 0; @@ -2498,6 +6558,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) return effect; } +#endif void BattleScriptExecute(const u8* BS_ptr) { @@ -3377,6 +7438,417 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target return targetBank; } +#if DEBUG +__attribute__((naked)) +u8 IsMonDisobedient(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6, r7}\n\ + add sp, sp, #0xfffffff0\n\ + ldr r0, ._1785\n\ + ldrh r1, [r0]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1791 @cond_branch\n\ + ldr r4, ._1785 + 4\n\ + ldrb r0, [r4]\n\ + bl GetBankSide\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + beq ._1791 @cond_branch\n\ + ldr r2, ._1785 + 8\n\ + ldrb r1, [r4]\n\ + mov r0, #0x58\n\ + mul r1, r1, r0\n\ + add r0, r2, #0\n\ + add r0, r0, #0x54\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + add r2, r2, #0x3c\n\ + add r1, r1, r2\n\ + bl IsOtherTrainer\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1791 @cond_branch\n\ + ldr r0, ._1785 + 12\n\ + ldrb r1, [r0]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1783 @cond_branch\n\ + mov r0, #0xa\n\ + b ._1784\n\ +._1786:\n\ + .align 2, 0\n\ +._1785:\n\ + .word gBattleTypeFlags\n\ + .word gBankAttacker\n\ + .word gBattleMons\n\ + .word gUnknown_02023A14+0x50\n\ +._1783:\n\ + ldr r0, ._1794\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1791 @cond_branch\n\ + mov r1, #0xa\n\ + mov r8, r1\n\ + ldr r0, ._1794 + 4\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1788 @cond_branch\n\ + mov r2, #0x1e\n\ + mov r8, r2\n\ +._1788:\n\ + ldr r0, ._1794 + 8\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1789 @cond_branch\n\ + mov r4, #0x32\n\ + mov r8, r4\n\ +._1789:\n\ + ldr r0, ._1794 + 12\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1790 @cond_branch\n\ + mov r0, #0x46\n\ +._1784:\n\ + mov r8, r0\n\ +._1790:\n\ + ldr r5, ._1794 + 16\n\ + ldr r7, ._1794 + 20\n\ + ldrb r0, [r7]\n\ + mov r6, #0x58\n\ + mul r0, r0, r6\n\ + add r0, r0, r5\n\ + add r0, r0, #0x2a\n\ + ldrb r0, [r0]\n\ + cmp r0, r8\n\ + bls ._1791 @cond_branch\n\ + bl Random\n\ + mov r1, #0xff\n\ + and r1, r1, r0\n\ + ldrb r0, [r7]\n\ + add r2, r0, #0\n\ + mul r2, r2, r6\n\ + add r0, r2, r5\n\ + add r0, r0, #0x2a\n\ + ldrb r0, [r0]\n\ + add r0, r0, r8\n\ + mul r0, r0, r1\n\ + asr r4, r0, #0x8\n\ + cmp r4, r8\n\ + bge ._1792 @cond_branch\n\ +._1791:\n\ + mov r0, #0x0\n\ + b ._1823\n\ +._1795:\n\ + .align 2, 0\n\ +._1794:\n\ + .word 0x80e\n\ + .word 0x808\n\ + .word 0x80a\n\ + .word 0x80c\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ +._1792:\n\ + ldr r3, ._1801\n\ + ldrh r0, [r3]\n\ + cmp r0, #0x63\n\ + bne ._1796 @cond_branch\n\ + add r0, r5, #0\n\ + add r0, r0, #0x50\n\ + add r0, r2, r0\n\ + ldr r1, [r0]\n\ + ldr r2, ._1801 + 4\n\ + and r1, r1, r2\n\ + str r1, [r0]\n\ +._1796:\n\ + ldrb r0, [r7]\n\ + mul r0, r0, r6\n\ + add r1, r5, #0\n\ + add r1, r1, #0x4c\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x7\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1799 @cond_branch\n\ + ldrh r0, [r3]\n\ + cmp r0, #0xad\n\ + beq ._1798 @cond_branch\n\ + cmp r0, #0xd6\n\ + bne ._1799 @cond_branch\n\ +._1798:\n\ + ldr r1, ._1801 + 8\n\ + ldr r0, ._1801 + 12\n\ + b ._1819\n\ +._1802:\n\ + .align 2, 0\n\ +._1801:\n\ + .word gCurrentMove\n\ + .word 0xff7fffff\n\ + .word gBattlescriptCurrInstr\n\ + .word gUnknown_081D995F\n\ +._1799:\n\ + bl Random\n\ + mov r5, #0xff\n\ + add r1, r5, #0\n\ + and r1, r1, r0\n\ + ldr r6, ._1808\n\ + ldr r2, ._1808 + 4\n\ + mov r9, r2\n\ + ldrb r3, [r2]\n\ + mov r7, #0x58\n\ + add r0, r3, #0\n\ + mul r0, r0, r7\n\ + add r0, r0, r6\n\ + add r0, r0, #0x2a\n\ + ldrb r2, [r0]\n\ + mov r4, r8\n\ + add r0, r2, r4\n\ + mul r0, r0, r1\n\ + asr r4, r0, #0x8\n\ + cmp r4, r8\n\ + bge ._1803 @cond_branch\n\ + ldr r7, ._1808 + 8\n\ + ldr r5, ._1808 + 12\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r7\n\ + ldrb r1, [r0]\n\ + add r0, r3, #0\n\ + mov r2, #0xff\n\ + bl CheckMoveLimitations\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0xf\n\ + bne ._1804 @cond_branch\n\ + b ._1805\n\ +._1804:\n\ + add r6, r5, #0\n\ + ldr r0, ._1808 + 16\n\ + mov r9, r0\n\ + mov r1, #0x3\n\ + mov r8, r1\n\ +._1806:\n\ + bl Random\n\ + mov r2, r8\n\ + and r0, r0, r2\n\ + mov r1, r9\n\ + strb r0, [r1]\n\ + strb r0, [r6]\n\ + ldrb r0, [r6]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r7\n\ + ldr r5, [r0]\n\ + and r5, r5, r4\n\ + cmp r5, #0\n\ + bne ._1806 @cond_branch\n\ + ldr r4, ._1808 + 20\n\ + ldr r3, ._1808\n\ + ldr r0, ._1808 + 12\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x1\n\ + ldr r1, ._1808 + 4\n\ + ldrb r2, [r1]\n\ + mov r1, #0x58\n\ + mul r1, r1, r2\n\ + add r0, r0, r1\n\ + add r3, r3, #0xc\n\ + add r0, r0, r3\n\ + ldrh r0, [r0]\n\ + strh r0, [r4]\n\ + ldr r0, ._1808 + 24\n\ + strb r5, [r0, #0x3]\n\ + ldr r0, ._1808 + 28\n\ + mov r1, #0x0\n\ + strh r5, [r0]\n\ + ldr r0, ._1808 + 32\n\ + ldr r2, ._1808 + 36\n\ + add r0, r0, r2\n\ + strb r1, [r0]\n\ + ldr r1, ._1808 + 40\n\ + ldr r0, ._1808 + 44\n\ + str r0, [r1]\n\ + ldrh r0, [r4]\n\ + mov r1, #0x0\n\ + bl GetMoveTarget\n\ + ldr r1, ._1808 + 48\n\ + strb r0, [r1]\n\ + ldr r2, ._1808 + 52\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0xe\n\ + b ._1807\n\ +._1809:\n\ + .align 2, 0\n\ +._1808:\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gBitTable\n\ + .word gCurrMovePos\n\ + .word gUnknown_02024BE5\n\ + .word gRandomMove\n\ + .word gBattleCommunication\n\ + .word gDynamicBasePower\n\ + .word +0x2000000\n\ + .word 0x1601c\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_IgnoresAndUsesRandomMove\n\ + .word gBankTarget\n\ + .word gHitMarker\n\ +._1803:\n\ + mov r4, r8\n\ + sub r0, r2, r4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + mov r8, r0\n\ + bl Random\n\ + add r4, r5, #0\n\ + and r4, r4, r0\n\ + cmp r4, r8\n\ + bge ._1818 @cond_branch\n\ + mov r1, r9\n\ + ldrb r0, [r1]\n\ + add r1, r0, #0\n\ + mul r1, r1, r7\n\ + add r0, r6, #0\n\ + add r0, r0, #0x4c\n\ + add r0, r1, r0\n\ + ldr r0, [r0]\n\ + and r0, r0, r5\n\ + cmp r0, #0\n\ + bne ._1818 @cond_branch\n\ + add r0, r1, r6\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x48\n\ + beq ._1818 @cond_branch\n\ + cmp r0, #0xf\n\ + beq ._1818 @cond_branch\n\ + mov r2, #0x0\n\ + ldr r0, ._1820\n\ + ldrb r3, [r0]\n\ + add r7, r0, #0\n\ + cmp r2, r3\n\ + bge ._1816 @cond_branch\n\ + ldr r0, [r6, #0x50]\n\ + mov r1, #0x70\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1816 @cond_branch\n\ + add r1, r6, #0\n\ + add r1, r1, #0x50\n\ + mov r5, #0x70\n\ +._1817:\n\ + add r1, r1, #0x58\n\ + add r2, r2, #0x1\n\ + cmp r2, r3\n\ + bge ._1816 @cond_branch\n\ + ldr r0, [r1]\n\ + and r0, r0, r5\n\ + cmp r0, #0\n\ + beq ._1817 @cond_branch\n\ +._1816:\n\ + ldrb r7, [r7]\n\ + cmp r2, r7\n\ + bne ._1818 @cond_branch\n\ + ldr r1, ._1820 + 4\n\ + ldr r0, ._1820 + 8\n\ + b ._1819\n\ +._1821:\n\ + .align 2, 0\n\ +._1820:\n\ + .word gNoOfAllBanks\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_IgnoresAndFallsAsleep\n\ +._1818:\n\ + mov r2, r8\n\ + sub r4, r4, r2\n\ + cmp r4, r8\n\ + blt ._1822 @cond_branch\n\ +._1805:\n\ + bl Random\n\ + ldr r2, ._1824\n\ + mov r1, #0x3\n\ + and r1, r1, r0\n\ + strb r1, [r2, #0x5]\n\ + ldr r1, ._1824 + 4\n\ + ldr r0, ._1824 + 8\n\ +._1819:\n\ + str r0, [r1]\n\ + mov r0, #0x1\n\ + b ._1823\n\ +._1825:\n\ + .align 2, 0\n\ +._1824:\n\ + .word gBattleCommunication\n\ + .word gBattlescriptCurrInstr\n\ + .word BattleScript_MoveUsedLoafingAround\n\ +._1822:\n\ + ldr r4, ._1826\n\ + ldrb r1, [r4]\n\ + mov r0, #0x58\n\ + mul r1, r1, r0\n\ + ldr r0, ._1826 + 4\n\ + add r1, r1, r0\n\ + mov r0, #0x28\n\ + str r0, [sp]\n\ + mov r0, #0x0\n\ + str r0, [sp, #0x4]\n\ + ldrb r0, [r4]\n\ + str r0, [sp, #0x8]\n\ + ldrb r0, [r4]\n\ + str r0, [sp, #0xc]\n\ + add r0, r1, #0\n\ + mov r2, #0x1\n\ + mov r3, #0x0\n\ + bl CalculateBaseDamage\n\ + ldr r1, ._1826 + 8\n\ + str r0, [r1]\n\ + ldr r1, ._1826 + 12\n\ + ldrb r0, [r4]\n\ + strb r0, [r1]\n\ + ldr r1, ._1826 + 16\n\ + ldr r0, ._1826 + 20\n\ + str r0, [r1]\n\ + ldr r2, ._1826 + 24\n\ + ldr r0, [r2]\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0xc\n\ +._1807:\n\ + orr r0, r0, r1\n\ + str r0, [r2]\n\ + mov r0, #0x2\n\ +._1823:\n\ + add sp, sp, #0x10\n\ + pop {r3, r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4, r5, r6, r7}\n\ + pop {r1}\n\ + bx r1\n\ +._1827:\n\ + .align 2, 0\n\ +._1826:\n\ + .word gBankAttacker\n\ + .word gBattleMons\n\ + .word gBattleMoveDamage\n\ + .word gBankTarget\n\ + .word gBattlescriptCurrInstr\n\ + .word gUnknown_081D99A0\n\ + .word gHitMarker"); +} +#else u8 IsMonDisobedient(void) { u8 obedienceLevel; @@ -3477,3 +7949,4 @@ u8 IsMonDisobedient(void) } } } +#endif diff --git a/src/engine/link.c b/src/engine/link.c index 3bcacd12b..a716d5c2b 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -13,6 +13,7 @@ #include "constants/songs.h" #include "sound.h" #include "sprite.h" +#include "string_util.h" #include "strings2.h" #include "task.h" #include "text.h" @@ -1396,12 +1397,31 @@ void CB2_LinkError(void) static void CB2_PrintErrorMessage(void) { - u8 array[64] __attribute__((unused)); // unused + u8 array[32] __attribute__((unused)); // unused + u8 array2[32] __attribute__((unused)); // unused switch (gMain.state) { case 0: Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1); +#ifdef DEBUG + StringCopy(array, sColorCodes); + + ConvertIntToHexStringN(array2, sErrorLinkStatus, STR_CONV_MODE_LEADING_ZEROS, 8); + StringAppend(array, array2); + + StringAppend(array, sEmptyString); + + ConvertIntToHexStringN(array2, sErrorLastSendQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(array, array2); + + StringAppend(array, sEmptyString); + + ConvertIntToHexStringN(array2, sErrorLastRecvQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(array, array2); + + Menu_PrintText(array, 2, 15); +#endif break; case 30: case 60: -- cgit v1.2.3 From 6dea1a4af13d039c2bfe13170b3542cda535001b Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 21:59:28 -0600 Subject: add debug code in battle_4.c and battle_controller_player.c --- src/battle/battle_4.c | 342 +++++++- src/battle/battle_controller_player.c | 1402 +++++++++++++++++++++++++++++++++ 2 files changed, 1742 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 3763fc309..038b4f5cf 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -1090,7 +1090,7 @@ static const u8 sTerrainToType[] = TYPE_NORMAL, // plain }; -static const u8 sBallCatchBonuses[] = +const u8 sBallCatchBonuses[] = { 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; @@ -5018,7 +5018,156 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\ } #endif // NONMATCHING - +#if DEBUG +__attribute__((naked)) +static void atk15_seteffectwithchance(void) +{ + asm("\ + push {r4, lr}\n\ + ldr r2, ._1037\n\ + ldr r0, ._1037 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x58\n\ + mul r0, r0, r1\n\ + add r0, r0, r2\n\ + add r0, r0, #0x20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x20\n\ + bne ._1035 @cond_branch\n\ + ldr r2, ._1037 + 8\n\ + ldr r0, ._1037 + 12\n\ + ldrh r1, [r0]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldrb r0, [r0, #0x5]\n\ + lsl r4, r0, #0x1\n\ + b ._1036\n\ +._1038:\n\ + .align 2, 0\n\ +._1037:\n\ + .word gBattleMons\n\ + .word gBankAttacker\n\ + .word gBattleMoves\n\ + .word gCurrentMove\n\ +._1035:\n\ + ldr r2, ._1045\n\ + ldr r0, ._1045 + 4\n\ + ldrh r1, [r0]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldrb r4, [r0, #0x5]\n\ +._1036:\n\ + ldr r0, ._1045 + 8\n\ + ldrb r1, [r0]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + ldr r2, ._1045 + 12\n\ + cmp r0, #0\n\ + beq ._1039 @cond_branch\n\ + ldrb r1, [r2, #0x3]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1040 @cond_branch\n\ + ldr r0, ._1045 + 16\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1050 @cond_branch\n\ +._1039:\n\ + ldrb r1, [r2, #0x3]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1043 @cond_branch\n\ +._1040:\n\ + ldr r0, ._1045 + 16\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1043 @cond_branch\n\ + ldr r2, ._1045 + 12\n\ + ldrb r1, [r2, #0x3]\n\ + mov r0, #0x7f\n\ + and r0, r0, r1\n\ + strb r0, [r2, #0x3]\n\ + b ._1044\n\ +._1046:\n\ + .align 2, 0\n\ +._1045:\n\ + .word gBattleMoves\n\ + .word gCurrentMove\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleCommunication\n\ + .word gBattleMoveFlags\n\ +._1043:\n\ + bl Random\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + mov r1, #0x64\n\ + bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + lsl r0, r0, #0x10\n\ + lsr r0, r0, #0x10\n\ + cmp r0, r4\n\ + bhi ._1049 @cond_branch\n\ + ldr r0, ._1052\n\ + ldrb r0, [r0, #0x3]\n\ + cmp r0, #0\n\ + beq ._1049 @cond_branch\n\ + ldr r0, ._1052 + 4\n\ + ldrb r1, [r0]\n\ + mov r0, #0x29\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1049 @cond_branch\n\ + cmp r4, #0x63\n\ + bls ._1050 @cond_branch\n\ +._1044:\n\ + mov r0, #0x0\n\ + mov r1, #0x80\n\ + bl SetMoveEffect\n\ + b ._1054\n\ +._1053:\n\ + .align 2, 0\n\ +._1052:\n\ + .word gBattleCommunication\n\ + .word gBattleMoveFlags\n\ +._1050:\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + bl SetMoveEffect\n\ + b ._1054\n\ +._1049:\n\ + ldr r1, ._1055\n\ + ldr r0, [r1]\n\ + add r0, r0, #0x1\n\ + str r0, [r1]\n\ +._1054:\n\ + ldr r0, ._1055 + 4\n\ + mov r1, #0x0\n\ + strb r1, [r0, #0x3]\n\ + ldr r0, ._1055 + 8\n\ + ldr r2, ._1055 + 12\n\ + add r0, r0, r2\n\ + strb r1, [r0]\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._1056:\n\ + .align 2, 0\n\ +._1055:\n\ + .word gBattlescriptCurrInstr\n\ + .word gBattleCommunication\n\ + .word +0x2000000\n\ + .word 0x16112"); +} +#else static void atk15_seteffectwithchance(void) { u32 PercentChance; @@ -5043,6 +5192,7 @@ static void atk15_seteffectwithchance(void) gBattleCommunication[MOVE_EFFECT_BYTE] = 0; gBattleStruct->unk16112 = 0; } +#endif static void atk16_seteffectprimary(void) { @@ -12620,6 +12770,193 @@ static void atk9D_mimicattackcopy(void) } } +#if DEBUG +__attribute__((naked)) +static void atk9E_metronome(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r6, ._3076\n\ + ldrb r2, [r6]\n\ + lsl r1, r2, #0x1\n\ + ldr r0, ._3076 + 4\n\ + add r3, r1, r0\n\ + ldr r5, ._3076 + 8\n\ + mov r4, #0x58\n\ + add r0, r2, #0\n\ + mul r0, r0, r4\n\ + add r1, r0, r5\n\ + ldrh r0, [r1, #0xe]\n\ + cmp r0, #0\n\ + bne ._3071 @cond_branch\n\ + ldrh r2, [r1, #0x10]\n\ + cmp r2, #0\n\ + beq ._3071 @cond_branch\n\ + ldrh r0, [r1, #0x12]\n\ + cmp r0, #0\n\ + beq ._3071 @cond_branch\n\ + ldrh r0, [r3]\n\ + cmp r0, #0\n\ + bne ._3072 @cond_branch\n\ + strh r2, [r3]\n\ +._3072:\n\ + ldr r1, ._3076 + 12\n\ + ldrh r0, [r3]\n\ + strh r0, [r1]\n\ + ldrb r0, [r6]\n\ + mul r0, r0, r4\n\ + add r0, r0, r5\n\ + ldrh r5, [r0, #0x10]\n\ + ldrh r2, [r0, #0x12]\n\ + add r7, r1, #0\n\ + cmp r5, r2\n\ + bcs ._3073 @cond_branch\n\ + ldrh r0, [r3]\n\ + cmp r0, r2\n\ + beq ._3074 @cond_branch\n\ + add r0, r0, #0x1\n\ + b ._3079\n\ +._3077:\n\ + .align 2, 0\n\ +._3076:\n\ + .word gBankAttacker\n\ + .word +0x20160b4\n\ + .word gBattleMons\n\ + .word gCurrentMove\n\ +._3073:\n\ + ldrh r4, [r3]\n\ + add r1, r4, #0\n\ + mov r0, #0xb1\n\ + lsl r0, r0, #0x1\n\ + cmp r1, r0\n\ + bne ._3078 @cond_branch\n\ + mov r0, #0x1\n\ + b ._3079\n\ +._3078:\n\ + cmp r1, r2\n\ + bne ._3080 @cond_branch\n\ +._3074:\n\ + strh r5, [r3]\n\ + b ._3081\n\ +._3080:\n\ + add r0, r4, #1\n\ +._3079:\n\ + strh r0, [r3]\n\ +._3081:\n\ + ldr r4, ._3083\n\ + ldr r2, [r4]\n\ + ldr r0, ._3083 + 4\n\ + and r2, r2, r0\n\ + str r2, [r4]\n\ + ldr r6, ._3083 + 8\n\ + ldr r5, ._3083 + 12\n\ + ldr r3, ._3083 + 16\n\ + ldrh r1, [r7]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r5\n\ + ldr r0, [r0]\n\ + str r0, [r6]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x4\n\ + orr r2, r2, r0\n\ + str r2, [r4]\n\ + ldrh r0, [r7]\n\ + b ._3082\n\ +._3084:\n\ + .align 2, 0\n\ +._3083:\n\ + .word gHitMarker\n\ + .word 0xfffffbff\n\ + .word gBattlescriptCurrInstr\n\ + .word gBattleScriptsForMoveEffects\n\ + .word gBattleMoves\n\ +._3071:\n\ + ldr r7, ._3090\n\ + mov r6, #0xb1\n\ + lsl r6, r6, #0x1\n\ + ldr r5, ._3090 + 4\n\ + ldr r0, ._3090 + 8\n\ + mov r8, r0\n\ +._3089:\n\ + bl Random\n\ + ldr r2, ._3090 + 12\n\ + add r1, r2, #0\n\ + and r0, r0, r1\n\ + add r0, r0, #0x1\n\ + strh r0, [r7]\n\ + cmp r0, r6\n\ + bhi ._3089 @cond_branch\n\ + mov r0, #0x3\n\ +._3086:\n\ + sub r0, r0, #0x1\n\ + cmp r0, #0\n\ + bge ._3086 @cond_branch\n\ + ldr r4, ._3090\n\ + ldrh r2, [r4]\n\ + ldr r3, ._3090 + 16\n\ + sub r0, r5, #2\n\ +._3088:\n\ + add r0, r0, #0x2\n\ + ldrh r1, [r0]\n\ + cmp r1, r2\n\ + beq ._3087 @cond_branch\n\ + cmp r1, r3\n\ + bne ._3088 @cond_branch\n\ +._3087:\n\ + ldr r0, ._3090 + 16\n\ + cmp r1, r0\n\ + bne ._3089 @cond_branch\n\ + ldr r2, ._3090 + 20\n\ + ldr r0, [r2]\n\ + ldr r1, ._3090 + 24\n\ + and r0, r0, r1\n\ + str r0, [r2]\n\ + ldr r3, ._3090 + 28\n\ + ldr r2, ._3090 + 32\n\ + ldrh r1, [r4]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldr r0, [r0]\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + ldrh r0, [r4]\n\ +._3082:\n\ + mov r1, #0x0\n\ + bl GetMoveTarget\n\ + ldr r1, ._3090 + 36\n\ + strb r0, [r1]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._3091:\n\ + .align 2, 0\n\ +._3090:\n\ + .word gCurrentMove\n\ + .word sMovesForbiddenToCopy\n\ + .word gBattlescriptCurrInstr\n\ + .word 0x1ff\n\ + .word 0xffff\n\ + .word gHitMarker\n\ + .word 0xfffffbff\n\ + .word gBattleScriptsForMoveEffects\n\ + .word gBattleMoves\n\ + .word gBankTarget"); +} +#else #ifdef NONMATCHING static void atk9E_metronome(void) { @@ -12721,6 +13058,7 @@ _0802795C: .4byte gBankTarget\n\ .syntax divided"); } #endif // NONMATCHING +#endif static void atk9F_dmgtolevel(void) { diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 0d05b7aed..eaabe9b53 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -617,6 +617,725 @@ struct ChooseMoveStruct const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}"); +#if DEBUG +__attribute__((naked)) +void sub_802C68C(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + add sp, sp, #0xfffffff8\n\ + mov r0, #0x0\n\ + mov r8, r0\n\ + mov r7, #0x0\n\ + ldr r1, ._131\n\ + ldrb r2, [r1]\n\ + lsl r1, r2, #0x9\n\ + ldr r0, ._131 + 4\n\ + add r6, r1, r0\n\ + ldr r0, ._131 + 8\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r5, #0x1\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._126 @cond_branch\n\ + b ._127\n\ +._126:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r1, ._131 + 12\n\ + ldr r2, ._131\n\ + ldrb r0, [r2]\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x1\n\ + add r1, r6, r0\n\ + ldrh r0, [r1]\n\ + cmp r0, #0xae\n\ + bne ._128 @cond_branch\n\ + ldrb r0, [r6, #0x12]\n\ + mov r4, #0x0\n\ + cmp r0, #0x7\n\ + beq ._130 @cond_branch\n\ + ldrb r1, [r6, #0x13]\n\ + mov r0, #0x7\n\ + eor r1, r1, r0\n\ + neg r0, r1\n\ + orr r0, r0, r1\n\ + asr r4, r0, #0x1f\n\ + mov r0, #0x10\n\ + and r4, r4, r0\n\ + b ._130\n\ +._132:\n\ + .align 2, 0\n\ +._131:\n\ + .word gActiveBank\n\ + .word gUnknown_02023A64\n\ + .word gMain\n\ + .word gMoveSelectionCursor\n\ +._128:\n\ + ldr r2, ._135\n\ + ldrh r1, [r1]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldrb r4, [r0, #0x6]\n\ +._130:\n\ + mov r0, #0x10\n\ + and r0, r0, r4\n\ + cmp r0, #0\n\ + beq ._133 @cond_branch\n\ + ldr r0, ._135 + 4\n\ + ldr r1, ._135 + 8\n\ + ldrb r1, [r1]\n\ + strb r1, [r0]\n\ + b ._134\n\ +._136:\n\ + .align 2, 0\n\ +._135:\n\ + .word gBattleMoves\n\ + .word gUnknown_03004344\n\ + .word gActiveBank\n\ +._133:\n\ + ldr r0, ._141\n\ + ldrb r0, [r0]\n\ + bl GetBankIdentity\n\ + add r1, r0, #0\n\ + mov r2, #0x1\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + eor r0, r0, r2\n\ + bl GetBankByIdentity\n\ + ldr r1, ._141 + 4\n\ + strb r0, [r1]\n\ +._134:\n\ + ldr r3, ._141 + 8\n\ + ldr r5, ._141\n\ + ldrb r2, [r5]\n\ + lsl r1, r2, #0x9\n\ + add r0, r3, #1\n\ + add r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._137 @cond_branch\n\ + mov r0, #0x2\n\ + and r0, r0, r4\n\ + cmp r0, #0\n\ + beq ._146 @cond_branch\n\ + add r0, r3, #2\n\ + add r0, r1, r0\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._146 @cond_branch\n\ + mov r0, #0x1\n\ + add r8, r8, r0\n\ + b ._146\n\ +._142:\n\ + .align 2, 0\n\ +._141:\n\ + .word gActiveBank\n\ + .word gUnknown_03004344\n\ + .word gBattleBufferA\n\ +._137:\n\ + mov r0, #0x7d\n\ + and r0, r0, r4\n\ + cmp r0, #0\n\ + bne ._143 @cond_branch\n\ + mov r1, #0x1\n\ + add r8, r8, r1\n\ +._143:\n\ + ldr r0, ._149\n\ + add r0, r2, r0\n\ + add r1, r6, #0\n\ + add r1, r1, #0x8\n\ + ldrb r0, [r0]\n\ + add r1, r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, #0\n\ + beq ._144 @cond_branch\n\ + mov r0, #0x12\n\ + and r0, r0, r4\n\ + cmp r0, #0\n\ + bne ._146 @cond_branch\n\ + mov r0, #0x0\n\ + bl CountAliveMons\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bhi ._146 @cond_branch\n\ + ldrb r0, [r5]\n\ + bl sub_803C434\n\ + ldr r1, ._149 + 4\n\ + strb r0, [r1]\n\ + mov r2, #0x0\n\ + mov r8, r2\n\ +._146:\n\ + mov r0, r8\n\ + cmp r0, #0\n\ + bne ._147 @cond_branch\n\ +._144:\n\ + bl DestroyMenuCursor\n\ + ldr r1, ._149\n\ + ldr r0, ._149 + 8\n\ + ldrb r0, [r0]\n\ + add r0, r0, r1\n\ + ldrb r2, [r0]\n\ + ldr r0, ._149 + 4\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x8\n\ + orr r2, r2, r0\n\ + b ._148\n\ +._150:\n\ + .align 2, 0\n\ +._149:\n\ + .word gMoveSelectionCursor\n\ + .word gUnknown_03004344\n\ + .word gActiveBank\n\ +._147:\n\ + ldr r1, ._153\n\ + ldr r2, ._153 + 4\n\ + ldrb r0, [r2]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._153 + 8\n\ + str r1, [r0]\n\ + mov r0, #0x12\n\ + and r4, r4, r0\n\ + cmp r4, #0\n\ + beq ._151 @cond_branch\n\ + ldr r1, ._153 + 12\n\ + ldrb r0, [r2]\n\ + b ._152\n\ +._154:\n\ + .align 2, 0\n\ +._153:\n\ + .word gBattleBankFunc\n\ + .word gActiveBank\n\ + .word sub_802C2EC+1\n\ + .word gUnknown_03004344\n\ +._151:\n\ + mov r0, #0x1\n\ + bl GetBankByIdentity\n\ + ldr r1, ._157\n\ + ldrb r1, [r1]\n\ + ldr r2, ._157 + 4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x16\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + and r1, r1, r0\n\ + cmp r1, #0\n\ + beq ._155 @cond_branch\n\ + mov r0, #0x3\n\ + b ._156\n\ +._158:\n\ + .align 2, 0\n\ +._157:\n\ + .word gAbsentBankFlags\n\ + .word gBitTable\n\ +._155:\n\ + mov r0, #0x1\n\ +._156:\n\ + bl GetBankByIdentity\n\ + ldr r1, ._160\n\ +._152:\n\ + strb r0, [r1]\n\ + ldr r2, ._160 + 4\n\ + ldr r1, ._160 + 8\n\ + ldr r0, ._160\n\ + ldrb r0, [r0]\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x4\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r2, r2, #0x1c\n\ + add r0, r0, r2\n\ + ldr r1, ._160 + 12\n\ + b ._203\n\ +._161:\n\ + .align 2, 0\n\ +._160:\n\ + .word gUnknown_03004344\n\ + .word gSprites\n\ + .word gObjectBankIDs\n\ + .word sub_8010520+1\n\ +._127:\n\ + mov r6, #0x2\n\ + add r0, r6, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._162 @cond_branch\n\ + bl DestroyMenuCursor\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._164\n\ + strh r7, [r0]\n\ + ldr r1, ._164 + 4\n\ + mov r2, #0xa0\n\ + lsl r2, r2, #0x1\n\ + add r0, r2, #0\n\ + strh r0, [r1]\n\ + ldr r2, ._164 + 8\n\ +._148:\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + bl PlayerBufferExecCompleted\n\ + b ._209\n\ +._165:\n\ + .align 2, 0\n\ +._164:\n\ + .word gBattle_BG0_X\n\ + .word gBattle_BG0_Y\n\ + .word 0xffff\n\ +._162:\n\ + mov r0, #0x20\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._166 @cond_branch\n\ + ldr r4, ._170\n\ + add r2, r2, r4\n\ + ldrb r1, [r2]\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._167 @cond_branch\n\ + b ._209\n\ +._167:\n\ + ldrb r0, [r2]\n\ + bl nullsub_7\n\ + ldr r0, ._170 + 4\n\ + ldrb r1, [r0]\n\ + add r1, r1, r4\n\ + ldrb r0, [r1]\n\ + mov r2, #0x1\n\ + eor r0, r0, r2\n\ + b ._183\n\ +._171:\n\ + .align 2, 0\n\ +._170:\n\ + .word gMoveSelectionCursor\n\ + .word gActiveBank\n\ +._166:\n\ + mov r3, #0x10\n\ + add r0, r3, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._172 @cond_branch\n\ + ldr r4, ._178\n\ + add r3, r2, r4\n\ + ldrb r2, [r3]\n\ + mov r6, #0x1\n\ + add r0, r5, #0\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + beq ._173 @cond_branch\n\ + b ._209\n\ +._173:\n\ + ldr r1, ._178 + 4\n\ + add r0, r6, #0\n\ + eor r0, r0, r2\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc ._175 @cond_branch\n\ + b ._209\n\ +._175:\n\ + ldrb r0, [r3]\n\ + bl nullsub_7\n\ + ldr r2, ._178 + 8\n\ + ldrb r1, [r2]\n\ + add r1, r1, r4\n\ + ldrb r0, [r1]\n\ + eor r0, r0, r6\n\ + b ._183\n\ +._179:\n\ + .align 2, 0\n\ +._178:\n\ + .word gMoveSelectionCursor\n\ + .word gUnknown_03004348\n\ + .word gActiveBank\n\ +._172:\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._180 @cond_branch\n\ + ldr r4, ._184\n\ + add r2, r2, r4\n\ + ldrb r1, [r2]\n\ + add r0, r6, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._181 @cond_branch\n\ + b ._209\n\ +._181:\n\ + ldrb r0, [r2]\n\ + bl nullsub_7\n\ + ldr r2, ._184 + 4\n\ + ldrb r1, [r2]\n\ + add r1, r1, r4\n\ + ldrb r0, [r1]\n\ + mov r2, #0x2\n\ + eor r0, r0, r2\n\ + b ._183\n\ +._185:\n\ + .align 2, 0\n\ +._184:\n\ + .word gMoveSelectionCursor\n\ + .word gActiveBank\n\ +._180:\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._186 @cond_branch\n\ + ldr r4, ._192\n\ + add r3, r2, r4\n\ + ldrb r2, [r3]\n\ + mov r5, #0x2\n\ + add r0, r6, #0\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + beq ._187 @cond_branch\n\ + b ._209\n\ +._187:\n\ + ldr r1, ._192 + 4\n\ + add r0, r5, #0\n\ + eor r0, r0, r2\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc ._189 @cond_branch\n\ + b ._209\n\ +._189:\n\ + ldrb r0, [r3]\n\ + bl nullsub_7\n\ + ldr r2, ._192 + 8\n\ + ldrb r1, [r2]\n\ + add r1, r1, r4\n\ + ldrb r0, [r1]\n\ + eor r0, r0, r5\n\ +._183:\n\ + strb r0, [r1]\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r1, ._192 + 8\n\ + ldrb r0, [r1]\n\ + add r0, r0, r4\n\ + ldrb r0, [r0]\n\ + mov r1, #0x0\n\ + bl sub_802E3B4\n\ + bl sub_802E220\n\ + bl sub_802E2D4\n\ + b ._209\n\ +._193:\n\ + .align 2, 0\n\ +._192:\n\ + .word gMoveSelectionCursor\n\ + .word gUnknown_03004348\n\ + .word gActiveBank\n\ +._186:\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._194 @cond_branch\n\ + ldr r0, ._201\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bhi ._195 @cond_branch\n\ + b ._209\n\ +._195:\n\ + ldr r0, ._201 + 4\n\ + ldrh r1, [r0]\n\ + add r0, r6, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._197 @cond_branch\n\ + b ._209\n\ +._197:\n\ + ldr r4, ._201 + 8\n\ + add r0, r2, r4\n\ + ldrb r0, [r0]\n\ + ldr r1, ._201 + 12\n\ + bl sub_802E12C\n\ + ldr r2, ._201 + 16\n\ + ldrb r0, [r2]\n\ + add r0, r0, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._199 @cond_branch\n\ + ldr r0, ._201 + 20\n\ + strb r7, [r0]\n\ + b ._200\n\ +._202:\n\ + .align 2, 0\n\ +._201:\n\ + .word gUnknown_03004348\n\ + .word gBattleTypeFlags\n\ + .word gMoveSelectionCursor\n\ + .word gUnknown_081FAE80\n\ + .word gActiveBank\n\ + .word gUnknown_03004344\n\ +._199:\n\ + ldr r1, ._204\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + add r0, r1, #0\n\ +._200:\n\ + ldrb r0, [r0]\n\ + mov r1, #0x1b\n\ + bl sub_802E3B4\n\ + ldr r4, ._204 + 4\n\ + ldr r1, ._204 + 8\n\ + mov r0, #0x1c\n\ + str r0, [sp]\n\ + mov r0, #0x3a\n\ + str r0, [sp, #0x4]\n\ + add r0, r4, #0\n\ + mov r2, #0x17\n\ + mov r3, #0x37\n\ + bl Text_FillWindowRect\n\ + ldr r1, ._204 + 12\n\ + mov r2, #0xa4\n\ + lsl r2, r2, #0x2\n\ + mov r0, #0x37\n\ + str r0, [sp]\n\ + add r0, r4, #0\n\ + mov r3, #0x17\n\ + bl Text_InitWindow\n\ + add r0, r4, #0\n\ + bl Text_PrintWindow8002F44\n\ + ldr r1, ._204 + 16\n\ + ldr r0, ._204 + 20\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._204 + 24\n\ + b ._203\n\ +._205:\n\ + .align 2, 0\n\ +._204:\n\ + .word gUnknown_03004344\n\ + .word gUnknown_03004210\n\ + .word 0x1016\n\ + .word BattleText_SwitchWhich\n\ + .word gBattleBankFunc\n\ + .word gActiveBank\n\ + .word sub_802CA60+1\n\ +._194:\n\ + ldr r0, ._214\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + beq ._206 @cond_branch\n\ + b ._209\n\ +._206:\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._208 @cond_branch\n\ + b ._209\n\ +._208:\n\ + ldr r6, ._214 + 4\n\ + ldr r1, ._214 + 8\n\ + str r3, [sp]\n\ + mov r0, #0x3a\n\ + str r0, [sp, #0x4]\n\ + add r0, r6, #0\n\ + mov r2, #0x1\n\ + mov r3, #0x37\n\ + bl Text_FillWindowRect\n\ + ldr r0, ._214 + 12\n\ + mov sl, r0\n\ + ldr r1, ._214 + 16\n\ + ldrb r0, [r1]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, sl\n\ + ldrh r0, [r0]\n\ + mov r2, #0x64\n\ + mov r9, r2\n\ + mov r1, r9\n\ + mul r1, r1, r0\n\ + add r0, r1, #0\n\ + ldr r5, ._214 + 20\n\ + add r0, r0, r5\n\ + mov r1, #0xd\n\ + bl GetMonData\n\ + mov r1, #0xd\n\ + mul r1, r1, r0\n\ + ldr r0, ._214 + 24\n\ + add r1, r1, r0\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0x1\n\ + mov r0, #0x37\n\ + mov r8, r0\n\ + str r0, [sp]\n\ + add r0, r6, #0\n\ + mov r3, #0x2\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r4, ._214 + 28\n\ + ldr r1, ._214 + 16\n\ + ldrb r0, [r1]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, sl\n\ + ldrh r0, [r0]\n\ + mov r2, r9\n\ + mul r2, r2, r0\n\ + add r0, r2, #0\n\ + add r0, r0, r5\n\ + mov r1, #0xd\n\ + bl GetMonData\n\ + add r1, r0, #0\n\ + add r0, r4, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x3\n\ + bl ConvertIntToDecimalStringN\n\ + mov r2, #0x88\n\ + lsl r2, r2, #0x1\n\ + mov r0, r8\n\ + str r0, [sp]\n\ + add r0, r6, #0\n\ + add r1, r4, #0\n\ + mov r3, #0xa\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r1, ._214 + 32\n\ + mov r2, #0x8b\n\ + lsl r2, r2, #0x1\n\ + mov r5, #0x39\n\ + str r5, [sp]\n\ + add r0, r6, #0\n\ + mov r3, #0x1\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r0, ._214 + 36\n\ + ldrb r1, [r0]\n\ + add r0, r4, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x3\n\ + bl ConvertIntToDecimalStringN\n\ + mov r2, #0x8e\n\ + lsl r2, r2, #0x1\n\ + str r5, [sp]\n\ + add r0, r6, #0\n\ + add r1, r4, #0\n\ + mov r3, #0x4\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r0, ._214 + 40\n\ + add r2, r0, #0\n\ + add r2, r2, #0x3e\n\ + mov r1, #0x3f\n\ +._211:\n\ + ldrb r0, [r2]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._210 @cond_branch\n\ + add r0, r7, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ +._210:\n\ + add r2, r2, #0x44\n\ + sub r1, r1, #0x1\n\ + cmp r1, #0\n\ + bge ._211 @cond_branch\n\ + ldr r4, ._214 + 28\n\ + add r0, r4, #0\n\ + add r1, r7, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x2\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r6, ._214 + 4\n\ + mov r2, #0x91\n\ + lsl r2, r2, #0x1\n\ + mov r5, #0x39\n\ + str r5, [sp]\n\ + add r0, r6, #0\n\ + add r1, r4, #0\n\ + mov r3, #0x8\n\ + bl Text_InitWindowAndPrintText\n\ + bl GetTaskCount\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + add r0, r4, #0\n\ + add r1, r7, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x2\n\ + bl ConvertIntToDecimalStringN\n\ + mov r2, #0x93\n\ + lsl r2, r2, #0x1\n\ + str r5, [sp]\n\ + add r0, r6, #0\n\ + add r1, r4, #0\n\ + mov r3, #0xb\n\ + bl Text_InitWindowAndPrintText\n\ + mov r1, #0x0\n\ + mov r7, #0x0\n\ + ldr r0, ._214 + 44\n\ + mov r3, #0x1\n\ + ldr r2, [r0]\n\ +._213:\n\ + add r0, r3, #0\n\ + LSL r0, r1\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + beq ._212 @cond_branch\n\ + add r0, r7, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ +._212:\n\ + add r1, r1, #0x1\n\ + cmp r1, #0x1f\n\ + ble ._213 @cond_branch\n\ + ldr r4, ._214 + 28\n\ + add r0, r4, #0\n\ + add r1, r7, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x2\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r0, ._214 + 4\n\ + mov r2, #0x95\n\ + lsl r2, r2, #0x1\n\ + mov r1, #0x39\n\ + str r1, [sp]\n\ + add r1, r4, #0\n\ + mov r3, #0xe\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r1, ._214 + 48\n\ + ldr r0, ._214 + 16\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._214 + 52\n\ +._203:\n\ + str r1, [r0]\n\ +._209:\n\ + add sp, sp, #0x8\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._215:\n\ + .align 2, 0\n\ +._214:\n\ + .word gUnknown_020297ED\n\ + .word gUnknown_03004210\n\ + .word 0x1016\n\ + .word gBattlePartyID\n\ + .word gActiveBank\n\ + .word gPlayerParty\n\ + .word gMoveNames\n\ + .word gDisplayedStringBattle\n\ + .word sBallCatchBonuses+0x4\n\ + .word gAnimMoveTurn\n\ + .word gSprites\n\ + .word gOamMatrixAllocBitmap\n\ + .word gBattleBankFunc\n\ + .word debug_sub_8030C24+1"); +} +#else void sub_802C68C(void) { u32 r8 = 0; @@ -751,6 +1470,7 @@ void sub_802C68C(void) } } } +#endif extern const u8 BattleText_Format[]; @@ -956,6 +1676,688 @@ void sub_802D18C(void) } } +#if DEBUG +__attribute__((naked)) +void debug_sub_8030C24(void) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + add sp, sp, #0xfffffff4\n\ + ldr r1, ._293\n\ + ldr r4, ._293 + 4\n\ + ldrb r0, [r4]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r0, r0, r1\n\ + ldr r1, ._293 + 8\n\ + add r0, r0, r1\n\ + mov r1, #0xd\n\ + bl GetMonData\n\ + add r1, sp, #0x8\n\ + strh r0, [r1]\n\ + ldr r5, ._293 + 12\n\ + ldrh r1, [r5, #0x30]\n\ + cmp r1, #0x20\n\ + bne ._286 @cond_branch\n\ + b ._287\n\ +._286:\n\ + cmp r1, #0x20\n\ + bgt ._288 @cond_branch\n\ + cmp r1, #0x8\n\ + beq ._289 @cond_branch\n\ + cmp r1, #0x8\n\ + bgt ._290 @cond_branch\n\ + cmp r1, #0x4\n\ + beq ._291 @cond_branch\n\ + b ._348\n\ +._294:\n\ + .align 2, 0\n\ +._293:\n\ + .word gBattlePartyID\n\ + .word gActiveBank\n\ + .word gPlayerParty\n\ + .word gMain\n\ +._290:\n\ + cmp r1, #0x10\n\ + bne ._295 @cond_branch\n\ + b ._296\n\ +._295:\n\ + b ._348\n\ +._288:\n\ + cmp r1, #0x80\n\ + bne ._298 @cond_branch\n\ + b ._302\n\ +._298:\n\ + cmp r1, #0x80\n\ + bgt ._300 @cond_branch\n\ + cmp r1, #0x40\n\ + bne ._301 @cond_branch\n\ + b ._302\n\ +._301:\n\ + b ._348\n\ +._300:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + cmp r1, r0\n\ + bne ._304 @cond_branch\n\ + b ._305\n\ +._304:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x2\n\ + cmp r1, r0\n\ + bne ._306 @cond_branch\n\ + b ._307\n\ +._306:\n\ + b ._348\n\ +._289:\n\ + ldrb r0, [r4]\n\ + mov r1, #0x1\n\ + bl dp11b_obj_free\n\ + ldrb r0, [r4]\n\ + mov r1, #0x0\n\ + bl dp11b_obj_free\n\ + ldr r0, ._312\n\ + ldrb r2, [r4]\n\ + strb r2, [r0]\n\ + ldrh r1, [r5, #0x28]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._310 @cond_branch\n\ + ldr r0, ._312 + 4\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._310 @cond_branch\n\ + ldr r0, ._312 + 8\n\ + mov r1, #0x2\n\ + eor r1, r1, r2\n\ + strb r1, [r0]\n\ + b ._311\n\ +._313:\n\ + .align 2, 0\n\ +._312:\n\ + .word gBankAttacker\n\ + .word gBattleTypeFlags\n\ + .word gBankTarget\n\ +._310:\n\ + ldr r0, ._317\n\ + ldrh r1, [r0, #0x28]\n\ + mov r2, #0x1\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._315 @cond_branch\n\ + ldr r0, ._317 + 4\n\ + ldrh r1, [r0]\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._315 @cond_branch\n\ + mov r0, #0x3\n\ + b ._316\n\ +._318:\n\ + .align 2, 0\n\ +._317:\n\ + .word gMain\n\ + .word gBattleTypeFlags\n\ +._315:\n\ + mov r0, #0x1\n\ +._316:\n\ + bl GetBankByIdentity\n\ + ldr r1, ._320\n\ + strb r0, [r1]\n\ +._311:\n\ + mov r0, #0x0\n\ + bl sub_80326EC\n\ + add r0, sp, #0x8\n\ + ldrh r0, [r0]\n\ + bl DoMoveAnim\n\ + ldr r1, ._320 + 4\n\ + ldr r0, ._320 + 8\n\ + ldrb r0, [r0]\n\ + b ._332\n\ +._321:\n\ + .align 2, 0\n\ +._320:\n\ + .word gBankTarget\n\ + .word gBattleBankFunc\n\ + .word gActiveBank\n\ +._291:\n\ + ldrb r0, [r4]\n\ + mov r1, #0x1\n\ + bl dp11b_obj_free\n\ + ldrb r0, [r4]\n\ + mov r1, #0x0\n\ + bl dp11b_obj_free\n\ + ldr r0, ._325\n\ + ldrb r2, [r4]\n\ + strb r2, [r0]\n\ + ldrh r1, [r5, #0x28]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._323 @cond_branch\n\ + ldr r0, ._325 + 4\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._323 @cond_branch\n\ + ldr r0, ._325 + 8\n\ + mov r1, #0x2\n\ + eor r1, r1, r2\n\ + strb r1, [r0]\n\ + b ._324\n\ +._326:\n\ + .align 2, 0\n\ +._325:\n\ + .word gBankTarget\n\ + .word gBattleTypeFlags\n\ + .word gBankAttacker\n\ +._323:\n\ + ldr r0, ._330\n\ + ldrh r1, [r0, #0x28]\n\ + mov r2, #0x1\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._328 @cond_branch\n\ + ldr r0, ._330 + 4\n\ + ldrh r1, [r0]\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._328 @cond_branch\n\ + mov r0, #0x3\n\ + b ._329\n\ +._331:\n\ + .align 2, 0\n\ +._330:\n\ + .word gMain\n\ + .word gBattleTypeFlags\n\ +._328:\n\ + mov r0, #0x1\n\ +._329:\n\ + bl GetBankByIdentity\n\ + ldr r1, ._333\n\ + strb r0, [r1]\n\ +._324:\n\ + mov r0, #0x0\n\ + bl sub_80326EC\n\ + add r0, sp, #0x8\n\ + ldrh r0, [r0]\n\ + bl DoMoveAnim\n\ + ldr r1, ._333 + 4\n\ + ldr r0, ._333 + 8\n\ + ldrb r0, [r0]\n\ + b ._332\n\ +._334:\n\ + .align 2, 0\n\ +._333:\n\ + .word gBankAttacker\n\ + .word gBattleBankFunc\n\ + .word gActiveBank\n\ +._305:\n\ + ldrh r1, [r5, #0x28]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._336 @cond_branch\n\ + ldr r0, ._338\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._336 @cond_branch\n\ + ldrb r0, [r4]\n\ + mov r1, #0x1\n\ + bl dp11b_obj_free\n\ + ldrb r0, [r4]\n\ + mov r1, #0x0\n\ + bl dp11b_obj_free\n\ + mov r0, #0x3\n\ + bl GetBankByIdentity\n\ + ldr r1, ._338 + 4\n\ + strb r0, [r1]\n\ + mov r0, #0x1\n\ + b ._337\n\ +._339:\n\ + .align 2, 0\n\ +._338:\n\ + .word gBattleTypeFlags\n\ + .word gBankAttacker\n\ +._336:\n\ + add r0, sp, #0x8\n\ + mov r1, #0x0\n\ + ldsh r0, [r0, r1]\n\ + add r0, r0, #0x9\n\ + add r1, sp, #0x8\n\ + strh r0, [r1]\n\ +._296:\n\ + add r0, sp, #0x8\n\ + mov r2, #0x0\n\ + ldsh r0, [r0, r2]\n\ + add r0, r0, #0x1\n\ + lsl r2, r0, #0x10\n\ + add r1, sp, #0x8\n\ + strh r0, [r1]\n\ + mov r0, #0xb1\n\ + lsl r0, r0, #0x11\n\ + cmp r2, r0\n\ + ble ._347 @cond_branch\n\ + mov r1, #0x1\n\ + add r0, sp, #0x8\n\ + strh r1, [r0]\n\ + b ._347\n\ +._307:\n\ + ldrh r1, [r5, #0x28]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._343 @cond_branch\n\ + ldr r0, ._345\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._343 @cond_branch\n\ + ldrb r0, [r4]\n\ + mov r1, #0x1\n\ + bl dp11b_obj_free\n\ + ldrb r0, [r4]\n\ + mov r1, #0x0\n\ + bl dp11b_obj_free\n\ + mov r0, #0x1\n\ + bl GetBankByIdentity\n\ + ldr r1, ._345 + 4\n\ + strb r0, [r1]\n\ + mov r0, #0x3\n\ +._337:\n\ + bl GetBankByIdentity\n\ + ldr r1, ._345 + 8\n\ + strb r0, [r1]\n\ + mov r0, #0x0\n\ + bl sub_80326EC\n\ + add r0, sp, #0x8\n\ + ldrh r0, [r0]\n\ + bl DoMoveAnim\n\ + ldr r1, ._345 + 12\n\ + ldrb r0, [r4]\n\ +._332:\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._345 + 16\n\ + str r1, [r0]\n\ + b ._348\n\ +._346:\n\ + .align 2, 0\n\ +._345:\n\ + .word gBattleTypeFlags\n\ + .word gBankAttacker\n\ + .word gBankTarget\n\ + .word gBattleBankFunc\n\ + .word debug_sub_803107C+1\n\ +._343:\n\ + add r1, sp, #0x8\n\ + add r0, r1, #0\n\ + ldrh r0, [r0]\n\ + sub r0, r0, #0x9\n\ + strh r0, [r1]\n\ +._287:\n\ + add r1, sp, #0x8\n\ + add r0, r1, #0\n\ + ldrh r0, [r0]\n\ + sub r0, r0, #0x1\n\ + strh r0, [r1]\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + bgt ._347 @cond_branch\n\ + mov r2, #0xb1\n\ + lsl r2, r2, #0x1\n\ + add r0, r2, #0\n\ + strh r0, [r1]\n\ +._347:\n\ + ldr r1, ._349\n\ + ldr r4, ._349 + 4\n\ + ldrb r0, [r4]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r0, r0, r1\n\ + ldr r1, ._349 + 8\n\ + add r0, r0, r1\n\ + mov r1, #0xd\n\ + add r2, sp, #0x8\n\ + bl SetMonData\n\ + ldr r2, ._349 + 12\n\ + ldrb r1, [r4]\n\ + mov r0, #0x58\n\ + mul r0, r0, r1\n\ + add r0, r0, r2\n\ + add r1, sp, #0x8\n\ + ldrh r1, [r1]\n\ + strh r1, [r0, #0xc]\n\ + ldr r5, ._349 + 16\n\ + ldr r1, ._349 + 20\n\ + mov r0, #0x10\n\ + str r0, [sp]\n\ + mov r0, #0x38\n\ + str r0, [sp, #0x4]\n\ + add r0, r5, #0\n\ + mov r2, #0x1\n\ + mov r3, #0x37\n\ + bl Text_FillWindowRect\n\ + add r0, sp, #0x8\n\ + mov r2, #0x0\n\ + ldsh r1, [r0, r2]\n\ + mov r0, #0xd\n\ + mul r1, r1, r0\n\ + ldr r0, ._349 + 24\n\ + add r1, r1, r0\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0x1\n\ + mov r6, #0x37\n\ + str r6, [sp]\n\ + add r0, r5, #0\n\ + mov r3, #0x2\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r4, ._349 + 28\n\ + add r0, sp, #0x8\n\ + mov r2, #0x0\n\ + ldsh r1, [r0, r2]\n\ + add r0, r4, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x3\n\ + bl ConvertIntToDecimalStringN\n\ + mov r2, #0x88\n\ + lsl r2, r2, #0x1\n\ + str r6, [sp]\n\ + add r0, r5, #0\n\ + add r1, r4, #0\n\ + mov r3, #0xa\n\ + bl Text_InitWindowAndPrintText\n\ + b ._348\n\ +._350:\n\ + .align 2, 0\n\ +._349:\n\ + .word gBattlePartyID\n\ + .word gActiveBank\n\ + .word gPlayerParty\n\ + .word gBattleMons\n\ + .word gUnknown_03004210\n\ + .word 0x1016\n\ + .word gMoveNames\n\ + .word gDisplayedStringBattle\n\ +._302:\n\ + ldr r0, ._353\n\ + ldrh r0, [r0, #0x30]\n\ + cmp r0, #0x40\n\ + bne ._351 @cond_branch\n\ + ldr r1, ._353 + 4\n\ + ldrb r0, [r1]\n\ + sub r0, r0, #0x1\n\ + b ._352\n\ +._354:\n\ + .align 2, 0\n\ +._353:\n\ + .word gMain\n\ + .word gAnimMoveTurn\n\ +._351:\n\ + ldr r1, ._359\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ +._352:\n\ + strb r0, [r1]\n\ + ldr r4, ._359 + 4\n\ + ldrb r1, [r1]\n\ + add r0, r4, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x3\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r0, ._359 + 8\n\ + mov r2, #0x8e\n\ + lsl r2, r2, #0x1\n\ + mov r1, #0x39\n\ + str r1, [sp]\n\ + add r1, r4, #0\n\ + mov r3, #0x4\n\ + bl Text_InitWindowAndPrintText\n\ +._348:\n\ + ldr r0, ._359 + 12\n\ + ldrh r2, [r0, #0x28]\n\ + mov r1, #0xc0\n\ + lsl r1, r1, #0x2\n\ + add r0, r1, #0\n\ + and r0, r0, r2\n\ + cmp r0, r1\n\ + bne ._355 @cond_branch\n\ + mov r4, #0x0\n\ + ldr r5, ._359 + 4\n\ + ldr r6, ._359 + 8\n\ +._361:\n\ + add r0, r5, #0\n\ + ldr r1, ._359 + 16\n\ + bl StringCopy\n\ + ldr r1, ._359 + 20\n\ + ldr r0, ._359 + 24\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x1\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + mov r0, #0x64\n\ + mul r0, r0, r1\n\ + ldr r1, ._359 + 28\n\ + add r0, r0, r1\n\ + add r1, r4, #0\n\ + add r1, r1, #0xd\n\ + bl GetMonData\n\ + mov r1, #0xd\n\ + mul r1, r1, r0\n\ + ldr r0, ._359 + 32\n\ + add r1, r1, r0\n\ + add r0, r5, #0\n\ + bl StringAppend\n\ + lsl r0, r4, #0x14\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x11\n\ + add r0, r0, r1\n\ + lsr r2, r0, #0x10\n\ + mov r0, #0x1\n\ + and r0, r0, r4\n\ + mov r3, #0x2\n\ + cmp r0, #0\n\ + beq ._356 @cond_branch\n\ + mov r3, #0xa\n\ +._356:\n\ + cmp r4, #0x1\n\ + bhi ._357 @cond_branch\n\ + mov r0, #0x37\n\ + b ._358\n\ +._360:\n\ + .align 2, 0\n\ +._359:\n\ + .word gAnimMoveTurn\n\ + .word gDisplayedStringBattle\n\ + .word gUnknown_03004210\n\ + .word gMain\n\ + .word BattleText_Format\n\ + .word gBattlePartyID\n\ + .word gActiveBank\n\ + .word gPlayerParty\n\ + .word gMoveNames\n\ +._357:\n\ + mov r0, #0x39\n\ +._358:\n\ + str r0, [sp]\n\ + add r0, r6, #0\n\ + add r1, r5, #0\n\ + bl Text_InitWindow\n\ + ldr r0, ._362\n\ + bl Text_PrintWindow8002F44\n\ + add r0, r4, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0x3\n\ + bls ._361 @cond_branch\n\ + ldr r1, ._362 + 4\n\ + ldr r0, ._362 + 8\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._362 + 12\n\ + str r1, [r0]\n\ +._355:\n\ + add sp, sp, #0xc\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._363:\n\ + .align 2, 0\n\ +._362:\n\ + .word gUnknown_03004210\n\ + .word gBattleBankFunc\n\ + .word gActiveBank\n\ + .word sub_802C68C+1"); +} + +__attribute__((naked)) +void debug_sub_803107C(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + add sp, sp, #0xfffffffc\n\ + mov r7, #0x0\n\ + ldr r0, ._369\n\ + ldr r0, [r0]\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + ldr r0, ._369 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._364 @cond_branch\n\ + mov r0, #0x1\n\ + bl sub_80326EC\n\ + ldr r4, ._369 + 8\n\ + ldrb r0, [r4]\n\ + mov r1, #0x1\n\ + mov r2, #0x7\n\ + mov r3, #0x1\n\ + bl dp11b_obj_instanciate\n\ + ldrb r0, [r4]\n\ + mov r1, #0x0\n\ + mov r2, #0x7\n\ + mov r3, #0x1\n\ + bl dp11b_obj_instanciate\n\ + ldr r0, ._369 + 12\n\ + add r2, r0, #0\n\ + add r2, r2, #0x3e\n\ + mov r1, #0x3f\n\ +._366:\n\ + ldrb r0, [r2]\n\ + lsl r0, r0, #0x1f\n\ + cmp r0, #0\n\ + beq ._365 @cond_branch\n\ + add r0, r7, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ +._365:\n\ + add r2, r2, #0x44\n\ + sub r1, r1, #0x1\n\ + cmp r1, #0\n\ + bge ._366 @cond_branch\n\ + ldr r4, ._369 + 16\n\ + add r0, r4, #0\n\ + add r1, r7, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x2\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r6, ._369 + 20\n\ + mov r2, #0x91\n\ + lsl r2, r2, #0x1\n\ + mov r5, #0x39\n\ + str r5, [sp]\n\ + add r0, r6, #0\n\ + add r1, r4, #0\n\ + mov r3, #0x8\n\ + bl Text_InitWindowAndPrintText\n\ + bl GetTaskCount\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + add r0, r4, #0\n\ + add r1, r7, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x2\n\ + bl ConvertIntToDecimalStringN\n\ + mov r2, #0x93\n\ + lsl r2, r2, #0x1\n\ + str r5, [sp]\n\ + add r0, r6, #0\n\ + add r1, r4, #0\n\ + mov r3, #0xb\n\ + bl Text_InitWindowAndPrintText\n\ + mov r1, #0x0\n\ + mov r7, #0x0\n\ + ldr r0, ._369 + 24\n\ + mov r3, #0x1\n\ + ldr r2, [r0]\n\ +._368:\n\ + add r0, r3, #0\n\ + LSL r0, r1\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + beq ._367 @cond_branch\n\ + add r0, r7, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ +._367:\n\ + add r1, r1, #0x1\n\ + cmp r1, #0x1f\n\ + ble ._368 @cond_branch\n\ + ldr r4, ._369 + 16\n\ + add r0, r4, #0\n\ + add r1, r7, #0\n\ + mov r2, #0x2\n\ + mov r3, #0x2\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r0, ._369 + 20\n\ + mov r2, #0x95\n\ + lsl r2, r2, #0x1\n\ + mov r1, #0x39\n\ + str r1, [sp]\n\ + add r1, r4, #0\n\ + mov r3, #0xe\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r1, ._369 + 28\n\ + ldr r0, ._369 + 8\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._369 + 32\n\ + str r1, [r0]\n\ +._364:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._370:\n\ + .align 2, 0\n\ +._369:\n\ + .word gAnimScriptCallback\n\ + .word gAnimScriptActive\n\ + .word gActiveBank\n\ + .word gSprites\n\ + .word gDisplayedStringBattle\n\ + .word gUnknown_03004210\n\ + .word gOamMatrixAllocBitmap\n\ + .word gBattleBankFunc\n\ + .word debug_sub_8030C24+1"); +} +#endif + void sub_802D204(void) { if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) -- cgit v1.2.3 From b8b4a11a032d7fb21ae14c5372a266509d2f918b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 18 Jan 2018 01:12:45 -0500 Subject: formatting --- src/battle/battle_anim.c | 2 +- src/engine/trade.c | 2 +- src/field/start_menu.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a4540868c..c71c12ce7 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2417,7 +2417,7 @@ static void LoadMoveBg(u16 bgId) { void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap; - LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + LZDecompressWram(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); DmaCopy32Defvars(3, IsContest() ? EWRAM_14800 : EWRAM_18000, (void *)(VRAM + 0xD000), 0x800); LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000)); diff --git a/src/engine/trade.c b/src/engine/trade.c index c271649c1..bc3daf249 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1462,7 +1462,7 @@ static void sub_8048B0C(u8 a0) gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i); gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i); } - DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); + DmaCopyLarge16(3, gUnknown_08EA0348, (void *)BG_VRAM, 0x1280, 0x1000); for (i = 0; i < 0x400; i ++) gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i]; DmaCopy16Defvars(3, gTradeStripesBG2Tilemap, BG_SCREEN_ADDR(6), 0x800); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index db41919be..89cd404e9 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -749,7 +749,7 @@ static bool32 sub_80719FC(u8 *step) ScanlineEffect_Stop(); DmaClear16(3, PLTT, PLTT_SIZE); DmaFill16Large(3, 0, (void *)(VRAM + 0x0), 0x18000, 0x1000); - break; + break; case 1: ResetSpriteData(); ResetTasks(); -- cgit v1.2.3 From ec84ae801985ac7f83397979bde6a15508eb02ed Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 18 Jan 2018 11:54:49 -0600 Subject: add more debug code --- src/battle/battle_controller_opponent.c | 548 ++++++++++++++++++++++++++++++++ src/engine/cable_club.c | 65 +++- src/field/party_menu.c | 492 +++++++++++++++++++++++++++- src/pokemon/pokemon_menu.c | 92 ++++++ src/scene/berry_blender.c | 21 +- 5 files changed, 1207 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 5947053b6..cc69c0120 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1209,6 +1209,243 @@ void sub_8034B74(void) } } +#if DEBUG +__attribute__((naked)) +void OpponentHandleTrainerThrow(void) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6}\n\ + ldr r0, ._480\n\ + ldrb r1, [r0]\n\ + mov r0, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._478 @cond_branch\n\ + ldr r0, ._480 + 4\n\ + ldr r1, ._480 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + b ._491\n\ +._481:\n\ + .align 2, 0\n\ +._480:\n\ + .word gUnknown_02023A14+0x50\n\ + .word +0x2000000\n\ + .word 0x160a3\n\ +._478:\n\ + ldr r3, ._484\n\ + ldrh r1, [r3]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x3\n\ + cmp r1, r0\n\ + bne ._482 @cond_branch\n\ + bl GetSecretBaseTrainerPicIndex\n\ + b ._487\n\ +._485:\n\ + .align 2, 0\n\ +._484:\n\ + .word gTrainerBattleOpponent\n\ +._482:\n\ + ldr r0, ._488\n\ + ldrh r1, [r0]\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._486 @cond_branch\n\ + bl get_trainer_class_pic_index\n\ + b ._487\n\ +._489:\n\ + .align 2, 0\n\ +._488:\n\ + .word gBattleTypeFlags\n\ +._486:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._490 @cond_branch\n\ + bl GetEReaderTrainerPicIndex\n\ +._487:\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + b ._491\n\ +._490:\n\ + ldr r2, ._492\n\ + ldrh r1, [r3]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r2\n\ + ldrb r0, [r0, #0x3]\n\ +._491:\n\ + mov r9, r0\n\ + ldr r2, ._492 + 4\n\ + mov r8, r2\n\ + ldrb r1, [r2]\n\ + bl sub_8031A6C\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + add r1, r0, #0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + mov r0, r9\n\ + bl GetMonSpriteTemplate_803C5A0\n\ + ldr r5, ._492 + 8\n\ + ldr r1, ._492 + 12\n\ + mov r2, r9\n\ + lsl r0, r2, #0x2\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r4, #0x8\n\ + sub r4, r4, r0\n\ + lsl r4, r4, #0x12\n\ + mov r0, #0xa0\n\ + lsl r0, r0, #0xe\n\ + add r4, r4, r0\n\ + asr r4, r4, #0x10\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + bl sub_8079E90\n\ + add r3, r0, #0\n\ + lsl r3, r3, #0x18\n\ + lsr r3, r3, #0x18\n\ + add r0, r5, #0\n\ + mov r1, #0xb0\n\ + add r2, r4, #0\n\ + bl CreateSprite\n\ + ldr r5, ._492 + 16\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + add r1, r1, r5\n\ + strb r0, [r1]\n\ + ldr r4, ._492 + 20\n\ + ldrb r0, [r2]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x4\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r4\n\ + ldr r1, ._492 + 24\n\ + strh r1, [r0, #0x24]\n\ + ldrb r0, [r2]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x4\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r4\n\ + mov r1, #0x2\n\ + strh r1, [r0, #0x2e]\n\ + ldr r0, ._492 + 28\n\ + mov r1, r9\n\ + lsl r6, r1, #0x3\n\ + add r0, r6, r0\n\ + ldrh r0, [r0, #0x4]\n\ + bl IndexOfSpritePaletteTag\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + add r1, r1, r5\n\ + ldrb r1, [r1]\n\ + lsl r2, r1, #0x4\n\ + add r2, r2, r1\n\ + lsl r2, r2, #0x2\n\ + add r2, r2, r4\n\ + lsl r0, r0, #0x4\n\ + ldrb r3, [r2, #0x5]\n\ + mov r1, #0xf\n\ + and r1, r1, r3\n\ + orr r1, r1, r0\n\ + strb r1, [r2, #0x5]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + add r0, r0, r5\n\ + ldrb r0, [r0]\n\ + lsl r1, r0, #0x4\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r4\n\ + ldrh r0, [r1, #0x4]\n\ + lsl r0, r0, #0x16\n\ + lsr r0, r0, #0x16\n\ + strh r0, [r1, #0x38]\n\ + ldr r0, ._492 + 32\n\ + add r6, r6, r0\n\ + ldrh r0, [r6, #0x6]\n\ + bl GetSpriteTileStartByTag\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + add r1, r1, r5\n\ + ldrb r2, [r1]\n\ + lsl r1, r2, #0x4\n\ + add r1, r1, r2\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r4\n\ + ldr r2, ._492 + 36\n\ + and r2, r2, r0\n\ + ldrh r3, [r1, #0x4]\n\ + ldr r0, ._492 + 40\n\ + and r0, r0, r3\n\ + orr r0, r0, r2\n\ + strh r0, [r1, #0x4]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x4\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r4\n\ + mov r2, r9\n\ + strh r2, [r0, #0x6]\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x4\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r4, r4, #0x1c\n\ + add r0, r0, r4\n\ + ldr r1, ._492 + 44\n\ + str r1, [r0]\n\ + ldr r1, ._492 + 48\n\ + mov r2, r8\n\ + ldrb r0, [r2]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r1, ._492 + 52\n\ + str r1, [r0]\n\ + pop {r3, r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._493:\n\ + .align 2, 0\n\ +._492:\n\ + .word gTrainers\n\ + .word gActiveBank\n\ + .word gUnknown_02024E8C\n\ + .word gTrainerFrontPicCoords\n\ + .word gObjectBankIDs\n\ + .word gSprites\n\ + .word 0xff10\n\ + .word gTrainerFrontPicPaletteTable\n\ + .word gTrainerFrontPicTable\n\ + .word 0x3ff\n\ + .word 0xfffffc00\n\ + .word sub_80313A0+1\n\ + .word gBattleBankFunc\n\ + .word sub_8032B4C+1"); +} +#else void OpponentHandleTrainerThrow(void) { u32 trainerPicIndex; @@ -1238,6 +1475,7 @@ void OpponentHandleTrainerThrow(void) gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8032B4C; } +#endif void OpponentHandleTrainerSlide(void) { @@ -1427,6 +1665,315 @@ void OpponentHandlecmd19(void) OpponentBufferExecCompleted(); } +#if DEBUG +__attribute__((naked)) +void OpponentHandlecmd20(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + ldr r6, ._549\n\ + ldrb r0, [r6]\n\ + lsl r0, r0, #0x9\n\ + ldr r1, ._549 + 4\n\ + add r5, r0, r1\n\ + ldr r2, ._549 + 8\n\ + ldrb r1, [r2]\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + mov sl, r6\n\ + cmp r0, #0\n\ + beq ._546 @cond_branch\n\ + ldr r0, ._549 + 12\n\ + mov r9, r0\n\ + ldr r1, ._549 + 16\n\ + mov ip, r1\n\ + add r7, r6, #0\n\ + mov r0, #0x2\n\ + mov r8, r0\n\ + ldr r6, ._549 + 20\n\ +._552:\n\ + ldrb r1, [r7]\n\ + mov r0, r8\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x19\n\ + add r0, r0, r6\n\ + mov r1, ip\n\ + add r3, r0, r1\n\ + ldrb r1, [r3]\n\ + lsl r0, r1, #0x1\n\ + add r0, r5, r0\n\ + ldrh r2, [r0]\n\ + add r4, r1, #0\n\ + cmp r2, #0\n\ + beq ._547 @cond_branch\n\ + add r0, r4, #1\n\ + strb r0, [r3]\n\ + b ._548\n\ +._550:\n\ + .align 2, 0\n\ +._549:\n\ + .word gActiveBank\n\ + .word gUnknown_02023A64\n\ + .word gUnknown_02023A14+0x50\n\ + .word gBattleMoves\n\ + .word +0x2000000\n\ + .word 0x1609e\n\ +._547:\n\ + strb r2, [r3]\n\ +._548:\n\ + ldrb r0, [r7]\n\ + mov r1, r8\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x19\n\ + add r1, r1, r6\n\ + add r1, r1, ip\n\ + ldrb r0, [r1]\n\ + cmp r0, #0x3\n\ + bls ._551 @cond_branch\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ +._551:\n\ + cmp r2, #0\n\ + beq ._552 @cond_branch\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r9\n\ + ldrb r3, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r3\n\ + cmp r0, #0\n\ + beq ._553 @cond_branch\n\ + mov r1, sl\n\ + ldrb r0, [r1]\n\ + b ._561\n\ +._553:\n\ + ldr r0, ._559\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._557 @cond_branch\n\ + ldr r0, ._559 + 4\n\ + ldrb r1, [r0]\n\ + mov r5, #0x2\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._556 @cond_branch\n\ + cmp r3, #0\n\ + bne ._557 @cond_branch\n\ + mov r1, sl\n\ + ldrb r0, [r1]\n\ + bl GetBankIdentity\n\ + mov r1, #0x2\n\ + eor r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + b ._558\n\ +._560:\n\ + .align 2, 0\n\ +._559:\n\ + .word gBattleTypeFlags\n\ + .word gUnknown_02023A14+0x50\n\ +._556:\n\ + bl Random\n\ + add r1, r5, #0\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x10\n\ + lsr r0, r1, #0x10\n\ + b ._561\n\ +._557:\n\ + mov r0, #0x0\n\ +._558:\n\ + bl GetBankByIdentity\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ +._561:\n\ + lsl r2, r0, #0x8\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ +._569:\n\ + bl Emitcmd33\n\ +._573:\n\ + bl OpponentBufferExecCompleted\n\ + b ._562\n\ +._546:\n\ + ldr r0, ._567\n\ + ldrh r1, [r0]\n\ + mov r0, #0x93\n\ + lsl r0, r0, #0x3\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._563 @cond_branch\n\ + bl BattleAI_SetupAIData\n\ + bl BattleAI_GetAIActionToUse\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0x4\n\ + beq ._564 @cond_branch\n\ + cmp r4, #0x5\n\ + bne ._565 @cond_branch\n\ + mov r0, #0x1\n\ + mov r1, #0x4\n\ + b ._566\n\ +._568:\n\ + .align 2, 0\n\ +._567:\n\ + .word gBattleTypeFlags\n\ +._564:\n\ + mov r0, #0x1\n\ + mov r1, #0x3\n\ +._566:\n\ + mov r2, #0x0\n\ + b ._569\n\ +._565:\n\ + ldr r3, ._574\n\ + lsl r0, r4, #0x1\n\ + add r2, r5, r0\n\ + ldrh r1, [r2]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._570 @cond_branch\n\ + ldr r1, ._574 + 4\n\ + ldrb r0, [r6]\n\ + strb r0, [r1]\n\ +._570:\n\ + ldrh r1, [r2]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r3\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._572 @cond_branch\n\ + mov r0, #0x0\n\ + bl GetBankByIdentity\n\ + ldr r5, ._574 + 4\n\ + strb r0, [r5]\n\ + ldr r0, ._574 + 8\n\ + ldrb r1, [r0]\n\ + ldr r2, ._574 + 12\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + and r1, r1, r0\n\ + cmp r1, #0\n\ + beq ._572 @cond_branch\n\ + mov r0, #0x2\n\ + bl GetBankByIdentity\n\ + strb r0, [r5]\n\ +._572:\n\ + ldr r0, ._574 + 4\n\ + ldrb r2, [r0]\n\ + lsl r2, r2, #0x8\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + b ._573\n\ +._575:\n\ + .align 2, 0\n\ +._574:\n\ + .word gBattleMoves\n\ + .word gBankTarget\n\ + .word gAbsentBankFlags\n\ + .word gBitTable\n\ +._563:\n\ + mov r6, #0x3\n\ +._576:\n\ + bl Random\n\ + add r4, r0, #0\n\ + and r4, r4, r6\n\ + lsl r0, r4, #0x1\n\ + add r0, r5, r0\n\ + ldrh r2, [r0]\n\ + cmp r2, #0\n\ + beq ._576 @cond_branch\n\ + ldr r1, ._579\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0, #0x6]\n\ + mov r0, #0x12\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._577 @cond_branch\n\ + ldr r0, ._579 + 4\n\ + ldrb r2, [r0]\n\ + lsl r2, r2, #0x8\n\ + b ._578\n\ +._580:\n\ + .align 2, 0\n\ +._579:\n\ + .word gBattleMoves\n\ + .word gActiveBank\n\ +._577:\n\ + ldr r0, ._583\n\ + ldrh r1, [r0]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._581 @cond_branch\n\ + bl Random\n\ + mov r1, #0x2\n\ + and r1, r1, r0\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + add r0, r1, #0\n\ + bl GetBankByIdentity\n\ + add r2, r0, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r2, r2, #0x10\n\ +._578:\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ + b ._582\n\ +._584:\n\ + .align 2, 0\n\ +._583:\n\ + .word gBattleTypeFlags\n\ +._581:\n\ + mov r0, #0x0\n\ + bl GetBankByIdentity\n\ + add r2, r0, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r2, r2, #0x10\n\ + orr r2, r2, r4\n\ + mov r0, #0x1\n\ + mov r1, #0xa\n\ + bl Emitcmd33\n\ +._582:\n\ + bl OpponentBufferExecCompleted\n\ +._562:\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0"); +} +#else #ifdef NONMATCHING void OpponentHandlecmd20(void) { @@ -1670,6 +2217,7 @@ _0803558A:\n\ .syntax divided\n"); } #endif +#endif void OpponentHandleOpenBag(void) { diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 4063aee3a..d40c31b1b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -41,7 +41,7 @@ extern struct u8 field1; } gUnknown_020297D8; -static void sub_8082F20(u8 taskId); +/*static*/ void sub_8082F20(u8 taskId); static void sub_8082F68(u8 taskId); static void sub_8082FEC(u8 taskId); static void sub_808303C(u8 taskId); @@ -414,6 +414,63 @@ void debug_sub_808A55C() } #endif +#if DEBUG +__attribute__((naked)) +static void sub_8082CD4(u8 arg0, u8 arg1) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + lsl r1, r1, #0x18\n\ + lsr r6, r1, #0x18\n\ + mov r0, #0xc\n\ + mov r1, #0x0\n\ + mov r2, #0x1f\n\ + mov r3, #0x2\n\ + bl InitLinkTestBG_Unused\n\ + ldr r4, ._40\n\ + add r0, r4, #0\n\ + bl FindTaskIdByFunc\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._39 @cond_branch\n\ + add r0, r4, #0\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + add r4, r0, #0\n\ + lsl r4, r4, #0x18\n\ + lsr r4, r4, #0x18\n\ + ldr r5, ._40 + 4\n\ + lsl r0, r4, #0x2\n\ + add r0, r0, r4\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r5\n\ + strh r7, [r0, #0xa]\n\ + strh r6, [r0, #0xc]\n\ + ldr r0, ._40 + 8\n\ + mov r1, #0x50\n\ + bl CreateTask\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + lsl r1, r0, #0x2\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r5\n\ + strh r4, [r1, #0x8]\n\ +._39:\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._41:\n\ + .align 2, 0\n\ +._40:\n\ + .word sub_8082F20+1\n\ + .word gTasks\n\ + .word debug_sub_808A55C+1"); +} +#else static void sub_8082CD4(u8 arg0, u8 arg1) { if (FindTaskIdByFunc(sub_8082F20) == 0xFF) @@ -424,6 +481,7 @@ static void sub_8082CD4(u8 arg0, u8 arg1) gTasks[taskId].data[2] = arg1; } } +#endif static void sub_8082D18(u32 value) { @@ -526,7 +584,7 @@ void unref_sub_8082EEC(u8 taskId) } } -static void sub_8082F20(u8 taskId) +/*static*/ void sub_8082F20(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -1316,6 +1374,7 @@ void unref_sub_8083CC8(u8 taskId) #if DEBUG +__attribute__((naked)) void debug_sub_808B82C() { asm("\ @@ -1329,6 +1388,7 @@ void debug_sub_808B82C() .word unk_2030220"); } +__attribute__((naked)) void debug_sub_808B838(u8 a) { asm("\ @@ -1347,6 +1407,7 @@ void debug_sub_808B838(u8 a) .word unk_2030220"); } +__attribute__((naked)) int debug_sub_808B850() { asm("\ diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 75c0cba78..e26b801bc 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -94,9 +94,9 @@ static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite); static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId); static void ItemUseMoveMenu_HandleCancel(u8 taskId); static bool8 SetupDefaultPartyMenu(void); -static void sub_806B4A8(void); -static void VBlankCB_PartyMenu(void); -static bool8 LoadPartyMenuGraphics(u8 a); +/*static*/ void sub_806B4A8(void); +/*static*/ void VBlankCB_PartyMenu(void); +/*static*/ bool8 LoadPartyMenuGraphics(u8 a); static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d); static void sub_806BB9C(u8 a); static void sub_806BBEC(u8 a); @@ -493,6 +493,71 @@ extern const u8 gStatusPal_Icons[]; #define WINDOW_RIGHT (29) #endif +#if DEBUG +__attribute__((naked)) +void CB2_PartyMenuMain(void) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + add sp, sp, #0xfffffffc\n\ + bl AnimateSprites\n\ + bl BuildOamBuffer\n\ + ldr r0, ._3\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x4\n\ + ldr r1, ._3 + 4\n\ + add r5, r0, r1\n\ + mov r6, #0x0\n\ +._1:\n\ + ldrb r0, [r5]\n\ + lsl r0, r0, #0x3\n\ + ldrb r1, [r5, #0x1]\n\ + lsl r1, r1, #0x3\n\ + ldr r2, [r5, #0x4]\n\ + lsl r3, r6, #0x5\n\ + mov r4, #0x80\n\ + lsl r4, r4, #0x2\n\ + orr r3, r3, r4\n\ + str r3, [sp]\n\ + mov r3, #0x0\n\ + bl DrawPartyMenuMonText\n\ + add r5, r5, #0x8\n\ + add r6, r6, #0x1\n\ + cmp r6, #0x5\n\ + ble ._1 @cond_branch\n\ + bl RunTasks\n\ + bl UpdatePaletteFade\n\ + ldr r0, ._3 + 8\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._2 @cond_branch\n\ + ldr r0, ._3 + 12\n\ + ldr r1, ._3 + 16\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x2\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x1\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._2:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._4:\n\ + .align 2, 0\n\ +._3:\n\ + .word gPartyMenuType\n\ + .word PartyMonTextSettings\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void CB2_PartyMenuMain(void) { const struct PartyMonTextSettingsStruct *textSettings; @@ -517,6 +582,7 @@ void CB2_PartyMenuMain(void) RunTasks(); UpdatePaletteFade(); } +#endif void VBlankCB_PartyMenu(void) { @@ -621,6 +687,425 @@ bool8 SetupDefaultPartyMenu(void) return FALSE; } +#if DEBUG +__attribute__((naked)) +bool8 InitPartyMenu(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + add sp, sp, #0xfffffff4\n\ + ldr r0, ._55\n\ + ldr r1, ._55 + 4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x11\n\ + bls ._53 @cond_branch\n\ + b ._125\n\ +._53:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._55 + 8\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._56:\n\ + .align 2, 0\n\ +._55:\n\ + .word gMain\n\ + .word 0x43c\n\ + .word ._57\n\ +._57:\n\ + .word ._58\n\ + .word ._59\n\ + .word ._60\n\ + .word ._61\n\ + .word ._62\n\ + .word ._63\n\ + .word ._64\n\ + .word ._65\n\ + .word ._66\n\ + .word ._67\n\ + .word ._68\n\ + .word ._69\n\ + .word ._70\n\ + .word ._71\n\ + .word ._72\n\ + .word ._73\n\ + .word ._74\n\ + .word ._75\n\ +._58:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + mov r3, #0xc0\n\ + lsl r3, r3, #0x13\n\ + mov r4, #0xc0\n\ + lsl r4, r4, #0x9\n\ + add r2, sp, #0x8\n\ + mov r8, r2\n\ + add r2, sp, #0x4\n\ + mov r6, #0x0\n\ + ldr r1, ._78\n\ + mov r5, #0x80\n\ + lsl r5, r5, #0x5\n\ + ldr r7, ._78 + 4\n\ + mov r0, #0x81\n\ + lsl r0, r0, #0x18\n\ + mov ip, r0\n\ +._76:\n\ + strh r6, [r2]\n\ + add r0, sp, #0x4\n\ + str r0, [r1]\n\ + str r3, [r1, #0x4]\n\ + str r7, [r1, #0x8]\n\ + ldr r0, [r1, #0x8]\n\ + add r3, r3, r5\n\ + sub r4, r4, r5\n\ + cmp r4, r5\n\ + bhi ._76 @cond_branch\n\ + strh r6, [r2]\n\ + add r2, sp, #0x4\n\ + str r2, [r1]\n\ + str r3, [r1, #0x4]\n\ + lsr r0, r4, #0x1\n\ + mov r3, ip\n\ + orr r0, r0, r3\n\ + str r0, [r1, #0x8]\n\ + ldr r0, [r1, #0x8]\n\ + mov r0, #0xe0\n\ + lsl r0, r0, #0x13\n\ + mov r3, #0x80\n\ + lsl r3, r3, #0x3\n\ + mov r4, #0x0\n\ + str r4, [sp, #0x8]\n\ + ldr r2, ._78\n\ + mov r1, r8\n\ + str r1, [r2]\n\ + str r0, [r2, #0x4]\n\ + lsr r0, r3, #0x2\n\ + mov r1, #0x85\n\ + lsl r1, r1, #0x18\n\ + orr r0, r0, r1\n\ + str r0, [r2, #0x8]\n\ + ldr r0, [r2, #0x8]\n\ + mov r1, #0xa0\n\ + lsl r1, r1, #0x13\n\ + add r0, sp, #0x4\n\ + strh r4, [r0]\n\ + str r0, [r2]\n\ + str r1, [r2, #0x4]\n\ + lsr r3, r3, #0x1\n\ + mov r0, #0x81\n\ + lsl r0, r0, #0x18\n\ + orr r3, r3, r0\n\ + str r3, [r2, #0x8]\n\ + ldr r0, [r2, #0x8]\n\ + ldr r2, ._78 + 8\n\ + ldrb r0, [r2, #0x8]\n\ + mov r1, #0x80\n\ + orr r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ + ldr r1, ._78 + 12\n\ + ldr r2, ._78 + 16\n\ + add r1, r1, r2\n\ + b ._122\n\ +._79:\n\ + .align 2, 0\n\ +._78:\n\ + .word 0x40000d4\n\ + .word 0x81000800\n\ + .word gPaletteFade\n\ + .word gMain\n\ + .word 0x43c\n\ +._59:\n\ + bl ScanlineEffect_Stop\n\ + b ._115\n\ +._60:\n\ + bl sub_806B4A8\n\ + ldr r1, ._82\n\ + mov r2, #0x99\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + mov r2, #0x0\n\ + strh r2, [r0]\n\ + ldr r3, ._82 + 4\n\ + add r0, r1, r3\n\ + strh r2, [r0]\n\ + mov r0, #0x9a\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + strh r2, [r1]\n\ + ldr r1, ._82 + 8\n\ + ldr r2, ._82 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._83:\n\ + .align 2, 0\n\ +._82:\n\ + .word +0x201b000\n\ + .word 0x266\n\ + .word gMain\n\ + .word 0x43c\n\ +._61:\n\ + bl ResetSpriteData\n\ + b ._115\n\ +._62:\n\ + ldr r0, ._88\n\ + mov r1, #0x96\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + beq ._86 @cond_branch\n\ + cmp r0, #0x5\n\ + beq ._86 @cond_branch\n\ + bl ResetTasks\n\ +._86:\n\ + ldr r1, ._88 + 4\n\ + ldr r2, ._88 + 8\n\ + add r1, r1, r2\n\ + b ._122\n\ +._89:\n\ + .align 2, 0\n\ +._88:\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._63:\n\ + bl FreeAllSpritePalettes\n\ + b ._115\n\ +._64:\n\ + ldr r4, ._92\n\ + mov r1, #0x97\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x0\n\ + bl CreateTask\n\ + mov r2, #0x98\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + strb r0, [r1]\n\ + b ._115\n\ +._93:\n\ + .align 2, 0\n\ +._92:\n\ + .word +0x201b000\n\ +._65:\n\ + ldr r0, ._95\n\ + bl Text_LoadWindowTemplate\n\ + ldr r1, ._95 + 4\n\ + ldr r0, ._95 + 8\n\ + add r1, r1, r0\n\ + b ._122\n\ +._96:\n\ + .align 2, 0\n\ +._95:\n\ + .word gWindowTemplate_81E6C90\n\ + .word gMain\n\ + .word 0x43c\n\ +._66:\n\ + ldr r4, ._98\n\ + ldr r1, ._98 + 4\n\ + add r0, r4, #0\n\ + bl Text_InitWindowWithTemplate\n\ + add r0, r4, #0\n\ + mov r1, #0x1\n\ + bl MultistepInitWindowTileData\n\ + ldr r1, ._98 + 8\n\ + ldr r2, ._98 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._99:\n\ + .align 2, 0\n\ +._98:\n\ + .word gUnknown_03004210\n\ + .word gWindowTemplate_81E6C90\n\ + .word gMain\n\ + .word 0x43c\n\ +._67:\n\ + bl MultistepLoadFont\n\ + cmp r0, #0\n\ + bne ._100 @cond_branch\n\ + b ._125\n\ +._100:\n\ + ldr r0, ._103\n\ + mov r3, #0x99\n\ + lsl r3, r3, #0x2\n\ + add r0, r0, r3\n\ + mov r1, #0x1\n\ + strh r1, [r0]\n\ + ldr r1, ._103 + 4\n\ + ldr r0, ._103 + 8\n\ + add r1, r1, r0\n\ + b ._122\n\ +._104:\n\ + .align 2, 0\n\ +._103:\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._68:\n\ + ldr r0, ._107\n\ + mov r1, #0x99\n\ + lsl r1, r1, #0x2\n\ + add r4, r0, r1\n\ + ldrb r0, [r4]\n\ + bl LoadPartyMenuGraphics\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._105 @cond_branch\n\ + mov r0, #0x0\n\ + strh r0, [r4]\n\ + ldr r1, ._107 + 4\n\ + ldr r2, ._107 + 8\n\ + add r1, r1, r2\n\ + b ._122\n\ +._108:\n\ + .align 2, 0\n\ +._107:\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._105:\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._125\n\ +._69:\n\ + bl sub_809D51C\n\ + b ._115\n\ +._70:\n\ + ldr r2, ._113\n\ + ldr r0, ._113 + 4\n\ + mov r1, #0x96\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x1\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + add r2, r2, #0x4\n\ + add r0, r0, r2\n\ + ldr r0, [r0]\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bne ._125 @cond_branch\n\ + ldr r1, ._113 + 8\n\ + ldr r2, ._113 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._114:\n\ + .align 2, 0\n\ +._113:\n\ + .word PartyMenuHandlers\n\ + .word +0x201b000\n\ + .word gMain\n\ + .word 0x43c\n\ +._71:\n\ + ldr r0, ._116\n\ + bl MultistepInitMenuWindowBegin\n\ + b ._115\n\ +._117:\n\ + .align 2, 0\n\ +._116:\n\ + .word gWindowTemplate_81E6CC8\n\ +._72:\n\ + bl MultistepInitMenuWindowContinue\n\ + cmp r0, #0\n\ + beq ._125 @cond_branch\n\ + ldr r1, ._120\n\ + ldr r0, ._120 + 4\n\ + add r1, r1, r0\n\ + b ._122\n\ +._121:\n\ + .align 2, 0\n\ +._120:\n\ + .word gMain\n\ + .word 0x43c\n\ +._73:\n\ + ldr r0, ._123\n\ + ldr r1, ._123 + 4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x0\n\ + bl PrintPartyMenuPromptText\n\ + ldr r1, ._123 + 8\n\ + ldr r2, ._123 + 12\n\ + add r1, r1, r2\n\ + b ._122\n\ +._124:\n\ + .align 2, 0\n\ +._123:\n\ + .word +0x201b000\n\ + .word 0x259\n\ + .word gMain\n\ + .word 0x43c\n\ +._74:\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r2, ._126\n\ + ldrb r1, [r2, #0x8]\n\ + mov r0, #0x7f\n\ + and r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ +._115:\n\ + ldr r1, ._126 + 4\n\ + ldr r3, ._126 + 8\n\ + add r1, r1, r3\n\ +._122:\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + b ._125\n\ +._127:\n\ + .align 2, 0\n\ +._126:\n\ + .word gPaletteFade\n\ + .word gMain\n\ + .word 0x43c\n\ +._75:\n\ + ldr r0, ._130\n\ + bl SetVBlankCallback\n\ + ldr r0, ._130 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._128 @cond_branch\n\ + ldr r0, ._130 + 8\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x8\n\ + ldr r2, ._130 + 12\n\ + mov r3, #0x2\n\ + bl debug_sub_8008218\n\ +._128:\n\ + mov r0, #0x1\n\ + b ._129\n\ +._131:\n\ + .align 2, 0\n\ +._130:\n\ + .word VBlankCB_PartyMenu+1\n\ + .word gLinkOpen\n\ + .word 0x600e5e0\n\ + .word 0x6007800\n\ +._125:\n\ + mov r0, #0x0\n\ +._129:\n\ + add sp, sp, #0xc\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4, r5, r6, r7}\n\ + pop {r1}\n\ + bx r1"); +} +#else bool8 InitPartyMenu(void) { u8 *addr; @@ -744,6 +1229,7 @@ bool8 InitPartyMenu(void) return FALSE; } +#endif void CB2_InitPartyMenu(void) { diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 2b3405640..34d816387 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -954,6 +954,97 @@ void debug_sub_80986AC() } #endif +#if DEBUG +__attribute__((naked)) +static void sub_808AE8C(void) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + ldr r0, ._281\n\ + ldrb r0, [r0]\n\ + sub r0, r0, #0x21\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + mov r5, #0x0\n\ +._287:\n\ + mov r0, #0x64\n\ + add r1, r5, #0\n\ + mul r1, r1, r0\n\ + ldr r0, ._281 + 4\n\ + add r4, r1, r0\n\ + add r0, r4, #0\n\ + mov r1, #0xb\n\ + bl GetMonData\n\ + cmp r0, #0\n\ + beq ._284 @cond_branch\n\ + add r0, r5, #0\n\ + bl sub_806D668\n\ + ldr r0, ._281 + 8\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._279 @cond_branch\n\ + add r0, r4, #0\n\ + mov r1, #0x2d\n\ + bl GetMonData\n\ + cmp r0, #0\n\ + bne ._278 @cond_branch\n\ + add r0, r4, #0\n\ + add r1, r6, #0\n\ + bl CanMonLearnTMHM\n\ + cmp r0, #0\n\ + bne ._279 @cond_branch\n\ +._278:\n\ + add r0, r5, #0\n\ + mov r1, #0x9a\n\ + bl sub_806BC3C\n\ + b ._284\n\ +._282:\n\ + .align 2, 0\n\ +._281:\n\ + .word gSpecialVar_ItemId\n\ + .word gPlayerParty\n\ + .word gUnknown_020297ED\n\ +._279:\n\ + mov r0, #0x64\n\ + add r4, r5, #0\n\ + mul r4, r4, r0\n\ + ldr r0, ._285\n\ + add r4, r4, r0\n\ + ldr r0, ._285 + 4\n\ + ldrh r0, [r0]\n\ + bl ItemIdToBattleMoveId\n\ + add r1, r0, #0\n\ + lsl r1, r1, #0x10\n\ + lsr r1, r1, #0x10\n\ + add r0, r4, #0\n\ + bl pokemon_has_move\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._283 @cond_branch\n\ + add r0, r5, #0\n\ + mov r1, #0xa8\n\ + bl sub_806BC3C\n\ + b ._284\n\ +._286:\n\ + .align 2, 0\n\ +._285:\n\ + .word gPlayerParty\n\ + .word gSpecialVar_ItemId\n\ +._283:\n\ + add r0, r5, #0\n\ + mov r1, #0x8c\n\ + bl sub_806BC3C\n\ +._284:\n\ + add r0, r5, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + cmp r5, #0x5\n\ + bls ._287 @cond_branch\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0"); +} +#else static void sub_808AE8C(void) { u8 i; @@ -972,6 +1063,7 @@ static void sub_808AE8C(void) } } } +#endif static void sub_808AF20(void) { diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index b59d02939..a93313e37 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -278,8 +278,8 @@ static bool8 Blender_PrintBlendingResults(void); static void sub_80510E8(void); static void sub_8050E30(void); static void sub_805197C(u16 a0, u16 a1); -static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); -static void sub_8052BD0(u8 taskID); +/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst); +/*static*/ void sub_8052BD0(u8 taskID); static void sub_8052AF8(void); static void sub_804F8C8(u8 taskID); static void sub_804F9F4(u8 taskID); @@ -2446,7 +2446,7 @@ static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4); } -static void sub_8050760(void) +/*static*/ void sub_8050760(void) { u32 frames = (u16)(gBerryBlenderData->gameFrameTime); u16 max_RPM = gBerryBlenderData->max_RPM; @@ -3305,12 +3305,20 @@ static void sub_8051C04(struct Sprite* sprite) sprite->pos2.y = -(gBerryBlenderData->field_146); } -static void Blender_TrySettingRecord(void) +/*static*/ void Blender_TrySettingRecord(void) { if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM) gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; } +#if DEBUG +__attribute__((naked)) +static bool8 Blender_PrintBlendingResults(void) +{ + // TODO: disassemble this! + asm(".incbin \"baserom_de_debug.gba\", 0x56178, 0x5655C-0x56178"); +} +#else static bool8 Blender_PrintBlendingResults(void) { u16 i; @@ -3445,8 +3453,9 @@ static bool8 Blender_PrintBlendingResults(void) } return FALSE; } +#endif -static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) +/*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) { u8 text[12]; u8 flavourLvl, feel; @@ -3869,7 +3878,7 @@ void ShowBerryBlenderRecordWindow(void) } } -static void sub_8052BD0(u8 taskID) +/*static*/ void sub_8052BD0(u8 taskID) { if (gTasks[taskID].data[0] == 0) { -- cgit v1.2.3 From 2ca829a4abda20bb1b053f50a9f1c9b6c8e93223 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 18 Jan 2018 13:06:47 -0600 Subject: add more debug code --- src/contest.c | 840 ++++++ src/field/bike.c | 15 +- src/field/secret_base.c | 173 ++ src/field/shop.c | 21 + src/pokemon/pokemon_summary_screen.c | 552 +++- src/pokenav_before.c | 5192 +++++++++++++++++++++++++++++++++- 6 files changed, 6769 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 972c19c2c..d559ca81f 100644 --- a/src/contest.c +++ b/src/contest.c @@ -611,6 +611,35 @@ void sub_80AB9A0(u8 taskId) } } +#if DEBUG +__attribute__((naked)) +void ContestMainCallback2(void) +{ + asm("\ + push {lr}\n\ + ldr r0, ._122\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._121 @cond_branch\n\ + ldr r0, ._122 + 4\n\ + ldrh r0, [r0, #0x2e]\n\ + cmp r0, #0x4\n\ + bne ._121 @cond_branch\n\ + bl unref_sub_80B0CF4\n\ +._121:\n\ + bl AnimateSprites\n\ + bl RunTasks\n\ + bl BuildOamBuffer\n\ + bl UpdatePaletteFade\n\ + pop {r0}\n\ + bx r0\n\ +._123:\n\ + .align 2, 0\n\ +._122:\n\ + .word gUnknown_020297ED\n\ + .word gMain"); +} +#else void ContestMainCallback2(void) { AnimateSprites(); @@ -618,6 +647,7 @@ void ContestMainCallback2(void) BuildOamBuffer(); UpdatePaletteFade(); } +#endif void ContestVBlankCallback(void) { @@ -733,6 +763,272 @@ void sub_80ABCDC(u8 taskId) } // Handle move selection input +#if DEBUG +__attribute__((naked)) +void sub_80ABEA0(u8 taskId) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + add sp, sp, #0xfffffff8\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + mov r6, #0x0\n\ + ldr r0, ._161\n\ + mov ip, r0\n\ + ldr r4, ._161 + 4\n\ + ldr r3, ._161 + 8\n\ + ldrb r0, [r4]\n\ + lsl r0, r0, #0x6\n\ + mov r1, ip\n\ + add r1, r1, #0x1e\n\ + add r1, r0, r1\n\ + mov r2, #0x3\n\ +._158:\n\ + ldrh r0, [r1]\n\ + cmp r0, #0\n\ + beq ._157 @cond_branch\n\ + add r0, r6, #1\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ +._157:\n\ + add r1, r1, #0x2\n\ + sub r2, r2, #0x1\n\ + cmp r2, #0\n\ + bge ._158 @cond_branch\n\ + ldrh r0, [r3, #0x2e]\n\ + mov r5, #0x1\n\ + and r5, r5, r0\n\ + cmp r5, #0\n\ + beq ._159 @cond_branch\n\ + bl DestroyMenuCursor\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._161 + 12\n\ + lsl r1, r7, #0x2\n\ + add r1, r1, r7\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r0\n\ + ldr r0, ._161 + 16\n\ + b ._160\n\ +._162:\n\ + .align 2, 0\n\ +._161:\n\ + .word gContestMons\n\ + .word gContestPlayerMonIndex\n\ + .word gMain\n\ + .word gTasks\n\ + .word sub_80AC0C8+1\n\ +._159:\n\ + ldrh r0, [r3, #0x30]\n\ + cmp r0, #0x10\n\ + bne ._163 @cond_branch\n\ + b ._196\n\ +._163:\n\ + cmp r0, #0x10\n\ + bgt ._165 @cond_branch\n\ + cmp r0, #0x2\n\ + beq ._166 @cond_branch\n\ + cmp r0, #0x8\n\ + bne ._167 @cond_branch\n\ + b ._168\n\ +._167:\n\ + b ._196\n\ +._165:\n\ + cmp r0, #0x40\n\ + beq ._170 @cond_branch\n\ + cmp r0, #0x40\n\ + bgt ._171 @cond_branch\n\ + b ._196\n\ +._171:\n\ + cmp r0, #0x80\n\ + beq ._173 @cond_branch\n\ + b ._196\n\ +._166:\n\ + bl sub_814A904\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0x0\n\ + bl sub_80AFFE0\n\ + ldr r0, ._177\n\ + ldr r1, ._177 + 4\n\ + ldrb r2, [r1]\n\ + ldrb r3, [r1, #0x1]\n\ + ldrb r4, [r1, #0x2]\n\ + str r4, [sp]\n\ + ldrb r1, [r1, #0x3]\n\ + str r1, [sp, #0x4]\n\ + mov r1, #0x0\n\ + bl Text_FillWindowRectDefPalette\n\ + ldr r0, ._177 + 8\n\ + ldrb r0, [r0]\n\ + bl Contest_IsMonsTurnDisabled\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._175 @cond_branch\n\ + ldr r0, ._177 + 12\n\ + ldr r1, ._177 + 16\n\ + bl StringCopy\n\ + b ._176\n\ +._178:\n\ + .align 2, 0\n\ +._177:\n\ + .word gUnknown_03004210\n\ + .word gUnknown_083CA340\n\ + .word gContestPlayerMonIndex\n\ + .word gDisplayedStringBattle\n\ + .word gText_Contest_WhichMoveWillBePlayed\n\ +._175:\n\ + ldr r0, ._180\n\ + ldr r1, ._180 + 4\n\ + bl StringCopy\n\ +._176:\n\ + ldr r5, ._180\n\ + ldr r0, ._180 + 8\n\ + ldrb r1, [r0, #0x1]\n\ + add r1, r1, #0x1\n\ + add r0, r5, #0\n\ + bl InsertStringDigit\n\ + bl sub_80AF138\n\ + ldr r4, ._180 + 12\n\ + add r0, r4, #0\n\ + add r1, r5, #0\n\ + bl StringExpandPlaceholders\n\ + ldr r0, ._180 + 16\n\ + mov r2, #0xc2\n\ + lsl r2, r2, #0x2\n\ + mov r1, #0xf\n\ + str r1, [sp]\n\ + add r1, r4, #0\n\ + mov r3, #0x1\n\ + bl Text_InitWindowAndPrintText\n\ + ldr r0, ._180 + 20\n\ + mov r1, #0x0\n\ + strh r1, [r0]\n\ + ldr r0, ._180 + 24\n\ + strh r1, [r0]\n\ + ldr r1, ._180 + 28\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r1\n\ + ldr r1, ._180 + 32\n\ + str r1, [r0]\n\ + b ._196\n\ +._181:\n\ + .align 2, 0\n\ +._180:\n\ + .word gDisplayedStringBattle\n\ + .word gText_Contest_ButItCantParticipate\n\ + .word +0x2019204\n\ + .word gStringVar4\n\ + .word gMenuWindow\n\ + .word gBattle_BG0_Y\n\ + .word gBattle_BG2_Y\n\ + .word gTasks\n\ + .word sub_80ABC70+1\n\ +._170:\n\ + ldr r4, ._184\n\ + mov r0, #0x0\n\ + ldsb r0, [r4, r0]\n\ + bl nullsub_17\n\ + ldrb r0, [r4]\n\ + cmp r0, #0\n\ + bne ._182 @cond_branch\n\ + sub r0, r6, #1\n\ + b ._186\n\ +._185:\n\ + .align 2, 0\n\ +._184:\n\ + .word +0x2019204\n\ +._182:\n\ + sub r0, r0, #0x1\n\ + b ._186\n\ +._173:\n\ + ldr r4, ._189\n\ + mov r0, #0x0\n\ + ldsb r0, [r4, r0]\n\ + bl nullsub_17\n\ + ldrb r1, [r4]\n\ + sub r0, r6, #1\n\ + cmp r1, r0\n\ + bne ._187 @cond_branch\n\ + strb r5, [r4]\n\ + b ._188\n\ +._190:\n\ + .align 2, 0\n\ +._189:\n\ + .word +0x2019204\n\ +._187:\n\ + add r0, r1, #1\n\ +._186:\n\ + strb r0, [r4]\n\ +._188:\n\ + ldr r4, ._193\n\ + mov r0, #0x0\n\ + ldsb r0, [r4, r0]\n\ + bl sub_80AC0AC\n\ + bl sub_80AED58\n\ + ldr r2, ._193 + 4\n\ + ldrb r1, [r4]\n\ + lsl r1, r1, #0x1\n\ + ldr r0, ._193 + 8\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x6\n\ + add r1, r1, r0\n\ + add r2, r2, #0x1e\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + bl sub_80AEBEC\n\ + cmp r6, #0x1\n\ + bls ._196 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + b ._196\n\ +._194:\n\ + .align 2, 0\n\ +._193:\n\ + .word +0x2019204\n\ + .word gContestMons\n\ + .word gContestPlayerMonIndex\n\ +._168:\n\ + ldr r0, ._197\n\ + ldrb r1, [r0]\n\ + cmp r1, #0x1\n\ + bne ._196 @cond_branch\n\ + ldr r0, ._197 + 4\n\ + ldrb r0, [r0]\n\ + add r2, r0, #0\n\ + and r2, r2, r1\n\ + cmp r2, #0\n\ + bne ._196 @cond_branch\n\ + ldr r0, ._197 + 8\n\ + lsl r1, r7, #0x2\n\ + add r1, r1, r7\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r0\n\ + strh r2, [r1, #0x8]\n\ + ldrb r0, [r4]\n\ + lsl r0, r0, #0x6\n\ + add r0, r0, ip\n\ + ldrh r0, [r0, #0x1e]\n\ + strh r0, [r1, #0xa]\n\ + ldr r0, ._197 + 12\n\ +._160:\n\ + str r0, [r1]\n\ +._196:\n\ + add sp, sp, #0x8\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._198:\n\ + .align 2, 0\n\ +._197:\n\ + .word gUnknown_020297ED\n\ + .word gIsLinkContest\n\ + .word gTasks\n\ + .word debug_sub_80B9EBC+1"); +} +#else void sub_80ABEA0(u8 taskId) { u8 numMoves = 0; @@ -807,6 +1103,550 @@ void sub_80ABEA0(u8 taskId) } } } +#endif + +#if DEBUG +__attribute__((naked)) +void debug_sub_80B9EBC() +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + add sp, sp, #0xffffff94\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + ldr r1, ._202\n\ + lsl r0, r4, #0x2\n\ + add r0, r0, r4\n\ + lsl r0, r0, #0x3\n\ + add r7, r0, r1\n\ + mov r0, #0x8\n\ + ldsh r2, [r7, r0]\n\ + cmp r2, #0\n\ + beq ._199 @cond_branch\n\ + cmp r2, #0x1\n\ + beq ._200 @cond_branch\n\ + b ._229\n\ +._203:\n\ + .align 2, 0\n\ +._202:\n\ + .word gTasks\n\ +._199:\n\ + ldr r5, ._205\n\ + ldr r4, ._205 + 4\n\ + ldrb r0, [r4]\n\ + mov r8, r0\n\ + ldrb r6, [r4, #0x1]\n\ + ldrb r0, [r4, #0x2]\n\ + str r0, [sp]\n\ + ldrb r0, [r4, #0x3]\n\ + str r0, [sp, #0x4]\n\ + add r0, r5, #0\n\ + mov r1, #0x0\n\ + mov r2, r8\n\ + add r3, r6, #0\n\ + bl Text_FillWindowRectDefPalette\n\ + mov r0, #0xa\n\ + ldsh r1, [r7, r0]\n\ + mov r0, #0xd\n\ + mul r1, r1, r0\n\ + ldr r0, ._205 + 8\n\ + add r1, r1, r0\n\ + mov r2, #0xc2\n\ + lsl r2, r2, #0x2\n\ + str r6, [sp]\n\ + add r0, r5, #0\n\ + mov r3, r8\n\ + bl Text_InitWindowAndPrintText\n\ + mov r0, #0xa\n\ + ldsh r1, [r7, r0]\n\ + add r0, sp, #0x8\n\ + mov r2, #0x2\n\ + mov r3, #0x3\n\ + bl ConvertIntToDecimalStringN\n\ + mov r2, #0xc7\n\ + lsl r2, r2, #0x2\n\ + ldrb r3, [r4, #0x4]\n\ + ldrb r0, [r4, #0x5]\n\ + str r0, [sp]\n\ + add r0, r5, #0\n\ + add r1, sp, #0x8\n\ + bl Text_InitWindowAndPrintText\n\ + bl sub_80AED58\n\ + ldrh r0, [r7, #0xa]\n\ + bl sub_80AEBEC\n\ + ldrh r0, [r7, #0x8]\n\ + add r0, r0, #0x1\n\ + strh r0, [r7, #0x8]\n\ + b ._229\n\ +._206:\n\ + .align 2, 0\n\ +._205:\n\ + .word gUnknown_03004210\n\ + .word gUnknown_083CA340\n\ + .word gMoveNames\n\ +._200:\n\ + ldr r0, ._213\n\ + ldrh r1, [r0, #0x30]\n\ + cmp r1, #0x10\n\ + beq ._207 @cond_branch\n\ + cmp r1, #0x10\n\ + bgt ._208 @cond_branch\n\ + cmp r1, #0x4\n\ + beq ._215 @cond_branch\n\ + cmp r1, #0x4\n\ + bgt ._210 @cond_branch\n\ + cmp r1, #0x2\n\ + beq ._211 @cond_branch\n\ + b ._229\n\ +._214:\n\ + .align 2, 0\n\ +._213:\n\ + .word gMain\n\ +._210:\n\ + cmp r1, #0x8\n\ + beq ._215 @cond_branch\n\ + b ._229\n\ +._208:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + cmp r1, r0\n\ + beq ._217 @cond_branch\n\ + cmp r1, r0\n\ + bgt ._218 @cond_branch\n\ + cmp r1, #0x20\n\ + beq ._219 @cond_branch\n\ + b ._229\n\ +._218:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x2\n\ + cmp r1, r0\n\ + beq ._221 @cond_branch\n\ + b ._229\n\ +._219:\n\ + ldrh r0, [r7, #0xa]\n\ + sub r0, r0, #0x1\n\ + b ._223\n\ +._221:\n\ + ldrh r0, [r7, #0xa]\n\ + sub r0, r0, #0xa\n\ +._223:\n\ + strh r0, [r7, #0xa]\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + bgt ._227 @cond_branch\n\ + mov r0, #0xb1\n\ + lsl r0, r0, #0x1\n\ + strh r0, [r7, #0xa]\n\ + b ._227\n\ +._207:\n\ + ldrh r0, [r7, #0xa]\n\ + add r0, r0, #0x1\n\ + b ._226\n\ +._217:\n\ + ldrh r0, [r7, #0xa]\n\ + add r0, r0, #0xa\n\ +._226:\n\ + strh r0, [r7, #0xa]\n\ + lsl r0, r0, #0x10\n\ + mov r1, #0xb1\n\ + lsl r1, r1, #0x11\n\ + cmp r0, r1\n\ + ble ._227 @cond_branch\n\ + strh r2, [r7, #0xa]\n\ +._227:\n\ + ldrh r0, [r7, #0x8]\n\ + sub r0, r0, #0x1\n\ + strh r0, [r7, #0x8]\n\ + b ._229\n\ +._215:\n\ + ldr r0, ._230\n\ + mov r1, #0x0\n\ + strh r1, [r0]\n\ + ldr r0, ._230 + 4\n\ + strh r1, [r0]\n\ + bl sub_80B1BDC\n\ + ldr r1, ._230 + 8\n\ + lsl r0, r4, #0x2\n\ + add r0, r0, r4\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r1\n\ + mov r1, #0x0\n\ + strh r1, [r0, #0x8]\n\ + ldr r1, ._230 + 12\n\ + str r1, [r0]\n\ + b ._229\n\ +._231:\n\ + .align 2, 0\n\ +._230:\n\ + .word gBattle_BG0_Y\n\ + .word gBattle_BG2_Y\n\ + .word gTasks\n\ + .word debug_sub_80BA054+1\n\ +._211:\n\ + ldr r0, ._232\n\ + mov r1, #0xa0\n\ + strh r1, [r0]\n\ + ldr r0, ._232 + 4\n\ + strh r1, [r0]\n\ + ldr r1, ._232 + 8\n\ + ldr r0, ._232 + 12\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x6\n\ + add r0, r0, r1\n\ + ldrh r2, [r7, #0xa]\n\ + mov r1, #0x0\n\ + strh r2, [r0, #0x1e]\n\ + strh r1, [r7, #0x8]\n\ + strh r1, [r7, #0xa]\n\ + strh r1, [r7, #0xc]\n\ + strh r1, [r7, #0xe]\n\ + ldr r0, ._232 + 16\n\ + str r0, [r7]\n\ +._229:\n\ + add sp, sp, #0x6c\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._233:\n\ + .align 2, 0\n\ +._232:\n\ + .word gBattle_BG0_Y\n\ + .word gBattle_BG2_Y\n\ + .word gContestMons\n\ + .word gContestPlayerMonIndex\n\ + .word sub_80ABCDC+1"); +} + +__attribute__((naked)) +void debug_sub_80BA054() +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6, r7}\n\ + lsl r0, r0, #0x18\n\ + lsr r7, r0, #0x18\n\ + ldr r1, ._236\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r1\n\ + mov r2, #0x8\n\ + ldsh r0, [r0, r2]\n\ + add r2, r1, #0\n\ + cmp r0, #0x14\n\ + bls ._234 @cond_branch\n\ + b ._286\n\ +._234:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._236 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._237:\n\ + .align 2, 0\n\ +._236:\n\ + .word gTasks\n\ + .word ._238\n\ +._238:\n\ + .word ._239\n\ + .word ._240\n\ + .word ._241\n\ + .word ._242\n\ + .word ._243\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._286\n\ + .word ._259\n\ +._239:\n\ + lsl r0, r7, #0x2\n\ + mov r8, r0\n\ + ldr r2, ._262\n\ + mov r9, r2\n\ + ldr r1, ._262 + 4\n\ + mov r2, #0x0\n\ + add r0, r1, #3\n\ +._260:\n\ + strb r2, [r0]\n\ + sub r0, r0, #0x1\n\ + cmp r0, r1\n\ + bge ._260 @cond_branch\n\ + mov r5, #0x0\n\ + mov r0, r9\n\ + mov r1, #0x0\n\ + mov r2, #0x14\n\ + bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + ldr r4, ._262 + 8\n\ + ldrb r0, [r4]\n\ + bl sub_80B28F0\n\ + ldr r3, ._262 + 12\n\ + ldrb r2, [r4]\n\ + lsl r2, r2, #0x6\n\ + add r0, r2, r3\n\ + ldrh r0, [r0]\n\ + add r1, r3, #0\n\ + add r1, r1, #0x3c\n\ + add r1, r2, r1\n\ + ldr r1, [r1]\n\ + add r3, r3, #0x38\n\ + add r2, r2, r3\n\ + ldr r2, [r2]\n\ + bl sub_80AE9FC\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + ldr r2, ._262 + 16\n\ + lsl r0, r6, #0x4\n\ + add r0, r0, r6\n\ + lsl r0, r0, #0x2\n\ + add r3, r0, r2\n\ + mov r4, #0x0\n\ + mov r1, #0x78\n\ + strh r1, [r3, #0x24]\n\ + add r2, r2, #0x1c\n\ + add r0, r0, r2\n\ + ldr r1, ._262 + 20\n\ + str r1, [r0]\n\ + ldr r0, ._262 + 24\n\ + mov r2, r8\n\ + add r1, r2, r7\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r0\n\ + strh r6, [r1, #0xc]\n\ + ldr r2, ._262 + 28\n\ + ldr r0, ._262 + 32\n\ + ldrb r0, [r0]\n\ + add r0, r0, r2\n\ + strb r6, [r0]\n\ + strh r5, [r1, #0xe]\n\ + ldrh r0, [r1, #0x8]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1, #0x8]\n\ + mov r0, r9\n\ + sub r0, r0, #0xea\n\ + strb r4, [r0]\n\ + b ._286\n\ +._263:\n\ + .align 2, 0\n\ +._262:\n\ + .word +0x2019348\n\ + .word gBattleMonForms\n\ + .word gContestPlayerMonIndex\n\ + .word gContestMons\n\ + .word gSprites\n\ + .word sub_80AD8FC+1\n\ + .word gTasks\n\ + .word gObjectBankIDs\n\ + .word gBankAttacker\n\ +._240:\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r7, r0, r2\n\ + ldrb r6, [r7, #0xc]\n\ + ldr r1, ._267\n\ + lsl r0, r6, #0x4\n\ + add r0, r0, r6\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, #0x1c\n\ + add r0, r0, r1\n\ + ldr r1, [r0]\n\ + ldr r0, ._267 + 4\n\ + cmp r1, r0\n\ + beq ._264 @cond_branch\n\ + b ._286\n\ +._264:\n\ + ldr r4, ._267 + 8\n\ + ldrb r1, [r4]\n\ + lsl r0, r1, #0x3\n\ + sub r0, r0, r1\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._267 + 12\n\ + add r0, r0, r1\n\ + ldrh r1, [r7, #0xa]\n\ + mov r5, #0x0\n\ + strh r1, [r0, #0x6]\n\ + ldrb r0, [r4]\n\ + bl sub_80B2790\n\ + ldrb r0, [r4]\n\ + bl sub_80B28F0\n\ + ldrh r0, [r7, #0xa]\n\ + bl SelectContestMoveBankTarget\n\ + ldrh r0, [r7, #0xa]\n\ + bl DoMoveAnim\n\ + strh r5, [r7, #0xe]\n\ + ldrh r0, [r7, #0x8]\n\ + add r0, r0, #0x1\n\ + strh r0, [r7, #0x8]\n\ + b ._286\n\ +._268:\n\ + .align 2, 0\n\ +._267:\n\ + .word gSprites\n\ + .word SpriteCallbackDummy+1\n\ + .word gContestPlayerMonIndex\n\ + .word +0x2019260\n\ +._241:\n\ + ldr r0, ._273\n\ + ldr r0, [r0]\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + ldr r0, ._273 + 4\n\ + ldrb r4, [r0]\n\ + cmp r4, #0\n\ + beq ._269 @cond_branch\n\ + b ._286\n\ +._269:\n\ + ldr r0, ._273 + 8\n\ + ldrb r0, [r0]\n\ + bl sub_80B28CC\n\ + ldr r0, ._273 + 12\n\ + add r0, r0, #0x5a\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._271 @cond_branch\n\ + ldr r0, ._273 + 16\n\ + lsl r1, r7, #0x2\n\ + add r1, r1, r7\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r0\n\ + strh r4, [r1, #0x1c]\n\ + mov r0, #0x14\n\ + strh r0, [r1, #0x8]\n\ + b ._286\n\ +._274:\n\ + .align 2, 0\n\ +._273:\n\ + .word gAnimScriptCallback\n\ + .word gAnimScriptActive\n\ + .word gContestPlayerMonIndex\n\ + .word +0x2019204\n\ + .word gTasks\n\ +._271:\n\ + ldr r0, ._276\n\ + lsl r1, r7, #0x2\n\ + add r1, r1, r7\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r0\n\ + ldrh r0, [r1, #0x8]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1, #0x8]\n\ + b ._286\n\ +._277:\n\ + .align 2, 0\n\ +._276:\n\ + .word gTasks\n\ +._242:\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r4, r0, r2\n\ + ldrh r0, [r4, #0xe]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4, #0xe]\n\ + lsl r0, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0x15\n\ + bne ._286 @cond_branch\n\ + ldrb r6, [r4, #0xc]\n\ + ldr r1, ._280\n\ + lsl r0, r6, #0x4\n\ + add r0, r0, r6\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, #0x1c\n\ + add r0, r0, r1\n\ + ldr r1, ._280 + 4\n\ + str r1, [r0]\n\ + bl sub_80B1B14\n\ + mov r0, #0x0\n\ + strh r0, [r4, #0xe]\n\ + ldrh r0, [r4, #0x8]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4, #0x8]\n\ + b ._286\n\ +._281:\n\ + .align 2, 0\n\ +._280:\n\ + .word gSprites\n\ + .word sub_80AD92C+1\n\ +._243:\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r5, r0, r2\n\ + ldrb r6, [r5, #0xc]\n\ + ldr r1, ._284\n\ + lsl r0, r6, #0x4\n\ + add r0, r0, r6\n\ + lsl r0, r0, #0x2\n\ + add r4, r0, r1\n\ + add r0, r4, #0\n\ + add r0, r0, #0x3e\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x1d\n\ + cmp r0, #0\n\ + bge ._286 @cond_branch\n\ + add r0, r4, #0\n\ + bl FreeSpriteOamMatrix\n\ + add r0, r4, #0\n\ + bl DestroySprite\n\ + mov r0, #0x0\n\ + strh r0, [r5, #0x8]\n\ + ldr r0, ._284 + 4\n\ + str r0, [r5]\n\ + ldr r0, ._284 + 8\n\ + mov r1, #0xa0\n\ + strh r1, [r0]\n\ + ldr r0, ._284 + 12\n\ + strh r1, [r0]\n\ + b ._286\n\ +._285:\n\ + .align 2, 0\n\ +._284:\n\ + .word gSprites\n\ + .word debug_sub_80B9EBC+1\n\ + .word gBattle_BG0_Y\n\ + .word gBattle_BG2_Y\n\ +._259:\n\ + lsl r0, r7, #0x2\n\ + add r0, r0, r7\n\ + lsl r0, r0, #0x3\n\ + add r2, r0, r2\n\ + ldrh r0, [r2, #0x1c]\n\ + add r1, r0, #1\n\ + strh r1, [r2, #0x1c]\n\ + lsl r0, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0x1e\n\ + ble ._286 @cond_branch\n\ + mov r0, #0x0\n\ + strh r0, [r2, #0x1c]\n\ + mov r0, #0x1\n\ + strh r0, [r2, #0x8]\n\ +._286:\n\ + pop {r3, r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0"); +} +#endif void sub_80AC0AC(s8 a) { diff --git a/src/field/bike.c b/src/field/bike.c index eb9d56a64..98966ebd4 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -131,14 +131,6 @@ static const struct BikeHistoryInputInfo gAcroBikeTricksList[] = void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) { -#if DEBUG - if (gUnknown_020297ED && debug_sub_805F2B0(direction)) - { - Bike_SetBikeStill(); - return; - } -#endif - if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE) MovePlayerOnMachBike(direction, newKeys, heldKeys); else @@ -147,6 +139,13 @@ void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys) { +#if DEBUG + if (gUnknown_020297ED && debug_sub_805F2B0(direction)) + { + Bike_SetBikeStill(); + return; + } +#endif sMachBikeTransitions[GetMachBikeTransition(&direction)](direction); } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 728decc9c..1bdc76b23 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1648,6 +1648,178 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases sub_80BD328(basesC, 0); } +#if DEBUG +__attribute__((naked)) +void sub_80BD674(void *playerRecords, u32 size, u8 c) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + add r6, r0, #0\n\ + add r5, r1, #0\n\ + lsl r2, r2, #0x18\n\ + lsr r7, r2, #0x18\n\ + ldr r0, ._503\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._498 @cond_branch\n\ + mov r0, #0x60\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._498 @cond_branch\n\ + b ._520\n\ +._498:\n\ + bl GetLinkPlayerCount\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x2\n\ + beq ._500 @cond_branch\n\ + cmp r0, #0x3\n\ + beq ._501 @cond_branch\n\ + b ._505\n\ +._504:\n\ + .align 2, 0\n\ +._503:\n\ + .word gUnknown_020297ED\n\ +._500:\n\ + lsl r4, r5, #0x1\n\ + add r0, r6, r4\n\ + mov r1, #0x0\n\ + add r2, r5, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + add r4, r4, r5\n\ + add r4, r6, r4\n\ + add r0, r4, #0\n\ + mov r1, #0x0\n\ + add r2, r5, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + b ._505\n\ +._501:\n\ + lsl r0, r5, #0x1\n\ + add r0, r0, r5\n\ + add r0, r6, r0\n\ + mov r1, #0x0\n\ + add r2, r5, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ +._505:\n\ + cmp r7, #0x1\n\ + beq ._506 @cond_branch\n\ + cmp r7, #0x1\n\ + bgt ._507 @cond_branch\n\ + cmp r7, #0\n\ + beq ._508 @cond_branch\n\ + b ._515\n\ +._507:\n\ + cmp r7, #0x2\n\ + beq ._510 @cond_branch\n\ + cmp r7, #0x3\n\ + beq ._511 @cond_branch\n\ + b ._515\n\ +._508:\n\ + add r0, r6, r5\n\ + lsl r2, r5, #0x1\n\ + add r1, r6, r2\n\ + add r2, r2, r5\n\ + add r2, r6, r2\n\ + bl sub_80BD610\n\ + b ._515\n\ +._506:\n\ + lsl r1, r5, #0x1\n\ + add r0, r6, r1\n\ + add r1, r1, r5\n\ + add r1, r6, r1\n\ + add r2, r6, #0\n\ + bl sub_80BD610\n\ + b ._515\n\ +._510:\n\ + lsl r0, r5, #0x1\n\ + add r0, r0, r5\n\ + add r0, r6, r0\n\ + add r2, r6, r5\n\ + add r1, r6, #0\n\ + bl sub_80BD610\n\ + b ._515\n\ +._511:\n\ + add r1, r6, r5\n\ + lsl r2, r5, #0x1\n\ + add r2, r6, r2\n\ + add r0, r6, #0\n\ + bl sub_80BD610\n\ +._515:\n\ + mov r3, #0x1\n\ + ldr r6, ._521\n\ + mov r5, #0x10\n\ + neg r5, r5\n\ + ldr r4, ._521 + 4\n\ +._517:\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x5\n\ + add r0, r0, r6\n\ + add r2, r0, r4\n\ + ldrb r1, [r2]\n\ + lsl r0, r1, #0x1c\n\ + lsr r0, r0, #0x1c\n\ + cmp r0, #0x1\n\ + bne ._516 @cond_branch\n\ + mov r0, #0x3f\n\ + and r0, r0, r1\n\ + mov r1, #0x40\n\ + orr r0, r0, r1\n\ + and r0, r0, r5\n\ + strb r0, [r2]\n\ +._516:\n\ + add r0, r3, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r3, r0, #0x10\n\ + cmp r3, #0x13\n\ + bls ._517 @cond_branch\n\ + bl sub_80BD280\n\ + mov r3, #0x1\n\ + ldr r4, ._521\n\ + ldr r6, ._521 + 4\n\ + add r7, r4, #0\n\ + mov r5, #0x3f\n\ +._519:\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x5\n\ + add r0, r0, r4\n\ + add r2, r0, r6\n\ + ldrb r1, [r2]\n\ + lsr r0, r1, #0x6\n\ + cmp r0, #0x2\n\ + bne ._518 @cond_branch\n\ + add r0, r5, #0\n\ + and r0, r0, r1\n\ + strb r0, [r2]\n\ +._518:\n\ + add r0, r3, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r3, r0, #0x10\n\ + cmp r3, #0x13\n\ + bls ._519 @cond_branch\n\ + ldr r0, ._521 + 8\n\ + add r2, r7, r0\n\ + ldrh r1, [r2]\n\ + ldr r0, ._521 + 12\n\ + cmp r1, r0\n\ + beq ._520 @cond_branch\n\ + add r0, r1, #1\n\ + strh r0, [r2]\n\ +._520:\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._522:\n\ + .align 2, 0\n\ +._521:\n\ + .word gSaveBlock1\n\ + .word 0x1a09\n\ + .word 0x1a16\n\ + .word 0xffff"); +} +#else void sub_80BD674(void *playerRecords, u32 size, u8 c) { if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) @@ -1706,3 +1878,4 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) } } } +#endif diff --git a/src/field/shop.c b/src/field/shop.c index 1dc6ba0cd..df271743d 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -1222,6 +1222,27 @@ void CreateDecorationShop2Menu(u16 *itemList) SetShopMenuCallback(EnableBothScriptContexts); } +#if DEBUG +__attribute__((naked)) +void debug_sub_80C2818(void) +{ + asm("\ + push {lr}\n\ + mov r0, #0x0\n\ + bl CreateShopMenu\n\ + ldr r0, ._290\n\ + bl SetShopItemsForSale\n\ + mov r0, #0x0\n\ + bl SetShopMenuCallback\n\ + pop {r0}\n\ + bx r0\n\ +._291:\n\ + .align 2, 0\n\ +._290:\n\ + .word gUnknown_083CC6EB+0x3"); +} +#endif + void sub_80B45B4(u8 taskId, const s16 *list, u16 c) { s16 r5 = gTasks[taskId].data[4] - 1; diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 0102b7526..8f7c8728d 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -41,11 +41,11 @@ static void sub_80A0090(struct Pokemon *); static void sub_80A015C(struct Pokemon *); static void sub_809DE44(void); static void sub_809EB40(u8); -static void sub_809EBC4(void); -static void sub_809E044(void); +/*static*/ void sub_809EBC4(void); +/*static*/ void sub_809E044(void); static void sub_80A1D84(struct Pokemon *); -static void sub_80A18C4(void); -static bool8 LoadPokemonSummaryScreenGraphics(void); +/*static*/ void sub_80A18C4(void); +/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void); static bool8 MonKnowsMultipleMoves(struct Pokemon *); static void PrintSummaryWindowHeaderText(void); static void sub_80A1DCC(struct Pokemon *); @@ -63,8 +63,8 @@ static void PrintHeldItemName(u16, u8, u8); static void PrintNumRibbons(struct Pokemon *); static void DrawExperienceProgressBar(struct Pokemon *, u8, u8); static void sub_809E13C(u8 taskId); -static void sub_80A1950(void); -static void sub_809DE64(void); +/*static*/ void sub_80A1950(void); +/*static*/ void sub_809DE64(void); static void SummaryScreenHandleAButton(u8); static void SummaryScreenHandleUpDownInput(u8, s8); static bool8 sub_809F7D0(u8); @@ -572,7 +572,43 @@ static const u8 sUnknown_083C15BC[] = { -1, 15, 0, 10, }; - +#if DEBUG +__attribute__((naked)) +void sub_809D844(void) +{ + asm("\ + push {lr}\n\ + add sp, sp, #0xfffffffc\n\ + bl RunTasks\n\ + bl AnimateSprites\n\ + bl BuildOamBuffer\n\ + bl UpdatePaletteFade\n\ + ldr r0, ._2\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1 @cond_branch\n\ + ldr r0, ._2 + 4\n\ + ldr r1, ._2 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x3\n\ + str r1, [sp]\n\ + mov r1, #0x14\n\ + mov r2, #0x1\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1:\n\ + add sp, sp, #0x4\n\ + pop {r0}\n\ + bx r0\n\ +._3:\n\ + .align 2, 0\n\ +._2:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void sub_809D844(void) { RunTasks(); @@ -580,6 +616,7 @@ void sub_809D844(void) BuildOamBuffer(); UpdatePaletteFade(); } +#endif void sub_809D85C(void) { @@ -689,6 +726,491 @@ void sub_809DA1C(void) } } +#if DEBUG +__attribute__((naked)) +bool8 sub_809DA84(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + add sp, sp, #0xfffffff8\n\ + ldr r1, ._52\n\ + ldr r2, ._52 + 4\n\ + add r0, r1, r2\n\ + ldrb r0, [r0]\n\ + mov ip, r1\n\ + cmp r0, #0x16\n\ + bls ._50 @cond_branch\n\ + b ._51\n\ +._50:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._52 + 8\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._53:\n\ + .align 2, 0\n\ +._52:\n\ + .word gMain\n\ + .word 0x43c\n\ + .word ._54\n\ +._54:\n\ + .word ._55\n\ + .word ._56\n\ + .word ._57\n\ + .word ._58\n\ + .word ._59\n\ + .word ._60\n\ + .word ._61\n\ + .word ._62\n\ + .word ._63\n\ + .word ._64\n\ + .word ._65\n\ + .word ._66\n\ + .word ._67\n\ + .word ._68\n\ + .word ._69\n\ + .word ._70\n\ + .word ._71\n\ + .word ._72\n\ + .word ._73\n\ + .word ._74\n\ + .word ._75\n\ + .word ._76\n\ + .word ._77\n\ +._55:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl ResetSpriteData\n\ + b ._146\n\ +._56:\n\ + bl ScanlineEffect_Stop\n\ + ldr r1, ._80\n\ + ldr r2, ._80 + 4\n\ + add r1, r1, r2\n\ + b ._153\n\ +._81:\n\ + .align 2, 0\n\ +._80:\n\ + .word gMain\n\ + .word 0x43c\n\ +._57:\n\ + bl FreeAllSpritePalettes\n\ + b ._146\n\ +._58:\n\ + mov r2, #0xc0\n\ + lsl r2, r2, #0x13\n\ + mov r3, #0x80\n\ + lsl r3, r3, #0x9\n\ + mov r5, #0x0\n\ + ldr r1, ._85\n\ + mov r4, #0x80\n\ + lsl r4, r4, #0x5\n\ + ldr r6, ._85 + 4\n\ + mov r7, #0x85\n\ + lsl r7, r7, #0x18\n\ +._83:\n\ + str r5, [sp, #0x4]\n\ + add r0, sp, #0x4\n\ + str r0, [r1]\n\ + str r2, [r1, #0x4]\n\ + str r6, [r1, #0x8]\n\ + ldr r0, [r1, #0x8]\n\ + add r2, r2, r4\n\ + sub r3, r3, r4\n\ + cmp r3, r4\n\ + bhi ._83 @cond_branch\n\ + str r5, [sp, #0x4]\n\ + add r0, sp, #0x4\n\ + str r0, [r1]\n\ + str r2, [r1, #0x4]\n\ + lsr r0, r3, #0x2\n\ + orr r0, r0, r7\n\ + str r0, [r1, #0x8]\n\ + ldr r0, [r1, #0x8]\n\ + ldr r1, ._85 + 8\n\ + add r1, r1, ip\n\ + b ._153\n\ +._86:\n\ + .align 2, 0\n\ +._85:\n\ + .word 0x40000d4\n\ + .word 0x85000400\n\ + .word 0x43c\n\ +._59:\n\ + bl sub_809DE64\n\ + ldr r1, ._88\n\ + ldr r2, ._88 + 4\n\ + add r1, r1, r2\n\ + b ._153\n\ +._89:\n\ + .align 2, 0\n\ +._88:\n\ + .word gMain\n\ + .word 0x43c\n\ +._60:\n\ + ldr r0, ._91\n\ + bl Text_LoadWindowTemplate\n\ + b ._146\n\ +._92:\n\ + .align 2, 0\n\ +._91:\n\ + .word gWindowTemplate_81E6E6C\n\ +._61:\n\ + ldr r0, ._94\n\ + bl MultistepInitMenuWindowBegin\n\ + ldr r1, ._94 + 4\n\ + ldr r2, ._94 + 8\n\ + add r1, r1, r2\n\ + b ._153\n\ +._95:\n\ + .align 2, 0\n\ +._94:\n\ + .word gWindowTemplate_81E6E6C\n\ + .word gMain\n\ + .word 0x43c\n\ +._62:\n\ + bl MultistepInitMenuWindowContinue\n\ + cmp r0, #0\n\ + bne ._96 @cond_branch\n\ + b ._157\n\ +._96:\n\ + b ._146\n\ +._63:\n\ + bl sub_809DA1C\n\ + ldr r1, ._100\n\ + ldr r2, ._100 + 4\n\ + add r1, r1, r2\n\ + b ._153\n\ +._101:\n\ + .align 2, 0\n\ +._100:\n\ + .word gMain\n\ + .word 0x43c\n\ +._64:\n\ + ldr r1, ._103\n\ + ldr r2, ._103 + 4\n\ + ldr r0, ._103 + 8\n\ + str r1, [r0]\n\ + str r2, [r0, #0x4]\n\ + ldr r1, ._103 + 12\n\ + str r1, [r0, #0x8]\n\ + ldr r1, [r0, #0x8]\n\ + ldr r1, ._103 + 16\n\ + ldr r2, ._103 + 20\n\ + str r1, [r0]\n\ + str r2, [r0, #0x4]\n\ + ldr r1, ._103 + 24\n\ + str r1, [r0, #0x8]\n\ + ldr r0, [r0, #0x8]\n\ + ldr r0, ._103 + 28\n\ + add r0, r0, #0x74\n\ + mov r1, #0x0\n\ + strb r1, [r0]\n\ + ldr r1, ._103 + 32\n\ + add r1, r1, ip\n\ + b ._153\n\ +._104:\n\ + .align 2, 0\n\ +._103:\n\ + .word gSummaryScreenTextTiles\n\ + .word 0x600d000\n\ + .word 0x40000d4\n\ + .word 0x800000a0\n\ + .word sSummaryScreenButtonTiles\n\ + .word 0x600d140\n\ + .word 0x80000080\n\ + .word +0x2018000\n\ + .word 0x43c\n\ +._65:\n\ + bl LoadPokemonSummaryScreenGraphics\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._105 @cond_branch\n\ + b ._157\n\ +._105:\n\ + ldr r0, ._108\n\ + add r0, r0, #0x74\n\ + mov r1, #0x0\n\ + strb r1, [r0]\n\ + b ._146\n\ +._109:\n\ + .align 2, 0\n\ +._108:\n\ + .word +0x2018000\n\ +._66:\n\ + bl sub_80A18C4\n\ + ldr r1, ._111\n\ + ldr r2, ._111 + 4\n\ + add r1, r1, r2\n\ + b ._153\n\ +._112:\n\ + .align 2, 0\n\ +._111:\n\ + .word gMain\n\ + .word 0x43c\n\ +._67:\n\ + ldr r4, ._115\n\ + add r0, r4, #0\n\ + bl sub_809F678\n\ + add r0, r4, #0\n\ + bl GetMonStatusAndPokerus\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._113 @cond_branch\n\ + mov r0, #0x0\n\ + bl sub_80A12D0\n\ + b ._114\n\ +._116:\n\ + .align 2, 0\n\ +._115:\n\ + .word +0x2018010\n\ +._113:\n\ + mov r0, #0xa\n\ + bl sub_80A12D0\n\ +._114:\n\ + ldr r0, ._118\n\ + bl DrawPokerusSurvivorDot\n\ + b ._146\n\ +._119:\n\ + .align 2, 0\n\ +._118:\n\ + .word +0x2018010\n\ +._68:\n\ + bl sub_80A1950\n\ + ldr r0, ._121\n\ + bl sub_80A1D84\n\ + ldr r1, ._121 + 4\n\ + ldr r2, ._121 + 8\n\ + add r1, r1, r2\n\ + b ._153\n\ +._122:\n\ + .align 2, 0\n\ +._121:\n\ + .word +0x2018010\n\ + .word gMain\n\ + .word 0x43c\n\ +._69:\n\ + ldr r4, ._124\n\ + add r0, r4, #0\n\ + bl sub_80A1DE8\n\ + add r4, r4, #0x64\n\ + mov r0, #0x0\n\ + strb r0, [r4]\n\ + b ._146\n\ +._125:\n\ + .align 2, 0\n\ +._124:\n\ + .word +0x2018010\n\ +._70:\n\ + ldr r4, ._129\n\ + add r5, r4, #0\n\ + add r5, r5, #0x64\n\ + add r0, r4, #0\n\ + add r1, r5, #0\n\ + bl sub_809F6B4\n\ + sub r4, r4, #0x10\n\ + strb r0, [r4, #0xc]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0xff\n\ + bne ._126 @cond_branch\n\ + b ._157\n\ +._126:\n\ + mov r0, #0x0\n\ + strb r0, [r5]\n\ + ldr r1, ._129 + 4\n\ + ldr r2, ._129 + 8\n\ + add r1, r1, r2\n\ + b ._153\n\ +._130:\n\ + .align 2, 0\n\ +._129:\n\ + .word +0x2018010\n\ + .word gMain\n\ + .word 0x43c\n\ +._71:\n\ + bl sub_809E044\n\ + bl DrawSummaryScreenNavigationDots\n\ + b ._146\n\ +._72:\n\ + ldr r1, ._134\n\ + ldrb r0, [r1, #0xb]\n\ + cmp r0, #0x1\n\ + bhi ._132 @cond_branch\n\ + ldr r0, ._134 + 4\n\ + ldrb r1, [r1, #0xb]\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r0\n\ + ldr r0, [r1]\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ +._132:\n\ + ldr r1, ._134 + 8\n\ + ldr r2, ._134 + 12\n\ + add r1, r1, r2\n\ + b ._153\n\ +._135:\n\ + .align 2, 0\n\ +._134:\n\ + .word +0x2018000\n\ + .word sUnknown_083C1580\n\ + .word gMain\n\ + .word 0x43c\n\ +._73:\n\ + ldr r0, ._137\n\ + bl sub_809FAC8\n\ + b ._146\n\ +._138:\n\ + .align 2, 0\n\ +._137:\n\ + .word +0x2018010\n\ +._74:\n\ + ldr r2, ._140\n\ + ldr r0, ._140 + 4\n\ + ldrb r1, [r0, #0xb]\n\ + lsl r1, r1, #0x2\n\ + add r1, r1, r2\n\ + add r0, r0, #0x10\n\ + ldr r1, [r1]\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cf8\n\ + ldr r1, ._140 + 8\n\ + ldr r2, ._140 + 12\n\ + add r1, r1, r2\n\ + b ._153\n\ +._141:\n\ + .align 2, 0\n\ +._140:\n\ + .word sUnknown_083C1598\n\ + .word +0x2018000\n\ + .word gMain\n\ + .word 0x43c\n\ +._75:\n\ + ldr r0, ._144\n\ + mov r1, #0x2d\n\ + bl GetMonData\n\ + add r1, r0, #0\n\ + cmp r1, #0\n\ + beq ._142 @cond_branch\n\ + ldr r1, ._144 + 4\n\ + mov r2, #0x80\n\ + lsl r2, r2, #0x1\n\ + add r0, r2, #0\n\ + strh r0, [r1]\n\ + b ._146\n\ +._145:\n\ + .align 2, 0\n\ +._144:\n\ + .word +0x2018010\n\ + .word gBattle_BG3_X\n\ +._142:\n\ + ldr r0, ._147\n\ + strh r1, [r0]\n\ + b ._146\n\ +._148:\n\ + .align 2, 0\n\ +._147:\n\ + .word gBattle_BG3_X\n\ +._76:\n\ + bl sub_809EBC4\n\ + ldr r0, ._151\n\ + add r0, r0, #0x79\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._149 @cond_branch\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + bl sub_80A1488\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + bl sub_80A1654\n\ + b ._150\n\ +._152:\n\ + .align 2, 0\n\ +._151:\n\ + .word +0x2018000\n\ +._149:\n\ + mov r0, #0xa\n\ + mov r1, #0x0\n\ + bl sub_80A1488\n\ + mov r0, #0xa\n\ + mov r1, #0x0\n\ + bl sub_80A1654\n\ +._150:\n\ + bl PrintSummaryWindowHeaderText\n\ + ldr r1, ._154\n\ + ldr r2, ._154 + 4\n\ + add r1, r1, r2\n\ + b ._153\n\ +._155:\n\ + .align 2, 0\n\ +._154:\n\ + .word gMain\n\ + .word 0x43c\n\ +._77:\n\ + bl sub_8055870\n\ + cmp r0, #0x1\n\ + beq ._157 @cond_branch\n\ +._146:\n\ + ldr r1, ._158\n\ + ldr r0, ._158 + 4\n\ + add r1, r1, r0\n\ +._153:\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + b ._157\n\ +._159:\n\ + .align 2, 0\n\ +._158:\n\ + .word gMain\n\ + .word 0x43c\n\ +._51:\n\ + ldr r0, ._162\n\ + bl SetVBlankCallback\n\ + mov r0, #0x1\n\ + str r0, [sp]\n\ + mov r0, #0xff\n\ + mov r1, #0x0\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginHardwarePaletteFade\n\ + ldr r0, ._162 + 4\n\ + bl SetMainCallback2\n\ + ldr r2, ._162 + 8\n\ + ldrb r1, [r2, #0x8]\n\ + mov r0, #0x7f\n\ + and r0, r0, r1\n\ + strb r0, [r2, #0x8]\n\ + ldr r0, ._162 + 12\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._160 @cond_branch\n\ + ldr r0, ._162 + 16\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x8\n\ + ldr r2, ._162 + 20\n\ + mov r3, #0x3\n\ + bl debug_sub_8008218\n\ +._160:\n\ + mov r0, #0x1\n\ + b ._161\n\ +._163:\n\ + .align 2, 0\n\ +._162:\n\ + .word sub_809D85C+1\n\ + .word sub_809D844+1\n\ + .word gPaletteFade\n\ + .word gLinkOpen\n\ + .word 0x600dde0\n\ + .word 0x600f000\n\ +._157:\n\ + mov r0, #0x0\n\ +._161:\n\ + add sp, sp, #0x8\n\ + pop {r4, r5, r6, r7}\n\ + pop {r1}\n\ + bx r1"); +} +#else bool8 sub_809DA84(void) { const u16 *src; @@ -856,13 +1378,15 @@ bool8 sub_809DA84(void) return FALSE; } +#endif static void sub_809DE44(void) { - while (sub_809DA84() != TRUE && sub_80F9344() != TRUE); + while (sub_809DA84() != TRUE && sub_80F9344() != TRUE) + ; } -static void sub_809DE64(void) +/*static*/ void sub_809DE64(void) { REG_BG0CNT = 0x1E08; REG_BG1CNT = 0x4801; @@ -889,7 +1413,7 @@ static void sub_809DE64(void) REG_DISPCNT = 0x1F40; } -static bool8 LoadPokemonSummaryScreenGraphics(void) +/*static*/ bool8 LoadPokemonSummaryScreenGraphics(void) { switch (pssData.loadGfxState) { @@ -939,7 +1463,7 @@ static bool8 LoadPokemonSummaryScreenGraphics(void) return FALSE; } -static void sub_809E044(void) +/*static*/ void sub_809E044(void) { LoadPalette(&gUnknownPalette_81E6692[28], 129, 2); LoadPalette(&gUnknownPalette_81E6692[30], 136, 2); @@ -1518,7 +2042,7 @@ static void sub_809EB40(u8 taskId) } } -static void sub_809EBC4(void) +/*static*/ void sub_809EBC4(void) { if (pssData.page != PSS_PAGE_INFO) { @@ -4887,7 +5411,7 @@ static void sub_80A1888(struct Sprite *sprite) } } -static void sub_80A18C4(void) +/*static*/ void sub_80A18C4(void) { u8 i; @@ -4911,7 +5435,7 @@ static void sub_80A1918(u8 a, u8 invisible) gSprites[ewram1A000[a]].invisible = invisible; } -static void sub_80A1950(void) +/*static*/ void sub_80A1950(void) { u8 i; diff --git a/src/pokenav_before.c b/src/pokenav_before.c index b31be2ce1..f9e2beccb 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -132,6 +132,10 @@ extern const u8 gUnknown_08E99FB0[]; extern const u8 gUnknown_08E9A100[]; extern const u16 gPokenavHoennMap1_Pal[]; +// TODO: decompile the debug code so the compiler doesn't complain about +// unused static functions +#define static + static void sub_80EBCA8(); static void sub_80EEE20(); static bool8 sub_80EEE54(); @@ -297,7 +301,6 @@ extern void sub_80F19FC(); extern u16 gKeyRepeatStartDelay; - void sub_80EBA5C() { switch (gMain.state) @@ -469,6 +472,315 @@ void sub_80EBDBC(void (*func)(void)) ewram0_10.var304 = 0; } +#if DEBUG +__attribute__((naked)) +void sub_80EBDD8() +{ + asm("\ + push {lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._64\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r2, r1, #0\n\ + cmp r0, #0x11\n\ + bls ._62 @cond_branch\n\ + b ._131\n\ +._62:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._64 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._65:\n\ + .align 2, 0\n\ +._64:\n\ + .word +0x2000000\n\ + .word ._66\n\ +._66:\n\ + .word ._67\n\ + .word ._68\n\ + .word ._69\n\ + .word ._70\n\ + .word ._71\n\ + .word ._72\n\ + .word ._73\n\ + .word ._74\n\ + .word ._75\n\ + .word ._76\n\ + .word ._77\n\ + .word ._78\n\ + .word ._79\n\ + .word ._80\n\ + .word ._81\n\ + .word ._82\n\ + .word ._83\n\ + .word ._84\n\ +._67:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x13\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + ldr r1, ._86\n\ + ldr r3, ._86 + 4\n\ + add r0, r1, r3\n\ + ldrb r2, [r0]\n\ + sub r3, r3, #0x2f\n\ + add r0, r1, r3\n\ + strb r2, [r0]\n\ + ldr r0, ._86 + 8\n\ + add r2, r1, r0\n\ + mov r0, #0x5\n\ + strb r0, [r2]\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._124\n\ +._87:\n\ + .align 2, 0\n\ +._86:\n\ + .word +0x2000000\n\ + .word 0x6ddc\n\ + .word 0x6dae\n\ +._68:\n\ + bl sub_80F3FF0\n\ + ldr r1, ._91\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._69:\n\ + bl sub_80F4024\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._88 @cond_branch\n\ + b ._131\n\ +._88:\n\ + ldr r1, ._91\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._124\n\ +._92:\n\ + .align 2, 0\n\ +._91:\n\ + .word +0x2000000\n\ +._70:\n\ + bl sub_80F2598\n\ + ldr r1, ._94\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._124\n\ +._95:\n\ + .align 2, 0\n\ +._94:\n\ + .word +0x2000000\n\ +._71:\n\ + bl sub_80EEE20\n\ + ldr r1, ._99\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._72:\n\ + bl sub_80EEE54\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._96 @cond_branch\n\ + b ._131\n\ +._96:\n\ + bl sub_80EEE08\n\ + ldr r1, ._99\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._124\n\ +._100:\n\ + .align 2, 0\n\ +._99:\n\ + .word +0x2000000\n\ +._73:\n\ + mov r0, #0x0\n\ + bl sub_80EF248\n\ + ldr r1, ._104\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._74:\n\ + mov r0, #0x0\n\ + bl sub_80EF284\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._101 @cond_branch\n\ + b ._131\n\ +._101:\n\ + b ._110\n\ +._105:\n\ + .align 2, 0\n\ +._104:\n\ + .word +0x2000000\n\ +._75:\n\ + mov r0, #0x0\n\ + bl sub_80F1B8C\n\ + ldr r1, ._108\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._76:\n\ + mov r0, #0x0\n\ + bl sub_80F1BC8\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._131 @cond_branch\n\ + ldr r1, ._108\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._124\n\ +._109:\n\ + .align 2, 0\n\ +._108:\n\ + .word +0x2000000\n\ +._77:\n\ + ldr r0, ._111\n\ + bl SetVBlankCallback\n\ + b ._110\n\ +._112:\n\ + .align 2, 0\n\ +._111:\n\ + .word sub_80EBD18+1\n\ +._78:\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r1, ._114\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._124\n\ +._115:\n\ + .align 2, 0\n\ +._114:\n\ + .word +0x2000000\n\ +._79:\n\ + mov r0, #0x0\n\ + bl sub_80EED2C\n\ + ldr r1, ._117\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._124\n\ +._118:\n\ + .align 2, 0\n\ +._117:\n\ + .word +0x2000000\n\ +._80:\n\ + ldr r0, ._121\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._131 @cond_branch\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r2, r3\n\ + b ._124\n\ +._122:\n\ + .align 2, 0\n\ +._121:\n\ + .word gPaletteFade\n\ +._81:\n\ + mov r0, #0x0\n\ + bl sub_80F2C80\n\ + ldr r1, ._125\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._82:\n\ + mov r0, #0x0\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._131 @cond_branch\n\ + ldr r1, ._125\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._124\n\ +._126:\n\ + .align 2, 0\n\ +._125:\n\ + .word +0x2000000\n\ +._83:\n\ + bl sub_80F1DF0\n\ +._110:\n\ + ldr r1, ._128\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ +._124:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._131\n\ +._129:\n\ + .align 2, 0\n\ +._128:\n\ + .word +0x2000000\n\ +._84:\n\ + bl sub_80F1E50\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._131 @cond_branch\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + bl sub_80EF428\n\ + ldr r0, ._132\n\ + bl sub_80EBDBC\n\ + ldr r0, ._132 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._131 @cond_branch\n\ + ldr r0, ._132 + 8\n\ + ldr r2, ._132 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._131:\n\ + add sp, sp, #0x4\n\ + pop {r0}\n\ + bx r0\n\ +._133:\n\ + .align 2, 0\n\ +._132:\n\ + .word sub_80EC268+1\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800"); +} +#else void sub_80EBDD8() { switch (ewram0_10.var304) @@ -556,7 +868,285 @@ void sub_80EBDD8() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EC00C() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._136\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0xd\n\ + bls ._134 @cond_branch\n\ + b ._191\n\ +._134:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._136 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._137:\n\ + .align 2, 0\n\ +._136:\n\ + .word +0x2000000\n\ + .word ._138\n\ +._138:\n\ + .word ._139\n\ + .word ._140\n\ + .word ._141\n\ + .word ._142\n\ + .word ._143\n\ + .word ._144\n\ + .word ._145\n\ + .word ._146\n\ + .word ._147\n\ + .word ._148\n\ + .word ._149\n\ + .word ._150\n\ + .word ._151\n\ + .word ._152\n\ +._139:\n\ + bl sub_80EEF78\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._153 @cond_branch\n\ + b ._191\n\ +._153:\n\ + ldr r0, ._156\n\ + bl SetVBlankCallback\n\ + bl sub_80EED1C\n\ + ldr r4, ._156 + 4\n\ + ldr r1, ._156 + 8\n\ + add r0, r4, r1\n\ + ldrb r1, [r0]\n\ + ldr r2, ._156 + 12\n\ + add r0, r4, r2\n\ + strb r1, [r0]\n\ + ldr r0, ._156 + 16\n\ + add r1, r4, r0\n\ + mov r0, #0x5\n\ + strb r0, [r1]\n\ + bl sub_80EEE08\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r4, r4, r1\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._191\n\ +._157:\n\ + .align 2, 0\n\ +._156:\n\ + .word sub_80EBD80+1\n\ + .word +0x2000000\n\ + .word 0x6ddc\n\ + .word 0x6dad\n\ + .word 0x6dae\n\ +._140:\n\ + mov r0, #0x0\n\ + bl sub_80EF248\n\ + ldr r1, ._161\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._141:\n\ + mov r0, #0x0\n\ + bl sub_80EF284\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._158 @cond_branch\n\ + b ._191\n\ +._158:\n\ + ldr r1, ._161\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._184\n\ +._162:\n\ + .align 2, 0\n\ +._161:\n\ + .word +0x2000000\n\ +._142:\n\ + mov r0, #0x0\n\ + bl sub_80F1B8C\n\ + ldr r1, ._166\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._143:\n\ + mov r0, #0x0\n\ + bl sub_80F1BC8\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._163 @cond_branch\n\ + b ._191\n\ +._163:\n\ + ldr r1, ._166\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._184\n\ +._167:\n\ + .align 2, 0\n\ +._166:\n\ + .word +0x2000000\n\ +._144:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._191 @cond_branch\n\ + b ._169\n\ +._145:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._171\n\ + bl SetVBlankCallback\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._184\n\ +._172:\n\ + .align 2, 0\n\ +._171:\n\ + .word sub_80EBD18+1\n\ +._146:\n\ + mov r0, #0x0\n\ + bl sub_80EED2C\n\ + ldr r1, ._174\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._184\n\ +._175:\n\ + .align 2, 0\n\ +._174:\n\ + .word +0x2000000\n\ +._147:\n\ + ldr r0, ._178\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._191 @cond_branch\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._184\n\ +._179:\n\ + .align 2, 0\n\ +._178:\n\ + .word gPaletteFade\n\ +._148:\n\ + bl sub_80F2598\n\ + ldr r1, ._181\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._184\n\ +._182:\n\ + .align 2, 0\n\ +._181:\n\ + .word +0x2000000\n\ +._149:\n\ + mov r0, #0x0\n\ + bl sub_80F2C80\n\ + ldr r1, ._185\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._150:\n\ + mov r0, #0x0\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._191 @cond_branch\n\ + ldr r1, ._185\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._184\n\ +._186:\n\ + .align 2, 0\n\ +._185:\n\ + .word +0x2000000\n\ +._151:\n\ + bl sub_80F1DF0\n\ +._169:\n\ + ldr r1, ._188\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ +._184:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._191\n\ +._189:\n\ + .align 2, 0\n\ +._188:\n\ + .word +0x2000000\n\ +._152:\n\ + bl sub_80F1E50\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._191 @cond_branch\n\ + ldr r0, ._192\n\ + ldr r1, ._192 + 4\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + mov r0, #0x0\n\ + bl sub_80EF428\n\ + ldr r0, ._192 + 8\n\ + bl sub_80EBDBC\n\ + ldr r0, ._192 + 12\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._191 @cond_branch\n\ + ldr r0, ._192 + 16\n\ + ldr r2, ._192 + 20\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._191:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._193:\n\ + .align 2, 0\n\ +._192:\n\ + .word +0x2000000\n\ + .word 0x6dad\n\ + .word sub_80EC268+1\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800"); +} +#else void sub_80EC00C() { switch (ewram0_10.var304) @@ -630,6 +1220,7 @@ void sub_80EC00C() break; } } +#endif void sub_80EC210() { @@ -751,6 +1342,262 @@ void sub_80EC268() } } +#if DEBUG +__attribute__((naked)) +void sub_80EC4A0() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._285\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0xe\n\ + bls ._283 @cond_branch\n\ + b ._340\n\ +._283:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._285 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._286:\n\ + .align 2, 0\n\ +._285:\n\ + .word +0x2000000\n\ + .word ._287\n\ +._287:\n\ + .word ._288\n\ + .word ._289\n\ + .word ._290\n\ + .word ._291\n\ + .word ._292\n\ + .word ._293\n\ + .word ._294\n\ + .word ._295\n\ + .word ._296\n\ + .word ._297\n\ + .word ._298\n\ + .word ._299\n\ + .word ._300\n\ + .word ._301\n\ + .word ._302\n\ +._288:\n\ + bl sub_80F1E84\n\ + mov r0, #0x0\n\ + bl sub_80F2D04\n\ + b ._336\n\ +._289:\n\ + bl sub_80F1F10\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._304 @cond_branch\n\ + b ._340\n\ +._304:\n\ + ldr r0, ._308\n\ + ldrb r1, [r0, #0x15]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + mov r1, #0x8\n\ + cmp r0, #0\n\ + beq ._306 @cond_branch\n\ + mov r1, #0x7\n\ +._306:\n\ + add r0, r1, #0\n\ + bl sub_80EEFBC\n\ + ldr r1, ._308 + 4\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._335\n\ +._309:\n\ + .align 2, 0\n\ +._308:\n\ + .word gSaveBlock2\n\ + .word +0x2000000\n\ +._290:\n\ + bl sub_80EEF34\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + beq ._310 @cond_branch\n\ + b ._340\n\ +._310:\n\ + ldr r4, ._313\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + str r2, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._335\n\ +._314:\n\ + .align 2, 0\n\ +._313:\n\ + .word +0x2000000\n\ +._291:\n\ + ldr r0, ._318\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._315 @cond_branch\n\ + b ._340\n\ +._315:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + b ._336\n\ +._319:\n\ + .align 2, 0\n\ +._318:\n\ + .word gPaletteFade\n\ +._292:\n\ + bl sub_80F2620\n\ + ldr r1, ._321\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._335\n\ +._322:\n\ + .align 2, 0\n\ +._321:\n\ + .word +0x2000000\n\ +._293:\n\ + bl sub_80EF814\n\ + b ._336\n\ +._294:\n\ + bl sub_80EF840\n\ + ldr r1, ._326\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._295:\n\ + bl sub_80EF874\n\ +._328:\n\ + lsl r0, r0, #0x18\n\ +._334:\n\ + cmp r0, #0\n\ + bne ._340 @cond_branch\n\ + b ._336\n\ +._327:\n\ + .align 2, 0\n\ +._326:\n\ + .word +0x2000000\n\ +._296:\n\ + mov r0, #0x4\n\ + bl sub_80F2C80\n\ + ldr r1, ._329\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._297:\n\ + mov r0, #0x4\n\ + bl sub_80F2CBC\n\ + b ._328\n\ +._330:\n\ + .align 2, 0\n\ +._329:\n\ + .word +0x2000000\n\ +._298:\n\ + bl sub_80F2DD8\n\ + ldr r0, ._332\n\ + bl SetVBlankCallback\n\ + ldr r1, ._332 + 4\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._335\n\ +._333:\n\ + .align 2, 0\n\ +._332:\n\ + .word sub_80EBD30+1\n\ + .word +0x2000000\n\ +._299:\n\ + bl sub_8055870\n\ + b ._334\n\ +._300:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._335\n\ +._301:\n\ + mov r0, #0x1\n\ + bl sub_80EED2C\n\ + ldr r0, ._338\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._336 @cond_branch\n\ + ldr r0, ._338 + 4\n\ + ldr r2, ._338 + 8\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._336:\n\ + ldr r1, ._338 + 12\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ +._335:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._340\n\ +._339:\n\ + .align 2, 0\n\ +._338:\n\ + .word gLinkOpen\n\ + .word 0x60075e0\n\ + .word 0x600f800\n\ + .word +0x2000000\n\ +._302:\n\ + ldr r0, ._341\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._340 @cond_branch\n\ + ldr r0, ._341 + 4\n\ + bl sub_80EBDBC\n\ +._340:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._342:\n\ + .align 2, 0\n\ +._341:\n\ + .word gPaletteFade\n\ + .word sub_80EC67C+1"); +} +#else void sub_80EC4A0() { u32 var1; @@ -835,7 +1682,243 @@ void sub_80EC4A0() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EC67C() +{ + asm("\ + push {r4, r5, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._345\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x5\n\ + bls ._343 @cond_branch\n\ + b ._386\n\ +._343:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._345 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._346:\n\ + .align 2, 0\n\ +._345:\n\ + .word +0x2000000\n\ + .word ._347\n\ +._347:\n\ + .word ._348\n\ + .word ._349\n\ + .word ._350\n\ + .word ._351\n\ + .word ._352\n\ + .word ._353\n\ +._348:\n\ + bl sub_80FAB60\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x3\n\ + beq ._354 @cond_branch\n\ + cmp r0, #0x3\n\ + bgt ._355 @cond_branch\n\ + cmp r0, #0x1\n\ + beq ._356 @cond_branch\n\ + b ._386\n\ +._355:\n\ + cmp r0, #0x4\n\ + beq ._358 @cond_branch\n\ + cmp r0, #0x5\n\ + beq ._359 @cond_branch\n\ + b ._386\n\ +._356:\n\ + bl sub_80EED9C\n\ + b ._386\n\ +._354:\n\ + bl sub_80EF9F8\n\ + b ._386\n\ +._358:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._364\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + mov r1, #0x1\n\ + strh r1, [r0]\n\ + b ._386\n\ +._365:\n\ + .align 2, 0\n\ +._364:\n\ + .word +0x2000000\n\ +._359:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._367\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r0, r2\n\ + mov r1, #0x4\n\ + strh r1, [r0]\n\ + b ._386\n\ +._368:\n\ + .align 2, 0\n\ +._367:\n\ + .word +0x2000000\n\ +._349:\n\ + ldr r1, ._371\n\ + add r0, r4, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._369 @cond_branch\n\ + bl sub_80FAEC4\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._380\n\ +._372:\n\ + .align 2, 0\n\ +._371:\n\ + .word 0x6e90\n\ +._369:\n\ + mov r0, #0x1\n\ + bl sub_80EFBDC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._386 @cond_branch\n\ + bl sub_80FAEC4\n\ + b ._374\n\ +._350:\n\ + bl sub_80FAFC0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._386 @cond_branch\n\ + ldr r5, ._378\n\ + ldr r1, ._378 + 4\n\ + add r0, r5, r1\n\ + ldrb r4, [r0]\n\ + cmp r4, #0\n\ + bne ._376 @cond_branch\n\ + bl sub_80EFBB0\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r5, r2\n\ + strh r4, [r0]\n\ + b ._386\n\ +._379:\n\ + .align 2, 0\n\ +._378:\n\ + .word +0x2000000\n\ + .word 0x6e90\n\ +._376:\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r5, r0\n\ + b ._380\n\ +._351:\n\ + mov r0, #0x0\n\ + bl sub_80EFBDC\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0\n\ + bne ._386 @cond_branch\n\ + bl sub_80EFBB0\n\ + ldr r0, ._383\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + strh r4, [r0]\n\ + b ._386\n\ +._384:\n\ + .align 2, 0\n\ +._383:\n\ + .word +0x2000000\n\ +._352:\n\ + mov r2, #0xc2\n\ + lsl r2, r2, #0x2\n\ + add r0, r4, r2\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ +._374:\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ +._380:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._386\n\ +._353:\n\ + ldr r0, ._389\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._386 @cond_branch\n\ + bl sub_80F2DF4\n\ + mov r0, #0x4\n\ + bl sub_80F2D04\n\ + ldr r3, ._389 + 4\n\ + mov r2, #0x0\n\ + ldr r0, ._389 + 8\n\ + ldr r1, ._389 + 12\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._387 @cond_branch\n\ + mov r2, #0x1\n\ +._387:\n\ + lsl r2, r2, #0x3\n\ + ldrb r1, [r3, #0x15]\n\ + mov r0, #0x9\n\ + neg r0, r0\n\ + and r0, r0, r1\n\ + orr r0, r0, r2\n\ + strb r0, [r3, #0x15]\n\ + ldr r0, ._389 + 16\n\ + bl sub_80EBDBC\n\ +._386:\n\ + ldr r0, ._389 + 20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._388 @cond_branch\n\ + ldr r0, ._389 + 24\n\ + ldr r2, ._389 + 28\n\ + add r0, r0, r2\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x1\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._388:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._390:\n\ + .align 2, 0\n\ +._389:\n\ + .word gPaletteFade\n\ + .word gSaveBlock2\n\ + .word +0x2000000\n\ + .word 0x6e90\n\ + .word sub_80EC00C+1\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void sub_80EC67C() { switch (ewram0_10.var304) @@ -907,6 +1990,7 @@ void sub_80EC67C() break; } } +#endif void sub_80EC81C() { @@ -1001,6 +2085,275 @@ void sub_80EC9A8() } } +#if DEBUG +__attribute__((naked)) +void sub_80ECA10() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._456\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0xd\n\ + bls ._454 @cond_branch\n\ + b ._509\n\ +._454:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._456 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._457:\n\ + .align 2, 0\n\ +._456:\n\ + .word +0x2000000\n\ + .word ._458\n\ +._458:\n\ + .word ._459\n\ + .word ._460\n\ + .word ._461\n\ + .word ._462\n\ + .word ._463\n\ + .word ._464\n\ + .word ._465\n\ + .word ._466\n\ + .word ._467\n\ + .word ._468\n\ + .word ._469\n\ + .word ._470\n\ + .word ._471\n\ + .word ._472\n\ +._459:\n\ + bl sub_80EEF78\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._473 @cond_branch\n\ + b ._509\n\ +._473:\n\ + ldr r0, ._476\n\ + bl SetVBlankCallback\n\ + bl sub_80EED1C\n\ + ldr r4, ._476 + 4\n\ + ldr r1, ._476 + 8\n\ + add r0, r4, r1\n\ + ldrb r1, [r0]\n\ + ldr r2, ._476 + 12\n\ + add r0, r4, r2\n\ + strb r1, [r0]\n\ + ldr r0, ._476 + 16\n\ + add r1, r4, r0\n\ + mov r0, #0x3\n\ + strb r0, [r1]\n\ + bl sub_80EEE08\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r4, r4, r1\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._509\n\ +._477:\n\ + .align 2, 0\n\ +._476:\n\ + .word sub_80EBD80+1\n\ + .word +0x2000000\n\ + .word 0x6df0\n\ + .word 0x6dad\n\ + .word 0x6dae\n\ +._460:\n\ + mov r0, #0x1\n\ + bl sub_80EF248\n\ + ldr r1, ._481\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._461:\n\ + mov r0, #0x1\n\ + bl sub_80EF284\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._478 @cond_branch\n\ + b ._509\n\ +._478:\n\ + ldr r1, ._481\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._502\n\ +._482:\n\ + .align 2, 0\n\ +._481:\n\ + .word +0x2000000\n\ +._462:\n\ + mov r0, #0x1\n\ + bl sub_80F1B8C\n\ + ldr r1, ._486\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._463:\n\ + mov r0, #0x1\n\ + bl sub_80F1BC8\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._483 @cond_branch\n\ + b ._509\n\ +._483:\n\ + ldr r1, ._486\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._502\n\ +._487:\n\ + .align 2, 0\n\ +._486:\n\ + .word +0x2000000\n\ +._464:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._509 @cond_branch\n\ + b ._496\n\ +._465:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._491\n\ + bl SetVBlankCallback\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._502\n\ +._492:\n\ + .align 2, 0\n\ +._491:\n\ + .word sub_80EBD18+1\n\ +._466:\n\ + mov r0, #0x0\n\ + bl sub_80EED2C\n\ + ldr r1, ._494\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._502\n\ +._495:\n\ + .align 2, 0\n\ +._494:\n\ + .word +0x2000000\n\ +._467:\n\ + bl sub_80F2598\n\ + b ._496\n\ +._468:\n\ + ldr r0, ._499\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._509 @cond_branch\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ + b ._502\n\ +._500:\n\ + .align 2, 0\n\ +._499:\n\ + .word gPaletteFade\n\ +._469:\n\ + mov r0, #0x1\n\ + bl sub_80F2C80\n\ + ldr r1, ._503\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._470:\n\ + mov r0, #0x1\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._509 @cond_branch\n\ + ldr r1, ._503\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._502\n\ +._504:\n\ + .align 2, 0\n\ +._503:\n\ + .word +0x2000000\n\ +._471:\n\ + bl sub_80F1DF0\n\ +._496:\n\ + ldr r1, ._506\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ +._502:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._509\n\ +._507:\n\ + .align 2, 0\n\ +._506:\n\ + .word +0x2000000\n\ +._472:\n\ + bl sub_80F1E50\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._509 @cond_branch\n\ + ldr r0, ._510\n\ + ldr r1, ._510 + 4\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + mov r0, #0x1\n\ + bl sub_80EF428\n\ + ldr r0, ._510 + 8\n\ + bl sub_80EBDBC\n\ + ldr r0, ._510 + 12\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._509 @cond_branch\n\ + ldr r0, ._510 + 16\n\ + ldr r2, ._510 + 20\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._509:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._511:\n\ + .align 2, 0\n\ +._510:\n\ + .word +0x2000000\n\ + .word 0x6dad\n\ + .word sub_80EC86C+1\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800"); +} +#else void sub_80ECA10() { switch (ewram0_10.var304) @@ -1072,6 +2425,7 @@ void sub_80ECA10() break; } } +#endif void sub_80ECC08() { @@ -1127,6 +2481,362 @@ void sub_80ECC08() } } +#if DEBUG +__attribute__((naked)) +void sub_80ECD80() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._564\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x14\n\ + bls ._562 @cond_branch\n\ + b ._642\n\ +._562:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._564 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._565:\n\ + .align 2, 0\n\ +._564:\n\ + .word +0x2000000\n\ + .word ._566\n\ +._566:\n\ + .word ._567\n\ + .word ._568\n\ + .word ._569\n\ + .word ._570\n\ + .word ._571\n\ + .word ._572\n\ + .word ._573\n\ + .word ._574\n\ + .word ._575\n\ + .word ._576\n\ + .word ._577\n\ + .word ._578\n\ + .word ._579\n\ + .word ._580\n\ + .word ._581\n\ + .word ._582\n\ + .word ._583\n\ + .word ._584\n\ + .word ._585\n\ + .word ._586\n\ + .word ._587\n\ +._567:\n\ + mov r3, #0xc2\n\ + lsl r3, r3, #0x2\n\ + add r0, r4, r3\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ + b ._630\n\ +._568:\n\ + ldr r0, ._592\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._589 @cond_branch\n\ + b ._642\n\ +._589:\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._630\n\ +._593:\n\ + .align 2, 0\n\ +._592:\n\ + .word gPaletteFade\n\ +._569:\n\ + bl sub_80EEF78\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._594 @cond_branch\n\ + b ._642\n\ +._594:\n\ + ldr r0, ._597\n\ + bl SetVBlankCallback\n\ + b ._625\n\ +._598:\n\ + .align 2, 0\n\ +._597:\n\ + .word sub_80EBD80+1\n\ +._570:\n\ + bl sub_80EED1C\n\ + bl sub_80F3130\n\ + ldr r1, ._600\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._630\n\ +._601:\n\ + .align 2, 0\n\ +._600:\n\ + .word +0x2000000\n\ +._571:\n\ + mov r0, #0x1\n\ + bl sub_80F2D6C\n\ + ldr r1, ._603\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._630\n\ +._604:\n\ + .align 2, 0\n\ +._603:\n\ + .word +0x2000000\n\ +._572:\n\ + mov r0, #0x5\n\ + bl sub_80F2D6C\n\ + b ._625\n\ +._573:\n\ + ldr r1, ._607\n\ + add r0, r4, r1\n\ + ldrb r1, [r0]\n\ + ldr r2, ._607 + 4\n\ + add r0, r4, r2\n\ + strb r1, [r0]\n\ + ldr r3, ._607 + 8\n\ + add r1, r4, r3\n\ + mov r0, #0x6\n\ + strb r0, [r1]\n\ + bl sub_80EEE08\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ + b ._630\n\ +._608:\n\ + .align 2, 0\n\ +._607:\n\ + .word 0x6dfc\n\ + .word 0x6dad\n\ + .word 0x6dae\n\ +._574:\n\ + mov r0, #0x2\n\ + bl sub_80EF248\n\ + ldr r1, ._612\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._575:\n\ + mov r0, #0x2\n\ + bl sub_80EF284\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._609 @cond_branch\n\ + b ._642\n\ +._609:\n\ + b ._625\n\ +._613:\n\ + .align 2, 0\n\ +._612:\n\ + .word +0x2000000\n\ +._576:\n\ + mov r0, #0x2\n\ + bl sub_80F1B8C\n\ + ldr r1, ._617\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._577:\n\ + mov r0, #0x2\n\ + bl sub_80F1BC8\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._614 @cond_branch\n\ + b ._642\n\ +._614:\n\ + ldr r1, ._617\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._630\n\ +._618:\n\ + .align 2, 0\n\ +._617:\n\ + .word +0x2000000\n\ +._578:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + beq ._619 @cond_branch\n\ + b ._642\n\ +._619:\n\ + b ._625\n\ +._579:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._623\n\ + bl SetVBlankCallback\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._630\n\ +._624:\n\ + .align 2, 0\n\ +._623:\n\ + .word sub_80EBD18+1\n\ +._580:\n\ + mov r0, #0x0\n\ + bl sub_80EED2C\n\ + b ._625\n\ +._581:\n\ + bl sub_80F2598\n\ + ldr r1, ._627\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._630\n\ +._628:\n\ + .align 2, 0\n\ +._627:\n\ + .word +0x2000000\n\ +._582:\n\ + ldr r0, ._631\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._642 @cond_branch\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._630\n\ +._632:\n\ + .align 2, 0\n\ +._631:\n\ + .word gPaletteFade\n\ +._583:\n\ + mov r0, #0x1\n\ + bl sub_80F2C80\n\ + ldr r1, ._635\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._584:\n\ + mov r0, #0x1\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + bne ._642 @cond_branch\n\ + ldr r0, ._635\n\ + ldr r3, ._635 + 4\n\ + add r1, r0, r3\n\ + strh r2, [r1]\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + add r1, r1, #0x1\n\ + strh r1, [r0]\n\ + b ._642\n\ +._636:\n\ + .align 2, 0\n\ +._635:\n\ + .word +0x2000000\n\ + .word 0x306\n\ +._585:\n\ + mov r0, #0x5\n\ + bl sub_80F2C80\n\ + ldr r1, ._639\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._586:\n\ + mov r0, #0x5\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._642 @cond_branch\n\ + bl sub_80F1DF0\n\ +._625:\n\ + ldr r1, ._639\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ +._630:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._642\n\ +._640:\n\ + .align 2, 0\n\ +._639:\n\ + .word +0x2000000\n\ +._587:\n\ + bl sub_80F1E50\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._642 @cond_branch\n\ + ldr r0, ._643\n\ + ldr r1, ._643 + 4\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + mov r0, #0x2\n\ + bl sub_80EF428\n\ + ldr r0, ._643 + 8\n\ + bl sub_80EBDBC\n\ + ldr r0, ._643 + 12\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._642 @cond_branch\n\ + ldr r0, ._643 + 16\n\ + ldr r2, ._643 + 20\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._642:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._644:\n\ + .align 2, 0\n\ +._643:\n\ + .word +0x2000000\n\ + .word 0x6dad\n\ + .word sub_80ECC08+1\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800"); +} +#else void sub_80ECD80() { switch (ewram0_10.var304) @@ -1233,7 +2943,418 @@ void sub_80ECD80() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80ED01C() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._647\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x13\n\ + bls ._645 @cond_branch\n\ + b ._736\n\ +._645:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._647 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._648:\n\ + .align 2, 0\n\ +._647:\n\ + .word +0x2000000\n\ + .word ._649\n\ +._649:\n\ + .word ._650\n\ + .word ._651\n\ + .word ._652\n\ + .word ._653\n\ + .word ._654\n\ + .word ._655\n\ + .word ._656\n\ + .word ._657\n\ + .word ._658\n\ + .word ._659\n\ + .word ._660\n\ + .word ._661\n\ + .word ._662\n\ + .word ._663\n\ + .word ._664\n\ + .word ._665\n\ + .word ._666\n\ + .word ._667\n\ + .word ._668\n\ + .word ._669\n\ +._650:\n\ + bl sub_80F1E84\n\ + mov r0, #0x1\n\ + bl sub_80F2D04\n\ + mov r0, #0x5\n\ + bl sub_80F2D04\n\ + ldr r1, ._671\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + b ._724\n\ +._672:\n\ + .align 2, 0\n\ +._671:\n\ + .word +0x2000000\n\ +._651:\n\ + bl sub_80F1F10\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._673 @cond_branch\n\ + b ._736\n\ +._673:\n\ + mov r0, #0x0\n\ + bl sub_80EEFBC\n\ + ldr r1, ._676\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._724\n\ +._677:\n\ + .align 2, 0\n\ +._676:\n\ + .word +0x2000000\n\ +._652:\n\ + bl sub_80EEF34\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + beq ._678 @cond_branch\n\ + b ._736\n\ +._678:\n\ + ldr r4, ._681\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + str r2, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._724\n\ +._682:\n\ + .align 2, 0\n\ +._681:\n\ + .word +0x2000000\n\ +._653:\n\ + ldr r0, ._686\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._683 @cond_branch\n\ + b ._736\n\ +._683:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80EF814\n\ + ldr r1, ._686 + 4\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + b ._724\n\ +._687:\n\ + .align 2, 0\n\ +._686:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ +._654:\n\ + bl sub_80F2620\n\ + ldr r1, ._689\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._724\n\ +._690:\n\ + .align 2, 0\n\ +._689:\n\ + .word +0x2000000\n\ +._655:\n\ + bl sub_80F4D44\n\ + ldr r1, ._693\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._656:\n\ + bl sub_80F4D88\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._691 @cond_branch\n\ + ldr r1, ._693\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x2\n\ + strh r0, [r1]\n\ + b ._736\n\ +._694:\n\ + .align 2, 0\n\ +._693:\n\ + .word +0x2000000\n\ +._691:\n\ + ldr r1, ._696\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._724\n\ +._697:\n\ + .align 2, 0\n\ +._696:\n\ + .word +0x2000000\n\ +._657:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + beq ._698 @cond_branch\n\ + b ._736\n\ +._698:\n\ + ldr r1, ._701\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + sub r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._736\n\ +._702:\n\ + .align 2, 0\n\ +._701:\n\ + .word +0x2000000\n\ +._658:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + beq ._703 @cond_branch\n\ + b ._736\n\ +._703:\n\ + ldr r1, ._706\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + b ._724\n\ +._707:\n\ + .align 2, 0\n\ +._706:\n\ + .word +0x2000000\n\ +._659:\n\ + mov r0, #0x0\n\ + bl sub_80F0264\n\ + ldr r1, ._711\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._660:\n\ + bl sub_80F02A0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._708 @cond_branch\n\ + b ._736\n\ +._708:\n\ + ldr r1, ._711\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._724\n\ +._712:\n\ + .align 2, 0\n\ +._711:\n\ + .word +0x2000000\n\ +._661:\n\ + mov r0, #0x0\n\ + bl sub_80F3008\n\ + ldr r1, ._714\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + b ._724\n\ +._715:\n\ + .align 2, 0\n\ +._714:\n\ + .word +0x2000000\n\ +._662:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + beq ._716 @cond_branch\n\ + b ._736\n\ +._716:\n\ + ldr r1, ._719\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._724\n\ +._720:\n\ + .align 2, 0\n\ +._719:\n\ + .word +0x2000000\n\ +._663:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._722\n\ + bl SetVBlankCallback\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._724\n\ +._723:\n\ + .align 2, 0\n\ +._722:\n\ + .word sub_80EBD18+1\n\ +._664:\n\ + mov r0, #0x4\n\ + bl sub_80EED2C\n\ + ldr r1, ._725\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r1, r3\n\ + b ._724\n\ +._726:\n\ + .align 2, 0\n\ +._725:\n\ + .word +0x2000000\n\ +._665:\n\ + ldr r0, ._729\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r1, r0, #0x18\n\ + cmp r1, #0\n\ + bne ._736 @cond_branch\n\ + ldr r2, ._729 + 4\n\ + add r0, r4, r2\n\ + strh r1, [r0]\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r1, r4, r3\n\ +._724:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._736\n\ +._730:\n\ + .align 2, 0\n\ +._729:\n\ + .word gPaletteFade\n\ + .word 0x306\n\ +._666:\n\ + mov r0, #0x1\n\ + bl sub_80F2C80\n\ + ldr r1, ._733\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._667:\n\ + mov r0, #0x1\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + bne ._736 @cond_branch\n\ + ldr r0, ._733\n\ + ldr r3, ._733 + 4\n\ + add r1, r0, r3\n\ + strh r2, [r1]\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + add r1, r1, #0x1\n\ + strh r1, [r0]\n\ + b ._736\n\ +._734:\n\ + .align 2, 0\n\ +._733:\n\ + .word +0x2000000\n\ + .word 0x306\n\ +._668:\n\ + ldr r4, ._737\n\ + ldr r2, ._737 + 4\n\ + add r0, r4, r2\n\ + ldrb r0, [r0]\n\ + add r0, r0, #0x7\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl sub_80F2C80\n\ + mov r3, #0xc1\n\ + lsl r3, r3, #0x2\n\ + add r4, r4, r3\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ +._669:\n\ + ldr r0, ._737\n\ + ldr r1, ._737 + 4\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + add r0, r0, #0x7\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._736 @cond_branch\n\ + ldr r0, ._737 + 8\n\ + bl sub_80EBDBC\n\ + ldr r0, ._737 + 12\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._736 @cond_branch\n\ + ldr r0, ._737 + 16\n\ + ldr r2, ._737 + 20\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._736:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._738:\n\ + .align 2, 0\n\ +._737:\n\ + .word +0x2000000\n\ + .word 0x6dfc\n\ + .word sub_80ED31C+1\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800"); +} +#else void sub_80ED01C() { switch (ewram0_10.var304) @@ -1342,7 +3463,129 @@ void sub_80ED01C() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80ED31C() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._743\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r4, r0, r1\n\ + ldrh r0, [r4]\n\ + cmp r0, #0x1\n\ + beq ._739 @cond_branch\n\ + cmp r0, #0x1\n\ + bgt ._740 @cond_branch\n\ + cmp r0, #0\n\ + beq ._741 @cond_branch\n\ + b ._761\n\ +._744:\n\ + .align 2, 0\n\ +._743:\n\ + .word +0x2000000\n\ +._740:\n\ + cmp r0, #0x2\n\ + beq ._745 @cond_branch\n\ + b ._761\n\ +._741:\n\ + bl sub_80F5DD4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + beq ._747 @cond_branch\n\ + cmp r0, #0x2\n\ + beq ._748 @cond_branch\n\ + ldr r0, ._751\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._749 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._751 + 4\n\ + bl sub_80EBDBC\n\ + b ._762\n\ +._752:\n\ + .align 2, 0\n\ +._751:\n\ + .word gMain\n\ + .word sub_80ED4D8+1\n\ +._747:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + bl ShowMapNamePopUpWindow\n\ + b ._762\n\ +._748:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._762\n\ +._749:\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._761 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._757\n\ + bl sub_80EBDBC\n\ + b ._762\n\ +._758:\n\ + .align 2, 0\n\ +._757:\n\ + .word sub_80ECD80+1\n\ +._739:\n\ + bl sub_80F0718\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._761 @cond_branch\n\ + bl ShowMapNamePopUpWindow\n\ + bl sub_80F3264\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + b ._760\n\ +._745:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._761 @cond_branch\n\ +._760:\n\ + strh r0, [r4]\n\ +._761:\n\ + ldr r0, ._763\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._762 @cond_branch\n\ + ldr r0, ._763 + 4\n\ + ldr r1, ._763 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x8\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._762:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._764:\n\ + .align 2, 0\n\ +._763:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void sub_80ED31C() { switch (ewram0_10.var304) @@ -1386,7 +3629,195 @@ void sub_80ED31C() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80ED3D0() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._767\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0]\n\ + cmp r0, #0x8\n\ + bls ._765 @cond_branch\n\ + b ._803\n\ +._765:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._767 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._768:\n\ + .align 2, 0\n\ +._767:\n\ + .word +0x2000000\n\ + .word ._769\n\ +._769:\n\ + .word ._770\n\ + .word ._771\n\ + .word ._772\n\ + .word ._773\n\ + .word ._774\n\ + .word ._775\n\ + .word ._776\n\ + .word ._777\n\ + .word ._778\n\ +._770:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + ldr r1, ._780\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._793\n\ +._781:\n\ + .align 2, 0\n\ +._780:\n\ + .word +0x2000000\n\ +._771:\n\ + bl sub_80EED0C\n\ + bl sub_80F6134\n\ + ldr r1, ._783\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._793\n\ +._784:\n\ + .align 2, 0\n\ +._783:\n\ + .word +0x2000000\n\ +._772:\n\ + mov r0, #0x0\n\ + bl sub_80EEFBC\n\ + ldr r1, ._786\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._793\n\ +._787:\n\ + .align 2, 0\n\ +._786:\n\ + .word +0x2000000\n\ +._773:\n\ + mov r0, #0x0\n\ + bl sub_80F0264\n\ + ldr r1, ._790\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._774:\n\ + bl sub_80F02A0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._803 @cond_branch\n\ + ldr r1, ._790\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._793\n\ +._791:\n\ + .align 2, 0\n\ +._790:\n\ + .word +0x2000000\n\ +._775:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._803 @cond_branch\n\ + ldr r1, ._794\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._793\n\ +._795:\n\ + .align 2, 0\n\ +._794:\n\ + .word +0x2000000\n\ +._776:\n\ + mov r0, #0x0\n\ + bl sub_80F3008\n\ + ldr r4, ._797\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._797 + 4\n\ + bl SetVBlankCallback\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ +._793:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._803\n\ +._798:\n\ + .align 2, 0\n\ +._797:\n\ + .word +0x2000000\n\ + .word sub_80EBD18+1\n\ +._777:\n\ + mov r0, #0x4\n\ + bl sub_80EED2C\n\ + ldr r1, ._801\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + ldr r0, ._801 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._803 @cond_branch\n\ + ldr r0, ._801 + 8\n\ + ldr r2, ._801 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ + b ._803\n\ +._802:\n\ + .align 2, 0\n\ +._801:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800\n\ +._778:\n\ + ldr r0, ._804\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._803 @cond_branch\n\ + ldr r0, ._804 + 4\n\ + bl sub_80EBDBC\n\ +._803:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._805:\n\ + .align 2, 0\n\ +._804:\n\ + .word gPaletteFade\n\ + .word sub_80ED31C+1"); +} +#else void sub_80ED3D0() { switch (ewram0_10.var304) @@ -1432,7 +3863,207 @@ void sub_80ED3D0() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80ED4D8() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._808\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x8\n\ + bls ._806 @cond_branch\n\ + b ._844\n\ +._806:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._808 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._809:\n\ + .align 2, 0\n\ +._808:\n\ + .word +0x2000000\n\ + .word ._810\n\ +._810:\n\ + .word ._811\n\ + .word ._812\n\ + .word ._813\n\ + .word ._814\n\ + .word ._815\n\ + .word ._816\n\ + .word ._817\n\ + .word ._818\n\ + .word ._819\n\ +._811:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + b ._820\n\ +._812:\n\ + ldr r0, ._824\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._821 @cond_branch\n\ + b ._844\n\ +._821:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80F3130\n\ + ldr r1, ._824 + 4\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._834\n\ +._825:\n\ + .align 2, 0\n\ +._824:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ +._813:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._844 @cond_branch\n\ + ldr r1, ._828\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._834\n\ +._829:\n\ + .align 2, 0\n\ +._828:\n\ + .word +0x2000000\n\ +._814:\n\ + bl sub_80F4CF0\n\ + ldr r1, ._831\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._834\n\ +._832:\n\ + .align 2, 0\n\ +._831:\n\ + .word +0x2000000\n\ +._815:\n\ + bl sub_80EFF34\n\ + ldr r1, ._835\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._816:\n\ + bl sub_80EFF68\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._844 @cond_branch\n\ + ldr r1, ._835\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._834\n\ +._836:\n\ + .align 2, 0\n\ +._835:\n\ + .word +0x2000000\n\ +._817:\n\ + bl sub_80F35B4\n\ + mov r0, #0x2\n\ + bl sub_80EEFBC\n\ + ldr r4, ._838\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._838 + 4\n\ + bl SetVBlankCallback\n\ +._820:\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ +._834:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._844\n\ +._839:\n\ + .align 2, 0\n\ +._838:\n\ + .word +0x2000000\n\ + .word sub_80EBD4C+1\n\ +._818:\n\ + mov r0, #0x2\n\ + bl sub_80EED2C\n\ + ldr r1, ._842\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + ldr r0, ._842 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._844 @cond_branch\n\ + ldr r0, ._842 + 8\n\ + ldr r2, ._842 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ + b ._844\n\ +._843:\n\ + .align 2, 0\n\ +._842:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f000\n\ +._819:\n\ + ldr r0, ._845\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._844 @cond_branch\n\ + ldr r0, ._845 + 4\n\ + bl sub_80EBDBC\n\ +._844:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._846:\n\ + .align 2, 0\n\ +._845:\n\ + .word gPaletteFade\n\ + .word sub_80ED858+1"); +} +#else void sub_80ED4D8() { switch (ewram0_10.var304) @@ -1483,7 +4114,310 @@ void sub_80ED4D8() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80ED620() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._849\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x10\n\ + bls ._847 @cond_branch\n\ + b ._912\n\ +._847:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._849 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._850:\n\ + .align 2, 0\n\ +._849:\n\ + .word +0x2000000\n\ + .word ._851\n\ +._851:\n\ + .word ._852\n\ + .word ._853\n\ + .word ._854\n\ + .word ._855\n\ + .word ._856\n\ + .word ._857\n\ + .word ._858\n\ + .word ._859\n\ + .word ._860\n\ + .word ._861\n\ + .word ._862\n\ + .word ._863\n\ + .word ._864\n\ + .word ._865\n\ + .word ._866\n\ + .word ._867\n\ + .word ._868\n\ +._852:\n\ + bl sub_80F1E84\n\ + mov r0, #0x1\n\ + bl sub_80F2D04\n\ + ldr r1, ._870\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._904\n\ +._871:\n\ + .align 2, 0\n\ +._870:\n\ + .word +0x2000000\n\ +._853:\n\ + bl sub_80F1F10\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._872 @cond_branch\n\ + b ._912\n\ +._872:\n\ + mov r0, #0x1\n\ + bl sub_80EEFBC\n\ + b ._885\n\ +._854:\n\ + bl sub_80EEF34\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + beq ._875 @cond_branch\n\ + b ._912\n\ +._875:\n\ + ldr r4, ._878\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + str r2, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._904\n\ +._879:\n\ + .align 2, 0\n\ +._878:\n\ + .word +0x2000000\n\ +._855:\n\ + ldr r0, ._883\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0\n\ + beq ._880 @cond_branch\n\ + b ._912\n\ +._880:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80EF814\n\ + ldr r0, ._883 + 4\n\ + ldr r2, ._883 + 8\n\ + add r1, r0, r2\n\ + strb r4, [r1]\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrh r1, [r0]\n\ + add r1, r1, #0x1\n\ + strh r1, [r0]\n\ + b ._912\n\ +._884:\n\ + .align 2, 0\n\ +._883:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ + .word 0x76aa\n\ +._856:\n\ + bl sub_80F2620\n\ + b ._885\n\ +._857:\n\ + ldr r0, ._887\n\ + add r1, r4, r0\n\ + mov r0, #0x2\n\ + strb r0, [r1]\n\ + bl sub_80F4BD0\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._904\n\ +._888:\n\ + .align 2, 0\n\ +._887:\n\ + .word 0xd162\n\ +._858:\n\ + bl sub_80EFF34\n\ + ldr r1, ._890\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._859:\n\ + bl sub_80EFF68\n\ + b ._889\n\ +._891:\n\ + .align 2, 0\n\ +._890:\n\ + .word +0x2000000\n\ +._860:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._912 @cond_branch\n\ + ldr r1, ._894\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._904\n\ +._895:\n\ + .align 2, 0\n\ +._894:\n\ + .word +0x2000000\n\ +._861:\n\ + bl sub_8055870\n\ + b ._896\n\ +._862:\n\ + bl sub_80F33A8\n\ + ldr r4, ._898\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._898 + 4\n\ + bl SetVBlankCallback\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._904\n\ +._899:\n\ + .align 2, 0\n\ +._898:\n\ + .word +0x2000000\n\ + .word sub_80EBD4C+1\n\ +._863:\n\ + mov r0, #0x2\n\ + bl sub_80EED2C\n\ + ldr r1, ._901\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._904\n\ +._902:\n\ + .align 2, 0\n\ +._901:\n\ + .word +0x2000000\n\ +._864:\n\ + ldr r0, ._905\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._912 @cond_branch\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ + b ._904\n\ +._906:\n\ + .align 2, 0\n\ +._905:\n\ + .word gPaletteFade\n\ +._865:\n\ + mov r0, #0x1\n\ + bl sub_80F2C80\n\ + ldr r1, ._909\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._866:\n\ + mov r0, #0x1\n\ + bl sub_80F2CBC\n\ +._889:\n\ + lsl r0, r0, #0x18\n\ +._896:\n\ + cmp r0, #0\n\ + bne ._912 @cond_branch\n\ +._885:\n\ + ldr r1, ._909\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ +._904:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._912\n\ +._910:\n\ + .align 2, 0\n\ +._909:\n\ + .word +0x2000000\n\ +._867:\n\ + mov r0, #0x6\n\ + bl sub_80F2C80\n\ + ldr r1, ._913\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._868:\n\ + mov r0, #0x6\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._912 @cond_branch\n\ + ldr r0, ._913 + 4\n\ + bl sub_80EBDBC\n\ + ldr r0, ._913 + 8\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._912 @cond_branch\n\ + ldr r0, ._913 + 12\n\ + ldr r2, ._913 + 16\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ +._912:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._914:\n\ + .align 2, 0\n\ +._913:\n\ + .word +0x2000000\n\ + .word sub_80ED858+1\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f000"); +} +#else void sub_80ED620() { switch (ewram0_10.var304) @@ -1573,6 +4507,7 @@ void sub_80ED620() break; } } +#endif #if 0 void sub_80F4F78(); @@ -1742,8 +4677,433 @@ label2: } #else +#if DEBUG __attribute__((naked)) -void sub_80ED858() { +void sub_80ED858() +{ + asm("\ + push {r4, r5, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._917\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r5, r1, #0\n\ + cmp r0, #0xb\n\ + bls ._915 @cond_branch\n\ + b ._999\n\ +._915:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._917 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._918:\n\ + .align 2, 0\n\ +._917:\n\ + .word +0x2000000\n\ + .word ._919\n\ +._919:\n\ + .word ._920\n\ + .word ._921\n\ + .word ._922\n\ + .word ._923\n\ + .word ._924\n\ + .word ._925\n\ + .word ._926\n\ + .word ._927\n\ + .word ._928\n\ + .word ._929\n\ + .word ._999\n\ + .word ._931\n\ +._920:\n\ + bl sub_80F4F78\n\ + bl sub_80F5B38\n\ + ldr r0, ._933\n\ + mov r4, #0xc1\n\ + lsl r4, r4, #0x2\n\ + add r0, r0, r4\n\ + mov r1, #0x1\n\ + strh r1, [r0]\n\ + b ._999\n\ +._934:\n\ + .align 2, 0\n\ +._933:\n\ + .word +0x2000000\n\ +._921:\n\ + bl sub_80F5B50\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._935 @cond_branch\n\ + b ._999\n\ +._935:\n\ + ldr r0, ._938\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + mov r1, #0x2\n\ + strh r1, [r0]\n\ + b ._999\n\ +._939:\n\ + .align 2, 0\n\ +._938:\n\ + .word +0x2000000\n\ +._922:\n\ + mov r0, #0x1\n\ + bl sub_80F0174\n\ + ldr r0, ._941\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r0, r2\n\ + mov r1, #0x3\n\ + strh r1, [r0]\n\ + b ._999\n\ +._942:\n\ + .align 2, 0\n\ +._941:\n\ + .word +0x2000000\n\ +._923:\n\ + bl sub_80F4FB4\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._943 @cond_branch\n\ + b ._999\n\ +._943:\n\ + bl sub_80F3C94\n\ + bl sub_80F3D00\n\ + b ._945\n\ +._924:\n\ + ldr r2, ._951\n\ + ldrh r1, [r2, #0x2c]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + add r3, r2, #0\n\ + cmp r0, #0\n\ + beq ._949 @cond_branch\n\ + ldr r1, ._951 + 4\n\ + add r0, r5, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._949 @cond_branch\n\ + ldr r2, ._951 + 8\n\ + add r0, r5, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._948 @cond_branch\n\ + ldr r4, ._951 + 12\n\ + add r0, r5, r4\n\ + mov r1, #0x0\n\ + ldsh r0, [r0, r1]\n\ + cmp r0, #0\n\ + beq ._949 @cond_branch\n\ +._948:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0x1\n\ + bl sub_80F5060\n\ + bl move_anim_execute\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r5, r2\n\ + b ._950\n\ +._952:\n\ + .align 2, 0\n\ +._951:\n\ + .word gMain\n\ + .word 0x87cb\n\ + .word 0x76aa\n\ + .word 0x87dc\n\ +._949:\n\ + ldrh r1, [r3, #0x2c]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._956 @cond_branch\n\ + ldr r4, ._958\n\ + add r0, r5, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._956 @cond_branch\n\ + ldr r1, ._958 + 4\n\ + add r0, r5, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._955 @cond_branch\n\ + ldr r2, ._958 + 8\n\ + add r0, r5, r2\n\ + sub r4, r4, #0x57\n\ + add r1, r5, r4\n\ + mov r4, #0x0\n\ + ldsh r2, [r0, r4]\n\ + mov r4, #0x0\n\ + ldsh r0, [r1, r4]\n\ + cmp r2, r0\n\ + bge ._956 @cond_branch\n\ +._955:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0x0\n\ + bl sub_80F5060\n\ + bl move_anim_execute\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r5, r0\n\ +._950:\n\ + mov r0, #0x5\n\ + strh r0, [r1]\n\ + b ._999\n\ +._959:\n\ + .align 2, 0\n\ +._958:\n\ + .word 0x87cb\n\ + .word 0x76aa\n\ + .word 0x87dc\n\ +._956:\n\ + ldrh r2, [r3, #0x2e]\n\ + mov r0, #0x2\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + beq ._960 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + bl sub_80F4FDC\n\ + bl move_anim_execute\n\ + ldr r0, ._962\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + mov r1, #0x9\n\ + strh r1, [r0]\n\ + b ._999\n\ +._963:\n\ + .align 2, 0\n\ +._962:\n\ + .word +0x2000000\n\ +._960:\n\ + mov r0, #0x1\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + bne ._964 @cond_branch\n\ + b ._999\n\ +._964:\n\ + add r4, r5, #0\n\ + ldr r2, ._970\n\ + add r0, r4, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._966 @cond_branch\n\ + ldr r1, ._970 + 4\n\ + add r0, r4, r1\n\ + mov r2, #0x0\n\ + ldsh r1, [r0, r2]\n\ + ldr r2, ._970 + 8\n\ + add r0, r4, r2\n\ + mov r2, #0x0\n\ + ldsh r0, [r0, r2]\n\ + sub r0, r0, #0x1\n\ + cmp r1, r0\n\ + beq ._967 @cond_branch\n\ + b ._999\n\ +._967:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ + mov r0, #0x9\n\ + strh r0, [r1]\n\ + b ._999\n\ +._971:\n\ + .align 2, 0\n\ +._970:\n\ + .word 0x76aa\n\ + .word 0x87dc\n\ + .word 0x87da\n\ +._966:\n\ + ldr r1, ._975\n\ + add r0, r5, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._972 @cond_branch\n\ + b ._999\n\ +._972:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r5, r2\n\ + mov r0, #0x7\n\ + strh r0, [r1]\n\ + b ._999\n\ +._976:\n\ + .align 2, 0\n\ +._975:\n\ + .word 0x6dac\n\ +._925:\n\ + bl gpu_sync_bg_show\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._977 @cond_branch\n\ + b ._999\n\ +._977:\n\ + bl sub_80F3D00\n\ + ldr r0, ._980\n\ + mov r4, #0xc1\n\ + lsl r4, r4, #0x2\n\ + add r0, r0, r4\n\ + mov r1, #0x6\n\ + strh r1, [r0]\n\ + b ._999\n\ +._981:\n\ + .align 2, 0\n\ +._980:\n\ + .word +0x2000000\n\ +._926:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._999 @cond_branch\n\ + ldr r0, ._984\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + b ._983\n\ +._985:\n\ + .align 2, 0\n\ +._984:\n\ + .word +0x2000000\n\ +._927:\n\ + mov r0, #0x3\n\ + bl sub_80EEFBC\n\ + bl sub_80F3668\n\ + ldr r0, ._987\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r0, r2\n\ + mov r1, #0x8\n\ + strh r1, [r0]\n\ + b ._999\n\ +._988:\n\ + .align 2, 0\n\ +._987:\n\ + .word +0x2000000\n\ +._928:\n\ + bl sub_80F7500\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._999 @cond_branch\n\ + mov r0, #0x2\n\ + bl sub_80EEFBC\n\ + bl sub_80F3698\n\ +._945:\n\ + ldr r0, ._991\n\ + mov r4, #0xc1\n\ + lsl r4, r4, #0x2\n\ + add r0, r0, r4\n\ +._983:\n\ + mov r1, #0x4\n\ + strh r1, [r0]\n\ + b ._999\n\ +._992:\n\ + .align 2, 0\n\ +._991:\n\ + .word +0x2000000\n\ +._929:\n\ + bl sub_80F5038\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0\n\ + bne ._999 @cond_branch\n\ + mov r0, #0x0\n\ + bl sub_80F0174\n\ + bl sub_80F2F48\n\ + ldr r5, ._995\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r5, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + str r4, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r5, r2\n\ + mov r0, #0xb\n\ + strh r0, [r1]\n\ + b ._999\n\ +._996:\n\ + .align 2, 0\n\ +._995:\n\ + .word +0x2000000\n\ +._931:\n\ + ldr r0, ._1000\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._999 @cond_branch\n\ + bl sub_80F3CE8\n\ + bl sub_80F5BDC\n\ + ldr r0, ._1000 + 4\n\ + ldr r4, ._1000 + 8\n\ + add r0, r0, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + bne ._998 @cond_branch\n\ + bl sub_80F357C\n\ + mov r0, #0x1\n\ + bl sub_80F2D6C\n\ + mov r0, #0x6\n\ + bl sub_80F2D6C\n\ + ldr r0, ._1000 + 12\n\ + bl sub_80EBDBC\n\ + b ._999\n\ +._1001:\n\ + .align 2, 0\n\ +._1000:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ + .word 0x76aa\n\ + .word sub_80ECA10+1\n\ +._998:\n\ + bl sub_80F3614\n\ + ldr r0, ._1003\n\ + bl sub_80EBDBC\n\ +._999:\n\ + ldr r0, ._1003 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1002 @cond_branch\n\ + ldr r0, ._1003 + 8\n\ + ldr r1, ._1003 + 12\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x9\n\ + mov r2, #0x6\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1002:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._1004:\n\ + .align 2, 0\n\ +._1003:\n\ + .word sub_80ED3D0+1\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else +__attribute__((naked)) +void sub_80ED858() +{ asm_unified("push {r4,r5,lr}\n\ sub sp, 0x4\n\ ldr r1, _080ED878 @ =gSharedMem\n\ @@ -2114,7 +5474,361 @@ _080EDB7A:\n\ _080EDB84: .4byte sub_80ED3D0\n"); } #endif +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EDB88() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._1007\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x11\n\ + bls ._1005 @cond_branch\n\ + b ._1088\n\ +._1005:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._1007 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._1008:\n\ + .align 2, 0\n\ +._1007:\n\ + .word +0x2000000\n\ + .word ._1009\n\ +._1009:\n\ + .word ._1010\n\ + .word ._1011\n\ + .word ._1012\n\ + .word ._1013\n\ + .word ._1014\n\ + .word ._1015\n\ + .word ._1016\n\ + .word ._1017\n\ + .word ._1018\n\ + .word ._1019\n\ + .word ._1020\n\ + .word ._1021\n\ + .word ._1022\n\ + .word ._1023\n\ + .word ._1024\n\ + .word ._1025\n\ + .word ._1026\n\ + .word ._1027\n\ +._1010:\n\ + bl sub_80F1E84\n\ + mov r0, #0x0\n\ + bl sub_80F2D04\n\ + ldr r1, ._1029\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1030:\n\ + .align 2, 0\n\ +._1029:\n\ + .word +0x2000000\n\ +._1011:\n\ + bl sub_80F1F10\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1031 @cond_branch\n\ + b ._1088\n\ +._1031:\n\ + mov r0, #0x4\n\ + bl sub_80EEFBC\n\ + ldr r1, ._1034\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1078\n\ +._1035:\n\ + .align 2, 0\n\ +._1034:\n\ + .word +0x2000000\n\ +._1012:\n\ + bl sub_80EEF34\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + beq ._1036 @cond_branch\n\ + b ._1088\n\ +._1036:\n\ + ldr r4, ._1039\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + str r2, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + b ._1038\n\ +._1040:\n\ + .align 2, 0\n\ +._1039:\n\ + .word +0x2000000\n\ +._1013:\n\ + ldr r0, ._1044\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1041 @cond_branch\n\ + b ._1088\n\ +._1041:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80EF814\n\ + ldr r1, ._1044 + 4\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1045:\n\ + .align 2, 0\n\ +._1044:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ +._1014:\n\ + bl sub_80F2620\n\ + ldr r1, ._1047\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1078\n\ +._1048:\n\ + .align 2, 0\n\ +._1047:\n\ + .word +0x2000000\n\ +._1015:\n\ + bl sub_80F638C\n\ + ldr r1, ._1051\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1016:\n\ + bl sub_80F63D0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1049 @cond_branch\n\ + ldr r1, ._1051\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x2\n\ + strh r0, [r1]\n\ + b ._1088\n\ +._1052:\n\ + .align 2, 0\n\ +._1051:\n\ + .word +0x2000000\n\ +._1049:\n\ + ldr r1, ._1054\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1055:\n\ + .align 2, 0\n\ +._1054:\n\ + .word +0x2000000\n\ +._1017:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + beq ._1056 @cond_branch\n\ + b ._1088\n\ +._1056:\n\ + ldr r1, ._1059\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + sub r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._1088\n\ +._1060:\n\ + .align 2, 0\n\ +._1059:\n\ + .word +0x2000000\n\ +._1018:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + beq ._1061 @cond_branch\n\ + b ._1088\n\ +._1061:\n\ + ldr r1, ._1064\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1065:\n\ + .align 2, 0\n\ +._1064:\n\ + .word +0x2000000\n\ +._1019:\n\ + mov r0, #0x1\n\ + bl sub_80F0264\n\ + ldr r1, ._1068\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1020:\n\ + bl sub_80F02A0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1088 @cond_branch\n\ + ldr r1, ._1068\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1069:\n\ + .align 2, 0\n\ +._1068:\n\ + .word +0x2000000\n\ +._1021:\n\ + mov r0, #0x2\n\ + bl sub_80F2C80\n\ + ldr r1, ._1072\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1022:\n\ + mov r0, #0x2\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1088 @cond_branch\n\ + ldr r1, ._1072\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1073:\n\ + .align 2, 0\n\ +._1072:\n\ + .word +0x2000000\n\ +._1023:\n\ + mov r0, #0x1\n\ + bl sub_80F3008\n\ + ldr r1, ._1075\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1078\n\ +._1076:\n\ + .align 2, 0\n\ +._1075:\n\ + .word +0x2000000\n\ +._1024:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._1088 @cond_branch\n\ + ldr r1, ._1079\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1078\n\ +._1080:\n\ + .align 2, 0\n\ +._1079:\n\ + .word +0x2000000\n\ +._1025:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._1082\n\ + bl SetVBlankCallback\n\ +._1038:\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ +._1078:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._1088\n\ +._1083:\n\ + .align 2, 0\n\ +._1082:\n\ + .word sub_80EBD18+1\n\ +._1026:\n\ + mov r0, #0x4\n\ + bl sub_80EED2C\n\ + ldr r1, ._1086\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + ldr r0, ._1086 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1088 @cond_branch\n\ + ldr r0, ._1086 + 8\n\ + ldr r2, ._1086 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ + b ._1088\n\ +._1087:\n\ + .align 2, 0\n\ +._1086:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800\n\ +._1027:\n\ + ldr r0, ._1089\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1088 @cond_branch\n\ + ldr r0, ._1089 + 4\n\ + bl sub_80EBDBC\n\ +._1088:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._1090:\n\ + .align 2, 0\n\ +._1089:\n\ + .word gPaletteFade\n\ + .word sub_80EDDBC+1"); +} +#else void sub_80EDB88() { switch (ewram0_10.var304) @@ -2205,7 +5919,129 @@ void sub_80EDB88() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EDDBC() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._1095\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r4, r0, r1\n\ + ldrh r0, [r4]\n\ + cmp r0, #0x1\n\ + beq ._1091 @cond_branch\n\ + cmp r0, #0x1\n\ + bgt ._1092 @cond_branch\n\ + cmp r0, #0\n\ + beq ._1093 @cond_branch\n\ + b ._1113\n\ +._1096:\n\ + .align 2, 0\n\ +._1095:\n\ + .word +0x2000000\n\ +._1092:\n\ + cmp r0, #0x2\n\ + beq ._1097 @cond_branch\n\ + b ._1113\n\ +._1093:\n\ + bl sub_80F5DD4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + beq ._1099 @cond_branch\n\ + cmp r0, #0x2\n\ + beq ._1100 @cond_branch\n\ + ldr r0, ._1103\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1101 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._1103 + 4\n\ + bl sub_80EBDBC\n\ + b ._1114\n\ +._1104:\n\ + .align 2, 0\n\ +._1103:\n\ + .word gMain\n\ + .word sub_80EDEE4+1\n\ +._1099:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + bl ShowMapNamePopUpWindow\n\ + b ._1114\n\ +._1100:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._1114\n\ +._1101:\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1113 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._1109\n\ + bl sub_80EBDBC\n\ + b ._1114\n\ +._1110:\n\ + .align 2, 0\n\ +._1109:\n\ + .word sub_80EDE70+1\n\ +._1091:\n\ + bl sub_80F0718\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1113 @cond_branch\n\ + bl ShowMapNamePopUpWindow\n\ + bl sub_80F3264\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + b ._1112\n\ +._1097:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._1113 @cond_branch\n\ +._1112:\n\ + strh r0, [r4]\n\ +._1113:\n\ + ldr r0, ._1115\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1114 @cond_branch\n\ + ldr r0, ._1115 + 4\n\ + ldr r1, ._1115 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x8\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1114:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._1116:\n\ + .align 2, 0\n\ +._1115:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void sub_80EDDBC() { switch (ewram0_10.var304) @@ -2250,6 +6086,7 @@ void sub_80EDDBC() } } +#endif void sub_80EDE70() { @@ -2274,6 +6111,228 @@ void sub_80EDE70() } +#if DEBUG +__attribute__((naked)) +void sub_80EDEE4() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._1134\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0xa\n\ + bls ._1132 @cond_branch\n\ + b ._1180\n\ +._1132:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._1134 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._1135:\n\ + .align 2, 0\n\ +._1134:\n\ + .word +0x2000000\n\ + .word ._1136\n\ +._1136:\n\ + .word ._1137\n\ + .word ._1138\n\ + .word ._1139\n\ + .word ._1140\n\ + .word ._1141\n\ + .word ._1142\n\ + .word ._1143\n\ + .word ._1144\n\ + .word ._1145\n\ + .word ._1146\n\ + .word ._1147\n\ +._1137:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + b ._1169\n\ +._1138:\n\ + ldr r0, ._1152\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1149 @cond_branch\n\ + b ._1180\n\ +._1149:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80F3130\n\ + ldr r1, ._1152 + 4\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1166\n\ +._1153:\n\ + .align 2, 0\n\ +._1152:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ +._1139:\n\ + bl sub_80F66E0\n\ + bl sub_80EEE08\n\ + ldr r1, ._1155\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1166\n\ +._1156:\n\ + .align 2, 0\n\ +._1155:\n\ + .word +0x2000000\n\ +._1140:\n\ + bl sub_80F1080\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1180 @cond_branch\n\ + ldr r1, ._1159\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1166\n\ +._1160:\n\ + .align 2, 0\n\ +._1159:\n\ + .word +0x2000000\n\ +._1141:\n\ + mov r0, #0x5\n\ + bl sub_80EEFBC\n\ + bl sub_80F38B8\n\ + ldr r1, ._1163\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1142:\n\ + bl sub_80F38EC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1180 @cond_branch\n\ + ldr r1, ._1163\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1166\n\ +._1164:\n\ + .align 2, 0\n\ +._1163:\n\ + .word +0x2000000\n\ +._1143:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._1180 @cond_branch\n\ + ldr r1, ._1167\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1166\n\ +._1168:\n\ + .align 2, 0\n\ +._1167:\n\ + .word +0x2000000\n\ +._1144:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._1170\n\ + bl SetVBlankCallback\n\ + b ._1169\n\ +._1171:\n\ + .align 2, 0\n\ +._1170:\n\ + .word sub_80EBD18+1\n\ +._1145:\n\ + mov r0, #0x3\n\ + bl sub_80EED2C\n\ + ldr r1, ._1174\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + ldr r0, ._1174 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1180 @cond_branch\n\ + ldr r0, ._1174 + 8\n\ + ldr r2, ._1174 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ + b ._1180\n\ +._1175:\n\ + .align 2, 0\n\ +._1174:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f000\n\ +._1146:\n\ + ldr r0, ._1178\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1180 @cond_branch\n\ +._1169:\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ +._1166:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._1180\n\ +._1179:\n\ + .align 2, 0\n\ +._1178:\n\ + .word gPaletteFade\n\ +._1147:\n\ + bl sub_80F170C\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1180 @cond_branch\n\ + ldr r0, ._1181\n\ + bl sub_80EBDBC\n\ +._1180:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._1182:\n\ + .align 2, 0\n\ +._1181:\n\ + .word sub_80EE06C+1"); +} +#else void sub_80EDEE4() { switch (ewram0_10.var304) @@ -2331,7 +6390,316 @@ void sub_80EDEE4() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EE06C() +{ + asm("\ + push {r4, r5, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._1185\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x8\n\ + bls ._1183 @cond_branch\n\ + b ._1248\n\ +._1183:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._1185 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._1186:\n\ + .align 2, 0\n\ +._1185:\n\ + .word +0x2000000\n\ + .word ._1187\n\ +._1187:\n\ + .word ._1188\n\ + .word ._1189\n\ + .word ._1190\n\ + .word ._1191\n\ + .word ._1192\n\ + .word ._1193\n\ + .word ._1194\n\ + .word ._1195\n\ + .word ._1196\n\ +._1188:\n\ + bl sub_80F15A8\n\ + ldr r1, ._1198\n\ + mov r5, #0xc1\n\ + lsl r5, r5, #0x2\n\ + add r1, r1, r5\n\ + b ._1221\n\ +._1199:\n\ + .align 2, 0\n\ +._1198:\n\ + .word +0x2000000\n\ +._1189:\n\ + ldr r2, ._1203\n\ + ldrh r1, [r2, #0x30]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + add r3, r2, #0\n\ + cmp r0, #0\n\ + beq ._1201 @cond_branch\n\ + ldr r1, ._1203 + 4\n\ + add r0, r4, r1\n\ + mov r2, #0x0\n\ + ldsh r0, [r0, r2]\n\ + cmp r0, #0\n\ + beq ._1201 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + bl sub_80F6A4C\n\ + mov r5, #0xc1\n\ + lsl r5, r5, #0x2\n\ + add r1, r4, r5\n\ + b ._1221\n\ +._1204:\n\ + .align 2, 0\n\ +._1203:\n\ + .word gMain\n\ + .word 0x87dc\n\ +._1201:\n\ + ldrh r1, [r3, #0x30]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1206 @cond_branch\n\ + ldr r1, ._1208\n\ + add r0, r4, r1\n\ + ldr r2, ._1208 + 4\n\ + add r1, r4, r2\n\ + mov r5, #0x0\n\ + ldsh r2, [r0, r5]\n\ + mov r5, #0x0\n\ + ldsh r0, [r1, r5]\n\ + cmp r2, r0\n\ + bge ._1206 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0x1\n\ + bl sub_80F6A4C\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ + b ._1221\n\ +._1209:\n\ + .align 2, 0\n\ +._1208:\n\ + .word 0x87dc\n\ + .word 0x8774\n\ +._1206:\n\ + ldrh r2, [r3, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + beq ._1210 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + mov r0, #0xb\n\ + bl sub_80EEFBC\n\ + ldr r0, ._1212\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + b ._1211\n\ +._1213:\n\ + .align 2, 0\n\ +._1212:\n\ + .word +0x2000000\n\ +._1210:\n\ + mov r0, #0x2\n\ + and r0, r0, r2\n\ + cmp r0, #0\n\ + bne ._1214 @cond_branch\n\ + b ._1248\n\ +._1214:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._1217\n\ + bl sub_80EBDBC\n\ + b ._1248\n\ +._1218:\n\ + .align 2, 0\n\ +._1217:\n\ + .word sub_80EE294+1\n\ +._1190:\n\ + bl sub_80F6AF0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1219 @cond_branch\n\ + b ._1248\n\ +._1219:\n\ + ldr r1, ._1222\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1221\n\ +._1223:\n\ + .align 2, 0\n\ +._1222:\n\ + .word +0x2000000\n\ +._1191:\n\ + bl sub_8055870\n\ + add r1, r0, #0\n\ + cmp r1, #0\n\ + bne ._1248 @cond_branch\n\ + ldr r0, ._1226\n\ + mov r5, #0xc1\n\ + lsl r5, r5, #0x2\n\ + add r0, r0, r5\n\ + strh r1, [r0]\n\ + b ._1248\n\ +._1227:\n\ + .align 2, 0\n\ +._1226:\n\ + .word +0x2000000\n\ +._1192:\n\ + bl sub_80F3B00\n\ + ldr r1, ._1229\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ +._1221:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._1248\n\ +._1230:\n\ + .align 2, 0\n\ +._1229:\n\ + .word +0x2000000\n\ +._1193:\n\ + bl sub_80F3B58\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1248 @cond_branch\n\ + bl sub_80F1494\n\ + ldr r1, ._1233\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + bl sub_80EED9C\n\ + b ._1248\n\ +._1234:\n\ + .align 2, 0\n\ +._1233:\n\ + .word +0x2000000\n\ +._1194:\n\ + bl sub_80F68E8\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1236 @cond_branch\n\ + cmp r0, #0x1\n\ + bne ._1236 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + bl sub_80F3B94\n\ + ldr r0, ._1238\n\ + mov r5, #0xc1\n\ + lsl r5, r5, #0x2\n\ + add r0, r0, r5\n\ + mov r1, #0x7\n\ + strh r1, [r0]\n\ + b ._1249\n\ +._1239:\n\ + .align 2, 0\n\ +._1238:\n\ + .word +0x2000000\n\ +._1236:\n\ + ldr r0, ._1242\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1248 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + bl sub_80F3B94\n\ + ldr r0, ._1242 + 4\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + mov r1, #0x8\n\ + strh r1, [r0]\n\ + b ._1248\n\ +._1243:\n\ + .align 2, 0\n\ +._1242:\n\ + .word gMain\n\ + .word +0x2000000\n\ +._1195:\n\ + bl sub_80F3BD4\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1248 @cond_branch\n\ + ldr r0, ._1246\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r0, r2\n\ +._1211:\n\ + mov r1, #0x4\n\ + strh r1, [r0]\n\ + b ._1248\n\ +._1247:\n\ + .align 2, 0\n\ +._1246:\n\ + .word +0x2000000\n\ +._1196:\n\ + bl sub_80F3BD4\n\ + lsl r0, r0, #0x18\n\ + lsr r4, r0, #0x18\n\ + cmp r4, #0\n\ + bne ._1248 @cond_branch\n\ + mov r0, #0x5\n\ + bl sub_80EEFBC\n\ + ldr r0, ._1250\n\ + mov r5, #0xc1\n\ + lsl r5, r5, #0x2\n\ + add r0, r0, r5\n\ + strh r4, [r0]\n\ +._1248:\n\ + ldr r0, ._1250 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1249 @cond_branch\n\ + ldr r0, ._1250 + 8\n\ + ldr r1, ._1250 + 12\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x4\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1249:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._1251:\n\ + .align 2, 0\n\ +._1250:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void sub_80EE06C() { switch (ewram0_10.var304) @@ -2417,7 +6785,204 @@ void sub_80EE06C() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EE294() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._1254\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r0, r1, r2\n\ + ldrh r0, [r0]\n\ + add r4, r1, #0\n\ + cmp r0, #0x8\n\ + bls ._1252 @cond_branch\n\ + b ._1288\n\ +._1252:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._1254 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._1255:\n\ + .align 2, 0\n\ +._1254:\n\ + .word +0x2000000\n\ + .word ._1256\n\ +._1256:\n\ + .word ._1257\n\ + .word ._1258\n\ + .word ._1259\n\ + .word ._1260\n\ + .word ._1261\n\ + .word ._1262\n\ + .word ._1263\n\ + .word ._1264\n\ + .word ._1265\n\ +._1257:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r3, #0x10\n\ + b ._1266\n\ +._1258:\n\ + ldr r0, ._1270\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1267 @cond_branch\n\ + b ._1288\n\ +._1267:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80F3C2C\n\ + bl sub_80EEE08\n\ + ldr r1, ._1270 + 4\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1280\n\ +._1271:\n\ + .align 2, 0\n\ +._1270:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ +._1259:\n\ + bl sub_80F6134\n\ + mov r0, #0x1\n\ + bl sub_80F0264\n\ + ldr r1, ._1274\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1260:\n\ + bl sub_80F02A0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1288 @cond_branch\n\ + ldr r1, ._1274\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1280\n\ +._1275:\n\ + .align 2, 0\n\ +._1274:\n\ + .word +0x2000000\n\ +._1261:\n\ + mov r0, #0x4\n\ + bl sub_80EEFBC\n\ + mov r0, #0x1\n\ + bl sub_80F3008\n\ + ldr r0, ._1277\n\ + bl SetVBlankCallback\n\ + ldr r1, ._1277 + 4\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r1, r2\n\ + b ._1280\n\ +._1278:\n\ + .align 2, 0\n\ +._1277:\n\ + .word sub_80EBD18+1\n\ + .word +0x2000000\n\ +._1262:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._1288 @cond_branch\n\ + ldr r1, ._1281\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1280\n\ +._1282:\n\ + .align 2, 0\n\ +._1281:\n\ + .word +0x2000000\n\ +._1263:\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ +._1266:\n\ + bl BeginNormalPaletteFade\n\ + mov r2, #0xc1\n\ + lsl r2, r2, #0x2\n\ + add r1, r4, r2\n\ +._1280:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._1288\n\ +._1264:\n\ + mov r0, #0x4\n\ + bl sub_80EED2C\n\ + ldr r1, ._1286\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + ldr r0, ._1286 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1288 @cond_branch\n\ + ldr r0, ._1286 + 8\n\ + ldr r2, ._1286 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ + b ._1288\n\ +._1287:\n\ + .align 2, 0\n\ +._1286:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800\n\ +._1265:\n\ + ldr r0, ._1289\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1288 @cond_branch\n\ + ldr r0, ._1289 + 4\n\ + bl sub_80EBDBC\n\ +._1288:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._1290:\n\ + .align 2, 0\n\ +._1289:\n\ + .word gPaletteFade\n\ + .word sub_80EDDBC+1"); +} +#else void sub_80EE294() { switch (ewram0_10.var304) @@ -2468,7 +7033,293 @@ void sub_80EE294() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EE3D8() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._1293\n\ + mov r1, #0xc1\n\ + lsl r1, r1, #0x2\n\ + add r0, r0, r1\n\ + ldrh r0, [r0]\n\ + cmp r0, #0xd\n\ + bls ._1291 @cond_branch\n\ + b ._1354\n\ +._1291:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._1293 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._1294:\n\ + .align 2, 0\n\ +._1293:\n\ + .word +0x2000000\n\ + .word ._1295\n\ +._1295:\n\ + .word ._1296\n\ + .word ._1297\n\ + .word ._1298\n\ + .word ._1299\n\ + .word ._1300\n\ + .word ._1301\n\ + .word ._1302\n\ + .word ._1303\n\ + .word ._1304\n\ + .word ._1305\n\ + .word ._1306\n\ + .word ._1307\n\ + .word ._1308\n\ + .word ._1309\n\ +._1296:\n\ + bl sub_80F1E84\n\ + mov r0, #0x0\n\ + bl sub_80F2D04\n\ + ldr r1, ._1311\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1312:\n\ + .align 2, 0\n\ +._1311:\n\ + .word +0x2000000\n\ +._1297:\n\ + bl sub_80F1F10\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1313 @cond_branch\n\ + b ._1354\n\ +._1313:\n\ + mov r0, #0x9\n\ + bl sub_80EEFBC\n\ + ldr r1, ._1316\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1317:\n\ + .align 2, 0\n\ +._1316:\n\ + .word +0x2000000\n\ +._1298:\n\ + bl sub_80EEF34\n\ + lsl r0, r0, #0x18\n\ + lsr r2, r0, #0x18\n\ + cmp r2, #0\n\ + beq ._1318 @cond_branch\n\ + b ._1354\n\ +._1318:\n\ + ldr r4, ._1321\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + str r2, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + b ._1320\n\ +._1322:\n\ + .align 2, 0\n\ +._1321:\n\ + .word +0x2000000\n\ +._1299:\n\ + ldr r0, ._1326\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1323 @cond_branch\n\ + b ._1354\n\ +._1323:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl sub_80EED0C\n\ + bl sub_80EF814\n\ + bl sub_80EEE08\n\ + ldr r1, ._1326 + 4\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1327:\n\ + .align 2, 0\n\ +._1326:\n\ + .word gPaletteFade\n\ + .word +0x2000000\n\ +._1300:\n\ + bl sub_80F2620\n\ + ldr r1, ._1329\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1330:\n\ + .align 2, 0\n\ +._1329:\n\ + .word +0x2000000\n\ +._1301:\n\ + mov r0, #0x2\n\ + bl sub_80F0264\n\ + ldr r1, ._1334\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1302:\n\ + bl sub_80F02A0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._1331 @cond_branch\n\ + b ._1354\n\ +._1331:\n\ + ldr r1, ._1334\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1335:\n\ + .align 2, 0\n\ +._1334:\n\ + .word +0x2000000\n\ +._1303:\n\ + mov r0, #0x3\n\ + bl sub_80F2C80\n\ + ldr r1, ._1338\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ +._1304:\n\ + mov r0, #0x3\n\ + bl sub_80F2CBC\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1354 @cond_branch\n\ + ldr r1, ._1338\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1339:\n\ + .align 2, 0\n\ +._1338:\n\ + .word +0x2000000\n\ +._1305:\n\ + mov r0, #0x2\n\ + bl sub_80F3008\n\ + ldr r1, ._1341\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1342:\n\ + .align 2, 0\n\ +._1341:\n\ + .word +0x2000000\n\ +._1306:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._1354 @cond_branch\n\ + ldr r1, ._1345\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + b ._1344\n\ +._1346:\n\ + .align 2, 0\n\ +._1345:\n\ + .word +0x2000000\n\ +._1307:\n\ + bl sub_80F6F10\n\ + ldr r4, ._1348\n\ + mov r1, #0xc2\n\ + lsl r1, r1, #0x2\n\ + add r0, r4, r1\n\ + ldr r0, [r0]\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + mov r2, #0x0\n\ + str r2, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, ._1348 + 4\n\ + bl SetVBlankCallback\n\ +._1320:\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r4, r0\n\ +._1344:\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + b ._1354\n\ +._1349:\n\ + .align 2, 0\n\ +._1348:\n\ + .word +0x2000000\n\ + .word sub_80EBD68+1\n\ +._1308:\n\ + mov r0, #0x5\n\ + bl sub_80EED2C\n\ + ldr r1, ._1352\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r1, r1, r0\n\ + ldrh r0, [r1]\n\ + add r0, r0, #0x1\n\ + strh r0, [r1]\n\ + ldr r0, ._1352 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1354 @cond_branch\n\ + ldr r0, ._1352 + 8\n\ + ldr r2, ._1352 + 12\n\ + mov r1, #0x0\n\ + mov r3, #0x4\n\ + bl debug_sub_8008218\n\ + b ._1354\n\ +._1353:\n\ + .align 2, 0\n\ +._1352:\n\ + .word +0x2000000\n\ + .word gLinkOpen\n\ + .word 0x6007de0\n\ + .word 0x600f800\n\ +._1309:\n\ + ldr r0, ._1355\n\ + ldrb r1, [r0, #0x7]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._1354 @cond_branch\n\ + ldr r0, ._1355 + 4\n\ + bl sub_80EBDBC\n\ +._1354:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._1356:\n\ + .align 2, 0\n\ +._1355:\n\ + .word gPaletteFade\n\ + .word sub_80EE58C+1"); +} +#else void sub_80EE3D8() { switch (ewram0_10.var304) @@ -2544,7 +7395,143 @@ void sub_80EE3D8() break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_80EE58C() +{ + asm("\ + push {r4, r5, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r5, ._1361\n\ + mov r0, #0xc1\n\ + lsl r0, r0, #0x2\n\ + add r4, r5, r0\n\ + ldrh r0, [r4]\n\ + cmp r0, #0x1\n\ + beq ._1357 @cond_branch\n\ + cmp r0, #0x1\n\ + bgt ._1358 @cond_branch\n\ + cmp r0, #0\n\ + beq ._1359 @cond_branch\n\ + b ._1383\n\ +._1362:\n\ + .align 2, 0\n\ +._1361:\n\ + .word +0x2000000\n\ +._1358:\n\ + cmp r0, #0x2\n\ + beq ._1363 @cond_branch\n\ + b ._1383\n\ +._1359:\n\ + bl sub_80F5DD4\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + beq ._1365 @cond_branch\n\ + cmp r0, #0x2\n\ + beq ._1366 @cond_branch\n\ + ldr r0, ._1369\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1367 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._1369 + 4\n\ + bl sub_80EBDBC\n\ + b ._1384\n\ +._1370:\n\ + .align 2, 0\n\ +._1369:\n\ + .word gMain\n\ + .word sub_80EE658+1\n\ +._1365:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r1, ._1372\n\ + add r0, r5, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80F0FFC\n\ + b ._1384\n\ +._1373:\n\ + .align 2, 0\n\ +._1372:\n\ + .word 0x876e\n\ +._1366:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + strh r0, [r4]\n\ + b ._1384\n\ +._1367:\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1383 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldr r0, ._1377\n\ + bl sub_80EBDBC\n\ + b ._1384\n\ +._1378:\n\ + .align 2, 0\n\ +._1377:\n\ + .word sub_80EE8F4+1\n\ +._1357:\n\ + bl sub_80F0718\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._1383 @cond_branch\n\ + ldr r1, ._1381\n\ + add r0, r5, r1\n\ + ldrb r0, [r0]\n\ + bl sub_80F0FFC\n\ + bl sub_80F3264\n\ + ldrh r0, [r4]\n\ + add r0, r0, #0x1\n\ + b ._1380\n\ +._1382:\n\ + .align 2, 0\n\ +._1381:\n\ + .word 0x876e\n\ +._1363:\n\ + bl sub_8055870\n\ + cmp r0, #0\n\ + bne ._1383 @cond_branch\n\ +._1380:\n\ + strh r0, [r4]\n\ +._1383:\n\ + ldr r0, ._1385\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1384 @cond_branch\n\ + ldr r0, ._1385 + 4\n\ + ldr r1, ._1385 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x1\n\ + mov r2, #0x3\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1384:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._1386:\n\ + .align 2, 0\n\ +._1385:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else void sub_80EE58C() { switch (ewram0_10.var304) @@ -2588,6 +7575,7 @@ void sub_80EE58C() break; } } +#endif void sub_80EE658() { @@ -3018,6 +8006,108 @@ _080EEC0A:\n\ #endif // var6dad and var6dae must be s8 in this func +#if DEBUG +__attribute__((naked)) +bool8 sub_80EEC10() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._1563\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1559 @cond_branch\n\ + ldr r1, ._1563 + 4\n\ + add r3, r1, #1\n\ + add r2, r1, #5\n\ +._1561:\n\ + ldrb r0, [r1]\n\ + sub r0, r0, #0x1\n\ + strb r0, [r1]\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bge ._1560 @cond_branch\n\ + ldrb r0, [r3]\n\ + sub r0, r0, #0x1\n\ + strb r0, [r1]\n\ +._1560:\n\ + mov r0, #0x0\n\ + ldsb r0, [r1, r0]\n\ + add r0, r0, r2\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._1561 @cond_branch\n\ + mov r0, #0x1\n\ + b ._1568\n\ +._1564:\n\ + .align 2, 0\n\ +._1563:\n\ + .word gMain\n\ + .word +0x2006dad\n\ +._1559:\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1565 @cond_branch\n\ + ldr r1, ._1569\n\ + mov r4, #0x0\n\ + mov r2, #0x1\n\ + ldsb r2, [r1, r2]\n\ + add r3, r1, #5\n\ +._1567:\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + lsl r0, r0, #0x18\n\ + asr r0, r0, #0x18\n\ + cmp r0, r2\n\ + blt ._1566 @cond_branch\n\ + strb r4, [r1]\n\ +._1566:\n\ + mov r0, #0x0\n\ + ldsb r0, [r1, r0]\n\ + add r0, r0, r3\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._1567 @cond_branch\n\ + mov r0, #0x1\n\ + b ._1568\n\ +._1570:\n\ + .align 2, 0\n\ +._1569:\n\ + .word +0x2006dad\n\ +._1565:\n\ + ldr r0, ._1572\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1571 @cond_branch\n\ + ldr r0, ._1572 + 4\n\ + ldr r1, ._1572 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x6\n\ + mov r2, #0xa\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1571:\n\ + mov r0, #0x0\n\ +._1568:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ +._1573:\n\ + .align 2, 0\n\ +._1572:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else bool8 sub_80EEC10() { if (gMain.newKeys & 0x40) @@ -3040,7 +8130,104 @@ bool8 sub_80EEC10() } return FALSE; } +#endif +#if DEBUG +__attribute__((naked)) +bool8 sub_80EEC90() +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._1577\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x10\n\ + lsr r3, r0, #0x10\n\ + cmp r3, #0\n\ + beq ._1574 @cond_branch\n\ + ldr r2, ._1577 + 4\n\ + ldr r0, ._1577 + 8\n\ + add r1, r2, r0\n\ + ldrb r0, [r1]\n\ + sub r0, r0, #0x1\n\ + strb r0, [r1]\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bge ._1580 @cond_branch\n\ + ldr r3, ._1577 + 12\n\ + add r0, r2, r3\n\ + ldrb r0, [r0]\n\ + sub r0, r0, #0x1\n\ + strb r0, [r1]\n\ + b ._1580\n\ +._1578:\n\ + .align 2, 0\n\ +._1577:\n\ + .word gMain\n\ + .word +0x2000000\n\ + .word 0x6dad\n\ + .word 0x6dae\n\ +._1574:\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._1579 @cond_branch\n\ + ldr r0, ._1582\n\ + ldr r4, ._1582 + 4\n\ + add r2, r0, r4\n\ + ldrb r1, [r2]\n\ + add r1, r1, #0x1\n\ + strb r1, [r2]\n\ + add r4, r4, #0x1\n\ + add r0, r0, r4\n\ + lsl r1, r1, #0x18\n\ + asr r1, r1, #0x18\n\ + ldrb r0, [r0]\n\ + lsl r0, r0, #0x18\n\ + asr r0, r0, #0x18\n\ + cmp r1, r0\n\ + blt ._1580 @cond_branch\n\ + strb r3, [r2]\n\ +._1580:\n\ + mov r0, #0x1\n\ + b ._1581\n\ +._1583:\n\ + .align 2, 0\n\ +._1582:\n\ + .word +0x2000000\n\ + .word 0x6dad\n\ +._1579:\n\ + ldr r0, ._1585\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + bne ._1584 @cond_branch\n\ + ldr r0, ._1585 + 4\n\ + ldr r1, ._1585 + 8\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + mov r1, #0x4\n\ + str r1, [sp]\n\ + mov r1, #0x6\n\ + mov r2, #0xa\n\ + mov r3, #0x2\n\ + bl debug_sub_8008264\n\ +._1584:\n\ + mov r0, #0x0\n\ +._1581:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ +._1586:\n\ + .align 2, 0\n\ +._1585:\n\ + .word gLinkOpen\n\ + .word gLink\n\ + .word 0xfbd"); +} +#else bool8 sub_80EEC90() { if (gMain.newKeys & 0x40) @@ -3057,6 +8244,7 @@ bool8 sub_80EEC90() } return FALSE; } +#endif void sub_80EED0C() { -- cgit v1.2.3 From 9c2f7c88f0d7e57c99d548870e78185e05cc472a Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 18 Jan 2018 13:54:10 -0600 Subject: add more debug code --- src/battle/battle_records.c | 60 ++++++++ src/field/mauville_man.c | 195 ------------------------- src/pokemon/mail.c | 199 +++++++++++++++++++++++++ src/scene/cute_sketch.c | 344 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 603 insertions(+), 195 deletions(-) (limited to 'src') diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 17e2352ff..4fce958fa 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -223,6 +223,66 @@ void UpdateLinkBattleRecords(int id) gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language); } +#if DEBUG +__attribute__((naked)) +void debug_sub_81257E0(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + add sp, sp, #0xfffffffc\n\ + bl InitLinkBattleRecords\n\ + mov r5, #0x0\n\ + ldr r6, ._62\n\ + sub r0, r6, #2\n\ + mov r8, r0\n\ + ldr r7, ._62 + 4\n\ +._61:\n\ + ldr r0, ._62 + 8\n\ + lsl r3, r5, #0x2\n\ + add r3, r3, r0\n\ + ldrb r4, [r3]\n\ + sub r4, r4, #0x1\n\ + lsl r0, r4, #0x1\n\ + add r0, r0, r4\n\ + lsl r0, r0, #0x2\n\ + add r1, r0, r6\n\ + add r0, r0, r8\n\ + ldrh r2, [r0]\n\ + ldrb r3, [r3, #0x1]\n\ + ldr r0, ._62 + 12\n\ + lsl r4, r4, #0x2\n\ + add r4, r4, r0\n\ + ldrb r4, [r4, #0x1]\n\ + lsl r0, r4, #0x3\n\ + sub r0, r0, r4\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r7\n\ + ldrb r0, [r0, #0x1a]\n\ + str r0, [sp]\n\ + ldr r0, ._62 + 16\n\ + bl UpdateLinkBattleRecords_\n\ + add r5, r5, #0x1\n\ + cmp r5, #0x2\n\ + bls ._61 @cond_branch\n\ + add sp, sp, #0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._63:\n\ + .align 2, 0\n\ +._62:\n\ + .word gUnknown_083F8410+0xa\n\ + .word gLinkPlayers\n\ + .word gUnknown_083F8410+0x5c\n\ + .word gLinkPlayerMapObjects\n\ + .word gSaveBlock1+0x30b8"); +} +#endif + static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) { ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4); diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 144c0235a..e41ea1628 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -1392,198 +1392,3 @@ bool8 ScrSpecial_StorytellerInitializeRandomStat(void) { return StorytellerInitializeRandomStat(); } - -#if DEBUG -__attribute__((naked)) -void This_is_not_HandleReadMail() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r2, r2, #0x18\n" - " lsr r5, r2, #0x18\n" - " ldr r0, .__3\n" - " ldrb r3, [r0]\n" - " cmp r3, #0\n" - " beq .__1 @cond_branch\n" - " ldr r2, .__3 + 4\n" - " add r1, r2, #0\n" - " add r1, r1, #0xff\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r0, .__3 + 8\n" - " ldrh r1, [r0]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - " add r0, r2, r3\n" - " strb r1, [r0]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, .__3 + 12\n" - " str r0, [r1]\n" - " add r3, r3, #0x8\n" - " add r1, r2, r3\n" - " ldr r0, .__3 + 16\n" - " str r0, [r1]\n" - " ldr r0, .__3 + 20\n" - " ldrh r1, [r0]\n" - " b .__2\n" - ".__4:\n" - " .align 2, 0\n" - ".__3:\n" - " .word gUnknown_03000748+0x4\n" - " .word +0x2000000\n" - " .word gSpecialVar_0x8004\n" - " .word EasyChat_GetWordText+1\n" - " .word ConvertEasyChatWordsToString+1\n" - " .word gSpecialVar_0x8006\n" - ".__1:\n" - " ldr r2, .__7\n" - " add r1, r2, #0\n" - " add r1, r1, #0xff\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " add r0, r0, #0xfb\n" - " add r1, r2, r0\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, .__7 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x84\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, .__7 + 8\n" - " str r0, [r1]\n" - " ldrh r1, [r4, #0x20]\n" - " add r0, r1, #0\n" - " sub r0, r0, #0x79\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi .__5 @cond_branch\n" - " sub r1, r1, #0x79\n" - ".__2:\n" - " add r0, r2, #0\n" - " add r0, r0, #0xfa\n" - " strb r1, [r0]\n" - " b .__6\n" - ".__8:\n" - " .align 2, 0\n" - ".__7:\n" - " .word +0x2000000\n" - " .word EasyChat_GetWordText+1\n" - " .word ConvertEasyChatWordsToString+1\n" - ".__5:\n" - " add r0, r2, #0\n" - " add r0, r0, #0xfa\n" - " strb r3, [r0]\n" - " mov r5, #0x0\n" - ".__6:\n" - " ldr r1, .__12\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq .__9 @cond_branch\n" - " cmp r0, #0x1\n" - " beq .__10 @cond_branch\n" - ".__9:\n" - " mov r3, #0x86\n" - " lsl r3, r3, #0x1\n" - " add r2, r1, r3\n" - " add r0, r1, #0\n" - " add r0, r0, #0xfa\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, .__12 + 4\n" - " b .__11\n" - ".__13:\n" - " .align 2, 0\n" - ".__12:\n" - " .word +0x2000000\n" - " .word gUnknown_083E5730\n" - ".__10:\n" - " mov r0, #0x86\n" - " lsl r0, r0, #0x1\n" - " add r2, r1, r0\n" - " add r0, r1, #0\n" - " add r0, r0, #0xfa\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, .__18\n" - ".__11:\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " ldrh r0, [r4, #0x1e]\n" - " mov r1, sp\n" - " bl MailSpeciesToSpecies\n" - " lsl r0, r0, #0x10\n" - " ldr r1, .__18 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xcd\n" - " lsl r1, r1, #0x11\n" - " cmp r0, r1\n" - " bhi .__14 @cond_branch\n" - " ldr r0, .__18 + 8\n" - " add r1, r0, #0\n" - " add r1, r1, #0xfa\n" - " ldrb r2, [r1]\n" - " add r1, r0, #0\n" - " cmp r2, #0x6\n" - " beq .__15 @cond_branch\n" - " cmp r2, #0x9\n" - " beq .__16 @cond_branch\n" - " b .__17\n" - ".__19:\n" - " .align 2, 0\n" - ".__18:\n" - " .word gUnknown_083E57A4\n" - " .word 0xffff0000\n" - " .word +0x2000000\n" - ".__15:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x1\n" - " b .__21\n" - ".__16:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x2\n" - " b .__21\n" - ".__14:\n" - " ldr r1, .__22\n" - ".__17:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x0\n" - ".__21:\n" - " strb r0, [r2]\n" - " add r0, r1, #0\n" - " add r0, r0, #0xf4\n" - " str r4, [r0]\n" - " sub r0, r0, #0x8\n" - " str r6, [r0]\n" - " add r0, r0, #0xc\n" - " strb r5, [r0]\n" - " ldr r0, .__22 + 4\n" - " bl SetMainCallback2\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - ".__23:\n" - " .align 2, 0\n" - ".__22:\n" - " .word +0x2000000\n" - " .word sub_80F8D50+1\n" - "\n" - ); -} -#endif diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 6e03958e6..1ad8d8376 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -327,6 +327,204 @@ static void sub_80F8F58(void); static void sub_80F8F78(void); static void sub_80F8FB4(void); +// some debug variable, I guess. +// TODO: where exactly is this located? +__attribute__((section(".bss"))) /*static*/ u8 gUnknown_0300074C = 0; + +#if DEBUG +__attribute__((naked)) +void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) +{ + asm( + " push {r4, r5, r6, lr}\n" + " add sp, sp, #0xfffffffc\n" + " add r4, r0, #0\n" + " add r6, r1, #0\n" + " lsl r2, r2, #0x18\n" + " lsr r5, r2, #0x18\n" + " ldr r0, .__3\n" + " ldrb r3, [r0]\n" + " cmp r3, #0\n" + " beq .__1 @cond_branch\n" + " ldr r2, .__3 + 4\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " ldr r0, .__3 + 8\n" + " ldrh r1, [r0]\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x1\n" + " add r0, r2, r3\n" + " strb r1, [r0]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, .__3 + 12\n" + " str r0, [r1]\n" + " add r3, r3, #0x8\n" + " add r1, r2, r3\n" + " ldr r0, .__3 + 16\n" + " str r0, [r1]\n" + " ldr r0, .__3 + 20\n" + " ldrh r1, [r0]\n" + " b .__2\n" + ".__4:\n" + " .align 2, 0\n" + ".__3:\n" + " .word gUnknown_0300074C\n" + " .word +0x2000000\n" + " .word gSpecialVar_0x8004\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + " .word gSpecialVar_0x8006\n" + ".__1:\n" + " ldr r2, .__7\n" + " add r1, r2, #0\n" + " add r1, r1, #0xff\n" + " mov r0, #0x5\n" + " strb r0, [r1]\n" + " add r0, r0, #0xfb\n" + " add r1, r2, r0\n" + " mov r0, #0x1\n" + " strb r0, [r1]\n" + " mov r0, #0x82\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, .__7 + 4\n" + " str r0, [r1]\n" + " mov r0, #0x84\n" + " lsl r0, r0, #0x1\n" + " add r1, r2, r0\n" + " ldr r0, .__7 + 8\n" + " str r0, [r1]\n" + " ldrh r1, [r4, #0x20]\n" + " add r0, r1, #0\n" + " sub r0, r0, #0x79\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, #0xb\n" + " bhi .__5 @cond_branch\n" + " sub r1, r1, #0x79\n" + ".__2:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r1, [r0]\n" + " b .__6\n" + ".__8:\n" + " .align 2, 0\n" + ".__7:\n" + " .word +0x2000000\n" + " .word EasyChat_GetWordText+1\n" + " .word ConvertEasyChatWordsToString+1\n" + ".__5:\n" + " add r0, r2, #0\n" + " add r0, r0, #0xfa\n" + " strb r3, [r0]\n" + " mov r5, #0x0\n" + ".__6:\n" + " ldr r1, .__12\n" + " mov r2, #0x80\n" + " lsl r2, r2, #0x1\n" + " add r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, #0\n" + " beq .__9 @cond_branch\n" + " cmp r0, #0x1\n" + " beq .__10 @cond_branch\n" + ".__9:\n" + " mov r3, #0x86\n" + " lsl r3, r3, #0x1\n" + " add r2, r1, r3\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, .__12 + 4\n" + " b .__11\n" + ".__13:\n" + " .align 2, 0\n" + ".__12:\n" + " .word +0x2000000\n" + " .word gUnknown_083E5730\n" + ".__10:\n" + " mov r0, #0x86\n" + " lsl r0, r0, #0x1\n" + " add r2, r1, r0\n" + " add r0, r1, #0\n" + " add r0, r0, #0xfa\n" + " ldrb r0, [r0]\n" + " lsl r0, r0, #0x3\n" + " ldr r1, .__18\n" + ".__11:\n" + " add r0, r0, r1\n" + " str r0, [r2]\n" + " ldrh r0, [r4, #0x1e]\n" + " mov r1, sp\n" + " bl MailSpeciesToSpecies\n" + " lsl r0, r0, #0x10\n" + " ldr r1, .__18 + 4\n" + " add r0, r0, r1\n" + " mov r1, #0xcd\n" + " lsl r1, r1, #0x11\n" + " cmp r0, r1\n" + " bhi .__14 @cond_branch\n" + " ldr r0, .__18 + 8\n" + " add r1, r0, #0\n" + " add r1, r1, #0xfa\n" + " ldrb r2, [r1]\n" + " add r1, r0, #0\n" + " cmp r2, #0x6\n" + " beq .__15 @cond_branch\n" + " cmp r2, #0x9\n" + " beq .__16 @cond_branch\n" + " b .__17\n" + ".__19:\n" + " .align 2, 0\n" + ".__18:\n" + " .word gUnknown_083E57A4\n" + " .word 0xffff0000\n" + " .word +0x2000000\n" + ".__15:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x1\n" + " b .__21\n" + ".__16:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x2\n" + " b .__21\n" + ".__14:\n" + " ldr r1, .__22\n" + ".__17:\n" + " add r2, r1, #0\n" + " add r2, r2, #0xfb\n" + " mov r0, #0x0\n" + ".__21:\n" + " strb r0, [r2]\n" + " add r0, r1, #0\n" + " add r0, r0, #0xf4\n" + " str r4, [r0]\n" + " sub r0, r0, #0x8\n" + " str r6, [r0]\n" + " add r0, r0, #0xc\n" + " strb r5, [r0]\n" + " ldr r0, .__22 + 4\n" + " bl SetMainCallback2\n" + " add sp, sp, #0x4\n" + " pop {r4, r5, r6}\n" + " pop {r0}\n" + " bx r0\n" + ".__23:\n" + " .align 2, 0\n" + ".__22:\n" + " .word +0x2000000\n" + " .word sub_80F8D50+1\n" + "\n" + ); +} +#else void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) { u16 mailDesign; @@ -390,6 +588,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) SetMainCallback2(sub_80F8D50); } +#endif #define RETURN_UP_STATE break #define RETURN_SKIP_STATE return FALSE diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c index 5317bc334..c4d9463f5 100644 --- a/src/scene/cute_sketch.c +++ b/src/scene/cute_sketch.c @@ -29,6 +29,350 @@ void sub_80FD1C8(u16); u16 sub_80FD39C(u16*); u16 sub_80FD68C(u16*, u16*, u16*); +#if DEBUG + +__attribute__((naked)) +void debug_sub_8110CCC(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, #0x0\n\ + mov r1, #0x0\n\ + ldr r2, ._5\n\ + ldr r6, ._5 + 4\n\ +._7:\n\ + lsl r0, r1, #0x3\n\ + add r4, r0, r2\n\ + ldrh r0, [r6, #0x1c]\n\ + ldrh r3, [r4, #0x4]\n\ + cmp r0, r3\n\ + bne ._1 @cond_branch\n\ + ldrh r0, [r4, #0x6]\n\ + bl FlagGet\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._4 @cond_branch\n\ + ldrb r0, [r6, #0x1f]\n\ + ldr r1, [r4]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + bl StringLength\n\ + mov r1, #0xc\n\ + sub r1, r1, r0\n\ + lsl r1, r1, #0x10\n\ + lsr r5, r1, #0x10\n\ + cmp r1, #0\n\ + bge ._3 @cond_branch\n\ + mov r5, #0x0\n\ +._3:\n\ + mov r7, #0x1\n\ + mov r0, #0x10\n\ + mov r1, #0xe\n\ + mov r2, #0x1d\n\ + mov r3, #0x13\n\ + bl Menu_DrawStdWindowFrame\n\ + add r0, r6, #0\n\ + add r0, r0, #0x8\n\ + mov r1, #0x11\n\ + mov r2, #0xf\n\ + bl Menu_PrintText\n\ + ldrb r0, [r6, #0x1f]\n\ + ldr r1, [r4]\n\ + lsl r0, r0, #0x2\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + add r1, r5, #0\n\ + add r1, r1, #0x11\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + mov r2, #0x11\n\ + bl Menu_PrintText\n\ + b ._4\n\ +._6:\n\ + .align 2, 0\n\ +._5:\n\ + .word gUnknown_083E79C0\n\ + .word +0x2000000\n\ +._1:\n\ + add r0, r1, #1\n\ + lsl r0, r0, #0x10\n\ + lsr r1, r0, #0x10\n\ + cmp r1, #0\n\ + beq ._7 @cond_branch\n\ +._4:\n\ + cmp r7, #0\n\ + bne ._8 @cond_branch\n\ + mov r0, #0x10\n\ + mov r1, #0x10\n\ + mov r2, #0x1d\n\ + mov r3, #0x13\n\ + bl Menu_DrawStdWindowFrame\n\ + ldr r0, ._9\n\ + mov r1, #0x11\n\ + mov r2, #0x11\n\ + bl Menu_PrintText\n\ + mov r0, #0x10\n\ + mov r1, #0xe\n\ + mov r2, #0x1d\n\ + mov r3, #0xf\n\ + bl Menu_EraseWindowRect\n\ +._8:\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._10:\n\ + .align 2, 0\n\ +._9:\n\ + .word +0x2000008"); +} + +__attribute__((naked)) +void debug_sub_8110D84(void) +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._13\n\ + ldrh r0, [r0, #0x4]\n\ + cmp r0, #0x7\n\ + bls ._11 @cond_branch\n\ + b ._65\n\ +._11:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._13 + 4\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._14:\n\ + .align 2, 0\n\ +._13:\n\ + .word +0x2000000\n\ + .word ._15\n\ +._15:\n\ + .word ._16\n\ + .word ._17\n\ + .word ._18\n\ + .word ._19\n\ + .word ._20\n\ + .word ._21\n\ + .word ._22\n\ + .word ._23\n\ +._16:\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginNormalPaletteFade\n\ + ldr r1, ._25\n\ + ldrh r0, [r1, #0x4]\n\ + add r0, r0, #0x1\n\ + b ._62\n\ +._26:\n\ + .align 2, 0\n\ +._25:\n\ + .word +0x2000000\n\ +._17:\n\ + bl UpdatePaletteFade\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._27 @cond_branch\n\ + b ._65\n\ +._27:\n\ + ldr r1, ._30\n\ + ldrh r0, [r1, #0x4]\n\ + add r0, r0, #0x1\n\ + b ._62\n\ +._31:\n\ + .align 2, 0\n\ +._30:\n\ + .word +0x2000000\n\ +._18:\n\ + bl sub_80FAB60\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x3\n\ + beq ._32 @cond_branch\n\ + cmp r0, #0x3\n\ + bgt ._33 @cond_branch\n\ + b ._65\n\ +._33:\n\ + cmp r0, #0x4\n\ + beq ._35 @cond_branch\n\ + cmp r0, #0x5\n\ + beq ._36 @cond_branch\n\ + b ._65\n\ +._35:\n\ + ldr r4, ._41\n\ + ldrb r0, [r4, #0x1e]\n\ + cmp r0, #0\n\ + bne ._38 @cond_branch\n\ + b ._65\n\ +._38:\n\ + mov r0, #0x5\n\ + bl gMysteryEventScriptCmdTableEnd+0x13c0\n\ + ldr r1, ._41 + 4\n\ + add r0, r4, r1\n\ + mov r1, #0x1\n\ + strb r1, [r0]\n\ + ldr r0, ._41 + 8\n\ + bl sub_80FC244\n\ + b ._65\n\ +._42:\n\ + .align 2, 0\n\ +._41:\n\ + .word +0x2000000\n\ + .word 0xa6e\n\ + .word sub_80FC69C+1\n\ +._36:\n\ + mov r0, #0x5\n\ + bl gMysteryEventScriptCmdTableEnd+0x13c0\n\ + mov r0, #0x1\n\ + neg r0, r0\n\ + mov r1, #0x0\n\ + str r1, [sp]\n\ + mov r2, #0x0\n\ + mov r3, #0x10\n\ + bl BeginNormalPaletteFade\n\ + ldr r1, ._44\n\ + ldrh r0, [r1, #0x4]\n\ + add r0, r0, #0x1\n\ + b ._62\n\ +._45:\n\ + .align 2, 0\n\ +._44:\n\ + .word +0x2000000\n\ +._19:\n\ + bl UpdatePaletteFade\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._65 @cond_branch\n\ + ldr r0, ._48\n\ + bl SetMainCallback2\n\ + b ._65\n\ +._49:\n\ + .align 2, 0\n\ +._48:\n\ + .word sub_805469C+1\n\ +._20:\n\ + bl sub_80FAB60\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._50 @cond_branch\n\ +._32:\n\ + bl debug_sub_8110CCC\n\ + b ._65\n\ +._50:\n\ + ldr r0, ._54\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._65 @cond_branch\n\ + bl sub_80FBCA0\n\ + bl sub_80FAEC4\n\ + ldr r1, ._54 + 4\n\ + ldrh r0, [r1, #0x4]\n\ + add r0, r0, #0x1\n\ + b ._62\n\ +._55:\n\ + .align 2, 0\n\ +._54:\n\ + .word gMain\n\ + .word +0x2000000\n\ +._21:\n\ + bl sub_80FAFC0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._65 @cond_branch\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + bl CreateRegionMapCursor\n\ + ldr r1, ._58\n\ + ldrh r0, [r1, #0x4]\n\ + add r0, r0, #0x1\n\ + b ._62\n\ +._59:\n\ + .align 2, 0\n\ +._58:\n\ + .word +0x2000000\n\ +._22:\n\ + bl sub_80FAB60\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._60 @cond_branch\n\ + bl debug_sub_8110CCC\n\ +._60:\n\ + ldr r0, ._63\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._65 @cond_branch\n\ + bl sub_80FBCA0\n\ + bl sub_80FAEC4\n\ + ldr r1, ._63 + 4\n\ + ldrh r0, [r1, #0x4]\n\ + add r0, r0, #0x1\n\ + b ._62\n\ +._64:\n\ + .align 2, 0\n\ +._63:\n\ + .word gMain\n\ + .word +0x2000000\n\ +._23:\n\ + bl sub_80FAFC0\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._65 @cond_branch\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + bl CreateRegionMapCursor\n\ + ldr r1, ._66\n\ + mov r0, #0x3\n\ +._62:\n\ + strh r0, [r1, #0x4]\n\ +._65:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._67:\n\ + .align 2, 0\n\ +._66:\n\ + .word +0x2000000"); +} + +__attribute__((naked)) +void debug_sub_8110F28(void) +{ + asm("\ + push {lr}\n\ + bl CB2_InitFlyRegionMap\n\ + ldr r0, ._69\n\ + ldr r1, [r0, #0x4]\n\ + ldr r0, ._69 + 4\n\ + cmp r1, r0\n\ + bne ._68 @cond_branch\n\ + bl sub_80FBF94\n\ + ldr r0, ._69 + 8\n\ + bl sub_80FC244\n\ + bl debug_sub_8110CCC\n\ +._68:\n\ + pop {r0}\n\ + bx r0\n\ +._70:\n\ + .align 2, 0\n\ +._69:\n\ + .word gMain\n\ + .word CB2_FlyRegionMap+1\n\ + .word debug_sub_8110D84+1"); +} + +#endif + void sub_80FC7A0(struct Unk03005E20* info) { gUnknown_03005DEC = info->var_4; -- cgit v1.2.3 From 8d14b68921bf5a355e71031a9311125af114cbfe Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 18 Jan 2018 14:30:07 -0600 Subject: add more debug code --- src/engine/save.c | 10 +- src/roulette.c | 1093 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1101 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/engine/save.c b/src/engine/save.c index a9945a80d..de5fd2846 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -783,13 +783,21 @@ u8 Save_WriteDataInternal(u8 saveType) return 0; } +#ifdef DEBUG +extern u32 gUnknown_Debug_03004BD0; +#endif + u8 Save_WriteData(u8 saveType) // TrySave { if (gFlashMemoryPresent != TRUE) return SAVE_STATUS_ERROR; Save_WriteDataInternal(saveType); - if (!gDamagedSaveSectors) + if (!gDamagedSaveSectors +#ifdef DEBUG + && gUnknown_Debug_03004BD0 == 0 +#endif + ) return SAVE_STATUS_OK; DoSaveFailedScreen(saveType); diff --git a/src/roulette.c b/src/roulette.c index ce95bc1c9..240ca11fa 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -131,6 +131,12 @@ struct StructgUnknown_083F8D90 u32 var04; }; +#if DEBUG +u8 gUnknown_Debug_03005FB8; +#endif + +#define static + static void sub_81150FC(void); static void sub_8115124(void); static void sub_8115238(void); @@ -573,6 +579,305 @@ void sub_8115238(void) } #endif +#if DEBUG +__attribute__((naked)) +void sub_8115384(void) +{ + asm("\ + push {r4, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r1, ._35\n\ + ldr r0, ._35 + 4\n\ + str r0, [r1]\n\ + ldr r1, ._35 + 8\n\ + ldr r2, ._35 + 12\n\ + add r0, r1, r2\n\ + ldrb r0, [r0]\n\ + add r2, r1, #0\n\ + cmp r0, #0x7\n\ + bls ._33 @cond_branch\n\ + b ._64\n\ +._33:\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._35 + 16\n\ + add r0, r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ +._36:\n\ + .align 2, 0\n\ +._35:\n\ + .word gUnknown_Debug_03005FB8\n\ + .word +0x2019000\n\ + .word gMain\n\ + .word 0x43c\n\ + .word ._37\n\ +._37:\n\ + .word ._38\n\ + .word ._39\n\ + .word ._40\n\ + .word ._41\n\ + .word ._42\n\ + .word ._43\n\ + .word ._44\n\ + .word ._45\n\ +._38:\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + bl ScanlineEffect_Stop\n\ + bl sub_80F9438\n\ + bl sub_80F9368\n\ + ldr r1, ._47\n\ + ldr r3, ._47 + 4\n\ + add r0, r3, #0\n\ + strh r0, [r1]\n\ + sub r1, r1, #0x2\n\ + ldr r2, ._47 + 8\n\ + add r0, r2, #0\n\ + strh r0, [r1]\n\ + add r1, r1, #0x46\n\ + mov r3, #0x90\n\ + lsl r3, r3, #0x6\n\ + add r0, r3, #0\n\ + strh r0, [r1]\n\ + add r1, r1, #0x2\n\ + ldr r2, ._47 + 12\n\ + add r0, r2, #0\n\ + strh r0, [r1]\n\ + ldr r0, ._47 + 16\n\ + mov r1, #0xc0\n\ + lsl r1, r1, #0x13\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\ + ldr r0, ._47 + 20\n\ + ldr r1, ._47 + 24\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\ + ldr r1, ._47 + 28\n\ + ldr r3, ._47 + 32\n\ + add r1, r1, r3\n\ + b ._61\n\ +._48:\n\ + .align 2, 0\n\ +._47:\n\ + .word 0x400000c\n\ + .word 0x4686\n\ + .word 0x4401\n\ + .word 0x60a\n\ + .word gUnknown_08E8096C\n\ + .word gRouletteWheelTiles\n\ + .word 0x6004000\n\ + .word gMain\n\ + .word 0x43c\n\ +._39:\n\ + bl ResetPaletteFade\n\ + bl ResetSpriteData\n\ + bl ResetTasks\n\ + ldr r1, ._50\n\ + ldr r0, ._50 + 4\n\ + add r1, r1, r0\n\ + b ._61\n\ +._51:\n\ + .align 2, 0\n\ +._50:\n\ + .word gMain\n\ + .word 0x43c\n\ +._40:\n\ + ldr r0, ._53\n\ + bl Text_LoadWindowTemplate\n\ + ldr r0, ._53 + 4\n\ + bl InitMenuWindow\n\ + ldr r0, ._53 + 8\n\ + mov r2, #0xe0\n\ + lsl r2, r2, #0x1\n\ + mov r1, #0x0\n\ + bl LoadPalette\n\ + ldr r1, ._53 + 12\n\ + ldr r2, ._53 + 16\n\ + add r1, r1, r2\n\ + b ._61\n\ +._54:\n\ + .align 2, 0\n\ +._53:\n\ + .word gWindowTemplate_81E6C3C\n\ + .word gWindowTemplate_81E6CE4\n\ + .word gUnknown_083F86BC\n\ + .word gMain\n\ + .word 0x43c\n\ +._41:\n\ + bl sub_8115238\n\ + bl sub_80F9020\n\ + ldr r0, ._56\n\ + ldr r1, ._56 + 4\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cbc\n\ + ldr r0, ._56 + 8\n\ + ldr r1, ._56 + 12\n\ + bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\ + ldr r1, ._56 + 16\n\ + ldr r3, ._56 + 20\n\ + add r1, r1, r3\n\ + b ._61\n\ +._57:\n\ + .align 2, 0\n\ +._56:\n\ + .word gUnknown_083F88BC\n\ + .word +0x2018800\n\ + .word gUnknown_083F8A60\n\ + .word 0x6003000\n\ + .word gMain\n\ + .word 0x43c\n\ +._42:\n\ + mov r0, #0x0\n\ + bl sub_8117838\n\ + bl sub_811857C\n\ + bl sub_81184D8\n\ + bl sub_8117F2C\n\ + bl sub_8117900\n\ + bl sub_8117BBC\n\ + bl sub_8117DF4\n\ + ldr r1, ._59\n\ + ldr r0, ._59 + 4\n\ + add r1, r1, r0\n\ + b ._61\n\ +._60:\n\ + .align 2, 0\n\ +._59:\n\ + .word gMain\n\ + .word 0x43c\n\ +._43:\n\ + bl AnimateSprites\n\ + bl BuildOamBuffer\n\ + ldr r0, ._62\n\ + ldr r1, ._62 + 4\n\ + add r0, r0, r1\n\ + ldrh r0, [r0]\n\ + bl sub_81180F4\n\ + mov r0, #0x6\n\ + bl sub_81182F8\n\ + mov r0, #0x0\n\ + bl sub_811829C\n\ + mov r0, #0x0\n\ + bl sub_8117158\n\ + mov r0, #0x0\n\ + mov r1, #0xe\n\ + mov r2, #0x1d\n\ + mov r3, #0x13\n\ + bl Menu_DrawStdWindowFrame\n\ + ldr r0, ._62 + 8\n\ + mov r1, #0x1\n\ + mov r2, #0xf\n\ + bl Menu_PrintText\n\ + ldr r1, ._62 + 12\n\ + mov r2, #0x3c\n\ + neg r2, r2\n\ + add r0, r2, #0\n\ + strh r0, [r1]\n\ + ldr r1, ._62 + 16\n\ + mov r0, #0x0\n\ + strh r0, [r1]\n\ + ldr r1, ._62 + 20\n\ + ldr r3, ._62 + 24\n\ + add r1, r1, r3\n\ + b ._61\n\ +._63:\n\ + .align 2, 0\n\ +._62:\n\ + .word gSaveBlock1\n\ + .word 0x494\n\ + .word gUnknown_081C4157\n\ + .word gSpriteCoordOffsetX\n\ + .word gSpriteCoordOffsetY\n\ + .word gMain\n\ + .word 0x43c\n\ +._44:\n\ + mov r1, #0x80\n\ + lsl r1, r1, #0x13\n\ + ldr r3, ._65\n\ + add r0, r3, #0\n\ + strh r0, [r1]\n\ + ldr r0, ._65 + 4\n\ + add r1, r2, r0\n\ +._61:\n\ + ldrb r0, [r1]\n\ + add r0, r0, #0x1\n\ + strb r0, [r1]\n\ + b ._64\n\ +._66:\n\ + .align 2, 0\n\ +._65:\n\ + .word 0x1741\n\ + .word 0x43c\n\ +._45:\n\ + ldr r3, ._67\n\ + ldrh r2, [r3]\n\ + mov r0, #0x0\n\ + strh r0, [r3]\n\ + ldr r4, ._67 + 4\n\ + ldrh r0, [r4]\n\ + mov r1, #0x1\n\ + orr r0, r0, r1\n\ + strh r0, [r4]\n\ + strh r2, [r3]\n\ + ldr r2, ._67 + 8\n\ + ldrh r0, [r2]\n\ + mov r1, #0x8\n\ + orr r0, r0, r1\n\ + strh r0, [r2]\n\ + ldr r0, ._67 + 12\n\ + bl SetVBlankCallback\n\ + mov r0, #0x1\n\ + str r0, [sp]\n\ + mov r0, #0xff\n\ + mov r1, #0x0\n\ + mov r2, #0x10\n\ + mov r3, #0x0\n\ + bl BeginHardwarePaletteFade\n\ + ldr r0, ._67 + 16\n\ + mov r1, #0x0\n\ + bl CreateTask\n\ + ldr r4, ._67 + 20\n\ + add r1, r4, #0\n\ + add r1, r1, #0xa4\n\ + strb r0, [r1]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r2, ._67 + 24\n\ + lsl r1, r0, #0x2\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r2\n\ + mov r0, #0x6\n\ + strh r0, [r1, #0x14]\n\ + ldr r0, ._67 + 28\n\ + ldr r2, ._67 + 32\n\ + add r0, r0, r2\n\ + ldrh r0, [r0]\n\ + strh r0, [r1, #0x22]\n\ + ldr r0, ._67 + 36\n\ + mov r1, #0x1\n\ + bl CreateTask\n\ + add r4, r4, #0xa5\n\ + strb r0, [r4]\n\ + ldr r0, ._67 + 40\n\ + bl SetMainCallback2\n\ +._64:\n\ + add sp, sp, #0x4\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ +._68:\n\ + .align 2, 0\n\ +._67:\n\ + .word 0x4000208\n\ + .word 0x4000200\n\ + .word 0x4000004\n\ + .word sub_8115124+1\n\ + .word sub_81156BC+1\n\ + .word +0x2019000\n\ + .word gTasks\n\ + .word gSaveBlock1\n\ + .word 0x494\n\ + .word sub_8115634+1\n\ + .word sub_81150FC+1"); +} +#else void sub_8115384(void) { u32 temp_IME; @@ -654,7 +959,120 @@ void sub_8115384(void) break; } } +#endif +#if DEBUG +__attribute__((naked)) +void sub_8115634(u8 unused) +{ + asm("\ + push {r4, r5, r6, lr}\n\ + ldr r0, ._75\n\ + add r3, r0, #0\n\ + add r3, r3, #0x21\n\ + ldrb r1, [r3]\n\ + add r2, r1, #1\n\ + strb r2, [r3]\n\ + add r2, r0, #0\n\ + add r2, r2, #0x23\n\ + lsl r1, r1, #0x18\n\ + lsr r1, r1, #0x18\n\ + add r6, r0, #0\n\ + ldrb r2, [r2]\n\ + cmp r1, r2\n\ + bne ._70 @cond_branch\n\ + mov r0, #0x0\n\ + strb r0, [r3]\n\ + add r2, r6, #0\n\ + add r2, r2, #0x22\n\ + ldrb r1, [r2]\n\ + ldrh r0, [r6, #0x24]\n\ + sub r0, r0, r1\n\ + strh r0, [r6, #0x24]\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + bge ._70 @cond_branch\n\ + ldrb r1, [r2]\n\ + mov r2, #0xb4\n\ + lsl r2, r2, #0x1\n\ + add r0, r2, #0\n\ + sub r0, r0, r1\n\ + strh r0, [r6, #0x24]\n\ +._70:\n\ + add r4, r6, #0\n\ + ldrh r0, [r4, #0x24]\n\ + bl Sin2\n\ + lsl r0, r0, #0x10\n\ + lsr r5, r0, #0x10\n\ + ldrh r0, [r4, #0x24]\n\ + bl Cos2\n\ + lsl r0, r0, #0x10\n\ + lsr r1, r0, #0x10\n\ + lsl r0, r5, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0\n\ + bge ._71 @cond_branch\n\ + add r0, r0, #0xf\n\ +._71:\n\ + lsl r0, r0, #0xc\n\ + lsr r5, r0, #0x10\n\ + lsl r0, r1, #0x10\n\ + asr r0, r0, #0x10\n\ + cmp r0, #0\n\ + bge ._72 @cond_branch\n\ + add r0, r0, #0xf\n\ +._72:\n\ + asr r0, r0, #0x4\n\ + strh r0, [r6, #0x32]\n\ + strh r0, [r6, #0x2c]\n\ + strh r5, [r6, #0x2e]\n\ + lsl r0, r5, #0x10\n\ + asr r0, r0, #0x10\n\ + neg r0, r0\n\ + strh r0, [r6, #0x30]\n\ + ldr r0, ._75 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._74 @cond_branch\n\ + ldr r0, ._75 + 8\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._74 @cond_branch\n\ + ldr r2, ._75 + 12\n\ + add r0, r6, #0\n\ + add r0, r0, #0xa4\n\ + ldrb r1, [r0]\n\ + lsl r0, r1, #0x2\n\ + add r0, r0, r1\n\ + lsl r0, r0, #0x3\n\ + add r0, r0, r2\n\ + ldr r1, ._75 + 16\n\ + str r1, [r0]\n\ + ldr r0, ._75 + 20\n\ + bl gMysteryEventScriptCmdTableEnd+0x1c08\n\ + ldr r0, ._75 + 24\n\ + bl gMysteryEventScriptCmdTableEnd+0x1c08\n\ + ldr r0, ._75 + 28\n\ + bl gMysteryEventScriptCmdTableEnd+0x1c08\n\ +._74:\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._76:\n\ + .align 2, 0\n\ +._75:\n\ + .word +0x2019000\n\ + .word unk_203955C\n\ + .word gMain\n\ + .word gTasks\n\ + .word sub_81157AC+1\n\ + .word gMPlay_SE1\n\ + .word gMPlay_SE2\n\ + .word gMPlay_SE3"); +} +#else void sub_8115634(u8 unused) { s16 sin; @@ -675,6 +1093,7 @@ void sub_8115634(u8 unused) eRoulette->var2C.b = sin; eRoulette->var2C.c = -sin; } +#endif void sub_81156BC(u8 taskid) { @@ -1596,7 +2015,69 @@ void sub_8116AB0(u8 taskid) gTasks[taskid].func = &sub_8116B40; } -void sub_8116B40(u8 taskid) // end oulette ? +#if DEBUG +__attribute__((naked)) +void sub_8116B40(u8 taskid) // end roulette ? +{ + asm("\ + push {r4, r5, r6, lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r6, r0, #0x18\n\ + bl UpdatePaletteFade\n\ + lsl r0, r0, #0x18\n\ + lsr r5, r0, #0x18\n\ + cmp r5, #0\n\ + bne ._380 @cond_branch\n\ + mov r0, #0x0\n\ + bl SetVBlankCallback\n\ + ldr r0, ._381\n\ + mov r2, #0xbe\n\ + lsl r2, r2, #0x1\n\ + mov r1, #0x0\n\ + bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + ldr r1, ._381 + 4\n\ + ldr r0, ._381 + 8\n\ + mov r4, #0x0\n\ + strh r5, [r0]\n\ + strh r5, [r1]\n\ + bl sub_80F9368\n\ + bl FreeAllSpritePalettes\n\ + bl ResetPaletteFade\n\ + bl ResetSpriteData\n\ + bl sub_80F9020\n\ + ldr r0, ._381 + 12\n\ + strh r5, [r0]\n\ + add r0, r0, #0x2\n\ + strh r5, [r0]\n\ + add r0, r0, #0x2\n\ + strh r5, [r0]\n\ + ldr r1, ._381 + 16\n\ + ldr r0, ._381 + 20\n\ + str r0, [r1]\n\ + ldr r0, ._381 + 24\n\ + bl SetMainCallback2\n\ + add r0, r6, #0\n\ + bl DestroyTask\n\ + ldr r0, ._381 + 28\n\ + strb r4, [r0]\n\ +._380:\n\ + pop {r4, r5, r6}\n\ + pop {r0}\n\ + bx r0\n\ +._382:\n\ + .align 2, 0\n\ +._381:\n\ + .word +0x2019000\n\ + .word gSpriteCoordOffsetX\n\ + .word gSpriteCoordOffsetY\n\ + .word 0x4000050\n\ + .word gFieldCallback\n\ + .word sub_8080990+1\n\ + .word c2_exit_to_overworld_2_switch+1\n\ + .word unk_203955C"); +} +#else +void sub_8116B40(u8 taskid) // end roulette ? { if (UpdatePaletteFade() == 0) { @@ -1616,6 +2097,7 @@ void sub_8116B40(u8 taskid) // end oulette ? DestroyTask(taskid); } } +#endif void sub_8116BC0(u8 taskid) { @@ -2632,6 +3114,9 @@ void sub_811755C(u8 taskid) void sub_81175C0(u8 taskid) { +#if DEBUG + unk_203955C[0] = 0; +#endif Menu_EraseScreen(); ScriptContext2_Disable(); DestroyTask(taskid); @@ -2694,6 +3179,386 @@ void Task_Roulette_0(u8 taskid) } } +#if DEBUG + +__attribute__((naked)) +void debug_sub_812CDE4() +{ + asm("\ + push {r4, r5, lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r3, r0, #0x18\n\ + add r4, r3, #0\n\ + ldr r0, ._575\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._572 @cond_branch\n\ + ldr r1, ._575 + 4\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x3\n\ + add r2, r0, r1\n\ + ldrh r0, [r2, #0x22]\n\ + add r0, r0, #0x1\n\ + strh r0, [r2, #0x22]\n\ + lsl r0, r0, #0x10\n\ + ldr r1, ._575 + 8\n\ + cmp r0, r1\n\ + bne ._573 @cond_branch\n\ + mov r0, #0x0\n\ + strh r0, [r2, #0x22]\n\ +._573:\n\ + ldr r0, ._575 + 12\n\ + mov r3, #0x22\n\ + ldsh r1, [r2, r3]\n\ + b ._584\n\ +._576:\n\ + .align 2, 0\n\ +._575:\n\ + .word gMain\n\ + .word gTasks\n\ + .word 0x27100000\n\ + .word gStringVar1\n\ +._572:\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._577 @cond_branch\n\ + ldr r1, ._580\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x3\n\ + add r2, r0, r1\n\ + ldrh r0, [r2, #0x22]\n\ + sub r0, r0, #0x1\n\ + strh r0, [r2, #0x22]\n\ + lsl r0, r0, #0x10\n\ + asr r0, r0, #0x10\n\ + mov r1, #0x1\n\ + neg r1, r1\n\ + cmp r0, r1\n\ + bne ._578 @cond_branch\n\ + ldr r0, ._580 + 4\n\ + strh r0, [r2, #0x22]\n\ +._578:\n\ + ldr r0, ._580 + 8\n\ + mov r3, #0x22\n\ + ldsh r1, [r2, r3]\n\ + b ._584\n\ +._581:\n\ + .align 2, 0\n\ +._580:\n\ + .word gTasks\n\ + .word 0x270f\n\ + .word gStringVar1\n\ +._577:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._582 @cond_branch\n\ + ldr r1, ._585\n\ + lsl r0, r3, #0x2\n\ + add r0, r0, r3\n\ + lsl r0, r0, #0x3\n\ + add r2, r0, r1\n\ + ldrh r3, [r2, #0x22]\n\ + add r0, r3, #0\n\ + add r0, r0, #0xa\n\ + strh r0, [r2, #0x22]\n\ + lsl r0, r0, #0x10\n\ + ldr r1, ._585 + 4\n\ + cmp r0, r1\n\ + ble ._583 @cond_branch\n\ + ldr r1, ._585 + 8\n\ + add r0, r3, r1\n\ + strh r0, [r2, #0x22]\n\ +._583:\n\ + ldr r0, ._585 + 12\n\ + mov r3, #0x22\n\ + ldsh r1, [r2, r3]\n\ + b ._584\n\ +._586:\n\ + .align 2, 0\n\ +._585:\n\ + .word gTasks\n\ + .word 0x270f0000\n\ + .word 0xffffd8fb\n\ + .word gStringVar1\n\ +._582:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._587 @cond_branch\n\ + ldr r0, ._590\n\ + lsl r1, r3, #0x2\n\ + add r1, r1, r3\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r0\n\ + ldrh r2, [r1, #0x22]\n\ + add r0, r2, #0\n\ + sub r0, r0, #0xa\n\ + strh r0, [r1, #0x22]\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + bge ._588 @cond_branch\n\ + ldr r3, ._590 + 4\n\ + add r0, r2, r3\n\ + strh r0, [r1, #0x22]\n\ +._588:\n\ + ldr r0, ._590 + 8\n\ + mov r2, #0x22\n\ + ldsh r1, [r1, r2]\n\ +._584:\n\ + mov r2, #0x1\n\ + mov r3, #0x4\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r4, ._590 + 12\n\ + ldr r1, ._590 + 16\n\ + add r0, r4, #0\n\ + bl StringExpandPlaceholders\n\ + add r0, r4, #0\n\ + mov r1, #0x9\n\ + mov r2, #0x1\n\ + bl MenuPrint_RightAligned\n\ + b ._596\n\ +._591:\n\ + .align 2, 0\n\ +._590:\n\ + .word gTasks\n\ + .word 0x2705\n\ + .word gStringVar1\n\ + .word gStringVar4\n\ + .word gOtherText_Coins\n\ +._587:\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._592 @cond_branch\n\ + ldr r0, ._594\n\ + ldr r2, ._594 + 4\n\ + lsl r1, r3, #0x2\n\ + add r1, r1, r3\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r2\n\ + ldrh r2, [r1, #0x22]\n\ + ldr r3, ._594 + 8\n\ + add r0, r0, r3\n\ + mov r5, #0x0\n\ + strh r2, [r0]\n\ + ldr r0, ._594 + 12\n\ + str r0, [r1]\n\ + ldr r0, ._594 + 16\n\ + mov r2, #0x22\n\ + ldsh r1, [r1, r2]\n\ + mov r2, #0x1\n\ + mov r3, #0x4\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r4, ._594 + 20\n\ + ldr r1, ._594 + 24\n\ + add r0, r4, #0\n\ + bl StringExpandPlaceholders\n\ + add r0, r4, #0\n\ + mov r1, #0x9\n\ + mov r2, #0x1\n\ + bl MenuPrint_RightAligned\n\ + ldr r0, ._594 + 28\n\ + strb r5, [r0]\n\ + b ._596\n\ +._595:\n\ + .align 2, 0\n\ +._594:\n\ + .word gSaveBlock1\n\ + .word gTasks\n\ + .word 0x494\n\ + .word Task_Roulette_0+1\n\ + .word gStringVar1\n\ + .word gStringVar4\n\ + .word gOtherText_Coins\n\ + .word unk_2039560\n\ +._592:\n\ + mov r0, #0x4\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._596 @cond_branch\n\ + ldr r0, ._597\n\ + ldr r2, ._597 + 4\n\ + lsl r1, r4, #0x2\n\ + add r1, r1, r4\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r2\n\ + ldrh r2, [r1, #0x22]\n\ + ldr r3, ._597 + 8\n\ + add r0, r0, r3\n\ + strh r2, [r0]\n\ + ldr r0, ._597 + 12\n\ + str r0, [r1]\n\ + ldr r0, ._597 + 16\n\ + mov r2, #0x22\n\ + ldsh r1, [r1, r2]\n\ + mov r2, #0x1\n\ + mov r3, #0x4\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r4, ._597 + 20\n\ + ldr r1, ._597 + 24\n\ + add r0, r4, #0\n\ + bl StringExpandPlaceholders\n\ + add r0, r4, #0\n\ + mov r1, #0x9\n\ + mov r2, #0x1\n\ + bl MenuPrint_RightAligned\n\ + ldr r1, ._597 + 28\n\ + mov r0, #0x1\n\ + strb r0, [r1]\n\ +._596:\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._598:\n\ + .align 2, 0\n\ +._597:\n\ + .word gSaveBlock1\n\ + .word gTasks\n\ + .word 0x494\n\ + .word Task_Roulette_0+1\n\ + .word gStringVar1\n\ + .word gStringVar4\n\ + .word gOtherText_Coins\n\ + .word unk_2039560"); +} + +__attribute__((naked)) +void debug_sub_812CFE8() +{ + asm("\ + push {r4, r5, lr}\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r2, ._600\n\ + lsl r1, r0, #0x2\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + add r5, r1, r2\n\ + ldr r0, ._600 + 4\n\ + ldr r1, ._600 + 8\n\ + add r0, r0, r1\n\ + ldrh r0, [r0]\n\ + strh r0, [r5, #0x22]\n\ + bl Random\n\ + mov r1, #0x1\n\ + and r1, r1, r0\n\ + cmp r1, #0\n\ + beq ._599 @cond_branch\n\ + ldr r0, ._600 + 12\n\ + ldrh r1, [r0]\n\ + mov r2, #0x80\n\ + orr r1, r1, r2\n\ + strh r1, [r0]\n\ +._599:\n\ + ldr r0, ._600 + 16\n\ + mov r2, #0x22\n\ + ldsh r1, [r5, r2]\n\ + mov r2, #0x1\n\ + mov r3, #0x4\n\ + bl ConvertIntToDecimalStringN\n\ + ldr r4, ._600 + 20\n\ + ldr r1, ._600 + 24\n\ + add r0, r4, #0\n\ + bl StringExpandPlaceholders\n\ + mov r0, #0x0\n\ + mov r1, #0x0\n\ + mov r2, #0x9\n\ + mov r3, #0x3\n\ + bl Menu_DrawStdWindowFrame\n\ + add r0, r4, #0\n\ + mov r1, #0x9\n\ + mov r2, #0x1\n\ + bl MenuPrint_RightAligned\n\ + mov r0, #0x0\n\ + mov r1, #0xe\n\ + mov r2, #0x1d\n\ + mov r3, #0x13\n\ + bl Menu_DrawStdWindowFrame\n\ + ldr r0, ._600 + 28\n\ + mov r1, #0x1\n\ + mov r2, #0xf\n\ + bl Menu_PrintText\n\ + ldr r0, ._600 + 32\n\ + str r0, [r5]\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0\n\ +._601:\n\ + .align 2, 0\n\ +._600:\n\ + .word gTasks\n\ + .word gSaveBlock1\n\ + .word 0x494\n\ + .word gSpecialVar_0x8004\n\ + .word gStringVar1\n\ + .word gStringVar4\n\ + .word gOtherText_Coins\n\ + .word gUnknown_Debug_0842510D\n\ + .word debug_sub_812CDE4+1"); +} + +#endif + +#if DEBUG +__attribute__((naked)) +void PlayRoulette(void) +{ + asm("\ + push {lr}\n\ + bl ScriptContext2_Enable\n\ + ldr r1, ._604\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + ldr r0, ._604 + 4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._602 @cond_branch\n\ + ldr r0, ._604 + 8\n\ + mov r1, #0x0\n\ + bl CreateTask\n\ + b ._603\n\ +._605:\n\ + .align 2, 0\n\ +._604:\n\ + .word unk_2039560\n\ + .word unk_203955C\n\ + .word debug_sub_812CFE8+1\n\ +._602:\n\ + ldr r0, ._606\n\ + mov r1, #0x0\n\ + bl CreateTask\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r2, ._606 + 4\n\ + lsl r1, r0, #0x2\n\ + add r1, r1, r0\n\ + lsl r1, r1, #0x3\n\ + add r1, r1, r2\n\ + ldr r0, ._606 + 8\n\ + ldr r2, ._606 + 12\n\ + add r0, r0, r2\n\ + ldrh r0, [r0]\n\ + strh r0, [r1, #0x22]\n\ +._603:\n\ + pop {r0}\n\ + bx r0\n\ +._607:\n\ + .align 2, 0\n\ +._606:\n\ + .word Task_Roulette_0+1\n\ + .word gTasks\n\ + .word gSaveBlock1\n\ + .word 0x494"); +} +#else void PlayRoulette(void) { u8 taskid; @@ -2701,6 +3566,7 @@ void PlayRoulette(void) taskid = CreateTask(&Task_Roulette_0, 0x0); gTasks[taskid].data[0xD] = gSaveBlock1.coins; } +#endif void sub_8117838(u8 r0) { @@ -3594,6 +4460,99 @@ void sub_8118D2C(struct Sprite *sprite) } } +#if DEBUG +__attribute__((naked)) +void debug_sub_812E698() +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + add r7, r0, #0\n\ + bl sub_8118724\n\ + mov r0, #0x0\n\ + strh r0, [r7, #0x32]\n\ + add r0, r7, #0\n\ + bl sub_81186B8\n\ + mov r0, #0x38\n\ + bl gMysteryEventScriptCmdTableEnd+0x13c0\n\ + bl Random\n\ + mov r1, #0x1\n\ + and r1, r1, r0\n\ + cmp r1, #0\n\ + beq ._837 @cond_branch\n\ + ldr r4, ._839\n\ + add r1, r4, #0\n\ + add r1, r1, #0x8c\n\ + ldr r0, ._839 + 4\n\ + str r0, [r1]\n\ + add r0, r4, #0\n\ + add r0, r0, #0x7e\n\ + ldrb r0, [r0]\n\ + add r0, r0, #0x1\n\ + mov r1, #0xc\n\ + bl gMysteryEventScriptCmdTableEnd+0x3e40\n\ + add r1, r4, #0\n\ + add r1, r1, #0x7f\n\ + strb r0, [r1]\n\ + add r1, r4, #0\n\ + ldr r4, ._839 + 8\n\ + b ._838\n\ +._840:\n\ + .align 2, 0\n\ +._839:\n\ + .word +0x2019000\n\ + .word 0x0\n\ + .word gUnknown_083F8DF4\n\ +._837:\n\ + ldr r6, ._841\n\ + add r5, r6, #0\n\ + add r5, r5, #0x8c\n\ + ldr r4, ._841 + 4\n\ + ldrb r0, [r6, #0x4]\n\ + lsl r0, r0, #0x1e\n\ + lsr r0, r0, #0x19\n\ + add r1, r4, #0\n\ + add r1, r1, #0x1c\n\ + add r0, r0, r1\n\ + ldr r1, [r0]\n\ + add r0, r1, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x54dc\n\ + str r0, [r5]\n\ + add r0, r6, #0\n\ + add r0, r0, #0x7e\n\ + ldrb r0, [r0]\n\ + add r1, r6, #0\n\ + add r1, r1, #0x7f\n\ + strb r0, [r1]\n\ + add r1, r6, #0\n\ +._838:\n\ + mov r0, #0x1\n\ + strh r0, [r7, #0x2e]\n\ + ldrb r0, [r1, #0x4]\n\ + lsl r0, r0, #0x1e\n\ + lsr r0, r0, #0x19\n\ + add r0, r0, r4\n\ + ldrb r0, [r0, #0x2]\n\ + strh r0, [r7, #0x32]\n\ + add r1, r1, #0x98\n\ + ldr r0, ._841 + 8\n\ + str r0, [r1]\n\ + ldr r0, ._841 + 12\n\ + str r0, [r7, #0x1c]\n\ + mov r0, #0x5\n\ + strh r0, [r7, #0x30]\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._842:\n\ + .align 2, 0\n\ +._841:\n\ + .word +0x2019000\n\ + .word gUnknown_083F8DF4\n\ + .word 0x3dae147b\n\ + .word sub_8118D2C+1"); +} +#endif + #ifdef NONMATCHING void sub_8118DE4(struct Sprite *sprite) { @@ -3869,6 +4828,137 @@ _08118F88: .4byte sub_8118D2C\n\ } #endif +#if DEBUG +__attribute__((naked)) +void sub_8118F8C(struct Sprite *sprite) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6, r7}\n\ + add r6, r0, #0\n\ + bl sub_8118724\n\ + ldr r5, ._868\n\ + mov r0, #0x8c\n\ + add r0, r0, r5\n\ + mov r8, r0\n\ + ldr r0, [r0]\n\ + ldr r1, ._868 + 4\n\ + bl gMysteryEventScriptCmdTableEnd+0x5928\n\ + cmp r0, #0\n\ + bgt ._874 @cond_branch\n\ + add r0, r6, #0\n\ + bl sub_81186B8\n\ + add r0, r6, #0\n\ + bl sub_81186E8\n\ + lsl r0, r0, #0x10\n\ + cmp r0, #0\n\ + bne ._864 @cond_branch\n\ + add r1, r5, #0\n\ + add r1, r1, #0x90\n\ + ldr r0, ._868 + 8\n\ + str r0, [r1]\n\ + ldr r1, ._868 + 12\n\ + mov r9, r1\n\ + ldrb r0, [r5, #0x4]\n\ + lsl r7, r0, #0x1e\n\ + lsr r0, r7, #0x19\n\ + add r0, r0, r9\n\ + mov r4, #0x3\n\ + ldsb r4, [r0, r4]\n\ + add r0, r4, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x5a48\n\ + add r5, r0, #0\n\ + cmp r4, #0\n\ + bge ._865 @cond_branch\n\ + ldr r1, ._868 + 16\n\ + bl gMysteryEventScriptCmdTableEnd+0x54dc\n\ + add r5, r0, #0\n\ +._865:\n\ + lsr r0, r7, #0x19\n\ + add r0, r0, r9\n\ + ldrb r0, [r0, #0x4]\n\ + add r0, r0, #0x1\n\ + bl gMysteryEventScriptCmdTableEnd+0x5a48\n\ + add r1, r0, #0\n\ + add r0, r5, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x56a0\n\ + add r1, r0, #0\n\ + mov r2, r8\n\ + ldr r0, [r2]\n\ + bl gMysteryEventScriptCmdTableEnd+0x5508\n\ + mov r1, r8\n\ + str r0, [r1]\n\ + mov r0, #0x4\n\ + strh r0, [r6, #0x30]\n\ + ldr r0, ._868 + 20\n\ + ldrb r0, [r0]\n\ + cmp r0, #0\n\ + beq ._866 @cond_branch\n\ + ldr r0, ._868 + 24\n\ + str r0, [r6, #0x1c]\n\ + b ._874\n\ +._869:\n\ + .align 2, 0\n\ +._868:\n\ + .word +0x2019000\n\ + .word 0x3f000000\n\ + .word 0x0\n\ + .word gUnknown_083F8DF4\n\ + .word 0x43800000\n\ + .word unk_2039560\n\ + .word debug_sub_812E698+1\n\ +._866:\n\ + ldr r0, ._871\n\ + str r0, [r6, #0x1c]\n\ + b ._874\n\ +._872:\n\ + .align 2, 0\n\ +._871:\n\ + .word sub_8118DE4+1\n\ +._864:\n\ + add r6, r5, #0\n\ + add r6, r6, #0x90\n\ + ldr r0, [r6]\n\ + ldr r4, ._875\n\ + add r1, r4, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x58e0\n\ + cmp r0, #0\n\ + beq ._874 @cond_branch\n\ + mov r2, r8\n\ + ldr r0, [r2]\n\ + add r1, r4, #0\n\ + bl gMysteryEventScriptCmdTableEnd+0x59b8\n\ + cmp r0, #0\n\ + bge ._874 @cond_branch\n\ + str r4, [r6]\n\ + mov r0, r8\n\ + str r4, [r0]\n\ + add r4, r5, #0\n\ + add r4, r4, #0x98\n\ + ldr r0, [r4]\n\ + bl gMysteryEventScriptCmdTableEnd+0x5b4c\n\ + ldr r2, ._875 + 4\n\ + ldr r3, ._875 + 8\n\ + bl gMysteryEventScriptCmdTableEnd+0x4c2c\n\ + bl gMysteryEventScriptCmdTableEnd+0x51e8\n\ + str r0, [r4]\n\ +._874:\n\ + pop {r3, r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._876:\n\ + .align 2, 0\n\ +._875:\n\ + .word 0x0\n\ + .word 0x3ff33333\n\ + .word 0x33333333"); +} +#else void sub_8118F8C(struct Sprite *sprite) { sub_8118724(sprite); @@ -3899,6 +4989,7 @@ void sub_8118F8C(struct Sprite *sprite) } } } +#endif void sub_8119088(struct Sprite *sprite) { -- cgit v1.2.3 From bcbc9d040ba671df27183bff0b7356da3d9511f6 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 18 Jan 2018 15:19:31 -0600 Subject: finish adding all debug code --- src/battle/battle_controller_safari.c | 231 ++++++++++++++++++++++++++++++++++ src/engine/save_failed_screen.c | 192 +++++++++++++++++++++++++++- src/field/party_menu.c | 64 ++++++++++ 3 files changed, 483 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 0d193d68f..4af8adbbb 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -207,6 +207,236 @@ void SafariBufferRunCommand(void) } } +#if DEBUG +__attribute__((naked)) +void bx_battle_menu_t6_2(void) +{ + asm("\ + push {r4, r5, lr}\n\ + add sp, sp, #0xfffffffc\n\ + ldr r0, ._94\n\ + ldrh r1, [r0, #0x2e]\n\ + mov r2, #0x1\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._89 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + bl DestroyMenuCursor\n\ + ldr r1, ._94 + 4\n\ + ldr r0, ._94 + 8\n\ + ldrb r0, [r0]\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + beq ._90 @cond_branch\n\ + cmp r0, #0x1\n\ + bgt ._91 @cond_branch\n\ + cmp r0, #0\n\ + beq ._92 @cond_branch\n\ + b ._101\n\ +._95:\n\ + .align 2, 0\n\ +._94:\n\ + .word gMain\n\ + .word gActionSelectionCursor\n\ + .word gActiveBank\n\ +._91:\n\ + cmp r0, #0x2\n\ + beq ._96 @cond_branch\n\ + cmp r0, #0x3\n\ + beq ._97 @cond_branch\n\ + b ._101\n\ +._92:\n\ + mov r0, #0x1\n\ + mov r1, #0x5\n\ + b ._100\n\ +._90:\n\ + mov r0, #0x1\n\ + mov r1, #0x6\n\ + b ._100\n\ +._96:\n\ + mov r0, #0x1\n\ + mov r1, #0x7\n\ +._100:\n\ + mov r2, #0x0\n\ + bl Emitcmd33\n\ + b ._101\n\ +._97:\n\ + mov r0, #0x1\n\ + mov r1, #0x8\n\ + mov r2, #0x0\n\ + bl Emitcmd33\n\ +._101:\n\ + bl SafariBufferExecCompleted\n\ + b ._129\n\ +._89:\n\ + mov r3, #0x20\n\ + add r0, r3, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._103 @cond_branch\n\ + ldr r5, ._107\n\ + ldr r4, ._107 + 4\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._104 @cond_branch\n\ + b ._129\n\ +._104:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r0, [r0]\n\ + bl nullsub_8\n\ + ldrb r1, [r4]\n\ + add r1, r1, r5\n\ + ldrb r0, [r1]\n\ + mov r2, #0x1\n\ + b ._111\n\ +._108:\n\ + .align 2, 0\n\ +._107:\n\ + .word gActionSelectionCursor\n\ + .word gActiveBank\n\ +._103:\n\ + mov r0, #0x10\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._109 @cond_branch\n\ + ldr r5, ._112\n\ + ldr r4, ._112 + 4\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + add r0, r2, #0\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._129 @cond_branch\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r0, [r0]\n\ + bl nullsub_8\n\ + ldrb r1, [r4]\n\ + add r1, r1, r5\n\ + ldrb r0, [r1]\n\ + mov r2, #0x1\n\ + b ._111\n\ +._113:\n\ + .align 2, 0\n\ +._112:\n\ + .word gActionSelectionCursor\n\ + .word gActiveBank\n\ +._109:\n\ + mov r0, #0x40\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._114 @cond_branch\n\ + ldr r5, ._117\n\ + ldr r4, ._117 + 4\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._129 @cond_branch\n\ + b ._116\n\ +._118:\n\ + .align 2, 0\n\ +._117:\n\ + .word gActionSelectionCursor\n\ + .word gActiveBank\n\ +._114:\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._119 @cond_branch\n\ + ldr r5, ._122\n\ + ldr r4, ._122 + 4\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r1, [r0]\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + bne ._129 @cond_branch\n\ +._116:\n\ + mov r0, #0x5\n\ + bl PlaySE\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r0, [r0]\n\ + bl nullsub_8\n\ + ldrb r1, [r4]\n\ + add r1, r1, r5\n\ + ldrb r0, [r1]\n\ + mov r2, #0x2\n\ +._111:\n\ + eor r0, r0, r2\n\ + strb r0, [r1]\n\ + ldrb r0, [r4]\n\ + add r0, r0, r5\n\ + ldrb r0, [r0]\n\ + mov r1, #0x0\n\ + bl sub_802E3E4\n\ + b ._129\n\ +._123:\n\ + .align 2, 0\n\ +._122:\n\ + .word gActionSelectionCursor\n\ + .word gActiveBank\n\ +._119:\n\ + mov r0, #0x80\n\ + lsl r0, r0, #0x1\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._124 @cond_branch\n\ + ldr r0, ._127\n\ + ldrb r2, [r0]\n\ + lsl r0, r2, #0x1\n\ + add r0, r0, r2\n\ + lsl r0, r0, #0x2\n\ + ldr r1, ._127 + 4\n\ + add r0, r0, r1\n\ + ldrb r1, [r0]\n\ + add r0, r3, #0\n\ + and r0, r0, r1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0\n\ + bne ._129 @cond_branch\n\ + str r0, [sp]\n\ + add r0, r2, #0\n\ + add r1, r2, #0\n\ + mov r3, #0x4\n\ + bl move_anim_start_t3\n\ + b ._129\n\ +._128:\n\ + .align 2, 0\n\ +._127:\n\ + .word gActiveBank\n\ + .word +0x2017810\n\ +._124:\n\ + mov r0, #0x8\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._129 @cond_branch\n\ + bl sub_804454C\n\ +._129:\n\ + add sp, sp, #0x4\n\ + pop {r4, r5}\n\ + pop {r0}\n\ + bx r0"); +} +#else void bx_battle_menu_t6_2(void) { if (gMain.newKeys & A_BUTTON) @@ -273,6 +503,7 @@ void bx_battle_menu_t6_2(void) } } } +#endif void sub_812B65C(void) { diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 74a1e9612..421cd0779 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -61,16 +61,18 @@ static const u8 sClockFrames[8][3] = static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal"); static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz"); +#define static + static void VBlankCB(void); static void CB2_SaveFailedScreen(void); static void CB2_WipeSave(void); -static void CB2_GameplayCannotBeContinued(void); +/*static*/ void CB2_GameplayCannotBeContinued(void); static void CB2_FadeAndReturnToTitleScreen(void); static void CB2_ReturnToTitleScreen(void); static void VBlankCB_UpdateClockGraphics(void); static bool8 VerifySectorWipe(u16 sector); static bool8 WipeSector(u16 sector); -static bool8 WipeSectors(u32 sectorBits); +/*static*/ bool8 WipeSectors(u32 sectorBits); void DoSaveFailedScreen(u8 saveType) { @@ -148,6 +150,151 @@ static void CB2_SaveFailedScreen(void) } } +#if DEBUG +__attribute__((naked)) +void CB2_WipeSave() +{ + asm( + " push {r4, r5, lr}\n" + " mov r4, #0x0\n" + " ldr r0, ._20\n" + " mov r2, #0x1\n" + " strh r2, [r0]\n" + " ldr r0, ._20 + 4\n" + " ldr r0, [r0]\n" + " ldr r1, ._20 + 8\n" + " cmp r0, #0\n" + " beq ._12 @cond_branch\n" + " str r2, [r1]\n" + "._12:\n" + " ldr r0, [r1]\n" + " cmp r0, #0\n" + " beq ._16 @cond_branch\n" + " add r5, r1, #0\n" + "._17:\n" + " ldr r0, [r5]\n" + " bl WipeSectors\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._14 @cond_branch\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r0, ._20 + 12\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl Menu_PrintText\n" + " ldr r0, ._20 + 16\n" + " ldrb r0, [r0]\n" + " bl Save_WriteDataInternal\n" + " ldr r0, [r5]\n" + " cmp r0, #0\n" + " beq ._15 @cond_branch\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r0, ._20 + 20\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl Menu_PrintText\n" + "._15:\n" + " add r0, r4, #1\n" + " lsl r0, r0, #0x18\n" + " lsr r4, r0, #0x18\n" + " ldr r0, [r5]\n" + " cmp r0, #0\n" + " beq ._16 @cond_branch\n" + " cmp r4, #0x2\n" + " bls ._17 @cond_branch\n" + "._16:\n" + " cmp r4, #0x3\n" + " bne ._18 @cond_branch\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r0, ._20 + 24\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl Menu_PrintText\n" + " ldr r0, ._20 + 28\n" + " bl SetMainCallback2\n" + " b ._23\n" + "._21:\n" + " .align 2, 0\n" + "._20:\n" + " .word gSaveFailedClockInfo\n" + " .word gUnknown_Debug_03004BD0\n" + " .word gDamagedSaveSectors\n" + " .word gSystemText_CheckCompleteSaveAttempt\n" + " .word gSaveFailedType\n" + " .word gSystemText_SaveFailedBackupCheck\n" + " .word gSystemText_BackupDamagedGameContinue\n" + " .word CB2_FadeAndReturnToTitleScreen+1\n" + "._18:\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r0, ._24\n" + " ldr r0, [r0]\n" + " cmp r0, #0\n" + " bne ._22 @cond_branch\n" + " ldr r0, ._24 + 4\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl Menu_PrintText\n" + " b ._23\n" + "._25:\n" + " .align 2, 0\n" + "._24:\n" + " .word gGameContinueCallback\n" + " .word gSystemText_SaveCompletedGameEnd\n" + "._14:\n" + " mov r0, #0x1\n" + " mov r1, #0xa\n" + " mov r2, #0x1c\n" + " mov r3, #0x13\n" + " bl Menu_DrawStdWindowFrame\n" + " ldr r0, ._27\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl Menu_PrintText\n" + " ldr r0, ._27 + 4\n" + " bl SetMainCallback2\n" + " b ._26\n" + "._28:\n" + " .align 2, 0\n" + "._27:\n" + " .word gSystemText_BackupDamagedGameContinue\n" + " .word CB2_GameplayCannotBeContinued+1\n" + "._22:\n" + " ldr r0, ._29\n" + " mov r1, #0x2\n" + " mov r2, #0xb\n" + " bl Menu_PrintText\n" + "._23:\n" + " ldr r0, ._29 + 4\n" + " bl SetMainCallback2\n" + "._26:\n" + " pop {r4, r5}\n" + " pop {r0}\n" + " bx r0\n" + "._30:\n" + " .align 2, 0\n" + "._29:\n" + " .word gSystemText_SaveCompletedPressA\n" + " .word CB2_FadeAndReturnToTitleScreen+1\n" + "\n" + ); +} +#else static void CB2_WipeSave(void) { u8 wipeTries = 0; @@ -198,8 +345,9 @@ static void CB2_WipeSave(void) SetMainCallback2(CB2_FadeAndReturnToTitleScreen); } +#endif -static void CB2_GameplayCannotBeContinued(void) +/*static*/ void CB2_GameplayCannotBeContinued(void) { gSaveFailedClockInfo[0] = FALSE; @@ -264,6 +412,41 @@ static void VBlankCB_UpdateClockGraphics(void) gSaveFailedClockInfo[1]--; } +#if DEBUG +__attribute__((naked)) +bool8 VerifySectorWipe(u16 sector) +{ + asm( + " push {lr}\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " ldr r2, ._50\n" + " mov r3, #0x80\n" + " lsl r3, r3, #0x5\n" + " mov r1, #0x0\n" + " bl gMysteryEventScriptCmdTableEnd+0x2d64\n" + " mov r0, #0x0\n" + " ldr r1, ._50 + 4\n" + "._49:\n" + " add r0, r0, #0x1\n" + " lsl r0, r0, #0x10\n" + " lsr r0, r0, #0x10\n" + " cmp r0, r1\n" + " bls ._49 @cond_branch\n" + " ldr r0, ._50 + 8\n" + " ldrb r0, [r0]\n" + " pop {r1}\n" + " bx r1\n" + "._51:\n" + " .align 2, 0\n" + "._50:\n" + " .word +0x2000000\n" + " .word 0x3ff\n" + " .word gUnknown_Debug_03004BD0\n" + "\n" + ); +} +#else static bool8 VerifySectorWipe(u16 sector) { u32 *ptr = (u32 *)&gSharedMem; @@ -277,6 +460,7 @@ static bool8 VerifySectorWipe(u16 sector) return FALSE; } +#endif static bool8 WipeSector(u16 sector) { @@ -294,7 +478,7 @@ static bool8 WipeSector(u16 sector) return failed; } -static bool8 WipeSectors(u32 sectorBits) +/*static*/ bool8 WipeSectors(u32 sectorBits) { u16 i; diff --git a/src/field/party_menu.c b/src/field/party_menu.c index e26b801bc..b76710a2d 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -107,6 +107,69 @@ EWRAM_DATA u8 gUnknown_0202E8F6 = 0; EWRAM_DATA u16 gUnknown_0202E8F8 = 0; EWRAM_DATA u8 gPartyMenuType = 0; +#if 0 +const u16 TMHMMoves[] = +{ + 0x5016, + 0x030D, + 0x3DFF, + MOVE_CALM_MIND, + MOVE_ROAR, + MOVE_TOXIC, + MOVE_HAIL, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_HIDDEN_POWER, + MOVE_SUNNY_DAY, + MOVE_TAUNT, + MOVE_ICE_BEAM, + MOVE_BLIZZARD, + MOVE_HYPER_BEAM, + MOVE_LIGHT_SCREEN, + MOVE_PROTECT, + MOVE_RAIN_DANCE, + MOVE_GIGA_DRAIN, + MOVE_SAFEGUARD, + MOVE_FRUSTRATION, + MOVE_SOLAR_BEAM, + MOVE_IRON_TAIL, + MOVE_THUNDERBOLT, + MOVE_THUNDER, + MOVE_EARTHQUAKE, + MOVE_RETURN, + MOVE_DIG, + MOVE_PSYCHIC, + MOVE_SHADOW_BALL, + MOVE_BRICK_BREAK, + MOVE_DOUBLE_TEAM, + MOVE_REFLECT, + MOVE_SHOCK_WAVE, + MOVE_FLAMETHROWER, + MOVE_SLUDGE_BOMB, + MOVE_SANDSTORM, + MOVE_FIRE_BLAST, + MOVE_ROCK_TOMB, + MOVE_AERIAL_ACE, + MOVE_TORMENT, + MOVE_FACADE, + MOVE_SECRET_POWER, + MOVE_REST, + MOVE_ATTRACT, + MOVE_THIEF, + MOVE_STEEL_WING, + MOVE_SKILL_SWAP, + MOVE_SNATCH, + MOVE_OVERHEAT, + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, +}; +#else const u16 TMHMMoves[] = { MOVE_FOCUS_PUNCH, @@ -168,6 +231,7 @@ const u16 TMHMMoves[] = MOVE_WATERFALL, MOVE_DIVE, }; +#endif //FIXME //const u8 *unrefTileBuffer = gTileBuffer; -- cgit v1.2.3 From b85e23c15a5cbdd88d6c3111d2f54de0a2adac35 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 18 Jan 2018 17:07:11 -0600 Subject: add some debug data --- src/debug/unk_debug_menu_3.c | 39 ++++++++++++++---------- src/engine/menu_cursor.c | 9 ++++++ src/engine/reset_rtc_screen.c | 7 +++++ src/field/field_effect_helpers.c | 2 -- src/field/party_menu.c | 64 ---------------------------------------- src/field/pokeblock.c | 5 ++++ src/pokemon/mail.c | 12 ++++---- 7 files changed, 50 insertions(+), 88 deletions(-) (limited to 'src') diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index dfb92feb9..fe2e6317e 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -1,5 +1,10 @@ +#include "global.h" +#include "menu.h" + +#if DEBUG + __attribute__((naked)) -void debug_sub_813C404() +int debug_sub_813C404() { asm( " push {r4, r5, r6, lr}\n" @@ -27,7 +32,7 @@ void debug_sub_813C404() } __attribute__((naked)) -void debug_sub_813C430() +int debug_sub_813C430() { asm( " push {r4, r5, r6, lr}\n" @@ -55,7 +60,7 @@ void debug_sub_813C430() } __attribute__((naked)) -void debug_sub_813C45C() +int debug_sub_813C45C() { asm( " push {r4, r5, r6, lr}\n" @@ -83,7 +88,7 @@ void debug_sub_813C45C() } __attribute__((naked)) -void debug_sub_813C488() +int debug_sub_813C488() { asm( " push {r4, r5, r6, lr}\n" @@ -111,7 +116,7 @@ void debug_sub_813C488() } __attribute__((naked)) -void debug_sub_813C4B4() +int debug_sub_813C4B4() { asm( " push {r4, lr}\n" @@ -134,7 +139,7 @@ void debug_sub_813C4B4() } __attribute__((naked)) -void debug_sub_813C4D4() +int debug_sub_813C4D4() { asm( " push {r4, r5, r6, lr}\n" @@ -162,7 +167,7 @@ void debug_sub_813C4D4() } __attribute__((naked)) -void debug_sub_813C500() +int debug_sub_813C500() { asm( " push {r4, r5, r6, lr}\n" @@ -237,7 +242,7 @@ void debug_sub_813C52C() } __attribute__((naked)) -void debug_sub_813C580() +int debug_sub_813C580() { asm( " push {lr}\n" @@ -250,7 +255,7 @@ void debug_sub_813C580() } __attribute__((naked)) -void debug_sub_813C58C() +int debug_sub_813C58C() { asm( " push {lr}\n" @@ -263,7 +268,7 @@ void debug_sub_813C58C() } __attribute__((naked)) -void debug_sub_813C598() +int debug_sub_813C598() { asm( " push {lr}\n" @@ -276,7 +281,7 @@ void debug_sub_813C598() } __attribute__((naked)) -void debug_sub_813C5A4() +int debug_sub_813C5A4() { asm( " push {lr}\n" @@ -293,7 +298,7 @@ void debug_sub_813C5A4() } __attribute__((naked)) -void debug_sub_813C5B4() +int debug_sub_813C5B4() { asm( " push {r4, r5, r6, r7, lr}\n" @@ -498,7 +503,7 @@ void debug_sub_813C6AC() } __attribute__((naked)) -void debug_sub_813C740() +int debug_sub_813C740() { asm( " push {r4, r5, r6, lr}\n" @@ -596,7 +601,7 @@ void debug_sub_813C740() } __attribute__((naked)) -void debug_sub_813C810() +int debug_sub_813C810() { asm( " push {r4, r5, r6, lr}\n" @@ -656,7 +661,7 @@ void debug_sub_813C810() } __attribute__((naked)) -void debug_sub_813C888() +int debug_sub_813C888() { asm( " push {r4, r5, r6, lr}\n" @@ -752,7 +757,7 @@ void debug_sub_813C904() } __attribute__((naked)) -void debug_sub_813C93C() +int debug_sub_813C93C() { asm( " push {r4, r5, r6, lr}\n" @@ -795,3 +800,5 @@ void debug_sub_813C93C() ); } +#endif + diff --git a/src/engine/menu_cursor.c b/src/engine/menu_cursor.c index 35116d40b..ae4d5b14a 100644 --- a/src/engine/menu_cursor.c +++ b/src/engine/menu_cursor.c @@ -11,6 +11,15 @@ EWRAM_DATA static u8 gUnknown_0203A3D2 = 0; EWRAM_DATA static u8 gUnknown_0203A3D3 = 0; EWRAM_DATA static u8 gUnknown_0203A3D4 = 0; +#if DEBUG +//const u8 gEmptySpace_08459A8C[0x1C0] = {0}; +//const u8 gEmptySpace_08459A8C[0xE300-0xC700] = {0}; +asm(".section .rodata\n\ + .global gEmptySpace_08459A8C\n\ +gEmptySpace_08459A8C:\n\ + .incbin \"pokeruby_de_debug.gba\", 0x459A8C, 0x1C00"); +#endif + #if ENGLISH #include "../src/data/menu_cursor_en.h" #elif GERMAN diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 0cfa1e71a..cda73f96b 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -147,6 +147,13 @@ const struct SpriteTemplate gSpriteTemplate_83764E8 = const u8 gUnknown_08376500[] = _(" : "); +#if DEBUG +const u8 gUnknown_Debug_0839AE94[] = _("にっすう"); +const u8 gUnknown_Debug_0839AE99[] = _("じかん"); +const u8 gUnknown_Debug_0839AE9D[] = _("ゲームない じかん"); +const u8 gUnknown_Debug_0839AEA7[] = _("RTC じかん"); +#endif + void SpriteCB_ResetRtcCusor0(struct Sprite *sprite) { int state = gTasks[sprite->data[0]].data[2]; diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c index 165829a55..e2514df90 100644 --- a/src/field/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c @@ -29,8 +29,6 @@ static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *); static void sub_8128174(struct Sprite *); static u32 ShowDisguiseFieldEffect(u8, u8, u8); -const u8 UnusedEggString_8401E28[] = _("タマゴ"); - void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) { struct Sprite *newSprite; diff --git a/src/field/party_menu.c b/src/field/party_menu.c index b76710a2d..e26b801bc 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -107,69 +107,6 @@ EWRAM_DATA u8 gUnknown_0202E8F6 = 0; EWRAM_DATA u16 gUnknown_0202E8F8 = 0; EWRAM_DATA u8 gPartyMenuType = 0; -#if 0 -const u16 TMHMMoves[] = -{ - 0x5016, - 0x030D, - 0x3DFF, - MOVE_CALM_MIND, - MOVE_ROAR, - MOVE_TOXIC, - MOVE_HAIL, - MOVE_BULK_UP, - MOVE_BULLET_SEED, - MOVE_HIDDEN_POWER, - MOVE_SUNNY_DAY, - MOVE_TAUNT, - MOVE_ICE_BEAM, - MOVE_BLIZZARD, - MOVE_HYPER_BEAM, - MOVE_LIGHT_SCREEN, - MOVE_PROTECT, - MOVE_RAIN_DANCE, - MOVE_GIGA_DRAIN, - MOVE_SAFEGUARD, - MOVE_FRUSTRATION, - MOVE_SOLAR_BEAM, - MOVE_IRON_TAIL, - MOVE_THUNDERBOLT, - MOVE_THUNDER, - MOVE_EARTHQUAKE, - MOVE_RETURN, - MOVE_DIG, - MOVE_PSYCHIC, - MOVE_SHADOW_BALL, - MOVE_BRICK_BREAK, - MOVE_DOUBLE_TEAM, - MOVE_REFLECT, - MOVE_SHOCK_WAVE, - MOVE_FLAMETHROWER, - MOVE_SLUDGE_BOMB, - MOVE_SANDSTORM, - MOVE_FIRE_BLAST, - MOVE_ROCK_TOMB, - MOVE_AERIAL_ACE, - MOVE_TORMENT, - MOVE_FACADE, - MOVE_SECRET_POWER, - MOVE_REST, - MOVE_ATTRACT, - MOVE_THIEF, - MOVE_STEEL_WING, - MOVE_SKILL_SWAP, - MOVE_SNATCH, - MOVE_OVERHEAT, - MOVE_CUT, - MOVE_FLY, - MOVE_SURF, - MOVE_STRENGTH, - MOVE_FLASH, - MOVE_ROCK_SMASH, - MOVE_WATERFALL, - MOVE_DIVE, -}; -#else const u16 TMHMMoves[] = { MOVE_FOCUS_PUNCH, @@ -231,7 +168,6 @@ const u16 TMHMMoves[] = MOVE_WATERFALL, MOVE_DIVE, }; -#endif //FIXME //const u8 *unrefTileBuffer = gTileBuffer; diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 73fa53d97..b69d8ac06 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -233,6 +233,11 @@ const struct Pokeblock gUnknown_083F7F9C[] = { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20} }; +#if DEBUG +// possibly continuation of gUnknown_083F7F9C? +asm(".incbin \"baserom_de_debug.gba\", 0x424128, 0x50"); +#endif + // text static void sub_810B674(void) diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 1ad8d8376..160bce913 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -298,13 +298,13 @@ const u8 Str_841160F[] = _("{STR_VAR_1} {STR_VAR_2}"); const u8 Str_841161A[] = _("メール{STR_VAR_1} {STR_VAR_2}"); const u8 Str_8411623[] = _("メール{STR_VAR_1}を だれに もたせる?"); const u8 Str_8411634[] = _("000 {STR_VAR_1}"); -const u8 Str_841163B[] = _("せいきの データが とうろくずみ です\n"); -const u8 Str_841163B_after[] = _("しんき とうろく できません"); -const u8 Str_841165E[] = _("せいきに とうろくされたメールデータは\n"); -const u8 Str_841165E_after[] = _("へんこう できません"); +const u8 Str_841163B[] = _("せいきの データが とうろくずみ です\n" + "しんき とうろく できません"); +const u8 Str_841165E[] = _("せいきに とうろくされたメールデータは\n" + "へんこう できません"); const u8 Str_841167D[] = _("メール{STR_VAR_1} とうろく かいじょ"); -const u8 Str_841168D[] = _("デバッグメニューから とうろくした\n"); -const u8 Str_841168D_after[] = _("メール いがいは けせません"); +const u8 Str_841168D[] = _("デバッグメニューから とうろくした\n" + "メール いがいは けせません"); const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); const struct MenuAction _84116BC[] = -- cgit v1.2.3 From 6553903150b6ee262bead5d8c7c5b304bd323fb2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 18 Jan 2018 18:56:44 -0600 Subject: start labeling field_weather --- src/field/coord_event_weather.c | 4 +- src/field/field_weather.c | 193 ++++++++++++++++++-------------------- src/field/field_weather_effects.c | 60 ++++++------ 3 files changed, 125 insertions(+), 132 deletions(-) (limited to 'src') diff --git a/src/field/coord_event_weather.c b/src/field/coord_event_weather.c index db4e9c161..60b87fa30 100644 --- a/src/field/coord_event_weather.c +++ b/src/field/coord_event_weather.c @@ -34,7 +34,7 @@ static const struct CoordEventWeather sCoordEventWeatherFuncs[] = { COORD_EVENT_WEATHER_FOG_2, CoordEventWeather_DiagonalFog }, { COORD_EVENT_WEATHER_ASH, CoordEventWeather_Ash }, { COORD_EVENT_WEATHER_SANDSTORM, CoordEventWeather_Sandstorm }, - { COORD_EVENT_WEATHER_DARK, CoordEventWeather_Dark }, + { COORD_EVENT_WEATHER_SHADE, CoordEventWeather_Dark }, { COORD_EVENT_WEATHER_DROUGHT, CoordEventWeather_Drought }, { COORD_EVENT_WEATHER_ROUTE119_CYCLE, CoordEventWeather_Route119Cycle }, { COORD_EVENT_WEATHER_ROUTE123_CYCLE, CoordEventWeather_Route123Cycle }, @@ -87,7 +87,7 @@ static void CoordEventWeather_Sandstorm(void) static void CoordEventWeather_Dark(void) { - SetWeather(WEATHER_DARK); + SetWeather(WEATHER_SHADE); } static void CoordEventWeather_Drought(void) diff --git a/src/field/field_weather.c b/src/field/field_weather.c index b6475d8ff..5f3f93096 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -13,7 +13,7 @@ #include "trig.h" #include "ewram.h" -#define MACRO1(a) ((((a) >> 1) & 0xF) | (((a) >> 2) & 0xF0) | (((a) >> 3) & 0xF00)) +#define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) struct RGBColor { @@ -108,10 +108,10 @@ void Fog1_InitVars(void); void Fog1_Main(void); void Fog1_InitAll(void); bool8 Fog1_Finish(void); -void Weather11_InitVars(void); -void Weather11_Main(void); -void Weather11_InitAll(void); -bool8 Weather11_Finish(void); +void Shade_InitVars(void); +void Shade_Main(void); +void Shade_InitAll(void); +bool8 Shade_Finish(void); void Drought_InitVars(void); void Drought_Main(void); void Drought_InitAll(void); @@ -138,7 +138,7 @@ static const struct WeatherCallbacks sWeatherFuncs[] = {Sandstorm_InitVars, Sandstorm_Main, Sandstorm_InitAll, Sandstorm_Finish}, {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, - {Weather11_InitVars, Weather11_Main, Weather11_InitAll, Weather11_Finish}, + {Shade_InitVars, Shade_Main, Shade_InitAll, Shade_Finish}, {Drought_InitVars, Drought_Main, Drought_InitAll, Drought_Finish}, {HeavyRain_InitVars, Rain_Main, HeavyRain_InitAll, Rain_Finish}, {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish}, @@ -152,7 +152,7 @@ void (*const gUnknown_083970B8[])(void) = nullsub_39, }; -const u8 gUnknown_083970C8[] = +const u8 gUnknown_083970C8[32] = { 1, 1, @@ -193,6 +193,7 @@ const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); void StartWeather(void) { u8 index; + if (!FuncIsActiveTask(Task_WeatherMain)) { index = AllocSpritePalette(0x1200); @@ -266,7 +267,7 @@ void Task_WeatherMain(u8 taskId) if (!sWeatherFuncs[gWeatherPtr->currWeather].finish()) { sWeatherFuncs[gWeatherPtr->nextWeather].initVars(); - gWeatherPtr->unknown_6C3 = 0; + gWeatherPtr->gammaStepFrameCounter = 0; gWeatherPtr->unknown_6C6 = 0; gWeatherPtr->currWeather = gWeatherPtr->nextWeather; gWeatherPtr->unknown_6D3 = 1; @@ -281,8 +282,8 @@ void Task_WeatherMain(u8 taskId) void None_Init(void) { - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 0; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 0; } void None_Main(void) @@ -315,7 +316,7 @@ void sub_807CB10(void) else v1 = gWeatherPtr->unk460; - for (v2 = 0; (u16)v2 <= 0x1f; v2++) + for (v2 = 0; v2 < 32; v2++) { v4 = v2 << 8; if (v0 == 0) @@ -334,33 +335,27 @@ void sub_807CB10(void) v10 += 0xf; } v11 = v10 >> 4; - if (v2 <= 0xb) + if (v2 < 12) { - for (; v6 <= 0x12; v6++) + for (; v6 < 19; v6++) { v4 += v11; dunno = v4 - v9; if (dunno > 0) - { v4 -= (dunno + ((u16)dunno >> 15)) >> 1; - } v1[v6][v2] = v4 >> 8; if (v1[v6][v2] > 0x1f) - { v1[v6][v2] = 0x1f; - } } } else { - for (; v6 <= 0x12; v6++) + for (; v6 < 19; v6++) { v4 += v11; v1[v6][v2] = v4 >> 8; if (v1[v6][v2] > 0x1f) - { v1[v6][v2] = 0x1f; - } } } } @@ -369,20 +364,20 @@ void sub_807CB10(void) void sub_807CC24(void) { - if (gWeatherPtr->unknown_6C0 == gWeatherPtr->unknown_6C1) + if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) { gWeatherPtr->unknown_6C6 = 3; } else { - if (++gWeatherPtr->unknown_6C3 >= gWeatherPtr->unknown_6C2) + if (++gWeatherPtr->gammaStepFrameCounter >= gWeatherPtr->gammaStepDelay) { - gWeatherPtr->unknown_6C3 = 0; - if (gWeatherPtr->unknown_6C0 < gWeatherPtr->unknown_6C1) - gWeatherPtr->unknown_6C0++; + gWeatherPtr->gammaStepFrameCounter = 0; + if (gWeatherPtr->gammaIndex < gWeatherPtr->gammaTargetIndex) + gWeatherPtr->gammaIndex++; else - gWeatherPtr->unknown_6C0--; - sub_807CEBC(0, 0x20, gWeatherPtr->unknown_6C0); + gWeatherPtr->gammaIndex--; + BlendSomething_807CEBC(0, 0x20, gWeatherPtr->gammaIndex); } } } @@ -397,24 +392,24 @@ void sub_807CCAC(void) case WEATHER_RAIN_MED: case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: - case WEATHER_DARK: - if (sub_807CDC4() == 0) + case WEATHER_SHADE: + if (RainSnowShadeBlend_807CDC4() == 0) { - gWeatherPtr->unknown_6C0 = 3; + gWeatherPtr->gammaIndex = 3; gWeatherPtr->unknown_6C6 = 3; } break; case WEATHER_DROUGHT: - if (sub_807CE24() == 0) + if (DroughtBlend_807CE24() == 0) { - gWeatherPtr->unknown_6C0 = -6; + gWeatherPtr->gammaIndex = -6; gWeatherPtr->unknown_6C6 = 3; } break; case WEATHER_FOG_1: - if (sub_807CE7C() == 0) + if (Fog1Blend_807CE7C() == 0) { - gWeatherPtr->unknown_6C0 = 0; + gWeatherPtr->gammaIndex = 0; gWeatherPtr->unknown_6C6 = 3; } break; @@ -425,47 +420,47 @@ void sub_807CCAC(void) default: if (!gPaletteFade.active) { - gWeatherPtr->unknown_6C0 = gWeatherPtr->unknown_6C1; + gWeatherPtr->gammaIndex = gWeatherPtr->gammaTargetIndex; gWeatherPtr->unknown_6C6 = 3; } break; } } -u8 sub_807CDC4(void) +u8 RainSnowShadeBlend_807CDC4(void) { if (gWeatherPtr->unknown_6C7 == 0x10) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - sub_807CEBC(0, 0x20, 3); + BlendSomething_807CEBC(0, 0x20, 3); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - sub_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); + BlendSomething_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } -u8 sub_807CE24(void) +u8 DroughtBlend_807CE24(void) { if (gWeatherPtr->unknown_6C7 == 0x10) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - sub_807CEBC(0, 0x20, -6); + BlendSomething_807CEBC(0, 0x20, -6); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - sub_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); + BlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } -u8 sub_807CE7C(void) +u8 Fog1Blend_807CE7C(void) { if (gWeatherPtr->unknown_6C7 == 0x10) return 0; ++gWeatherPtr->unknown_6C7; - sub_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); + BlendSomething_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } @@ -473,7 +468,7 @@ void nullsub_39(void) { } -void sub_807CEBC(u8 a, u8 b, s8 c) +void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { u16 r4; u16 palOffset; @@ -578,7 +573,7 @@ void sub_807CEBC(u8 a, u8 b, s8 c) } } -void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) +void BlendSomething_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) { u16 palOffset; u16 r4; @@ -625,7 +620,7 @@ void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) } } -void sub_807D304(s8 a, u8 coeff, u16 c) +void BlendSomething_807D304(s8 a, u8 coeff, u16 c) { struct RGBColor color; u8 r_; @@ -681,31 +676,30 @@ void sub_807D304(s8 a, u8 coeff, u16 c) bool8 sub_807D574(u8); -void sub_807D424(u8 a, u16 b) +void BlendSomething_807D424(u8 coeff, u16 blendColor) { struct RGBColor color; - u8 r_; - u8 g_; - u8 b_; - u16 r4; - - BlendPalette(0, 0x100, a, b); - color = *(struct RGBColor *)&b; - r_ = color.r; - g_ = color.g; - b_ = color.b; - - r4 = 16; - while (r4 < 32) + u8 blendR; + u8 blendG; + u8 blendB; + u16 palNum; + + BlendPalette(0, 0x100, coeff, blendColor); + color = *(struct RGBColor *)&blendColor; + blendR = color.r; + blendG = color.g; + blendB = color.b; + + for (palNum = 16; palNum < 32; palNum++) { - if (sub_807D574(r4)) + if (sub_807D574(palNum)) { - u16 r12 = (r4 + 1) * 16; - u16 r6 = r4 * 16; + u16 palEnd = (palNum + 1) * 16; + u16 palOffset = palNum * 16; - while (r6 < r12) + while (palOffset < palEnd) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[r6]; + struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; u8 r = color.r; u8 g = color.g; u8 b = color.b; @@ -714,19 +708,18 @@ void sub_807D424(u8 a, u16 b) g += ((31 - g) * 3) >> 2; b += ((28 - b) * 3) >> 2; - r += ((r_ - r) * a) >> 4; - g += ((g_ - g) * a) >> 4; - b += ((b_ - b) * a) >> 4; + r += ((blendR - r) * coeff) >> 4; + g += ((blendG - g) * coeff) >> 4; + b += ((blendB - b) * coeff) >> 4; - gPlttBufferFaded[r6] = (b << 10) | (g << 5) | r; - r6++; + gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r; + palOffset++; } } else { - BlendPalette(r4 * 16, 16, a, b); + BlendPalette(palNum * 16, 16, coeff, blendColor); } - r4++; } } @@ -755,8 +748,8 @@ void sub_807D5BC(s8 a) { if (gWeatherPtr->unknown_6C6 == 3) { - sub_807CEBC(0, 32, a); - gWeatherPtr->unknown_6C0 = a; + BlendSomething_807CEBC(0, 32, a); + gWeatherPtr->gammaIndex = a; } } @@ -765,37 +758,37 @@ void sub_807D5F0(u8 a, u8 b, u8 c) if (gWeatherPtr->unknown_6C6 == 3) { gWeatherPtr->unknown_6C6 = 0; - gWeatherPtr->unknown_6C0 = a; - gWeatherPtr->unknown_6C1 = b; - gWeatherPtr->unknown_6C3 = 0; - gWeatherPtr->unknown_6C2 = c; + gWeatherPtr->gammaIndex = a; + gWeatherPtr->gammaTargetIndex = b; + gWeatherPtr->gammaStepFrameCounter = 0; + gWeatherPtr->gammaStepDelay = c; sub_807D5BC(a); } } -void fade_screen(u8 a, u8 delay) +void fade_screen(u8 mode, u8 delay) { u32 fadeColor; - u32 r1; - u32 r2; + bool8 fadeTo; + bool8 useWeatherPal; - switch (a) + switch (mode) { - case 0: + case FADE_FROM_BLACK: fadeColor = 0; - r1 = 0; + fadeTo = FALSE; break; - case 2: + case FADE_FROM_WHITE: fadeColor = 0xFFFF; - r1 = 0; + fadeTo = FALSE; break; - case 1: + case FADE_TO_BLACK: fadeColor = 0; - r1 = 1; + fadeTo = TRUE; break; - case 3: + case FADE_TO_WHITE: fadeColor = 0xFFFF; - r1 = 1; + fadeTo = TRUE; break; default: return; @@ -808,26 +801,26 @@ void fade_screen(u8 a, u8 delay) case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: case WEATHER_FOG_1: - case WEATHER_DARK: + case WEATHER_SHADE: case WEATHER_DROUGHT: - r2 = 1; + useWeatherPal = TRUE; break; default: - r2 = 0; + useWeatherPal = FALSE; break; } - if (r1 != 0) + if (fadeTo) { - if (r2 != 0) + if (useWeatherPal) CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor); gWeatherPtr->unknown_6C6 = 2; } else { - gWeatherPtr->unknown_6C4 = fadeColor; - if (r2 != 0) + gWeatherPtr->fadeDestColor = fadeColor; + if (useWeatherPal) gWeatherPtr->unknown_6C7 = 0; else BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor); @@ -858,7 +851,7 @@ void sub_807D78C(u8 a) sub_807D540(r4); r4 *= 16; for (i = 0; i < 16; i++) - gPlttBufferFaded[r4 + i] = gWeatherPtr->unknown_6C4; + gPlttBufferFaded[r4 + i] = gWeatherPtr->fadeDestColor; } break; case 2: @@ -869,7 +862,7 @@ void sub_807D78C(u8 a) default: if (gWeatherPtr->currWeather != WEATHER_FOG_1) { - sub_807CEBC(r4, 1, gWeatherPtr->unknown_6C0); + BlendSomething_807CEBC(r4, 1, gWeatherPtr->gammaIndex); } else { @@ -882,7 +875,7 @@ void sub_807D78C(u8 a) void sub_807D874(u8 a) { - sub_807CEBC(a, 1, gWeatherPtr->unknown_6C0); + BlendSomething_807CEBC(a, 1, gWeatherPtr->gammaIndex); } u8 unref_sub_807D894(void) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 5a59d6c2a..154cd2e12 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -91,8 +91,8 @@ extern void sub_807D5F0(u8 a, u8 b, u8 c); void Clouds_InitVars(void) { - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->initStep = 0; if (gWeatherPtr->cloudSpritesCreated == FALSE) @@ -159,8 +159,8 @@ bool8 Clouds_Finish(void) void Weather2_InitVars(void) { - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; } void Weather2_InitAll(void) @@ -236,8 +236,8 @@ void Drought_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 0; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 0; } void Drought_Main(void); @@ -368,8 +368,8 @@ void LightRain_InitVars(void) gWeatherPtr->unknown_6DB = 8; gWeatherPtr->unknown_6DC = 0; gWeatherPtr->unknown_6D9 = 10; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; SetRainStrengthFromSoundEffect(SE_T_KOAME); } @@ -885,8 +885,8 @@ void Snow_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->unknown_6E5 = 16; gWeatherPtr->unknown_6E0 = 0; } @@ -1074,8 +1074,8 @@ void MedRain_InitVars(void) gWeatherPtr->unknown_6DB = 4; gWeatherPtr->unknown_6DC = 0; gWeatherPtr->unknown_6D9 = 16; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->unknown_6ED = 0; SetRainStrengthFromSoundEffect(SE_T_AME); @@ -1102,8 +1102,8 @@ void HeavyRain_InitVars(void) gWeatherPtr->unknown_6DB = 4; gWeatherPtr->unknown_6DC = 1; gWeatherPtr->unknown_6D9 = 24; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_T_OOAME); } @@ -1296,8 +1296,8 @@ void Fog1_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; if (gWeatherPtr->fog1SpritesCreated == 0) { gWeatherPtr->unknown_6F0 = 0; @@ -1446,8 +1446,8 @@ void Ash_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->unknown_6FE = 20; if (!gWeatherPtr->ashSpritesCreated) { @@ -1634,8 +1634,8 @@ void Fog2_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = 0; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2 = 1; if (gWeatherPtr->fog2SpritesCreated == 0) @@ -1835,8 +1835,8 @@ void Sandstorm_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = 0; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 0; + gWeatherPtr->gammaStepDelay = 20; if (gWeatherPtr->sandstormSprites1Created == 0) { gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0; @@ -2113,26 +2113,26 @@ void SandstormSpriteCallback3(struct Sprite *sprite) } //------------------------------------------------------------------------------ -// Weather 11 +// Shade //------------------------------------------------------------------------------ -void Weather11_InitVars(void) +void Shade_InitVars(void) { gWeatherPtr->initStep = 0; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->gammaTargetIndex = 3; + gWeatherPtr->gammaStepDelay = 20; } -void Weather11_InitAll(void) +void Shade_InitAll(void) { - Weather11_InitVars(); + Shade_InitVars(); } -void Weather11_Main(void) +void Shade_Main(void) { } -bool8 Weather11_Finish(void) +bool8 Shade_Finish(void) { return FALSE; } -- cgit v1.2.3 From a0cb6c72b6ba7c1b2d2464f3c1ac04354d5d05de Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 18 Jan 2018 21:18:06 -0500 Subject: shop enum --- src/field/shop.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/field/shop.c b/src/field/shop.c index beed50a41..a228ff92f 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -76,8 +76,8 @@ static const struct MenuAction2 sBuySellQuitMenuActions[] = { MartText_Quit2, Task_HandleShopMenuQuit }, }; -static const u8 gMartBuySellOptionList[] = {BUY, SELL, EXIT}; -static const u8 gMartBuyNoSellOptionList[] = {BUY, EXIT}; +static const u8 gMartBuySellOptionList[] = {SHOP_BUY, SHOP_SELL, SHOP_EXIT}; +static const u8 gMartBuyNoSellOptionList[] = {SHOP_BUY, SHOP_EXIT}; static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0}; -- cgit v1.2.3 From c9f2902f0ebce0cff90c9a06f9ae05b921b17448 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Fri, 19 Jan 2018 15:48:40 -0600 Subject: dump outline cursors for debug ROM --- src/data/menu_cursor_de.h | 19 +++++++++++++++++++ src/engine/menu_cursor.c | 9 --------- 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/data/menu_cursor_de.h b/src/data/menu_cursor_de.h index cd56f51d9..7be9e96aa 100644 --- a/src/data/menu_cursor_de.h +++ b/src/data/menu_cursor_de.h @@ -1,6 +1,24 @@ #ifndef GUARD_DATA_MENU_CURSOR_H #define GUARD_DATA_MENU_CURSOR_H +#if DEBUG +const u8 OutlineCursorTiles_00[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_00.4bpp"); +const u8 OutlineCursorTiles_01[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_01.4bpp"); +const u8 OutlineCursorTiles_02[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_02.4bpp"); +const u8 OutlineCursorTiles_03[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_03.4bpp"); +const u8 OutlineCursorTiles_04[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_04.4bpp"); +const u8 OutlineCursorTiles_05[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_05.4bpp"); +const u8 OutlineCursorTiles_06[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_06.4bpp"); +const u8 OutlineCursorTiles_07[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_07.4bpp"); +const u8 OutlineCursorTiles_08[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_08.4bpp"); +const u8 OutlineCursorTiles_09[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_09.4bpp"); +const u8 OutlineCursorTiles_10[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_10.4bpp"); +const u8 OutlineCursorTiles_11[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_11.4bpp"); +const u8 OutlineCursorTiles_12[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_12.4bpp"); +const u8 OutlineCursorTiles_13[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_13.4bpp"); +const u8 OutlineCursorTiles_14[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_14.4bpp"); +const u8 OutlineCursorTiles_15[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_15.4bpp"); +#else const u8 OutlineCursorTiles_00[] = INCBIN_U8("graphics/interface/outline_cursor_00.4bpp"); const u8 OutlineCursorTiles_01[] = INCBIN_U8("graphics/interface/outline_cursor_01.4bpp"); const u8 OutlineCursorTiles_02[] = INCBIN_U8("graphics/interface/outline_cursor_02.4bpp"); @@ -17,6 +35,7 @@ const u8 OutlineCursorTiles_12[] = INCBIN_U8("graphics/interface/outline_cursor_ const u8 OutlineCursorTiles_13[] = INCBIN_U8("graphics/interface/outline_cursor_13.4bpp"); const u8 OutlineCursorTiles_14[] = INCBIN_U8("graphics/interface/outline_cursor_14.4bpp"); const u8 OutlineCursorTiles_15[] = INCBIN_U8("graphics/interface/outline_cursor_15.4bpp"); +#endif const struct OamData gOamData_842F11C = { .objMode = ST_OAM_OBJ_NORMAL, diff --git a/src/engine/menu_cursor.c b/src/engine/menu_cursor.c index ae4d5b14a..35116d40b 100644 --- a/src/engine/menu_cursor.c +++ b/src/engine/menu_cursor.c @@ -11,15 +11,6 @@ EWRAM_DATA static u8 gUnknown_0203A3D2 = 0; EWRAM_DATA static u8 gUnknown_0203A3D3 = 0; EWRAM_DATA static u8 gUnknown_0203A3D4 = 0; -#if DEBUG -//const u8 gEmptySpace_08459A8C[0x1C0] = {0}; -//const u8 gEmptySpace_08459A8C[0xE300-0xC700] = {0}; -asm(".section .rodata\n\ - .global gEmptySpace_08459A8C\n\ -gEmptySpace_08459A8C:\n\ - .incbin \"pokeruby_de_debug.gba\", 0x459A8C, 0x1C00"); -#endif - #if ENGLISH #include "../src/data/menu_cursor_en.h" #elif GERMAN -- cgit v1.2.3 From 428f712da678b3f5b9256d85c0e3248cacd8e7c2 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 19 Jan 2018 21:30:16 -0800 Subject: Further document weather --- src/battle/battle_util.c | 6 +- src/field/decoration.c | 6 +- src/field/field_control_avatar.c | 7 +- src/field/field_effect.c | 6 +- src/field/field_weather.c | 486 ++++++++++++++++++++------------------ src/field/field_weather_effects.c | 12 +- src/field/overworld.c | 6 +- src/scene/cable_car.c | 2 +- 8 files changed, 283 insertions(+), 248 deletions(-) (limited to 'src') diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index f93664593..87b6952ff 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -4,6 +4,7 @@ #include "data2.h" #include "event_data.h" #include "ewram.h" +#include "field_weather.h" #include "item.h" #include "link.h" #include "pokemon.h" @@ -85,7 +86,6 @@ u8 CountTrailingZeroBits(u32 a); u8 GetMoveTarget(u16 move, u8 useMoveTarget); u8 sub_803FC34(u8 bank); u16 sub_803FBFC(u8 a); -u8 weather_get_current(void); void RecordAbilityBattle(u8 bank, u8 ability); void RecordItemBattle(u8 bank, u8 holdEffect); s8 GetPokeFlavourRelation(u32 pid, u8 flavor); @@ -1747,7 +1747,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { case 0xFF: //weather from overworld //_08018586 - switch (weather_get_current()) + switch (GetCurrentWeather()) { case WEATHER_RAIN_LIGHT: case WEATHER_RAIN_MED: @@ -1781,7 +1781,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } if (effect) { - gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); + gBattleCommunication[MULTISTRING_CHOOSER] = GetCurrentWeather(); BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); } break; diff --git a/src/field/decoration.c b/src/field/decoration.c index e1604cfa1..1cc3bbe06 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -2289,7 +2289,7 @@ void sub_80FF6AC(u8 taskId) gTasks[taskId].data[2] = 2; break; case 2: - if (sub_807D770() == 1) + if (sub_807D770() == TRUE) { gTasks[taskId].data[12] = 0; sub_810065C(taskId); @@ -3222,7 +3222,7 @@ void c1_overworld_prev_quest(u8 taskId) void sub_8100334(u8 taskId) { - if (sub_807D770() == 1) + if (sub_807D770() == TRUE) { gTasks[taskId].func = sub_80FE948; } @@ -3735,7 +3735,7 @@ void sub_8100C88(u8 taskId) gTasks[taskId].data[2] = 3; break; case 3: - if (sub_807D770() == 1) + if (sub_807D770() == TRUE) { gTasks[taskId].data[13] = -1; DisplayItemMessageOnField(taskId, gSecretBaseText_DecorReturned, sub_81010F0, 0); diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index c156df035..bf96c724f 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -767,20 +767,19 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent) return NULL; } -static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 d) +static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 elevation) { s32 i; struct CoordEvent *coordEvents = mapHeader->events->coordEvents; u8 coordEventCount = mapHeader->events->coordEventCount; - u8 *script; for (i = 0; i < coordEventCount; i++) { if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y) { - if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0) + if (coordEvents[i].elevation == elevation || coordEvents[i].elevation == 0) { - script = trigger_activate(&coordEvents[i]); + u8 *script = trigger_activate(&coordEvents[i]); if (script != NULL) return script; } diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 5ff89574b..a3134552d 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -543,7 +543,7 @@ u8 CreateMonSprite_PicBox(u16 species, s16 x, s16 y, u8 subpriority) LoadCompressedObjectPalette(&gMonPaletteTable[species]); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = gMonPaletteTable[0].tag; - sub_807DE38(IndexOfSpritePaletteTag(gMonPaletteTable[0].tag) + 0x10); + PreservePaletteInWeather(IndexOfSpritePaletteTag(gMonPaletteTable[0].tag) + 0x10); return CreateSprite(&gUnknown_02024E8C, x, y, subpriority); } @@ -556,13 +556,13 @@ u8 CreateMonSprite_FieldMove(u16 species, u32 d, u32 g, s16 x, s16 y, u8 subprio LoadCompressedObjectPalette(spritePalette); GetMonSpriteTemplate_803C56C(species, 3); gUnknown_02024E8C.paletteTag = spritePalette->tag; - sub_807DE38(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); + PreservePaletteInWeather(IndexOfSpritePaletteTag(spritePalette->tag) + 0x10); return CreateSprite(&gUnknown_02024E8C, x, y, subpriority); } void FreeResourcesAndDestroySprite(struct Sprite *sprite) { - sub_807DE68(); + ResetPreservedPalettesInWeather(); FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); if (sprite->oam.affineMode != 0) { diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 5f3f93096..2a5c311ab 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -15,6 +15,12 @@ #define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00)) +enum { + GAMMA_NONE, + GAMMA_NORMAL, + GAMMA_ALT, +}; + struct RGBColor { u16 r:5; @@ -24,7 +30,7 @@ struct RGBColor struct WeatherPaletteData { - u16 data[0][0x1000]; // unknown length + u16 gammaShiftColors[8][0x1000]; // 0x1000 is the number of bytes that make up all palettes. }; struct WeatherCallbacks @@ -36,10 +42,10 @@ struct WeatherCallbacks }; EWRAM_DATA struct Weather gWeather = {0}; -EWRAM_DATA u8 gUnknown_0202FF38[32] = {0}; +EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0}; EWRAM_DATA u16 gUnknown_0202FF58 = {0}; -static const u8 *gUnknown_030006DC; +static const u8 *sPaletteGammaTypes; const u8 DroughtPaletteData_0[] = INCBIN_U8("graphics/weather/drought0.bin.lz"); const u8 DroughtPaletteData_1[] = INCBIN_U8("graphics/weather/drought1.bin.lz"); @@ -56,7 +62,7 @@ static const u8 *const sCompressedDroughtPalettes[] = DroughtPaletteData_3, DroughtPaletteData_4, DroughtPaletteData_5, - gSharedMem, + (u8*)eDroughtPaletteData.gammaShiftColors, }; // This is a pointer to gWeather. All code in this file accesses gWeather directly, @@ -65,6 +71,10 @@ static const u8 *const sCompressedDroughtPalettes[] = // this file produces the same result as accessing gWeather directly. struct Weather *const gWeatherPtr = &gWeather; +static bool8 sub_807D574(u8); +static void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static void BuildGammaShiftTables(void); +static void UpdateGammaShift(void); void None_Init(void); void None_Main(void); bool8 None_Finish(void); @@ -130,7 +140,7 @@ static const struct WeatherCallbacks sWeatherFuncs[] = {None_Init, None_Main, None_Init, None_Finish}, {Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish}, {Weather2_InitVars, Weather2_Main, Weather2_InitAll, Weather2_Finish}, - {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, // light rain + {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, {Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish}, {MedRain_InitVars, Rain_Main, MedRain_InitAll, Rain_Finish}, {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, @@ -146,46 +156,50 @@ static const struct WeatherCallbacks sWeatherFuncs[] = void (*const gUnknown_083970B8[])(void) = { - sub_807CC24, + UpdateGammaShift, sub_807CCAC, nullsub_39, nullsub_39, }; -const u8 gUnknown_083970C8[32] = +// This table specifies which of the gamma shift tables should be +// applied to each of the background and sprite palettes. +static const u8 sBasePaletteGammaTypes[32] = { - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 0, - 2, - 1, - 2, - 2, - 2, - 2, - 1, - 1, - 1, - 1, - 2, - 1, - 1, - 1, - 1, - 1, + // background palettes + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NONE, + GAMMA_NONE, + // sprite palettes + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_ALT, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, + GAMMA_NORMAL, }; const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); @@ -198,8 +212,8 @@ void StartWeather(void) { index = AllocSpritePalette(0x1200); CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); - sub_807CB10(); - gWeatherPtr->unknown_6D5 = index; + BuildGammaShiftTables(); + gWeatherPtr->altGammaSpritePalIndex = index; gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->unknown_6D8 = 0; @@ -221,33 +235,35 @@ void StartWeather(void) } } -void DoWeatherEffect(u8 effect) +void ChangeWeather(u8 weather) { - if (effect != WEATHER_RAIN_LIGHT && effect != WEATHER_RAIN_MED && effect != WEATHER_RAIN_HEAVY) + if (weather != WEATHER_RAIN_LIGHT && weather != WEATHER_RAIN_MED && weather != WEATHER_RAIN_HEAVY) { PlayRainSoundEffect(); } - if (gWeatherPtr->nextWeather != effect && gWeatherPtr->currWeather == effect) + + if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather) { - sWeatherFuncs[effect].initVars(); + sWeatherFuncs[weather].initVars(); } + gWeatherPtr->unknown_6D3 = 0; - gWeatherPtr->nextWeather = effect; + gWeatherPtr->nextWeather = weather; gWeatherPtr->finishStep = 0; } -void sub_807C988(u8 effect) +void sub_807C988(u8 weather) { PlayRainSoundEffect(); - gWeatherPtr->currWeather = effect; - gWeatherPtr->nextWeather = effect; + gWeatherPtr->currWeather = weather; + gWeatherPtr->nextWeather = weather; } -void sub_807C9B4(u8 effect) +void sub_807C9B4(u8 weather) { PlayRainSoundEffect(); - gWeatherPtr->currWeather = effect; - gWeatherPtr->nextWeather = effect; + gWeatherPtr->currWeather = weather; + gWeatherPtr->nextWeather = weather; gWeatherPtr->unknown_6C8 = 1; } @@ -295,7 +311,10 @@ u8 None_Finish(void) return 0; } -void sub_807CB10(void) +// Builds two tables that contain gamma shifts for palette colors. +// It's unclear why the two tables aren't declared as const arrays, since +// this function always builds the same two tables. +static void BuildGammaShiftTables(void) { u16 v0; u8 (*v1)[32]; @@ -308,13 +327,13 @@ void sub_807CB10(void) u16 v11; s16 dunno; - gUnknown_030006DC = gUnknown_083970C8; + sPaletteGammaTypes = sBasePaletteGammaTypes; for (v0 = 0; v0 <= 1; v0++) { if (v0 == 0) - v1 = gWeatherPtr->unknown_200; + v1 = gWeatherPtr->gammaShifts; else - v1 = gWeatherPtr->unk460; + v1 = gWeatherPtr->altGammaShifts; for (v2 = 0; v2 < 32; v2++) { @@ -362,7 +381,9 @@ void sub_807CB10(void) } } -void sub_807CC24(void) +// When the weather is changing, it gradually updates the palettes +// towards the desired gamma shift. +static void UpdateGammaShift(void) { if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) { @@ -377,7 +398,7 @@ void sub_807CC24(void) gWeatherPtr->gammaIndex++; else gWeatherPtr->gammaIndex--; - BlendSomething_807CEBC(0, 0x20, gWeatherPtr->gammaIndex); + BlendSomething_807CEBC(0, 32, gWeatherPtr->gammaIndex); } } } @@ -433,11 +454,11 @@ u8 RainSnowShadeBlend_807CDC4(void) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - BlendSomething_807CEBC(0, 0x20, 3); + BlendSomething_807CEBC(0, 32, 3); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - BlendSomething_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); + BlendSomething_807D1BC(0, 32, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } @@ -447,11 +468,11 @@ u8 DroughtBlend_807CE24(void) return 0; if (++gWeatherPtr->unknown_6C7 >= 0x10) { - BlendSomething_807CEBC(0, 0x20, -6); + BlendSomething_807CEBC(0, 32, -6); gWeatherPtr->unknown_6C7 = 0x10; return 0; } - BlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); + DroughtBlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); return 1; } @@ -468,23 +489,26 @@ void nullsub_39(void) { } -void BlendSomething_807CEBC(u8 a, u8 b, s8 c) +void BlendSomething_807CEBC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) { - u16 r4; + u16 curPalIndex; u16 palOffset; - u8 *r6; + u8 *gammaTable; u16 i; - if (c > 0) + if (gammaIndex > 0) { - c = c - 1; - palOffset = a * 16; - b += a; - r4 = a; - while (r4 < b) + gammaIndex--; + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + curPalIndex = startPalIndex; + + // Loop through the speficied palette range and apply necessary gamma shifts to the colors. + while (curPalIndex < numPalettes) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { + // No palette change. CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } @@ -492,25 +516,27 @@ void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { u8 r, g, b; - if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gWeatherPtr->unknown_6D5) - r6 = gWeatherPtr->unk460[c]; + if (sPaletteGammaTypes[curPalIndex] == GAMMA_ALT || curPalIndex - 16 == gWeatherPtr->altGammaSpritePalIndex) + gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; else - r6 = gWeatherPtr->unknown_200[c]; - if (r4 == 16 || r4 > 0x1B) + gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; + + if (curPalIndex == 16 || curPalIndex > 27) { for (i = 0; i < 16; i++) { - if (gPlttBufferUnfaded[palOffset] == 0x2D9F) + if (gPlttBufferUnfaded[palOffset] == RGB(31, 12, 11)) { + // Skip gamma shift for this specific color. (Why?) palOffset++; } else { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - - r = r6[color.r]; - g = r6[color.g]; - b = r6[color.b]; + // Apply gamma shift to the original color. + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + r = gammaTable[baseColor.r]; + g = gammaTable[baseColor.g]; + b = gammaTable[baseColor.b]; gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; } } @@ -519,39 +545,45 @@ void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { for (i = 0; i < 16; i++) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - - r = r6[color.r]; - g = r6[color.g]; - b = r6[color.b]; + // Apply gamma shift to the original color. + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + r = gammaTable[baseColor.r]; + g = gammaTable[baseColor.g]; + b = gammaTable[baseColor.b]; gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; } } } - r4++; + + curPalIndex++; } } - else if (c < 0) + else if (gammaIndex < 0) { - c = -c - 1; - palOffset = a * 16; - b += a; - r4 = a; - while (r4 < b) + // A negative gammIndex value means that the blending will come from the special Drought weather's palette tables. + gammaIndex = -gammaIndex - 1; + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + curPalIndex = startPalIndex; + + while (curPalIndex < numPalettes) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { + // No palette change. CpuFastCopy(gPlttBufferUnfaded + palOffset, gPlttBufferFaded + palOffset, 16 * sizeof(u16)); palOffset += 16; } else { - if (r4 == 16 || r4 > 0x1B) + if (curPalIndex == 16 || curPalIndex > 27) { for (i = 0; i < 16; i++) { - if (gPlttBufferUnfaded[palOffset] != 0x2D9F) - gPlttBufferFaded[palOffset] = eWeatherPaletteData.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + // Skip gamma shift for this specific color. (Why?) + if (gPlttBufferUnfaded[palOffset] != RGB(31, 12, 11)) + gPlttBufferFaded[palOffset] = eDroughtPaletteData.gammaShiftColors[gammaIndex][MACRO1(gPlttBufferUnfaded[palOffset])]; + palOffset++; } } @@ -559,93 +591,100 @@ void BlendSomething_807CEBC(u8 a, u8 b, s8 c) { for (i = 0; i < 16; i++) { - gPlttBufferFaded[palOffset] = eWeatherPaletteData.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + gPlttBufferFaded[palOffset] = eDroughtPaletteData.gammaShiftColors[gammaIndex][MACRO1(gPlttBufferUnfaded[palOffset])]; palOffset++; } } } - r4++; + + curPalIndex++; } } else { - CpuFastCopy(gPlttBufferUnfaded + a * 16, gPlttBufferFaded + a * 16, b * 16 * sizeof(u16)); + // No palette blending. + CpuFastCopy(gPlttBufferUnfaded + startPalIndex * 16, gPlttBufferFaded + startPalIndex * 16, numPalettes * 16 * sizeof(u16)); } } -void BlendSomething_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) +void BlendSomething_807D1BC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) { u16 palOffset; - u16 r4; + u16 curPalIndex; u16 i; - struct RGBColor color = *(struct RGBColor *)&e; - u8 r_ = color.r; - u8 g_ = color.g; - u8 b_ = color.b; - - palOffset = a1 * 16; - a2 += a1; - c = c - 1; - r4 = a1; - while (r4 < a2) + struct RGBColor color = *(struct RGBColor *)&blendColor; + u8 rBlend = color.r; + u8 gBlend = color.g; + u8 bBlend = color.b; + + palOffset = startPalIndex * 16; + numPalettes += startPalIndex; + gammaIndex--; + curPalIndex = startPalIndex; + + while (curPalIndex < numPalettes) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { - BlendPalette(palOffset, 16, d, e); + // No gamma shift. Simply blend the colors. + BlendPalette(palOffset, 16, blendCoeff, blendColor); palOffset += 16; } else { - u8 *r5; + u8 *gammaTable; - if (gUnknown_030006DC[r4] == 1) - r5 = gWeatherPtr->unknown_200[c]; + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NORMAL) + gammaTable = gWeatherPtr->gammaShifts[gammaIndex]; else - r5 = gWeatherPtr->unk460[c]; + gammaTable = gWeatherPtr->altGammaShifts[gammaIndex]; for (i = 0; i < 16; i++) { - struct RGBColor color = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; - u8 r = r5[color.r]; - u8 g = r5[color.g]; - u8 b = r5[color.b]; - - r += ((r_ - r) * d) >> 4; - g += ((g_ - g) * d) >> 4; - b += ((b_ - b) * d) >> 4; + struct RGBColor baseColor = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; + u8 r = gammaTable[baseColor.r]; + u8 g = gammaTable[baseColor.g]; + u8 b = gammaTable[baseColor.b]; + + // Apply gamma shift and target blend color to the original color. + r += ((rBlend - r) * blendCoeff) >> 4; + g += ((gBlend - g) * blendCoeff) >> 4; + b += ((bBlend - b) * blendCoeff) >> 4; gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r; } } - r4++; + + curPalIndex++; } } -void BlendSomething_807D304(s8 a, u8 coeff, u16 c) +void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor) { struct RGBColor color; - u8 r_; - u8 g_; - u8 b_; - u16 r4; + u8 rBlend; + u8 gBlend; + u8 bBlend; + u16 curPalIndex; u16 palOffset; - u16 r12; + u16 i; - a = -a - 1; - color = *(struct RGBColor *)&c; - r_ = color.r; - g_ = color.g; - b_ = color.b; + gammaIndex = -gammaIndex - 1; + color = *(struct RGBColor *)&blendColor; + rBlend = color.r; + gBlend = color.g; + bBlend = color.b; palOffset = 0; - for (r4 = 0; r4 < 32; r4++) + for (curPalIndex = 0; curPalIndex < 32; curPalIndex++) { - if (gUnknown_030006DC[r4] == 0) + if (sPaletteGammaTypes[curPalIndex] == GAMMA_NONE) { - BlendPalette(palOffset, 16, coeff, c); + // No gamma shift. Simply blend the colors. + BlendPalette(palOffset, 16, blendCoeff, blendColor); palOffset += 16; } else { - for (r12 = 0; r12 < 16; r12++) + for (i = 0; i < 16; i++) { u32 offset; struct RGBColor color1; @@ -659,14 +698,14 @@ void BlendSomething_807D304(s8 a, u8 coeff, u16 c) b1 = color1.b; offset = ((b1 & 0x1E) << 7) | ((g1 & 0x1E) << 3) | ((r1 & 0x1E) >> 1); - color2 = *(struct RGBColor *)&eWeatherPaletteData.data[a][offset]; + color2 = *(struct RGBColor *)&eDroughtPaletteData.gammaShiftColors[gammaIndex][offset]; r2 = color2.r; g2 = color2.g; b2 = color2.b; - r2 += ((r_ - r2) * coeff) >> 4; - g2 += ((g_ - g2) * coeff) >> 4; - b2 += ((b_ - b2) * coeff) >> 4; + r2 += ((rBlend - r2) * blendCoeff) >> 4; + g2 += ((gBlend - g2) * blendCoeff) >> 4; + b2 += ((bBlend - b2) * blendCoeff) >> 4; gPlttBufferFaded[palOffset++] = (b2 << 10) | (g2 << 5) | r2; } @@ -674,28 +713,26 @@ void BlendSomething_807D304(s8 a, u8 coeff, u16 c) } } -bool8 sub_807D574(u8); - -void BlendSomething_807D424(u8 coeff, u16 blendColor) +void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) { struct RGBColor color; - u8 blendR; - u8 blendG; - u8 blendB; - u16 palNum; + u8 rBlend; + u8 gBlend; + u8 bBlend; + u16 curPalIndex; - BlendPalette(0, 0x100, coeff, blendColor); + BlendPalette(0, 0x100, blendCoeff, blendColor); color = *(struct RGBColor *)&blendColor; - blendR = color.r; - blendG = color.g; - blendB = color.b; + rBlend = color.r; + gBlend = color.g; + bBlend = color.b; - for (palNum = 16; palNum < 32; palNum++) + for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) { - if (sub_807D574(palNum)) + if (sub_807D574(curPalIndex)) { - u16 palEnd = (palNum + 1) * 16; - u16 palOffset = palNum * 16; + u16 palEnd = (curPalIndex + 1) * 16; + u16 palOffset = curPalIndex * 16; while (palOffset < palEnd) { @@ -708,9 +745,9 @@ void BlendSomething_807D424(u8 coeff, u16 blendColor) g += ((31 - g) * 3) >> 2; b += ((28 - b) * 3) >> 2; - r += ((blendR - r) * coeff) >> 4; - g += ((blendG - g) * coeff) >> 4; - b += ((blendB - b) * coeff) >> 4; + r += ((rBlend - r) * blendCoeff) >> 4; + g += ((gBlend - g) * blendCoeff) >> 4; + b += ((bBlend - b) * blendCoeff) >> 4; gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r; palOffset++; @@ -718,51 +755,52 @@ void BlendSomething_807D424(u8 coeff, u16 blendColor) } else { - BlendPalette(palNum * 16, 16, coeff, blendColor); + BlendPalette(curPalIndex * 16, 16, blendCoeff, blendColor); } } } -void sub_807D540(u8 a) +void sub_807D540(u8 paletteIndex) { if (gWeatherPtr->unknown_6FA < 6) { - gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = a; + gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = paletteIndex; gWeatherPtr->unknown_6FA++; } } -bool8 sub_807D574(u8 a) +bool8 sub_807D574(u8 paletteIndex) { u16 i; for (i = 0; i < gWeatherPtr->unknown_6FA; i++) { - if (gWeatherPtr->unknown_6F4[i] == a) + if (gWeatherPtr->unknown_6F4[i] == paletteIndex) return TRUE; } + return FALSE; } -void sub_807D5BC(s8 a) +void sub_807D5BC(s8 gammaIndex) { if (gWeatherPtr->unknown_6C6 == 3) { - BlendSomething_807CEBC(0, 32, a); - gWeatherPtr->gammaIndex = a; + BlendSomething_807CEBC(0, 32, gammaIndex); + gWeatherPtr->gammaIndex = gammaIndex; } } -void sub_807D5F0(u8 a, u8 b, u8 c) +void sub_807D5F0(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) { if (gWeatherPtr->unknown_6C6 == 3) { gWeatherPtr->unknown_6C6 = 0; - gWeatherPtr->gammaIndex = a; - gWeatherPtr->gammaTargetIndex = b; + gWeatherPtr->gammaIndex = gammaIndex; + gWeatherPtr->gammaTargetIndex = gammaTargetIndex; gWeatherPtr->gammaStepFrameCounter = 0; - gWeatherPtr->gammaStepDelay = c; - sub_807D5BC(a); + gWeatherPtr->gammaStepDelay = gammaStepDelay; + sub_807D5BC(gammaIndex); } } @@ -837,9 +875,9 @@ bool8 sub_807D770(void) return (gWeatherPtr->unknown_6C6 != 1); } -void sub_807D78C(u8 a) +void sub_807D78C(u8 spritePaletteIndex) { - u16 r4 = 16 + a; + u16 paletteIndex = 16 + spritePaletteIndex; u16 i; switch (gWeatherPtr->unknown_6C6) @@ -848,34 +886,34 @@ void sub_807D78C(u8 a) if (gWeatherPtr->unknown_6CA != 0) { if (gWeatherPtr->currWeather == WEATHER_FOG_1) - sub_807D540(r4); - r4 *= 16; + sub_807D540(paletteIndex); + paletteIndex *= 16; for (i = 0; i < 16; i++) - gPlttBufferFaded[r4 + i] = gWeatherPtr->fadeDestColor; + gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor; } break; case 2: - r4 *= 16; - CpuFastCopy(gPlttBufferFaded + r4, gPlttBufferUnfaded + r4, 32); - BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor); + paletteIndex *= 16; + CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32); + BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); break; default: if (gWeatherPtr->currWeather != WEATHER_FOG_1) { - BlendSomething_807CEBC(r4, 1, gWeatherPtr->gammaIndex); + BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); } else { - r4 *= 16; - BlendPalette(r4, 16, 12, 0x73FC); + paletteIndex *= 16; + BlendPalette(paletteIndex, 16, 12, 0x73FC); } break; } } -void sub_807D874(u8 a) +void sub_807D874(u8 paletteIndex) { - BlendSomething_807CEBC(a, 1, gWeatherPtr->gammaIndex); + BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); } u8 unref_sub_807D894(void) @@ -892,54 +930,54 @@ void sub_807D8C0(const u16 *palette) sub_807D78C(gWeatherPtr->unknown_6D4); } -void sub_807D8F0(u8 *a, u8 *b) +static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *b) { - u8 r4 = *a; + u8 gammaIndex = *gammaIndexPtr; u16 i; - if (r4 < 7) + if (gammaIndex < 7) { - r4--; - LZ77UnCompWram(sCompressedDroughtPalettes[r4], eWeatherPaletteData.data[r4]); - if (r4 == 0) + gammaIndex--; + LZ77UnCompWram(sCompressedDroughtPalettes[gammaIndex], eDroughtPaletteData.gammaShiftColors[gammaIndex]); + if (gammaIndex == 0) { - eWeatherPaletteData.data[r4][0] = 0x421; + eDroughtPaletteData.gammaShiftColors[gammaIndex][0] = RGB(1, 1, 1); for (i = 1; i < 0x1000; i++) - eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4][i - 1]; + eDroughtPaletteData.gammaShiftColors[gammaIndex][i] += eDroughtPaletteData.gammaShiftColors[gammaIndex][i - 1]; } else { for (i = 0; i < 0x1000; i++) - eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4 - 1][i]; + eDroughtPaletteData.gammaShiftColors[gammaIndex][i] += eDroughtPaletteData.gammaShiftColors[gammaIndex - 1][i]; } - if (++(*a) == 7) + if (++(*gammaIndexPtr) == 7) { - *a = 32; + *gammaIndexPtr = 32; *b = 32; } } } -void sub_807D9A8(void) +void ResetDroughtWeatherPaletteLoading(void) { - gWeatherPtr->unknown_74D = 1; - gWeatherPtr->unknown_74E = 1; + gWeatherPtr->loadDroughtPalsIndex = 1; + gWeatherPtr->loadDroughtPalsOffset = 1; } -bool8 sub_807D9C8(void) +bool8 LoadDroughtWeatherPalettes(void) { - if (gWeatherPtr->unknown_74D < 32) + if (gWeatherPtr->loadDroughtPalsIndex < 32) { - sub_807D8F0(&gWeatherPtr->unknown_74D, &gWeatherPtr->unknown_74E); - if (gWeatherPtr->unknown_74D < 32) + LoadDroughtWeatherPalette(&gWeatherPtr->loadDroughtPalsIndex, &gWeatherPtr->loadDroughtPalsOffset); + if (gWeatherPtr->loadDroughtPalsIndex < 32) return TRUE; } return FALSE; } -void sub_807DA04(s8 a) +void sub_807DA04(s8 gammaIndex) { - sub_807D5BC(-a - 1); + sub_807D5BC(-gammaIndex - 1); } void sub_807DA14(void) @@ -1001,8 +1039,8 @@ void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay) gWeatherPtr->targetBlendEVA = eva; gWeatherPtr->targetBlendEVB = evb; gWeatherPtr->blendDelay = delay; - gWeatherPtr->unknown_739 = 0; - gWeatherPtr->unknown_738 = 0; + gWeatherPtr->blendFrameCounter = 0; + gWeatherPtr->blendUpdateCounter = 0; } bool8 Weather_UpdateBlend(void) @@ -1011,13 +1049,13 @@ bool8 Weather_UpdateBlend(void) && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB) return TRUE; - if (++gWeatherPtr->unknown_739 > gWeatherPtr->blendDelay) + if (++gWeatherPtr->blendFrameCounter > gWeatherPtr->blendDelay) { - gWeatherPtr->unknown_739 = 0; - gWeatherPtr->unknown_738++; + gWeatherPtr->blendFrameCounter = 0; + gWeatherPtr->blendUpdateCounter++; // Update currBlendEVA and currBlendEVB on alternate frames - if (gWeatherPtr->unknown_738 & 1) + if (gWeatherPtr->blendUpdateCounter & 1) { if (gWeatherPtr->currBlendEVA < gWeatherPtr->targetBlendEVA) gWeatherPtr->currBlendEVA++; @@ -1079,7 +1117,7 @@ void unref_sub_807DCB4(u8 a) } } -u8 weather_get_current(void) +u8 GetCurrentWeather(void) { return gWeatherPtr->currWeather; } @@ -1141,14 +1179,14 @@ void unref_sub_807DE24(void) gWeatherPtr->unknown_6C6 = 3; } -void sub_807DE38(u8 a) +void PreservePaletteInWeather(u8 preservedPalIndex) { - CpuCopy16(gUnknown_083970C8, gUnknown_0202FF38, 32); - gUnknown_0202FF38[a] = 0; - gUnknown_030006DC = gUnknown_0202FF38; + CpuCopy16(sBasePaletteGammaTypes, gFieldEffectPaletteGammaTypes, 32); + gFieldEffectPaletteGammaTypes[preservedPalIndex] = GAMMA_NONE; + sPaletteGammaTypes = gFieldEffectPaletteGammaTypes; } -void sub_807DE68(void) +void ResetPreservedPalettesInWeather(void) { - gUnknown_030006DC = gUnknown_083970C8; + sPaletteGammaTypes = sBasePaletteGammaTypes; } diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 4ffa171e8..0fee26b89 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -74,10 +74,8 @@ static const struct SpriteTemplate sCloudSpriteTemplate = .callback = sub_807E0F4, }; -extern void sub_807D5BC(s8 a); +extern void sub_807D5BC(s8 gammaIndex); extern void sub_807D8C0(const u16 *palette); -extern void sub_807D9A8(void); -extern bool8 sub_807D9C8(void); extern void sub_807DA14(void); extern void sub_807DA4C(void); extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); @@ -258,11 +256,11 @@ void Drought_Main(void) gWeatherPtr->initStep++; break; case 1: - sub_807D9A8(); + ResetDroughtWeatherPaletteLoading(); gWeatherPtr->initStep++; break; case 2: - if (sub_807D9C8() == FALSE) + if (LoadDroughtWeatherPalettes() == FALSE) gWeatherPtr->initStep++; break; case 3: @@ -2322,7 +2320,7 @@ void SetSav1WeatherFromCurrMapHeader(void) void SetWeather(u32 weather) { SetSav1Weather(weather); - DoWeatherEffect(GetSav1Weather()); + ChangeWeather(GetSav1Weather()); } void SetWeather_Unused(u32 weather) @@ -2333,7 +2331,7 @@ void SetWeather_Unused(u32 weather) void DoCurrentWeather(void) { - DoWeatherEffect(GetSav1Weather()); + ChangeWeather(GetSav1Weather()); } void sub_8080750(void) diff --git a/src/field/overworld.c b/src/field/overworld.c index a6d34e103..fc313693a 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -590,7 +590,7 @@ bool8 sub_80538D0(u16 x, u16 y) void sub_80538F0(u8 mapGroup, u8 mapNum) { - s32 i; + s32 paletteIndex; Overworld_SetWarpDestination(mapGroup, mapNum, -1, -1, -1); sub_8053F0C(); @@ -611,8 +611,8 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) sub_8056D38(gMapHeader.mapData); apply_map_tileset2_palette(gMapHeader.mapData); - for (i = 6; i < 12; i++) - sub_807D874(i); + for (paletteIndex = 6; paletteIndex < 12; paletteIndex++) + sub_807D874(paletteIndex); sub_8072ED0(); UpdateLocationHistoryForRoamer(); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d8e099130..8b4a1bb28 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -357,7 +357,7 @@ static void sub_8123878(u8 taskId) case 0: if (sCableCarPtr->unk_0006 == sCableCarPtr->unk_0004) { - DoWeatherEffect(sCableCarPtr->unk_0002); + ChangeWeather(sCableCarPtr->unk_0002); sCableCarPtr->unk_0001 = 1; } break; -- cgit v1.2.3 From 7383117626ebb2b3d993e5ad8855da5752c9cce8 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sat, 20 Jan 2018 14:36:32 -0600 Subject: turns out graphics are the same. I forgot to run 'make clean' :( --- src/data/menu_cursor_de.h | 19 ------------------- 1 file changed, 19 deletions(-) (limited to 'src') diff --git a/src/data/menu_cursor_de.h b/src/data/menu_cursor_de.h index 7be9e96aa..cd56f51d9 100644 --- a/src/data/menu_cursor_de.h +++ b/src/data/menu_cursor_de.h @@ -1,24 +1,6 @@ #ifndef GUARD_DATA_MENU_CURSOR_H #define GUARD_DATA_MENU_CURSOR_H -#if DEBUG -const u8 OutlineCursorTiles_00[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_00.4bpp"); -const u8 OutlineCursorTiles_01[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_01.4bpp"); -const u8 OutlineCursorTiles_02[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_02.4bpp"); -const u8 OutlineCursorTiles_03[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_03.4bpp"); -const u8 OutlineCursorTiles_04[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_04.4bpp"); -const u8 OutlineCursorTiles_05[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_05.4bpp"); -const u8 OutlineCursorTiles_06[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_06.4bpp"); -const u8 OutlineCursorTiles_07[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_07.4bpp"); -const u8 OutlineCursorTiles_08[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_08.4bpp"); -const u8 OutlineCursorTiles_09[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_09.4bpp"); -const u8 OutlineCursorTiles_10[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_10.4bpp"); -const u8 OutlineCursorTiles_11[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_11.4bpp"); -const u8 OutlineCursorTiles_12[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_12.4bpp"); -const u8 OutlineCursorTiles_13[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_13.4bpp"); -const u8 OutlineCursorTiles_14[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_14.4bpp"); -const u8 OutlineCursorTiles_15[] = INCBIN_U8("graphics/interface/outline_cursor_debug/outline_cursor_15.4bpp"); -#else const u8 OutlineCursorTiles_00[] = INCBIN_U8("graphics/interface/outline_cursor_00.4bpp"); const u8 OutlineCursorTiles_01[] = INCBIN_U8("graphics/interface/outline_cursor_01.4bpp"); const u8 OutlineCursorTiles_02[] = INCBIN_U8("graphics/interface/outline_cursor_02.4bpp"); @@ -35,7 +17,6 @@ const u8 OutlineCursorTiles_12[] = INCBIN_U8("graphics/interface/outline_cursor_ const u8 OutlineCursorTiles_13[] = INCBIN_U8("graphics/interface/outline_cursor_13.4bpp"); const u8 OutlineCursorTiles_14[] = INCBIN_U8("graphics/interface/outline_cursor_14.4bpp"); const u8 OutlineCursorTiles_15[] = INCBIN_U8("graphics/interface/outline_cursor_15.4bpp"); -#endif const struct OamData gOamData_842F11C = { .objMode = ST_OAM_OBJ_NORMAL, -- cgit v1.2.3 From 003ed9293b2c51f0481ed31f0e0459cbecbf757e Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 20 Jan 2018 14:17:03 -0800 Subject: More documentation of field_weather --- src/battle/battle_transition.c | 4 +- src/engine/cable_club.c | 4 +- src/engine/time_events.c | 2 +- src/field/choose_party.c | 2 +- src/field/decoration.c | 20 +-- src/field/field_effect.c | 12 +- src/field/field_effect_helpers.c | 4 +- src/field/field_fadetransition.c | 14 +-- src/field/field_weather.c | 259 +++++++++++++++++++++----------------- src/field/field_weather_effects.c | 11 +- src/field/item_menu.c | 4 +- src/field/item_use.c | 2 +- src/field/overworld.c | 2 +- src/field/player_pc.c | 12 +- src/field/scrcmd.c | 4 +- src/field/secret_base.c | 8 +- src/field/shop.c | 6 +- src/field/start_menu.c | 2 +- src/pokemon/pokemon_menu.c | 2 +- src/scene/cable_car.c | 7 +- 20 files changed, 202 insertions(+), 179 deletions(-) (limited to 'src') diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c index f7cdc0694..a94974b27 100644 --- a/src/battle/battle_transition.c +++ b/src/battle/battle_transition.c @@ -6,6 +6,7 @@ #include "palette.h" #include "trig.h" #include "field_effect.h" +#include "field_weather.h" #include "random.h" #include "sprite.h" #include "sound.h" @@ -15,7 +16,6 @@ #include "ewram.h" #include "scanline_effect.h" -void sub_807DE10(void); void ScanlineEffect_Clear(void); extern const struct OamData gFieldOamData_32x32; @@ -567,7 +567,7 @@ static void Task_BattleTransitionMain(u8 taskID) static bool8 Transition_Phase1(struct Task* task) { - sub_807DE10(); + SetWeatherScreenFadeOut(); CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); if (sPhase1_Tasks[task->tTransitionID] != NULL) { diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 44d832e2b..e7c504c7b 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -676,7 +676,7 @@ static void sub_808382C(u8 taskId) switch (task->data[0]) { case 0: - fade_screen(1, 0); + FadeScreen(1, 0); gLinkType = 0x2211; ClearLinkCallback_2(); task->data[0]++; @@ -812,7 +812,7 @@ static void sub_8083AAC(u8 taskId) { case 0: ScriptContext2_Enable(); - fade_screen(1, 0); + FadeScreen(1, 0); ClearLinkCallback_2(); task->data[0]++; break; diff --git a/src/engine/time_events.c b/src/engine/time_events.c index 3e3054aa3..4bd732788 100644 --- a/src/engine/time_events.c +++ b/src/engine/time_events.c @@ -93,7 +93,7 @@ void UpdateShoalTideFlag(void) static void Task_WaitWeather(u8 taskId) { - if (sub_807DDFC()) + if (IsWeatherChangeComplete()) { EnableBothScriptContexts(); DestroyTask(taskId); diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 3ba04e489..18d26f007 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -930,7 +930,7 @@ void sub_81231AC(void) static void sub_81231C4(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { DestroyTask(taskId); ScriptContext2_Disable(); diff --git a/src/field/decoration.c b/src/field/decoration.c index 1cc3bbe06..0e7fa5f41 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -2239,7 +2239,7 @@ void sub_80FF5BC(u8 taskId) { if (sub_80FF58C() == TRUE) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_80FF6AC; } else @@ -2289,7 +2289,7 @@ void sub_80FF6AC(u8 taskId) gTasks[taskId].data[2] = 2; break; case 2: - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].data[12] = 0; sub_810065C(taskId); @@ -3193,7 +3193,7 @@ void sub_810026C(u8 taskId) void sub_810028C(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = c1_overworld_prev_quest; } @@ -3222,7 +3222,7 @@ void c1_overworld_prev_quest(u8 taskId) void sub_8100334(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].func = sub_80FE948; } @@ -3629,7 +3629,7 @@ void sub_8100A0C(u8 taskId) { if (sub_8100D38(taskId) == 1) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8100E70; } else @@ -3735,7 +3735,7 @@ void sub_8100C88(u8 taskId) gTasks[taskId].data[2] = 3; break; case 3: - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].data[13] = -1; DisplayItemMessageOnField(taskId, gSecretBaseText_DecorReturned, sub_81010F0, 0); @@ -3800,7 +3800,7 @@ void sub_8100E70(u8 taskId) data[2] = 2; break; case 2: - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { data[12] = 1; sub_8100EEC(taskId); @@ -4138,7 +4138,7 @@ void sub_8101518(u8 taskId) void sub_810153C(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8100C88; } @@ -4157,7 +4157,7 @@ void sub_8101590(u8 taskId) void sub_81015B0(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_81015E0; } @@ -4184,7 +4184,7 @@ void sub_81015E0(u8 taskId) void sub_8101648(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gTasks[taskId].func = Task_DecorationPCProcessMenuInput; } diff --git a/src/field/field_effect.c b/src/field/field_effect.c index a3134552d..ad570cf7f 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -407,7 +407,7 @@ void FieldEffectScript_LoadFadedPalette(u8 **script) { struct SpritePalette *palette = (struct SpritePalette *)FieldEffectScript_ReadWord(script); LoadSpritePalette(palette); - sub_807D78C(IndexOfSpritePaletteTag(palette->tag)); + UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(palette->tag)); (*script) += 4; } @@ -1091,7 +1091,7 @@ void task00_8084310(u8 taskId) task = &gTasks[taskId]; if (!task->data[0]) { - if (!sub_807D770()) + if (!IsWeatherNotFadingIn()) { return; } @@ -1191,7 +1191,7 @@ bool8 sub_80867AC(struct Task *task) // gUnknown_0839F2CC[0] bool8 sub_8086854(struct Task *task) // gUnknown_0839F2CC[1] { - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { task->data[0]++; } @@ -1813,7 +1813,7 @@ bool8 sub_80874CC(struct Task *task, struct MapObject *mapObject, struct Sprite bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite *sprite) { - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { gFieldEffectArguments[0] = mapObject->coords2.x; gFieldEffectArguments[1] = mapObject->coords2.y; @@ -2046,7 +2046,7 @@ void sub_8087A74(u8 taskId) void sub_8087AA4(struct Task *task) { - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { task->data[0]++; task->data[15] = player_get_direction_lower_nybble(); @@ -2199,7 +2199,7 @@ void sub_8087E4C(struct Task *task) { struct Sprite *sprite; s16 centerToCornerVecY; - if (sub_807D770()) + if (IsWeatherNotFadingIn()) { sprite = &gSprites[gPlayerAvatar.spriteId]; centerToCornerVecY = -(sprite->centerToCornerVecY << 1); diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c index 165829a55..93fc62bd5 100644 --- a/src/field/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c @@ -95,7 +95,7 @@ static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum) { pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum); } - sub_807D78C(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum); } } @@ -107,7 +107,7 @@ static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum) if (graphicsInfo->paletteTag2 != 0x11ff) { pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum); - sub_807D78C(paletteNum); + UpdateSpritePaletteWithWeather(paletteNum); } } diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c index 5014e97e3..ad1cd4a59 100644 --- a/src/field/field_fadetransition.c +++ b/src/field/field_fadetransition.c @@ -44,18 +44,18 @@ void pal_fill_for_map_transition(void) switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation())) { case 0: - fade_screen(0, 0); + FadeScreen(0, 0); palette_bg_fill_black(); break; case 1: - fade_screen(2, 0); + FadeScreen(2, 0); palette_bg_fill_white(); } } void pal_fill_black(void) { - fade_screen(0, 0); + FadeScreen(0, 0); palette_bg_fill_black(); } @@ -65,10 +65,10 @@ void fade_8080918(void) switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType)) { case 0: - fade_screen(1, 0); + FadeScreen(1, 0); break; case 1: - fade_screen(3, 0); + FadeScreen(3, 0); } } @@ -366,7 +366,7 @@ bool32 sub_8080E64(void) bool32 sub_8080E70(void) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) return TRUE; else return FALSE; @@ -483,7 +483,7 @@ void sub_8081050(u8 taskId) { case 0: ClearLinkCallback_2(); - fade_screen(1, 0); + FadeScreen(1, 0); sub_8053FF8(); PlaySE(SE_KAIDAN); data[0]++; diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 2a5c311ab..7beb1b440 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -71,10 +71,18 @@ static const u8 *const sCompressedDroughtPalettes[] = // this file produces the same result as accessing gWeather directly. struct Weather *const gWeatherPtr = &gWeather; -static bool8 sub_807D574(u8); -static void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static bool8 LightenSpritePaletteInFog(u8); static void BuildGammaShiftTables(void); -static void UpdateGammaShift(void); +static void UpdateWeatherGammaShift(void); +static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex); +static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor); +static void ApplyFogBlend(u8 blendCoeff, u16 blendColor); +static bool8 FadeInScreen_RainShowShade(void); +static bool8 FadeInScreen_Drought(void); +static bool8 FadeInScreen_Fog1(void); +static void FadeInScreenWithWeather(void); +static void DoNothing(void); void None_Init(void); void None_Main(void); bool8 None_Finish(void); @@ -154,12 +162,12 @@ static const struct WeatherCallbacks sWeatherFuncs[] = {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish}, }; -void (*const gUnknown_083970B8[])(void) = +void (*const gWeatherPalStateFuncs[])(void) = { - UpdateGammaShift, - sub_807CCAC, - nullsub_39, - nullsub_39, + UpdateWeatherGammaShift, // WEATHER_PAL_STATE_CHANGING_WEATHER + FadeInScreenWithWeather, // WEATHER_PAL_STATE_SCREEN_FADING_IN + DoNothing, // WEATHER_PAL_STATE_SCREEN_FADING_OUT + DoNothing, // WEATHER_PAL_STATE_IDLE }; // This table specifies which of the gamma shift tables should be @@ -214,7 +222,7 @@ void StartWeather(void) CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); BuildGammaShiftTables(); gWeatherPtr->altGammaSpritePalIndex = index; - gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); + gWeatherPtr->weatherPicSpritePalIndex = AllocSpritePalette(0x1201); gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->unknown_6D8 = 0; gWeatherPtr->cloudSpritesCreated = 0; @@ -225,13 +233,13 @@ void StartWeather(void) gWeatherPtr->sandstormSprites1Created = 0; gWeatherPtr->sandstormSprites2Created = 0; gWeatherPtr->unknown_72E = 0; - gWeatherPtr->unknown_6FA = 0; + gWeatherPtr->lightenedFogSpritePalsCount = 0; Weather_SetBlendCoeffs(16, 0); gWeatherPtr->currWeather = 0; - gWeatherPtr->unknown_6C6 = 3; - gWeatherPtr->unknown_6C8 = 0; - gWeatherPtr->unknown_6D3 = 1; - gWeatherPtr->unknown_6C9 = CreateTask(Task_WeatherInit, 80); + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; + gWeatherPtr->readyForInit = FALSE; + gWeatherPtr->weatherChangeComplete = TRUE; + gWeatherPtr->taskId = CreateTask(Task_WeatherInit, 80); } } @@ -247,7 +255,7 @@ void ChangeWeather(u8 weather) sWeatherFuncs[weather].initVars(); } - gWeatherPtr->unknown_6D3 = 0; + gWeatherPtr->weatherChangeComplete = FALSE; gWeatherPtr->nextWeather = weather; gWeatherPtr->finishStep = 0; } @@ -264,12 +272,14 @@ void sub_807C9B4(u8 weather) PlayRainSoundEffect(); gWeatherPtr->currWeather = weather; gWeatherPtr->nextWeather = weather; - gWeatherPtr->unknown_6C8 = 1; + gWeatherPtr->readyForInit = TRUE; } void Task_WeatherInit(u8 taskId) { - if (gWeatherPtr->unknown_6C8) + // Waits until it's ok to initialize weather. + // When the screen fades in, this is set to TRUE. + if (gWeatherPtr->readyForInit) { sWeatherFuncs[gWeatherPtr->currWeather].initAll(); gTasks[taskId].func = Task_WeatherMain; @@ -282,18 +292,20 @@ void Task_WeatherMain(u8 taskId) { if (!sWeatherFuncs[gWeatherPtr->currWeather].finish()) { + // Finished cleaning up previous weather. Now transition to next weather. sWeatherFuncs[gWeatherPtr->nextWeather].initVars(); gWeatherPtr->gammaStepFrameCounter = 0; - gWeatherPtr->unknown_6C6 = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER; gWeatherPtr->currWeather = gWeatherPtr->nextWeather; - gWeatherPtr->unknown_6D3 = 1; + gWeatherPtr->weatherChangeComplete = TRUE; } } else { sWeatherFuncs[gWeatherPtr->currWeather].main(); } - gUnknown_083970B8[gWeatherPtr->unknown_6C6](); + + gWeatherPalStateFuncs[gWeatherPtr->palProcessingState](); } void None_Init(void) @@ -383,11 +395,11 @@ static void BuildGammaShiftTables(void) // When the weather is changing, it gradually updates the palettes // towards the desired gamma shift. -static void UpdateGammaShift(void) +static void UpdateWeatherGammaShift(void) { if (gWeatherPtr->gammaIndex == gWeatherPtr->gammaTargetIndex) { - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } else { @@ -398,15 +410,17 @@ static void UpdateGammaShift(void) gWeatherPtr->gammaIndex++; else gWeatherPtr->gammaIndex--; - BlendSomething_807CEBC(0, 32, gWeatherPtr->gammaIndex); + + ApplyGammaShift(0, 32, gWeatherPtr->gammaIndex); } } } -void sub_807CCAC(void) +static void FadeInScreenWithWeather(void) { if (++gWeatherPtr->unknown_6CB > 1) gWeatherPtr->unknown_6CA = 0; + switch (gWeatherPtr->currWeather) { case WEATHER_RAIN_LIGHT: @@ -414,24 +428,24 @@ void sub_807CCAC(void) case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: case WEATHER_SHADE: - if (RainSnowShadeBlend_807CDC4() == 0) + if (FadeInScreen_RainShowShade() == FALSE) { gWeatherPtr->gammaIndex = 3; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; case WEATHER_DROUGHT: - if (DroughtBlend_807CE24() == 0) + if (FadeInScreen_Drought() == FALSE) { gWeatherPtr->gammaIndex = -6; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; case WEATHER_FOG_1: - if (Fog1Blend_807CE7C() == 0) + if (FadeInScreen_Fog1() == FALSE) { gWeatherPtr->gammaIndex = 0; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; case WEATHER_ASH: @@ -442,54 +456,58 @@ void sub_807CCAC(void) if (!gPaletteFade.active) { gWeatherPtr->gammaIndex = gWeatherPtr->gammaTargetIndex; - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } break; } } -u8 RainSnowShadeBlend_807CDC4(void) +bool8 FadeInScreen_RainShowShade(void) { - if (gWeatherPtr->unknown_6C7 == 0x10) - return 0; - if (++gWeatherPtr->unknown_6C7 >= 0x10) + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + if (++gWeatherPtr->fadeScreenCounter >= 16) { - BlendSomething_807CEBC(0, 32, 3); - gWeatherPtr->unknown_6C7 = 0x10; - return 0; + ApplyGammaShift(0, 32, 3); + gWeatherPtr->fadeScreenCounter = 16; + return FALSE; } - BlendSomething_807D1BC(0, 32, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); - return 1; + + ApplyGammaShiftWithBlend(0, 32, 3, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; } -u8 DroughtBlend_807CE24(void) +bool8 FadeInScreen_Drought(void) { - if (gWeatherPtr->unknown_6C7 == 0x10) - return 0; - if (++gWeatherPtr->unknown_6C7 >= 0x10) + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + if (++gWeatherPtr->fadeScreenCounter >= 16) { - BlendSomething_807CEBC(0, 32, -6); - gWeatherPtr->unknown_6C7 = 0x10; - return 0; + ApplyGammaShift(0, 32, -6); + gWeatherPtr->fadeScreenCounter = 16; + return FALSE; } - DroughtBlendSomething_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); - return 1; -} -u8 Fog1Blend_807CE7C(void) -{ - if (gWeatherPtr->unknown_6C7 == 0x10) - return 0; - ++gWeatherPtr->unknown_6C7; - BlendSomething_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->fadeDestColor); - return 1; + ApplyDroughtGammaShiftWithBlend(-6, 16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; } -void nullsub_39(void) +bool8 FadeInScreen_Fog1(void) { + if (gWeatherPtr->fadeScreenCounter == 16) + return FALSE; + + gWeatherPtr->fadeScreenCounter++; + ApplyFogBlend(16 - gWeatherPtr->fadeScreenCounter, gWeatherPtr->fadeDestColor); + return TRUE; } -void BlendSomething_807CEBC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) +static void DoNothing(void) +{ } + +static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) { u16 curPalIndex; u16 palOffset; @@ -607,7 +625,7 @@ void BlendSomething_807CEBC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex) } } -void BlendSomething_807D1BC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) +static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 blendCoeff, u16 blendColor) { u16 palOffset; u16 curPalIndex; @@ -658,7 +676,7 @@ void BlendSomething_807D1BC(u8 startPalIndex, u8 numPalettes, s8 gammaIndex, u8 } } -void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor) +void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 blendColor) { struct RGBColor color; u8 rBlend; @@ -713,7 +731,7 @@ void DroughtBlendSomething_807D304(s8 gammaIndex, u8 blendCoeff, u16 blendColor) } } -void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) +void ApplyFogBlend(u8 blendCoeff, u16 blendColor) { struct RGBColor color; u8 rBlend; @@ -729,7 +747,7 @@ void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) for (curPalIndex = 16; curPalIndex < 32; curPalIndex++) { - if (sub_807D574(curPalIndex)) + if (LightenSpritePaletteInFog(curPalIndex)) { u16 palEnd = (curPalIndex + 1) * 16; u16 palOffset = curPalIndex * 16; @@ -760,22 +778,22 @@ void BlendSomething_807D424(u8 blendCoeff, u16 blendColor) } } -void sub_807D540(u8 paletteIndex) +static void MarkFogSpritePalToLighten(u8 paletteIndex) { - if (gWeatherPtr->unknown_6FA < 6) + if (gWeatherPtr->lightenedFogSpritePalsCount < 6) { - gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = paletteIndex; - gWeatherPtr->unknown_6FA++; + gWeatherPtr->lightenedFogSpritePals[gWeatherPtr->lightenedFogSpritePalsCount] = paletteIndex; + gWeatherPtr->lightenedFogSpritePalsCount++; } } -bool8 sub_807D574(u8 paletteIndex) +static bool8 LightenSpritePaletteInFog(u8 paletteIndex) { u16 i; - for (i = 0; i < gWeatherPtr->unknown_6FA; i++) + for (i = 0; i < gWeatherPtr->lightenedFogSpritePalsCount; i++) { - if (gWeatherPtr->unknown_6F4[i] == paletteIndex) + if (gWeatherPtr->lightenedFogSpritePals[i] == paletteIndex) return TRUE; } @@ -784,18 +802,18 @@ bool8 sub_807D574(u8 paletteIndex) void sub_807D5BC(s8 gammaIndex) { - if (gWeatherPtr->unknown_6C6 == 3) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE) { - BlendSomething_807CEBC(0, 32, gammaIndex); + ApplyGammaShift(0, 32, gammaIndex); gWeatherPtr->gammaIndex = gammaIndex; } } void sub_807D5F0(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) { - if (gWeatherPtr->unknown_6C6 == 3) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_IDLE) { - gWeatherPtr->unknown_6C6 = 0; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_CHANGING_WEATHER; gWeatherPtr->gammaIndex = gammaIndex; gWeatherPtr->gammaTargetIndex = gammaTargetIndex; gWeatherPtr->gammaStepFrameCounter = 0; @@ -804,29 +822,29 @@ void sub_807D5F0(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay) } } -void fade_screen(u8 mode, u8 delay) +void FadeScreen(u8 mode, u8 delay) { u32 fadeColor; - bool8 fadeTo; + bool8 fadeOut; bool8 useWeatherPal; switch (mode) { case FADE_FROM_BLACK: fadeColor = 0; - fadeTo = FALSE; + fadeOut = FALSE; break; case FADE_FROM_WHITE: fadeColor = 0xFFFF; - fadeTo = FALSE; + fadeOut = FALSE; break; case FADE_TO_BLACK: fadeColor = 0; - fadeTo = TRUE; + fadeOut = TRUE; break; case FADE_TO_WHITE: fadeColor = 0xFFFF; - fadeTo = TRUE; + fadeOut = TRUE; break; default: return; @@ -848,59 +866,63 @@ void fade_screen(u8 mode, u8 delay) break; } - if (fadeTo) + if (fadeOut) { if (useWeatherPal) CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); + BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor); - gWeatherPtr->unknown_6C6 = 2; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; } else { gWeatherPtr->fadeDestColor = fadeColor; if (useWeatherPal) - gWeatherPtr->unknown_6C7 = 0; + gWeatherPtr->fadeScreenCounter = 0; else BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor); - gWeatherPtr->unknown_6C6 = 1; + + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_IN; gWeatherPtr->unknown_6CA = 1; gWeatherPtr->unknown_6CB = 0; Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB); - gWeatherPtr->unknown_6C8 = 1; + gWeatherPtr->readyForInit = TRUE; } } -bool8 sub_807D770(void) +bool8 IsWeatherNotFadingIn(void) { - return (gWeatherPtr->unknown_6C6 != 1); + return (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_IN); } -void sub_807D78C(u8 spritePaletteIndex) +void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex) { u16 paletteIndex = 16 + spritePaletteIndex; u16 i; - switch (gWeatherPtr->unknown_6C6) + switch (gWeatherPtr->palProcessingState) { - case 1: + case WEATHER_PAL_STATE_SCREEN_FADING_IN: if (gWeatherPtr->unknown_6CA != 0) { if (gWeatherPtr->currWeather == WEATHER_FOG_1) - sub_807D540(paletteIndex); + MarkFogSpritePalToLighten(paletteIndex); paletteIndex *= 16; for (i = 0; i < 16; i++) gPlttBufferFaded[paletteIndex + i] = gWeatherPtr->fadeDestColor; } break; - case 2: + case WEATHER_PAL_STATE_SCREEN_FADING_OUT: paletteIndex *= 16; CpuFastCopy(gPlttBufferFaded + paletteIndex, gPlttBufferUnfaded + paletteIndex, 32); BlendPalette(paletteIndex, 16, gPaletteFade.y, gPaletteFade.blendColor); break; + // WEATHER_PAL_STATE_CHANGING_WEATHER + // WEATHER_PAL_STATE_CHANGING_IDLE default: if (gWeatherPtr->currWeather != WEATHER_FOG_1) { - BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); } else { @@ -911,23 +933,23 @@ void sub_807D78C(u8 spritePaletteIndex) } } -void sub_807D874(u8 paletteIndex) +void ApplyWeatherGammaShiftToPal(u8 paletteIndex) { - BlendSomething_807CEBC(paletteIndex, 1, gWeatherPtr->gammaIndex); + ApplyGammaShift(paletteIndex, 1, gWeatherPtr->gammaIndex); } u8 unref_sub_807D894(void) { - if (gWeatherPtr->unknown_6C6 == 1) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_SCREEN_FADING_IN) return gWeatherPtr->unknown_6CA; else return 0; } -void sub_807D8C0(const u16 *palette) +void LoadCustomWeatherSpritePalette(const u16 *palette) { - LoadPalette(palette, 0x100 + gWeatherPtr->unknown_6D4 * 16, 32); - sub_807D78C(gWeatherPtr->unknown_6D4); + LoadPalette(palette, 0x100 + gWeatherPtr->weatherPicSpritePalIndex * 16, 32); + UpdateSpritePaletteWithWeather(gWeatherPtr->weatherPicSpritePalIndex); } static void LoadDroughtWeatherPalette(u8 *gammaIndexPtr, u8 *b) @@ -1085,34 +1107,34 @@ void unref_sub_807DCB4(u8 a) switch (a) { case 1: - SetWeather(1); + SetWeather(WEATHER_CLOUDS); break; case 2: - SetWeather(2); + SetWeather(WEATHER_SUNNY); break; case 3: - SetWeather(3); + SetWeather(WEATHER_RAIN_LIGHT); break; case 4: - SetWeather(4); + SetWeather(WEATHER_SNOW); break; case 5: - SetWeather(5); + SetWeather(WEATHER_RAIN_MED); break; case 6: - SetWeather(6); + SetWeather(WEATHER_FOG_1); break; case 7: - SetWeather(9); + SetWeather(WEATHER_FOG_2); break; case 8: - SetWeather(7); + SetWeather(WEATHER_ASH); break; case 9: - SetWeather(8); + SetWeather(WEATHER_SANDSTORM); break; case 10: - SetWeather(11); + SetWeather(WEATHER_SHADE); break; } } @@ -1122,11 +1144,11 @@ u8 GetCurrentWeather(void) return gWeatherPtr->currWeather; } -void SetRainStrengthFromSoundEffect(u16 sndEff) +void SetRainStrengthFromSoundEffect(u16 soundEffect) { - if (gWeatherPtr->unknown_6C6 != 2) + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_SCREEN_FADING_OUT) { - switch (sndEff) + switch (soundEffect) { case SE_T_KOAME: gWeatherPtr->rainStrength = 0; @@ -1140,7 +1162,8 @@ void SetRainStrengthFromSoundEffect(u16 sndEff) default: return; } - PlaySE(sndEff); + + PlaySE(soundEffect); } } @@ -1164,19 +1187,19 @@ void PlayRainSoundEffect(void) } } -u8 sub_807DDFC(void) +u8 IsWeatherChangeComplete(void) { - return gWeatherPtr->unknown_6D3; + return gWeatherPtr->weatherChangeComplete; } -void sub_807DE10(void) +void SetWeatherScreenFadeOut(void) { - gWeatherPtr->unknown_6C6 = 2; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_SCREEN_FADING_OUT; } void unref_sub_807DE24(void) { - gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->palProcessingState = WEATHER_PAL_STATE_IDLE; } void PreservePaletteInWeather(u8 preservedPalIndex) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 0fee26b89..eff702f8c 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -75,7 +75,6 @@ static const struct SpriteTemplate sCloudSpriteTemplate = }; extern void sub_807D5BC(s8 gammaIndex); -extern void sub_807D8C0(const u16 *palette); extern void sub_807DA14(void); extern void sub_807DA4C(void); extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); @@ -182,7 +181,7 @@ void CreateCloudSprites(void) if (gWeatherPtr->cloudSpritesCreated == TRUE) return; LoadSpriteSheet(&sCloudSpriteSheet); - sub_807D8C0(gUnknown_08397108); + LoadCustomWeatherSpritePalette(gUnknown_08397108); for (i = 0; i < 3; i++) { u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF); @@ -252,7 +251,7 @@ void Drought_Main(void) switch (gWeatherPtr->initStep) { case 0: - if (gWeatherPtr->unknown_6C6 != 0) + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_CHANGING_WEATHER) gWeatherPtr->initStep++; break; case 1: @@ -1137,7 +1136,7 @@ void Rain_Main(void) gWeatherPtr->initStep++; break; case 3: - if (gWeatherPtr->unknown_6C6 == 0) + if (gWeatherPtr->palProcessingState == WEATHER_PAL_STATE_CHANGING_WEATHER) break; gWeatherPtr->initStep = 6; break; @@ -1211,7 +1210,7 @@ void Rain_Main(void) gWeatherPtr->initStep++; break; case 14: - if (gWeatherPtr->unknown_6C6 != 3) + if (gWeatherPtr->palProcessingState != WEATHER_PAL_STATE_IDLE) break; gWeatherPtr->unknown_6EA = 1; gWeatherPtr->initStep = 4; @@ -2013,7 +2012,7 @@ void CreateSandstormSprites_1(void) if (!gWeatherPtr->sandstormSprites1Created) { LoadSpriteSheet(&sSandstormSpriteSheet); - sub_807D8C0(gUnknown_08397128); + LoadCustomWeatherSpritePalette(gUnknown_08397128); for (i = 0; i < 20; i++) { u8 spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, 0, (i / 5) * 64, 1); diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 6bad9f4d6..959eb09ae 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -47,7 +47,7 @@ extern void sub_808B5B4(); extern u8 sub_80F92F4(); extern void sub_80C9C7C(u8); extern void pal_fill_black(void); -extern bool8 sub_807D770(void); +extern bool8 IsWeatherNotFadingIn(void); extern u8 sub_80F931C(); extern void sub_808A3F8(u8); extern void Shop_FadeReturnToMartMenu(void); @@ -2699,7 +2699,7 @@ void ExecuteItemUseFromBlackPalette(void) static void Task_CallItemUseOnFieldCallback(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) gFieldItemUseCallback(taskId); } diff --git a/src/field/item_use.c b/src/field/item_use.c index cdad3f840..219ef5080 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -100,7 +100,7 @@ void ItemMenu_ConfirmNormalFade(u8 var) void ItemMenu_ConfirmComplexFade(u8 var) { ExecuteSwitchToOverworldFromItemUse(var); - fade_screen(1, 0); + FadeScreen(1, 0); } void SetUpItemUseOnFieldCallback(u8 taskId) diff --git a/src/field/overworld.c b/src/field/overworld.c index fc313693a..07453e4fe 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -612,7 +612,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) apply_map_tileset2_palette(gMapHeader.mapData); for (paletteIndex = 6; paletteIndex < 12; paletteIndex++) - sub_807D874(paletteIndex); + ApplyWeatherGammaShiftToPal(paletteIndex); sub_8072ED0(); UpdateLocationHistoryForRoamer(); diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 3719b7c7a..27427ecaa 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -29,7 +29,7 @@ extern void DestroyVerticalScrollIndicator(u8); extern void PauseVerticalScrollIndicator(u8); extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); -extern u8 sub_807D770(void); +extern u8 IsWeatherNotFadingIn(void); extern void sub_808B020(void); extern void ClearVerticalScrollIndicatorPalettes(void); @@ -357,12 +357,12 @@ static void Task_ItemStorage_Deposit(u8 taskId) static void ItemStorage_Deposit(u8 taskId) { TASK.FUNC = Task_ItemStorage_Deposit; - fade_screen(1, 0); + FadeScreen(1, 0); } static void ItemStorage_HandleReturnToProcessInput(u8 taskId) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) TASK.FUNC = ItemStorageMenuProcessInput; } @@ -1196,7 +1196,7 @@ static void Mailbox_MailOptionsProcessInput(u8 taskId) static void Mailbox_DoMailRead(u8 taskId) { - fade_screen(1, 0); + FadeScreen(1, 0); TASK.FUNC = Mailbox_FadeAndReadMail; } @@ -1211,7 +1211,7 @@ static void Mailbox_FadeAndReadMail(u8 taskId) static void Mailbox_HandleReturnToProcessInput(u8 taskId) // Mailbox_HandleReturnToProcessInput { - if(sub_807D770() == TRUE) // is black fade finished? why not gPaletteFade.active? + if (IsWeatherNotFadingIn() == TRUE) // is black fade finished? why not gPaletteFade.active? TASK.FUNC = Mailbox_ProcessInput; } @@ -1280,7 +1280,7 @@ static void Mailbox_Give(u8 taskId) Mailbox_NoPokemonForMail(taskId); // cannot be reached normally else { - fade_screen(1, 0); + FadeScreen(1, 0); TASK.FUNC = Mailbox_DoGiveMailPokeMenu; } } diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index 36edbe472..bc5cd0b1d 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -626,7 +626,7 @@ bool8 IsPaletteNotActive(void) bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) { - fade_screen(ScriptReadByte(ctx), 0); + FadeScreen(ScriptReadByte(ctx), 0); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } @@ -636,7 +636,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); - fade_screen(duration, delay); + FadeScreen(duration, delay); SetupNativeScript(ctx, IsPaletteNotActive); return TRUE; } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 134aebbc6..2d02de004 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -348,7 +348,7 @@ void sub_80BBA48(u8 taskid) void sub_80BBAF0(void) { CreateTask(sub_80BBA48, 0); - fade_screen(1, 0); + FadeScreen(1, 0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } @@ -362,7 +362,7 @@ bool8 sub_80BBB24(void) void sub_80BBB50(u8 taskid) { FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); - if (sub_807D770() == 1) { + if (IsWeatherNotFadingIn() == 1) { EnableBothScriptContexts(); DestroyTask(taskid); } @@ -397,7 +397,7 @@ void sub_80BBC78(void) { u8 taskid = CreateTask(sub_80BBBEC, 0); gTasks[taskid].data[0] = 0; - fade_screen(1, 0); + FadeScreen(1, 0); } bool8 CurrentMapIsSecretBase(void) @@ -534,7 +534,7 @@ void sub_80BC074(u8 taskid) void sub_80BC0F8(void) { CreateTask(sub_80BC074, 0); - fade_screen(1, 0); + FadeScreen(1, 0); } void sub_80BC114(void) { diff --git a/src/field/shop.c b/src/field/shop.c index a228ff92f..e087628da 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -173,7 +173,7 @@ static void Task_HandleShopMenuBuy(u8 taskId) gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16; gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics; gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_HandleShopMenuSell(u8 taskId) @@ -181,7 +181,7 @@ static void Task_HandleShopMenuSell(u8 taskId) gTasks[taskId].data[8] = (u32)ItemMenu_LoadSellMenu >> 16; gTasks[taskId].data[9] = (u32)ItemMenu_LoadSellMenu; gTasks[taskId].func = Shop_FadeAndRunBuySellCallback; - fade_screen(1, 0); + FadeScreen(1, 0); } static void Task_HandleShopMenuQuit(u8 taskId) @@ -213,7 +213,7 @@ static void ReturnToShopMenuAfterExitingSellMenu(u8 taskId) static void Task_ReturnToMartMenu(u8 taskId) { - if (sub_807D770() == 1) + if (IsWeatherNotFadingIn() == 1) { if (gMartInfo.martType == MART_TYPE_2) DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 89cd404e9..381c19bb7 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -329,7 +329,7 @@ static u8 StartMenu_InputProcessCallback(void) if (gMenuCallback != StartMenu_SaveCallback && gMenuCallback != StartMenu_ExitCallback && gMenuCallback != StartMenu_RetireCallback) - fade_screen(1, 0); + FadeScreen(1, 0); return 0; } if (gMain.newKeys & (START_BUTTON | B_BUTTON)) diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index a41e197f2..c0cae9353 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -786,7 +786,7 @@ void FieldCallback_Teleport(void) static void sub_808ABA8(u8 taskID) { - if (sub_807D770() == TRUE) + if (IsWeatherNotFadingIn() == TRUE) { gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES); gUnknown_03005CE4(); diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index 8b4a1bb28..7faa8d844 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -18,6 +18,7 @@ #include "event_data.h" #include "cable_car_util.h" #include "constants/map_objects.h" +#include "constants/weather.h" // Static type declarations @@ -328,7 +329,7 @@ static void sub_8123740(void) i = 0; sub_8123FBC(0); gSpriteCoordOffsetX = 0; - sub_807C9B4(0); + sub_807C9B4(WEATHER_NONE); for (; i < 20; i++) { gWeatherPtr->sprites.s2.ashSprites[i] = NULL; @@ -769,7 +770,7 @@ static void LoadSprites(void) gSprites[spriteId].data[1] = 0x63; sCableCarPtr->unk_0002 = 7; sCableCarPtr->unk_0004 = 0x15e; - sub_807C9B4(2); + sub_807C9B4(WEATHER_SUNNY); break; case 1: CableCarUtil_CopyWrapped(sCableCarPtr->unk_00fc, eCableCar2->mtChimneyTilemap + 0x24, 0x18, 0x1a, 0x0c, 0x03); @@ -793,7 +794,7 @@ static void LoadSprites(void) gSprites[spriteId].data[1] = 0x41; sCableCarPtr->unk_0002 = 2; sCableCarPtr->unk_0004 = 0x109; - sub_807C9B4(7); + sub_807C9B4(WEATHER_ASH); break; } for (i = 0; i < 9; i++) -- cgit v1.2.3 From 7a4f92553a41fdd14a29ac038b512cb8603d2a0c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 20 Jan 2018 22:06:58 -0600 Subject: use C preprocessor to generate common syms file --- src/field/tv.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/field/tv.c b/src/field/tv.c index efda4b925..8bd36bb9c 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -47,8 +47,6 @@ struct UnkTvStruct s8 var0; }; -extern u8 gUnknown_0300430A[11]; - struct OutbreakPokemon { /*0x00*/ u16 species; -- cgit v1.2.3 From 608e06126acdc8b6d32a0aa71fdc57bc188b8d7b Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sun, 21 Jan 2018 14:27:32 -0600 Subject: fix build of normal ROMs --- src/debug/start_menu_debug.c | 3 +++ src/engine/link.c | 2 +- src/engine/save.c | 4 ++-- src/pokemon/mail.c | 2 ++ src/scene/title_screen.c | 2 ++ 5 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index f8e10baa2..572251fb4 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -1,3 +1,5 @@ +#if DEBUG + __attribute__((naked)) void debug_sub_8076AC8() { @@ -6128,3 +6130,4 @@ void DebugMenu_OpenKiwa() ); } +#endif diff --git a/src/engine/link.c b/src/engine/link.c index a716d5c2b..f800f4aad 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -1404,7 +1404,7 @@ static void CB2_PrintErrorMessage(void) { case 0: Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1); -#ifdef DEBUG +#if DEBUG StringCopy(array, sColorCodes); ConvertIntToHexStringN(array2, sErrorLinkStatus, STR_CONV_MODE_LEADING_ZEROS, 8); diff --git a/src/engine/save.c b/src/engine/save.c index 8217652f9..d11eebaac 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -783,7 +783,7 @@ u8 Save_WriteDataInternal(u8 saveType) return 0; } -#ifdef DEBUG +#if DEBUG extern u32 gUnknown_Debug_03004BD0; #endif @@ -794,7 +794,7 @@ u8 Save_WriteData(u8 saveType) // TrySave Save_WriteDataInternal(saveType); if (!gDamagedSaveSectors -#ifdef DEBUG +#if DEBUG && gUnknown_Debug_03004BD0 == 0 #endif ) diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index db0c96938..3187fef9f 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -327,9 +327,11 @@ static void sub_80F8F58(void); static void sub_80F8F78(void); static void sub_80F8FB4(void); +#if DEBUG // some debug variable, I guess. // TODO: where exactly is this located? __attribute__((section(".bss"))) /*static*/ u8 gUnknown_0300074C = 0; +#endif #if DEBUG __attribute__((naked)) diff --git a/src/scene/title_screen.c b/src/scene/title_screen.c index 4ff02d93c..a1c8e081d 100644 --- a/src/scene/title_screen.c +++ b/src/scene/title_screen.c @@ -354,7 +354,9 @@ static void Task_TitleScreenPhase1(u8); static void Task_TitleScreenPhase2(u8); static void Task_TitleScreenPhase3(u8); static void CB2_GoToMainMenu(void); +#if DEBUG static void CB2_GoToTestMenu(void); +#endif static void CB2_GoToClearSaveDataScreen(void); static void CB2_GoToResetRtcScreen(void); static void CB2_GoToCopyrightScreen(void); -- cgit v1.2.3 From ffb74a0211f750506650b66fe2bcdf7ddf770668 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sun, 21 Jan 2018 18:14:47 -0600 Subject: match debug ROM --- src/battle/battle_2.c | 6 ++++++ src/debug/watanabe_debug_menu.c | 8 ++++---- src/engine/link.c | 18 ++++++++++++++---- src/pokemon/mail.c | 11 +++-------- 4 files changed, 27 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 696f1fde0..03391cf92 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -12104,6 +12104,12 @@ void SetActionsAndBanksTurnOrder(void) } } } + // Debug ROM has a register swap from the retail ROM. + // And doing this seems to fix it. +#if DEBUG + asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm(""); + asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm(""); +#endif gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; eFocusPunchBank = 0; } diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index b0fbebac1..ff6f97933 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -7813,7 +7813,7 @@ void debug_80C6FA8() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x0\n" - " bl GetMonSpritePal\n" + " bl GetMonSpritePalFromOtIdPersonality\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" @@ -7832,7 +7832,7 @@ void debug_80C6FA8() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x9\n" - " bl GetMonSpritePal\n" + " bl GetMonSpritePalFromOtIdPersonality\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" @@ -9268,7 +9268,7 @@ void debug_80C7B14() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x0\n" - " bl GetMonSpritePal\n" + " bl GetMonSpritePalFromOtIdPersonality\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" @@ -9287,7 +9287,7 @@ void debug_80C7B14() " ldrh r0, [r1]\n" " mov r1, #0x0\n" " mov r2, #0x9\n" - " bl GetMonSpritePal\n" + " bl GetMonSpritePalFromOtIdPersonality\n" " ldr r1, [r4]\n" " ldrb r1, [r1, #0x6]\n" " lsl r1, r1, #0x14\n" diff --git a/src/engine/link.c b/src/engine/link.c index f800f4aad..5785a5a56 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -81,7 +81,7 @@ static void sub_80084C8(void); static void sub_80084F4(void); static void CheckErrorStatus(void); -static void CB2_PrintErrorMessage(void); +void CB2_PrintErrorMessage(void); static u8 IsSioMultiMaster(void); static void DisableSerial(void); static void EnableSerial(void); @@ -191,9 +191,19 @@ const struct BlockRequest sBlockRequestLookupTable[5] = static const u8 sTestString[] = _("テストな"); -ALIGNED(4) static const u8 sMagic[] = "GameFreak inc."; +// TODO: fix the alignment here -ALIGNED(4) static const u8 sEmptyString[] = _(""); +ALIGNED(4) const u8 sMagic[] = "GameFreak inc."; + +#if DEBUG +const u8 sEmptyString[] = _(" "); +#else +ALIGNED(4) const u8 sEmptyString[] = _(""); +#endif + +#if DEBUG +const u8 linkDebugFillerPleaseRemove[2] = {0}; +#endif void Task_DestroySelf(u8 taskId) { @@ -1395,7 +1405,7 @@ void CB2_LinkError(void) SetMainCallback2(CB2_PrintErrorMessage); } -static void CB2_PrintErrorMessage(void) +void CB2_PrintErrorMessage(void) { u8 array[32] __attribute__((unused)); // unused u8 array2[32] __attribute__((unused)); // unused diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 3187fef9f..11851410b 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -68,11 +68,6 @@ struct MailGraphics u16 color12; }; -#if DEBUG -// should be static -__attribute__((section(".bss"))) u8 unk_debug_bss_2; -#endif - const u16 gUnknown_083E562C[][2] = { {0x6ACD, 0x51A5}, @@ -977,7 +972,7 @@ void debug_sub_810C910() " .align 2, 0\n" "._143:\n" " .word gPaletteFade\n" - " .word unk_debug_bss_2\n" + " .word gUnknown_0300074C\n" " .word gSaveBlock1\n" " .word gSpecialVar_0x8005\n" " .word 0x2b6c\n" @@ -1529,7 +1524,7 @@ void debug_sub_810CD9C() "._192:\n" " .align 2, 0\n" "._191:\n" - " .word unk_debug_bss_2\n" + " .word gUnknown_0300074C\n" " .word gSpecialVar_0x8004\n" " .word gSpecialVar_0x8005\n" " .word gSpecialVar_0x8006\n" @@ -2372,7 +2367,7 @@ void debug_sub_810D388() "._300:\n" " .align 2, 0\n" "._299:\n" - " .word unk_debug_bss_2\n" + " .word gUnknown_0300074C\n" " .word 0x43c\n" "._297:\n" " bl ScanlineEffect_Stop\n" -- cgit v1.2.3 From 5ffd006acfe8ad12e88fa53a93a55b6f59e77779 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 Jan 2018 19:33:08 -0500 Subject: nonmatching sub_809C464 --- src/pokemon/pokemon_storage_system_4.c | 378 +++++++++++++++++++++++++++++++++ 1 file changed, 378 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index eb5a6cb0b..c02ca878d 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -67,7 +67,10 @@ bool8 sub_809BF2C(void); void sub_809BF74(void); void sub_809C028(void); void sub_809C04C(void *pokemon, u8 a1); +bool8 sub_809CAB0(void); void sub_809CC04(void); +void sub_809CD88(void); +s8 sub_809CE4C(u8 a0); // .rodata @@ -2101,3 +2104,378 @@ void sub_809C04C(void *pokemon, u8 a1) buf[0] = EOS; } } + +#ifdef NONMATCHING +u8 sub_809C464(void) +{ + u8 r9; + s8 r8 = gUnknown_020384E4; + s8 r4 = gUnknown_020384E5; + gPokemonStorageSystemPtr->unk_11de = 0; + gPokemonStorageSystemPtr->unk_11df = 0; + gPokemonStorageSystemPtr->unk_11e3 = 0; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + r9 = 1; + if (gUnknown_020384E5 >= 6) + { + r4 -= 6; + } + else + { + r8 = 2; + r4 = 0; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + r9 = 1; + r4 += 6; + if (r4 >= 30) + { + r8 = 3; + r4 -= 30; + r4 /= 3; + gPokemonStorageSystemPtr->unk_11de = 1; + gPokemonStorageSystemPtr->unk_11e3 = 1; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + r9 = 1; + if (gUnknown_020384E5 % 6) + r4--; + else + { + gPokemonStorageSystemPtr->unk_11df = -1; + r4 += 5; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + r9 = 1; + if ((gUnknown_020384E5 + 1) % 6) + r4++; + else + { + gPokemonStorageSystemPtr->unk_11df = 1; + r4 -= 5; + } + } + else if (gMain.newKeys & START_BUTTON) + { + r9 = 1; + r8 = 2; + r4 = 0; + } + else + { + if ((gMain.newKeys & A_BUTTON) && sub_809CAB0()) + { + if (gUnknown_020384E9 == 0) + return 8; + switch (sub_809CE4C(0)) + { + case 1: + return 11; + case 2: + return 12; + case 3: + return 13; + case 4: + return 14; + case 5: + return 15; + } + } + if (gMain.newKeys & B_BUTTON) + return 16; + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR) + { + if (gMain.heldKeys & L_BUTTON) + return 10; + if (gMain.heldKeys & R_BUTTON) + return 9; + } + if (gMain.newKeys & SELECT_BUTTON) + { + sub_809CD88(); + return 0; + } + r9 = 0; + } + if (r9) + sub_809AF18(r8, r4); + return r9; +} +#else +__attribute__((naked)) u8 sub_809C464(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tldr r0, _0809C4D8 @ =gUnknown_020384E4\n" + "\tldrb r0, [r0]\n" + "\tmov r8, r0\n" + "\tldr r2, _0809C4DC @ =gUnknown_020384E5\n" + "\tldrb r4, [r2]\n" + "\tldr r0, _0809C4E0 @ =gPokemonStorageSystemPtr\n" + "\tldr r1, [r0]\n" + "\tldr r0, _0809C4E4 @ =0x000011de\n" + "\tadds r7, r1, r0\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r7]\n" + "\tldr r3, _0809C4E8 @ =0x000011df\n" + "\tadds r5, r1, r3\n" + "\tstrb r0, [r5]\n" + "\tadds r3, 0x4\n" + "\tadds r6, r1, r3\n" + "\tstrb r0, [r6]\n" + "\tldr r0, _0809C4EC @ =gMain\n" + "\tmov r12, r0\n" + "\tldrh r1, [r0, 0x30]\n" + "\tmovs r0, 0x40\n" + "\tands r0, r1\n" + "\tadds r3, r2, 0\n" + "\tcmp r0, 0\n" + "\tbeq _0809C4A0\n" + "\tb _0809C62A\n" + "_0809C4A0:\n" + "\tmovs r0, 0x80\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C4F0\n" + "\tmovs r1, 0x1\n" + "\tmov r9, r1\n" + "\tlsls r0, r4, 24\n" + "\tmovs r3, 0xC0\n" + "\tlsls r3, 19\n" + "\tadds r0, r3\n" + "\tlsrs r4, r0, 24\n" + "\tasrs r0, 24\n" + "\tcmp r0, 0x1D\n" + "\tbgt _0809C4BE\n" + "\tb _0809C648\n" + "_0809C4BE:\n" + "\tmovs r1, 0x3\n" + "\tmov r8, r1\n" + "\tsubs r0, 0x1E\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tbl __divsi3\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tmov r3, r9\n" + "\tstrb r3, [r7]\n" + "\tstrb r3, [r6]\n" + "\tb _0809C648\n" + "\t.align 2, 0\n" + "_0809C4D8: .4byte gUnknown_020384E4\n" + "_0809C4DC: .4byte gUnknown_020384E5\n" + "_0809C4E0: .4byte gPokemonStorageSystemPtr\n" + "_0809C4E4: .4byte 0x000011de\n" + "_0809C4E8: .4byte 0x000011df\n" + "_0809C4EC: .4byte gMain\n" + "_0809C4F0:\n" + "\tmovs r0, 0x20\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C524\n" + "\tmovs r0, 0x1\n" + "\tmov r9, r0\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r3, r0]\n" + "\tmovs r1, 0x6\n" + "\tbl __modsi3\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0809C514\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0xFF\n" + "\tlsls r1, 24\n" + "\tb _0809C63C\n" + "_0809C514:\n" + "\tmovs r0, 0xFF\n" + "\tstrb r0, [r5]\n" + "\tlsls r0, r4, 24\n" + "\tmovs r3, 0xA0\n" + "\tlsls r3, 19\n" + "\tadds r0, r3\n" + "\tlsrs r4, r0, 24\n" + "\tb _0809C648\n" + "_0809C524:\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C554\n" + "\tmovs r0, 0x1\n" + "\tmov r9, r0\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r3, r0]\n" + "\tadds r0, 0x1\n" + "\tmovs r1, 0x6\n" + "\tbl __modsi3\n" + "\tcmp r0, 0\n" + "\tbeq _0809C548\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 17\n" + "\tb _0809C63C\n" + "_0809C548:\n" + "\tmov r3, r9\n" + "\tstrb r3, [r5]\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0xFB\n" + "\tlsls r1, 24\n" + "\tb _0809C63C\n" + "_0809C554:\n" + "\tmov r3, r12\n" + "\tldrh r1, [r3, 0x2E]\n" + "\tmovs r0, 0x8\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C56A\n" + "\tmovs r0, 0x1\n" + "\tmov r9, r0\n" + "\tmovs r1, 0x2\n" + "\tmov r8, r1\n" + "\tb _0809C646\n" + "_0809C56A:\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C5D4\n" + "\tbl sub_809CAB0\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0809C5D4\n" + "\tldr r0, _0809C588 @ =gUnknown_020384E9\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _0809C58C\n" + "\tmovs r0, 0x8\n" + "\tb _0809C658\n" + "\t.align 2, 0\n" + "_0809C588: .4byte gUnknown_020384E9\n" + "_0809C58C:\n" + "\tmovs r0, 0\n" + "\tbl sub_809CE4C\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tcmp r0, 0x4\n" + "\tbhi _0809C5D4\n" + "\tlsls r0, 2\n" + "\tldr r1, _0809C5A8 @ =_0809C5AC\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0809C5A8: .4byte _0809C5AC\n" + "\t.align 2, 0\n" + "_0809C5AC:\n" + "\t.4byte _0809C5C0\n" + "\t.4byte _0809C5C4\n" + "\t.4byte _0809C5C8\n" + "\t.4byte _0809C5CC\n" + "\t.4byte _0809C5D0\n" + "_0809C5C0:\n" + "\tmovs r0, 0xB\n" + "\tb _0809C658\n" + "_0809C5C4:\n" + "\tmovs r0, 0xC\n" + "\tb _0809C658\n" + "_0809C5C8:\n" + "\tmovs r0, 0xD\n" + "\tb _0809C658\n" + "_0809C5CC:\n" + "\tmovs r0, 0xE\n" + "\tb _0809C658\n" + "_0809C5D0:\n" + "\tmovs r0, 0xF\n" + "\tb _0809C658\n" + "_0809C5D4:\n" + "\tldr r2, _0809C5E4 @ =gMain\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C5E8\n" + "\tmovs r0, 0x10\n" + "\tb _0809C658\n" + "\t.align 2, 0\n" + "_0809C5E4: .4byte gMain\n" + "_0809C5E8:\n" + "\tldr r0, _0809C600 @ =gSaveBlock2\n" + "\tldrb r0, [r0, 0x13]\n" + "\tcmp r0, 0x1\n" + "\tbne _0809C612\n" + "\tldrh r1, [r2, 0x2C]\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C604\n" + "\tmovs r0, 0xA\n" + "\tb _0809C658\n" + "\t.align 2, 0\n" + "_0809C600: .4byte gSaveBlock2\n" + "_0809C604:\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C612\n" + "\tmovs r0, 0x9\n" + "\tb _0809C658\n" + "_0809C612:\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C624\n" + "\tbl sub_809CD88\n" + "\tmovs r0, 0\n" + "\tb _0809C658\n" + "_0809C624:\n" + "\tmovs r3, 0\n" + "\tmov r9, r3\n" + "\tb _0809C656\n" + "_0809C62A:\n" + "\tmovs r0, 0x1\n" + "\tmov r9, r0\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r2, r0]\n" + "\tcmp r0, 0x5\n" + "\tble _0809C642\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0xFA\n" + "\tlsls r1, 24\n" + "_0809C63C:\n" + "\tadds r0, r1\n" + "\tlsrs r4, r0, 24\n" + "\tb _0809C648\n" + "_0809C642:\n" + "\tmovs r3, 0x2\n" + "\tmov r8, r3\n" + "_0809C646:\n" + "\tmovs r4, 0\n" + "_0809C648:\n" + "\tmov r0, r9\n" + "\tcmp r0, 0\n" + "\tbeq _0809C656\n" + "\tmov r0, r8\n" + "\tadds r1, r4, 0\n" + "\tbl sub_809AF18\n" + "_0809C656:\n" + "\tmov r0, r9\n" + "_0809C658:\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif -- cgit v1.2.3 From 9cfd6fed81b77b4f3aca8ad7b4c2641672cc234b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 Jan 2018 21:04:43 -0500 Subject: Create stub files to hold ewram symbols --- src/field/pokedex_area_screen.c | 20 ++++++++++++++++++++ src/field/pokenav.c | 16 ++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 src/field/pokedex_area_screen.c create mode 100644 src/field/pokenav.c (limited to 'src') diff --git a/src/field/pokedex_area_screen.c b/src/field/pokedex_area_screen.c new file mode 100644 index 000000000..67ca276c4 --- /dev/null +++ b/src/field/pokedex_area_screen.c @@ -0,0 +1,20 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u16 gUnknown_02039260 = 0; +EWRAM_DATA u16 gUnknown_02039262 = 0; +EWRAM_DATA u16 gUnknown_02039264 = 0; +EWRAM_DATA u16 gUnknown_02039266 = 0; +EWRAM_DATA u16 gUnknown_02039268 = 0; +EWRAM_DATA u16 gUnknown_0203926A = 0; + +// Static ROM declarations + +// .rodata + +// .text diff --git a/src/field/pokenav.c b/src/field/pokenav.c new file mode 100644 index 000000000..f57a98df6 --- /dev/null +++ b/src/field/pokenav.c @@ -0,0 +1,16 @@ + +// Includes +#include "global.h" + +// Static type declarations + +// Static RAM declarations + +EWRAM_DATA u8 gUnknown_020388B0[4] = {}; +EWRAM_DATA u16 gUnknown_020388B4 = 0; + +// Static ROM declarations + +// .rodata + +// .text -- cgit v1.2.3 From cc1767cbc116d26d954d50c6e7642138f012540c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 Jan 2018 21:49:43 -0500 Subject: nonmatching sub_809C664 --- src/pokemon/pokemon_storage_system_4.c | 363 +++++++++++++++++++++++++++++++++ 1 file changed, 363 insertions(+) (limited to 'src') diff --git a/src/pokemon/pokemon_storage_system_4.c b/src/pokemon/pokemon_storage_system_4.c index c02ca878d..1cc9f7e3b 100644 --- a/src/pokemon/pokemon_storage_system_4.c +++ b/src/pokemon/pokemon_storage_system_4.c @@ -2479,3 +2479,366 @@ __attribute__((naked)) u8 sub_809C464(void) "\tbx r1"); } #endif + +#ifdef NONMATCHING +u8 sub_809C664(void) +{ + s8 r10 = gUnknown_020384E4; + s8 r4 = gUnknown_020384E5; + u8 r8; + u8 r9; + + gPokemonStorageSystemPtr->unk_11df = 0; + gPokemonStorageSystemPtr->unk_11de = 0; + gPokemonStorageSystemPtr->unk_11e3 = 0; + r9 = FALSE; + r8 = 0; + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (--r4 < 0) + r4 = 6; + if (r4 != gUnknown_020384E5) + r8 = 1; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (++r4 > 6) + r4 = 0; + if (r4 != gUnknown_020384E5) + r8 = 1; + } + else if ((gMain.newAndRepeatedKeys & DPAD_LEFT) && gUnknown_020384E5) + { + r8 = 1; + gPokemonStorageSystemPtr->unk_11e2 = gUnknown_020384E5; + r4 = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + if (gUnknown_020384E5 == 0) + { + r8 = 1; + r4 = gPokemonStorageSystemPtr->unk_11e2; + } + else + { + r8 = 6; + r10 = 0; + r4 = 0; + } + } + else + { + if (gMain.newKeys & A_BUTTON) + { + if (gUnknown_020384E5 == 6) + { + if (gPokemonStorageSystemPtr->unk_0005 == 1) + return 4; + r9 = TRUE; + } + else if (sub_809CAB0()) + { + if (gUnknown_020384E9 == 0) + return 8; + switch (sub_809CE4C(0)) + { + case 1: + return 11; + case 2: + return 12; + case 3: + return 13; + case 4: + return 14; + case 5: + return 15; + } + } + } + if (gMain.newKeys & B_BUTTON) + { + if (gPokemonStorageSystemPtr->unk_0005 == 1) + return 16; + r9 = TRUE; + } + if (!r9) + { + r8 = 6; + r10 = 0; + r4 = 0; + } + else if (gMain.newKeys & SELECT_BUTTON) + { + sub_809CD88(); + return 0; + } + } + if (r8) + sub_809AF18(r10, r4); + return r8; +} +#else +__attribute__((naked)) u8 sub_809C664(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tldr r0, _0809C6D8 @ =gUnknown_020384E4\n" + "\tldrb r0, [r0]\n" + "\tmov r10, r0\n" + "\tldr r7, _0809C6DC @ =gUnknown_020384E5\n" + "\tldrb r4, [r7]\n" + "\tldr r2, _0809C6E0 @ =gPokemonStorageSystemPtr\n" + "\tldr r5, [r2]\n" + "\tldr r1, _0809C6E4 @ =0x000011df\n" + "\tadds r0, r5, r1\n" + "\tmovs r1, 0\n" + "\tstrb r1, [r0]\n" + "\tldr r3, _0809C6E8 @ =0x000011de\n" + "\tadds r0, r5, r3\n" + "\tstrb r1, [r0]\n" + "\tadds r3, 0x5\n" + "\tadds r0, r5, r3\n" + "\tstrb r1, [r0]\n" + "\tmov r9, r1\n" + "\tmov r8, r1\n" + "\tldr r1, _0809C6EC @ =gMain\n" + "\tldrh r3, [r1, 0x30]\n" + "\tmovs r0, 0x40\n" + "\tands r0, r3\n" + "\tadds r6, r7, 0\n" + "\tmov r12, r2\n" + "\tadds r2, r1, 0\n" + "\tcmp r0, 0\n" + "\tbeq _0809C6A8\n" + "\tb _0809C81C\n" + "_0809C6A8:\n" + "\tmovs r0, 0x80\n" + "\tands r0, r3\n" + "\tcmp r0, 0\n" + "\tbeq _0809C6F0\n" + "\tlsls r0, r4, 24\n" + "\tmovs r1, 0x80\n" + "\tlsls r1, 17\n" + "\tadds r0, r1\n" + "\tlsrs r4, r0, 24\n" + "\tasrs r0, 24\n" + "\tcmp r0, 0x6\n" + "\tble _0809C6C2\n" + "\tmovs r4, 0\n" + "_0809C6C2:\n" + "\tlsls r0, r4, 24\n" + "\tasrs r0, 24\n" + "\tmovs r1, 0\n" + "\tldrsb r1, [r6, r1]\n" + "\tcmp r0, r1\n" + "\tbne _0809C6D0\n" + "\tb _0809C83C\n" + "_0809C6D0:\n" + "\tmovs r2, 0x1\n" + "\tmov r8, r2\n" + "\tb _0809C842\n" + "\t.align 2, 0\n" + "_0809C6D8: .4byte gUnknown_020384E4\n" + "_0809C6DC: .4byte gUnknown_020384E5\n" + "_0809C6E0: .4byte gPokemonStorageSystemPtr\n" + "_0809C6E4: .4byte 0x000011df\n" + "_0809C6E8: .4byte 0x000011de\n" + "_0809C6EC: .4byte gMain\n" + "_0809C6F0:\n" + "\tmovs r0, 0x20\n" + "\tands r0, r3\n" + "\tcmp r0, 0\n" + "\tbeq _0809C714\n" + "\tldrb r1, [r6]\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r6, r0]\n" + "\tcmp r0, 0\n" + "\tbeq _0809C714\n" + "\tmovs r3, 0x1\n" + "\tmov r8, r3\n" + "\tldr r2, _0809C710 @ =0x000011e2\n" + "\tadds r0, r5, r2\n" + "\tstrb r1, [r0]\n" + "\tmovs r4, 0\n" + "\tb _0809C83C\n" + "\t.align 2, 0\n" + "_0809C710: .4byte 0x000011e2\n" + "_0809C714:\n" + "\tldrh r1, [r2, 0x30]\n" + "\tmovs r0, 0x10\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C748\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r6, r0]\n" + "\tcmp r0, 0\n" + "\tbne _0809C73C\n" + "\tmovs r3, 0x1\n" + "\tmov r8, r3\n" + "\tmov r1, r12\n" + "\tldr r0, [r1]\n" + "\tldr r2, _0809C738 @ =0x000011e2\n" + "\tadds r0, r2\n" + "\tldrb r4, [r0]\n" + "\tb _0809C83C\n" + "\t.align 2, 0\n" + "_0809C738: .4byte 0x000011e2\n" + "_0809C73C:\n" + "\tmovs r3, 0x6\n" + "\tmov r8, r3\n" + "\tmovs r0, 0\n" + "\tmov r10, r0\n" + "\tmovs r4, 0\n" + "\tb _0809C83C\n" + "_0809C748:\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C7D0\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r6, r0]\n" + "\tcmp r0, 0x6\n" + "\tbne _0809C76E\n" + "\tmov r1, r12\n" + "\tldr r0, [r1]\n" + "\tldrb r0, [r0, 0x5]\n" + "\tcmp r0, 0x1\n" + "\tbne _0809C768\n" + "\tmovs r0, 0x4\n" + "\tb _0809C84C\n" + "_0809C768:\n" + "\tmovs r2, 0x1\n" + "\tmov r9, r2\n" + "\tb _0809C7D0\n" + "_0809C76E:\n" + "\tbl sub_809CAB0\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _0809C7D0\n" + "\tldr r0, _0809C784 @ =gUnknown_020384E9\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _0809C788\n" + "\tmovs r0, 0x8\n" + "\tb _0809C84C\n" + "\t.align 2, 0\n" + "_0809C784: .4byte gUnknown_020384E9\n" + "_0809C788:\n" + "\tmovs r0, 0\n" + "\tbl sub_809CE4C\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 24\n" + "\tasrs r0, 24\n" + "\tcmp r0, 0x4\n" + "\tbhi _0809C7D0\n" + "\tlsls r0, 2\n" + "\tldr r1, _0809C7A4 @ =_0809C7A8\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_0809C7A4: .4byte _0809C7A8\n" + "\t.align 2, 0\n" + "_0809C7A8:\n" + "\t.4byte _0809C7BC\n" + "\t.4byte _0809C7C0\n" + "\t.4byte _0809C7C4\n" + "\t.4byte _0809C7C8\n" + "\t.4byte _0809C7CC\n" + "_0809C7BC:\n" + "\tmovs r0, 0xB\n" + "\tb _0809C84C\n" + "_0809C7C0:\n" + "\tmovs r0, 0xC\n" + "\tb _0809C84C\n" + "_0809C7C4:\n" + "\tmovs r0, 0xD\n" + "\tb _0809C84C\n" + "_0809C7C8:\n" + "\tmovs r0, 0xE\n" + "\tb _0809C84C\n" + "_0809C7CC:\n" + "\tmovs r0, 0xF\n" + "\tb _0809C84C\n" + "_0809C7D0:\n" + "\tldr r2, _0809C7EC @ =gMain\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C7F8\n" + "\tldr r0, _0809C7F0 @ =gPokemonStorageSystemPtr\n" + "\tldr r0, [r0]\n" + "\tldrb r0, [r0, 0x5]\n" + "\tcmp r0, 0x1\n" + "\tbne _0809C7F4\n" + "\tmovs r0, 0x10\n" + "\tb _0809C84C\n" + "\t.align 2, 0\n" + "_0809C7EC: .4byte gMain\n" + "_0809C7F0: .4byte gPokemonStorageSystemPtr\n" + "_0809C7F4:\n" + "\tmovs r3, 0x1\n" + "\tmov r9, r3\n" + "_0809C7F8:\n" + "\tmov r0, r9\n" + "\tcmp r0, 0\n" + "\tbeq _0809C80A\n" + "\tmovs r1, 0x6\n" + "\tmov r8, r1\n" + "\tmovs r2, 0\n" + "\tmov r10, r2\n" + "\tmovs r4, 0\n" + "\tb _0809C83C\n" + "_0809C80A:\n" + "\tldrh r1, [r2, 0x2E]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0809C83C\n" + "\tbl sub_809CD88\n" + "\tmovs r0, 0\n" + "\tb _0809C84C\n" + "_0809C81C:\n" + "\tlsls r0, r4, 24\n" + "\tmovs r3, 0xFF\n" + "\tlsls r3, 24\n" + "\tadds r0, r3\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r0, 0\n" + "\tbge _0809C82C\n" + "\tmovs r4, 0x6\n" + "_0809C82C:\n" + "\tlsls r0, r4, 24\n" + "\tasrs r0, 24\n" + "\tmovs r1, 0\n" + "\tldrsb r1, [r7, r1]\n" + "\tcmp r0, r1\n" + "\tbeq _0809C83C\n" + "\tmovs r0, 0x1\n" + "\tmov r8, r0\n" + "_0809C83C:\n" + "\tmov r1, r8\n" + "\tcmp r1, 0\n" + "\tbeq _0809C84A\n" + "_0809C842:\n" + "\tmov r0, r10\n" + "\tadds r1, r4, 0\n" + "\tbl sub_809AF18\n" + "_0809C84A:\n" + "\tmov r0, r8\n" + "_0809C84C:\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif -- cgit v1.2.3 From 796d331df605f17b3e5d89d494d89ce7a907eaab Mon Sep 17 00:00:00 2001 From: Thomas Winwood Date: Mon, 22 Jan 2018 06:35:10 +0000 Subject: Use BATTLE_TYPE_DOUBLE constant in guard.c --- src/battle/anim/guard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c index ab093eab1..01cf07e39 100644 --- a/src/battle/anim/guard.c +++ b/src/battle/anim/guard.c @@ -12,7 +12,7 @@ extern u16 gBattleTypeFlags; void sub_80D3014(struct Sprite *sprite) { - if ((gBattleTypeFlags & 1) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) { sub_807A3FC(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y); sprite->pos1.y += 40; -- cgit v1.2.3 From 4e98ffed3339ca9fd7c4f0915da707aa8b2417ef Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 14:54:37 -0500 Subject: through sub_80C8604 --- src/battle/contest_link_80C857C.c | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 616a72d27..e0b24b9e1 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -1,6 +1,52 @@ #include "global.h" +#include "ewram.h" +#include "task.h" #include "link.h" +void sub_80C8644(u8 taskId); + +void sub_80C857C(const void *data, u16 size) +{ + memcpy(eContestLinkSendBuffer, data, size); + SendBlock(bitmask_all_link_players_but_self(), eContestLinkSendBuffer, size); +} + +bool8 sub_80C85AC(u8 who) +{ + u8 flag = 1 << who; + if (!(GetBlockReceivedStatus() & flag)) + return FALSE; + ResetBlockReceivedFlag(flag); + return TRUE; +} + +bool8 sub_80C85D8(void) +{ + int i; + + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + if (!((GetBlockReceivedStatus() >> i) & 1)) + return FALSE; + } + ResetBlockReceivedFlags(); + return TRUE; +} + +void sub_80C8604(u8 taskId) +{ +#if ENGLISH + u8 i; + + for (i = 0; i < 4; i++) + gBlockRecvBuffer[i][0] = 0xff; +#endif + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = sub_80C8644; +} + +asm(".section .text_de"); + #if GERMAN void de_sub_80C9274(bool32 arg0) -- cgit v1.2.3 From fc504ce61b8698bc4777bbd37a8766b8c35a5814 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 15:51:57 -0500 Subject: through (nonmatching) sub_80C86A0 --- src/battle/contest_link_80C857C.c | 150 +++++++++++++++++++++++++++++++++++++- 1 file changed, 149 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index e0b24b9e1..3360ecbb6 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -1,9 +1,13 @@ #include "global.h" #include "ewram.h" #include "task.h" +#include "contest.h" +#include "text.h" +#include "string_util.h" #include "link.h" -void sub_80C8644(u8 taskId); +static void sub_80C8644(u8 taskId); +static void sub_80C8660(u8 taskId); void sub_80C857C(const void *data, u16 size) { @@ -45,6 +49,150 @@ void sub_80C8604(u8 taskId) gTasks[taskId].func = sub_80C8644; } +static void sub_80C8644(u8 taskId) +{ + gTasks[taskId].func = sub_80C8660; +} + +static void sub_80C8660(u8 taskId) +{ + if (gReceivedRemoteLinkPlayers) + { + gContestPlayerMonIndex = GetMultiplayerId(); + if (GetLinkPlayerCount() == MAX_LINK_PLAYERS) + { + gIsLinkContest = TRUE; + SwitchTaskToFollowupFunc(taskId); + } + } +} + +#ifdef NONMATCHING +u8 sub_80C86A0(const u8 *string) +{ + u8 language = GAME_LANGUAGE; + if (string[0] == EXT_CTRL_CODE_BEGIN && string[1] == 0x15) + return language; + if (StringLength(string) > 5) + return language; + for (; *string != EOS; string++) + { + if (!((*string >= CHAR_A && *string <= CHAR_z) || + (*string >= CHAR_0 + 0 && *string <= CHAR_0 + 9) || + *string == CHAR_SPACE || + *string == CHAR_PERIOD || + *string == CHAR_COMMA || + *string == 0xAB || + *string == CHAR_QUESTION_MARK || + *string == CHAR_MALE || + *string == CHAR_FEMALE || + *string == CHAR_SLASH || + *string == CHAR_HYPHEN || + *string == CHAR_ELLIPSIS || + *string == 0xB1 || + *string == 0xB2 || + *string == 0xB3 || + *string == 0xB1 + )) + { + language = LANGUAGE_JAPANESE; + break; + } + } + return language; +} +#else +__attribute__((naked)) u8 sub_80C86A0(const u8 *string) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tadds r4, r0, 0\n" + ".ifdef ENGLISH\n" + "\tmovs r5, 0x2\n" + ".else\n" + "\tmovs r5, 0x5\n" + ".endif\n" + "\tldrb r0, [r4]\n" + "\tcmp r0, 0xFC\n" + "\tbne _080C86B6\n" + "\tldrb r0, [r4, 0x1]\n" + "\tcmp r0, 0x15\n" + "\tbne _080C86B6\n" + ".ifdef ENGLISH\n" + "\tmovs r0, 0x2\n" + ".else\n" + "\tmovs r0, 0x5\n" + ".endif\n" + "\tb _080C872C\n" + "_080C86B6:\n" + "\tadds r0, r4, 0\n" + "\tbl StringLength\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x5\n" + "\tbhi _080C872A\n" + "\tldrb r0, [r4]\n" + "\tcmp r0, 0xFF\n" + "\tbeq _080C872A\n" + "_080C86CA:\n" + "\tldrb r1, [r4]\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x45\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x33\n" + "\tbls _080C871E\n" + "\tadds r0, r1, 0\n" + "\tadds r0, 0x5F\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x9\n" + "\tbls _080C871E\n" + "\tadds r0, r1, 0\n" + "\tcmp r0, 0\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xAD\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB8\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xAB\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xAC\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB5\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB6\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xBA\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xAE\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB0\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB1\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB2\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB3\n" + "\tbeq _080C871E\n" + "\tcmp r0, 0xB1\n" + "\tbne _080C8728\n" + "_080C871E:\n" + "\tadds r4, 0x1\n" + "\tldrb r0, [r4]\n" + "\tcmp r0, 0xFF\n" + "\tbne _080C86CA\n" + "\tb _080C872A\n" + "_080C8728:\n" + "\tmovs r5, 0x1\n" + "_080C872A:\n" + "\tadds r0, r5, 0\n" + "_080C872C:\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif + asm(".section .text_de"); #if GERMAN -- cgit v1.2.3 From b2ea9aec023be26a83853ca53134ce78b95ac2e6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 17:33:02 -0500 Subject: sub_80C8734 --- src/battle/contest_link_80C857C.c | 104 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 3360ecbb6..b86e7bb9c 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -8,6 +8,10 @@ static void sub_80C8644(u8 taskId); static void sub_80C8660(u8 taskId); +#if GERMAN +void de_sub_80C9274(bool32 arg0); +void de_sub_80C9294(bool32 arg0); +#endif void sub_80C857C(const void *data, u16 size) { @@ -193,6 +197,106 @@ __attribute__((naked)) u8 sub_80C86A0(const u8 *string) } #endif +void sub_80C8734(u8 taskId) +{ + int i; + u8 *name; + + switch (gTasks[taskId].data[0]) { +#if ENGLISH + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; +#elif GERMAN + case 8: +#endif + case 0: + if (GetMultiplayerId() == 0) { + if (sub_8007ECC()) { +#if GERMAN + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[0] = 3; + } + else + { +#endif + memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon)); +#if GERMAN + de_sub_80C9274(FALSE); +#endif + sub_8007E9C(2); +#if GERMAN + gTasks[taskId].data[0] = 1; + } +#else + gTasks[taskId].data[0]++; +#endif + } + } + else + { + memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon)); +#if GERMAN + de_sub_80C9294(FALSE); +#endif + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + memcpy(gContestMons + i, gBlockRecvBuffer[i], sizeof(struct ContestPokemon)); + name = gContestMons[i].nickname; + if (gLinkPlayers[i].language == LANGUAGE_JAPANESE) + { + ConvertInternationalString(name, sub_80C86A0(name)); + } + else if (name[10] == EXT_CTRL_CODE_BEGIN) + { + ConvertInternationalString(name, LANGUAGE_JAPANESE); + } else + { + name[5] = name[10]; + name[10] = EOS; + } + name = gContestMons[i].trainerName; + if (gLinkPlayers[i].language == LANGUAGE_JAPANESE) + { + name[7] = EOS; + name[6] = name[4]; + name[5] = name[3]; + name[4] = name[2]; + name[3] = name[1]; + name[2] = name[0]; + name[1] = 0x15; + name[0] = EXT_CTRL_CODE_BEGIN; + } + else + { + name[5] = name[7]; + name[7] = EOS; + } + } + gTasks[taskId].data[0]++; + } + break; +#if GERMAN + case 2: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + default: + gTasks[taskId].data[0]++; + break; +#endif + } +} + + asm(".section .text_de"); #if GERMAN -- cgit v1.2.3 From 84769240d2002281c7bc274f18aab76fbe908483 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 18:04:04 -0500 Subject: sub_80C88AC --- src/battle/contest_link_80C857C.c | 33 +++++++++++++++++++++++++++++++++ src/contest.c | 6 +++--- src/script_pokemon_util_80C4BF0.c | 6 +++--- 3 files changed, 39 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index b86e7bb9c..937193172 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -1,5 +1,6 @@ #include "global.h" #include "ewram.h" +#include "random.h" #include "task.h" #include "contest.h" #include "text.h" @@ -296,6 +297,38 @@ void sub_80C8734(u8 taskId) } } +void sub_80C88AC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 0: + if (GetMultiplayerId() == 0) + { + if (sub_8007ECC()) + { + sub_80C857C(&gRngValue, sizeof(u32)); + gTasks[taskId].data[0]++; + } + } + else + { + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85AC(0)) + { + memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(u32)); + memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(u32)); + gTasks[taskId].data[0]++; + } + break; + } +} asm(".section .text_de"); diff --git a/src/contest.c b/src/contest.c index 93d1a8efc..ce29d80b0 100644 --- a/src/contest.c +++ b/src/contest.c @@ -59,7 +59,7 @@ extern u16 gBattle_BG0_Y; extern u16 gBattle_BG0_X; extern u16 gBattle_BG1_X; extern u16 gBattle_WIN0H; -extern u32 gUnknown_03005D28; // saved RNG value +extern u32 gContestRngValue; // saved RNG value extern struct SpriteTemplate gUnknown_02024E8C; @@ -495,7 +495,7 @@ void sub_80AB6B4(u8 taskId) GetMultiplayerId(); // unused return value DestroyTask(taskId); gTasks[sContest.mainTaskId].func = sub_80AB960; - gRngValue = gUnknown_03005D28; + gRngValue = gContestRngValue; } } @@ -1812,7 +1812,7 @@ void sub_80ADDA4(u8 taskId) sub_80AF668(); sub_80AF138(); sub_80BE23C(sContestantStatus[gContestPlayerMonIndex].prevMove); - gUnknown_03005D28 = gRngValue; + gContestRngValue = gRngValue; StringExpandPlaceholders(gStringVar4, gUnknown_083CB02C); Text_InitWindow8002EB0(&gMenuWindow, gStringVar4, 776, 1, 15); gTasks[taskId].data[2] = 0; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index f991297ab..e51bc3522 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -45,7 +45,7 @@ extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; extern u16 gSpecialVar_Result; -extern u32 gUnknown_03005D28; +extern u32 gContestRngValue; extern u8 gUnknown_02038694; extern u8 gUnknown_0203856C; @@ -373,8 +373,8 @@ void ScriptRandom(void) if(gIsLinkContest & 1) { - gUnknown_03005D28 = 1103515245 * gUnknown_03005D28 + 24691; - random = gUnknown_03005D28 >> 16; + gContestRngValue = 1103515245 * gContestRngValue + 24691; + random = gContestRngValue >> 16; scriptPtr = &gSpecialVar_Result; } else -- cgit v1.2.3 From 9474c491c070fe38e89f7b3848a5820c763fe045 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 19:03:23 -0500 Subject: sub_80C8938 --- src/battle/contest_link_80C857C.c | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 937193172..17b82388c 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -330,6 +330,74 @@ void sub_80C88AC(u8 taskId) } } +void sub_80C8938(u8 taskId) +{ + int i; + + switch (gTasks[taskId].data[0]) + { +#if ENGLISH + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; +#elif GERMAN + case 8: +#endif + case 0: + gBlockSendBuffer[0] = gTasks[taskId].data[9]; + if (GetMultiplayerId() == 0) + { + if (sub_8007ECC()) + { +#if GERMAN + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[0] = 3; + } + else + { + de_sub_80C9274(TRUE); +#endif + sub_8007E9C(2); +#if ENGLISH + gTasks[taskId].data[0]++; +#elif GERMAN + gTasks[taskId].data[0] = 1; + } +#endif + } + } + else + { +#if GERMAN + de_sub_80C9294(TRUE); +#endif + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gTasks[taskId].data[i + 1] = gBlockRecvBuffer[i][0]; + } + gTasks[taskId].data[0]++; + } + break; +#if GERMAN + case 2: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + default: + gTasks[taskId].data[0]++; + break; +#endif + } +} + asm(".section .text_de"); #if GERMAN -- cgit v1.2.3 From 5312cf566196e662aa7edd4ef68f32922eb54180 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 19:20:26 -0500 Subject: through sub_80C8A38 --- src/battle/contest_link_80C857C.c | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 17b82388c..cef290adf 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -398,6 +398,60 @@ void sub_80C8938(u8 taskId) } } +void sub_80C89DC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 0: + if (sub_8007ECC()) + { + sub_80C857C(&gContestPlayerMonIndex, sizeof(u8)); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + gTasks[taskId].data[0]++; + } + break; + } +} + +void sub_80C8A38(u8 taskId) +{ + int i; + + switch (gTasks[taskId].data[0]) + { + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 0: + if (sub_8007ECC()) + { + sub_80C857C(&sContestantStatus[gContestPlayerMonIndex].currMove, sizeof(u16)); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + *&sContestantStatus[i].currMove = gBlockRecvBuffer[i][0]; + } + gTasks[taskId].data[0]++; + } + break; + } +} + asm(".section .text_de"); #if GERMAN -- cgit v1.2.3 From cbab0f740349cbeece60f2155537c2a9870d2318 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 20:24:02 -0500 Subject: sub_80C8AD0 --- src/battle/contest_link_80C857C.c | 77 +++++++++++++++++++++++++++++++++++++++ src/debug/matsuda_debug_menu.c | 8 ---- src/script_pokemon_util_80C4BF0.c | 12 ------ 3 files changed, 77 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index cef290adf..465bb0487 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -452,6 +452,83 @@ void sub_80C8A38(u8 taskId) } } +void sub_80C8AD0(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (sub_8007ECC()) + { + sub_80C857C(gUnknown_02038678, sizeof gUnknown_02038678); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + memcpy(gUnknown_02038678, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038678); + gTasks[taskId].data[0]++; + } + break; + case 2: + case 5: + case 8: + case 11: + if (gTasks[taskId].data[1]++ > 10) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 3: + if (sub_8007ECC()) + { + sub_80C857C(gUnknown_02038680, sizeof gUnknown_02038680); + gTasks[taskId].data[0]++; + } + break; + case 4: + if (sub_80C85D8()) + { + memcpy(gUnknown_02038680, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038680); + gTasks[taskId].data[0]++; + } + break; + case 6: + if (sub_8007ECC()) + { + sub_80C857C(gUnknown_02038688, sizeof gUnknown_02038688); + gTasks[taskId].data[0]++; + } + break; + case 7: + if (sub_80C85D8()) + { + memcpy(gUnknown_02038688, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038688); + gTasks[taskId].data[0]++; + } + break; + case 9: + if (sub_8007ECC()) + { + sub_80C857C(gContestFinalStandings, sizeof gContestFinalStandings); + gTasks[taskId].data[0]++; + } + break; + case 10: + if (sub_80C85D8()) + { + memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestFinalStandings); + gTasks[taskId].data[0]++; + } + break; + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + } +} + asm(".section .text_de"); #if GERMAN diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index da1937adb..15d28df09 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -19,13 +19,7 @@ extern u8 gUnknown_0203856C; extern s16 gUnknown_02038670[]; -extern s16 gUnknown_02038678[]; -extern s16 gUnknown_02038680[]; -extern u8 gContestFinalStandings[]; extern u8 gUnknown_02038694; -extern u8 gIsLinkContest; -extern u8 gUnknown_0203869B; -extern u8 gContestPlayerMonIndex; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; @@ -40,8 +34,6 @@ extern u16 gBattle_BG3_Y; extern u8 (*gMenuCallback)(void); -extern bool8 gReceivedRemoteLinkPlayers; - static bool8 sub_80A9B78(void); static void sub_80A9BE4(u8 taskId); static void sub_80A9C98(u8); diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index e51bc3522..513f6ce2a 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -32,26 +32,14 @@ extern void sub_80C4698(u8 *, u8); extern struct SpriteTemplate gUnknown_02024E8C; -extern u8 gContestPlayerMonIndex; -extern u8 gIsLinkContest; -extern u8 gPlayerPartyCount; extern u8 gSelectedOrderFromParty[]; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u16 gSpecialVar_0x8006; - extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; -extern u16 gSpecialVar_Result; - -extern u32 gContestRngValue; extern u8 gUnknown_02038694; extern u8 gUnknown_0203856C; -extern u8 gContestFinalStandings[]; extern s16 gUnknown_02038670[]; -extern s16 gUnknown_02038678[]; void SetContestTrainerGfxIds(void) { -- cgit v1.2.3 From 399856bc7ead101718891712dd20dd85e138e640 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 20:30:31 -0500 Subject: sub_80C8C80 --- src/battle/contest_link_80C857C.c | 77 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 465bb0487..84695fb37 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -529,6 +529,83 @@ void sub_80C8AD0(u8 taskId) } } +void sub_80C8C80(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + if (sub_8007ECC()) + { + sub_80C857C(sContestantStatus, 4 * sizeof(struct ContestantStatus)); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + memcpy(sContestantStatus, gBlockRecvBuffer[gUnknown_0203869B], 4 * sizeof(struct ContestantStatus)); + gTasks[taskId].data[0]++; + } + break; + case 2: + case 5: + case 8: + case 11: + if (gTasks[taskId].data[1]++ > 10) + { + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[0]++; + } + break; + case 3: + if (sub_8007ECC()) + { + sub_80C857C(&shared192D0, sizeof shared192D0); + gTasks[taskId].data[0]++; + } + break; + case 4: + if (sub_80C85D8()) + { + memcpy(&shared192D0, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared192D0); + gTasks[taskId].data[0]++; + } + break; + case 6: + if (sub_8007ECC()) + { + sub_80C857C(&shared19328, sizeof shared19328); + gTasks[taskId].data[0]++; + } + break; + case 7: + if (sub_80C85D8()) + { + memcpy(&shared19328, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared19328); + gTasks[taskId].data[0]++; + } + break; + case 9: + if (sub_8007ECC()) + { + sub_80C857C(gUnknown_02038696, sizeof gUnknown_02038696); + gTasks[taskId].data[0]++; + } + break; + case 10: + if (sub_80C85D8()) + { + memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696); + gTasks[taskId].data[0]++; + } + break; + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + } +} + asm(".section .text_de"); #if GERMAN -- cgit v1.2.3 From bcba136599ff2cecf4eeb0e6d592186509a98a59 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Mon, 22 Jan 2018 19:33:29 -0600 Subject: disassemble debug Blender_PrintBlendingResults --- src/scene/berry_blender.c | 487 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 483 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 2535f02a6..5b013e8de 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -274,7 +274,7 @@ static void sub_8051B18(void); static void sub_805123C(void); static void sub_8050954(void); static bool8 Blender_PrintBlendingRanking(void); -static bool8 Blender_PrintBlendingResults(void); +bool8 Blender_PrintBlendingResults(void); static void sub_80510E8(void); static void sub_8050E30(void); static void sub_805197C(u16 a0, u16 a1); @@ -3278,10 +3278,489 @@ static void sub_8051C04(struct Sprite* sprite) #if DEBUG __attribute__((naked)) -static bool8 Blender_PrintBlendingResults(void) +bool8 Blender_PrintBlendingResults(void) { - // TODO: disassemble this! - asm(".incbin \"baserom_de_debug.gba\", 0x56178, 0x5655C-0x56178"); + asm(".syntax unified\n\ +loc_8056178:\n\ + PUSH {R4-R7,LR}\n\ + MOV R7, R10\n\ + MOV R6, R9\n\ + MOV R5, R8\n\ + PUSH {R5-R7}\n\ + SUB SP, SP, #0x34\n\ + LDR R1, off_805619C\n\ + LDR R0, [R1]\n\ + LDRB R0, [R0]\n\ + ADDS R2, R1, #0\n\ + CMP R0, #6 @ switch 7 cases\n\ + BLS loc_8056192\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056192:\n\ + LSLS R0, R0, #2\n\ + LDR R1, off_80561A0\n\ + ADDS R0, R0, R1\n\ + LDR R0, [R0]\n\ + MOV PC, R0 @ switch jump\n\ +@ ---------------------------------------------------------------------------\n\ +off_805619C: .4byte gBerryBlenderData\n\ +off_80561A0: .4byte jpt_805619A\n\ +jpt_805619A: .4byte loc_80561C0 @ jump table for switch statement\n\ + .4byte loc_80561D6 @ jumptable 0805619A case 1\n\ + .4byte loc_80561F0 @ jumptable 0805619A case 2\n\ + .4byte loc_8056240 @ jumptable 0805619A case 3\n\ + .4byte loc_805645C @ jumptable 0805619A case 4\n\ + .4byte loc_8056470 @ jumptable 0805619A case 5\n\ + .4byte loc_8056538 @ jumptable 0805619A case 6\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561C0: @ jumptable 0805619A case 0\n\ + LDR R1, [R2]\n\ + LDRB R0, [R1]\n\ + ADDS R0, #1\n\ + STRB R0, [R1]\n\ + LDR R0, [R2]\n\ + MOVS R1, #0x98\n\ + LSLS R1, R1, #1\n\ + ADDS R0, R0, R1\n\ + MOVS R1, #0x11\n\ + STR R1, [R0]\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561D6: @ jumptable 0805619A case 1\n\ + LDR R1, [R2]\n\ + MOVS R0, #0x98\n\ + LSLS R0, R0, #1\n\ + ADDS R2, R1, R0\n\ + LDR R0, [R2]\n\ + SUBS R0, #0xA\n\ + STR R0, [R2]\n\ + CMP R0, #0\n\ + BLT loc_80561EA\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561EA:\n\ + MOVS R0, #0\n\ + STR R0, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_80561F0: @ jumptable 0805619A case 2\n\ + LDR R1, [R2]\n\ + MOVS R2, #0x98\n\ + LSLS R2, R2, #1\n\ + ADDS R1, R1, R2\n\ + LDR R0, [R1]\n\ + ADDS R0, #1\n\ + STR R0, [R1]\n\ + CMP R0, #0x14\n\ + BGT loc_8056204\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056204:\n\ + MOVS R6, #0\n\ +\n\ +loc_8056206:\n\ + LDR R4, off_8056238\n\ + LDR R0, [R4]\n\ + ADDS R0, #0x50\n\ + ADDS R0, R0, R6\n\ + LDRB R1, [R0]\n\ + LSLS R0, R1, #4\n\ + ADDS R0, R0, R1\n\ + LSLS R0, R0, #2\n\ + LDR R1, off_805623C\n\ + ADDS R0, R0, R1\n\ + BL DestroySprite\n\ + ADDS R0, R6, #1\n\ + LSLS R0, R0, #0x10\n\ + LSRS R6, R0, #0x10\n\ + CMP R6, #2\n\ + BLS loc_8056206\n\ + LDR R1, [R4]\n\ + MOVS R0, #0x98\n\ + LSLS R0, R0, #1\n\ + ADDS R2, R1, R0\n\ + MOVS R0, #0\n\ + STR R0, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ + .align 2, 0\n\ +off_8056238: .4byte gBerryBlenderData\n\ +off_805623C: .4byte gSprites\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056240: @ jumptable 0805619A case 3\n\ + MOVS R0, #4\n\ + MOVS R1, #2\n\ + MOVS R2, #0x19\n\ + MOVS R3, #0x11\n\ + BL Menu_DrawStdWindowFrame\n\ + LDR R0, dword_805642C\n\ + MOVS R1, #5\n\ + MOVS R2, #3\n\ + MOVS R3, #0xA0\n\ + BL sub_8072BD8\n\ + MOVS R6, #0\n\ + LDR R1, off_8056430\n\ + LDR R0, [R1]\n\ + ADDS R0, #0x88\n\ + ADD R2, SP, #0xC\n\ + MOV R8, R2\n\ + MOV R2, SP\n\ + ADDS R2, #0x16\n\ + STR R2, [SP,#0x30]\n\ + LDRB R0, [R0]\n\ + CMP R6, R0\n\ + BCS loc_8056322\n\ + MOV R9, R1\n\ + LDR R0, off_8056434\n\ + MOV R10, R0\n\ +\n\ +loc_8056276:\n\ + MOV R1, R9\n\ + LDR R2, [R1]\n\ + MOVS R1, #0xB2\n\ + LSLS R1, R1, #1\n\ + ADDS R0, R2, R1\n\ + ADDS R0, R0, R6\n\ + LDRB R4, [R0]\n\ + LSLS R1, R4, #4\n\ + ADDS R1, R1, R2\n\ + MOVS R2, #0xBF\n\ + LSLS R2, R2, #1\n\ + ADDS R1, R1, R2\n\ + MOV R0, R8\n\ + BL StringCopy\n\ + LSLS R5, R4, #3\n\ + SUBS R5, R5, R4\n\ + LSLS R5, R5, #2\n\ + MOV R1, R10\n\ + ADDS R0, R5, R1\n\ + LDRB R1, [R0,#0x1A]\n\ + MOV R0, R8\n\ + BL ConvertInternationalString\n\ + MOV R0, R8\n\ + LDR R1, dword_8056438\n\ + BL de_sub_8073174\n\ + MOV R2, R9\n\ + LDR R0, [R2]\n\ + ADDS R7, R0, #0\n\ + ADDS R7, #0xAB\n\ + ADDS R4, R6, #1\n\ + ADDS R0, R7, #0\n\ + ADDS R1, R4, #0\n\ + BL ConvertIntToDecimalString\n\ + ADDS R7, R0, #0\n\ + MOVS R1, #0\n\ + STRB R1, [R7]\n\ + MOVS R0, #0xAD\n\ + STRB R0, [R7,#1]\n\ + STRB R1, [R7,#2]\n\ + ADDS R7, #3\n\ + LDR R0, off_805643C\n\ + ADDS R5, R5, R0\n\ + ADDS R0, R7, #0\n\ + ADDS R1, R5, #0\n\ + MOVS R2, #0x58\n\ + MOVS R3, #0\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + ADD R1, SP, #0xC\n\ + MOVS R2, #0x9D\n\ + MOVS R3, #0\n\ + BL sub_8072C74\n\ + MOV R2, R9\n\ + LDR R1, [R2]\n\ + ADDS R0, R1, #0\n\ + ADDS R0, #0xAB\n\ + LDR R3, dword_8056440\n\ + ADDS R1, #0x88\n\ + LDRB R2, [R1]\n\ + ADDS R3, R2, R3\n\ + LDR R1, dword_8056444\n\ + ADDS R2, R2, R1\n\ + LDRB R1, [R2]\n\ + ADDS R2, R6, #0\n\ + MULS R2, R1\n\ + LDRB R3, [R3]\n\ + ADDS R2, R2, R3\n\ + LSLS R2, R2, #0x18\n\ + LSRS R2, R2, #0x18\n\ + MOVS R1, #5\n\ + BL Menu_PrintText\n\ + LSLS R4, R4, #0x10\n\ + LSRS R6, R4, #0x10\n\ + MOV R1, R9\n\ + LDR R0, [R1]\n\ + ADDS R0, #0x88\n\ + LDRB R0, [R0]\n\ + CMP R6, R0\n\ + BCC loc_8056276\n\ +\n\ +loc_8056322:\n\ + LDR R6, off_8056430\n\ + LDR R0, [R6]\n\ + ADDS R0, #0x5A\n\ + LDRH R0, [R0]\n\ + MOVS R1, #0x64\n\ + BL __umodsi3\n\ + ADDS R1, R0, #0\n\ + LSLS R1, R1, #0x10\n\ + LSRS R1, R1, #0x10\n\ + MOV R0, R8\n\ + MOVS R2, #2\n\ + MOVS R3, #2\n\ + BL ConvertIntToDecimalStringN\n\ + LDR R0, [R6]\n\ + ADDS R7, R0, #0\n\ + ADDS R7, #0xAB\n\ + LDR R1, dword_8056448\n\ + ADDS R0, R7, #0\n\ + BL StringCopy\n\ + ADDS R7, R0, #0\n\ + LDR R0, [R6]\n\ + ADDS R0, #0x5A\n\ + LDRH R0, [R0]\n\ + MOVS R1, #0x64\n\ + BL __udivsi3\n\ + ADDS R1, R0, #0\n\ + LSLS R1, R1, #0x10\n\ + LSRS R1, R1, #0x10\n\ + ADDS R0, R7, #0\n\ + MOVS R2, #0x79\n\ + MOVS R3, #1\n\ + BL sub_8072C14\n\ + ADDS R7, R0, #0\n\ + MOVS R0, #0xB8\n\ + STRB R0, [R7]\n\ + ADDS R7, #1\n\ + ADDS R0, R7, #0\n\ + MOV R1, R8\n\ + MOVS R2, #0x88\n\ + MOVS R3, #1\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + LDR R1, off_805644C\n\ + BL StringCopy\n\ + LDR R0, [R6]\n\ + ADDS R0, #0xAB\n\ + MOVS R1, #5\n\ + MOVS R2, #0xD\n\ + BL Menu_PrintText\n\ + LDR R0, [R6]\n\ + MOVS R2, #0x96\n\ + LSLS R2, R2, #1\n\ + ADDS R0, R0, R2\n\ + LDR R0, [R0]\n\ + MOVS R1, #0x3C\n\ + BL __udivsi3\n\ + ADDS R4, R0, #0\n\ + LSLS R4, R4, #0x10\n\ + LSRS R4, R4, #0x10\n\ + ADDS R0, R4, #0\n\ + MOVS R1, #0x3C\n\ + BL __umodsi3\n\ + ADDS R5, R0, #0\n\ + LSLS R5, R5, #0x10\n\ + LSRS R5, R5, #0x10\n\ + ADDS R0, R4, #0\n\ + MOVS R1, #0x3C\n\ + BL __udivsi3\n\ + ADDS R1, R0, #0\n\ + LSLS R1, R1, #0x10\n\ + LSRS R1, R1, #0x10\n\ + MOV R0, R8\n\ + MOVS R2, #2\n\ + MOVS R3, #2\n\ + BL ConvertIntToDecimalStringN\n\ + LDR R0, [SP,#0x30]\n\ + ADDS R1, R5, #0\n\ + MOVS R2, #2\n\ + MOVS R3, #2\n\ + BL ConvertIntToDecimalStringN\n\ + LDR R0, [R6]\n\ + ADDS R7, R0, #0\n\ + ADDS R7, #0xAB\n\ + LDR R1, dword_8056450\n\ + ADDS R0, R7, #0\n\ + BL StringCopy\n\ + ADDS R7, R0, #0\n\ + MOV R1, R8\n\ + MOVS R2, #0x63\n\ + MOVS R3, #1\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + LDR R1, dword_8056454\n\ + BL StringAppend\n\ + ADDS R7, R0, #0\n\ + LDR R1, [SP,#0x30]\n\ + MOVS R2, #0x88\n\ + MOVS R3, #1\n\ + BL sub_8072C74\n\ + ADDS R7, R0, #0\n\ + LDR R1, dword_8056458\n\ + BL StringCopy\n\ + LDR R0, [R6]\n\ + ADDS R0, #0xAB\n\ + MOVS R1, #5\n\ + MOVS R2, #0xF\n\ + BL Menu_PrintText\n\ + LDR R1, [R6]\n\ + MOVS R0, #0x98\n\ + LSLS R0, R0, #1\n\ + ADDS R2, R1, R0\n\ + MOVS R0, #0\n\ + STR R0, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ +dword_805642C: .4byte gOtherText_ResultsOfBlending\n\ +off_8056430: .4byte gBerryBlenderData\n\ +off_8056434: .4byte gLinkPlayers\n\ +dword_8056438: .4byte gOtherText_Berry\n\ +off_805643C: .4byte gLinkPlayers+0x8\n\ +dword_8056440: .4byte gUnknown_082165E9\n\ +dword_8056444: .4byte gUnknown_082165EE\n\ +dword_8056448: .4byte gOtherText_MaxSpeed\n\ +off_805644C: .4byte gOtherText_RPM\n\ +dword_8056450: .4byte gOtherText_RequiredTime\n\ +dword_8056454: .4byte gOtherText_Min\n\ +dword_8056458: .4byte gOtherText_Sec\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_805645C: @ jumptable 0805619A case 4\n\ + LDR R0, off_805646C\n\ + LDRH R1, [R0,#0x2E]\n\ + MOVS R0, #1\n\ + ANDS R0, R1\n\ + CMP R0, #0\n\ + BEQ def_805619A @ jumptable 0805619A default case\n\ + LDR R1, [R2]\n\ + B loc_8056520\n\ +@ ---------------------------------------------------------------------------\n\ +off_805646C: .4byte gMain\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056470: @ jumptable 0805619A case 5\n\ + BL Menu_EraseScreen\n\ + MOVS R0, #0\n\ + MOVS R1, #0xE\n\ + MOVS R2, #0x1D\n\ + MOVS R3, #0x13\n\ + BL Menu_DrawStdWindowFrame\n\ + MOVS R6, #0\n\ + ADD R1, SP, #0xC\n\ + MOV R8, R1\n\ + ADD R5, SP, #0x28\n\ + LDR R0, off_8056528\n\ + LDR R0, [R0]\n\ + ADDS R3, R0, #0\n\ + ADDS R3, #0x80\n\ + ADD R2, SP, #0x20\n\ +\n\ +loc_8056492:\n\ + LSLS R1, R6, #1\n\ + ADDS R0, R3, R1\n\ + LDRH R0, [R0]\n\ + CMP R0, #0\n\ + BEQ loc_80564A2\n\ + ADDS R1, R2, R1\n\ + SUBS R0, #0x85\n\ + STRH R0, [R1]\n\ +\n\ +loc_80564A2:\n\ + ADDS R0, R6, #1\n\ + LSLS R0, R0, #0x10\n\ + LSRS R6, R0, #0x10\n\ + CMP R6, #3\n\ + BLS loc_8056492\n\ + BL sub_8050760\n\ + LDR R4, off_8056528\n\ + LDR R3, [R4]\n\ + MOVS R2, #0xBE\n\ + LSLS R2, R2, #1\n\ + ADDS R0, R3, R2\n\ + ADDS R1, R3, #0\n\ + ADDS R1, #0x88\n\ + LDRB R2, [R1]\n\ + SUBS R1, #0x2E\n\ + LDRH R1, [R1]\n\ + STR R1, [SP]\n\ + ADDS R1, R5, #0\n\ + ADD R3, SP, #4\n\ + BL Blender_CalculatePokeblock\n\ + LDR R1, [R4]\n\ + ADDS R1, #0xAB\n\ + ADDS R0, R5, #0\n\ + BL Blender_PrintMadePokeblockString\n\ + LDR R0, off_805652C\n\ + MOVS R1, #6\n\ + BL CreateTask\n\ + BL sub_8007E40\n\ + ADDS R1, R0, #0\n\ + MOV R0, R8\n\ + MOVS R2, #0\n\ + MOVS R3, #4\n\ + BL ConvertIntToHexStringN\n\ + LDR R1, dword_8056530\n\ + MOV R0, R8\n\ + BL StringAppend\n\ + LDR R0, [R4]\n\ + ADDS R0, #0xAB\n\ + MOV R1, R8\n\ + BL StringAppend\n\ + LDR R0, [R4]\n\ + ADDS R0, #0xAB\n\ + MOVS R1, #1\n\ + MOVS R2, #0xF\n\ + BL MenuPrintMessage\n\ + LDR R0, off_8056534\n\ + LDRH R0, [R0]\n\ + MOVS R1, #1\n\ + BL RemoveBagItem\n\ + ADDS R0, R5, #0\n\ + BL sub_810CA34\n\ + LDR R1, [R4]\n\ +\n\ +loc_8056520:\n\ + LDRB R0, [R1]\n\ + ADDS R0, #1\n\ + STRB R0, [R1]\n\ + B def_805619A @ jumptable 0805619A default case\n\ +@ ---------------------------------------------------------------------------\n\ +off_8056528: .4byte gBerryBlenderData\n\ +off_805652C: .4byte sub_8052BD0+1\n\ +dword_8056530: .4byte gUnknown_08216249\n\ +off_8056534: .4byte gSpecialVar_ItemId\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +loc_8056538: @ jumptable 0805619A case 6\n\ + BL Menu_UpdateWindowText\n\ + LSLS R0, R0, #0x18\n\ + CMP R0, #0\n\ + BEQ def_805619A @ jumptable 0805619A default case\n\ + BL Blender_TrySettingRecord\n\ + MOVS R0, #1\n\ + B loc_805654C\n\ +@ ---------------------------------------------------------------------------\n\ +\n\ +def_805619A: @ jumptable 0805619A default case\n\ + MOVS R0, #0\n\ +\n\ +loc_805654C:\n\ + ADD SP, SP, #0x34\n\ + POP {R3-R5}\n\ + MOV R8, R3\n\ + MOV R9, R4\n\ + MOV R10, R5\n\ + POP {R4-R7}\n\ + POP {R1}\n\ + BX R1\n\ + .syntax divided\n"); } #else static bool8 Blender_PrintBlendingResults(void) -- cgit v1.2.3 From 765b2ffe3f7f49e49cc416a930a6e60ee265ce14 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 20:38:05 -0500 Subject: sub_80C8E1C --- src/battle/contest_link_80C857C.c | 68 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 84695fb37..f505fa658 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -606,6 +606,74 @@ void sub_80C8C80(u8 taskId) } } +void sub_80C8E1C(u8 taskId) +{ + int i; + + switch (gTasks[taskId].data[0]) + { +#if ENGLISH + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; +#elif GERMAN + case 8: +#endif + case 0: + gBlockSendBuffer[0] = 0x64; + if (GetMultiplayerId() == 0) + { + if (sub_8007ECC()) + { +#if GERMAN + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].data[0] = 3; + } + else + { + de_sub_80C9274(FALSE); +#endif + sub_8007E9C(2); +#if ENGLISH + gTasks[taskId].data[0]++; +#else + gTasks[taskId].data[0] = 1; + } +#endif + } + } + else + { +#if GERMAN + de_sub_80C9294(FALSE); +#endif + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + gTasks[taskId].data[5 + i] = gBlockRecvBuffer[i][0]; + } + gTasks[taskId].data[0]++; + } + break; +#if GERMAN + case 2: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + default: + gTasks[taskId].data[0]++; + break; +#endif + } +} + asm(".section .text_de"); #if GERMAN -- cgit v1.2.3 From c723b341c50df19f8951353a7efd4ab83bf56833 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 20:52:41 -0500 Subject: through sub_80C8F34 --- src/battle/contest_link_80C857C.c | 60 +++++++++++++++++++++++++++++++++++---- src/contest_ai.c | 1 - src/debug/matsuda_debug_menu.c | 1 - src/script_pokemon_util_80C4BF0.c | 1 - 4 files changed, 54 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index f505fa658..e85350aea 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -228,11 +228,11 @@ void sub_80C8734(u8 taskId) de_sub_80C9274(FALSE); #endif sub_8007E9C(2); -#if GERMAN - gTasks[taskId].data[0] = 1; - } -#else +#if ENGLISH gTasks[taskId].data[0]++; +#elif GERMAN + gTasks[taskId].data[0] = 1; + } #endif } } @@ -638,7 +638,7 @@ void sub_80C8E1C(u8 taskId) sub_8007E9C(2); #if ENGLISH gTasks[taskId].data[0]++; -#else +#elif GERMAN gTasks[taskId].data[0] = 1; } #endif @@ -674,7 +674,55 @@ void sub_80C8E1C(u8 taskId) } } -asm(".section .text_de"); +void sub_80C8EBC(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 0: + if (sub_8007ECC()) + { + sub_80C857C(gUnknown_02038670, sizeof gUnknown_02038670); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + memcpy(gUnknown_02038670, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038670); + gTasks[taskId].data[0]++; + } + break; + } +} + +void sub_80C8F34(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + default: + gTasks[taskId].data[0] = 0; + SwitchTaskToFollowupFunc(taskId); + break; + case 0: + if (sub_8007ECC()) + { + sub_80C857C(gUnknown_02038696, sizeof gUnknown_02038696); + gTasks[taskId].data[0]++; + } + break; + case 1: + if (sub_80C85D8()) + { + memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696); + gTasks[taskId].data[0]++; + } + break; + } +} #if GERMAN diff --git a/src/contest_ai.c b/src/contest_ai.c index 66b387270..1e249083b 100644 --- a/src/contest_ai.c +++ b/src/contest_ai.c @@ -8,7 +8,6 @@ extern u8 AreMovesContestCombo(u16, u16); extern bool8 sub_80B214C(u8); extern bool8 Contest_IsMonsTurnDisabled(u8); -extern s16 gUnknown_02038670[]; extern u16 gSpecialVar_ContestCategory; extern u8 *gAIScriptPtr; diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 15d28df09..efd952ef7 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -18,7 +18,6 @@ #include "ewram.h" extern u8 gUnknown_0203856C; -extern s16 gUnknown_02038670[]; extern u8 gUnknown_02038694; extern u16 gSpecialVar_ContestCategory; extern u16 gSpecialVar_ContestRank; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 513f6ce2a..02e66d313 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -39,7 +39,6 @@ extern u16 gSpecialVar_ContestRank; extern u8 gUnknown_02038694; extern u8 gUnknown_0203856C; -extern s16 gUnknown_02038670[]; void SetContestTrainerGfxIds(void) { -- cgit v1.2.3 From cc0d7a675d5fc85adac3bd94387c54e0eb507495 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 Jan 2018 21:01:33 -0500 Subject: Rename some static functions --- src/battle/battle_2.c | 16 +++--- src/battle/contest_link_80C857C.c | 104 +++++++++++++++++++------------------- src/engine/link.c | 9 +--- src/engine/trade.c | 16 +++--- src/field/field_fadetransition.c | 2 +- src/rom3.c | 2 +- src/scene/berry_blender.c | 16 +++--- 7 files changed, 80 insertions(+), 85 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index b00c35312..2ad2adb04 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -396,7 +396,7 @@ void sub_800EC9C(void) case 0: if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) { gBattleStruct->unk0 = 1; gBattleStruct->unk1 = 1; @@ -464,7 +464,7 @@ void sub_800EC9C(void) } break; case 2: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(*gPlayerParty) * 2); gBattleCommunication[0]++; @@ -479,7 +479,7 @@ void sub_800EC9C(void) } break; case 4: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(*gPlayerParty) * 2); gBattleCommunication[0]++; @@ -494,7 +494,7 @@ void sub_800EC9C(void) } break; case 6: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(*gPlayerParty) * 2); gBattleCommunication[0]++; @@ -579,7 +579,7 @@ void sub_800F104(void) switch (gBattleCommunication[0]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) { sub_800F02C(); SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60); @@ -639,7 +639,7 @@ void sub_800F298(void) switch (gBattleCommunication[0]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished()) { gBattleStruct->unk0 = 1; gBattleStruct->unk1 = 1; @@ -732,7 +732,7 @@ void sub_800F298(void) break; case 2: step_2: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2); gBattleCommunication[0]++; @@ -795,7 +795,7 @@ void sub_800F298(void) } break; case 4: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon)); gBattleCommunication[0]++; diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index e85350aea..01088bf53 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -10,17 +10,17 @@ static void sub_80C8644(u8 taskId); static void sub_80C8660(u8 taskId); #if GERMAN -void de_sub_80C9274(bool32 arg0); -void de_sub_80C9294(bool32 arg0); +static void de_sub_80C9274(bool32 arg0); +static void de_sub_80C9294(bool32 arg0); #endif -void sub_80C857C(const void *data, u16 size) +static void SendBlockToAllOpponents(const void *data, u16 size) { memcpy(eContestLinkSendBuffer, data, size); SendBlock(bitmask_all_link_players_but_self(), eContestLinkSendBuffer, size); } -bool8 sub_80C85AC(u8 who) +static bool8 HasPlayerReceivedBlock(u8 who) { u8 flag = 1 << who; if (!(GetBlockReceivedStatus() & flag)) @@ -29,7 +29,7 @@ bool8 sub_80C85AC(u8 who) return TRUE; } -bool8 sub_80C85D8(void) +static bool8 HaveAllPlayersReceivedBlock(void) { int i; @@ -214,7 +214,7 @@ void sub_80C8734(u8 taskId) #endif case 0: if (GetMultiplayerId() == 0) { - if (sub_8007ECC()) { + if (IsLinkTaskFinished()) { #if GERMAN if (gTasks[taskId].data[0] == 0) { @@ -246,7 +246,7 @@ void sub_80C8734(u8 taskId) } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { for (i = 0; i < MAX_LINK_PLAYERS; i++) { @@ -308,9 +308,9 @@ void sub_80C88AC(u8 taskId) case 0: if (GetMultiplayerId() == 0) { - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(&gRngValue, sizeof(u32)); + SendBlockToAllOpponents(&gRngValue, sizeof(u32)); gTasks[taskId].data[0]++; } } @@ -320,7 +320,7 @@ void sub_80C88AC(u8 taskId) } break; case 1: - if (sub_80C85AC(0)) + if (HasPlayerReceivedBlock(0)) { memcpy(&gRngValue, gBlockRecvBuffer[0], sizeof(u32)); memcpy(&gContestRngValue, gBlockRecvBuffer[0], sizeof(u32)); @@ -348,7 +348,7 @@ void sub_80C8938(u8 taskId) gBlockSendBuffer[0] = gTasks[taskId].data[9]; if (GetMultiplayerId() == 0) { - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { #if GERMAN if (gTasks[taskId].data[0] == 0) @@ -377,7 +377,7 @@ void sub_80C8938(u8 taskId) } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { for (i = 0; i < MAX_LINK_PLAYERS; i++) { @@ -407,14 +407,14 @@ void sub_80C89DC(u8 taskId) SwitchTaskToFollowupFunc(taskId); break; case 0: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(&gContestPlayerMonIndex, sizeof(u8)); + SendBlockToAllOpponents(&gContestPlayerMonIndex, sizeof(u8)); gTasks[taskId].data[0]++; } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { gTasks[taskId].data[0]++; } @@ -433,14 +433,14 @@ void sub_80C8A38(u8 taskId) SwitchTaskToFollowupFunc(taskId); break; case 0: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(&sContestantStatus[gContestPlayerMonIndex].currMove, sizeof(u16)); + SendBlockToAllOpponents(&sContestantStatus[gContestPlayerMonIndex].currMove, sizeof(u16)); gTasks[taskId].data[0]++; } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { for (i = 0; i < MAX_LINK_PLAYERS; i++) { @@ -457,14 +457,14 @@ void sub_80C8AD0(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gUnknown_02038678, sizeof gUnknown_02038678); + SendBlockToAllOpponents(gUnknown_02038678, sizeof gUnknown_02038678); gTasks[taskId].data[0]++; } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gUnknown_02038678, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038678); gTasks[taskId].data[0]++; @@ -481,42 +481,42 @@ void sub_80C8AD0(u8 taskId) } break; case 3: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gUnknown_02038680, sizeof gUnknown_02038680); + SendBlockToAllOpponents(gUnknown_02038680, sizeof gUnknown_02038680); gTasks[taskId].data[0]++; } break; case 4: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gUnknown_02038680, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038680); gTasks[taskId].data[0]++; } break; case 6: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gUnknown_02038688, sizeof gUnknown_02038688); + SendBlockToAllOpponents(gUnknown_02038688, sizeof gUnknown_02038688); gTasks[taskId].data[0]++; } break; case 7: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gUnknown_02038688, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038688); gTasks[taskId].data[0]++; } break; case 9: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gContestFinalStandings, sizeof gContestFinalStandings); + SendBlockToAllOpponents(gContestFinalStandings, sizeof gContestFinalStandings); gTasks[taskId].data[0]++; } break; case 10: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gContestFinalStandings, gBlockRecvBuffer[gUnknown_0203869B], sizeof gContestFinalStandings); gTasks[taskId].data[0]++; @@ -534,14 +534,14 @@ void sub_80C8C80(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(sContestantStatus, 4 * sizeof(struct ContestantStatus)); + SendBlockToAllOpponents(sContestantStatus, 4 * sizeof(struct ContestantStatus)); gTasks[taskId].data[0]++; } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(sContestantStatus, gBlockRecvBuffer[gUnknown_0203869B], 4 * sizeof(struct ContestantStatus)); gTasks[taskId].data[0]++; @@ -558,42 +558,42 @@ void sub_80C8C80(u8 taskId) } break; case 3: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(&shared192D0, sizeof shared192D0); + SendBlockToAllOpponents(&shared192D0, sizeof shared192D0); gTasks[taskId].data[0]++; } break; case 4: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(&shared192D0, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared192D0); gTasks[taskId].data[0]++; } break; case 6: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(&shared19328, sizeof shared19328); + SendBlockToAllOpponents(&shared19328, sizeof shared19328); gTasks[taskId].data[0]++; } break; case 7: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(&shared19328, gBlockRecvBuffer[gUnknown_0203869B], sizeof shared19328); gTasks[taskId].data[0]++; } break; case 9: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gUnknown_02038696, sizeof gUnknown_02038696); + SendBlockToAllOpponents(gUnknown_02038696, sizeof gUnknown_02038696); gTasks[taskId].data[0]++; } break; case 10: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696); gTasks[taskId].data[0]++; @@ -624,7 +624,7 @@ void sub_80C8E1C(u8 taskId) gBlockSendBuffer[0] = 0x64; if (GetMultiplayerId() == 0) { - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { #if GERMAN if (gTasks[taskId].data[0] == 0) @@ -653,7 +653,7 @@ void sub_80C8E1C(u8 taskId) } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { for (i = 0; i < MAX_LINK_PLAYERS; i++) { @@ -683,14 +683,14 @@ void sub_80C8EBC(u8 taskId) SwitchTaskToFollowupFunc(taskId); break; case 0: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gUnknown_02038670, sizeof gUnknown_02038670); + SendBlockToAllOpponents(gUnknown_02038670, sizeof gUnknown_02038670); gTasks[taskId].data[0]++; } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gUnknown_02038670, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038670); gTasks[taskId].data[0]++; @@ -708,14 +708,14 @@ void sub_80C8F34(u8 taskId) SwitchTaskToFollowupFunc(taskId); break; case 0: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { - sub_80C857C(gUnknown_02038696, sizeof gUnknown_02038696); + SendBlockToAllOpponents(gUnknown_02038696, sizeof gUnknown_02038696); gTasks[taskId].data[0]++; } break; case 1: - if (sub_80C85D8()) + if (HaveAllPlayersReceivedBlock()) { memcpy(gUnknown_02038696, gBlockRecvBuffer[gUnknown_0203869B], sizeof gUnknown_02038696); gTasks[taskId].data[0]++; @@ -726,7 +726,7 @@ void sub_80C8F34(u8 taskId) #if GERMAN -void de_sub_80C9274(bool32 arg0) +static void de_sub_80C9274(bool32 arg0) { if (deUnkValue2 == 1) { @@ -737,7 +737,7 @@ void de_sub_80C9274(bool32 arg0) } } -void de_sub_80C9294(bool32 arg0) +static void de_sub_80C9294(bool32 arg0) { if (deUnkValue2 == 1) { diff --git a/src/engine/link.c b/src/engine/link.c index ec94295d7..33037b817 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -898,14 +898,9 @@ bool8 sub_8007E9C(u8 a1) } } -bool8 sub_8007ECC(void) +bool8 IsLinkTaskFinished(void) { - u8 retVal = FALSE; - - if (!gLinkCallback) - retVal = TRUE; - - return retVal; + return gLinkCallback == NULL; } u8 GetBlockReceivedStatus(void) diff --git a/src/engine/trade.c b/src/engine/trade.c index 4dc27ea6f..4bd39c4ef 100644 --- a/src/engine/trade.c +++ b/src/engine/trade.c @@ -1711,7 +1711,7 @@ static bool8 sub_8048D44(void) gUnknown_03004824->unk_0075 ++; break; case 1: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { if (GetBlockReceivedStatus() == 0) { @@ -2210,7 +2210,7 @@ static void sub_8049A20(void) { sub_804AADC(3, 1); gUnknown_03004824->linkData[0] = 0xbbbb; - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { Trade_SendData(gUnknown_03004824); } @@ -2239,7 +2239,7 @@ static void sub_8049AC0(void) else { sub_804AADC(3, 1); - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { gUnknown_03004824->linkData[0] = 0xbbcc; Trade_SendData(gUnknown_03004824); @@ -4632,7 +4632,7 @@ static void sub_804BB78(void) switch (gUnknown_03004828->unk_00bd) { case 1: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { Trade_SendData(gUnknown_03004828); gUnknown_03004828->unk_00bd ++; @@ -5534,13 +5534,13 @@ static void sub_804DC88(void) gMain.state = 101; gUnknown_03004828->unk_00c0 = 0; } - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { gMain.state = 2; } break; case 101: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { gMain.state = 2; } @@ -5592,7 +5592,7 @@ static void sub_804DC88(void) gMain.state = 42; break; case 42: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { sub_8125E04(); gSoftResetDisabled = FALSE; @@ -5607,7 +5607,7 @@ static void sub_804DC88(void) } break; case 6: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); gMain.state ++; diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c index ad1cd4a59..d68be3b36 100644 --- a/src/field/field_fadetransition.c +++ b/src/field/field_fadetransition.c @@ -146,7 +146,7 @@ void sub_8080A5C(u8 taskId) task->data[0]++; break; case 1: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { pal_fill_for_map_transition(); task->data[0]++; diff --git a/src/rom3.c b/src/rom3.c index 713713162..000de8356 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -463,7 +463,7 @@ void sub_800C1A8(u8 taskId) } break; case 4: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { var = (ewram14004arr(0, gTasks[taskId].data[15]) | (ewram14004arr(1, gTasks[taskId].data[15]) << 8)); gTasks[taskId].data[13] = 1; diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 7567899ae..2cb68ccf1 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -1163,7 +1163,7 @@ static void sub_804E9F8(void) gBerryBlenderData->framesToWait = 0; break; case 9: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { ResetBlockReceivedFlags(); if (GetMultiplayerId() == 0) @@ -1215,7 +1215,7 @@ static void sub_804E9F8(void) } break; case 13: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { gBerryBlenderData->field_0++; sub_8051414(&gBerryBlenderData->field_168); @@ -1257,7 +1257,7 @@ static void sub_804E9F8(void) gBerryBlenderData->field_0++; break; case 20: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { sub_8007E24(); gBerryBlenderData->field_0++; @@ -2506,7 +2506,7 @@ static void sub_8050954(void) case 3: if (/*multiplayerID != 0*/ GetMultiplayerId() != 0) gBerryBlenderData->field_6F++; - else if (sub_8007ECC()) + else if (IsLinkTaskFinished()) { gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime; gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM; @@ -2646,7 +2646,7 @@ bool8 sub_8050CE8(void) gBerryBlenderData->framesToWait = 0; break; case 1: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { gBerryBlenderData->field_1C4++; gSoftResetDisabled = TRUE; @@ -2665,7 +2665,7 @@ bool8 sub_8050CE8(void) } break; case 4: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { if (sub_8125E6C()) gBerryBlenderData->field_1C4 = 5; @@ -2752,7 +2752,7 @@ static void sub_8050E30(void) gBerryBlenderData->field_6F++; break; case 6: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { gBerryBlenderData->framesToWait = 0; gBerryBlenderData->field_6F++; @@ -2771,7 +2771,7 @@ static void sub_8050E30(void) sub_80084A4(); break; case 9: - if (sub_8007ECC()) + if (IsLinkTaskFinished()) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gBerryBlenderData->field_6F++; -- cgit v1.2.3 From 1685a7977a652f35998a717395407d625878e20e Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Mon, 22 Jan 2018 21:42:14 -0600 Subject: dump some debug baseroms --- src/battle/battle_2.c | 4 ++-- src/debug/watanabe_debug_menu.c | 4 ++-- src/field/pokeblock.c | 25 ++++++++++++++++--------- 3 files changed, 20 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 03391cf92..478499ad7 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -5155,7 +5155,7 @@ void debug_sub_801174C() "._704:\n" " .word gUnknown_020297ED\n" " .word gSaveBlock2\n" - " .word UnkDebug0+0x279\n" + " .word str_821F631\n" " .word gUnknown_02023A14+0x52\n" " .word gBattleTypeFlags\n" " .word UnkDebug0+0x1e0\n" @@ -5575,7 +5575,7 @@ void debug_sub_801174C() "._750:\n" " .word gPlayerParty\n" " .word gUnknown_02023A14+0x98\n" - " .word UnkDebug0+0x291\n" + " .word Str_821F649\n" " .word gUnknown_02023A14+0x50\n" " .word gUnknown_02023A14+0xde\n" " .word gEnemyParty\n" diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index ff6f97933..58ae28510 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -7068,7 +7068,7 @@ void InitSeePokemonGraphics() " .word unk_debug_ewram_0+0x34\n" " .word +0x2018000\n" " .word 0x115\n" - " .word unk_83F8868+0xc\n" + " .word gSpriteTemplate_83F8874\n" " .word gSprites\n" "\n" ); @@ -8641,7 +8641,7 @@ void InitSeeTrainers() " .word debug_80C777C+1\n" " .word unk_debug_ewram_0+0x34\n" " .word +0x2018000\n" - " .word unk_83F8868+0xc\n" + " .word gSpriteTemplate_83F8874\n" " .word gSprites\n" "\n" ); diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 43684dfec..b4be44aa2 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -222,17 +222,24 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = const struct Pokeblock gUnknown_083F7F9C[] = { - { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20}, - { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20}, - { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20}, - { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20}, - { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20} -}; - + { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20 }, + { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20 }, + { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20 }, + { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20 }, + { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20 }, #if DEBUG -// possibly continuation of gUnknown_083F7F9C? -asm(".incbin \"baserom_de_debug.gba\", 0x424128, 0x50"); + { PBLOCK_CLR_PURPLE, 20, 0, 20, 0, 0, 20 }, + { PBLOCK_CLR_INDIGO, 0, 20, 0, 20, 0, 20 }, + { PBLOCK_CLR_BROWN, 0, 0, 20, 0, 20, 20 }, + { PBLOCK_CLR_LITEBLUE, 20, 0, 0, 20, 0, 20 }, + { PBLOCK_CLR_OLIVE, 0, 20, 0, 0, 20, 20 }, + { PBLOCK_CLR_GRAY, 0, 2, 0, 2, 2, 0 }, + { PBLOCK_CLR_BLACK, 3, 3, 3, 4, 3, 0 }, + { PBLOCK_CLR_WHITE, 1, 1, 1, 1, 1, 1 }, + { PBLOCK_CLR_GOLD, 20, 0, 0, 0, 0, 20 }, + { 0 }, #endif +}; // text -- cgit v1.2.3 From 0f09d2e7046a54c95e2ed4a7ff759d4cd1db87f7 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Mon, 22 Jan 2018 22:35:27 -0600 Subject: fix false gMysteryEventScriptCmdTableEnd offsets --- src/battle/battle_2.c | 78 +++++++++++++++++------------------ src/battle/battle_4.c | 2 +- src/battle/battle_controller_player.c | 2 +- src/battle/battle_interface.c | 6 +-- src/battle/battle_util.c | 12 +++--- src/contest.c | 4 +- src/debug/start_menu_debug.c | 28 ++++++------- src/debug/unk_debug_menu_3.c | 38 ++++++++--------- src/engine/mystery_event_menu.c | 2 +- src/engine/save.c | 4 +- src/engine/save_failed_screen.c | 2 +- src/field/choose_party.c | 2 +- src/field/field_player_avatar.c | 4 +- src/field/party_menu.c | 2 +- src/field/secret_base.c | 6 +-- src/pokemon/pokemon_1.c | 12 +++--- src/pokemon/pokemon_summary_screen.c | 4 +- src/roulette.c | 44 ++++++++++---------- src/scene/cute_sketch.c | 4 +- 19 files changed, 128 insertions(+), 128 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 478499ad7..41d00546d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -220,7 +220,7 @@ void InitBattle(void) " lsl r1, r1, #0x13\n" " ldr r2, ._10\n" " mov r0, sp\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " ldr r0, ._10 + 4\n" " strh r4, [r0]\n" " sub r0, r0, #0xc\n" @@ -907,7 +907,7 @@ void sub_800EC9C() " ldr r2, ._116 + 4\n" " add r1, r1, r2\n" " mov r2, #0xc8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " b ._129\n" "._117:\n" " .align 2, 0\n" @@ -946,7 +946,7 @@ void sub_800EC9C() " ldr r2, ._126 + 4\n" " add r1, r1, r2\n" " mov r2, #0xc8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " b ._129\n" "._127:\n" " .align 2, 0\n" @@ -982,7 +982,7 @@ void sub_800EC9C() " add r1, r1, r0\n" " add r0, r4, #0\n" " mov r2, #0xc8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " ldr r1, ._134 + 8\n" " add r0, r4, r1\n" " bl shedinja_something\n" @@ -1407,7 +1407,7 @@ void sub_800F104() " add r1, r1, r0\n" " ldr r0, ._177 + 4\n" " mov r2, #0x60\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" "._174:\n" " add r7, r7, #0x1c\n" " add r4, r4, #0x1\n" @@ -1781,7 +1781,7 @@ void sub_800F298() " ldr r1, ._239 + 4\n" " mov r2, #0x96\n" " lsl r2, r2, #0x1\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " ldr r0, ._239 + 8\n" " mov r1, #0x0\n" " bl CreateTask\n" @@ -2018,7 +2018,7 @@ void sub_800F298() "._283:\n" " add r1, r5, #0\n" " mov r2, #0xc8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " b ._291\n" "._293:\n" " .align 2, 0\n" @@ -2028,7 +2028,7 @@ void sub_800F298() " ldr r0, ._296\n" " add r1, r5, #0\n" " mov r2, #0xc8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" "._291:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -2185,7 +2185,7 @@ void sub_800F298() "._333:\n" " add r1, r5, #0\n" " mov r2, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " b ._341\n" "._343:\n" " .align 2, 0\n" @@ -2195,7 +2195,7 @@ void sub_800F298() " ldr r0, ._346\n" " add r1, r5, #0\n" " mov r2, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" "._341:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -2627,7 +2627,7 @@ void BattleMainCB2(void) " str r0, [r4]\n" " bl ZeroEnemyPartyMons\n" " mov r0, #0x5a\n" - " bl gMysteryEventScriptCmdTableEnd+0x148c\n" + " bl m4aSongNumStop\n" " ldr r0, ._358 + 24\n" " ldrh r1, [r0]\n" " mov r0, #0x2\n" @@ -3197,7 +3197,7 @@ void debug_sub_80108B8() asm( " push {r4, r5, lr}\n" " add sp, sp, #0xfffffffc\n" - " bl gMysteryEventScriptCmdTableEnd+0x19f4\n" + " bl m4aSoundVSyncOff\n" " mov r0, #0x0\n" " bl SetHBlankCallback\n" " mov r0, #0x0\n" @@ -3264,7 +3264,7 @@ void debug_sub_80108B8() " ldr r1, ._507 + 72\n" " add r0, r4, #0\n" " bl LZDecompressVram\n" - " bl gMysteryEventScriptCmdTableEnd+0x1a70\n" + " bl m4aSoundVSyncOn\n" " ldr r0, ._507 + 76\n" " bl SetVBlankCallback\n" " ldr r0, ._507 + 80\n" @@ -3860,7 +3860,7 @@ void debug_sub_8010CAC() " strb r0, [r3, #0x15]\n" " lsl r0, r0, #0x1f\n" " lsr r0, r0, #0x1f\n" - " bl gMysteryEventScriptCmdTableEnd+0x2aa0\n" + " bl SetPokemonCryStereo\n" " bl debug_nullsub_3\n" "._559:\n" " ldr r4, ._565 + 12\n" @@ -4774,7 +4774,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4830,7 +4830,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4886,7 +4886,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4929,7 +4929,7 @@ void debug_sub_8011498() " lsl r4, r5, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -4965,7 +4965,7 @@ void debug_sub_8011498() " lsl r4, r4, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -5002,7 +5002,7 @@ void debug_sub_8011498() " lsl r4, r5, #0x1\n" " mov r0, r9\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" @@ -5200,7 +5200,7 @@ void debug_sub_801174C() "._713:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" " ldr r1, ._719\n" @@ -5223,7 +5223,7 @@ void debug_sub_801174C() "._699:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r2, #0x64\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" @@ -5282,7 +5282,7 @@ void debug_sub_801174C() " str r0, [sp, #0xc]\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" " ldr r1, ._726\n" @@ -5355,7 +5355,7 @@ void debug_sub_801174C() "._735:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r2, #0x64\n" " mul r0, r0, r2\n" " ldr r1, ._741\n" @@ -5382,7 +5382,7 @@ void debug_sub_801174C() "._721:\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r2, #0x64\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" @@ -5441,7 +5441,7 @@ void debug_sub_801174C() " str r0, [sp, #0xc]\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r2, #0x64\n" " mul r0, r0, r2\n" " ldr r1, ._750\n" @@ -5460,7 +5460,7 @@ void debug_sub_801174C() " ble ._743 @cond_branch\n" " add r0, r7, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" " ldr r1, ._750\n" @@ -6483,7 +6483,7 @@ void debug_sub_8012294() " lsl r4, r4, #0x1\n" " add r0, r5, #0\n" " mov r1, #0x5\n" - " bl gMysteryEventScriptCmdTableEnd+0x4358\n" + " bl __udivsi3\n" " add r5, r0, #0\n" " lsl r5, r5, #0x18\n" " lsr r5, r5, #0x15\n" @@ -7102,7 +7102,7 @@ void debug_sub_8012688() " bl SetHBlankCallback\n" " ldr r0, ._873 + 100\n" " bl SetVBlankCallback\n" - " bl gMysteryEventScriptCmdTableEnd+0x14f4\n" + " bl m4aMPlayAllStop\n" " ldr r0, ._873 + 104\n" " mov r1, #0x0\n" " bl CreateTask\n" @@ -8484,7 +8484,7 @@ void debug_sub_8013240() { asm( " push {lr}\n" - " bl gMysteryEventScriptCmdTableEnd+0x2fec\n" + " bl IdentifyFlash\n" " lsl r0, r0, #0x10\n" " cmp r0, #0\n" " beq ._1068 @cond_branch\n" @@ -8519,7 +8519,7 @@ void debug_sub_8013258() " lsr r4, r0, #0x10\n" " add r0, r4, #0\n" " add r1, r6, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" + " bl ProgramFlashSectorAndVerify\n" " cmp r0, #0\n" " bne ._1071 @cond_branch\n" " mov r0, #0x80\n" @@ -8555,13 +8555,13 @@ void debug_sub_8013294() " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " bne ._1076 @cond_branch\n" - " bl gMysteryEventScriptCmdTableEnd+0x19f4\n" + " bl m4aSoundVSyncOff\n" " add r0, r4, #0\n" " add r1, r5, #0\n" " add r2, r6, #0\n" " bl debug_sub_8013258\n" " add r4, r0, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x1a70\n" + " bl m4aSoundVSyncOn\n" " add r0, r4, #0\n" " b ._1077\n" "._1076:\n" @@ -8591,7 +8591,7 @@ void debug_sub_80132C8() " mov r1, #0x0\n" " add r2, r5, #0\n" " add r3, r6, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2d64\n" + " bl ReadFlash\n" "._1078:\n" " pop {r4, r5, r6}\n" " pop {r0}\n" @@ -9066,7 +9066,7 @@ void debug_sub_80139E4() "._1193:\n" " ldr r0, ._1198 + 12\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " ldr r1, ._1198 + 4\n" " mov r0, #0x0\n" " strb r0, [r1]\n" @@ -9081,7 +9081,7 @@ void debug_sub_80139E4() " lsl r0, r0, #0x2\n" " add r0, r0, r5\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " ldrb r0, [r4]\n" " add r0, r0, #0x1\n" " strb r0, [r4]\n" @@ -9103,7 +9103,7 @@ void debug_sub_80139E4() "._1192:\n" " ldr r0, ._1202\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " ldr r1, ._1202 + 4\n" " strb r4, [r1]\n" " ldr r0, ._1202 + 8\n" @@ -9117,7 +9117,7 @@ void debug_sub_80139E4() " lsl r0, r0, #0x2\n" " add r0, r0, r5\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " ldrb r0, [r4]\n" " add r0, r0, #0x1\n" " strb r0, [r4]\n" @@ -9339,7 +9339,7 @@ void sub_8010874() " mov r0, #0x64\n" " mul r0, r0, r1\n" " ldr r1, ._1215 + 160\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " ldr r2, ._1215 + 164\n" " add r1, r4, r2\n" " strb r0, [r1]\n" diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 038b4f5cf..3415d9337 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -5111,7 +5111,7 @@ static void atk15_seteffectwithchance(void) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0x64\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ cmp r0, r4\n\ diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 7e3655e4a..cbca4a586 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -2234,7 +2234,7 @@ void debug_sub_803107C(void) mov r7, #0x0\n\ ldr r0, ._369\n\ ldr r0, [r0]\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + bl _call_via_r0\n\ ldr r0, ._369 + 4\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 1b6240159..b703bc7b8 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1405,7 +1405,7 @@ void sub_804454C() " add r1, r1, r0\n" " mov r0, sp\n" " ldr r2, ._150 + 36\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" @@ -1467,7 +1467,7 @@ void sub_804454C() " ldr r2, ._153 + 4\n" " add r1, r1, r2\n" " ldr r2, ._153 + 8\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " b ._163\n" "._154:\n" " .align 2, 0\n" @@ -1521,7 +1521,7 @@ void sub_804454C() " add r1, r1, r6\n" " mov r0, sp\n" " ldr r2, ._161 + 4\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index 8dae98b66..817382911 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -2407,7 +2407,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0x3\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ lsr r4, r0, #0x10\n\ cmp r4, #0\n\ @@ -3332,7 +3332,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0xa\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ cmp r0, #0\n\ beq ._1091 @cond_branch\n\ @@ -3542,7 +3542,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0x3\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ cmp r0, #0\n\ beq ._1124 @cond_branch\n\ @@ -3737,7 +3737,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0x3\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ cmp r0, #0\n\ beq ._1155 @cond_branch\n\ @@ -3932,7 +3932,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0x3\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ cmp r0, #0\n\ beq ._1186 @cond_branch\n\ @@ -4204,7 +4204,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) lsl r0, r0, #0x10\n\ lsr r0, r0, #0x10\n\ mov r1, #0x3\n\ - bl gMysteryEventScriptCmdTableEnd+0x43d0\n\ + bl __umodsi3\n\ lsl r0, r0, #0x10\n\ cmp r0, #0\n\ beq ._1232 @cond_branch\n\ diff --git a/src/contest.c b/src/contest.c index 20e202d80..834d641d0 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1392,7 +1392,7 @@ void debug_sub_80BA054() mov r0, r9\n\ mov r1, #0x0\n\ mov r2, #0x14\n\ - bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + bl memset\n\ ldr r4, ._262 + 8\n\ ldrb r0, [r4]\n\ bl sub_80B28F0\n\ @@ -1505,7 +1505,7 @@ void debug_sub_80BA054() ._241:\n\ ldr r0, ._273\n\ ldr r0, [r0]\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + bl _call_via_r0\n\ ldr r0, ._273 + 4\n\ ldrb r4, [r0]\n\ cmp r4, #0\n\ diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 572251fb4..d9f14a6b8 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -172,7 +172,7 @@ void debug_sub_8076BB4() " add r2, r2, #0x4\n" " add r0, r0, r2\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " b ._24\n" "._14:\n" " .align 2, 0\n" @@ -888,7 +888,7 @@ void DebugMenu_8077020() " lsr r4, r0, #0x18\n" " ldr r0, ._109\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " cmp r0, #0x1\n" @@ -1060,7 +1060,7 @@ void DebugMenu_807709C() " add r1, r1, #0x4\n" " add r0, r0, r1\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " b ._132\n" @@ -1187,18 +1187,18 @@ void DebugMenu_8077238() " ldr r1, ._139\n" " mov r0, sp\n" " mov r2, #0x2\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, sp, #0x4\n" " mov r9, r0\n" " ldr r1, ._139 + 4\n" " mov r2, #0x3\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r1, sp, #0x8\n" " mov sl, r1\n" " ldr r1, ._139 + 8\n" " mov r0, sl\n" " mov r2, #0x3\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " mov r2, #0x0\n" " str r2, [sp, #0x14]\n" " add r4, sp, #0x10\n" @@ -1932,7 +1932,7 @@ void DebugMenu_80776B4() " ldr r1, ._183\n" " mov r0, sp\n" " mov r2, #0x7\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " lsl r3, r4, #0x1\n" " lsl r5, r4, #0x19\n" " lsr r5, r5, #0x18\n" @@ -1975,7 +1975,7 @@ void DebugMenu_8077704() " ldr r1, ._185\n" " mov r0, sp\n" " mov r2, #0x11\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " mov r0, #0x13\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" @@ -2174,7 +2174,7 @@ void DebugMenu_807786C() " ldr r1, ._205\n" " mov r0, sp\n" " mov r2, #0x7\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " mov r0, #0x19\n" " mov r1, #0x0\n" " mov r2, #0x1d\n" @@ -2873,7 +2873,7 @@ void DebugMenu_8077C3C() " add r0, r2, #0\n" " mov r1, #0xa\n" " str r3, [sp]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r2, r0, #0\n" " ldr r3, [sp]\n" " cmp r4, r6\n" @@ -5580,7 +5580,7 @@ void DebugMenu_8078E04() " lsr r4, r0, #0x10\n" " add r0, r4, #0\n" " add r1, r6, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" + " bl ProgramFlashSectorAndVerify\n" " cmp r0, #0\n" " bne ._576 @cond_branch\n" " mov r0, #0x80\n" @@ -5613,13 +5613,13 @@ void DebugMenu_8078E40() " add r6, r2, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " bl gMysteryEventScriptCmdTableEnd+0x19f4\n" + " bl m4aSoundVSyncOff\n" " add r0, r4, #0\n" " add r1, r5, #0\n" " add r2, r6, #0\n" " bl DebugMenu_8078E04\n" " add r4, r0, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x1a70\n" + " bl m4aSoundVSyncOn\n" " add r0, r4, #0\n" " pop {r4, r5, r6}\n" " pop {r1}\n" @@ -5639,7 +5639,7 @@ void DebugMenu_8078E68() " lsr r0, r0, #0x18\n" " mov r1, #0x0\n" " add r2, r4, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2d64\n" + " bl ReadFlash\n" " pop {r4}\n" " pop {r0}\n" " bx r0\n" diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index fe2e6317e..411b32fe3 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -14,7 +14,7 @@ int debug_sub_813C404() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -42,7 +42,7 @@ int debug_sub_813C430() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -70,7 +70,7 @@ int debug_sub_813C45C() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -98,7 +98,7 @@ int debug_sub_813C488() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -124,7 +124,7 @@ int debug_sub_813C4B4() " ldr r1, ._9 + 4\n" " sub r4, r4, r1\n" " add r2, r4, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r4, #0\n" " pop {r4}\n" " pop {r1}\n" @@ -149,7 +149,7 @@ int debug_sub_813C4D4() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_81261B4\n" @@ -177,7 +177,7 @@ int debug_sub_813C500() " sub r5, r5, r4\n" " add r1, r4, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r4, #0\n" " bl unref_sub_812620C\n" @@ -212,7 +212,7 @@ void debug_sub_813C52C() " mov r0, r8\n" " add r1, r4, #0\n" " add r2, r6, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " ldr r0, ._15 + 8\n" " sub r0, r0, r4\n" " add r0, r0, r8\n" @@ -522,7 +522,7 @@ int debug_sub_813C740() " add r0, r6, #0\n" " mov r1, r8\n" " mov r2, r9\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r5, #0\n" " mov r1, #0x19\n" " mov r2, #0x5\n" @@ -569,7 +569,7 @@ int debug_sub_813C740() " sub r0, r0, r1\n" " add r1, r5, #0\n" " mov r2, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " ldr r0, ._29 + 20\n" " add r6, r6, r0\n" " mov r0, r8\n" @@ -577,7 +577,7 @@ int debug_sub_813C740() " add r0, r6, #0\n" " mov r1, sp\n" " mov r2, #0x24\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " mov r0, r9\n" " add sp, sp, #0x30\n" " pop {r3, r4, r5}\n" @@ -617,7 +617,7 @@ int debug_sub_813C810() " add r0, r6, #0\n" " add r1, r5, #0\n" " mov r2, r8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r4, #0\n" " mov r1, #0xc9\n" " mov r2, #0x15\n" @@ -631,13 +631,13 @@ int debug_sub_813C810() " sub r0, r0, r5\n" " add r1, r4, #0\n" " mov r2, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " ldr r0, ._31 + 16\n" " add r0, r6, r0\n" " sub r0, r0, r5\n" " mov r1, sp\n" " mov r2, #0x24\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r5, #0\n" " bl unref_sub_812620C\n" @@ -677,7 +677,7 @@ int debug_sub_813C888() " add r0, r6, #0\n" " add r1, r5, #0\n" " mov r2, r8\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r4, #0\n" " mov r1, #0xc9\n" " mov r2, #0x15\n" @@ -693,13 +693,13 @@ int debug_sub_813C888() " sub r0, r0, r5\n" " add r1, r4, #0\n" " mov r2, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " ldr r0, ._33 + 16\n" " add r0, r6, r0\n" " sub r0, r0, r5\n" " mov r1, sp\n" " mov r2, #0x24\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r6, #0\n" " add r1, r5, #0\n" " bl unref_sub_812620C\n" @@ -768,7 +768,7 @@ int debug_sub_813C93C() " sub r5, r5, r6\n" " add r1, r6, #0\n" " add r2, r5, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " bl SavePlayerParty\n" " bl debug_sub_813C904\n" " ldr r1, ._37 + 8\n" @@ -782,7 +782,7 @@ int debug_sub_813C93C() " add r0, r4, #0\n" " mov r1, sp\n" " mov r2, #0xbc\n" - " bl gMysteryEventScriptCmdTableEnd+0x5bc4\n" + " bl memcpy\n" " add r0, r5, #0\n" " add sp, sp, #0xbc\n" " pop {r4, r5, r6}\n" diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 656e774c5..da2973945 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -465,7 +465,7 @@ void debug_sub_815D04C() " add r1, r1, r0\n" " ldr r0, ._133 + 8\n" " ldr r1, [r1]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf8\n" + " bl _call_via_r1\n" " ldr r0, ._133 + 12\n" " add r1, r6, r0\n" " ldrb r0, [r1]\n" diff --git a/src/engine/save.c b/src/engine/save.c index d11eebaac..0eb93eb1d 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -690,7 +690,7 @@ void sub_813B79C() " strh r0, [r1]\n" " add r0, r5, #0\n" " add r1, r4, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" + " bl ProgramFlashSectorAndVerify\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" @@ -718,7 +718,7 @@ void sub_813B79C() " lsr r4, r4, #0x10\n" " add r0, r4, #0\n" " add r1, r6, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2f60\n" + " bl ProgramFlashSectorAndVerify\n" " add r0, r5, #1\n" " lsl r0, r0, #0x10\n" " lsr r5, r0, #0x10\n" diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 421cd0779..7902427e0 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -424,7 +424,7 @@ bool8 VerifySectorWipe(u16 sector) " mov r3, #0x80\n" " lsl r3, r3, #0x5\n" " mov r1, #0x0\n" - " bl gMysteryEventScriptCmdTableEnd+0x2d64\n" + " bl ReadFlash\n" " mov r0, #0x0\n" " ldr r1, ._50 + 4\n" "._49:\n" diff --git a/src/field/choose_party.c b/src/field/choose_party.c index fd5808fc3..b2d950e35 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -540,7 +540,7 @@ void debug_sub_81381B4() " add r0, r4, #0\n" " mov r1, #0x0\n" " mov r2, #0x60\n" - " bl gMysteryEventScriptCmdTableEnd+0x5c24\n" + " bl memset\n" " mov r7, #0x0\n" " mov r8, r4\n" " mov r0, #0x4\n" diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 85cfdb829..c382db19f 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -291,7 +291,7 @@ u8 TryDoMetatileBehaviorForcedMovement() " lsr r0, r0, #0x16\n" " add r0, r0, r4\n" " ldr r0, [r0]\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cf4\n" + " bl _call_via_r0\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" "._26:\n" @@ -513,7 +513,7 @@ void MovePlayerNotOnBike(u8 u81, u16 u161) " ldr r2, [r0]\n" " add r0, r5, #0\n" " add r1, r6, #0\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cfc\n" + " bl _call_via_r2\n" "._83:\n" " pop {r4, r5, r6}\n" " pop {r0}\n" diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 4fdb17786..4108145c1 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -989,7 +989,7 @@ bool8 InitPartyMenu(void) add r2, r2, #0x4\n\ add r0, r0, r2\n\ ldr r0, [r0]\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + bl _call_via_r0\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x18\n\ cmp r0, #0x1\n\ diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 082e8ebc6..01e9711dc 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1686,13 +1686,13 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) add r0, r6, r4\n\ mov r1, #0x0\n\ add r2, r5, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + bl memset\n\ add r4, r4, r5\n\ add r4, r6, r4\n\ add r0, r4, #0\n\ mov r1, #0x0\n\ add r2, r5, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + bl memset\n\ b ._505\n\ ._501:\n\ lsl r0, r5, #0x1\n\ @@ -1700,7 +1700,7 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) add r0, r6, r0\n\ mov r1, #0x0\n\ add r2, r5, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + bl memset\n\ ._505:\n\ cmp r7, #0x1\n\ beq ._506 @cond_branch\n\ diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 63f1b322a..6f187ad71 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -646,7 +646,7 @@ void debug_sub_803F55C() " ldr r4, [sp]\n" " mul r0, r0, r4\n" " mov r1, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r0, r0, r4\n" " add r0, r0, #0xa\n" " str r0, [sp, #0x4]\n" @@ -673,7 +673,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x8]\n" " add r0, r5, #0\n" @@ -705,7 +705,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r0, r0, #0x5\n" " str r0, [sp, #0xc]\n" " add r0, r5, #0\n" @@ -737,7 +737,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x10]\n" " add r0, r5, #0\n" @@ -769,7 +769,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x14]\n" " add r0, r5, #0\n" @@ -801,7 +801,7 @@ void debug_sub_803F55C() " ldr r1, [sp]\n" " mul r0, r0, r1\n" " mov r1, #0x64\n" - " bl gMysteryEventScriptCmdTableEnd+0x3d30\n" + " bl __divsi3\n" " add r0, r0, #0x5\n" " str r0, [sp, #0x18]\n" " add r0, r5, #0\n" diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 29973fd99..f1bded592 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -1042,7 +1042,7 @@ bool8 sub_809DA84(void) lsl r1, r1, #0x2\n\ add r1, r1, r0\n\ ldr r0, [r1]\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cf4\n\ + bl _call_via_r0\n\ ._132:\n\ ldr r1, ._134 + 8\n\ ldr r2, ._134 + 12\n\ @@ -1071,7 +1071,7 @@ bool8 sub_809DA84(void) add r1, r1, r2\n\ add r0, r0, #0x10\n\ ldr r1, [r1]\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cf8\n\ + bl _call_via_r1\n\ ldr r1, ._140 + 8\n\ ldr r2, ._140 + 12\n\ add r1, r1, r2\n\ diff --git a/src/roulette.c b/src/roulette.c index e01f085a2..5a8d35647 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -646,10 +646,10 @@ void sub_8115384(void) ldr r0, ._47 + 16\n\ mov r1, #0xc0\n\ lsl r1, r1, #0x13\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\ + bl LZ77UnCompVram\n\ ldr r0, ._47 + 20\n\ ldr r1, ._47 + 24\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\ + bl LZ77UnCompVram\n\ ldr r1, ._47 + 28\n\ ldr r3, ._47 + 32\n\ add r1, r1, r3\n\ @@ -706,10 +706,10 @@ void sub_8115384(void) bl ClearBGTilemapBuffers\n\ ldr r0, ._56\n\ ldr r1, ._56 + 4\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cbc\n\ + bl LZ77UnCompWram\n\ ldr r0, ._56 + 8\n\ ldr r1, ._56 + 12\n\ - bl gMysteryEventScriptCmdTableEnd+0x3cb8\n\ + bl LZ77UnCompVram\n\ ldr r1, ._56 + 16\n\ ldr r3, ._56 + 20\n\ add r1, r1, r3\n\ @@ -1051,11 +1051,11 @@ void sub_8115634(u8 unused) ldr r1, ._75 + 16\n\ str r1, [r0]\n\ ldr r0, ._75 + 20\n\ - bl gMysteryEventScriptCmdTableEnd+0x1c08\n\ + bl m4aMPlayStop\n\ ldr r0, ._75 + 24\n\ - bl gMysteryEventScriptCmdTableEnd+0x1c08\n\ + bl m4aMPlayStop\n\ ldr r0, ._75 + 28\n\ - bl gMysteryEventScriptCmdTableEnd+0x1c08\n\ + bl m4aMPlayStop\n\ ._74:\n\ pop {r4, r5, r6}\n\ pop {r0}\n\ @@ -2034,7 +2034,7 @@ void sub_8116B40(u8 taskid) // end roulette ? mov r2, #0xbe\n\ lsl r2, r2, #0x1\n\ mov r1, #0x0\n\ - bl gMysteryEventScriptCmdTableEnd+0x5c24\n\ + bl memset\n\ ldr r1, ._381 + 4\n\ ldr r0, ._381 + 8\n\ mov r4, #0x0\n\ @@ -4473,7 +4473,7 @@ void debug_sub_812E698() add r0, r7, #0\n\ bl sub_81186B8\n\ mov r0, #0x38\n\ - bl gMysteryEventScriptCmdTableEnd+0x13c0\n\ + bl m4aSongNumStart\n\ bl Random\n\ mov r1, #0x1\n\ and r1, r1, r0\n\ @@ -4489,7 +4489,7 @@ void debug_sub_812E698() ldrb r0, [r0]\n\ add r0, r0, #0x1\n\ mov r1, #0xc\n\ - bl gMysteryEventScriptCmdTableEnd+0x3e40\n\ + bl __modsi3\n\ add r1, r4, #0\n\ add r1, r1, #0x7f\n\ strb r0, [r1]\n\ @@ -4515,7 +4515,7 @@ void debug_sub_812E698() add r0, r0, r1\n\ ldr r1, [r0]\n\ add r0, r1, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x54dc\n\ + bl __addsf3\n\ str r0, [r5]\n\ add r0, r6, #0\n\ add r0, r0, #0x7e\n\ @@ -4845,7 +4845,7 @@ void sub_8118F8C(struct Sprite *sprite) mov r8, r0\n\ ldr r0, [r0]\n\ ldr r1, ._868 + 4\n\ - bl gMysteryEventScriptCmdTableEnd+0x5928\n\ + bl __gtsf2\n\ cmp r0, #0\n\ bgt ._874 @cond_branch\n\ add r0, r6, #0\n\ @@ -4868,26 +4868,26 @@ void sub_8118F8C(struct Sprite *sprite) mov r4, #0x3\n\ ldsb r4, [r0, r4]\n\ add r0, r4, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x5a48\n\ + bl __floatsisf\n\ add r5, r0, #0\n\ cmp r4, #0\n\ bge ._865 @cond_branch\n\ ldr r1, ._868 + 16\n\ - bl gMysteryEventScriptCmdTableEnd+0x54dc\n\ + bl __addsf3\n\ add r5, r0, #0\n\ ._865:\n\ lsr r0, r7, #0x19\n\ add r0, r0, r9\n\ ldrb r0, [r0, #0x4]\n\ add r0, r0, #0x1\n\ - bl gMysteryEventScriptCmdTableEnd+0x5a48\n\ + bl __floatsisf\n\ add r1, r0, #0\n\ add r0, r5, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x56a0\n\ + bl __divsf3\n\ add r1, r0, #0\n\ mov r2, r8\n\ ldr r0, [r2]\n\ - bl gMysteryEventScriptCmdTableEnd+0x5508\n\ + bl __subsf3\n\ mov r1, r8\n\ str r0, [r1]\n\ mov r0, #0x4\n\ @@ -4923,13 +4923,13 @@ void sub_8118F8C(struct Sprite *sprite) ldr r0, [r6]\n\ ldr r4, ._875\n\ add r1, r4, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x58e0\n\ + bl __nesf2\n\ cmp r0, #0\n\ beq ._874 @cond_branch\n\ mov r2, r8\n\ ldr r0, [r2]\n\ add r1, r4, #0\n\ - bl gMysteryEventScriptCmdTableEnd+0x59b8\n\ + bl __ltsf2\n\ cmp r0, #0\n\ bge ._874 @cond_branch\n\ str r4, [r6]\n\ @@ -4938,11 +4938,11 @@ void sub_8118F8C(struct Sprite *sprite) add r4, r5, #0\n\ add r4, r4, #0x98\n\ ldr r0, [r4]\n\ - bl gMysteryEventScriptCmdTableEnd+0x5b4c\n\ + bl __extendsfdf2\n\ ldr r2, ._875 + 4\n\ ldr r3, ._875 + 8\n\ - bl gMysteryEventScriptCmdTableEnd+0x4c2c\n\ - bl gMysteryEventScriptCmdTableEnd+0x51e8\n\ + bl __divdf3\n\ + bl __truncdfsf2\n\ str r0, [r4]\n\ ._874:\n\ pop {r3, r4}\n\ diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c index c4d9463f5..848249528 100644 --- a/src/scene/cute_sketch.c +++ b/src/scene/cute_sketch.c @@ -212,7 +212,7 @@ void debug_sub_8110D84(void) b ._65\n\ ._38:\n\ mov r0, #0x5\n\ - bl gMysteryEventScriptCmdTableEnd+0x13c0\n\ + bl m4aSongNumStart\n\ ldr r1, ._41 + 4\n\ add r0, r4, r1\n\ mov r1, #0x1\n\ @@ -228,7 +228,7 @@ void debug_sub_8110D84(void) .word sub_80FC69C+1\n\ ._36:\n\ mov r0, #0x5\n\ - bl gMysteryEventScriptCmdTableEnd+0x13c0\n\ + bl m4aSongNumStart\n\ mov r0, #0x1\n\ neg r0, r0\n\ mov r1, #0x0\n\ -- cgit v1.2.3 From 305f571fb55bedea92eb0afad0d908fafc60f5c6 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 00:32:33 -0600 Subject: dump more baseroms and fix more false offsets --- src/debug/tomomichi_debug_menu.c | 8 ++-- src/debug/unk_debug_menu_3.c | 80 ++++++++++++++++++++-------------------- src/engine/mystery_event_menu.c | 18 ++++----- 3 files changed, 53 insertions(+), 53 deletions(-) (limited to 'src') diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 0549cb5c0..68c05270f 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -4223,7 +4223,7 @@ void debug_sub_808D54C() " .align 2, 0\n" "._325:\n" " .word gMain\n" - " .word gUnknown_Debug_083C1194+0x2\n" + " .word gUnknown_Debug_083C1196\n" "._323:\n" " add r0, r4, #0\n" " bl FlagClear\n" @@ -4288,7 +4288,7 @@ void debug_sub_808D59C() " .align 2, 0\n" "._329:\n" " .word gUnknown_Debug_083C1194\n" - " .word gUnknown_Debug_083C1194+0x2\n" + " .word gUnknown_Debug_083C1196\n" "\n" ); } @@ -4554,7 +4554,7 @@ void debug_sub_808D790() " .align 2, 0\n" "._351:\n" " .word gMain\n" - " .word gUnknown_Debug_083C12D0+0x2\n" + " .word gUnknown_Debug_083C12D2\n" "._349:\n" " add r0, r4, #0\n" " bl FlagClear\n" @@ -4619,7 +4619,7 @@ void debug_sub_808D7E0() " .align 2, 0\n" "._355:\n" " .word gUnknown_Debug_083C12D0\n" - " .word gUnknown_Debug_083C12D0+0x2\n" + " .word gUnknown_Debug_083C12D2\n" "\n" ); } diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 411b32fe3..fa944b25f 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -25,8 +25,8 @@ int debug_sub_813C404() "._2:\n" " .align 2, 0\n" "._1:\n" - " .word gOtherText_DataCannotUseVersion+0x30d\n" - " .word gOtherText_DataCannotUseVersion+0x3c\n" + " .word gUnknown_Debug_845DDB2\n" + " .word gUnknown_Debug_845DAE1\n" "\n" ); } @@ -53,8 +53,8 @@ int debug_sub_813C430() "._4:\n" " .align 2, 0\n" "._3:\n" - " .word gOtherText_DataCannotUseVersion+0x95d\n" - " .word gOtherText_DataCannotUseVersion+0x93b\n" + " .word gUnknown_Debug_845E402\n" + " .word gUnknown_Debug_845E3E0\n" "\n" ); } @@ -81,8 +81,8 @@ int debug_sub_813C45C() "._6:\n" " .align 2, 0\n" "._5:\n" - " .word gOtherText_DataCannotUseVersion+0x99e\n" - " .word gOtherText_DataCannotUseVersion+0x97d\n" + " .word gUnknown_Debug_845E443\n" + " .word gUnknown_Debug_845E422\n" "\n" ); } @@ -109,8 +109,8 @@ int debug_sub_813C488() "._8:\n" " .align 2, 0\n" "._7:\n" - " .word gOtherText_DataCannotUseVersion+0x97d\n" - " .word gOtherText_DataCannotUseVersion+0x95d\n" + " .word gUnknown_Debug_845E422\n" + " .word gUnknown_Debug_845E402\n" "\n" ); } @@ -132,8 +132,8 @@ int debug_sub_813C4B4() "._10:\n" " .align 2, 0\n" "._9:\n" - " .word gOtherText_DataCannotUseVersion+0xb74\n" - " .word gOtherText_DataCannotUseVersion+0xb61\n" + " .word gUnknown_Debug_845E619\n" + " .word gUnknown_Debug_845E606\n" "\n" ); } @@ -160,8 +160,8 @@ int debug_sub_813C4D4() "._12:\n" " .align 2, 0\n" "._11:\n" - " .word gOtherText_DataCannotUseVersion+0xc6d\n" - " .word gOtherText_DataCannotUseVersion+0xb74\n" + " .word gUnknown_Debug_845E712\n" + " .word gUnknown_Debug_845E619\n" "\n" ); } @@ -188,8 +188,8 @@ int debug_sub_813C500() "._14:\n" " .align 2, 0\n" "._13:\n" - " .word gOtherText_DataCannotUseVersion+0xcf2\n" - " .word gOtherText_DataCannotUseVersion+0xc6d\n" + " .word gUnknown_Debug_845E797\n" + " .word gUnknown_Debug_845E712\n" "\n" ); } @@ -234,9 +234,9 @@ void debug_sub_813C52C() "._16:\n" " .align 2, 0\n" "._15:\n" - " .word gOtherText_DataCannotUseVersion+0xd16\n" - " .word gOtherText_DataCannotUseVersion+0xcf2\n" - " .word gOtherText_DataCannotUseVersion+0xd10\n" + " .word gUnknown_Debug_845E7BB\n" + " .word gUnknown_Debug_845E797\n" + " .word gUnknown_Debug_845E7B5\n" "\n" ); } @@ -358,10 +358,10 @@ int debug_sub_813C5B4() " .align 2, 0\n" "._23:\n" " .word gSaveBlock1+0x3160\n" - " .word gOtherText_DataCannotUseVersion+0x331\n" - " .word gOtherText_DataCannotUseVersion+0x30d\n" - " .word gOtherText_DataCannotUseVersion+0x861\n" - " .word sUnusedFlashSectors+0x8\n" + " .word gUnknown_Debug_845DDD6\n" + " .word gUnknown_Debug_845DDB2\n" + " .word gUnknown_Debug_845E306\n" + " .word Str_842E23C\n" " .word 0xfff\n" " .word 0x52f\n" "\n" @@ -422,8 +422,8 @@ void debug_sub_813C638() " .align 2, 0\n" "._25:\n" " .word 0x270f\n" - " .word sUnusedFlashSectors+0xc\n" - " .word sUnusedFlashSectors+0x14\n" + " .word Str_842E240\n" + " .word Str_842E248\n" "\n" ); } @@ -590,12 +590,12 @@ int debug_sub_813C740() "._30:\n" " .align 2, 0\n" "._29:\n" - " .word gOtherText_DataCannotUseVersion+0x99e\n" - " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gUnknown_Debug_845E443\n" + " .word gUnknown_Debug_845E4EF\n" " .word gEnemyParty\n" - " .word sUnusedFlashSectors+0x4\n" - " .word gOtherText_DataCannotUseVersion+0x9c2\n" - " .word gOtherText_DataCannotUseVersion+0xa26\n" + " .word Str_842E238\n" + " .word gUnknown_Debug_845E467\n" + " .word gUnknown_Debug_845E4CB\n" "\n" ); } @@ -651,11 +651,11 @@ int debug_sub_813C810() "._32:\n" " .align 2, 0\n" "._31:\n" - " .word gOtherText_DataCannotUseVersion+0x99e\n" - " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gUnknown_Debug_845E443\n" + " .word gUnknown_Debug_845E4EF\n" " .word gEnemyParty\n" - " .word gOtherText_DataCannotUseVersion+0x9c2\n" - " .word gOtherText_DataCannotUseVersion+0xa26\n" + " .word gUnknown_Debug_845E467\n" + " .word gUnknown_Debug_845E4CB\n" "\n" ); } @@ -713,11 +713,11 @@ int debug_sub_813C888() "._34:\n" " .align 2, 0\n" "._33:\n" - " .word gOtherText_DataCannotUseVersion+0x99e\n" - " .word gOtherText_DataCannotUseVersion+0xa4a\n" + " .word gUnknown_Debug_845E443\n" + " .word gUnknown_Debug_845E4EF\n" " .word gEnemyParty\n" - " .word gOtherText_DataCannotUseVersion+0x9c2\n" - " .word gOtherText_DataCannotUseVersion+0xa26\n" + " .word gUnknown_Debug_845E467\n" + " .word gUnknown_Debug_845E4CB\n" "\n" ); } @@ -791,11 +791,11 @@ int debug_sub_813C93C() "._38:\n" " .align 2, 0\n" "._37:\n" - " .word gOtherText_DataCannotUseVersion+0xa4a\n" - " .word gOtherText_DataCannotUseVersion+0xb61\n" - " .word sUnusedFlashSectors+0x24\n" + " .word gUnknown_Debug_845E4EF\n" + " .word gUnknown_Debug_845E606\n" + " .word Str_842E253+5 @ weird...\n" " .word 0x270f\n" - " .word gOtherText_DataCannotUseVersion+0xa61\n" + " .word gUnknown_Debug_845E506\n" "\n" ); } diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index da2973945..c80a8f3e9 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -397,9 +397,9 @@ void debug_sub_815D04C() " .align 2, 0\n" "._125:\n" " .word gTasks\n" - " .word sUnusedFlashSectors+0x9c\n" + " .word gUnknown_Debug_842E2D0\n" " .word gMain\n" - " .word sUnusedFlashSectors+0x11c\n" + " .word gUnknown_Debug_842E350\n" "._123:\n" " sub r0, r1, #1\n" "._124:\n" @@ -435,7 +435,7 @@ void debug_sub_815D04C() " .align 2, 0\n" "._130:\n" " .word gTasks\n" - " .word sUnusedFlashSectors+0x11c\n" + " .word gUnknown_Debug_842E350\n" "._128:\n" " ldrh r0, [r4, #0xa]\n" " add r0, r0, #0x1\n" @@ -481,7 +481,7 @@ void debug_sub_815D04C() " .align 2, 0\n" "._133:\n" " .word gTasks\n" - " .word sUnusedFlashSectors+0x9c\n" + " .word gUnknown_Debug_842E2D0\n" " .word +0x2004000\n" " .word 0x43c\n" "\n" @@ -603,7 +603,7 @@ void debug_sub_815D1D8() "._161:\n" " .word gPaletteFade\n" " .word gLinkTestBlockChecksums+0x8\n" - " .word gUnknown_0841192C+0x14\n" + " .word Str_843DA70\n" " .word 0x43c\n" "._144:\n" " bl Menu_UpdateWindowText\n" @@ -653,7 +653,7 @@ void debug_sub_815D1D8() "._171:\n" " .word gReceivedRemoteLinkPlayers\n" " .word 0x43c\n" - " .word gUnknown_0841192C+0x28\n" + " .word Str_843DA84\n" "._146:\n" " bl Menu_UpdateWindowText\n" " lsl r0, r0, #0x18\n" @@ -690,8 +690,8 @@ void debug_sub_815D1D8() "._180:\n" " .align 2, 0\n" "._179:\n" - " .word gUnknown_0841192C+0x3c\n" - " .word +0x2004000\n" + " .word Str_843DA98\n" + " .word 0x2004000\n" " .word 0x2004\n" " .word gMain\n" " .word 0x43c\n" @@ -743,7 +743,7 @@ void debug_sub_815D1D8() " .align 2, 0\n" "._190:\n" " .word gReceivedRemoteLinkPlayers\n" - " .word gUnknown_0841192C+0x47\n" + " .word Str_843DAA3\n" " .word gMain\n" " .word 0x43c\n" "._152:\n" -- cgit v1.2.3 From 76c40aac928d139afa725182ab291436f809258d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 23 Jan 2018 08:09:31 -0500 Subject: Clean up English/German blocks (fingers crossed) --- src/battle/contest_link_80C857C.c | 46 ++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 01088bf53..4fb236294 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -215,24 +215,22 @@ void sub_80C8734(u8 taskId) case 0: if (GetMultiplayerId() == 0) { if (IsLinkTaskFinished()) { -#if GERMAN +#if ENGLISH + memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon)); + sub_8007E9C(2); + gTasks[taskId].data[0]++; +#elif GERMAN if (gTasks[taskId].data[0] == 0) { gTasks[taskId].data[0] = 3; } else { -#endif - memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon)); -#if GERMAN - de_sub_80C9274(FALSE); -#endif - sub_8007E9C(2); -#if ENGLISH - gTasks[taskId].data[0]++; -#elif GERMAN - gTasks[taskId].data[0] = 1; - } + memcpy(gBlockSendBuffer, gContestMons + gContestPlayerMonIndex, sizeof(struct ContestPokemon)); + de_sub_80C9274(FALSE); + sub_8007E9C(2); + gTasks[taskId].data[0] = 1; + } #endif } } @@ -350,7 +348,10 @@ void sub_80C8938(u8 taskId) { if (IsLinkTaskFinished()) { -#if GERMAN +#if ENGLISH + sub_8007E9C(2); + gTasks[taskId].data[0]++; +#elif GERMAN if (gTasks[taskId].data[0] == 0) { gTasks[taskId].data[0] = 3; @@ -358,11 +359,7 @@ void sub_80C8938(u8 taskId) else { de_sub_80C9274(TRUE); -#endif - sub_8007E9C(2); -#if ENGLISH - gTasks[taskId].data[0]++; -#elif GERMAN + sub_8007E9C(2); gTasks[taskId].data[0] = 1; } #endif @@ -626,7 +623,10 @@ void sub_80C8E1C(u8 taskId) { if (IsLinkTaskFinished()) { -#if GERMAN +#if ENGLISH + sub_8007E9C(2); + gTasks[taskId].data[0]++; +#elif GERMAN if (gTasks[taskId].data[0] == 0) { gTasks[taskId].data[0] = 3; @@ -634,12 +634,8 @@ void sub_80C8E1C(u8 taskId) else { de_sub_80C9274(FALSE); -#endif - sub_8007E9C(2); -#if ENGLISH - gTasks[taskId].data[0]++; -#elif GERMAN - gTasks[taskId].data[0] = 1; + sub_8007E9C(2); + gTasks[taskId].data[0] = 1; } #endif } -- cgit v1.2.3 From 960bc2dd01bfc5bada0cbd96318440c81cfc235d Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 15:29:39 -0600 Subject: fix more false offsets --- src/debug/nakamura_debug_menu.c | 152 +++++++++++---------- src/debug/start_menu_debug.c | 171 ++++++++++++------------ src/debug/taya_debug_window.c | 30 ++--- src/debug/tomomichi_debug_menu.c | 278 ++++++++++++++++++++------------------- src/debug/watanabe_debug_menu.c | 211 ++++++++++++++--------------- src/engine/reset_rtc_screen.c | 8 +- 6 files changed, 442 insertions(+), 408 deletions(-) (limited to 'src') diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 67f4a1af7..328903126 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -2,9 +2,19 @@ #include "global.h" #include "menu.h" -EWRAM_DATA u8 _nakamuraData[0x10] = {0}; +EWRAM_DATA u8 _nakamuraData0 = 0; +EWRAM_DATA u8 _nakamuraData1 = 0; +EWRAM_DATA u8 _nakamuraData2 = 0; +EWRAM_DATA u8 _nakamuraData3 = 0; +EWRAM_DATA u8 _nakamuraData4 = 0; +EWRAM_DATA u8 _nakamuraData5 = 0; +EWRAM_DATA u16 _nakamuraData6 = 0; +EWRAM_DATA u16 _nakamuraData8 = 0; +EWRAM_DATA u16 _nakamuraDataA = 0; +EWRAM_DATA u16 _nakamuraDataC = 0; -static u8 _nakamuraStatic[32] __attribute__((unused)); +__attribute__((unused)) static u8 _nakamuraStatic0[0x18]; +__attribute__((unused)) static u8 _nakamuraStatic18; u8 debug_sub_815FC54(); u8 debug_sub_815F2B4(); @@ -605,7 +615,7 @@ void debug_sub_815F470() " .align 2, 0\n" "._39:\n" " .word gSaveBlock1\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word 0x1a08\n" " .word _843E424\n" "._37:\n" @@ -719,7 +729,7 @@ void debug_sub_815F4D8() " .align 2, 0\n" "._43:\n" " .word gStringVar1\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1\n" " .word 0x1a08\n" " .word Str_843E550\n" @@ -752,7 +762,7 @@ void debug_sub_815F5C4() " .align 2, 0\n" "._48:\n" " .word gMain\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" "._46:\n" " sub r0, r0, #0x1\n" " b ._50\n" @@ -770,7 +780,7 @@ void debug_sub_815F5C4() "._55:\n" " .align 2, 0\n" "._54:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" "._52:\n" " add r0, r0, #0x1\n" "._50:\n" @@ -824,7 +834,7 @@ u8 debug_sub_815F62C() "._60:\n" " .align 2, 0\n" "._59:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gMenuCallback\n" " .word debug_sub_815F5C4+1\n" "\n" @@ -885,7 +895,7 @@ void debug_sub_815F668() "._62:\n" " .align 2, 0\n" "._61:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1+0x1a11\n" " .word gStringVar1\n" " .word 0x186a0\n" @@ -927,7 +937,7 @@ void debug_sub_815F6E4() " .align 2, 0\n" "._63:\n" " .word gStringVar1\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1+0x1a0a\n" "\n" ); @@ -975,7 +985,7 @@ void debug_sub_815F72C() " .align 2, 0\n" "._66:\n" " .word gStringVar1\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1\n" " .word 0x1a08\n" "\n" @@ -1006,7 +1016,7 @@ void debug_sub_815F788() " .align 2, 0\n" "._68:\n" " .word Str_843E574\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData2\n" "\n" ); } @@ -1029,7 +1039,7 @@ void debug_sub_815F7B4() "._73:\n" " .align 2, 0\n" "._72:\n" - " .word _nakamuraData+0x1\n" + " .word _nakamuraData1\n" "._70:\n" " ldr r0, ._74\n" " ldrb r0, [r0]\n" @@ -1045,7 +1055,7 @@ void debug_sub_815F7B4() "._75:\n" " .align 2, 0\n" "._74:\n" - " .word _nakamuraData+0x3\n" + " .word _nakamuraData3\n" " .word Str_843E576\n" "\n" ); @@ -1115,9 +1125,9 @@ void debug_sub_815F7F0() "._79:\n" " .align 2, 0\n" "._78:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1+0x1a11\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData2\n" "\n" ); } @@ -1158,9 +1168,9 @@ void debug_sub_815F86C() "._85:\n" " .align 2, 0\n" "._84:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1+0x1a0a\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData2\n" "._80:\n" " ldr r0, ._87\n" " ldrb r0, [r0]\n" @@ -1174,7 +1184,7 @@ void debug_sub_815F86C() "._88:\n" " .align 2, 0\n" "._87:\n" - " .word _nakamuraData+0x3\n" + " .word _nakamuraData3\n" " .word ._89\n" "._89:\n" " .word ._90\n" @@ -1229,7 +1239,7 @@ void debug_sub_815F86C() "._102:\n" " .align 2, 0\n" "._101:\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData2\n" "\n" ); } @@ -1260,7 +1270,7 @@ void debug_sub_815F930() "._108:\n" " .align 2, 0\n" "._107:\n" - " .word _nakamuraData+0x1\n" + " .word _nakamuraData1\n" " .word gMain\n" "._105:\n" " mov r0, #0x1\n" @@ -1296,7 +1306,7 @@ void debug_sub_815F930() "._118:\n" " .align 2, 0\n" "._117:\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData2\n" "._115:\n" " sub r0, r0, #0x1\n" "._116:\n" @@ -1319,7 +1329,7 @@ void debug_sub_815F930() "._124:\n" " .align 2, 0\n" "._123:\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData2\n" "._121:\n" " add r0, r1, #1\n" " strb r0, [r2]\n" @@ -1344,7 +1354,7 @@ void debug_sub_815F930() "._130:\n" " .align 2, 0\n" "._129:\n" - " .word _nakamuraData+0x3\n" + " .word _nakamuraData3\n" "._126:\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -1433,7 +1443,7 @@ void debug_sub_815FA38() "._147:\n" " .align 2, 0\n" "._146:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" "._144:\n" " sub r0, r0, #0x1\n" " b ._148\n" @@ -1453,7 +1463,7 @@ void debug_sub_815FA38() "._153:\n" " .align 2, 0\n" "._152:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" "._150:\n" " add r0, r0, #0x1\n" "._148:\n" @@ -1495,11 +1505,11 @@ void debug_sub_815FA38() "._160:\n" " .align 2, 0\n" "._159:\n" - " .word _nakamuraData\n" + " .word _nakamuraData0\n" " .word gSaveBlock1\n" " .word 0x1a08\n" - " .word _nakamuraData+0x1\n" - " .word _nakamuraData+0x2\n" + " .word _nakamuraData1\n" + " .word _nakamuraData2\n" " .word gMenuCallback\n" " .word debug_sub_815F930+1\n" "._155:\n" @@ -1558,8 +1568,8 @@ u8 debug_sub_815FB1C() "._163:\n" " .align 2, 0\n" "._162:\n" - " .word _nakamuraData\n" - " .word _nakamuraData+0x3\n" + " .word _nakamuraData0\n" + " .word _nakamuraData3\n" " .word gMenuCallback\n" " .word debug_sub_815FA38+1\n" "\n" @@ -2216,7 +2226,7 @@ void debug_sub_815FFDC() " .align 2, 0\n" "._214:\n" " .word Str_843E5D4\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" " .word gPlayerParty\n" "._212:\n" " mov r0, #0x1\n" @@ -2249,7 +2259,7 @@ void debug_sub_815FFDC() "._218:\n" " .align 2, 0\n" "._217:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" " .word gMenuCallback\n" " .word debug_sub_8160498+1\n" "\n" @@ -2284,7 +2294,7 @@ void debug_sub_816009C() "._220:\n" " .align 2, 0\n" "._219:\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" " .word gSpeciesNames\n" "\n" ); @@ -2386,7 +2396,7 @@ void debug_sub_816013C() " .align 2, 0\n" "._229:\n" " .word gStringVar1\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" "\n" ); } @@ -2430,7 +2440,7 @@ void debug_sub_816017C() "._233:\n" " .align 2, 0\n" "._232:\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" "\n" ); } @@ -2508,7 +2518,7 @@ void debug_sub_81601C8() "._240:\n" " .align 2, 0\n" "._239:\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" " .word 0xfffffe65\n" " .word 0x19b\n" " .word gPlayerParty\n" @@ -2538,7 +2548,7 @@ void debug_sub_8160258() "._243:\n" " .align 2, 0\n" "._242:\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" "\n" ); } @@ -2613,7 +2623,7 @@ void debug_sub_816027C() "._248:\n" " .align 2, 0\n" "._247:\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" " .word gPlayerParty\n" " .word gBaseStats\n" " .word gExperienceTables\n" @@ -2759,7 +2769,7 @@ void debug_sub_81603B8() "._260:\n" " .align 2, 0\n" "._259:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" " .word _843E5D1\n" "._257:\n" " lsl r0, r5, #0x1\n" @@ -2780,7 +2790,7 @@ void debug_sub_81603B8() "._265:\n" " .align 2, 0\n" "._264:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" "._262:\n" " lsl r0, r5, #0x1\n" " add r0, r0, r5\n" @@ -2926,7 +2936,7 @@ void debug_sub_8160498() "._290:\n" " .align 2, 0\n" "._289:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" "._284:\n" " mov r0, #0x2\n" " and r0, r0, r1\n" @@ -2942,7 +2952,7 @@ void debug_sub_8160498() "._295:\n" " .align 2, 0\n" "._294:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" "._291:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -2985,7 +2995,7 @@ void debug_sub_8160498() "._302:\n" " .align 2, 0\n" "._301:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" "._296:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x2\n" @@ -3041,7 +3051,7 @@ void debug_sub_8160498() "._309:\n" " .align 2, 0\n" "._308:\n" - " .word _nakamuraData+0x4\n" + " .word _nakamuraData4\n" "._303:\n" " mov r0, #0x8\n" " and r0, r0, r2\n" @@ -3179,7 +3189,7 @@ void debug_sub_816062C() " .align 2, 0\n" "._323:\n" " .word gPlayerParty\n" - " .word _nakamuraStatic\n" + " .word _nakamuraStatic0\n" "\n" ); } @@ -3703,7 +3713,7 @@ void debug_sub_8160A80() "._423:\n" " .align 2, 0\n" "._422:\n" - " .word _nakamuraStatic+0x18\n" + " .word _nakamuraStatic18\n" " .word gStringVar1\n" "._420:\n" " cmp r0, #0x1\n" @@ -3813,7 +3823,7 @@ void debug_sub_8160B50() "._446:\n" " .align 2, 0\n" "._445:\n" - " .word _nakamuraStatic+0x18\n" + " .word _nakamuraStatic18\n" "._443:\n" " cmp r0, #0x1\n" " bne ._447 @cond_branch\n" @@ -3883,7 +3893,7 @@ void debug_sub_8160BB0() " .align 2, 0\n" "._456:\n" " .word gStringVar1\n" - " .word _nakamuraStatic+0x18\n" + " .word _nakamuraStatic18\n" "\n" ); } @@ -4027,7 +4037,7 @@ void debug_sub_8160C7C() "._470:\n" " .align 2, 0\n" "._469:\n" - " .word _nakamuraStatic+0x18\n" + " .word _nakamuraStatic18\n" "\n" ); } @@ -4462,7 +4472,7 @@ void debug_sub_8161028() "._497:\n" " .align 2, 0\n" "._496:\n" - " .word _nakamuraData+0x5\n" + " .word _nakamuraData5\n" " .word gPlayerParty\n" "._491:\n" " cmp r1, #0x1\n" @@ -4480,7 +4490,7 @@ void debug_sub_8161028() "._502:\n" " .align 2, 0\n" "._501:\n" - " .word _nakamuraData+0x5\n" + " .word _nakamuraData5\n" "._493:\n" " ldr r0, ._504\n" " strb r5, [r0]\n" @@ -4488,7 +4498,7 @@ void debug_sub_8161028() "._505:\n" " .align 2, 0\n" "._504:\n" - " .word _nakamuraData+0x5\n" + " .word _nakamuraData5\n" "._499:\n" " ldrb r1, [r4]\n" " mov r0, #0x64\n" @@ -4551,7 +4561,7 @@ void debug_sub_81610BC() "._516:\n" " .align 2, 0\n" "._515:\n" - " .word _nakamuraData+0x5\n" + " .word _nakamuraData5\n" " .word gPlayerParty\n" "._513:\n" " mov r0, #0x2\n" @@ -4600,7 +4610,7 @@ void DebugMenu_EffortValues() "._520:\n" " .align 2, 0\n" "._519:\n" - " .word _nakamuraData+0x5\n" + " .word _nakamuraData5\n" " .word gPlayerParty\n" " .word gMenuCallback\n" " .word debug_sub_81610BC+1\n" @@ -4628,8 +4638,8 @@ void debug_sub_8161160() "._524:\n" " .align 2, 0\n" "._523:\n" - " .word _nakamuraData+0x6\n" - " .word _nakamuraData+0x8\n" + " .word _nakamuraData6\n" + " .word _nakamuraData8\n" "._521:\n" " ldrh r6, [r1]\n" " ldrh r5, [r2]\n" @@ -4673,8 +4683,8 @@ void debug_sub_8161160() "._530:\n" " .align 2, 0\n" "._529:\n" - " .word _nakamuraData+0xa\n" - " .word _nakamuraData+0xc\n" + " .word _nakamuraDataA\n" + " .word _nakamuraDataC\n" "\n" ); } @@ -4901,10 +4911,10 @@ void debug_sub_81612EC() "._551:\n" " .align 2, 0\n" "._550:\n" - " .word _nakamuraData+0x6\n" - " .word _nakamuraData+0x8\n" - " .word _nakamuraData+0xc\n" - " .word _nakamuraData+0xa\n" + " .word _nakamuraData6\n" + " .word _nakamuraData8\n" + " .word _nakamuraDataC\n" + " .word _nakamuraDataA\n" "._544:\n" " mov r0, #0x10\n" " and r0, r0, r1\n" @@ -4944,10 +4954,10 @@ void debug_sub_81612EC() "._559:\n" " .align 2, 0\n" "._558:\n" - " .word _nakamuraData+0x6\n" - " .word _nakamuraData+0x8\n" - " .word _nakamuraData+0xc\n" - " .word _nakamuraData+0xa\n" + " .word _nakamuraData6\n" + " .word _nakamuraData8\n" + " .word _nakamuraDataC\n" + " .word _nakamuraDataA\n" "._552:\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x1\n" @@ -4968,7 +4978,7 @@ void debug_sub_81612EC() "._564:\n" " .align 2, 0\n" "._563:\n" - " .word _nakamuraData+0xc\n" + " .word _nakamuraDataC\n" "._560:\n" " mov r0, #0x2\n" " and r0, r0, r1\n" @@ -5018,10 +5028,10 @@ void DebugMenu_RandomNumberTest() "._567:\n" " .align 2, 0\n" "._566:\n" - " .word _nakamuraData+0x6\n" - " .word _nakamuraData+0x8\n" - " .word _nakamuraData+0xc\n" - " .word _nakamuraData+0xa\n" + " .word _nakamuraData6\n" + " .word _nakamuraData8\n" + " .word _nakamuraDataC\n" + " .word _nakamuraDataA\n" " .word gMenuCallback\n" " .word debug_sub_81612EC+1\n" "\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index d9f14a6b8..318785945 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -1,5 +1,14 @@ #if DEBUG +#include "global.h" + +__attribute__((unused)) static u8 gUnknown_030006B8[4]; +__attribute__((unused)) static u8 gUnknown_030006BC[4]; +__attribute__((unused)) static u8 gUnknown_030006C0; +__attribute__((unused)) static u8 gUnknown_030006C1; +__attribute__((unused)) static void *gUnknown_030006C4; +__attribute__((unused)) static u8 gUnknown_030006C8; + __attribute__((naked)) void debug_sub_8076AC8() { @@ -65,9 +74,9 @@ void debug_sub_8076AC8() "._4:\n" " .align 2, 0\n" "._3:\n" - " .word 0x30006c4 @ gTileset1AnimLength\n" - " .word gUnknown_Debug_0839BBC1+0x153\n" - " .word gUnknown_Debug_0839BBC1+0xd3\n" + " .word gUnknown_030006C4 \n" + " .word Str_839BD14\n" + " .word gUnknown_Debug_839BC94\n" "\n" ); } @@ -178,8 +187,8 @@ void debug_sub_8076BB4() " .align 2, 0\n" "._13:\n" " .word gTasks+0x8\n" - " .word gUnknown_Debug_0839BBC1+0xd3\n" - " .word 0x30006c4 @ gTileset1AnimLength\n" + " .word gUnknown_Debug_839BC94\n" + " .word gUnknown_030006C4 \n" "._10:\n" " ldr r0, ._18\n" " ldrh r1, [r0, #0x2e]\n" @@ -511,7 +520,7 @@ void DebugMenu_8076D6C() "._57:\n" " .align 2, 0\n" "._56:\n" - " .word gUnknown_Debug_0839BBC1+0x16b\n" + " .word Str_839BD2C\n" "._47:\n" " ldr r0, ._60\n" " ldrh r2, [r0, #0x2e]\n" @@ -535,7 +544,7 @@ void DebugMenu_8076D6C() " .align 2, 0\n" "._60:\n" " .word gMain\n" - " .word gUnknown_Debug_0839BBC1+0x18b\n" + " .word Str_839BD4C\n" "._58:\n" " mov r0, #0x2\n" " and r0, r0, r2\n" @@ -626,7 +635,7 @@ void DebugMenu_8076E30() "._79:\n" " .align 2, 0\n" "._78:\n" - " .word gUnknown_Debug_0839BBC1+0x199\n" + " .word Str_839BD5A\n" "._69:\n" " ldr r0, ._82\n" " ldrh r2, [r0, #0x2e]\n" @@ -650,7 +659,7 @@ void DebugMenu_8076E30() " .align 2, 0\n" "._82:\n" " .word gMain\n" - " .word gUnknown_Debug_0839BBC1+0x1bc\n" + " .word Str_839BD7D\n" "._80:\n" " mov r0, #0x2\n" " and r0, r0, r2\n" @@ -759,7 +768,7 @@ void DebugMenu_8076EF4() "._94:\n" " .align 2, 0\n" "._93:\n" - " .word gUnknown_Debug_0839BBC1+0x203\n" + " .word gUnknown_Debug_839BDC4\n" "\n" ); } @@ -816,7 +825,7 @@ void DebugMenu_8076F60() "._101:\n" " .align 2, 0\n" "._100:\n" - " .word gUnknown_Debug_0839BBC1+0x203\n" + " .word gUnknown_Debug_839BDC4\n" " .word gSaveBlock2\n" "._98:\n" " mov r0, #0x1\n" @@ -872,9 +881,9 @@ void DebugMenu_8077004() "._107:\n" " .align 2, 0\n" "._106:\n" - " .word 0x30006c4 @ gTileset1AnimLength\n" - " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n" - " .word gDebug0x839B9BC+0x1a8\n" + " .word gUnknown_030006C4 \n" + " .word gUnknown_030006C1 \n" + " .word gUnknown_Debug_839BB64\n" "\n" ); } @@ -1006,8 +1015,8 @@ void DebugMenu_807709C() " .align 2, 0\n" "._120:\n" " .word gMain\n" - " .word 0x030006c0 @ gNumTilesetAnimDmas\n" - " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n" + " .word gUnknown_030006C0 \n" + " .word gUnknown_030006C1 \n" "._118:\n" " sub r0, r0, #0x1\n" "._119:\n" @@ -1033,7 +1042,7 @@ void DebugMenu_807709C() " .align 2, 0\n" "._125:\n" " .word gMain\n" - " .word 0x030006c0+0x1 @ gNumTilesetAnimDmas+0x1\n" + " .word gUnknown_030006C1 \n" "._123:\n" " add r0, r0, #0x1\n" "._124:\n" @@ -1069,8 +1078,8 @@ void DebugMenu_807709C() "._129:\n" " .word gMain\n" " .word gDebug0x839B9BC\n" - " .word 0x030006c0 @ gNumTilesetAnimDmas\n" - " .word 0x30006c4 @ gTileset1AnimLength\n" + " .word gUnknown_030006C0 \n" + " .word gUnknown_030006C4 \n" "._127:\n" " mov r0, #0xa\n" " and r0, r0, r1\n" @@ -1127,8 +1136,8 @@ void DebugMenu_807719C() " .align 2, 0\n" "._133:\n" " .word gDebug0x839B9BC\n" - " .word 0x30006c4 @ gTileset1AnimLength\n" - " .word 0x030006c0 @ gNumTilesetAnimDmas\n" + " .word gUnknown_030006C4 \n" + " .word gUnknown_030006C0 \n" "\n" ); } @@ -1168,7 +1177,7 @@ void DebugMenu_80771EC() " .align 2, 0\n" "._135:\n" " .word gStringVar4\n" - " .word gUnknown_Debug_0839BBC1+0x243\n" + " .word Str_839BE04\n" " .word gSaveBlock1\n" "\n" ); @@ -1303,9 +1312,9 @@ void DebugMenu_8077238() "._140:\n" " .align 2, 0\n" "._139:\n" - " .word gUnknown_Debug_0839BBC1+0x246\n" - " .word gUnknown_Debug_0839BBC1+0x248\n" - " .word gUnknown_Debug_0839BBC1+0x24b\n" + " .word Str_839BE07\n" + " .word Str_839BE09\n" + " .word Str_839BE0C\n" " .word gStringVar4\n" "\n" ); @@ -1527,7 +1536,7 @@ void DebugMenu_8077434() "._158:\n" " .align 2, 0\n" "._157:\n" - " .word gUnknown_Debug_0839BBC1+0x24e\n" + " .word Str_839BE0F\n" "._152:\n" " ldr r0, ._160\n" " mov r1, #0x2\n" @@ -1542,7 +1551,7 @@ void DebugMenu_8077434() "._161:\n" " .align 2, 0\n" "._160:\n" - " .word gUnknown_Debug_0839BBC1+0x251\n" + " .word Str_839BE12\n" "._153:\n" " ldr r0, ._163\n" " mov r1, #0x3\n" @@ -1556,7 +1565,7 @@ void DebugMenu_8077434() "._164:\n" " .align 2, 0\n" "._163:\n" - " .word gUnknown_Debug_0839BBC1+0x255\n" + " .word Str_839BE16\n" "._154:\n" " ldr r0, ._166\n" " mov r1, #0x4\n" @@ -1576,7 +1585,7 @@ void DebugMenu_8077434() "._167:\n" " .align 2, 0\n" "._166:\n" - " .word gUnknown_Debug_0839BBC1+0x259\n" + " .word Str_839BE1A\n" "._155:\n" " ldr r0, ._168\n" " mov r1, #0x4\n" @@ -1598,7 +1607,7 @@ void DebugMenu_8077434() "._169:\n" " .align 2, 0\n" "._168:\n" - " .word gUnknown_Debug_0839BBC1+0x25d\n" + " .word Str_839BE1E\n" "\n" ); } @@ -1617,7 +1626,7 @@ void DebugMenu_807750C() "._171:\n" " .align 2, 0\n" "._170:\n" - " .word gUnknown_Debug_0839BBC1+0x263\n" + " .word gUnknown_Debug_839BE24\n" "\n" ); } @@ -1640,7 +1649,7 @@ void DebugMenu_SetRamBerry() "._173:\n" " .align 2, 0\n" "._172:\n" - " .word gUnknown_Debug_0839BBC1+0x263\n" + " .word gUnknown_Debug_839BE24\n" " .word gMenuCallback\n" " .word DebugMenu_807750C+1\n" "\n" @@ -1960,8 +1969,8 @@ void DebugMenu_80776B4() "._184:\n" " .align 2, 0\n" "._183:\n" - " .word gUnknown_Debug_0839BBC1+0x28b\n" - " .word 0x30006c8 @ gTileset2AnimLength\n" + " .word Str_839BE4C\n" + " .word gUnknown_030006C8 \n" "\n" ); } @@ -2007,8 +2016,8 @@ void DebugMenu_8077704() "._186:\n" " .align 2, 0\n" "._185:\n" - " .word gUnknown_Debug_0839BBC1+0x292\n" - " .word 0x30006c8 @ gTileset2AnimLength\n" + " .word Str_839BE53\n" + " .word gUnknown_030006C8 \n" "\n" ); } @@ -2040,7 +2049,7 @@ void DebugMenu_8077760() " .align 2, 0\n" "._190:\n" " .word gMain\n" - " .word 0x030006b0+0x8 @ gMenu+0x8\n" + " .word gUnknown_030006B8 \n" "._188:\n" " mov r0, #0x3\n" "._189:\n" @@ -2064,7 +2073,7 @@ void DebugMenu_8077760() "._196:\n" " .align 2, 0\n" "._195:\n" - " .word 0x030006b0+0x8 @ gMenu+0x8\n" + " .word gUnknown_030006B8 \n" "._193:\n" " mov r0, #0x0\n" "._194:\n" @@ -2117,7 +2126,7 @@ void DebugMenu_8077760() "._202:\n" " .align 2, 0\n" "._201:\n" - " .word 0x30006c8 @ gTileset2AnimLength\n" + " .word gUnknown_030006C8 \n" " .word 0xf0ff\n" "._199:\n" " mov r0, #0x0\n" @@ -2193,7 +2202,7 @@ void DebugMenu_807786C() "._206:\n" " .align 2, 0\n" "._205:\n" - " .word gUnknown_Debug_0839BBC1+0x2a3\n" + " .word Str_839BE64\n" "\n" ); } @@ -2370,7 +2379,7 @@ void DebugMenu_8077974() "._226:\n" " .word gSaveBlock1\n" " .word gStringVar1\n" - " .word gUnknown_Debug_0839BBC1+0x2cc\n" + " .word Str_839BE8D\n" "._224:\n" " ldr r0, ._230\n" " ldr r1, ._230 + 4\n" @@ -2397,10 +2406,10 @@ void DebugMenu_8077974() " .align 2, 0\n" "._230:\n" " .word gStringVar1\n" - " .word gUnknown_Debug_0839BBC1+0x2cf\n" + " .word Str_839BE90\n" " .word gSaveBlock1\n" " .word gStringVar2\n" - " .word gUnknown_Debug_0839BBC1+0x2cc\n" + " .word Str_839BE8D\n" "._228:\n" " ldr r0, ._232\n" " ldr r1, ._232 + 4\n" @@ -2418,8 +2427,8 @@ void DebugMenu_8077974() " .align 2, 0\n" "._232:\n" " .word gStringVar2\n" - " .word gUnknown_Debug_0839BBC1+0x2cf\n" - " .word gUnknown_Debug_0839BBC1+0x2aa\n" + " .word Str_839BE90\n" + " .word Str_839BE6B\n" " .word gMenuCallback\n" " .word DebugMenu_8077DB4+1\n" "\n" @@ -2486,7 +2495,7 @@ void DebugMenu_8077A60() "._239:\n" " .align 2, 0\n" "._238:\n" - " .word gUnknown_Debug_0839BBC1+0x323\n" + " .word gUnknown_Debug_839BEE4\n" "\n" ); } @@ -2510,7 +2519,7 @@ void DebugMenu_RematchTrainers() "._241:\n" " .align 2, 0\n" "._240:\n" - " .word gUnknown_Debug_0839BBC1+0x323\n" + " .word gUnknown_Debug_839BEE4\n" " .word gMenuCallback\n" " .word DebugMenu_8077A60+1\n" "\n" @@ -2614,7 +2623,7 @@ void DebugMenu_8077B00() "._253:\n" " .align 2, 0\n" "._252:\n" - " .word gUnknown_Debug_0839BBC1+0x353\n" + " .word Str_839BF14\n" "._250:\n" " ldr r0, ._254\n" " bl sub_8071F40\n" @@ -2628,7 +2637,7 @@ void DebugMenu_8077B00() "._255:\n" " .align 2, 0\n" "._254:\n" - " .word gUnknown_Debug_0839BBC1+0x35e\n" + " .word Str_839BF1F\n" " .word gMenuCallback\n" " .word DebugMenu_8077DB4+1\n" "\n" @@ -2649,7 +2658,7 @@ void DebugMenu_8077B3C() "._257:\n" " .align 2, 0\n" "._256:\n" - " .word gUnknown_Debug_0839BBC1+0x3ab\n" + " .word gUnknown_Debug_839BF6C\n" "\n" ); } @@ -2684,10 +2693,10 @@ void DebugMenu_Safari() "._261:\n" " .align 2, 0\n" "._260:\n" - " .word gUnknown_Debug_0839BBC1+0x3ab\n" + " .word gUnknown_Debug_839BF6C\n" " .word gStringVar1\n" " .word gSafariZoneStepCounter\n" - " .word gUnknown_Debug_0839BBC1+0x34b\n" + " .word Str_839BF0C\n" " .word gMenuCallback\n" " .word DebugMenu_8077B3C+1\n" "._258:\n" @@ -2795,7 +2804,7 @@ void DebugMenu_8077C00() "._263:\n" " .align 2, 0\n" "._262:\n" - " .word gUnknown_Debug_0839BBC1+0x3d3\n" + " .word gUnknown_Debug_839BF94\n" "\n" ); } @@ -2819,7 +2828,7 @@ void DebugMenu_8077C14() "._265:\n" " .align 2, 0\n" "._264:\n" - " .word gUnknown_Debug_0839BBC1+0x3d3\n" + " .word gUnknown_Debug_839BF94\n" " .word gMenuCallback\n" " .word DebugMenu_8077C00+1\n" "\n" @@ -2923,8 +2932,8 @@ void DebugMenu_8077C3C() "._272:\n" " .align 2, 0\n" "._271:\n" - " .word 0x030006b0+0xc @ gMenu+0xc\n" - " .word gUnknown_Debug_0839BBC1+0x427\n" + " .word gUnknown_030006BC \n" + " .word gUnknown_Debug_839BFE8\n" "\n" ); } @@ -3359,7 +3368,7 @@ void DebugMenu_8077F7C() "._311:\n" " .word gTasks\n" " .word gMain\n" - " .word gDebug0x839C008+0xc\n" + " .word Str_839C014\n" " .word DebugMenu_8077FFC+1\n" "._309:\n" " mov r0, #0x2\n" @@ -3540,7 +3549,7 @@ void DebugMenu_807808C() " .align 2, 0\n" "._331:\n" " .word gSaveBlock1+0x2ddc\n" - " .word gDebug0x839C008+0x16\n" + " .word Str_839C01E\n" "._329:\n" " ldr r0, ._335\n" " mov r1, #0xb\n" @@ -3563,7 +3572,7 @@ void DebugMenu_807808C() "._336:\n" " .align 2, 0\n" "._335:\n" - " .word gDebug0x839C008+0x45\n" + " .word Str_839C04D\n" "._333:\n" " ldr r0, ._337\n" " mov r1, #0xb\n" @@ -3595,7 +3604,7 @@ void DebugMenu_807808C() "._338:\n" " .align 2, 0\n" "._337:\n" - " .word gDebug0x839C008+0x45\n" + " .word Str_839C04D\n" "\n" ); } @@ -3840,7 +3849,7 @@ void DebugMenu_80782EC() " .align 2, 0\n" "._359:\n" " .word gStringVar1\n" - " .word gDebug0x839C008+0x4b\n" + " .word Str_839C053\n" "\n" ); } @@ -4232,9 +4241,9 @@ void DebugMenu_8078550() "._420:\n" " .word gStringVar1\n" " .word gStringVar2\n" - " .word gDebug0x839C008+0x264\n" + " .word gUnknown_Debug_839C26C\n" " .word gStringVar3\n" - " .word gDebug0x839C008+0x7d\n" + " .word Str_839C085\n" "._418:\n" " cmp r6, #0x1\n" " beq ._422 @cond_branch\n" @@ -4285,7 +4294,7 @@ void DebugMenu_8078550() " .align 2, 0\n" "._426:\n" " .word gStringVar3\n" - " .word gDebug0x839C008+0x74\n" + " .word Str_839C07C\n" "\n" ); } @@ -4445,7 +4454,7 @@ void DebugMenu_80786D0() " .align 2, 0\n" "._450:\n" " .word gTasks\n" - " .word gDebug0x839C008+0x264\n" + " .word gUnknown_Debug_839C26C\n" "\n" ); } @@ -4486,7 +4495,7 @@ void DebugMenu_8078714() " .align 2, 0\n" "._454:\n" " .word gTasks\n" - " .word gDebug0x839C008+0x264\n" + " .word gUnknown_Debug_839C26C\n" "\n" ); } @@ -4581,7 +4590,7 @@ void DebugMenu_80787B0() "._463:\n" " .align 2, 0\n" "._462:\n" - " .word gDebug0x839C008+0x3f4\n" + " .word gUnknown_Debug_839C3FC\n" "\n" ); } @@ -4605,7 +4614,7 @@ void DebugMenu_OpenLegendsRecord() "._465:\n" " .align 2, 0\n" "._464:\n" - " .word gDebug0x839C008+0x3f4\n" + " .word gUnknown_Debug_839C3FC\n" " .word gMenuCallback\n" " .word DebugMenu_80787B0+1\n" "\n" @@ -4677,7 +4686,7 @@ void DebugMenu_80787EC() " .word gStringVar2\n" " .word gStringVar3\n" " .word gStringVar4\n" - " .word gDebug0x839C008+0x40c\n" + " .word Str_839C414\n" "\n" ); } @@ -4827,7 +4836,7 @@ void DebugMenu_8078950() "._490:\n" " .align 2, 0\n" "._489:\n" - " .word gDebug0x839C008+0x426\n" + " .word Str_839C42E\n" "\n" ); } @@ -5166,7 +5175,7 @@ void DebugMenu_8078B70() " .align 2, 0\n" "._526:\n" " .word gStringVar1\n" - " .word gDebug0x839C008+0x430\n" + " .word Str_839C438\n" "\n" ); } @@ -5208,7 +5217,7 @@ void DebugMenu_8078B94() "._532:\n" " .align 2, 0\n" "._531:\n" - " .word gDebug0x839C008+0x43c\n" + " .word gUnknown_Debug_839C444\n" " .word gSaveBlock1+0x7f8\n" "\n" ); @@ -5330,7 +5339,7 @@ void DebugMenu_8078C80() "._549:\n" " .align 2, 0\n" "._548:\n" - " .word gDebug0x839C574+0x30\n" + " .word Str_839C5A4\n" " .word gMenuCallback\n" " .word DebugMenu_8078CA8+1\n" "\n" @@ -5397,7 +5406,7 @@ void DebugMenu_8078CE4() "._558:\n" " .word +0x2000000\n" " .word gStringVar4\n" - " .word gDebug0x839C574+0x58\n" + " .word Str_839C5CC\n" "._556:\n" " ldr r0, ._560\n" " ldr r1, ._560 + 4\n" @@ -5413,7 +5422,7 @@ void DebugMenu_8078CE4() " .align 2, 0\n" "._560:\n" " .word gStringVar4\n" - " .word gDebug0x839C574+0x6b\n" + " .word Str_839C5DF\n" " .word gMenuCallback\n" " .word DebugMenu_8078D7C+1\n" "\n" @@ -5455,7 +5464,7 @@ void DebugMenu_8078D30() "._563:\n" " .word +0x2000000\n" " .word gStringVar4\n" - " .word gDebug0x839C574+0x62\n" + " .word Str_839C5D6\n" " .word gMenuCallback\n" " .word DebugMenu_8078D7C+1\n" "\n" @@ -5534,7 +5543,7 @@ void DebugMenu_MeTooBackupMan() "._572:\n" " .align 2, 0\n" "._571:\n" - " .word gDebug0x839C574+0x20\n" + " .word gUnknown_Debug_839C594\n" " .word gMenuCallback\n" " .word DebugMenu_8078DF0+1\n" "\n" @@ -5555,7 +5564,7 @@ void DebugMenu_8078DF0() "._574:\n" " .align 2, 0\n" "._573:\n" - " .word gDebug0x839C574+0x20\n" + " .word gUnknown_Debug_839C594\n" "\n" ); } @@ -5673,7 +5682,7 @@ void DebugMenu_8078E80() "._582:\n" " .align 2, 0\n" "._581:\n" - " .word gDebug0x839C574+0x80\n" + " .word gUnknown_Debug_839C5F4\n" "\n" ); } @@ -5877,7 +5886,7 @@ void DebugMenu_8078F68() "._603:\n" " .align 2, 0\n" "._602:\n" - " .word gDebug0x839C574+0x80\n" + " .word gUnknown_Debug_839C5F4\n" "\n" ); } @@ -6082,7 +6091,7 @@ void DebugMenu_8079110() "._640:\n" " .align 2, 0\n" "._639:\n" - " .word gDebug0x839C60C+0xe\n" + " .word Str_839C61A\n" "._635:\n" " bl Menu_UpdateWindowText\n" " lsl r0, r0, #0x18\n" diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index 954974e50..d479c59c8 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -677,7 +677,7 @@ void debug_sub_8090C44() "._55:\n" " .align 2, 0\n" "._54:\n" - " .word +0x2000001\n" + " .word gSharedMem+1\n" "\n" ); } @@ -710,7 +710,7 @@ void debug_sub_8090C88() " .align 2, 0\n" "._59:\n" " .word gMain\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "._67:\n" " add r0, r0, #0x1\n" " strb r0, [r1]\n" @@ -729,7 +729,7 @@ void debug_sub_8090C88() "._65:\n" " .align 2, 0\n" "._64:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "._57:\n" " ldrh r1, [r3, #0x2e]\n" " mov r0, #0x10\n" @@ -858,7 +858,7 @@ void debug_sub_8090C88() "._82:\n" " .align 2, 0\n" "._81:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x2710\n" " .word 0xffff\n" "\n" @@ -892,7 +892,7 @@ void TayaDebugMenu_PKMNLottery() "._84:\n" " .align 2, 0\n" "._83:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word gSpecialVar_Result\n" " .word gMenuCallback\n" " .word debug_sub_8090C88+1\n" @@ -1285,7 +1285,7 @@ void TayaDebugMenu_PokenavD() "._95:\n" " .align 2, 0\n" "._94:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word gUnknown_Debug_083C4F94\n" " .word 0x19b\n" " .word gPokemonStorage+0x4\n" @@ -1559,7 +1559,7 @@ void debug_sub_8091334() "._124:\n" " .align 2, 0\n" "._123:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "._119:\n" " add r5, r3, #0\n" " add r5, r5, #0x55\n" @@ -1603,7 +1603,7 @@ void debug_sub_8091334() " .align 2, 0\n" "._131:\n" " .word gMain\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "._128:\n" " add r1, r5, #0\n" " add r1, r1, #0x54\n" @@ -1803,7 +1803,7 @@ void debug_sub_8091334() " .align 2, 0\n" "._159:\n" " .word gMain\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "._157:\n" " mov r3, r9\n" " ldrh r1, [r3, #0x2e]\n" @@ -1926,7 +1926,7 @@ void debug_sub_80915BC() "._168:\n" " .word 0x4000010\n" " .word gUnknown_Debug_083C50EC\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word gPlayerParty\n" "._166:\n" " add r0, r4, r5\n" @@ -1997,7 +1997,7 @@ void debug_sub_80915BC() "._172:\n" " .word gWindowTemplate_81E7224\n" " .word gUnknown_Debug_083C517C\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word debug_sub_8091320+1\n" " .word debug_sub_8091334+1\n" "\n" @@ -2041,9 +2041,9 @@ void debug_sub_80916AC() "._178:\n" " .align 2, 0\n" "._177:\n" - " .word +0x2000000\n" - " .word +0x2000012\n" - " .word +0x2000054\n" + " .word gSharedMem\n" + " .word gSharedMem+0x12\n" + " .word gSharedMem+0x54\n" "._175:\n" " mov r0, r8\n" " strb r0, [r2]\n" @@ -2114,7 +2114,7 @@ void debug_sub_80916AC() " .align 2, 0\n" "._183:\n" " .word gUnknown_Debug_083C50EC\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "\n" ); } diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 68c05270f..8451a104d 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -1,9 +1,21 @@ #if DEBUG #include "global.h" +// These should be static, uninitialized once it gets decompiled. #define BSS_DATA __attribute__((section(".bss"))) - -BSS_DATA u8 gDebug_03000700[0x24] = { 0 }; +BSS_DATA u8 gDebug_03000700[4] = {0}; +BSS_DATA u8 gDebug_03000704[4] = {0}; +BSS_DATA u8 gDebug_03000708[4] = {0}; +BSS_DATA u8 gDebug_0300070C = 0; +BSS_DATA u8 gDebug_0300070D = 0; +BSS_DATA u8 gDebug_0300070E = 0; +BSS_DATA u8 gDebug_0300070F = 0; +BSS_DATA u8 gDebug_03000710[13] = {0}; +BSS_DATA u8 gDebug_0300071D = 0; +BSS_DATA u8 gDebug_0300071E = 0; +BSS_DATA u8 gDebug_0300071F = 0; +BSS_DATA u8 gDebug_03000720 = 0; +BSS_DATA u8 gDebug_03000721 = 0; __attribute__((naked)) void InitTomomichiDebugWindow() @@ -68,7 +80,7 @@ void debug_sub_808B874() " .align 2, 0\n" "._1:\n" " .word gUnknown_Debug_083C0CBA\n" - " .word gDebug_03000700+0x1d\n" + " .word gDebug_0300071D\n" " .word gMenuCallback\n" " .word debug_sub_808B8C8+1\n" "\n" @@ -128,7 +140,7 @@ void debug_sub_808B8C8() " .align 2, 0\n" "._7:\n" " .word gMain\n" - " .word gDebug_03000700+0x1d\n" + " .word gDebug_0300071D\n" " .word gUnknown_Debug_083C0CBA\n" "._5:\n" " mov r0, #0xa\n" @@ -204,10 +216,10 @@ void TomomichiDebugMenu_ContestGraphics() " .word gMenuCallback\n" " .word debug_sub_808BC48+1\n" " .word gDebug_03000700\n" - " .word gDebug_03000700+0x4\n" + " .word gDebug_03000704\n" " .word 0x6f33\n" - " .word gDebug_03000700+0x8\n" - " .word gDebug_03000700+0xc\n" + " .word gDebug_03000708\n" + " .word gDebug_0300070C\n" "\n" ); } @@ -268,10 +280,10 @@ void TomomichiDebugMenu_ArtMusGraphics() " .word gMenuCallback\n" " .word debug_sub_808BCBC+1\n" " .word gDebug_03000700\n" - " .word gDebug_03000700+0x4\n" + " .word gDebug_03000704\n" " .word 0x6f33\n" - " .word gDebug_03000700+0x8\n" - " .word gDebug_03000700+0xd\n" + " .word gDebug_03000708\n" + " .word gDebug_0300070D\n" "\n" ); } @@ -332,10 +344,10 @@ void TomomichiDebugMenu_PreviewData() " .word gMenuCallback\n" " .word debug_sub_808BD30+1\n" " .word gDebug_03000700\n" - " .word gDebug_03000700+0x4\n" + " .word gDebug_03000704\n" " .word 0x6f33\n" - " .word gDebug_03000700+0x8\n" - " .word gDebug_03000700+0xe\n" + " .word gDebug_03000708\n" + " .word gDebug_0300070E\n" "\n" ); } @@ -383,7 +395,7 @@ void TomomichiDebugMenu_TrickHouse() "._17:\n" " .word gUnknown_Debug_083C0DF4\n" " .word gUnknown_Debug_083C0E15\n" - " .word gDebug_03000700+0x1e\n" + " .word gDebug_0300071E\n" " .word gMenuCallback\n" " .word debug_sub_808BDA4+1\n" "\n" @@ -428,7 +440,7 @@ void TomomichiDebugMenu_ControlEvents() " .align 2, 0\n" "._19:\n" " .word gUnknown_Debug_083C0E32\n" - " .word gDebug_03000700+0x1f\n" + " .word gDebug_0300071F\n" " .word gMenuCallback\n" " .word debug_sub_808BE2C+1\n" "\n" @@ -473,7 +485,7 @@ void TomomichiDebugMenu_ControlFlags() " .align 2, 0\n" "._21:\n" " .word gUnknown_Debug_083C0E7F\n" - " .word gDebug_03000700+0x20\n" + " .word gDebug_03000720\n" " .word gMenuCallback\n" " .word debug_sub_808BEB4+1\n" "\n" @@ -518,7 +530,7 @@ void TomomichiDebugMenu_ControlWorks() " .align 2, 0\n" "._23:\n" " .word gUnknown_Debug_083C0EF1\n" - " .word gDebug_03000700+0x21\n" + " .word gDebug_03000721\n" " .word gMenuCallback\n" " .word debug_sub_808BF3C+1\n" "\n" @@ -782,7 +794,7 @@ void debug_sub_808BDA4() " .align 2, 0\n" "._71:\n" " .word gMain\n" - " .word gDebug_03000700+0x1e\n" + " .word gDebug_0300071E\n" " .word gUnknown_Debug_083C0E15\n" "._69:\n" " mov r0, #0xa\n" @@ -855,7 +867,7 @@ void debug_sub_808BE2C() " .align 2, 0\n" "._79:\n" " .word gMain\n" - " .word gDebug_03000700+0x1f\n" + " .word gDebug_0300071F\n" " .word gUnknown_Debug_083C0E32\n" "._77:\n" " mov r0, #0xa\n" @@ -928,7 +940,7 @@ void debug_sub_808BEB4() " .align 2, 0\n" "._87:\n" " .word gMain\n" - " .word gDebug_03000700+0x20\n" + " .word gDebug_03000720\n" " .word gUnknown_Debug_083C0E7F\n" "._85:\n" " mov r0, #0xa\n" @@ -1001,7 +1013,7 @@ void debug_sub_808BF3C() " .align 2, 0\n" "._95:\n" " .word gMain\n" - " .word gDebug_03000700+0x21\n" + " .word gDebug_03000721\n" " .word gUnknown_Debug_083C0EF1\n" "._93:\n" " mov r0, #0xa\n" @@ -1730,7 +1742,7 @@ void debug_sub_808C3B0() " .align 2, 0\n" "._165:\n" " .word gUnknown_Debug_083C2938\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -1777,7 +1789,7 @@ void debug_sub_808C408() " .align 2, 0\n" "._167:\n" " .word gUnknown_Debug_083C2A48\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -1824,7 +1836,7 @@ void debug_sub_808C460() " .align 2, 0\n" "._169:\n" " .word gUnknown_Debug_083C2B4C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -1871,7 +1883,7 @@ void debug_sub_808C4B8() " .align 2, 0\n" "._171:\n" " .word gUnknown_Debug_083C2C80\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -1918,7 +1930,7 @@ void debug_sub_808C510() " .align 2, 0\n" "._173:\n" " .word gUnknown_Debug_083C2D8C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -1965,7 +1977,7 @@ void debug_sub_808C568() " .align 2, 0\n" "._175:\n" " .word gUnknown_Debug_083C2EB0\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -2012,7 +2024,7 @@ void debug_sub_808C5C0() " .align 2, 0\n" "._177:\n" " .word gUnknown_Debug_083C2FE0\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -2059,7 +2071,7 @@ void debug_sub_808C618() " .align 2, 0\n" "._179:\n" " .word gUnknown_Debug_083C3100\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -2106,7 +2118,7 @@ void debug_sub_808C670() " .align 2, 0\n" "._181:\n" " .word gUnknown_Debug_083C3194\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808C6C8+1\n" "\n" @@ -2147,7 +2159,7 @@ void debug_sub_808C6C8() "._187:\n" " .align 2, 0\n" "._186:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._184:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -2194,7 +2206,7 @@ void debug_sub_808C714() " .align 2, 0\n" "._191:\n" " .word gMain\n" - " .word gUnknown_Debug_083C31DC+0xa\n" + " .word gUnknown_Debug_83C31E6\n" "._189:\n" " add r0, r4, #0\n" " bl FlagClear\n" @@ -2259,7 +2271,7 @@ void debug_sub_808C764() " .align 2, 0\n" "._195:\n" " .word gUnknown_Debug_083C31DC\n" - " .word gUnknown_Debug_083C31DC+0xa\n" + " .word gUnknown_Debug_83C31E6\n" "\n" ); } @@ -2390,7 +2402,7 @@ void debug_sub_808C85C() " .align 2, 0\n" "._205:\n" " .word gUnknown_Debug_083C1E0C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2437,7 +2449,7 @@ void debug_sub_808C8B4() " .align 2, 0\n" "._207:\n" " .word gUnknown_Debug_083C1F38\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2484,7 +2496,7 @@ void debug_sub_808C90C() " .align 2, 0\n" "._209:\n" " .word gUnknown_Debug_083C206C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2531,7 +2543,7 @@ void debug_sub_808C964() " .align 2, 0\n" "._211:\n" " .word gUnknown_Debug_083C2190\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2578,7 +2590,7 @@ void debug_sub_808C9BC() " .align 2, 0\n" "._213:\n" " .word gUnknown_Debug_083C2264\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2625,7 +2637,7 @@ void debug_sub_808CA14() " .align 2, 0\n" "._215:\n" " .word gUnknown_Debug_083C2370\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2672,7 +2684,7 @@ void debug_sub_808CA6C() " .align 2, 0\n" "._217:\n" " .word gUnknown_Debug_083C248C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2719,7 +2731,7 @@ void debug_sub_808CAC4() " .align 2, 0\n" "._219:\n" " .word gUnknown_Debug_083C259C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2766,7 +2778,7 @@ void debug_sub_808CB1C() " .align 2, 0\n" "._221:\n" " .word gUnknown_Debug_083C26C8\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CB74+1\n" "\n" @@ -2807,7 +2819,7 @@ void debug_sub_808CB74() "._227:\n" " .align 2, 0\n" "._226:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._224:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -2854,7 +2866,7 @@ void debug_sub_808CBC0() " .align 2, 0\n" "._231:\n" " .word gMain\n" - " .word gUnknown_Debug_083C2710+0xa\n" + " .word gUnknown_Debug_083C271A\n" "._229:\n" " add r0, r4, #0\n" " bl FlagClear\n" @@ -2919,7 +2931,7 @@ void debug_sub_808CC10() " .align 2, 0\n" "._235:\n" " .word gUnknown_Debug_083C2710\n" - " .word gUnknown_Debug_083C2710+0xa\n" + " .word gUnknown_Debug_083C271A\n" "\n" ); } @@ -3050,7 +3062,7 @@ void debug_sub_808CD08() " .align 2, 0\n" "._245:\n" " .word gUnknown_Debug_083C1B7C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CE10+1\n" "\n" @@ -3097,7 +3109,7 @@ void debug_sub_808CD60() " .align 2, 0\n" "._247:\n" " .word gUnknown_Debug_083C1BF0\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CE10+1\n" "\n" @@ -3144,7 +3156,7 @@ void debug_sub_808CDB8() " .align 2, 0\n" "._249:\n" " .word gUnknown_Debug_083C1C2C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808CE10+1\n" "\n" @@ -3185,7 +3197,7 @@ void debug_sub_808CE10() "._255:\n" " .align 2, 0\n" "._254:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._252:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -3232,7 +3244,7 @@ void debug_sub_808CE5C() " .align 2, 0\n" "._259:\n" " .word gMain\n" - " .word gUnknown_Debug_083C1C34+0x4\n" + " .word gUnknown_Debug_083C1C38\n" "._257:\n" " add r0, r4, #0\n" " bl FlagClear\n" @@ -3297,7 +3309,7 @@ void debug_sub_808CEAC() " .align 2, 0\n" "._263:\n" " .word gUnknown_Debug_083C1C34\n" - " .word gUnknown_Debug_083C1C34+0x4\n" + " .word gUnknown_Debug_083C1C38\n" "\n" ); } @@ -3428,7 +3440,7 @@ void debug_sub_808CFA4() " .align 2, 0\n" "._273:\n" " .word gUnknown_Debug_083C13D8\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3475,7 +3487,7 @@ void debug_sub_808CFFC() " .align 2, 0\n" "._275:\n" " .word gUnknown_Debug_083C1465\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3522,7 +3534,7 @@ void debug_sub_808D054() " .align 2, 0\n" "._277:\n" " .word gUnknown_Debug_083C1503\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3569,7 +3581,7 @@ void debug_sub_808D0AC() " .align 2, 0\n" "._279:\n" " .word gUnknown_Debug_083C158A\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3616,7 +3628,7 @@ void debug_sub_808D104() " .align 2, 0\n" "._281:\n" " .word gUnknown_Debug_083C1647\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3663,7 +3675,7 @@ void debug_sub_808D15C() " .align 2, 0\n" "._283:\n" " .word gUnknown_Debug_083C1712\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3710,7 +3722,7 @@ void debug_sub_808D1B4() " .align 2, 0\n" "._285:\n" " .word gUnknown_Debug_083C17F8\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3757,7 +3769,7 @@ void debug_sub_808D20C() " .align 2, 0\n" "._287:\n" " .word gUnknown_Debug_083C18B8\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3804,7 +3816,7 @@ void debug_sub_808D264() " .align 2, 0\n" "._289:\n" " .word gDebug_0x83C1974\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D2BC+1\n" "\n" @@ -3845,7 +3857,7 @@ void debug_sub_808D2BC() "._295:\n" " .align 2, 0\n" "._294:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._292:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -4088,7 +4100,7 @@ void debug_sub_808D450() " .align 2, 0\n" "._313:\n" " .word gUnknown_Debug_083C10BD\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D500+1\n" "\n" @@ -4135,7 +4147,7 @@ void debug_sub_808D4A8() " .align 2, 0\n" "._315:\n" " .word gUnknown_Debug_083C1149\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D500+1\n" "\n" @@ -4176,7 +4188,7 @@ void debug_sub_808D500() "._321:\n" " .align 2, 0\n" "._320:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._318:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -4419,7 +4431,7 @@ void debug_sub_808D694() " .align 2, 0\n" "._339:\n" " .word gUnknown_Debug_083C1212\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D744+1\n" "\n" @@ -4466,7 +4478,7 @@ void debug_sub_808D6EC() " .align 2, 0\n" "._341:\n" " .word gUnknown_Debug_083C1288\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D744+1\n" "\n" @@ -4507,7 +4519,7 @@ void debug_sub_808D744() "._347:\n" " .align 2, 0\n" "._346:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._344:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -4749,7 +4761,7 @@ void debug_sub_808D8D8() " .align 2, 0\n" "._365:\n" " .word gUnknown_Debug_083C1A9C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808D930+1\n" "\n" @@ -4790,7 +4802,7 @@ void debug_sub_808D930() "._371:\n" " .align 2, 0\n" "._370:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._368:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -4837,7 +4849,7 @@ void debug_sub_808D97C() " .align 2, 0\n" "._375:\n" " .word gMain\n" - " .word gUnknown_Debug_083C1AAC+0x2\n" + " .word gUnknown_Debug_083C1AAE\n" "._373:\n" " add r0, r4, #0\n" " bl FlagClear\n" @@ -4902,7 +4914,7 @@ void debug_sub_808D9CC() " .align 2, 0\n" "._379:\n" " .word gUnknown_Debug_083C1AAC\n" - " .word gUnknown_Debug_083C1AAC+0x2\n" + " .word gUnknown_Debug_083C1AAE\n" "\n" ); } @@ -5174,7 +5186,7 @@ void debug_sub_808DBA0() " .align 2, 0\n" "._403:\n" " .word gUnknown_Debug_083C432C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5221,7 +5233,7 @@ void debug_sub_808DBF8() " .align 2, 0\n" "._405:\n" " .word gUnknown_Debug_083C436C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5268,7 +5280,7 @@ void debug_sub_808DC50() " .align 2, 0\n" "._407:\n" " .word gUnknown_Debug_083C43B4\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5315,7 +5327,7 @@ void debug_sub_808DCA8() " .align 2, 0\n" "._409:\n" " .word gUnknown_Debug_083C43FC\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5362,7 +5374,7 @@ void debug_sub_808DD00() " .align 2, 0\n" "._411:\n" " .word gUnknown_Debug_083C4444\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5409,7 +5421,7 @@ void debug_sub_808DD58() " .align 2, 0\n" "._413:\n" " .word gUnknown_Debug_083C448C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5456,7 +5468,7 @@ void debug_sub_808DDB0() " .align 2, 0\n" "._415:\n" " .word gUnknown_Debug_83C44C4\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5503,7 +5515,7 @@ void debug_sub_808DE08() " .align 2, 0\n" "._417:\n" " .word gUnknown_Debug_83C44EC\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5550,7 +5562,7 @@ void debug_sub_808DE60() " .align 2, 0\n" "._419:\n" " .word gUnknown_Debug_083C4534\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808DEB8+1\n" "\n" @@ -5591,7 +5603,7 @@ void debug_sub_808DEB8() "._425:\n" " .align 2, 0\n" "._424:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._422:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -5654,7 +5666,7 @@ void debug_sub_808DF04() " .align 2, 0\n" "._428:\n" " .word gUnknown_Debug_083C457C\n" - " .word gUnknown_Debug_083C457C+0xa\n" + " .word gUnknown_Debug_083C4586\n" "\n" ); } @@ -5712,7 +5724,7 @@ void debug_sub_808DF64() " .align 2, 0\n" "._435:\n" " .word 0xffff\n" - " .word gUnknown_Debug_083C457C+0xa\n" + " .word gUnknown_Debug_083C4586\n" "\n" ); } @@ -5843,7 +5855,7 @@ void debug_sub_808E054() " .align 2, 0\n" "._445:\n" " .word gUnknown_Debug_083C3AA0\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E264+1\n" "\n" @@ -5890,7 +5902,7 @@ void debug_sub_808E0AC() " .align 2, 0\n" "._447:\n" " .word gUnknown_Debug_83C3AE0\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E264+1\n" "\n" @@ -5937,7 +5949,7 @@ void debug_sub_808E104() " .align 2, 0\n" "._449:\n" " .word gUnknown_Debug_83C3B28\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E264+1\n" "\n" @@ -5984,7 +5996,7 @@ void debug_sub_808E15C() " .align 2, 0\n" "._451:\n" " .word gUnknown_Debug_83C3B70\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E264+1\n" "\n" @@ -6031,7 +6043,7 @@ void debug_sub_808E1B4() " .align 2, 0\n" "._453:\n" " .word gUnknown_Debug_83C3BB8\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E264+1\n" "\n" @@ -6078,7 +6090,7 @@ void debug_sub_808E20C() " .align 2, 0\n" "._455:\n" " .word gUnknown_Debug_83C3C00\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E264+1\n" "\n" @@ -6119,7 +6131,7 @@ void debug_sub_808E264() "._461:\n" " .align 2, 0\n" "._460:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._458:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -6182,7 +6194,7 @@ void debug_sub_808E2B0() " .align 2, 0\n" "._464:\n" " .word gUnknown_Debug_083C3C48\n" - " .word gUnknown_Debug_083C3C48+0x6\n" + " .word gUnknown_Debug_83C3C4E\n" "\n" ); } @@ -6240,7 +6252,7 @@ void debug_sub_808E310() " .align 2, 0\n" "._471:\n" " .word 0xffff\n" - " .word gUnknown_Debug_083C3C48+0x6\n" + " .word gUnknown_Debug_83C3C4E\n" "\n" ); } @@ -6371,7 +6383,7 @@ void debug_sub_808E400() " .align 2, 0\n" "._481:\n" " .word gUnknown_Debug_083C347C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E5B8+1\n" "\n" @@ -6418,7 +6430,7 @@ void debug_sub_808E458() " .align 2, 0\n" "._483:\n" " .word gUnknown_Debug_083C3494\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E5B8+1\n" "\n" @@ -6465,7 +6477,7 @@ void debug_sub_808E4B0() " .align 2, 0\n" "._485:\n" " .word gUnknown_Debug_083C34A4\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E5B8+1\n" "\n" @@ -6512,7 +6524,7 @@ void debug_sub_808E508() " .align 2, 0\n" "._487:\n" " .word gUnknown_Debug_083C34D4\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E5B8+1\n" "\n" @@ -6559,7 +6571,7 @@ void debug_sub_808E560() " .align 2, 0\n" "._489:\n" " .word gUnknown_Debug_083C351C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E5B8+1\n" "\n" @@ -6600,7 +6612,7 @@ void debug_sub_808E5B8() "._495:\n" " .align 2, 0\n" "._494:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._492:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -6665,7 +6677,7 @@ void debug_sub_808E604() " .align 2, 0\n" "._501:\n" " .word 0xffff\n" - " .word gUnknown_Debug_083C3544+0x6\n" + " .word gUnknown_Debug_083C354A\n" "\n" ); } @@ -6721,7 +6733,7 @@ void debug_sub_808E660() " .align 2, 0\n" "._505:\n" " .word gUnknown_Debug_083C3544\n" - " .word gUnknown_Debug_083C3544+0x6\n" + " .word gUnknown_Debug_083C354A\n" "\n" ); } @@ -6852,7 +6864,7 @@ void debug_sub_808E754() " .align 2, 0\n" "._515:\n" " .word gUnknown_Debug_083C470C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E804+1\n" "\n" @@ -6899,7 +6911,7 @@ void debug_sub_808E7AC() " .align 2, 0\n" "._517:\n" " .word gUnknown_Debug_083C4754C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808E804+1\n" "\n" @@ -6940,7 +6952,7 @@ void debug_sub_808E804() "._523:\n" " .align 2, 0\n" "._522:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._520:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -7005,7 +7017,7 @@ void debug_sub_808E850() " .align 2, 0\n" "._529:\n" " .word 0xffff\n" - " .word gUnknown_Debug_083C478C+0x2\n" + " .word gUnknown_Debug_083C478E\n" "\n" ); } @@ -7061,7 +7073,7 @@ void debug_sub_808E8AC() " .align 2, 0\n" "._533:\n" " .word gUnknown_Debug_083C478C\n" - " .word gUnknown_Debug_083C478C+0x2\n" + " .word gUnknown_Debug_083C478E\n" "\n" ); } @@ -7192,7 +7204,7 @@ void debug_sub_808E9A0() " .align 2, 0\n" "._543:\n" " .word gUnknown_Debug_083C369C\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808EA50+1\n" "\n" @@ -7239,7 +7251,7 @@ void debug_sub_808E9F8() " .align 2, 0\n" "._545:\n" " .word gUnknown_Debug_083C36E4\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" " .word gMenuCallback\n" " .word debug_sub_808EA50+1\n" "\n" @@ -7280,7 +7292,7 @@ void debug_sub_808EA50() "._551:\n" " .align 2, 0\n" "._550:\n" - " .word gDebug_03000700+0xf\n" + " .word gDebug_0300070F\n" "._548:\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -7343,7 +7355,7 @@ void debug_sub_808EA9C() " .align 2, 0\n" "._554:\n" " .word gUnknown_Debug_083C371C\n" - " .word gUnknown_Debug_083C371C+0x2\n" + " .word gUnknown_Debug_083C371E\n" "\n" ); } @@ -7401,7 +7413,7 @@ void debug_sub_808EAFC() " .align 2, 0\n" "._561:\n" " .word 0xffff\n" - " .word gUnknown_Debug_083C371C+0x2\n" + " .word gUnknown_Debug_083C371E\n" "\n" ); } @@ -7802,7 +7814,7 @@ void debug_sub_808ED9C() " .align 2, 0\n" "._606:\n" " .word gMain\n" - " .word gDebug_03000700+0x8\n" + " .word gDebug_03000708\n" "._604:\n" " mov r0, #0x0\n" "._605:\n" @@ -7826,7 +7838,7 @@ void debug_sub_808ED9C() "._612:\n" " .align 2, 0\n" "._611:\n" - " .word gDebug_03000700+0x8\n" + " .word gDebug_03000708\n" "._609:\n" " mov r0, #0x1\n" " neg r0, r0\n" @@ -7850,7 +7862,7 @@ void debug_sub_808ED9C() "._615:\n" " .align 2, 0\n" "._614:\n" - " .word gDebug_03000700+0x8\n" + " .word gDebug_03000708\n" "\n" ); } @@ -7911,7 +7923,7 @@ void debug_sub_808EE3C() " .align 2, 0\n" "._622:\n" " .word gMain\n" - " .word gDebug_03000700+0xc\n" + " .word gDebug_0300070C\n" "\n" ); } @@ -7962,7 +7974,7 @@ void debug_sub_808EE9C() " .align 2, 0\n" "._631:\n" " .word gMain\n" - " .word gDebug_03000700+0xd\n" + " .word gDebug_0300070D\n" "._629:\n" " mov r0, #0x0\n" "._630:\n" @@ -7983,7 +7995,7 @@ void debug_sub_808EE9C() "._637:\n" " .align 2, 0\n" "._636:\n" - " .word gDebug_03000700+0xd\n" + " .word gDebug_0300070D\n" "._634:\n" " mov r0, #0xf\n" "._635:\n" @@ -8041,7 +8053,7 @@ void debug_sub_808EF14() " .align 2, 0\n" "._645:\n" " .word gMain\n" - " .word gDebug_03000700+0xe\n" + " .word gDebug_0300070E\n" "._643:\n" " mov r0, #0x0\n" "._644:\n" @@ -8062,7 +8074,7 @@ void debug_sub_808EF14() "._651:\n" " .align 2, 0\n" "._650:\n" - " .word gDebug_03000700+0xe\n" + " .word gDebug_0300070E\n" "._648:\n" " mov r0, #0xf\n" "._649:\n" @@ -8109,8 +8121,8 @@ void debug_sub_808EF8C() "._657:\n" " .align 2, 0\n" "._656:\n" - " .word gDebug_03000700+0x8\n" - " .word gDebug_03000700+0x10\n" + " .word gDebug_03000708\n" + " .word gDebug_03000710\n" "._654:\n" " add r1, r3, r4\n" " add r0, r2, #0\n" @@ -8194,7 +8206,7 @@ void debug_sub_808EF8C() "._667:\n" " .align 2, 0\n" "._666:\n" - " .word gDebug_03000700+0x10\n" + " .word gDebug_03000710\n" " .word gDebug_03000700\n" " .word gSpeciesNames\n" "._664:\n" @@ -8240,7 +8252,7 @@ void debug_sub_808EF8C() "._673:\n" " .align 2, 0\n" "._672:\n" - " .word gDebug_03000700+0x10\n" + " .word gDebug_03000710\n" " .word gDebug_03000700\n" "._669:\n" " cmp r6, #0x2\n" @@ -8252,7 +8264,7 @@ void debug_sub_808EF8C() "._678:\n" " .align 2, 0\n" "._677:\n" - " .word gDebug_03000700+0xc\n" + " .word gDebug_0300070C\n" "._668:\n" " ldr r4, ._680\n" "._676:\n" @@ -8283,7 +8295,7 @@ void debug_sub_808EF8C() "._681:\n" " .align 2, 0\n" "._680:\n" - " .word gDebug_03000700+0xd\n" + " .word gDebug_0300070D\n" "._674:\n" " ldr r4, ._682\n" " ldrb r0, [r4]\n" @@ -8318,7 +8330,7 @@ void debug_sub_808EF8C() "._683:\n" " .align 2, 0\n" "._682:\n" - " .word gDebug_03000700+0xe\n" + " .word gDebug_0300070E\n" "\n" ); } @@ -8354,8 +8366,8 @@ void debug_sub_808F168() "._686:\n" " .word +0x2015de0\n" " .word gDebug_03000700\n" - " .word gDebug_03000700+0x4\n" - " .word gDebug_03000700+0x8\n" + " .word gDebug_03000704\n" + " .word gDebug_03000708\n" " .word ._688\n" "._688:\n" " .word ._689\n" @@ -8388,7 +8400,7 @@ void debug_sub_808F168() " .word +0x2000000\n" " .word 0x15ddf\n" " .word 0x15dde\n" - " .word gDebug_03000700+0xc\n" + " .word gDebug_0300070C\n" " .word gUnknown_Debug_083C48BB\n" "._690:\n" " ldr r1, ._699\n" @@ -8410,7 +8422,7 @@ void debug_sub_808F168() " .word +0x2000000\n" " .word 0x15ddf\n" " .word 0x15dde\n" - " .word gDebug_03000700+0xd\n" + " .word gDebug_0300070D\n" "._691:\n" " ldr r1, ._702\n" " ldr r0, ._702 + 4\n" @@ -8432,7 +8444,7 @@ void debug_sub_808F168() " .word +0x2000000\n" " .word 0x15ddf\n" " .word 0x15dde\n" - " .word gDebug_03000700+0xe\n" + " .word gDebug_0300070E\n" "._692:\n" " ldr r1, ._705\n" " ldr r2, ._705 + 4\n" @@ -8526,7 +8538,7 @@ void debug_sub_808F2E0() "._715:\n" " .align 2, 0\n" "._714:\n" - " .word gDebug_03000700+0x10\n" + " .word gDebug_03000710\n" "._712:\n" " ldr r1, ._716\n" " mov r0, #0xa2\n" @@ -8544,7 +8556,7 @@ void debug_sub_808F2E0() "._717:\n" " .align 2, 0\n" "._716:\n" - " .word gDebug_03000700+0x10\n" + " .word gDebug_03000710\n" "\n" ); } @@ -8625,7 +8637,7 @@ void debug_sub_808F31C() "._719:\n" " .align 2, 0\n" "._718:\n" - " .word gDebug_03000700+0x10\n" + " .word gDebug_03000710\n" " .word 0x2710\n" "\n" ); diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 58ae28510..cc53f8c95 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -1,7 +1,10 @@ #if DEBUG #include "global.h" -EWRAM_DATA u8 unk_debug_ewram_0[56] = { 0 }; +EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 }; +EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 }; +EWRAM_DATA u8 gUnknown_Debug_2038A1C[4] = { 0 }; +EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 }; u8 byte_3005E30[0x20]; @@ -655,7 +658,7 @@ void InitSizeComparison() " .align 2, 0\n" "._54:\n" " .word gReservedSpritePaletteCount\n" - " .word unk_debug_ewram_0\n" + " .word gUnknown_Debug_20389EC\n" " .word 0x4000208\n" " .word 0x4000200\n" " .word debug_80C3758+1\n" @@ -1611,7 +1614,7 @@ void InitBattleForDebug() "._139:\n" " .align 2, 0\n" "._138:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gSaveBlock2\n" " .word byte_3005E30\n" " .word debug_80C47BC+1\n" @@ -1640,7 +1643,7 @@ void debug_80C41A8() "._141:\n" " .align 2, 0\n" "._140:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word debug_80C47BC+1\n" "\n" ); @@ -1815,7 +1818,7 @@ void debug_80C42B8() "._150:\n" " .word gUnknown_Debug_083F8194\n" " .word gUnknown_Debug_083F81A0\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gTasks\n" " .word debug_80C44EC+1\n" "._148:\n" @@ -1883,7 +1886,7 @@ void debug_80C4348() "._155:\n" " .align 2, 0\n" "._154:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word 0x4000042\n" " .word 0x177\n" " .word gTasks\n" @@ -1924,7 +1927,7 @@ void debug_80C43A8() " .align 2, 0\n" "._158:\n" " .word gMain\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gPlayerParty\n" " .word debug_80C41D4+1\n" "._156:\n" @@ -2014,7 +2017,7 @@ void debug_80C43A8() "._177:\n" " .align 2, 0\n" "._176:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" "._174:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x80\n" @@ -2053,7 +2056,7 @@ void debug_80C43A8() "._182:\n" " .align 2, 0\n" "._181:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gPlayerParty\n" " .word gTasks\n" " .word debug_80C4348+1\n" @@ -2105,7 +2108,7 @@ void debug_80C44EC() "._184:\n" " .align 2, 0\n" "._183:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word 0x4000042\n" " .word 0x79ef\n" " .word 0x17f\n" @@ -2147,7 +2150,7 @@ void debug_80C4550() " .align 2, 0\n" "._187:\n" " .word gMain\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gEnemyParty\n" " .word debug_80C41F4+1\n" "._185:\n" @@ -2237,7 +2240,7 @@ void debug_80C4550() "._206:\n" " .align 2, 0\n" "._205:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" "._203:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x80\n" @@ -2276,7 +2279,7 @@ void debug_80C4550() "._211:\n" " .align 2, 0\n" "._210:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gEnemyParty\n" " .word gTasks\n" " .word debug_80C44EC+1\n" @@ -2432,7 +2435,7 @@ void debug_80C4774() "._222:\n" " .align 2, 0\n" "._221:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gPlayerParty\n" " .word gEnemyParty\n" "._219:\n" @@ -2543,7 +2546,7 @@ void debug_80C47BC() " .word gUnknown_Debug_083F81D6\n" " .word gUnknown_Debug_083F81E5\n" " .word gUnknown_Debug_083F8068\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gTasks\n" " .word debug_80C48A0+1\n" "\n" @@ -2593,7 +2596,7 @@ void debug_80C48A0() "._227:\n" " .align 2, 0\n" "._226:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word 0x4000042\n" " .word 0x177\n" " .word gTasks\n" @@ -2654,7 +2657,7 @@ void debug_80C4900() " .word gMain\n" " .word debug_80C370C+1\n" " .word gSaveBlock2\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gBattleTypeFlags\n" " .word gUnknown_02023A14_50\n" " .word gTasks\n" @@ -2712,7 +2715,7 @@ void debug_80C4900() "._236:\n" " .word gBattleTypeFlags\n" " .word gUnknown_Debug_083F8068\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gUnknown_02023A14_50\n" " .word gTasks\n" " .word debug_80C4A60+1\n" @@ -2745,7 +2748,7 @@ void debug_80C4900() "._245:\n" " .align 2, 0\n" "._244:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" "._242:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x80\n" @@ -2775,7 +2778,7 @@ void debug_80C4900() "._249:\n" " .align 2, 0\n" "._248:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gTasks\n" " .word debug_80C48A0+1\n" "\n" @@ -2826,7 +2829,7 @@ void debug_80C4A60() "._251:\n" " .align 2, 0\n" "._250:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word 0x4000042\n" " .word 0x79ef\n" " .word 0x17f\n" @@ -2880,7 +2883,7 @@ void debug_80C4AC4() "._256:\n" " .align 2, 0\n" "._255:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gMain\n" " .word gUnknown_Debug_083F80D8\n" " .word byte_3005E30\n" @@ -3231,7 +3234,7 @@ void debug_80C4D14() " .word gUnknown_Debug_083F81C7\n" " .word gUnknown_Debug_083F81F5\n" " .word gUnknown_Debug_083F8202\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gTasks\n" " .word debug_80C4DB8+1\n" "\n" @@ -3281,7 +3284,7 @@ void debug_80C4DB8() "._294:\n" " .align 2, 0\n" "._293:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word 0x4000042\n" " .word 0x177\n" " .word gTasks\n" @@ -3319,7 +3322,7 @@ void debug_80C4E18() "._298:\n" " .align 2, 0\n" "._297:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gMain\n" " .word gTasks\n" " .word debug_80C42B8+1\n" @@ -3616,7 +3619,7 @@ void debug_80C5038() "._323:\n" " .align 2, 0\n" "._322:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word 0x4000042\n" " .word 0x177\n" " .word gTasks\n" @@ -3680,7 +3683,7 @@ void debug_80C5098() " .align 2, 0\n" "._331:\n" " .word gSaveBlock2\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gTasks\n" " .word debug_80C42B8+1\n" "._329:\n" @@ -3698,7 +3701,7 @@ void debug_80C5098() "._337:\n" " .align 2, 0\n" "._336:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" "._334:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x80\n" @@ -3727,7 +3730,7 @@ void debug_80C5098() "._341:\n" " .align 2, 0\n" "._340:\n" - " .word unk_debug_ewram_0+0x20\n" + " .word gUnknown_Debug_2038A0C\n" " .word gTasks\n" " .word debug_80C5038+1\n" "\n" @@ -3929,7 +3932,7 @@ void debug_80C5208() "._356:\n" " .align 2, 0\n" "._355:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word +0x2018000\n" " .word gSaveBlock2\n" "\n" @@ -3986,7 +3989,7 @@ void debug_80C527C() "._363:\n" " .align 2, 0\n" "._362:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -4079,7 +4082,7 @@ void InitCreatePokemon() " .word debug_80C3758+1\n" " .word debug_80C370C+1\n" " .word debug_80C53A4+1\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" "\n" ); @@ -4194,7 +4197,7 @@ void debug_80C53F0() " .align 2, 0\n" "._372:\n" " .word gMain\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gUnknown_Debug_083F8698\n" " .word 0x169\n" " .word gTasks\n" @@ -4255,7 +4258,7 @@ void debug_80C53F0() "._382:\n" " .align 2, 0\n" "._381:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gUnknown_Debug_083F872A\n" "._379:\n" " ldr r0, ._384\n" @@ -4299,7 +4302,7 @@ void debug_80C53F0() "._389:\n" " .align 2, 0\n" "._388:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._386:\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -4342,7 +4345,7 @@ void debug_80C53F0() "._398:\n" " .align 2, 0\n" "._397:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" "._395:\n" " ldrh r1, [r4, #0x2e]\n" @@ -4383,7 +4386,7 @@ void debug_80C53F0() "._402:\n" " .align 2, 0\n" "._401:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" " .word gTasks\n" " .word debug_80C53C0+1\n" @@ -4438,7 +4441,7 @@ void debug_80C55E4() " .align 2, 0\n" "._405:\n" " .word gUnknown_Debug_083F8698\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" " .word gMain\n" " .word gTasks\n" @@ -4645,7 +4648,7 @@ void debug_80C5738() " .align 2, 0\n" "._428:\n" " .word gUnknown_Debug_083F850A\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gUnknown_Debug_083F8514\n" " .word gUnknown_Debug_083F851C\n" "._426:\n" @@ -4702,7 +4705,7 @@ void debug_80C5738() " .align 2, 0\n" "._432:\n" " .word gUnknown_Debug_083F8524\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gUnknown_Debug_083F852D\n" " .word gUnknown_Debug_083F8537\n" "._430:\n" @@ -4835,7 +4838,7 @@ void debug_80C5738() "._478:\n" " .align 2, 0\n" "._477:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gSpeciesNames\n" "._445:\n" " ldr r0, ._483\n" @@ -4853,7 +4856,7 @@ void debug_80C5738() "._484:\n" " .align 2, 0\n" "._483:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._480:\n" " add r0, r6, #0\n" " add r0, r0, #0xa\n" @@ -4918,7 +4921,7 @@ void debug_80C5738() "._496:\n" " .align 2, 0\n" "._495:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gMoveNames\n" "._451:\n" " add r0, r6, #0\n" @@ -4957,7 +4960,7 @@ void debug_80C5738() "._500:\n" " .align 2, 0\n" "._499:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._497:\n" " add r0, r5, #0\n" " add r0, r0, #0xe\n" @@ -5000,7 +5003,7 @@ void debug_80C5738() "._506:\n" " .align 2, 0\n" "._505:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gAbilityNames\n" "._474:\n" " add r0, r6, #0\n" @@ -5019,7 +5022,7 @@ void debug_80C5738() " .align 2, 0\n" "._508:\n" " .word gUnknown_Debug_083F86E8\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._472:\n" " add r0, r6, #0\n" " add r0, r0, #0xc\n" @@ -5034,7 +5037,7 @@ void debug_80C5738() "._512:\n" " .align 2, 0\n" "._511:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._473:\n" " ldr r0, ._515\n" " ldr r0, [r0]\n" @@ -5050,7 +5053,7 @@ void debug_80C5738() "._516:\n" " .align 2, 0\n" "._515:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gUnknown_Debug_083F854A\n" "._513:\n" " add r0, r6, #0\n" @@ -5090,7 +5093,7 @@ void debug_80C5738() " .align 2, 0\n" "._520:\n" " .word gNatureNames\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -5110,7 +5113,7 @@ void debug_80C5B60() "._523:\n" " .align 2, 0\n" "._522:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -5172,7 +5175,7 @@ void debug_80C5B74() "._555:\n" " .align 2, 0\n" "._554:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._532:\n" " ldr r0, ._557\n" " ldr r0, [r0]\n" @@ -5184,7 +5187,7 @@ void debug_80C5B74() "._558:\n" " .align 2, 0\n" "._557:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._529:\n" " ldr r4, ._560\n" " ldr r1, [r4]\n" @@ -5219,7 +5222,7 @@ void debug_80C5B74() "._561:\n" " .align 2, 0\n" "._560:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gExperienceTables\n" " .word gBaseStats\n" "._530:\n" @@ -5233,7 +5236,7 @@ void debug_80C5B74() "._564:\n" " .align 2, 0\n" "._563:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._552:\n" " ldr r0, ._565\n" " ldr r0, [r0]\n" @@ -5248,7 +5251,7 @@ void debug_80C5B74() "._566:\n" " .align 2, 0\n" "._565:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -5414,7 +5417,7 @@ void debug_80C5C94() "._568:\n" " .align 2, 0\n" "._567:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -5537,7 +5540,7 @@ void debug_80C5DEC() "._570:\n" " .align 2, 0\n" "._569:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -5660,7 +5663,7 @@ void debug_80C5EF4() "._572:\n" " .align 2, 0\n" "._571:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "\n" ); } @@ -5953,7 +5956,7 @@ void debug_80C5FFC() "._578:\n" " .word gUnknown_Debug_083F8758\n" " .word gUnknown_Debug_083F875C\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word gUnknown_Debug_083F86E8+0x4\n" "\n" ); @@ -6002,7 +6005,7 @@ void debug_80C627C() "._590:\n" " .align 2, 0\n" "._589:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" "._580:\n" " ldr r4, ._593\n" @@ -6051,7 +6054,7 @@ void debug_80C627C() "._594:\n" " .align 2, 0\n" "._593:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" " .word gUnknown_Debug_083F8698\n" "._586:\n" @@ -6094,7 +6097,7 @@ void debug_80C627C() "._597:\n" " .align 2, 0\n" "._596:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" "\n" ); @@ -6191,7 +6194,7 @@ void debug_80C6384() " .align 2, 0\n" "._600:\n" " .word gUnknown_Debug_083F8698\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x16b\n" " .word 0x16d\n" "\n" @@ -6267,7 +6270,7 @@ void debug_80C643C() " .align 2, 0\n" "._605:\n" " .word gUnknown_Debug_083F8698\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x16b\n" " .word 0x169\n" " .word 0x16d\n" @@ -6402,7 +6405,7 @@ void debug_80C6544() " .align 2, 0\n" "._614:\n" " .word gUnknown_Debug_083F8698\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" " .word gUnknown_Debug_083F8554\n" " .word gUnknown_Debug_083F8768\n" @@ -6458,7 +6461,7 @@ void debug_80C6544() " .align 2, 0\n" "._624:\n" " .word gUnknown_Debug_083F8698\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" " .word 0x169\n" "\n" ); @@ -6497,7 +6500,7 @@ void debug_80C6630() "._630:\n" " .align 2, 0\n" "._629:\n" - " .word unk_debug_ewram_0+0x30\n" + " .word gUnknown_Debug_2038A1C\n" "._627:\n" " mov r0, #0x4\n" "._626:\n" @@ -7065,7 +7068,7 @@ void InitSeePokemonGraphics() " .word 0x1f0b\n" " .word 0x1e0a\n" " .word debug_80C6B00+1\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word +0x2018000\n" " .word 0x115\n" " .word gSpriteTemplate_83F8874\n" @@ -7504,7 +7507,7 @@ void debug_80C6CB8() "._669:\n" " .align 2, 0\n" "._668:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gMonFrontPicTable\n" " .word gMonFrontPicCoords\n" " .word gUnknown_081FAF4C\n" @@ -7615,7 +7618,7 @@ void debug_80C6EE8() " .align 2, 0\n" "._670:\n" " .word gPlttBufferUnfaded+0x100\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0xffffff00\n" " .word 0xfffffc1f\n" " .word gUnknown_Debug_083F8813\n" @@ -7681,7 +7684,7 @@ void debug_80C6FA8() "._679:\n" " .align 2, 0\n" "._678:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._676:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x2\n" @@ -7707,7 +7710,7 @@ void debug_80C6FA8() "._683:\n" " .align 2, 0\n" "._682:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gTasks\n" " .word debug_80C71FC+1\n" "._680:\n" @@ -7738,7 +7741,7 @@ void debug_80C6FA8() "._687:\n" " .align 2, 0\n" "._686:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x4000040\n" " .word 0x51ef\n" " .word 0x4167\n" @@ -7766,7 +7769,7 @@ void debug_80C6FA8() "._692:\n" " .align 2, 0\n" "._691:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x5000102\n" "._689:\n" " ldrh r1, [r4, #0x30]\n" @@ -7792,7 +7795,7 @@ void debug_80C6FA8() "._697:\n" " .align 2, 0\n" "._696:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x5000102\n" "._694:\n" " ldrh r1, [r4, #0x2e]\n" @@ -7827,7 +7830,7 @@ void debug_80C6FA8() "._702:\n" " .align 2, 0\n" "._701:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._699:\n" " ldrh r0, [r1]\n" " mov r1, #0x0\n" @@ -7872,7 +7875,7 @@ void debug_80C6FA8() "._705:\n" " .align 2, 0\n" "._704:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gPlttBufferUnfaded+0x200\n" " .word 0xffffff00\n" " .word gPlttBufferFaded+0x100\n" @@ -7919,7 +7922,7 @@ void debug_80C6FA8() "._708:\n" " .align 2, 0\n" "._707:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x5000142\n" " .word gUnknown_Debug_083F8790\n" "\n" @@ -7995,7 +7998,7 @@ void debug_80C71FC() " .align 2, 0\n" "._709:\n" " .word gSprites\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gTasks\n" " .word debug_80C6CB8+1\n" "\n" @@ -8033,7 +8036,7 @@ void debug_80C7294() " .align 2, 0\n" "._713:\n" " .word gMain\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x4000040\n" " .word 0x51ef\n" " .word 0x699f\n" @@ -8099,7 +8102,7 @@ void debug_80C7294() "._718:\n" " .align 2, 0\n" "._717:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x4000040\n" " .word 0x51ef\n" " .word 0x699f\n" @@ -8124,7 +8127,7 @@ void debug_80C7294() "._723:\n" " .align 2, 0\n" "._722:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._720:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x40\n" @@ -8142,7 +8145,7 @@ void debug_80C7294() "._728:\n" " .align 2, 0\n" "._727:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._725:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x10\n" @@ -8162,7 +8165,7 @@ void debug_80C7294() "._735:\n" " .align 2, 0\n" "._734:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._731:\n" " cmp r0, #0x2\n" " beq ._736 @cond_branch\n" @@ -8235,7 +8238,7 @@ void debug_80C7294() "._752:\n" " .align 2, 0\n" "._751:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._748:\n" " cmp r0, #0x2\n" " beq ._753 @cond_branch\n" @@ -8391,7 +8394,7 @@ void debug_80C74E4() "._765:\n" " .align 2, 0\n" "._764:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gPlttBufferUnfaded\n" " .word gPlttBufferFaded\n" " .word 0x101\n" @@ -8428,7 +8431,7 @@ void debug_80C7584() "._772:\n" " .align 2, 0\n" "._771:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._767:\n" " ldrh r0, [r3, #0xc]\n" " lsl r0, r0, #0x16\n" @@ -8639,7 +8642,7 @@ void InitSeeTrainers() " .word 0x1f0b\n" " .word 0x1e0a\n" " .word debug_80C777C+1\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word +0x2018000\n" " .word gSpriteTemplate_83F8874\n" " .word gSprites\n" @@ -8970,7 +8973,7 @@ void debug_80C7934() "._787:\n" " .align 2, 0\n" "._786:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gTrainerFrontPicTable\n" " .word gTrainerFrontPicCoords\n" " .word gUnknown_081FAF4C\n" @@ -9072,7 +9075,7 @@ void debug_80C7A54() " .align 2, 0\n" "._788:\n" " .word gPlttBufferUnfaded+0x100\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0xffffff00\n" " .word 0xfffffc1f\n" " .word gUnknown_Debug_083F8813\n" @@ -9138,7 +9141,7 @@ void debug_80C7B14() "._797:\n" " .align 2, 0\n" "._796:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._794:\n" " mov r0, #0x80\n" " lsl r0, r0, #0x2\n" @@ -9164,7 +9167,7 @@ void debug_80C7B14() "._801:\n" " .align 2, 0\n" "._800:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gTasks\n" " .word debug_80C7D44+1\n" "._798:\n" @@ -9195,7 +9198,7 @@ void debug_80C7B14() "._805:\n" " .align 2, 0\n" "._804:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x4000040\n" " .word 0x51ef\n" " .word 0x4167\n" @@ -9223,7 +9226,7 @@ void debug_80C7B14() "._810:\n" " .align 2, 0\n" "._809:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x5000102\n" "._807:\n" " ldrh r1, [r4, #0x30]\n" @@ -9282,7 +9285,7 @@ void debug_80C7B14() "._820:\n" " .align 2, 0\n" "._819:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._817:\n" " ldrh r0, [r1]\n" " mov r1, #0x0\n" @@ -9327,7 +9330,7 @@ void debug_80C7B14() "._823:\n" " .align 2, 0\n" "._822:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gPlttBufferUnfaded+0x200\n" " .word 0xffffff00\n" " .word gPlttBufferFaded+0x100\n" @@ -9437,7 +9440,7 @@ void debug_80C7D44() " .align 2, 0\n" "._826:\n" " .word gSprites\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gTasks\n" " .word debug_80C7934+1\n" "\n" @@ -9475,7 +9478,7 @@ void debug_80C7DDC() " .align 2, 0\n" "._830:\n" " .word gMain\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x4000040\n" " .word 0x51ef\n" " .word 0x699f\n" @@ -9541,7 +9544,7 @@ void debug_80C7DDC() "._835:\n" " .align 2, 0\n" "._834:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word 0x4000040\n" " .word 0x51ef\n" " .word 0x699f\n" @@ -9566,7 +9569,7 @@ void debug_80C7DDC() "._840:\n" " .align 2, 0\n" "._839:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._837:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x40\n" @@ -9584,7 +9587,7 @@ void debug_80C7DDC() "._845:\n" " .align 2, 0\n" "._844:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._842:\n" " ldrh r1, [r3, #0x30]\n" " mov r0, #0x10\n" @@ -9604,7 +9607,7 @@ void debug_80C7DDC() "._852:\n" " .align 2, 0\n" "._851:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._848:\n" " cmp r0, #0x2\n" " beq ._853 @cond_branch\n" @@ -9677,7 +9680,7 @@ void debug_80C7DDC() "._869:\n" " .align 2, 0\n" "._868:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" "._865:\n" " cmp r0, #0x2\n" " beq ._870 @cond_branch\n" @@ -9833,7 +9836,7 @@ void debug_80C802C() "._882:\n" " .align 2, 0\n" "._881:\n" - " .word unk_debug_ewram_0+0x34\n" + " .word gUnknown_Debug_2038A20\n" " .word gPlttBufferUnfaded\n" " .word gPlttBufferFaded\n" " .word 0x101\n" diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 45cde2cc0..9324ea1c1 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -817,10 +817,10 @@ void debug_sub_806F9E4() ._159:\n\ .align 2, 0\n\ ._158:\n\ - .word gUnknown_08376500+0x4\n\ - .word gUnknown_08376500+0x9\n\ - .word gUnknown_08376500+0x17\n\ - .word gUnknown_08376500+0xd\n\ + .word gUnknown_Debug_0839AE94\n\ + .word gUnknown_Debug_0839AE99\n\ + .word gUnknown_Debug_0839AEA7\n\ + .word gUnknown_Debug_0839AE9D\n\ ._155:\n\ bl RtcCalcLocalTime\n\ add r0, r6, #0\n\ -- cgit v1.2.3 From e03633d6bc1e1cd155bc258edbb7783020b4bdb7 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 16:55:48 -0600 Subject: fix more false offsets --- src/battle/battle_2.c | 218 ++++++++++----------- src/battle/battle_4.c | 4 +- src/battle/battle_ai.c | 16 +- src/battle/battle_controller_opponent.c | 12 +- src/battle/battle_controller_player.c | 4 +- src/battle/battle_records.c | 4 +- src/battle/battle_util.c | 12 +- src/contest.c | 14 +- src/debug/nohara_debug_menu.c | 14 +- src/engine/link.c | 13 +- src/engine/mystery_event_menu.c | 2 +- src/field/berry.c | 4 +- src/field/field_weather.c | 13 +- src/field/slot_machine.c | 104 ++++++----- src/pokenav_before.c | 322 ++++++++++++++++---------------- 15 files changed, 383 insertions(+), 373 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 41d00546d..6808ad61c 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -354,7 +354,7 @@ void InitBattle(void) " .word gBattle_BG2_Y\n" " .word gBattle_BG3_X\n" " .word gBattle_BG3_Y\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" " .word gBattleTerrain\n" " .word gUnknown_03004210\n" " .word gUnknown_030041D0\n" @@ -417,7 +417,7 @@ void InitBattle(void) "._15:\n" " .word sub_800EC9C+1\n" " .word gBattleTypeFlags\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" " .word gEnemyParty\n" " .word gTrainerBattleOpponent\n" " .word gMain\n" @@ -638,7 +638,7 @@ void sub_800EC9C() "._56:\n" " .align 2, 0\n" "._55:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x160cb\n" " .word gBattleCommunication\n" " .word ._57\n" @@ -710,8 +710,8 @@ void sub_800EC9C() "._76:\n" " .word gBattleTypeFlags\n" " .word gReceivedRemoteLinkPlayers\n" - " .word +0x2000000\n" - " .word gUnknown_02023A14+0x50\n" + " .word gSharedMem\n" + " .word gUnknown_02023A14_50\n" " .word 0x2211\n" " .word gLinkPlayers\n" " .word gBattleCommunication\n" @@ -873,7 +873,7 @@ void sub_800EC9C() "._106:\n" " .word sub_800DE30+1\n" " .word gTasks\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word gBlockRecvBuffer\n" "._60:\n" " bl sub_8007ECC\n" @@ -1295,7 +1295,7 @@ void sub_800F104() "._152:\n" " .align 2, 0\n" "._151:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x160cb\n" " .word 0x160c4\n" " .word gBattleCommunication\n" @@ -1355,10 +1355,10 @@ void sub_800F104() " .align 2, 0\n" "._165:\n" " .word gReceivedRemoteLinkPlayers\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" " .word 0x2211\n" " .word gLinkPlayers\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word gBattleCommunication\n" "._147:\n" " bl GetBlockReceivedStatus\n" @@ -1586,7 +1586,7 @@ void sub_800F298() "._189:\n" " .align 2, 0\n" "._188:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x160cb\n" " .word gBattleCommunication\n" " .word ._190\n" @@ -1646,10 +1646,10 @@ void sub_800F298() " .align 2, 0\n" "._206:\n" " .word gReceivedRemoteLinkPlayers\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" " .word 0x2211\n" " .word gLinkPlayers\n" - " .word +0x2000000\n" + " .word gSharedMem\n" "._192:\n" " bl GetBlockReceivedStatus\n" " mov r1, #0xf\n" @@ -3181,12 +3181,12 @@ void debug_sub_8010818() "._502:\n" " .align 2, 0\n" "._501:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word 0x115\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_02023A14+0xde\n" - " .word UnkDebug0+0x1b4\n" + " .word gUnknown_Debug_2023B02\n" + " .word gUnknown_Debug_821F56C\n" "\n" ); } @@ -3345,7 +3345,7 @@ void debug_sub_80108B8() " .word 0x4000050\n" " .word gMonShinyPalette_CircledQuestionMark+0x18\n" " .word gMonShinyPalette_CircledQuestionMark+0x834\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word gMonShinyPalette_CircledQuestionMark+0xa8c\n" " .word 0x50001e0\n" " .word debug_sub_8011D40+1\n" @@ -3356,7 +3356,7 @@ void debug_sub_80108B8() " .word gUnknown_Debug_030043A0\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._505:\n" " ldr r0, ._510\n" " mov r1, #0x0\n" @@ -3377,7 +3377,7 @@ void debug_sub_80108B8() "._511:\n" " .align 2, 0\n" "._510:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x160bb\n" "\n" ); @@ -3458,7 +3458,7 @@ void debug_sub_8010AAC() " .align 2, 0\n" "._520:\n" " .word gBaseStats\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004360\n" "._517:\n" @@ -3607,7 +3607,7 @@ void debug_sub_8010B80() "._535:\n" " .align 2, 0\n" "._534:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A0\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004360\n" @@ -3800,8 +3800,8 @@ void debug_sub_8010CAC() " .word gUnknown_Debug_030043A0\n" " .word debug_sub_80108B8+1\n" " .word gPlayerParty\n" - " .word gUnknown_02023A14+0x52\n" - " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_2023A76\n" + " .word gUnknown_Debug_2023B02\n" " .word gBattleMoves+0x4\n" "._550:\n" " ldr r1, ._556\n" @@ -4078,7 +4078,7 @@ void debug_sub_8010CAC() "._598:\n" " .align 2, 0\n" "._597:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A4\n" "._593:\n" " ldr r1, ._600\n" @@ -4089,7 +4089,7 @@ void debug_sub_8010CAC() "._601:\n" " .align 2, 0\n" "._600:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._594:\n" " ldr r3, ._604\n" " add r2, r3, #0\n" @@ -4110,7 +4110,7 @@ void debug_sub_8010CAC() "._605:\n" " .align 2, 0\n" "._604:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._602:\n" " mov r1, #0x8\n" " strh r1, [r2]\n" @@ -4250,11 +4250,11 @@ void debug_sub_8010CAC() "._619:\n" " .align 2, 0\n" "._618:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A0\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004360\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" " .word gMain\n" " .word ._620\n" "._620:\n" @@ -4287,7 +4287,7 @@ void debug_sub_8010CAC() "._629:\n" " .align 2, 0\n" "._628:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A4\n" "._624:\n" " ldr r1, ._631\n" @@ -4298,7 +4298,7 @@ void debug_sub_8010CAC() "._632:\n" " .align 2, 0\n" "._631:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._625:\n" " ldr r3, ._635\n" " add r2, r3, #0\n" @@ -4319,7 +4319,7 @@ void debug_sub_8010CAC() "._636:\n" " .align 2, 0\n" "._635:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._633:\n" " mov r1, #0x0\n" " strh r1, [r2]\n" @@ -4456,11 +4456,11 @@ void debug_sub_8010CAC() "._651:\n" " .align 2, 0\n" "._650:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A0\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004360\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" " .word gMain\n" "._648:\n" " mov r4, r8\n" @@ -4492,9 +4492,9 @@ void debug_sub_8010CAC() "._656:\n" " .align 2, 0\n" "._655:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004360\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" "._657:\n" " add r0, r5, #6\n" " add r0, r1, r0\n" @@ -4614,9 +4614,9 @@ void debug_sub_8010CAC() "._669:\n" " .align 2, 0\n" "._668:\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004360\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" "._670:\n" " ldrh r0, [r3]\n" " sub r0, r0, r1\n" @@ -4913,9 +4913,9 @@ void debug_sub_8011498() " .word gMain\n" " .word debug_sub_8010CAC+1\n" " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_2023B02\n" " .word gUnknown_Debug_03004360\n" - " .word UnkDebug0+0x1ac\n" + " .word gUnknown_Debug_821F564\n" "._689:\n" " add r0, r6, #6\n" " add r0, r2, r0\n" @@ -4988,10 +4988,10 @@ void debug_sub_8011498() " .align 2, 0\n" "._692:\n" " .word gMain\n" - " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_2023B02\n" " .word gUnknown_Debug_030043A8\n" " .word gUnknown_Debug_03004360\n" - " .word UnkDebug0+0x1ac\n" + " .word gUnknown_Debug_821F564\n" "._694:\n" " ldrh r0, [r4]\n" " sub r0, r0, r1\n" @@ -5156,10 +5156,10 @@ void debug_sub_801174C() " .word gUnknown_020297ED\n" " .word gSaveBlock2\n" " .word str_821F631\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gBattleTypeFlags\n" - " .word UnkDebug0+0x1e0\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_Debug_821F598\n" + " .word gUnknown_02023A14_50\n" " .word gBattleTerrain\n" " .word gTrainerBattleOpponent\n" " .word gPlayerPartyCount\n" @@ -5272,8 +5272,8 @@ void debug_sub_801174C() " .align 2, 0\n" "._719:\n" " .word gEnemyParty\n" - " .word gUnknown_02023A14+0x52\n" - " .word gUnknown_02023A14+0x56\n" + " .word gUnknown_Debug_2023A76\n" + " .word gUnknown_Debug_2023A7A\n" "._717:\n" " mov r2, #0x0\n" " ldsh r0, [r0, r2]\n" @@ -5316,7 +5316,7 @@ void debug_sub_801174C() " .align 2, 0\n" "._726:\n" " .word gEnemyParty\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._723:\n" " cmp r0, #0x2\n" " beq ._728 @cond_branch\n" @@ -5429,10 +5429,10 @@ void debug_sub_801174C() " .align 2, 0\n" "._741:\n" " .word gPlayerParty\n" - " .word gUnknown_02023A14+0x98\n" + " .word gUnknown_Debug_2023ABC\n" " .word gPlayerPartyCount\n" - " .word gUnknown_02023A14+0x9c\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023AC0\n" + " .word gUnknown_Debug_2023A76\n" "._739:\n" " mov r1, #0x0\n" " ldsh r0, [r0, r1]\n" @@ -5574,14 +5574,14 @@ void debug_sub_801174C() " .align 2, 0\n" "._750:\n" " .word gPlayerParty\n" - " .word gUnknown_02023A14+0x98\n" + " .word gUnknown_Debug_2023ABC\n" " .word Str_821F649\n" - " .word gUnknown_02023A14+0x50\n" - " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_02023A14_50\n" + " .word gUnknown_Debug_2023B02\n" " .word gEnemyParty\n" " .word gBattleMoves+0x4\n" - " .word gUnknown_02023A14+0x10e\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023B32\n" + " .word gUnknown_Debug_2023A76\n" "._748:\n" " cmp r0, #0x7\n" " bne ._752 @cond_branch\n" @@ -5592,7 +5592,7 @@ void debug_sub_801174C() "._755:\n" " .align 2, 0\n" "._754:\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" "._752:\n" " cmp r0, #0x6\n" " bne ._756 @cond_branch\n" @@ -5614,8 +5614,8 @@ void debug_sub_801174C() "._760:\n" " .align 2, 0\n" "._759:\n" - " .word gUnknown_02023A14+0x50\n" - " .word +0x2000000\n" + " .word gUnknown_02023A14_50\n" + " .word gSharedMem\n" " .word 0x160a3\n" "._757:\n" " ldr r0, ._762\n" @@ -5625,7 +5625,7 @@ void debug_sub_801174C() "._763:\n" " .align 2, 0\n" "._762:\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x160a3\n" "._756:\n" " cmp r0, #0x5\n" @@ -5642,7 +5642,7 @@ void debug_sub_801174C() "._767:\n" " .align 2, 0\n" "._766:\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" "._764:\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -5772,11 +5772,11 @@ void debug_sub_801174C() "._773:\n" " .align 2, 0\n" "._772:\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" " .word gMain\n" " .word debug_sub_80108B8+1\n" " .word unref_sub_800D684+1\n" - " .word UnkDebug0+0x1f4\n" + " .word gUnknown_Debug_821F5AC\n" "\n" ); } @@ -5834,7 +5834,7 @@ void debug_sub_8011D40() " .align 2, 0\n" "._774:\n" " .word 0x40000d4\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x6004000\n" " .word 0x80000800\n" " .word gBattle_BG0_X\n" @@ -6121,9 +6121,9 @@ void debug_sub_8011EA0() " .align 2, 0\n" "._823:\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" " .word gUnknown_Debug_03004370\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004360\n" " .word gSpeciesNames\n" "._817:\n" @@ -6147,7 +6147,7 @@ void debug_sub_8011EA0() " .align 2, 0\n" "._826:\n" " .word gBattleTextBuff1\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004360\n" "._814:\n" " mov r0, #0x0\n" @@ -6226,9 +6226,9 @@ void debug_sub_8011EA0() "._830:\n" " .word gUnknown_Debug_03004370\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" " .word gUnknown_Debug_03004360\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" "._828:\n" " ldr r1, ._833\n" " mov r0, sl\n" @@ -6257,10 +6257,10 @@ void debug_sub_8011EA0() "._834:\n" " .align 2, 0\n" "._833:\n" - " .word UnkDebug0+0x26c\n" + " .word Str_821F624\n" " .word gUnknown_Debug_03004370\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" "._816:\n" " mov r0, #0x0\n" " mov r1, #0x4\n" @@ -6308,8 +6308,8 @@ void debug_sub_8011EA0() "._839:\n" " .word gUnknown_Debug_03004370\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x6c\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_821F424\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004360\n" "._836:\n" " cmp r0, #0x2\n" @@ -6373,7 +6373,7 @@ void debug_sub_8011EA0() "._849:\n" " .word gBattleTextBuff1\n" " .word gUnknown_Debug_03004370\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" "._815:\n" " ldr r6, ._851\n" " ldr r3, ._851 + 4\n" @@ -6422,10 +6422,10 @@ void debug_sub_8011EA0() " .align 2, 0\n" "._851:\n" " .word gBattleTextBuff1\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004360\n" " .word gUnknown_Debug_03004370\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" "\n" ); } @@ -6572,12 +6572,12 @@ void debug_sub_8012294() " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004370\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x1ac\n" + " .word gUnknown_Debug_821F564\n" " .word gUnknown_Debug_030043A8\n" - " .word UnkDebug0+0x1ae\n" - " .word UnkDebug0+0x1b0\n" + " .word gUnknown_Debug_821F566\n" + " .word gUnknown_Debug_821F568\n" " .word gUnknown_Debug_03004360\n" - " .word gUnknown_02023A14+0xde\n" + " .word gUnknown_Debug_2023B02\n" " .word gMoveNames\n" "\n" ); @@ -6700,9 +6700,9 @@ void debug_sub_80123D8() "._858:\n" " .word gUnknown_Debug_03004370\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x1d4\n" + " .word gUnknown_Debug_821F58C\n" " .word gUnknown_Debug_03004360\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gBaseStats\n" " .word gAbilityNames\n" "._856:\n" @@ -6745,7 +6745,7 @@ void debug_sub_80123D8() " .word gBattleTextBuff1\n" " .word gAbilityNames\n" " .word gUnknown_Debug_03004370\n" - " .word UnkDebug0+0x1d4\n" + " .word gUnknown_Debug_821F58C\n" "\n" ); } @@ -6792,9 +6792,9 @@ void debug_sub_8012540() " .align 2, 0\n" "._862:\n" " .word gBattleTextBuff1\n" - " .word gUnknown_02023A14+0x52\n" + " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_03004370\n" - " .word UnkDebug0+0x6c\n" + " .word gUnknown_Debug_821F424\n" "\n" ); } @@ -6839,8 +6839,8 @@ void debug_sub_80125A0() "._865:\n" " .align 2, 0\n" "._864:\n" - " .word +0x2000000\n" - " .word UnkDebug0+0x2c8\n" + " .word gSharedMem\n" + " .word gUnknown_Debug_821F680\n" " .word gUnknown_Debug_030043A0\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004360\n" @@ -6879,8 +6879,8 @@ void debug_sub_80125E4() "._867:\n" " .align 2, 0\n" "._866:\n" - " .word +0x2000000\n" - " .word UnkDebug0+0x2c8\n" + " .word gSharedMem\n" + " .word gUnknown_Debug_821F680\n" " .word gUnknown_Debug_030043A0\n" " .word gUnknown_Debug_030043A4\n" " .word gUnknown_Debug_03004360\n" @@ -6910,8 +6910,8 @@ void debug_sub_8012628() "._869:\n" " .align 2, 0\n" "._868:\n" - " .word +0x2000000\n" - " .word UnkDebug0+0x3e0\n" + " .word gSharedMem\n" + " .word gUnknown_Debug_821F798\n" " .word gUnknown_Debug_030043A8\n" " .word gUnknown_Debug_03004360\n" "\n" @@ -6940,8 +6940,8 @@ void debug_sub_8012658() "._871:\n" " .align 2, 0\n" "._870:\n" - " .word +0x2000000\n" - " .word UnkDebug0+0x3e0\n" + " .word gSharedMem\n" + " .word gUnknown_Debug_821F798\n" " .word gUnknown_Debug_030043A8\n" " .word gUnknown_Debug_03004360\n" "\n" @@ -7126,7 +7126,7 @@ void debug_sub_8012688() "._874:\n" " .align 2, 0\n" "._873:\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word 0x40000d4\n" " .word 0x85006000\n" " .word 0x400004c\n" @@ -7341,8 +7341,8 @@ void debug_sub_8012938() "._880:\n" " .word gUnknown_03004210\n" " .word gBattleTextBuff1\n" - " .word UnkDebug0+0x400\n" - " .word gUnknown_02023A14+0x13e\n" + " .word Str_821F7B8\n" + " .word gUnknown_Debug_2023B62\n" " .word gCurrentMove\n" " .word gSprites\n" " .word gTasks\n" @@ -7444,7 +7444,7 @@ void debug_sub_80129F8() " .word gMonPaletteTable\n" " .word gSprites\n" " .word gTasks\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" "\n" ); } @@ -7638,7 +7638,7 @@ void debug_sub_8012B70() "._901:\n" " .word gTasks\n" " .word gUnknown_03004210\n" - " .word UnkDebug0+0x422\n" + " .word Str_821F7DA\n" "\n" ); } @@ -7762,7 +7762,7 @@ void debug_sub_8012C08() " .align 2, 0\n" "._907:\n" " .word gTasks\n" - " .word UnkDebug0+0x432\n" + " .word Str_821F7EA\n" " .word gUnknown_03004210\n" " .word BattleText_YesNo\n" "\n" @@ -7833,7 +7833,7 @@ void debug_sub_8012D10() " .align 2, 0\n" "._920:\n" " .word gUnknown_03004210\n" - " .word UnkDebug0+0x405\n" + " .word Str_821F7BD\n" " .word gTasks\n" "._915:\n" " ldr r2, ._924\n" @@ -7988,7 +7988,7 @@ void debug_sub_8012D10() "._953:\n" " .align 2, 0\n" "._952:\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word gCurrentMove\n" "._939:\n" " mov r0, #0x1\n" @@ -8059,7 +8059,7 @@ void debug_sub_8012D10() "._974:\n" " .align 2, 0\n" "._973:\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word gCurrentMove\n" "._968:\n" " ldr r1, ._977\n" @@ -8135,7 +8135,7 @@ void debug_sub_8012D10() "._996:\n" " .align 2, 0\n" "._995:\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word gCurrentMove\n" "._983:\n" " mov r0, #0x1\n" @@ -8218,7 +8218,7 @@ void debug_sub_8012D10() "._1021:\n" " .align 2, 0\n" "._1020:\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word gCurrentMove\n" "._1018:\n" " strb r3, [r2]\n" @@ -8372,7 +8372,7 @@ void debug_sub_8012D10() " .align 2, 0\n" "._1050:\n" " .word gTasks\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word 0x19b\n" "._1047:\n" " mov r0, #0x2\n" @@ -8458,7 +8458,7 @@ void debug_sub_8012D10() " .align 2, 0\n" "._1065:\n" " .word gTasks\n" - " .word gUnknown_02023A14+0x13e\n" + " .word gUnknown_Debug_2023B62\n" " .word 0x19b\n" "._1062:\n" " mov r0, #0x2\n" @@ -8912,7 +8912,7 @@ void debug_sub_80138CC() " .align 2, 0\n" "._1167:\n" " .word gActiveBank\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x160fd\n" " .word ._1169\n" "._1169:\n" @@ -9095,7 +9095,7 @@ void debug_sub_80139E4() "._1199:\n" " .align 2, 0\n" "._1198:\n" - " .word gUnknown_02023A14+0x50\n" + " .word gUnknown_02023A14_50\n" " .word gActiveBank\n" " .word gNoOfAllBanks\n" " .word gBattleMainFunc\n" @@ -9471,7 +9471,7 @@ void sub_8010874() " .word gStatuses3\n" " .word gUnknown_02024C70\n" " .word gUnknown_02024C5C\n" - " .word +0x2017100\n" + " .word gSharedMem+0x17100\n" " .word gSideTimers\n" " .word gSideAffecting\n" " .word gBankAttacker\n" @@ -9481,7 +9481,7 @@ void sub_8010874() " .word gHitMarker\n" " .word gBattleTypeFlags\n" " .word gSaveBlock2\n" - " .word +0x2000000\n" + " .word gSharedMem\n" " .word 0x16084\n" " .word gMultiHitCounter\n" " .word gBattleOutcome\n" diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 3415d9337..9fe1f6cb0 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -1090,7 +1090,7 @@ static const u8 sTerrainToType[] = TYPE_NORMAL, // plain }; -const u8 sBallCatchBonuses[] = +static const u8 sBallCatchBonuses[] = { 20, 15, 10, 15 // Ultra, Great, Poke, Safari }; @@ -5103,7 +5103,7 @@ static void atk15_seteffectwithchance(void) ._1045:\n\ .word gBattleMoves\n\ .word gCurrentMove\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word gBattleCommunication\n\ .word gBattleMoveFlags\n\ ._1043:\n\ diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index ffc9281e4..87a66c2c7 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -381,7 +381,7 @@ void BattleAI_SetupAIData() "._17:\n" " .align 2, 0\n" "._16:\n" - " .word +0x2016800\n" + " .word gSharedMem+0x16800\n" " .word gActiveBank\n" " .word gBitTable\n" " .word +0x2016c00\n" @@ -410,7 +410,7 @@ void BattleAI_SetupAIData() "._20:\n" " .word gBankTarget\n" " .word gBattleTypeFlags\n" - " .word +0x2016800\n" + " .word gSharedMem+0x16800\n" "._18:\n" " mov r2, #0x80\n" " lsl r2, r2, #0x3\n" @@ -425,7 +425,7 @@ void BattleAI_SetupAIData() "._25:\n" " .align 2, 0\n" "._24:\n" - " .word +0x2016800\n" + " .word gSharedMem+0x16800\n" "._22:\n" " mov r0, #0x10\n" " and r0, r0, r1\n" @@ -438,7 +438,7 @@ void BattleAI_SetupAIData() "._29:\n" " .align 2, 0\n" "._28:\n" - " .word +0x2016800\n" + " .word gSharedMem+0x16800\n" "._26:\n" " mov r0, #0x90\n" " lsl r0, r0, #0x4\n" @@ -460,7 +460,7 @@ void BattleAI_SetupAIData() " .align 2, 0\n" "._33:\n" " .word gTrainerBattleOpponent\n" - " .word +0x2016800\n" + " .word gSharedMem+0x16800\n" "._31:\n" " ldr r3, ._36\n" " ldr r2, ._36 + 4\n" @@ -489,10 +489,10 @@ void BattleAI_SetupAIData() "._37:\n" " .align 2, 0\n" "._36:\n" - " .word +0x2016800\n" + " .word gSharedMem+0x16800\n" " .word gTrainers\n" - " .word gUnknown_02023A14+0x50\n" - " .word gUnknown_02023A14+0x4c\n" + " .word gUnknown_02023A14_50\n" + " .word gUnknown_02023A14_4C\n" "\n" ); } diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index cc69c0120..d2045b6c4 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1232,7 +1232,7 @@ void OpponentHandleTrainerThrow(void) ._481:\n\ .align 2, 0\n\ ._480:\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word +0x2000000\n\ .word 0x160a3\n\ ._478:\n\ @@ -1718,8 +1718,8 @@ void OpponentHandlecmd20(void) .align 2, 0\n\ ._549:\n\ .word gActiveBank\n\ - .word gUnknown_02023A64\n\ - .word gUnknown_02023A14+0x50\n\ + .word gBattleBufferA+4\n\ + .word gUnknown_02023A14_50\n\ .word gBattleMoves\n\ .word +0x2000000\n\ .word 0x1609e\n\ @@ -1781,7 +1781,7 @@ void OpponentHandlecmd20(void) .align 2, 0\n\ ._559:\n\ .word gBattleTypeFlags\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ ._556:\n\ bl Random\n\ add r1, r5, #0\n\ @@ -2048,7 +2048,7 @@ void OpponentHandlecmd20(void) ldr r6, _0803545C @ =gActiveBank\n\ ldrb r0, [r6]\n\ lsls r0, 9\n\ - ldr r1, _08035460 @ =gUnknown_02023A64\n\ + ldr r1, _08035460 @ =gBattleBufferA+4\n\ adds r5, r0, r1\n\ ldr r0, _08035464 @ =gBattleTypeFlags\n\ ldrh r1, [r0]\n\ @@ -2070,7 +2070,7 @@ void OpponentHandlecmd20(void) b _0803546C\n\ .align 2, 0\n\ _0803545C: .4byte gActiveBank\n\ -_08035460: .4byte gUnknown_02023A64\n\ +_08035460: .4byte gBattleBufferA+4\n\ _08035464: .4byte gBattleTypeFlags\n\ _08035468:\n\ movs r0, 0x1\n\ diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index cbca4a586..8875d5148 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -674,7 +674,7 @@ void sub_802C68C(void) .align 2, 0\n\ ._131:\n\ .word gActiveBank\n\ - .word gUnknown_02023A64\n\ + .word gBattleBufferA+4\n\ .word gMain\n\ .word gMoveSelectionCursor\n\ ._128:\n\ @@ -1328,7 +1328,7 @@ void sub_802C68C(void) .word gPlayerParty\n\ .word gMoveNames\n\ .word gDisplayedStringBattle\n\ - .word sBallCatchBonuses+0x4\n\ + .word gString_TurnJP\n\ .word gAnimMoveTurn\n\ .word gSprites\n\ .word gOamMatrixAllocBitmap\n\ diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 4fce958fa..9dd1d7b53 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -275,9 +275,9 @@ void debug_sub_81257E0(void) ._63:\n\ .align 2, 0\n\ ._62:\n\ - .word gUnknown_083F8410+0xa\n\ + .word gUnknown_Debug_4245CC+2\n\ .word gLinkPlayers\n\ - .word gUnknown_083F8410+0x5c\n\ + .word gUnknown_Debug_8424620\n\ .word gLinkPlayerMapObjects\n\ .word gSaveBlock1+0x30b8"); } diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index 817382911..620e0690a 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -3255,7 +3255,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) ._1079:\n\ .align 2, 0\n\ ._1078:\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word gBattleMoveFlags\n\ .word gBattleMons\n\ .word gBankAttacker\n\ @@ -3465,7 +3465,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) ._1112:\n\ .align 2, 0\n\ ._1111:\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word gBattleMoveFlags\n\ .word gBattleMons\n\ .word gBankAttacker\n\ @@ -3660,7 +3660,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) ._1143:\n\ .align 2, 0\n\ ._1142:\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word gBattleMoveFlags\n\ .word gBattleMons\n\ .word gBankAttacker\n\ @@ -3855,7 +3855,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) ._1174:\n\ .align 2, 0\n\ ._1173:\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word gBattleMoveFlags\n\ .word gBattleMons\n\ .word gBankAttacker\n\ @@ -4118,7 +4118,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) ._1218:\n\ .align 2, 0\n\ ._1217:\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ .word gBattleMoveFlags\n\ .word gBattleMons\n\ .word gBankAttacker\n\ @@ -7489,7 +7489,7 @@ u8 IsMonDisobedient(void) .word gBattleTypeFlags\n\ .word gBankAttacker\n\ .word gBattleMons\n\ - .word gUnknown_02023A14+0x50\n\ + .word gUnknown_02023A14_50\n\ ._1783:\n\ ldr r0, ._1794\n\ bl FlagGet\n\ diff --git a/src/contest.c b/src/contest.c index 834d641d0..950b26d0c 100644 --- a/src/contest.c +++ b/src/contest.c @@ -919,7 +919,7 @@ void sub_80ABEA0(u8 taskId) ._180:\n\ .word gDisplayedStringBattle\n\ .word gText_Contest_ButItCantParticipate\n\ - .word +0x2019204\n\ + .word gSharedMem+0x19204\n\ .word gStringVar4\n\ .word gMenuWindow\n\ .word gBattle_BG0_Y\n\ @@ -939,7 +939,7 @@ void sub_80ABEA0(u8 taskId) ._185:\n\ .align 2, 0\n\ ._184:\n\ - .word +0x2019204\n\ + .word gSharedMem+0x19204\n\ ._182:\n\ sub r0, r0, #0x1\n\ b ._186\n\ @@ -957,7 +957,7 @@ void sub_80ABEA0(u8 taskId) ._190:\n\ .align 2, 0\n\ ._189:\n\ - .word +0x2019204\n\ + .word gSharedMem+0x19204\n\ ._187:\n\ add r0, r1, #1\n\ ._186:\n\ @@ -987,7 +987,7 @@ void sub_80ABEA0(u8 taskId) ._194:\n\ .align 2, 0\n\ ._193:\n\ - .word +0x2019204\n\ + .word gSharedMem+0x19204\n\ .word gContestMons\n\ .word gContestPlayerMonIndex\n\ ._168:\n\ @@ -1445,7 +1445,7 @@ void debug_sub_80BA054() ._263:\n\ .align 2, 0\n\ ._262:\n\ - .word +0x2019348\n\ + .word gSharedMem+0x19348\n\ .word gBattleMonForms\n\ .word gContestPlayerMonIndex\n\ .word gContestMons\n\ @@ -1501,7 +1501,7 @@ void debug_sub_80BA054() .word gSprites\n\ .word SpriteCallbackDummy+1\n\ .word gContestPlayerMonIndex\n\ - .word +0x2019260\n\ + .word gSharedMem+0x19260\n\ ._241:\n\ ldr r0, ._273\n\ ldr r0, [r0]\n\ @@ -1535,7 +1535,7 @@ void debug_sub_80BA054() .word gAnimScriptCallback\n\ .word gAnimScriptActive\n\ .word gContestPlayerMonIndex\n\ - .word +0x2019204\n\ + .word gSharedMem+0x19204\n\ .word gTasks\n\ ._271:\n\ ldr r0, ._276\n\ diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index a932fee8d..bdfc8f9c5 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -1,9 +1,9 @@ #if DEBUG #include "global.h" -#define BSS_DATA __attribute__((section(".bss"))) - -BSS_DATA u8 gDebug_03000724[4] = { 0 }; +__attribute__((unused)) static u8 gDebug_03000724; +__attribute__((unused)) static u8 gDebug_03000725; +__attribute__((unused)) static u8 gDebug_03000726; __attribute__((naked)) void InitNoharaDebugMenu() @@ -127,7 +127,7 @@ void NoharaDebugMenu_TV() "._9:\n" " .align 2, 0\n" "._8:\n" - " .word gDebug_03000724+0x2\n" + " .word gDebug_03000726\n" " .word gUnknown_Debug_083C4B8C\n" " .word gMenuCallback\n" " .word debug_sub_808F4AC+1\n" @@ -414,7 +414,7 @@ void debug_sub_808F648() " .align 2, 0\n" "._35:\n" " .word gMain\n" - " .word gDebug_03000724+0x2\n" + " .word gDebug_03000726\n" "._33:\n" " bl debug_sub_808F6BC\n" " b ._40\n" @@ -933,7 +933,7 @@ void debug_sub_808F93C() " .align 2, 0\n" "._83:\n" " .word gMain\n" - " .word gDebug_03000724+0x1\n" + " .word gDebug_03000725\n" " .word gDebug_03000724\n" " .word gUnknown_Debug_083C4ABD+0xf\n" " .word gStringVar1\n" @@ -1671,7 +1671,7 @@ void debug_sub_808FF3C() " .align 2, 0\n" "._192:\n" " .word gMain\n" - " .word gDebug_03000724+0x1\n" + " .word gDebug_03000725\n" " .word gDebug_03000724\n" " .word gUnknown_Debug_083C4B20+0x4\n" " .word gStringVar1\n" diff --git a/src/engine/link.c b/src/engine/link.c index 5785a5a56..eb0ae4731 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -147,6 +147,9 @@ void (*gLinkCallback)(void); struct LinkPlayer gSavedLinkPlayers[MAX_LINK_PLAYERS]; u8 gShouldAdvanceLinkState; u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS]; +#if DEBUG +u8 gUnknown_Debug_30030E0; +#endif u8 gBlockRequestType; u8 gLastSendQueueCount; struct Link gLink; @@ -158,11 +161,11 @@ u8 deUnkValue1; u8 deUnkValue2; #endif -EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = {0}; -EWRAM_DATA bool8 gLinkTestDummyBool = {0}; -EWRAM_DATA u32 gFiller_20238B8 = {0}; -EWRAM_DATA u32 dword_20238BC = {0}; -EWRAM_DATA bool8 gLinkOpen = {0}; +EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = 0; +EWRAM_DATA bool8 gLinkTestDummyBool = 0; +EWRAM_DATA u32 gFiller_20238B8 = 0; +EWRAM_DATA u32 dword_20238BC = 0; +EWRAM_DATA bool8 gLinkOpen = 0; static const u16 sLinkTestDigitPalette[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal"); static const u32 sLinkTestDigitTiles[] = INCBIN_U32("graphics/interface/link_test_digits.4bpp"); diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index c80a8f3e9..2e526bb4a 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -602,7 +602,7 @@ void debug_sub_815D1D8() " .align 2, 0\n" "._161:\n" " .word gPaletteFade\n" - " .word gLinkTestBlockChecksums+0x8\n" + " .word gUnknown_Debug_30030E0\n" " .word Str_843DA70\n" " .word 0x43c\n" "._144:\n" diff --git a/src/field/berry.c b/src/field/berry.c index d6982479e..5c1ecd699 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1245,8 +1245,8 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) " .word 0x3170\n" " .word 0x47f\n" " .word 0x317c\n" - " .word gSpriteImage_83C172C+0x80\n" - " .word gSpriteImage_83C172C+0x500\n" + " .word gSpriteImage_UnusedCherry\n" + " .word gSpritePalette_UnusedCherry\n" " .word 0x35fc\n" " .word gSaveBlock1+0x3676\n" " .word gUnknown_Debug_839B6CE\n" diff --git a/src/field/field_weather.c b/src/field/field_weather.c index cf96b2e87..c411bf20b 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -43,7 +43,10 @@ struct WeatherCallbacks EWRAM_DATA struct Weather gWeather = {0}; EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0}; -EWRAM_DATA u16 gUnknown_0202FF58 = {0}; +EWRAM_DATA u16 gUnknown_0202FF58 = 0; +#if DEBUG +EWRAM_DATA u16 gUnknown_Debug_20301FE = 0; +#endif static const u8 *sPaletteGammaTypes; @@ -1297,7 +1300,7 @@ u8 debug_sub_8085564(void) .align 2, 0\n\ ._375:\n\ .word gMain\n\ - .word gUnknown_0202FF58+0x2\n\ + .word gUnknown_Debug_20301FE\n\ ._373:\n\ mov r0, #0xe\n\ ._374:\n\ @@ -1333,7 +1336,7 @@ u8 debug_sub_8085564(void) .align 2, 0\n\ ._380:\n\ .word gDebugText_Weather\n\ - .word gUnknown_0202FF58+0x2\n\ + .word gUnknown_Debug_20301FE\n\ .word gMain\n\ ._378:\n\ ldr r0, ._382\n\ @@ -1347,7 +1350,7 @@ u8 debug_sub_8085564(void) ._383:\n\ .align 2, 0\n\ ._382:\n\ - .word gUnknown_0202FF58+0x2"); + .word gUnknown_Debug_20301FE"); } __attribute__((naked)) @@ -1386,7 +1389,7 @@ u8 debug_sub_808560C(void) ._385:\n\ .align 2, 0\n\ ._384:\n\ - .word gUnknown_0202FF58+0x2\n\ + .word gUnknown_Debug_20301FE\n\ .word gWeather\n\ .word gDebugText_Weather\n\ .word gMenuCallback\n\ diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index b5b13c533..99770f6e3 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -226,6 +226,15 @@ static void sub_81064B8(void); static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); static void sub_81065DC(void); +#if DEBUG +__attribute__((section(".bss"))) u8 unk_debug_bss_1_0 = 0; +__attribute__((section(".bss"))) u8 unk_debug_bss_1_1 = 0; +__attribute__((section(".bss"))) u8 unk_debug_bss_1_2 = 0; +__attribute__((section(".bss"))) u8 unk_debug_bss_1_3 = 0; +__attribute__((section(".bss"))) u8 unk_debug_bss_1_4 = 0; +__attribute__((section(".bss"))) u32 unk_debug_bss_1_8 = 0; +#endif + static const struct UnkStruct1 *const gUnknown_083ED048[]; static const u16 gPalette_83EDE24[]; static const u8 gUnknown_083ECD04[][3]; @@ -252,7 +261,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) ._2:\n\ .align 2, 0\n\ ._1:\n\ - .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1_1\n\ .word CB2_SlotMachineSetup+1"); } #else @@ -282,7 +291,7 @@ void debug_sub_811609C() ._4:\n\ .align 2, 0\n\ ._3:\n\ - .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1_1\n\ .word CB2_SlotMachineSetup+1"); } #endif @@ -544,7 +553,7 @@ static void SlotMachineSetup_0_1(void) .word gSaveBlock1\n\ .word 0x494\n\ .word gUnknown_083ECCF8\n\ - .word unk_debug_bss_1+0x1"); + .word unk_debug_bss_1_1"); } #else static void SlotMachineSetup_0_1(void) @@ -744,8 +753,8 @@ static bool8 sub_8101E10(struct Task *task) .align 2, 0\n\ ._70:\n\ .word +0x2000000\n\ - .word unk_debug_bss_1+0x1\n\ - .word unk_debug_bss_1+0x4\n\ + .word unk_debug_bss_1_1\n\ + .word unk_debug_bss_1_4\n\ .word 0x270e"); } #else @@ -794,9 +803,9 @@ static bool8 sub_8101E3C(struct Task *task) ._78:\n\ .align 2, 0\n\ ._77:\n\ - .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1_1\n\ .word gMain\n\ - .word unk_debug_bss_1+0x4\n\ + .word unk_debug_bss_1_4\n\ .word +0x2000000\n\ ._75:\n\ mov r0, #0x0\n\ @@ -1101,7 +1110,7 @@ static bool8 sub_8101FA4(struct Task *task) .align 2, 0\n\ ._119:\n\ .word +0x2000000\n\ - .word unk_debug_bss_1+0x1"); + .word unk_debug_bss_1_1"); } #else static bool8 sub_8101FA4(struct Task *task) @@ -1182,9 +1191,9 @@ static bool8 sub_8102034(struct Task *task) ._128:\n\ .align 2, 0\n\ ._127:\n\ - .word unk_debug_bss_1+0x1\n\ - .word unk_debug_bss_1+0x4\n\ - .word unk_debug_bss_1+0x8\n\ + .word unk_debug_bss_1_1\n\ + .word unk_debug_bss_1_4\n\ + .word unk_debug_bss_1_8\n\ .word +0x2000000"); } #else @@ -1235,9 +1244,9 @@ static bool8 sub_8102058(struct Task *task) ._134:\n\ .align 2, 0\n\ ._133:\n\ - .word unk_debug_bss_1+0x1\n\ - .word unk_debug_bss_1+0x4\n\ - .word unk_debug_bss_1+0x8\n\ + .word unk_debug_bss_1_1\n\ + .word unk_debug_bss_1_4\n\ + .word unk_debug_bss_1_8\n\ .word +0x2000000\n\ ._130:\n\ ldr r0, ._136\n\ @@ -1322,7 +1331,7 @@ static bool8 sub_8102090(struct Task *task) .align 2, 0\n\ ._146:\n\ .word +0x2000000\n\ - .word unk_debug_bss_1\n\ + .word unk_debug_bss_1_0\n\ ._143:\n\ cmp r0, #0x4\n\ beq ._148 @cond_branch\n\ @@ -1821,7 +1830,7 @@ static bool8 sub_8102424(struct Task *task) ._235:\n\ .align 2, 0\n\ ._234:\n\ - .word unk_debug_bss_1+0x1\n\ + .word unk_debug_bss_1_1\n\ .word gSaveBlock1\n\ .word +0x2000000\n\ .word 0x494"); @@ -1980,9 +1989,9 @@ static void sub_8102484(void) .align 2, 0\n\ ._256:\n\ .word +0x2000000\n\ - .word unk_debug_bss_1+0x1\n\ - .word unk_debug_bss_1+0x2\n\ - .word unk_debug_bss_1+0x3\n\ + .word unk_debug_bss_1_1\n\ + .word unk_debug_bss_1_2\n\ + .word unk_debug_bss_1_3\n\ ._245:\n\ add r5, r4, #0\n\ ldrb r1, [r5, #0x4]\n\ @@ -4047,11 +4056,6 @@ static void sub_8104C5C(void) static void LoadSlotMachineWheelOverlay(void); -#if DEBUG -// should be static -__attribute__((section(".bss"))) u8 unk_debug_bss_1[0xC] = { 0 }; -#endif - static void sub_8104CAC(u8 arg0) { u8 i; @@ -5186,8 +5190,8 @@ void debug_sub_811B1C4() ".__2_:\n" " .align 2, 0\n" ".__1_:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5212,8 +5216,8 @@ void debug_sub_811B1EC() ".__4:\n" " .align 2, 0\n" ".__3:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5240,8 +5244,8 @@ void debug_sub_811B210() ".__6:\n" " .align 2, 0\n" ".__5:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5268,8 +5272,8 @@ void debug_sub_811B238() ".__8:\n" " .align 2, 0\n" ".__7:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5296,8 +5300,8 @@ void debug_sub_811B260() ".__10:\n" " .align 2, 0\n" ".__9:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5324,8 +5328,8 @@ void debug_sub_811B288() ".__12:\n" " .align 2, 0\n" ".__11:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5352,8 +5356,8 @@ void debug_sub_811B2B0() ".__14:\n" " .align 2, 0\n" ".__13:\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_0\n" "\n" ); } @@ -5371,7 +5375,7 @@ void debug_sub_811B2D8() ".__16:\n" " .align 2, 0\n" ".__15:\n" - " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1_3\n" "\n" ); } @@ -5650,7 +5654,7 @@ void debug_sub_811B310() ".__30:\n" " .word Str_841B249\n" " .word +0x2000000\n" - " .word unk_debug_bss_1\n" + " .word unk_debug_bss_1_0\n" ".__27:\n" " cmp r0, #0x4\n" " beq .__32 @cond_branch\n" @@ -5765,10 +5769,10 @@ void debug_sub_811B5D0() ".__52:\n" " .align 2, 0\n" ".__51:\n" - " .word unk_debug_bss_1\n" - " .word unk_debug_bss_1+0x2\n" - " .word unk_debug_bss_1+0x3\n" - " .word unk_debug_bss_1+0x4\n" + " .word unk_debug_bss_1_0\n" + " .word unk_debug_bss_1_2\n" + " .word unk_debug_bss_1_3\n" + " .word unk_debug_bss_1_4\n" " .word +0x2000000\n" "\n" ); @@ -5994,11 +5998,11 @@ void debug_sub_811B654() ".__92:\n" " .align 2, 0\n" ".__91:\n" - " .word unk_debug_bss_1+0x2\n" - " .word unk_debug_bss_1+0x3\n" + " .word unk_debug_bss_1_2\n" + " .word unk_debug_bss_1_3\n" " .word Str_841B254\n" " .word _841B270\n" - " .word unk_debug_bss_1+0x4\n" + " .word unk_debug_bss_1_4\n" ".__66:\n" " bl Menu_ProcessInput\n" " lsl r0, r0, #0x18\n" @@ -6027,7 +6031,7 @@ void debug_sub_811B654() ".__97:\n" " .align 2, 0\n" ".__96:\n" - " .word unk_debug_bss_1+0x2\n" + " .word unk_debug_bss_1_2\n" " .word _841B270\n" ".__68:\n" " ldr r2, .__100\n" @@ -6183,7 +6187,7 @@ void debug_sub_811B894() " .word +0x2000000\n" " .word 0x270f\n" " .word Str_841B2B0\n" - " .word unk_debug_bss_1+0x4\n" + " .word unk_debug_bss_1_4\n" " .word Str_841B2D3\n" ".__117:\n" " lsl r0, r2, #0x10\n" @@ -6373,7 +6377,7 @@ void debug_sub_811B894() " .align 2, 0\n" ".__163:\n" " .word Str_841B2E4\n" - " .word unk_debug_bss_1+0x4\n" + " .word unk_debug_bss_1_4\n" " .word +0x2000000\n" " .word Str_841B2BF\n" "\n" diff --git a/src/pokenav_before.c b/src/pokenav_before.c index f9e2beccb..b292e80c4 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -497,7 +497,7 @@ void sub_80EBDD8() ._65:\n\ .align 2, 0\n\ ._64:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._66\n\ ._66:\n\ .word ._67\n\ @@ -543,7 +543,7 @@ void sub_80EBDD8() ._87:\n\ .align 2, 0\n\ ._86:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6ddc\n\ .word 0x6dae\n\ ._68:\n\ @@ -570,7 +570,7 @@ void sub_80EBDD8() ._92:\n\ .align 2, 0\n\ ._91:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._70:\n\ bl sub_80F2598\n\ ldr r1, ._94\n\ @@ -581,7 +581,7 @@ void sub_80EBDD8() ._95:\n\ .align 2, 0\n\ ._94:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._71:\n\ bl sub_80EEE20\n\ ldr r1, ._99\n\ @@ -607,7 +607,7 @@ void sub_80EBDD8() ._100:\n\ .align 2, 0\n\ ._99:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._73:\n\ mov r0, #0x0\n\ bl sub_80EF248\n\ @@ -630,7 +630,7 @@ void sub_80EBDD8() ._105:\n\ .align 2, 0\n\ ._104:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._75:\n\ mov r0, #0x0\n\ bl sub_80F1B8C\n\ @@ -655,7 +655,7 @@ void sub_80EBDD8() ._109:\n\ .align 2, 0\n\ ._108:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._77:\n\ ldr r0, ._111\n\ bl SetVBlankCallback\n\ @@ -680,7 +680,7 @@ void sub_80EBDD8() ._115:\n\ .align 2, 0\n\ ._114:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._79:\n\ mov r0, #0x0\n\ bl sub_80EED2C\n\ @@ -692,7 +692,7 @@ void sub_80EBDD8() ._118:\n\ .align 2, 0\n\ ._117:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._80:\n\ ldr r0, ._121\n\ ldrb r1, [r0, #0x7]\n\ @@ -732,7 +732,7 @@ void sub_80EBDD8() ._126:\n\ .align 2, 0\n\ ._125:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._83:\n\ bl sub_80F1DF0\n\ ._110:\n\ @@ -748,7 +748,7 @@ void sub_80EBDD8() ._129:\n\ .align 2, 0\n\ ._128:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._84:\n\ bl sub_80F1E50\n\ lsl r0, r0, #0x18\n\ @@ -895,7 +895,7 @@ void sub_80EC00C() ._137:\n\ .align 2, 0\n\ ._136:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._138\n\ ._138:\n\ .word ._139\n\ @@ -945,7 +945,7 @@ void sub_80EC00C() .align 2, 0\n\ ._156:\n\ .word sub_80EBD80+1\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6ddc\n\ .word 0x6dad\n\ .word 0x6dae\n\ @@ -975,7 +975,7 @@ void sub_80EC00C() ._162:\n\ .align 2, 0\n\ ._161:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._142:\n\ mov r0, #0x0\n\ bl sub_80F1B8C\n\ @@ -1002,7 +1002,7 @@ void sub_80EC00C() ._167:\n\ .align 2, 0\n\ ._166:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._144:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -1041,7 +1041,7 @@ void sub_80EC00C() ._175:\n\ .align 2, 0\n\ ._174:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._147:\n\ ldr r0, ._178\n\ ldrb r1, [r0, #0x7]\n\ @@ -1067,7 +1067,7 @@ void sub_80EC00C() ._182:\n\ .align 2, 0\n\ ._181:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._149:\n\ mov r0, #0x0\n\ bl sub_80F2C80\n\ @@ -1092,7 +1092,7 @@ void sub_80EC00C() ._186:\n\ .align 2, 0\n\ ._185:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._151:\n\ bl sub_80F1DF0\n\ ._169:\n\ @@ -1108,7 +1108,7 @@ void sub_80EC00C() ._189:\n\ .align 2, 0\n\ ._188:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._152:\n\ bl sub_80F1E50\n\ lsl r0, r0, #0x18\n\ @@ -1139,7 +1139,7 @@ void sub_80EC00C() ._193:\n\ .align 2, 0\n\ ._192:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6dad\n\ .word sub_80EC268+1\n\ .word gLinkOpen\n\ @@ -1367,7 +1367,7 @@ void sub_80EC4A0() ._286:\n\ .align 2, 0\n\ ._285:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._287\n\ ._287:\n\ .word ._288\n\ @@ -1417,7 +1417,7 @@ void sub_80EC4A0() .align 2, 0\n\ ._308:\n\ .word gSaveBlock2\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._290:\n\ bl sub_80EEF34\n\ lsl r0, r0, #0x18\n\ @@ -1444,7 +1444,7 @@ void sub_80EC4A0() ._314:\n\ .align 2, 0\n\ ._313:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._291:\n\ ldr r0, ._318\n\ ldrb r1, [r0, #0x7]\n\ @@ -1472,7 +1472,7 @@ void sub_80EC4A0() ._322:\n\ .align 2, 0\n\ ._321:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._293:\n\ bl sub_80EF814\n\ b ._336\n\ @@ -1496,7 +1496,7 @@ void sub_80EC4A0() ._327:\n\ .align 2, 0\n\ ._326:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._296:\n\ mov r0, #0x4\n\ bl sub_80F2C80\n\ @@ -1514,7 +1514,7 @@ void sub_80EC4A0() ._330:\n\ .align 2, 0\n\ ._329:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._298:\n\ bl sub_80F2DD8\n\ ldr r0, ._332\n\ @@ -1528,7 +1528,7 @@ void sub_80EC4A0() .align 2, 0\n\ ._332:\n\ .word sub_80EBD30+1\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._299:\n\ bl sub_8055870\n\ b ._334\n\ @@ -1576,7 +1576,7 @@ void sub_80EC4A0() .word gLinkOpen\n\ .word 0x60075e0\n\ .word 0x600f800\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._302:\n\ ldr r0, ._341\n\ ldrb r1, [r0, #0x7]\n\ @@ -1709,7 +1709,7 @@ void sub_80EC67C() ._346:\n\ .align 2, 0\n\ ._345:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._347\n\ ._347:\n\ .word ._348\n\ @@ -1754,7 +1754,7 @@ void sub_80EC67C() ._365:\n\ .align 2, 0\n\ ._364:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._359:\n\ mov r0, #0x5\n\ bl PlaySE\n\ @@ -1768,7 +1768,7 @@ void sub_80EC67C() ._368:\n\ .align 2, 0\n\ ._367:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._349:\n\ ldr r1, ._371\n\ add r0, r4, r1\n\ @@ -1812,7 +1812,7 @@ void sub_80EC67C() ._379:\n\ .align 2, 0\n\ ._378:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6e90\n\ ._376:\n\ mov r0, #0xc1\n\ @@ -1836,7 +1836,7 @@ void sub_80EC67C() ._384:\n\ .align 2, 0\n\ ._383:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._352:\n\ mov r2, #0xc2\n\ lsl r2, r2, #0x2\n\ @@ -1911,7 +1911,7 @@ void sub_80EC67C() ._389:\n\ .word gPaletteFade\n\ .word gSaveBlock2\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6e90\n\ .word sub_80EC00C+1\n\ .word gLinkOpen\n\ @@ -2110,7 +2110,7 @@ void sub_80ECA10() ._457:\n\ .align 2, 0\n\ ._456:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._458\n\ ._458:\n\ .word ._459\n\ @@ -2160,7 +2160,7 @@ void sub_80ECA10() .align 2, 0\n\ ._476:\n\ .word sub_80EBD80+1\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6df0\n\ .word 0x6dad\n\ .word 0x6dae\n\ @@ -2190,7 +2190,7 @@ void sub_80ECA10() ._482:\n\ .align 2, 0\n\ ._481:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._462:\n\ mov r0, #0x1\n\ bl sub_80F1B8C\n\ @@ -2217,7 +2217,7 @@ void sub_80ECA10() ._487:\n\ .align 2, 0\n\ ._486:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._464:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -2256,7 +2256,7 @@ void sub_80ECA10() ._495:\n\ .align 2, 0\n\ ._494:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._467:\n\ bl sub_80F2598\n\ b ._496\n\ @@ -2299,7 +2299,7 @@ void sub_80ECA10() ._504:\n\ .align 2, 0\n\ ._503:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._471:\n\ bl sub_80F1DF0\n\ ._496:\n\ @@ -2315,7 +2315,7 @@ void sub_80ECA10() ._507:\n\ .align 2, 0\n\ ._506:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._472:\n\ bl sub_80F1E50\n\ lsl r0, r0, #0x18\n\ @@ -2346,7 +2346,7 @@ void sub_80ECA10() ._511:\n\ .align 2, 0\n\ ._510:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6dad\n\ .word sub_80EC86C+1\n\ .word gLinkOpen\n\ @@ -2506,7 +2506,7 @@ void sub_80ECD80() ._565:\n\ .align 2, 0\n\ ._564:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._566\n\ ._566:\n\ .word ._567\n\ @@ -2587,7 +2587,7 @@ void sub_80ECD80() ._601:\n\ .align 2, 0\n\ ._600:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._571:\n\ mov r0, #0x1\n\ bl sub_80F2D6C\n\ @@ -2599,7 +2599,7 @@ void sub_80ECD80() ._604:\n\ .align 2, 0\n\ ._603:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._572:\n\ mov r0, #0x5\n\ bl sub_80F2D6C\n\ @@ -2648,7 +2648,7 @@ void sub_80ECD80() ._613:\n\ .align 2, 0\n\ ._612:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._576:\n\ mov r0, #0x2\n\ bl sub_80F1B8C\n\ @@ -2675,7 +2675,7 @@ void sub_80ECD80() ._618:\n\ .align 2, 0\n\ ._617:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._578:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -2719,7 +2719,7 @@ void sub_80ECD80() ._628:\n\ .align 2, 0\n\ ._627:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._582:\n\ ldr r0, ._631\n\ ldrb r1, [r0, #0x7]\n\ @@ -2766,7 +2766,7 @@ void sub_80ECD80() ._636:\n\ .align 2, 0\n\ ._635:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x306\n\ ._585:\n\ mov r0, #0x5\n\ @@ -2798,7 +2798,7 @@ void sub_80ECD80() ._640:\n\ .align 2, 0\n\ ._639:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._587:\n\ bl sub_80F1E50\n\ lsl r0, r0, #0x18\n\ @@ -2829,7 +2829,7 @@ void sub_80ECD80() ._644:\n\ .align 2, 0\n\ ._643:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6dad\n\ .word sub_80ECC08+1\n\ .word gLinkOpen\n\ @@ -2970,7 +2970,7 @@ void sub_80ED01C() ._648:\n\ .align 2, 0\n\ ._647:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._649\n\ ._649:\n\ .word ._650\n\ @@ -3007,7 +3007,7 @@ void sub_80ED01C() ._672:\n\ .align 2, 0\n\ ._671:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._651:\n\ bl sub_80F1F10\n\ lsl r0, r0, #0x18\n\ @@ -3025,7 +3025,7 @@ void sub_80ED01C() ._677:\n\ .align 2, 0\n\ ._676:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._652:\n\ bl sub_80EEF34\n\ lsl r0, r0, #0x18\n\ @@ -3052,7 +3052,7 @@ void sub_80ED01C() ._682:\n\ .align 2, 0\n\ ._681:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._653:\n\ ldr r0, ._686\n\ ldrb r1, [r0, #0x7]\n\ @@ -3075,7 +3075,7 @@ void sub_80ED01C() .align 2, 0\n\ ._686:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._654:\n\ bl sub_80F2620\n\ ldr r1, ._689\n\ @@ -3086,7 +3086,7 @@ void sub_80ED01C() ._690:\n\ .align 2, 0\n\ ._689:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._655:\n\ bl sub_80F4D44\n\ ldr r1, ._693\n\ @@ -3112,7 +3112,7 @@ void sub_80ED01C() ._694:\n\ .align 2, 0\n\ ._693:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._691:\n\ ldr r1, ._696\n\ mov r0, #0xc1\n\ @@ -3122,7 +3122,7 @@ void sub_80ED01C() ._697:\n\ .align 2, 0\n\ ._696:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._657:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -3140,7 +3140,7 @@ void sub_80ED01C() ._702:\n\ .align 2, 0\n\ ._701:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._658:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -3155,7 +3155,7 @@ void sub_80ED01C() ._707:\n\ .align 2, 0\n\ ._706:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._659:\n\ mov r0, #0x0\n\ bl sub_80F0264\n\ @@ -3181,7 +3181,7 @@ void sub_80ED01C() ._712:\n\ .align 2, 0\n\ ._711:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._661:\n\ mov r0, #0x0\n\ bl sub_80F3008\n\ @@ -3193,7 +3193,7 @@ void sub_80ED01C() ._715:\n\ .align 2, 0\n\ ._714:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._662:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -3208,7 +3208,7 @@ void sub_80ED01C() ._720:\n\ .align 2, 0\n\ ._719:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._663:\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ @@ -3242,7 +3242,7 @@ void sub_80ED01C() ._726:\n\ .align 2, 0\n\ ._725:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._665:\n\ ldr r0, ._729\n\ ldrb r1, [r0, #0x7]\n\ @@ -3299,7 +3299,7 @@ void sub_80ED01C() ._734:\n\ .align 2, 0\n\ ._733:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x306\n\ ._668:\n\ ldr r4, ._737\n\ @@ -3347,7 +3347,7 @@ void sub_80ED01C() ._738:\n\ .align 2, 0\n\ ._737:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6dfc\n\ .word sub_80ED31C+1\n\ .word gLinkOpen\n\ @@ -3487,7 +3487,7 @@ void sub_80ED31C() ._744:\n\ .align 2, 0\n\ ._743:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._740:\n\ cmp r0, #0x2\n\ beq ._745 @cond_branch\n\ @@ -3655,7 +3655,7 @@ void sub_80ED3D0() ._768:\n\ .align 2, 0\n\ ._767:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._769\n\ ._769:\n\ .word ._770\n\ @@ -3678,7 +3678,7 @@ void sub_80ED3D0() ._781:\n\ .align 2, 0\n\ ._780:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._771:\n\ bl sub_80EED0C\n\ bl sub_80F6134\n\ @@ -3690,7 +3690,7 @@ void sub_80ED3D0() ._784:\n\ .align 2, 0\n\ ._783:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._772:\n\ mov r0, #0x0\n\ bl sub_80EEFBC\n\ @@ -3702,7 +3702,7 @@ void sub_80ED3D0() ._787:\n\ .align 2, 0\n\ ._786:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._773:\n\ mov r0, #0x0\n\ bl sub_80F0264\n\ @@ -3726,7 +3726,7 @@ void sub_80ED3D0() ._791:\n\ .align 2, 0\n\ ._790:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._775:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -3739,7 +3739,7 @@ void sub_80ED3D0() ._795:\n\ .align 2, 0\n\ ._794:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._776:\n\ mov r0, #0x0\n\ bl sub_80F3008\n\ @@ -3768,7 +3768,7 @@ void sub_80ED3D0() ._798:\n\ .align 2, 0\n\ ._797:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word sub_80EBD18+1\n\ ._777:\n\ mov r0, #0x4\n\ @@ -3793,7 +3793,7 @@ void sub_80ED3D0() ._802:\n\ .align 2, 0\n\ ._801:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ .word 0x600f800\n\ @@ -3890,7 +3890,7 @@ void sub_80ED4D8() ._809:\n\ .align 2, 0\n\ ._808:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._810\n\ ._810:\n\ .word ._811\n\ @@ -3936,7 +3936,7 @@ void sub_80ED4D8() .align 2, 0\n\ ._824:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._813:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -3949,7 +3949,7 @@ void sub_80ED4D8() ._829:\n\ .align 2, 0\n\ ._828:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._814:\n\ bl sub_80F4CF0\n\ ldr r1, ._831\n\ @@ -3960,7 +3960,7 @@ void sub_80ED4D8() ._832:\n\ .align 2, 0\n\ ._831:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._815:\n\ bl sub_80EFF34\n\ ldr r1, ._835\n\ @@ -3983,7 +3983,7 @@ void sub_80ED4D8() ._836:\n\ .align 2, 0\n\ ._835:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._817:\n\ bl sub_80F35B4\n\ mov r0, #0x2\n\ @@ -4014,7 +4014,7 @@ void sub_80ED4D8() ._839:\n\ .align 2, 0\n\ ._838:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word sub_80EBD4C+1\n\ ._818:\n\ mov r0, #0x2\n\ @@ -4039,7 +4039,7 @@ void sub_80ED4D8() ._843:\n\ .align 2, 0\n\ ._842:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ .word 0x600f000\n\ @@ -4141,7 +4141,7 @@ void sub_80ED620() ._850:\n\ .align 2, 0\n\ ._849:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._851\n\ ._851:\n\ .word ._852\n\ @@ -4173,7 +4173,7 @@ void sub_80ED620() ._871:\n\ .align 2, 0\n\ ._870:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._853:\n\ bl sub_80F1F10\n\ lsl r0, r0, #0x18\n\ @@ -4210,7 +4210,7 @@ void sub_80ED620() ._879:\n\ .align 2, 0\n\ ._878:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._855:\n\ ldr r0, ._883\n\ ldrb r1, [r0, #0x7]\n\ @@ -4241,7 +4241,7 @@ void sub_80ED620() .align 2, 0\n\ ._883:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x76aa\n\ ._856:\n\ bl sub_80F2620\n\ @@ -4275,7 +4275,7 @@ void sub_80ED620() ._891:\n\ .align 2, 0\n\ ._890:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._860:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -4288,7 +4288,7 @@ void sub_80ED620() ._895:\n\ .align 2, 0\n\ ._894:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._861:\n\ bl sub_8055870\n\ b ._896\n\ @@ -4315,7 +4315,7 @@ void sub_80ED620() ._899:\n\ .align 2, 0\n\ ._898:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word sub_80EBD4C+1\n\ ._863:\n\ mov r0, #0x2\n\ @@ -4328,7 +4328,7 @@ void sub_80ED620() ._902:\n\ .align 2, 0\n\ ._901:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._864:\n\ ldr r0, ._905\n\ ldrb r1, [r0, #0x7]\n\ @@ -4375,7 +4375,7 @@ void sub_80ED620() ._910:\n\ .align 2, 0\n\ ._909:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._867:\n\ mov r0, #0x6\n\ bl sub_80F2C80\n\ @@ -4411,7 +4411,7 @@ void sub_80ED620() ._914:\n\ .align 2, 0\n\ ._913:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word sub_80ED858+1\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ @@ -4702,7 +4702,7 @@ void sub_80ED858() ._918:\n\ .align 2, 0\n\ ._917:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._919\n\ ._919:\n\ .word ._920\n\ @@ -4730,7 +4730,7 @@ void sub_80ED858() ._934:\n\ .align 2, 0\n\ ._933:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._921:\n\ bl sub_80F5B50\n\ lsl r0, r0, #0x18\n\ @@ -4748,7 +4748,7 @@ void sub_80ED858() ._939:\n\ .align 2, 0\n\ ._938:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._922:\n\ mov r0, #0x1\n\ bl sub_80F0174\n\ @@ -4762,7 +4762,7 @@ void sub_80ED858() ._942:\n\ .align 2, 0\n\ ._941:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._923:\n\ bl sub_80F4FB4\n\ lsl r0, r0, #0x18\n\ @@ -4879,7 +4879,7 @@ void sub_80ED858() ._963:\n\ .align 2, 0\n\ ._962:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._960:\n\ mov r0, #0x1\n\ and r0, r0, r2\n\ @@ -4958,7 +4958,7 @@ void sub_80ED858() ._981:\n\ .align 2, 0\n\ ._980:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._926:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -4971,7 +4971,7 @@ void sub_80ED858() ._985:\n\ .align 2, 0\n\ ._984:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._927:\n\ mov r0, #0x3\n\ bl sub_80EEFBC\n\ @@ -4986,7 +4986,7 @@ void sub_80ED858() ._988:\n\ .align 2, 0\n\ ._987:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._928:\n\ bl sub_80F7500\n\ lsl r0, r0, #0x18\n\ @@ -5007,7 +5007,7 @@ void sub_80ED858() ._992:\n\ .align 2, 0\n\ ._991:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._929:\n\ bl sub_80F5038\n\ lsl r0, r0, #0x18\n\ @@ -5037,7 +5037,7 @@ void sub_80ED858() ._996:\n\ .align 2, 0\n\ ._995:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._931:\n\ ldr r0, ._1000\n\ ldrb r1, [r0, #0x7]\n\ @@ -5065,7 +5065,7 @@ void sub_80ED858() .align 2, 0\n\ ._1000:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x76aa\n\ .word sub_80ECA10+1\n\ ._998:\n\ @@ -5501,7 +5501,7 @@ void sub_80EDB88() ._1008:\n\ .align 2, 0\n\ ._1007:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._1009\n\ ._1009:\n\ .word ._1010\n\ @@ -5534,7 +5534,7 @@ void sub_80EDB88() ._1030:\n\ .align 2, 0\n\ ._1029:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1011:\n\ bl sub_80F1F10\n\ lsl r0, r0, #0x18\n\ @@ -5552,7 +5552,7 @@ void sub_80EDB88() ._1035:\n\ .align 2, 0\n\ ._1034:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1012:\n\ bl sub_80EEF34\n\ lsl r0, r0, #0x18\n\ @@ -5576,7 +5576,7 @@ void sub_80EDB88() ._1040:\n\ .align 2, 0\n\ ._1039:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1013:\n\ ldr r0, ._1044\n\ ldrb r1, [r0, #0x7]\n\ @@ -5599,7 +5599,7 @@ void sub_80EDB88() .align 2, 0\n\ ._1044:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1014:\n\ bl sub_80F2620\n\ ldr r1, ._1047\n\ @@ -5610,7 +5610,7 @@ void sub_80EDB88() ._1048:\n\ .align 2, 0\n\ ._1047:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1015:\n\ bl sub_80F638C\n\ ldr r1, ._1051\n\ @@ -5636,7 +5636,7 @@ void sub_80EDB88() ._1052:\n\ .align 2, 0\n\ ._1051:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1049:\n\ ldr r1, ._1054\n\ mov r0, #0xc1\n\ @@ -5646,7 +5646,7 @@ void sub_80EDB88() ._1055:\n\ .align 2, 0\n\ ._1054:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1017:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -5664,7 +5664,7 @@ void sub_80EDB88() ._1060:\n\ .align 2, 0\n\ ._1059:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1018:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -5679,7 +5679,7 @@ void sub_80EDB88() ._1065:\n\ .align 2, 0\n\ ._1064:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1019:\n\ mov r0, #0x1\n\ bl sub_80F0264\n\ @@ -5703,7 +5703,7 @@ void sub_80EDB88() ._1069:\n\ .align 2, 0\n\ ._1068:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1021:\n\ mov r0, #0x2\n\ bl sub_80F2C80\n\ @@ -5728,7 +5728,7 @@ void sub_80EDB88() ._1073:\n\ .align 2, 0\n\ ._1072:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1023:\n\ mov r0, #0x1\n\ bl sub_80F3008\n\ @@ -5740,7 +5740,7 @@ void sub_80EDB88() ._1076:\n\ .align 2, 0\n\ ._1075:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1024:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -5753,7 +5753,7 @@ void sub_80EDB88() ._1080:\n\ .align 2, 0\n\ ._1079:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1025:\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ @@ -5804,7 +5804,7 @@ void sub_80EDB88() ._1087:\n\ .align 2, 0\n\ ._1086:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ .word 0x600f800\n\ @@ -5943,7 +5943,7 @@ void sub_80EDDBC() ._1096:\n\ .align 2, 0\n\ ._1095:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1092:\n\ cmp r0, #0x2\n\ beq ._1097 @cond_branch\n\ @@ -6136,7 +6136,7 @@ void sub_80EDEE4() ._1135:\n\ .align 2, 0\n\ ._1134:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._1136\n\ ._1136:\n\ .word ._1137\n\ @@ -6184,7 +6184,7 @@ void sub_80EDEE4() .align 2, 0\n\ ._1152:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1139:\n\ bl sub_80F66E0\n\ bl sub_80EEE08\n\ @@ -6196,7 +6196,7 @@ void sub_80EDEE4() ._1156:\n\ .align 2, 0\n\ ._1155:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1140:\n\ bl sub_80F1080\n\ lsl r0, r0, #0x18\n\ @@ -6210,7 +6210,7 @@ void sub_80EDEE4() ._1160:\n\ .align 2, 0\n\ ._1159:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1141:\n\ mov r0, #0x5\n\ bl sub_80EEFBC\n\ @@ -6235,7 +6235,7 @@ void sub_80EDEE4() ._1164:\n\ .align 2, 0\n\ ._1163:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1143:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -6248,7 +6248,7 @@ void sub_80EDEE4() ._1168:\n\ .align 2, 0\n\ ._1167:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1144:\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ @@ -6291,7 +6291,7 @@ void sub_80EDEE4() ._1175:\n\ .align 2, 0\n\ ._1174:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ .word 0x600f000\n\ @@ -6417,7 +6417,7 @@ void sub_80EE06C() ._1186:\n\ .align 2, 0\n\ ._1185:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._1187\n\ ._1187:\n\ .word ._1188\n\ @@ -6439,7 +6439,7 @@ void sub_80EE06C() ._1199:\n\ .align 2, 0\n\ ._1198:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1189:\n\ ldr r2, ._1203\n\ ldrh r1, [r2, #0x30]\n\ @@ -6515,7 +6515,7 @@ void sub_80EE06C() ._1213:\n\ .align 2, 0\n\ ._1212:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1210:\n\ mov r0, #0x2\n\ and r0, r0, r2\n\ @@ -6547,7 +6547,7 @@ void sub_80EE06C() ._1223:\n\ .align 2, 0\n\ ._1222:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1191:\n\ bl sub_8055870\n\ add r1, r0, #0\n\ @@ -6562,7 +6562,7 @@ void sub_80EE06C() ._1227:\n\ .align 2, 0\n\ ._1226:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1192:\n\ bl sub_80F3B00\n\ ldr r1, ._1229\n\ @@ -6577,7 +6577,7 @@ void sub_80EE06C() ._1230:\n\ .align 2, 0\n\ ._1229:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1193:\n\ bl sub_80F3B58\n\ lsl r0, r0, #0x18\n\ @@ -6596,7 +6596,7 @@ void sub_80EE06C() ._1234:\n\ .align 2, 0\n\ ._1233:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1194:\n\ bl sub_80F68E8\n\ lsl r0, r0, #0x18\n\ @@ -6618,7 +6618,7 @@ void sub_80EE06C() ._1239:\n\ .align 2, 0\n\ ._1238:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1236:\n\ ldr r0, ._1242\n\ ldrh r1, [r0, #0x2e]\n\ @@ -6640,7 +6640,7 @@ void sub_80EE06C() .align 2, 0\n\ ._1242:\n\ .word gMain\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1195:\n\ bl sub_80F3BD4\n\ lsl r0, r0, #0x18\n\ @@ -6657,7 +6657,7 @@ void sub_80EE06C() ._1247:\n\ .align 2, 0\n\ ._1246:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1196:\n\ bl sub_80F3BD4\n\ lsl r0, r0, #0x18\n\ @@ -6694,7 +6694,7 @@ void sub_80EE06C() ._1251:\n\ .align 2, 0\n\ ._1250:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word gLink\n\ .word 0xfbd"); @@ -6812,7 +6812,7 @@ void sub_80EE294() ._1255:\n\ .align 2, 0\n\ ._1254:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._1256\n\ ._1256:\n\ .word ._1257\n\ @@ -6858,7 +6858,7 @@ void sub_80EE294() .align 2, 0\n\ ._1270:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1259:\n\ bl sub_80F6134\n\ mov r0, #0x1\n\ @@ -6883,7 +6883,7 @@ void sub_80EE294() ._1275:\n\ .align 2, 0\n\ ._1274:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1261:\n\ mov r0, #0x4\n\ bl sub_80EEFBC\n\ @@ -6900,7 +6900,7 @@ void sub_80EE294() .align 2, 0\n\ ._1277:\n\ .word sub_80EBD18+1\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1262:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -6913,7 +6913,7 @@ void sub_80EE294() ._1282:\n\ .align 2, 0\n\ ._1281:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1263:\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ @@ -6958,7 +6958,7 @@ void sub_80EE294() ._1287:\n\ .align 2, 0\n\ ._1286:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ .word 0x600f800\n\ @@ -7059,7 +7059,7 @@ void sub_80EE3D8() ._1294:\n\ .align 2, 0\n\ ._1293:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word ._1295\n\ ._1295:\n\ .word ._1296\n\ @@ -7088,7 +7088,7 @@ void sub_80EE3D8() ._1312:\n\ .align 2, 0\n\ ._1311:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1297:\n\ bl sub_80F1F10\n\ lsl r0, r0, #0x18\n\ @@ -7106,7 +7106,7 @@ void sub_80EE3D8() ._1317:\n\ .align 2, 0\n\ ._1316:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1298:\n\ bl sub_80EEF34\n\ lsl r0, r0, #0x18\n\ @@ -7130,7 +7130,7 @@ void sub_80EE3D8() ._1322:\n\ .align 2, 0\n\ ._1321:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1299:\n\ ldr r0, ._1326\n\ ldrb r1, [r0, #0x7]\n\ @@ -7154,7 +7154,7 @@ void sub_80EE3D8() .align 2, 0\n\ ._1326:\n\ .word gPaletteFade\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1300:\n\ bl sub_80F2620\n\ ldr r1, ._1329\n\ @@ -7165,7 +7165,7 @@ void sub_80EE3D8() ._1330:\n\ .align 2, 0\n\ ._1329:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1301:\n\ mov r0, #0x2\n\ bl sub_80F0264\n\ @@ -7191,7 +7191,7 @@ void sub_80EE3D8() ._1335:\n\ .align 2, 0\n\ ._1334:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1303:\n\ mov r0, #0x3\n\ bl sub_80F2C80\n\ @@ -7216,7 +7216,7 @@ void sub_80EE3D8() ._1339:\n\ .align 2, 0\n\ ._1338:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1305:\n\ mov r0, #0x2\n\ bl sub_80F3008\n\ @@ -7228,7 +7228,7 @@ void sub_80EE3D8() ._1342:\n\ .align 2, 0\n\ ._1341:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1306:\n\ bl sub_8055870\n\ cmp r0, #0\n\ @@ -7241,7 +7241,7 @@ void sub_80EE3D8() ._1346:\n\ .align 2, 0\n\ ._1345:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1307:\n\ bl sub_80F6F10\n\ ldr r4, ._1348\n\ @@ -7270,7 +7270,7 @@ void sub_80EE3D8() ._1349:\n\ .align 2, 0\n\ ._1348:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word sub_80EBD68+1\n\ ._1308:\n\ mov r0, #0x5\n\ @@ -7295,7 +7295,7 @@ void sub_80EE3D8() ._1353:\n\ .align 2, 0\n\ ._1352:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word gLinkOpen\n\ .word 0x6007de0\n\ .word 0x600f800\n\ @@ -7419,7 +7419,7 @@ void sub_80EE58C() ._1362:\n\ .align 2, 0\n\ ._1361:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ ._1358:\n\ cmp r0, #0x2\n\ beq ._1363 @cond_branch\n\ @@ -8045,7 +8045,7 @@ bool8 sub_80EEC10() .align 2, 0\n\ ._1563:\n\ .word gMain\n\ - .word +0x2006dad\n\ + .word gSharedMem+0x6dad\n\ ._1559:\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -8077,7 +8077,7 @@ bool8 sub_80EEC10() ._1570:\n\ .align 2, 0\n\ ._1569:\n\ - .word +0x2006dad\n\ + .word gSharedMem+0x6dad\n\ ._1565:\n\ ldr r0, ._1572\n\ ldrb r0, [r0]\n\ @@ -8166,7 +8166,7 @@ bool8 sub_80EEC90() .align 2, 0\n\ ._1577:\n\ .word gMain\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6dad\n\ .word 0x6dae\n\ ._1574:\n\ @@ -8196,7 +8196,7 @@ bool8 sub_80EEC90() ._1583:\n\ .align 2, 0\n\ ._1582:\n\ - .word +0x2000000\n\ + .word gSharedMem\n\ .word 0x6dad\n\ ._1579:\n\ ldr r0, ._1585\n\ -- cgit v1.2.3 From f2885be7da921ef0a5058b2b36d4473481db1022 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 17:03:59 -0600 Subject: remove some unnecessary DEBUG conditionals in symbol files --- src/scene/berry_blender.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 5b013e8de..0799531cd 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -3763,7 +3763,7 @@ loc_805654C:\n\ .syntax divided\n"); } #else -static bool8 Blender_PrintBlendingResults(void) +bool8 Blender_PrintBlendingResults(void) { u16 i; -- cgit v1.2.3 From 1e6cb59a0cd0dff15f749a5274bee17ca994c178 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 20:43:28 -0600 Subject: start decompiling start_menu_debug.c --- src/debug/start_menu_debug.c | 1041 +++++++++++++++++++----------------------- 1 file changed, 475 insertions(+), 566 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 318785945..5d9b150e7 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -1,583 +1,492 @@ #if DEBUG #include "global.h" +#include "constants/songs.h" +#include "battle.h" +#include "debug.h" +#include "link.h" +#include "main.h" +#include "menu.h" +#include "mystery_event_menu.h" +#include "overworld.h" +#include "reset_rtc_screen.h" +#include "rtc.h" +#include "save.h" +#include "sound.h" +#include "task.h" +#include "text.h" +#include "trade.h" + +// berry_blender.c +extern void unref_sub_80524BC(void); + +void debug_sub_8076BB4(u8); +void debug_sub_8077CF4(); + +u8 DebugMenu_Exit(void); +u8 DebugMenu_OpenWatanabe(void); +u8 DebugMenu_OpenSogabe(void); +u8 DebugMenu_OpenTamada(void); +u8 DebugMenu_OpenKagaya(void); +u8 DebugMenu_OpenMatsuda(void); +u8 DebugMenu_OpenNohara(void); +u8 DebugMenu_OpenNakamura(void); +u8 DebugMenu_Teleport(void); +u8 DebugMenu_EditPKMN(void); +u8 DebugMenu_SwitchBG(void); +u8 DebugMenu_OpenMori(void); +u8 DebugMenu_OpenTomomichi(void); +u8 DebugMenu_OpenAoki(void); +u8 DebugMenu_OpenTaya(void); +u8 DebugMenu_ToggleClearFlag(void); +u8 DebugMenu_ControlEncounter(void); +u8 DebugMenu_PTime(void); +u8 DebugMenu_MakeItems(void); +u8 debug_sub_8091300(void); +u8 DebugMenu_ViewPortraits(void); +u8 DebugMenu_TimeRecords(void); +u8 DebugMenu_SetTime(void); +u8 DebugMenu_NationalDex(void); +u8 DebugMenu_CreatePKMN(void); +u8 DebugMenu_ViewPokemonGraphics(void); +u8 DebugMenu_BattleForDebug(void); +u8 DebugMenu_AllBadges(void); +u8 DebugMenu_HoennNationalDex(void); +u8 DebugMenu_SetRamBerry(void); +u8 DebugMenu_UseHM(void); +u8 DebugMenu_OpenIwasawa(void); +u8 DebugMenu_ToggleBGM(void); +u8 DebugMenu_OpenSizeComparison(void); +u8 DebugMenu_Safari(void); +u8 DebugMenu_RematchTrainers(void); +u8 DebugMenu_MiragaIslandRND(void); +u8 DebugMenu_HallOfFame(void); +u8 DebugMenu_OpenMysteryEvent(void); +u8 DebugMenu_OpenLegendsRecord(void); +u8 DebugMenu_OpenWeatherEvents(void); +u8 DebugMenu_CellInfo(void); +u8 DebugMenu_CheckPKBLCK(void); +u8 DebugMenu_EffortValues(void); +u8 DebugMenu_HoennDex(void); +u8 DebugMenu_OpenSeeTrainers(void); +u8 DebugMenu_OpenBerryInfo(void); +u8 DebugMenu_BattleTowerStages(void); +u8 DebugMenu_EndSequenceDemo(void); +u8 DebugMenu_RandomNumberTest(void); +u8 DebugMenu_MeTooBackupMan(void); +u8 DebugMenu_OpenMurakawa(void); +u8 DebugMenu_OpenKiwa(void); +u8 DebugMenu_8076CBC(void); +u8 DebugMenu_8076CC0(void); +u8 DebugMenu_8076CD4(void); +u8 DebugMenu_8076C6C(void); +u8 DebugMenu_8076CD8(void); +u8 DebugMenu_8076D28(void); +u8 DebugMenu_8076D3C(void); +u8 DebugMenu_8076C80(void); +u8 DebugMenu_8076C90(void); +u8 DebugMenu_8076D50(void); +u8 DebugMenu_8076CEC(void); +u8 DebugMenu_8076D14(void); +u8 DebugMenu_8076D00(void); +u8 DebugMenu_8076D5C(void); +u8 DebugMenu_8076E18(void); +u8 DebugMenu_8076EDC(void); +void DebugMenu_8076FEC(void); + +const u8 Str_839B740[] = _("·WATANABE"); +const u8 Str_839B74A[] = _("SOGABE"); +const u8 Str_839B751[] = _("·TAMADA"); +const u8 Str_839B759[] = _("KAGAYA"); +const u8 Str_839B760[] = _("MATUDA"); +const u8 Str_839B767[] = _("NOHARA"); +const u8 Str_839B76E[] = _("NAKAMURA"); +const u8 Str_839B777[] = _("EXIT"); +const u8 Str_839B77C[] = _("Teleport"); +const u8 Str_839B785[] = _("Switch BG"); +const u8 Str_839B78F[] = _("Edit your {PKMN}"); +const u8 Str_839B79C[] = _("MORI"); +const u8 Str_839B7A1[] = _("TOMOMITI"); +const u8 Str_839B7AA[] = _("·AOKI"); +const u8 Str_839B7B0[] = _("TAYA"); +const u8 Str_839B7B5[] = _("Control Encounter"); +const u8 Str_839B7C7[] = _("PTIME"); +const u8 Str_839B7CD[] = _("Make items"); +const u8 Str_839B7D8[] = _("Transport"); +const u8 Str_839B7E2[] = _("See portraits"); +const u8 Str_839B7F0[] = _("Time records"); +const u8 Str_839B7FD[] = _("Set time"); +const u8 Str_839B806[] = _("National オカDex"); +const u8 Str_839B815[] = _("Hoenn オカDex"); +const u8 Str_839B821[] = _("Create {PKMN}"); +const u8 Str_839B82B[] = _("See {PKMN} graphics"); +const u8 Str_839B83B[] = _("See trainers"); +const u8 Str_839B848[] = _("Battle for debug"); +const u8 Str_839B859[] = _("Full set of badges"); +const u8 Str_839B86C[] = _("Hoenn National Dex"); +const u8 Str_839B87F[] = _("Set Ram berry"); +const u8 Str_839B88D[] = _("Use HM"); +const u8 Str_839B894[] = _("IWASAWA"); +const u8 Str_839B89C[] = _("BGM ON/OFF"); +const u8 Str_839B8A7[] = _("Size comparison"); +const u8 Str_839B8B7[] = _("Clear flag ON/OFF"); +const u8 Str_839B8C9[] = _("Safari"); +const u8 Str_839B8D0[] = _("Rematch trainers"); +const u8 Str_839B8E1[] = _("Mirage island RND"); +const u8 Str_839B8F3[] = _("Hall of fame"); +const u8 Str_839B900[] = _("Mystery event"); +const u8 Str_839B90E[] = _("Legends records"); +const u8 Str_839B91E[] = _("Weather events"); +const u8 Str_839B92D[] = _("Cell info."); +const u8 Str_839B938[] = _("Check {POKEBLOCK}"); +const u8 Str_839B944[] = _("Effort values"); +const u8 Str_839B952[] = _("Berrie Info"); +const u8 Str_839B95E[] = _("Battle Tower stages"); +const u8 Str_839B972[] = _("End sequence demo"); +const u8 Str_839B984[] = _("Random number test"); +const u8 Str_839B997[] = _("Me-too BackupMan"); +const u8 Str_839B9A8[] = _("MURAKAWA"); +const u8 Str_839B9B1[] = _("KINA(FONT)"); + +const struct MenuAction gDebug0x839B9BC[] = +{ + { Str_839B777, DebugMenu_Exit }, + { Str_839B740, DebugMenu_OpenWatanabe }, + { Str_839B74A, DebugMenu_OpenSogabe }, + { Str_839B751, DebugMenu_OpenTamada }, + { Str_839B759, DebugMenu_OpenKagaya }, + { Str_839B760, DebugMenu_OpenMatsuda }, + { Str_839B767, DebugMenu_OpenNohara }, + { Str_839B76E, DebugMenu_OpenNakamura }, + { Str_839B77C, DebugMenu_Teleport }, + { Str_839B78F, DebugMenu_EditPKMN }, + { Str_839B785, DebugMenu_SwitchBG }, + { Str_839B79C, DebugMenu_OpenMori }, + { Str_839B7A1, DebugMenu_OpenTomomichi }, + { Str_839B7AA, DebugMenu_OpenAoki }, + { Str_839B7B0, DebugMenu_OpenTaya }, + { Str_839B8B7, DebugMenu_ToggleClearFlag }, + { Str_839B7B5, DebugMenu_ControlEncounter }, + { Str_839B7C7, DebugMenu_PTime }, + { Str_839B7CD, DebugMenu_MakeItems }, + { Str_839B7D8, debug_sub_8091300 }, + { Str_839B7E2, DebugMenu_ViewPortraits }, + { Str_839B7F0, DebugMenu_TimeRecords }, + { Str_839B7FD, DebugMenu_SetTime }, + { Str_839B806, DebugMenu_NationalDex }, + { Str_839B821, DebugMenu_CreatePKMN }, + { Str_839B82B, DebugMenu_ViewPokemonGraphics }, + { Str_839B848, DebugMenu_BattleForDebug }, + { Str_839B859, DebugMenu_AllBadges }, + { Str_839B86C, DebugMenu_HoennNationalDex }, + { Str_839B87F, DebugMenu_SetRamBerry }, + { Str_839B88D, DebugMenu_UseHM }, + { Str_839B894, DebugMenu_OpenIwasawa }, + { Str_839B89C, DebugMenu_ToggleBGM }, + { Str_839B8A7, DebugMenu_OpenSizeComparison }, + { Str_839B8C9, DebugMenu_Safari }, + { Str_839B8D0, DebugMenu_RematchTrainers }, + { Str_839B8E1, DebugMenu_MiragaIslandRND }, + { Str_839B8F3, DebugMenu_HallOfFame }, + { Str_839B900, DebugMenu_OpenMysteryEvent }, + { Str_839B90E, DebugMenu_OpenLegendsRecord }, + { Str_839B91E, DebugMenu_OpenWeatherEvents }, + { Str_839B92D, DebugMenu_CellInfo }, + { Str_839B938, DebugMenu_CheckPKBLCK }, + { Str_839B944, DebugMenu_EffortValues }, + { Str_839B815, DebugMenu_HoennDex }, + { Str_839B83B, DebugMenu_OpenSeeTrainers }, + { Str_839B952, DebugMenu_OpenBerryInfo }, + { Str_839B95E, DebugMenu_BattleTowerStages }, + { Str_839B972, DebugMenu_EndSequenceDemo }, + { Str_839B984, DebugMenu_RandomNumberTest }, + { Str_839B997, DebugMenu_MeTooBackupMan }, + { Str_839B9A8, DebugMenu_OpenMurakawa }, + { Str_839B9B1, DebugMenu_OpenKiwa }, +}; + +const u8 gUnknown_Debug_839BB64[] = +{ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x1f, 0x12, 0x13, 0x00, 0x08, 0x09, 0x0a, 0x1e, 0x10, 0x24, 0x0f, 0x00, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x00, + 0x1c, 0x1d, 0x14, 0x20, 0x21, 0x22, 0x23, 0x00, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x00, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x00, 0x11, 0x33, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version"); +const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version"); +const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible"); +const u8 Str_839BBD7[] = _("か の じっけん"); +const u8 Str_839BBE0[] = _("じっけん2"); +const u8 Str_839BBE6[] = _("BGじっけん"); +const u8 Str_839BBED[] = _("Battle"); +const u8 Str_839BBF4[] = _("つうしん じっけん"); +const u8 Str_839BBFE[] = _("LINK Test2"); +const u8 Str_839BC09[] = _("フィールド はじめる"); +const u8 Str_839BC14[] = _("フィールド つづき"); +const u8 Str_839BC1E[] = _("Sound test"); +const u8 Str_839BC29[] = _("{POKEBLOCK} test"); +const u8 Str_839BC34[] = _("Crash backup data"); +const u8 Str_839BC46[] = _("e-Card test"); +const u8 Str_839BC52[] = _("こうかんデモ   "); +const u8 Str_839BC5C[] = _("Time in game"); +const u8 Str_839BC69[] = _("フェスタ モード"); +const u8 Str_839BC72[] = _("Mimic e-Card"); +const u8 Str_839BC7F[] = _("RTC reset"); +const u8 Str_839BC89[] = _("Converter"); + +const struct MenuAction gUnknown_Debug_839BC94[] = +{ + { Str_839BBD7, DebugMenu_8076CBC }, + { Str_839BBE0, DebugMenu_8076CC0 }, + { Str_839BBE6, DebugMenu_8076CD4 }, + { Str_839BBED, DebugMenu_8076C6C }, + { Str_839BC29, DebugMenu_8076CD8 }, + { Str_839BBFE, DebugMenu_8076D28 }, + { Str_839BC1E, DebugMenu_8076D3C }, + { Str_839BC09, DebugMenu_8076C80 }, + { Str_839BC14, DebugMenu_8076C90 }, + { Str_839BC34, DebugMenu_8076D50 }, + { Str_839BC46, DebugMenu_8076CEC }, + { Str_839BC52, DebugMenu_8076D14 }, + { Str_839BC72, DebugMenu_8076D00 }, + { Str_839BC5C, DebugMenu_8076D5C }, + { Str_839BC7F, DebugMenu_8076E18 }, + { Str_839BC89, DebugMenu_8076EDC }, +}; + +// NOTE: When decompiling this file, I found out that having an extraneous extern +// in a C file can affect the generated asm. If this extern is commented out, +// debug_sub_8076BB4 will access the array differently and no longer match. +//extern const struct MenuAction gUnknown_Debug_839BC94[]; + +const u8 Str_839BD14[][10] = +{ + _("うかえ"), + _("おけこしすせそ"), +}; + +const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced + +const u8 Str_839BD2C[] = _("RTCを リセット します\n" + "Aで じっこう   Bでキャンセル"); + +const u8 Str_839BD4C[] = _("RTCを リセット した!"); + +const u8 Str_839BD5A[] = _("セーブデータを コンバートします\n" + "Aで けってい  Bで キャンセル"); + +const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました!"); + + +extern const u8 Str_839BD2C[]; +extern const u8 Str_839BD4C[]; __attribute__((unused)) static u8 gUnknown_030006B8[4]; __attribute__((unused)) static u8 gUnknown_030006BC[4]; __attribute__((unused)) static u8 gUnknown_030006C0; __attribute__((unused)) static u8 gUnknown_030006C1; -__attribute__((unused)) static void *gUnknown_030006C4; +static const u8 *gUnknown_030006C4; __attribute__((unused)) static u8 gUnknown_030006C8; -__attribute__((naked)) -void debug_sub_8076AC8() +void debug_sub_8076AC8(u8 a) { - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._3\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x1\n" - " ldr r0, ._3 + 4\n" - " add r1, r1, r0\n" - " str r1, [r2]\n" - " mov r4, #0x0\n" - " ldrb r0, [r1]\n" - " cmp r0, #0xff\n" - " beq ._1 @cond_branch\n" - "._2:\n" - " add r4, r4, #0x1\n" - " add r0, r1, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._2 @cond_branch\n" - "._1:\n" - " mov r0, #0x10\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " lsl r3, r4, #0x1\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x10\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " bl Menu_DrawStdWindowFrame\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r3, ._3 + 8\n" - " ldr r0, ._3\n" - " ldr r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x11\n" - " mov r1, #0x1\n" - " add r2, r4, #0\n" - " bl Menu_PrintItemsReordered\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xc\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x11\n" - " mov r2, #0x1\n" - " add r3, r4, #0\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gUnknown_030006C4 \n" - " .word Str_839BD14\n" - " .word gUnknown_Debug_839BC94\n" - "\n" - ); + s32 r4; + + gUnknown_030006C4 = Str_839BD14[a]; + for (r4 = 0; gUnknown_030006C4[r4] != EOS; r4++) + ; + Menu_EraseWindowRect(16, 0, 29, 19); + Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1); + Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gUnknown_Debug_839BC94, gUnknown_030006C4); + InitMenu(0, 17, 1, r4, 0, 12); } -__attribute__((naked)) -void debug_sub_8076B4C() +void debug_sub_8076B4C(void) { - asm( - " push {lr}\n" - " ldr r0, ._6\n" - " bl FindTaskIdByFunc\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xff\n" - " beq ._5 @cond_branch\n" - " bl DestroyTask\n" - "._5:\n" - " pop {r0}\n" - " bx r0\n" - "._7:\n" - " .align 2, 0\n" - "._6:\n" - " .word debug_sub_8076BB4+1\n" - "\n" - ); + u8 taskId = FindTaskIdByFunc(debug_sub_8076BB4); + + if (taskId != 0xFF) + DestroyTask(taskId); } -__attribute__((naked)) -void debug_sub_8076B68() +// Initializes test menu +void debug_sub_8076B68(void) { - asm( - " push {lr}\n" - " ldr r0, ._8\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._8 + 4\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, ._8 + 8\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " mov r0, #0x4\n" - " mov r1, #0xb\n" - " bl debug_sub_8077CF4\n" - " mov r0, #0x0\n" - " bl debug_sub_8076AC8\n" - " ldr r0, ._8 + 12\n" - " mov r1, #0x1\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._9:\n" - " .align 2, 0\n" - "._8:\n" - " .word gUnknown_Debug_0839BBB6\n" - " .word gUnknown_Debug_0839BBC1\n" - " .word gUnknown_Debug_0839BBA4\n" - " .word debug_sub_8076BB4+1\n" - "\n" - ); + Menu_PrintText(gUnknown_Debug_0839BBB6, 1, 1); + Menu_PrintText(gUnknown_Debug_0839BBC1, 1, 3); + Menu_PrintText(gUnknown_Debug_0839BBA4, 1, 9); + debug_sub_8077CF4(4, 11); + debug_sub_8076AC8(0); + CreateTask(debug_sub_8076BB4, 1); } -__attribute__((naked)) -void debug_sub_8076BB4() +// Handles input for the test menu +void debug_sub_8076BB4(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._13\n" - " add r5, r1, r0\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._10 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " beq ._11 @cond_branch\n" - " ldr r2, ._13 + 4\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " ldr r0, ._13 + 8\n" - " ldr r0, [r0]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r2, r2, #0x4\n" - " add r0, r0, r2\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " b ._24\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word gTasks+0x8\n" - " .word gUnknown_Debug_839BC94\n" - " .word gUnknown_030006C4 \n" - "._10:\n" - " ldr r0, ._18\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._15 @cond_branch\n" - " ldrh r1, [r5]\n" - " mov r2, #0x0\n" - " ldsh r0, [r5, r2]\n" - " cmp r0, #0\n" - " bne ._16 @cond_branch\n" - " mov r0, #0x1\n" - " b ._20\n" - "._19:\n" - " .align 2, 0\n" - "._18:\n" - " .word gMain\n" - "._16:\n" - " sub r0, r1, #1\n" - " b ._20\n" - "._15:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._24 @cond_branch\n" - " ldrh r1, [r5]\n" - " mov r3, #0x0\n" - " ldsh r0, [r5, r3]\n" - " cmp r0, #0x1\n" - " bne ._22 @cond_branch\n" - " strh r2, [r5]\n" - " b ._23\n" - "._22:\n" - " add r0, r1, #1\n" - "._20:\n" - " strh r0, [r5]\n" - "._23:\n" - " ldrb r0, [r5]\n" - " bl debug_sub_8076AC8\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._24\n" - "._11:\n" - " bl DoSoftReset\n" - "._24:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + s16 *data = gTasks[taskId].data; + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (input) + { + default: + gUnknown_Debug_839BC94[gUnknown_030006C4[cursorPos]].func(); + break; + case -2: + if (gMain.newKeys & 0x20) + { + if (data[0] == 0) + data[0] = 1; + else + data[0]--; + debug_sub_8076AC8(data[0]); + PlaySE(SE_SELECT); + } + else if (gMain.newKeys & 0x10) + { + if (data[0] == 1) + data[0] = 0; + else + data[0]++; + debug_sub_8076AC8(data[0]); + PlaySE(SE_SELECT); + } + break; + case -1: + DoSoftReset(); + break; + } } -__attribute__((naked)) -void DebugMenu_8076C6C() +u8 DebugMenu_8076C6C(void) { - asm( - " push {lr}\n" - " ldr r0, ._25\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._26:\n" - " .align 2, 0\n" - "._25:\n" - " .word debug_sub_8010800+1\n" - "\n" - ); + SetMainCallback2(debug_sub_8010800); + return 0; } -__attribute__((naked)) -void DebugMenu_8076C80() +u8 DebugMenu_8076C80(void) { - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " bl DebugMenu_8076FEC\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_8076B4C(); + DebugMenu_8076FEC(); + return 0; } -__attribute__((naked)) -void DebugMenu_8076C90() +u8 DebugMenu_8076C90(void) { - asm( - " push {lr}\n" - " ldr r0, ._29\n" - " ldrh r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._27 @cond_branch\n" - " mov r0, #0x16\n" - " bl PlaySE\n" - " b ._28\n" - "._30:\n" - " .align 2, 0\n" - "._29:\n" - " .word gSaveFileStatus\n" - "._27:\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._31\n" - " bl SetMainCallback2\n" - "._28:\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._32:\n" - " .align 2, 0\n" - "._31:\n" - " .word CB2_ContinueSavedGame+1\n" - "\n" - ); + if (gSaveFileStatus == SAVE_STATUS_ERROR) + { + PlaySE(0x16); + } + else + { + debug_sub_8076B4C(); + SetMainCallback2(CB2_ContinueSavedGame); + } + return 0; } -__attribute__((naked)) -void DebugMenu_8076CBC() +u8 DebugMenu_8076CBC(void) { - asm( - " mov r0, #0x0\n" - " bx lr\n" - "\n" - ); + return 0; } -__attribute__((naked)) -void DebugMenu_8076CC0() +u8 DebugMenu_8076CC0(void) { - asm( - " push {lr}\n" - " ldr r0, ._33\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._34:\n" - " .align 2, 0\n" - "._33:\n" - " .word debug_nullsub_66+1\n" - "\n" - ); + SetMainCallback2(debug_nullsub_66); + return 0; } -__attribute__((naked)) -void DebugMenu_8076CD4() +u8 DebugMenu_8076CD4(void) { - asm( - " mov r0, #0x0\n" - " bx lr\n" - "\n" - ); + return 0; } -__attribute__((naked)) -void DebugMenu_8076CD8() +u8 DebugMenu_8076CD8(void) { - asm( - " push {lr}\n" - " ldr r0, ._35\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._36:\n" - " .align 2, 0\n" - "._35:\n" - " .word unref_sub_80524BC+1\n" - "\n" - ); + SetMainCallback2(unref_sub_80524BC); + return 0; } -__attribute__((naked)) -void DebugMenu_8076CEC() +u8 DebugMenu_8076CEC(void) { - asm( - " push {lr}\n" - " ldr r0, ._37\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._38:\n" - " .align 2, 0\n" - "._37:\n" - " .word CB2_InitMysteryEventMenu+1\n" - "\n" - ); + SetMainCallback2(CB2_InitMysteryEventMenu); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D00() +u8 DebugMenu_8076D00(void) { - asm( - " push {lr}\n" - " ldr r0, ._39\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._40:\n" - " .align 2, 0\n" - "._39:\n" - " .word debug_sub_815D15C+1\n" - "\n" - ); + SetMainCallback2(debug_sub_815D15C); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D14() +u8 DebugMenu_8076D14(void) { - asm( - " push {lr}\n" - " ldr r0, ._41\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._42:\n" - " .align 2, 0\n" - "._41:\n" - " .word sub_804B790+1\n" - "\n" - ); + SetMainCallback2(sub_804B790); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D28() +u8 DebugMenu_8076D28(void) { - asm( - " push {lr}\n" - " ldr r0, ._43\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._44:\n" - " .align 2, 0\n" - "._43:\n" - " .word LinkTestScreen+1\n" - "\n" - ); + SetMainCallback2(LinkTestScreen); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D3C() +u8 DebugMenu_8076D3C(void) { - asm( - " push {lr}\n" - " ldr r0, ._45\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._46:\n" - " .align 2, 0\n" - "._45:\n" - " .word CB2_StartSoundCheckMenu+1\n" - "\n" - ); + SetMainCallback2(CB2_StartSoundCheckMenu); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D50() +u8 DebugMenu_8076D50(void) { - asm( - " push {lr}\n" - " bl Save_EraseAllData\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + Save_EraseAllData(); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D5C() +u8 DebugMenu_8076D5C(void) { - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " bl debug_sub_806F8F8\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_8076B4C(); + debug_sub_806F8F8(); + return 0; } -__attribute__((naked)) -void DebugMenu_8076D6C() +void DebugMenu_8076D6C(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._51\n" - " add r4, r0, r1\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._47 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._48 @cond_branch\n" - " cmp r1, #0\n" - " beq ._49 @cond_branch\n" - " b ._64\n" - "._52:\n" - " .align 2, 0\n" - "._51:\n" - " .word gTasks+0x8\n" - "._48:\n" - " cmp r1, #0x2\n" - " beq ._53 @cond_branch\n" - " b ._64\n" - "._49:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._56\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " b ._55\n" - "._57:\n" - " .align 2, 0\n" - "._56:\n" - " .word Str_839BD2C\n" - "._47:\n" - " ldr r0, ._60\n" - " ldrh r2, [r0, #0x2e]\n" - " and r1, r1, r2\n" - " cmp r1, #0\n" - " beq ._58 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._60 + 4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " bl RtcReset\n" - "._55:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._64\n" - "._61:\n" - " .align 2, 0\n" - "._60:\n" - " .word gMain\n" - " .word Str_839BD4C\n" - "._58:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._64 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - " b ._64\n" - "._53:\n" - " ldr r0, ._65\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._64 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - "._64:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._66:\n" - " .align 2, 0\n" - "._65:\n" - " .word gMain\n" - "\n" - ); + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD2C, 2, 15); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD4C, 2, 15); + PlaySE(0x49); + RtcReset(); + data[0]++; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); + } + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); + } + break; + } } __attribute__((naked)) -void DebugMenu_8076E18() +u8 DebugMenu_8076E18() { asm( " push {lr}\n" @@ -692,7 +601,7 @@ void DebugMenu_8076E30() } __attribute__((naked)) -void DebugMenu_8076EDC() +u8 DebugMenu_8076EDC() { asm( " push {lr}\n" @@ -1321,7 +1230,7 @@ void DebugMenu_8077238() } __attribute__((naked)) -void DebugMenu_Exit() +u8 DebugMenu_Exit() { asm( " push {lr}\n" @@ -1334,7 +1243,7 @@ void DebugMenu_Exit() } __attribute__((naked)) -void DebugMenu_OpenSogabe() +u8 DebugMenu_OpenSogabe() { asm( " push {lr}\n" @@ -1348,7 +1257,7 @@ void DebugMenu_OpenSogabe() } __attribute__((naked)) -void DebugMenu_OpenTamada() +u8 DebugMenu_OpenTamada() { asm( " push {lr}\n" @@ -1362,7 +1271,7 @@ void DebugMenu_OpenTamada() } __attribute__((naked)) -void DebugMenu_OpenKagaya() +u8 DebugMenu_OpenKagaya() { asm( " push {lr}\n" @@ -1376,7 +1285,7 @@ void DebugMenu_OpenKagaya() } __attribute__((naked)) -void DebugMenu_OpenMatsuda() +u8 DebugMenu_OpenMatsuda() { asm( " push {lr}\n" @@ -1390,7 +1299,7 @@ void DebugMenu_OpenMatsuda() } __attribute__((naked)) -void DebugMenu_OpenNohara() +u8 DebugMenu_OpenNohara() { asm( " push {lr}\n" @@ -1404,7 +1313,7 @@ void DebugMenu_OpenNohara() } __attribute__((naked)) -void DebugMenu_OpenWatanabe() +u8 DebugMenu_OpenWatanabe() { asm( " push {lr}\n" @@ -1424,7 +1333,7 @@ void DebugMenu_OpenWatanabe() } __attribute__((naked)) -void DebugMenu_EndSequenceDemo() +u8 DebugMenu_EndSequenceDemo() { asm( " push {lr}\n" @@ -1444,7 +1353,7 @@ void DebugMenu_EndSequenceDemo() } __attribute__((naked)) -void DebugMenu_HallOfFame() +u8 DebugMenu_HallOfFame() { asm( " push {lr}\n" @@ -1459,7 +1368,7 @@ void DebugMenu_HallOfFame() } __attribute__((naked)) -void DebugMenu_OpenSizeComparison() +u8 DebugMenu_OpenSizeComparison() { asm( " push {lr}\n" @@ -1474,7 +1383,7 @@ void DebugMenu_OpenSizeComparison() } __attribute__((naked)) -void DebugMenu_HoennNationalDex() +u8 DebugMenu_HoennNationalDex() { asm( " push {lr}\n" @@ -1495,7 +1404,7 @@ void DebugMenu_HoennNationalDex() } __attribute__((naked)) -void DebugMenu_8077434() +u8 DebugMenu_8077434() { asm( " push {lr}\n" @@ -1613,7 +1522,7 @@ void DebugMenu_8077434() } __attribute__((naked)) -void DebugMenu_807750C() +u8 DebugMenu_807750C() { asm( " push {lr}\n" @@ -1632,7 +1541,7 @@ void DebugMenu_807750C() } __attribute__((naked)) -void DebugMenu_SetRamBerry() +u8 DebugMenu_SetRamBerry() { asm( " push {lr}\n" @@ -1657,7 +1566,7 @@ void DebugMenu_SetRamBerry() } __attribute__((naked)) -void DebugMenu_ToggleBGM() +u8 DebugMenu_ToggleBGM() { asm( " push {lr}\n" @@ -1682,7 +1591,7 @@ void DebugMenu_ToggleBGM() } __attribute__((naked)) -void DebugMenu_BattleForDebug() +u8 DebugMenu_BattleForDebug() { asm( " push {lr}\n" @@ -1697,7 +1606,7 @@ void DebugMenu_BattleForDebug() } __attribute__((naked)) -void DebugMenu_NationalDex() +u8 DebugMenu_NationalDex() { asm( " push {r4, r5, lr}\n" @@ -1733,7 +1642,7 @@ void DebugMenu_NationalDex() } __attribute__((naked)) -void DebugMenu_HoennDex() +u8 DebugMenu_HoennDex() { asm( " push {r4, r5, lr}\n" @@ -1772,7 +1681,7 @@ void DebugMenu_HoennDex() } __attribute__((naked)) -void DebugMenu_CreatePKMN() +u8 DebugMenu_CreatePKMN() { asm( " push {lr}\n" @@ -1787,7 +1696,7 @@ void DebugMenu_CreatePKMN() } __attribute__((naked)) -void DebugMenu_ViewPokemonGraphics() +u8 DebugMenu_ViewPokemonGraphics() { asm( " push {lr}\n" @@ -1802,7 +1711,7 @@ void DebugMenu_ViewPokemonGraphics() } __attribute__((naked)) -void DebugMenu_OpenSeeTrainers() +u8 DebugMenu_OpenSeeTrainers() { asm( " push {lr}\n" @@ -1817,7 +1726,7 @@ void DebugMenu_OpenSeeTrainers() } __attribute__((naked)) -void DebugMenu_OpenMori() +u8 DebugMenu_OpenMori() { asm( " push {lr}\n" @@ -1831,7 +1740,7 @@ void DebugMenu_OpenMori() } __attribute__((naked)) -void DebugMenu_OpenTomomichi() +u8 DebugMenu_OpenTomomichi() { asm( " push {lr}\n" @@ -1845,7 +1754,7 @@ void DebugMenu_OpenTomomichi() } __attribute__((naked)) -void DebugMenu_OpenAoki() +u8 DebugMenu_OpenAoki() { asm( " push {lr}\n" @@ -1858,7 +1767,7 @@ void DebugMenu_OpenAoki() } __attribute__((naked)) -void DebugMenu_OpenTaya() +u8 DebugMenu_OpenTaya() { asm( " push {lr}\n" @@ -1872,7 +1781,7 @@ void DebugMenu_OpenTaya() } __attribute__((naked)) -void DebugMenu_OpenNakamura() +u8 DebugMenu_OpenNakamura() { asm( " push {lr}\n" @@ -1886,7 +1795,7 @@ void DebugMenu_OpenNakamura() } __attribute__((naked)) -void DebugMenu_OpenIwasawa() +u8 DebugMenu_OpenIwasawa() { asm( " push {lr}\n" @@ -1900,7 +1809,7 @@ void DebugMenu_OpenIwasawa() } __attribute__((naked)) -void DebugMenu_Teleport() +u8 DebugMenu_Teleport() { asm( " push {lr}\n" @@ -1916,7 +1825,7 @@ void DebugMenu_Teleport() } __attribute__((naked)) -void DebugMenu_EditPKMN() +u8 DebugMenu_EditPKMN() { asm( " push {lr}\n" @@ -2023,7 +1932,7 @@ void DebugMenu_8077704() } __attribute__((naked)) -void DebugMenu_8077760() +u8 DebugMenu_8077760() { asm( " push {r4, r5, lr}\n" @@ -2139,7 +2048,7 @@ void DebugMenu_8077760() } __attribute__((naked)) -void DebugMenu_SwitchBG() +u8 DebugMenu_SwitchBG() { asm( " push {lr}\n" @@ -2257,7 +2166,7 @@ void DebugMenu_80778A8() } __attribute__((naked)) -void DebugMenu_ControlEncounter() +u8 DebugMenu_ControlEncounter() { asm( " push {lr}\n" @@ -2282,7 +2191,7 @@ void DebugMenu_ControlEncounter() } __attribute__((naked)) -void DebugMenu_UseHM() +u8 DebugMenu_UseHM() { asm( " ldr r1, ._215\n" @@ -2501,7 +2410,7 @@ void DebugMenu_8077A60() } __attribute__((naked)) -void DebugMenu_RematchTrainers() +u8 DebugMenu_RematchTrainers() { asm( " push {lr}\n" @@ -2664,7 +2573,7 @@ void DebugMenu_8077B3C() } __attribute__((naked)) -void DebugMenu_Safari() +u8 DebugMenu_Safari() { asm( " push {lr}\n" @@ -3202,7 +3111,7 @@ void DebugMenu_8077E40() } __attribute__((naked)) -void DebugMenu_MakeItems() +u8 DebugMenu_MakeItems() { asm( " push {lr}\n" @@ -3721,7 +3630,7 @@ void DebugMenu_80781A8() } __attribute__((naked)) -void DebugMenu_ViewPortraits() +u8 DebugMenu_ViewPortraits() { asm( " push {lr}\n" @@ -3754,7 +3663,7 @@ void DebugMenu_8078254() } __attribute__((naked)) -void DebugMenu_AllBadges() +u8 DebugMenu_AllBadges() { asm( " push {lr}\n" @@ -3794,7 +3703,7 @@ void DebugMenu_AllBadges() } __attribute__((naked)) -void DebugMenu_TimeRecords() +u8 DebugMenu_TimeRecords() { asm( " push {lr}\n" @@ -3815,7 +3724,7 @@ void DebugMenu_TimeRecords() } __attribute__((naked)) -void DebugMenu_SetTime() +u8 DebugMenu_SetTime() { asm( " push {lr}\n" @@ -3943,7 +3852,7 @@ void DebugMenu_8078310() } __attribute__((naked)) -void DebugMenu_MiragaIslandRND() +u8 DebugMenu_MiragaIslandRND() { asm( " push {lr}\n" @@ -4027,7 +3936,7 @@ void DebugMenu_80783C8() } __attribute__((naked)) -void DebugMenu_ToggleClearFlag() +u8 DebugMenu_ToggleClearFlag() { asm( " push {lr}\n" @@ -4106,7 +4015,7 @@ void DebugMenu_8078464() } __attribute__((naked)) -void DebugMenu_OpenWeatherEvents() +u8 DebugMenu_OpenWeatherEvents() { asm( " push {lr}\n" @@ -4177,7 +4086,7 @@ void DebugMenu_80784E8() } __attribute__((naked)) -void DebugMenu_OpenMysteryEvent() +u8 DebugMenu_OpenMysteryEvent() { asm( " push {lr}\n" @@ -4596,7 +4505,7 @@ void DebugMenu_80787B0() } __attribute__((naked)) -void DebugMenu_OpenLegendsRecord() +u8 DebugMenu_OpenLegendsRecord() { asm( " push {lr}\n" @@ -4761,7 +4670,7 @@ void DebugMenu_8078880() } __attribute__((naked)) -void DebugMenu_CellInfo() +u8 DebugMenu_CellInfo() { asm( " push {lr}\n" @@ -4783,7 +4692,7 @@ void DebugMenu_CellInfo() } __attribute__((naked)) -void DebugMenu_OpenBerryInfo() +u8 DebugMenu_OpenBerryInfo() { asm( " push {r4, lr}\n" @@ -5135,7 +5044,7 @@ void DebugMenu_8078B38() } __attribute__((naked)) -void DebugMenu_BattleTowerStages() +u8 DebugMenu_BattleTowerStages() { asm( " push {lr}\n" @@ -5300,7 +5209,7 @@ void DebugMenu_8078BD4() } __attribute__((naked)) -void DebugMenu_CheckPKBLCK() +u8 DebugMenu_CheckPKBLCK() { asm( " push {lr}\n" @@ -5525,7 +5434,7 @@ void DebugMenu_8078DA4() } __attribute__((naked)) -void DebugMenu_MeTooBackupMan() +u8 DebugMenu_MeTooBackupMan() { asm( " push {lr}\n" @@ -5911,7 +5820,7 @@ void DebugMenu_8079020() } __attribute__((naked)) -void DebugMenu_PTime() +u8 DebugMenu_PTime() { asm( " push {lr}\n" @@ -6026,7 +5935,7 @@ void DebugMenu_8079058() } __attribute__((naked)) -void DebugMenu_OpenMurakawa() +u8 DebugMenu_OpenMurakawa() { asm( " push {lr}\n" @@ -6120,7 +6029,7 @@ void DebugMenu_8079110() } __attribute__((naked)) -void DebugMenu_OpenKiwa() +u8 DebugMenu_OpenKiwa() { asm( " push {lr}\n" -- cgit v1.2.3 From 6437a2acd5b662db779352c24f34116852a1c605 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 21:44:01 -0600 Subject: decompile kagaya_debug_menu.c --- src/debug/kagaya_debug_menu.c | 497 +++++++++++------------------------------- src/field/slot_machine.c | 50 +---- 2 files changed, 137 insertions(+), 410 deletions(-) (limited to 'src') diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 53e3fac1a..89df82f04 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -1,420 +1,183 @@ #if DEBUG + #include "global.h" +#include "field_effect.h" +#include "field_control_avatar.h" +#include "field_player_avatar.h" +#include "main.h" #include "menu.h" - -u8 KagayaDebugMenu_TrainerCard(); -u8 KagayaDebugMenu_CardToExchange(); -u8 KagayaDebugMenu_SlotMachine(); +#include "overworld.h" +#include "palette.h" +#include "random.h" +#include "region_map.h" +#include "script.h" +#include "slot_machine.h" +#include "trainer_card.h" + +extern u8 (*gMenuCallback)(void); + +void InitKagayaDebugMenu_B(void); +u8 debug_sub_80B061C(void); +u8 KagayaDebugMenu_TrainerCard(void); +u8 debug_sub_80B068C(void); +u8 KagayaDebugMenu_CardToExchange(void); +u8 debug_sub_80B06E0(void); +u8 KagayaDebugMenu_SlotMachine(void); +u8 Kagaya_80B0734(void); +u8 debug_sub_80B07DC(void); const u8 Str_83EBB34[] = _("Trainer’s card"); const u8 Str_83EBB43[] = _("Card to exchange"); const u8 Str_83EBB54[] = _("Slot machine"); -const struct MenuAction _83EBB64[] = { +const struct MenuAction _83EBB64[] = +{ { Str_83EBB34, KagayaDebugMenu_TrainerCard }, { Str_83EBB43, KagayaDebugMenu_CardToExchange }, { Str_83EBB54, KagayaDebugMenu_SlotMachine }, }; -__attribute__((naked)) -void InitKagayaDebugMenu_A() +u8 InitKagayaDebugMenu_A(void) { - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_B\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + InitKagayaDebugMenu_B(); + return 0; } -__attribute__((naked)) -void InitKagayaDebugMenu_B() +void InitKagayaDebugMenu_B(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._1\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " ldr r1, ._1 + 4\n" - " ldr r0, ._1 + 8\n" - " str r0, [r1]\n" - " add sp, sp, #0x8\n" - " pop {r0}\n" - " bx r0\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word _83EBB64\n" - " .word gMenuCallback\n" - " .word debug_sub_80B061C+1\n" - "\n" - ); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 14, 7); + Menu_PrintItems(2, 1, 3, _83EBB64); + InitMenu(0, 1, 1, 3, 0, 13); + gMenuCallback = debug_sub_80B061C; } -__attribute__((naked)) -void debug_sub_80B061C() +u8 debug_sub_80B061C(void) { - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._3 @cond_branch\n" - " mov r0, #0x0\n" - " b ._6\n" - "._3:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._5 @cond_branch\n" - " ldr r2, ._7\n" - " ldr r0, ._7 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._6\n" - "._8:\n" - " .align 2, 0\n" - "._7:\n" - " .word gMenuCallback\n" - " .word _83EBB64\n" - "._5:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._6:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + s8 input = Menu_ProcessInput(); + + if (input == -2) + { + return 0; + } + else if (input == -1) + { + CloseMenu(); + return 1; + } + else + { + gMenuCallback = _83EBB64[input].func; + return 0; + } } -__attribute__((naked)) -u8 KagayaDebugMenu_TrainerCard() +u8 KagayaDebugMenu_TrainerCard(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._9\n" - " ldr r0, ._9 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._10:\n" - " .align 2, 0\n" - "._9:\n" - " .word gMenuCallback\n" - " .word debug_sub_80B068C+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = debug_sub_80B068C; + return 0; } -__attribute__((naked)) -void debug_sub_80B068C() +u8 debug_sub_80B068C(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._11 @cond_branch\n" - " mov r0, #0x0\n" - " b ._12\n" - "._11:\n" - " ldr r0, ._13\n" - " bl debug_sub_80A0710\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - "._12:\n" - " pop {r1}\n" - " bx r1\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word sub_805469C+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + debug_sub_80A0710(sub_805469C); + CloseMenu(); + ScriptContext2_Enable(); + return 1; + } + return 0; } -__attribute__((naked)) -u8 KagayaDebugMenu_CardToExchange() +u8 KagayaDebugMenu_CardToExchange(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._15\n" - " ldr r0, ._15 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._16:\n" - " .align 2, 0\n" - "._15:\n" - " .word gMenuCallback\n" - " .word debug_sub_80B06E0+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = debug_sub_80B06E0; + return 0; } -__attribute__((naked)) -void debug_sub_80B06E0() +u8 debug_sub_80B06E0(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._17 @cond_branch\n" - " mov r0, #0x0\n" - " b ._18\n" - "._17:\n" - " ldr r0, ._19\n" - " bl debug_sub_80A073C\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - "._18:\n" - " pop {r1}\n" - " bx r1\n" - "._20:\n" - " .align 2, 0\n" - "._19:\n" - " .word sub_805469C+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + debug_sub_80A073C(sub_805469C); + CloseMenu(); + ScriptContext2_Enable(); + return 1; + } + return 0; } -__attribute__((naked)) -u8 KagayaDebugMenu_SlotMachine() +u8 KagayaDebugMenu_SlotMachine(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._21\n" - " ldr r0, ._21 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._22:\n" - " .align 2, 0\n" - "._21:\n" - " .word gMenuCallback\n" - " .word Kagaya_80B0734+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = Kagaya_80B0734; + return 0; } -__attribute__((naked)) -void Kagaya_80B0734() +u8 Kagaya_80B0734(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._23 @cond_branch\n" - " mov r0, #0x0\n" - " b ._24\n" - "._23:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._25\n" - " bl debug_sub_811609C\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - "._24:\n" - " pop {r1}\n" - " bx r1\n" - "._26:\n" - " .align 2, 0\n" - "._25:\n" - " .word sub_805469C+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + debug_sub_811609C(Random() % 6, sub_805469C); + CloseMenu(); + ScriptContext2_Enable(); + return 1; + } + return 0; } -__attribute__((naked)) -void debug_sub_80B0770() +u8 debug_sub_80B0770(void) { - asm( - " push {r4, lr}\n" - " ldr r0, ._30\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0\n" - " bne ._27 @cond_branch\n" - " bl CloseMenu\n" - " bl IsPlayerFacingSurfableFishableWater\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._29 @cond_branch\n" - " ldr r0, ._30 + 4\n" - " str r4, [r0]\n" - " mov r0, #0x9\n" - " bl FieldEffectStart\n" - " b ._29\n" - "._31:\n" - " .align 2, 0\n" - "._30:\n" - " .word gPlayerAvatar\n" - " .word gFieldEffectArguments\n" - "._27:\n" - " bl CloseMenu\n" - "._29:\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (!(gPlayerAvatar.flags & 8)) + { + CloseMenu(); + if (IsPlayerFacingSurfableFishableWater()) + { + gFieldEffectArguments[0] = 0; + FieldEffectStart(9); + } + } + else + { + CloseMenu(); + } + return 1; } -__attribute__((naked)) -void debug_sub_80B07B0() +u8 debug_sub_80B07B0(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._32\n" - " ldr r0, ._32 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._33:\n" - " .align 2, 0\n" - "._32:\n" - " .word gMenuCallback\n" - " .word debug_sub_80B07DC+1\n" - "\n" - ); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gMenuCallback = debug_sub_80B07DC; + return 0; } -__attribute__((naked)) -void debug_sub_80B07DC() +u8 debug_sub_80B07DC(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._34 @cond_branch\n" - " mov r0, #0x0\n" - " b ._35\n" - "._34:\n" - " bl CloseMenu\n" - " ldr r0, ._36\n" - " bl SetMainCallback2\n" - " mov r0, #0x1\n" - "._35:\n" - " pop {r1}\n" - " bx r1\n" - "._37:\n" - " .align 2, 0\n" - "._36:\n" - " .word CB2_InitFlyRegionMap+1\n" - "\n" - ); + if (!UpdatePaletteFade()) + { + CloseMenu(); + SetMainCallback2(CB2_InitFlyRegionMap); + return 1; + } + return 0; } -__attribute__((naked)) -void debug_sub_80B0800() +u8 debug_sub_80B0800(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl sub_8068F18\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0\n" - " beq ._38 @cond_branch\n" - " ldr r0, ._39\n" - " mov r1, #0x0\n" - " str r1, [r0]\n" - " sub r1, r2, #1\n" - " str r1, [r0, #0x4]\n" - " mov r0, #0x2c\n" - " bl FieldEffectStart\n" - "._38:\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._40:\n" - " .align 2, 0\n" - "._39:\n" - " .word gFieldEffectArguments\n" - "\n" - ); + u8 r2; + + CloseMenu(); + r2 = sub_8068F18(); + if (r2 != 0) + { + gFieldEffectArguments[0] = 0; + gFieldEffectArguments[1] = r2 - 1; + FieldEffectStart(0x2C); + } + return 1; } #endif // DEBUG diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 99770f6e3..0d4ebe3f0 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -242,57 +242,21 @@ static const u8 gUnknown_083ECE3A[]; static const u16 gUnknown_083ECE42[]; static const u16 gUnknown_083ECE48[]; -#if DEBUG -__attribute__((naked)) -void PlaySlotMachine(u8 arg0, MainCallback cb) -{ - asm("\ - push {lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r3, ._1\n\ - mov r2, #0x0\n\ - strb r2, [r3]\n\ - bl PlaySlotMachine_Internal\n\ - ldr r0, ._1 + 4\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._2:\n\ - .align 2, 0\n\ -._1:\n\ - .word unk_debug_bss_1_1\n\ - .word CB2_SlotMachineSetup+1"); -} -#else void PlaySlotMachine(u8 arg0, MainCallback cb) { +#if DEBUG + unk_debug_bss_1_1 = 0; +#endif PlaySlotMachine_Internal(arg0, cb); SetMainCallback2(CB2_SlotMachineSetup); } -#endif #if DEBUG -__attribute__((naked)) -void debug_sub_811609C() +void debug_sub_811609C(u8 a, void (*func)(void)) { - asm("\ - push {lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r3, ._3\n\ - mov r2, #0x1\n\ - strb r2, [r3]\n\ - bl PlaySlotMachine_Internal\n\ - ldr r0, ._3 + 4\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._4:\n\ - .align 2, 0\n\ -._3:\n\ - .word unk_debug_bss_1_1\n\ - .word CB2_SlotMachineSetup+1"); + unk_debug_bss_1_1 = 1; + PlaySlotMachine_Internal(a, func); + SetMainCallback2(CB2_SlotMachineSetup); } #endif -- cgit v1.2.3 From 8cfc82726a0712e8c86d30294cee6506c1f0dc97 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 22:36:44 -0600 Subject: move undecompiled debug menu code to asm --- src/debug/kagaya_debug_menu.c | 2 +- src/debug/nakamura_debug_menu.c | 4859 +------------------ src/debug/nohara_debug_menu.c | 2310 +-------- src/debug/taya_debug_window.c | 2116 -------- src/debug/tomomichi_debug_menu.c | 8635 --------------------------------- src/debug/unk_debug_menu_3.c | 804 ---- src/debug/watanabe_debug_menu.c | 9838 -------------------------------------- 7 files changed, 7 insertions(+), 28557 deletions(-) delete mode 100644 src/debug/unk_debug_menu_3.c (limited to 'src') diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c index 89df82f04..3cb36ce0c 100644 --- a/src/debug/kagaya_debug_menu.c +++ b/src/debug/kagaya_debug_menu.c @@ -168,7 +168,7 @@ u8 debug_sub_80B07DC(void) u8 debug_sub_80B0800(void) { u8 r2; - + CloseMenu(); r2 = sub_8068F18(); if (r2 != 0) diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 328903126..b8c4ed73e 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -16,6 +16,9 @@ EWRAM_DATA u16 _nakamuraDataC = 0; __attribute__((unused)) static u8 _nakamuraStatic0[0x18]; __attribute__((unused)) static u8 _nakamuraStatic18; +asm(".global _nakamuraStatic0"); +asm(".global _nakamuraStatic18"); + u8 debug_sub_815FC54(); u8 debug_sub_815F2B4(); u8 debug_sub_815FC94(); @@ -182,4860 +185,4 @@ const u8 Str_843E655[] = _("かい"); const u8 Str_843E658[] = _("0"); const u8 Str_843E65A[] = _("はんい"); -__attribute__((naked)) -void debug_sub_815F1B8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0xe\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._1\n" - " mov r0, #0x10\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xe\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0xf\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r0}\n" - " bx r0\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word _843E3DC\n" - "\n" - ); -} - -__attribute__((naked)) -void InitNakamuraDebugMenu() -{ - asm( - " push {lr}\n" - " bl debug_sub_815F1B8\n" - " ldr r1, ._3\n" - " ldr r0, ._3 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gMenuCallback\n" - " .word debug_sub_815F214+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F214() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._9\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._5 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - "._5:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._6 @cond_branch\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - "._6:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._7 @cond_branch\n" - " ldr r4, ._9 + 4\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x15\n" - " add r4, r4, #0x4\n" - " add r0, r0, r4\n" - " ldr r4, [r0]\n" - " bl Menu_DestroyCursor\n" - " bl _call_via_r4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._12\n" - "._10:\n" - " .align 2, 0\n" - "._9:\n" - " .word gMain\n" - " .word _843E3DC\n" - "._7:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._11 @cond_branch\n" - " mov r0, #0x0\n" - " b ._12\n" - "._11:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._12:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F284() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._14\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._13 @cond_branch\n" - " bl debug_sub_81381B4\n" - " mov r0, #0x5\n" - " mov r1, #0x0\n" - " bl OpenPartyMenu\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._13:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._15:\n" - " .align 2, 0\n" - "._14:\n" - " .word gPaletteFade\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815F2B4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " bl CloseMenu\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._16\n" - " ldr r0, ._16 + 4\n" - " str r0, [r1, #0x8]\n" - " ldr r0, ._16 + 8\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " mov r0, #0x1\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._17:\n" - " .align 2, 0\n" - "._16:\n" - " .word gMain\n" - " .word sub_805469C+1\n" - " .word debug_sub_815F284+1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815F2F4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " bl CloseMenu\n" - " mov r7, #0x1\n" - "._34:\n" - " lsl r1, r7, #0x2\n" - " add r0, r1, r7\n" - " lsl r2, r0, #0x5\n" - " ldr r3, ._24\n" - " add r0, r2, r3\n" - " ldr r5, ._24 + 4\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " mov r9, r1\n" - " add r1, r7, #1\n" - " str r1, [sp]\n" - " cmp r0, #0\n" - " beq ._18 @cond_branch\n" - " b ._19\n" - "._18:\n" - " mov r5, #0x0\n" - " ldr r6, ._24 + 8\n" - " add r4, r7, #0\n" - " sub r4, r4, #0x46\n" - " ldr r3, ._24 + 12\n" - "._21:\n" - " add r1, r5, r2\n" - " add r1, r1, r3\n" - " add r0, r5, r6\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xff\n" - " beq ._20 @cond_branch\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x6\n" - " bls ._21 @cond_branch\n" - "._20:\n" - " cmp r5, #0x7\n" - " bne ._22 @cond_branch\n" - " add r0, r2, #6\n" - " b ._23\n" - "._25:\n" - " .align 2, 0\n" - "._24:\n" - " .word gSaveBlock1\n" - " .word 0x1a08\n" - " .word gSaveBlock2\n" - " .word gSaveBlock1+0x1a0a\n" - "._22:\n" - " add r0, r5, r2\n" - "._23:\n" - " add r0, r0, r3\n" - " strb r4, [r0]\n" - " ldr r1, ._35\n" - " ldr r2, ._35 + 4\n" - " add r2, r2, r1\n" - " mov sl, r2\n" - " mov r3, r9\n" - " add r0, r3, r7\n" - " lsl r6, r0, #0x5\n" - " add r1, r6, r1\n" - " ldr r5, ._35 + 4\n" - " add r5, r5, r1\n" - " mov r8, r5\n" - "._30:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x4b\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0xe\n" - " ldr r1, ._35 + 8\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " mov r2, r8\n" - " strb r0, [r2]\n" - " mov r5, #0x0\n" - " cmp r5, r7\n" - " bcs ._28 @cond_branch\n" - " mov r3, sl\n" - " ldrb r3, [r3]\n" - " cmp r0, r3\n" - " beq ._28 @cond_branch\n" - " ldr r4, ._35\n" - " add r0, r6, r4\n" - " ldr r2, ._35 + 4\n" - " add r3, r0, r2\n" - "._29:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r7\n" - " bcs ._28 @cond_branch\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r4\n" - " add r0, r0, r2\n" - " ldrb r1, [r3]\n" - " ldrb r0, [r0]\n" - " cmp r1, r0\n" - " bne ._29 @cond_branch\n" - "._28:\n" - " cmp r5, r7\n" - " bne ._30 @cond_branch\n" - " bl Random\n" - " mov r5, r9\n" - " add r4, r5, r7\n" - " lsl r4, r4, #0x5\n" - " ldr r1, ._35\n" - " add r3, r4, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x1\n" - " ldr r2, ._35 + 12\n" - " add r3, r3, r2\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x4\n" - " ldrb r1, [r3]\n" - " mov r5, #0x11\n" - " neg r5, r5\n" - " add r2, r5, #0\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strb r1, [r3]\n" - " mov r5, #0x0\n" - " ldr r6, ._35 + 16\n" - "._31:\n" - " bl Random\n" - " add r1, r5, r4\n" - " add r1, r1, r6\n" - " strb r0, [r1]\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x3\n" - " bls ._31 @cond_branch\n" - " mov r5, #0x0\n" - " mov r1, r9\n" - " add r0, r1, r7\n" - " lsl r4, r0, #0x5\n" - " ldr r3, ._35 + 20\n" - " mov r2, #0x0\n" - " add r6, r3, #0\n" - " add r6, r6, #0x10\n" - "._32:\n" - " add r1, r5, r4\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, r6\n" - " strb r2, [r1]\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0xf\n" - " bls ._32 @cond_branch\n" - " add r0, r7, #0\n" - " bl unref_sub_80BCD7C\n" - "._19:\n" - " ldr r2, [sp]\n" - " lsl r0, r2, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0x13\n" - " bhi ._33 @cond_branch\n" - " b ._34\n" - "._33:\n" - " mov r0, #0x1\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._36:\n" - " .align 2, 0\n" - "._35:\n" - " .word gSaveBlock1\n" - " .word 0x1a08\n" - " .word _843E424\n" - " .word 0x1a09\n" - " .word gSaveBlock1+0x1a11\n" - " .word gSaveBlock1+0x1a1a\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F470() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add r6, r0, #0\n" - " add r7, r1, #0\n" - " mov ip, r2\n" - " ldr r2, ._39\n" - " ldr r0, ._39 + 4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r2\n" - " ldr r1, ._39 + 8\n" - " add r0, r0, r1\n" - " ldrb r4, [r0]\n" - " mov r2, #0x0\n" - " ldr r3, ._39 + 12\n" - " add r5, r3, #0\n" - "._41:\n" - " lsl r1, r2, #0x2\n" - " add r0, r1, r5\n" - " ldrb r0, [r0]\n" - " cmp r0, r4\n" - " bne ._37 @cond_branch\n" - " add r0, r1, #1\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " strb r0, [r6]\n" - " add r0, r1, #2\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " strb r0, [r7]\n" - " add r0, r1, #3\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " mov r1, ip\n" - " strb r0, [r1]\n" - " b ._38\n" - "._40:\n" - " .align 2, 0\n" - "._39:\n" - " .word gSaveBlock1\n" - " .word _nakamuraData0\n" - " .word 0x1a08\n" - " .word _843E424\n" - "._37:\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x4a\n" - " bls ._41 @cond_branch\n" - "._38:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F4D8() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0xa\n" - " mov r3, #0xa\n" - " bl Menu_BlankWindowRect\n" - " ldr r6, ._43\n" - " ldr r7, ._43 + 4\n" - " ldrb r1, [r7]\n" - " add r0, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r2, ._43 + 8\n" - " ldrb r1, [r7]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r2\n" - " ldr r1, ._43 + 12\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._42 @cond_branch\n" - " mov r4, sp\n" - " add r4, r4, #0x1\n" - " mov r5, sp\n" - " add r5, r5, #0x2\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl debug_sub_815F470\n" - " ldrb r1, [r7]\n" - " add r0, r6, #0\n" - " bl sub_80BC190\n" - " add r0, r6, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, ._43 + 16\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, sp\n" - " ldrb r1, [r0]\n" - " add r0, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r0, ._43 + 20\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldrb r1, [r4]\n" - " add r0, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x3\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, ._43 + 24\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldrb r1, [r5]\n" - " add r0, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x3\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - "._42:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._44:\n" - " .align 2, 0\n" - "._43:\n" - " .word gStringVar1\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1\n" - " .word 0x1a08\n" - " .word Str_843E550\n" - " .word Str_843E552\n" - " .word Str_843E554\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F5C4() -{ - asm( - " push {lr}\n" - " ldr r0, ._48\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._45 @cond_branch\n" - " ldr r1, ._48 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._46 @cond_branch\n" - " mov r0, #0x13\n" - " b ._50\n" - "._49:\n" - " .align 2, 0\n" - "._48:\n" - " .word gMain\n" - " .word _nakamuraData0\n" - "._46:\n" - " sub r0, r0, #0x1\n" - " b ._50\n" - "._45:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._51 @cond_branch\n" - " ldr r1, ._54\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x13\n" - " bne ._52 @cond_branch\n" - " strb r2, [r1]\n" - " b ._53\n" - "._55:\n" - " .align 2, 0\n" - "._54:\n" - " .word _nakamuraData0\n" - "._52:\n" - " add r0, r0, #0x1\n" - "._50:\n" - " strb r0, [r1]\n" - "._53:\n" - " bl debug_sub_815F4D8\n" - " mov r0, #0x0\n" - " b ._58\n" - "._51:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._57 @cond_branch\n" - " mov r0, #0x0\n" - " b ._58\n" - "._57:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._58:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815F62C() -{ - asm( - " push {lr}\n" - " ldr r1, ._59\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " ldr r1, ._59 + 4\n" - " ldr r0, ._59 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " bl debug_sub_815F4D8\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._60:\n" - " .align 2, 0\n" - "._59:\n" - " .word _nakamuraData0\n" - " .word gMenuCallback\n" - " .word debug_sub_815F5C4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F668() -{ - asm( - " push {r4, r5, r6, lr}\n" - " ldr r0, ._61\n" - " ldrb r0, [r0]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x5\n" - " ldr r0, ._61 + 4\n" - " add r1, r1, r0\n" - " ldrb r4, [r1, #0x3]\n" - " lsl r4, r4, #0x18\n" - " ldrb r0, [r1, #0x2]\n" - " lsl r0, r0, #0x10\n" - " orr r4, r4, r0\n" - " ldrb r0, [r1, #0x1]\n" - " lsl r0, r0, #0x8\n" - " orr r4, r4, r0\n" - " ldrb r0, [r1]\n" - " orr r4, r4, r0\n" - " ldr r5, ._61 + 8\n" - " ldr r6, ._61 + 12\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " add r0, r5, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl __umodsi3\n" - " add r1, r0, #0\n" - " add r0, r5, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x7\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._62:\n" - " .align 2, 0\n" - "._61:\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1+0x1a11\n" - " .word gStringVar1\n" - " .word 0x186a0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F6E4() -{ - asm( - " push {r4, lr}\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0xb\n" - " mov r3, #0x4\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._63\n" - " ldr r0, ._63 + 4\n" - " ldrb r0, [r0]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x5\n" - " ldr r0, ._63 + 8\n" - " add r1, r1, r0\n" - " add r0, r4, #0\n" - " mov r2, #0x7\n" - " bl StringCopyN\n" - " mov r1, #0xff\n" - " strb r1, [r0]\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._64:\n" - " .align 2, 0\n" - "._63:\n" - " .word gStringVar1\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1+0x1a0a\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F72C() -{ - asm( - " push {r4, r5, lr}\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0xb\n" - " mov r3, #0xa\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._66\n" - " ldr r5, ._66 + 4\n" - " ldrb r1, [r5]\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r2, ._66 + 8\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r2\n" - " ldr r1, ._66 + 12\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._65 @cond_branch\n" - " bl debug_sub_815F6E4\n" - " bl debug_sub_815F668\n" - "._65:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._67:\n" - " .align 2, 0\n" - "._66:\n" - " .word gStringVar1\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1\n" - " .word 0x1a08\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F788() -{ - asm( - " push {lr}\n" - " mov r0, #0x2\n" - " mov r1, #0x5\n" - " mov r2, #0xb\n" - " mov r3, #0x6\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._68\n" - " ldr r1, ._68 + 4\n" - " ldrb r1, [r1]\n" - " add r1, r1, #0x2\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._69:\n" - " .align 2, 0\n" - "._68:\n" - " .word Str_843E574\n" - " .word _nakamuraData2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F7B4() -{ - asm( - " push {lr}\n" - " ldr r0, ._72\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._70 @cond_branch\n" - " mov r0, #0xb\n" - " mov r1, #0x1\n" - " mov r2, #0xb\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " b ._71\n" - "._73:\n" - " .align 2, 0\n" - "._72:\n" - " .word _nakamuraData1\n" - "._70:\n" - " ldr r0, ._74\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x1\n" - " ldr r1, ._74 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - "._71:\n" - " pop {r0}\n" - " bx r0\n" - "._75:\n" - " .align 2, 0\n" - "._74:\n" - " .word _nakamuraData3\n" - " .word Str_843E576\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F7F0() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r1, ._78\n" - " ldrb r2, [r1]\n" - " lsl r1, r2, #0x2\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x5\n" - " ldr r2, ._78 + 4\n" - " add r3, r1, r2\n" - " ldrb r1, [r3, #0x3]\n" - " lsl r2, r1, #0x18\n" - " ldrb r1, [r3, #0x2]\n" - " lsl r1, r1, #0x10\n" - " orr r2, r2, r1\n" - " ldrb r1, [r3, #0x1]\n" - " lsl r1, r1, #0x8\n" - " orr r2, r2, r1\n" - " ldrb r1, [r3]\n" - " orr r2, r2, r1\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r4, #0x9\n" - " ldr r0, ._78 + 8\n" - " ldrb r0, [r0]\n" - " cmp r4, r0\n" - " ble ._76 @cond_branch\n" - " add r5, r0, #0\n" - "._77:\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r1, r0, #0x1\n" - " lsl r0, r4, #0x18\n" - " mov r4, #0xff\n" - " lsl r4, r4, #0x18\n" - " add r0, r0, r4\n" - " lsr r4, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, r5\n" - " bgt ._77 @cond_branch\n" - "._76:\n" - " add r2, r2, r1\n" - " lsr r0, r2, #0x18\n" - " strb r0, [r3, #0x3]\n" - " mov r0, #0xff\n" - " lsl r0, r0, #0x10\n" - " and r0, r0, r2\n" - " lsr r0, r0, #0x10\n" - " strb r0, [r3, #0x2]\n" - " mov r0, #0xff\n" - " lsl r0, r0, #0x8\n" - " and r0, r0, r2\n" - " lsr r0, r0, #0x8\n" - " strb r0, [r3, #0x1]\n" - " strb r2, [r3]\n" - " bl debug_sub_815F668\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._79:\n" - " .align 2, 0\n" - "._78:\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1+0x1a11\n" - " .word _nakamuraData2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F86C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " ldr r1, ._84\n" - " ldrb r2, [r1]\n" - " lsl r1, r2, #0x2\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x5\n" - " ldr r2, ._84 + 4\n" - " add r5, r1, r2\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " lsr r6, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x64\n" - " bne ._80 @cond_branch\n" - " ldr r0, ._84 + 8\n" - " ldrb r1, [r0]\n" - " cmp r1, #0x6\n" - " bhi ._100 @cond_branch\n" - " mov r2, #0xff\n" - "._82:\n" - " add r0, r5, r1\n" - " strb r2, [r0]\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " cmp r1, #0x6\n" - " bls ._82 @cond_branch\n" - " b ._100\n" - "._85:\n" - " .align 2, 0\n" - "._84:\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1+0x1a0a\n" - " .word _nakamuraData2\n" - "._80:\n" - " ldr r0, ._87\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x4\n" - " bhi ._98 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._87 + 4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word _nakamuraData3\n" - " .word ._89\n" - "._89:\n" - " .word ._90\n" - " .word ._91\n" - " .word ._92\n" - " .word ._93\n" - " .word ._94\n" - "._90:\n" - " mov r3, #0x1\n" - " mov r2, #0x50\n" - " b ._98\n" - "._91:\n" - " mov r3, #0x51\n" - " mov r2, #0xa0\n" - " b ._98\n" - "._92:\n" - " mov r3, #0xbb\n" - " mov r2, #0xd4\n" - " b ._98\n" - "._93:\n" - " mov r3, #0xd5\n" - " mov r2, #0xee\n" - " b ._98\n" - "._94:\n" - " mov r3, #0xa1\n" - " mov r2, #0xaa\n" - "._98:\n" - " ldr r4, ._101\n" - " ldrb r1, [r4]\n" - " add r1, r5, r1\n" - " ldrb r0, [r1]\n" - " add r0, r0, r6\n" - " strb r0, [r1]\n" - " ldrb r0, [r4]\n" - " add r1, r5, r0\n" - " ldrb r0, [r1]\n" - " cmp r0, r3\n" - " bcs ._99 @cond_branch\n" - " strb r2, [r1]\n" - "._99:\n" - " ldrb r0, [r4]\n" - " add r1, r5, r0\n" - " ldrb r0, [r1]\n" - " cmp r0, r2\n" - " bls ._100 @cond_branch\n" - " strb r3, [r1]\n" - "._100:\n" - " bl debug_sub_815F6E4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._102:\n" - " .align 2, 0\n" - "._101:\n" - " .word _nakamuraData2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815F930() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r0, ._107\n" - " ldrb r2, [r0]\n" - " mov r4, #0xa\n" - " cmp r2, #0\n" - " bne ._103 @cond_branch\n" - " mov r4, #0x7\n" - "._103:\n" - " ldr r5, ._107 + 4\n" - " ldrh r1, [r5, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._104 @cond_branch\n" - " cmp r2, #0\n" - " beq ._105 @cond_branch\n" - " mov r0, #0x1\n" - " bl debug_sub_815F7F0\n" - " b ._136\n" - "._108:\n" - " .align 2, 0\n" - "._107:\n" - " .word _nakamuraData1\n" - " .word gMain\n" - "._105:\n" - " mov r0, #0x1\n" - " b ._113\n" - "._104:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._110 @cond_branch\n" - " cmp r2, #0\n" - " beq ._111 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl debug_sub_815F7F0\n" - " b ._136\n" - "._111:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._113\n" - "._110:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " cmp r3, #0\n" - " beq ._114 @cond_branch\n" - " ldr r1, ._117\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._115 @cond_branch\n" - " sub r0, r4, #1\n" - " b ._116\n" - "._118:\n" - " .align 2, 0\n" - "._117:\n" - " .word _nakamuraData2\n" - "._115:\n" - " sub r0, r0, #0x1\n" - "._116:\n" - " strb r0, [r1]\n" - "._125:\n" - " bl debug_sub_815F788\n" - " b ._136\n" - "._114:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._120 @cond_branch\n" - " ldr r2, ._123\n" - " ldrb r1, [r2]\n" - " sub r0, r4, #1\n" - " cmp r1, r0\n" - " bne ._121 @cond_branch\n" - " strb r3, [r2]\n" - " b ._125\n" - "._124:\n" - " .align 2, 0\n" - "._123:\n" - " .word _nakamuraData2\n" - "._121:\n" - " add r0, r1, #1\n" - " strb r0, [r2]\n" - " b ._125\n" - "._120:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._126 @cond_branch\n" - " cmp r2, #0\n" - " bne ._127 @cond_branch\n" - " ldr r4, ._129\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " mov r1, #0x5\n" - " bl __modsi3\n" - " strb r0, [r4]\n" - "._127:\n" - " bl debug_sub_815F7B4\n" - " b ._136\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word _nakamuraData3\n" - "._126:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._131 @cond_branch\n" - " mov r0, #0x2\n" - " mov r1, #0x5\n" - " mov r2, #0xb\n" - " mov r3, #0x6\n" - " bl Menu_BlankWindowRect\n" - " mov r0, #0xb\n" - " mov r1, #0x1\n" - " mov r2, #0xb\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._133\n" - " ldr r0, ._133 + 4\n" - " str r0, [r1]\n" - " b ._136\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gMenuCallback\n" - " .word debug_sub_815FA38+1\n" - "._131:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._136 @cond_branch\n" - " cmp r2, #0\n" - " bne ._136 @cond_branch\n" - " mov r0, #0x64\n" - "._113:\n" - " bl debug_sub_815F86C\n" - "._136:\n" - " mov r0, #0x0\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815FA38() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._139\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._137 @cond_branch\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " b ._138\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word gMain\n" - "._137:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._141 @cond_branch\n" - " mov r0, #0x2\n" - "._138:\n" - " bl Menu_MoveCursor\n" - "._161:\n" - " mov r0, #0x0\n" - " b ._142\n" - "._141:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._143 @cond_branch\n" - " ldr r1, ._146\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._144 @cond_branch\n" - " mov r0, #0x13\n" - " b ._148\n" - "._147:\n" - " .align 2, 0\n" - "._146:\n" - " .word _nakamuraData0\n" - "._144:\n" - " sub r0, r0, #0x1\n" - " b ._148\n" - "._143:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0\n" - " beq ._149 @cond_branch\n" - " ldr r1, ._152\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x13\n" - " bne ._150 @cond_branch\n" - " strb r2, [r1]\n" - " b ._151\n" - "._153:\n" - " .align 2, 0\n" - "._152:\n" - " .word _nakamuraData0\n" - "._150:\n" - " add r0, r0, #0x1\n" - "._148:\n" - " strb r0, [r1]\n" - "._151:\n" - " bl debug_sub_815F72C\n" - " b ._161\n" - "._149:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._155 @cond_branch\n" - " ldr r1, ._159\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._161 @cond_branch\n" - " ldr r2, ._159 + 4\n" - " add r1, r0, #0\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r2\n" - " ldr r1, ._159 + 8\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._161 @cond_branch\n" - " bl Menu_GetCursorPos\n" - " ldr r1, ._159 + 12\n" - " strb r0, [r1]\n" - " ldr r0, ._159 + 16\n" - " strb r4, [r0]\n" - " bl debug_sub_815F788\n" - " bl debug_sub_815F7B4\n" - " ldr r1, ._159 + 20\n" - " ldr r0, ._159 + 24\n" - " str r0, [r1]\n" - " b ._161\n" - "._160:\n" - " .align 2, 0\n" - "._159:\n" - " .word _nakamuraData0\n" - " .word gSaveBlock1\n" - " .word 0x1a08\n" - " .word _nakamuraData1\n" - " .word _nakamuraData2\n" - " .word gMenuCallback\n" - " .word debug_sub_815F930+1\n" - "._155:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._161 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._142:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815FB1C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " ldr r0, ._162\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " ldr r0, ._162 + 4\n" - " strb r1, [r0]\n" - " ldr r1, ._162 + 8\n" - " ldr r0, ._162 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xc\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " bl debug_sub_815F72C\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xb\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._163:\n" - " .align 2, 0\n" - "._162:\n" - " .word _nakamuraData0\n" - " .word _nakamuraData3\n" - " .word gMenuCallback\n" - " .word debug_sub_815FA38+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815FB78() -{ - asm( - " push {lr}\n" - " ldr r0, ._166\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._164 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._165\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word gMain\n" - "._164:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._168 @cond_branch\n" - " mov r0, #0x1\n" - "._165:\n" - " bl Menu_MoveCursor\n" - " mov r0, #0x0\n" - " b ._177\n" - "._168:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._170 @cond_branch\n" - " bl CloseMenu\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._171 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._172 @cond_branch\n" - " b ._175\n" - "._171:\n" - " bl debug_sub_814A714\n" - " b ._175\n" - "._172:\n" - " bl ClearRoamerData\n" - " bl ClearRoamerLocationData\n" - " b ._175\n" - "._170:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._176 @cond_branch\n" - " mov r0, #0x0\n" - " b ._177\n" - "._176:\n" - " bl CloseMenu\n" - "._175:\n" - " mov r0, #0x1\n" - "._177:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815FBE8() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " ldr r1, ._178\n" - " ldr r0, ._178 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " ldr r4, ._178 + 8\n" - " add r0, r4, #0\n" - " bl debug_sub_814A73C\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._178 + 12\n" - " mov r1, #0x2\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xa\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word gMenuCallback\n" - " .word debug_sub_815FB78+1\n" - " .word gStringVar1\n" - " .word Str_843E580\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815FC54() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r3, #0x0\n" - " ldr r7, ._181\n" - " mov r6, #0xe8\n" - " lsl r6, r6, #0x3\n" - " ldr r5, ._181 + 4\n" - " ldr r4, ._181 + 8\n" - "._180:\n" - " lsl r1, r3, #0x2\n" - " add r1, r1, r7\n" - " add r2, r3, #0\n" - " add r2, r2, #0x85\n" - " add r0, r1, r6\n" - " strh r2, [r0]\n" - " add r1, r1, r4\n" - " strh r5, [r1]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " cmp r3, #0x2a\n" - " bls ._180 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gSaveBlock1\n" - " .word 0x3e7\n" - " .word 0x742\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815FC94() -{ - asm( - " push {lr}\n" - " bl ClearDecorationInventories\n" - " bl debug_sub_814A3A8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815FCB4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r7, #0x0\n" - " ldr r5, ._188\n" - " ldr r0, [r5]\n" - " ldr r0, [r0, #0x4]\n" - " mov r1, #0x3\n" - " bl __divsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " add r1, r0, #0\n" - " mul r1, r1, r4\n" - " lsl r1, r1, #0x10\n" - " lsr r6, r1, #0x10\n" - " add r0, r6, r0\n" - " mov r9, r5\n" - " cmp r6, r0\n" - " bge ._183 @cond_branch\n" - " mov r8, r0\n" - "._187:\n" - " mov r4, #0x0\n" - " mov r1, r9\n" - " ldr r0, [r1]\n" - " ldr r0, [r0]\n" - " add r5, r6, #1\n" - " cmp r4, r0\n" - " bge ._184 @cond_branch\n" - " ldr r0, ._188\n" - " mov r9, r0\n" - "._186:\n" - " add r0, r4, #7\n" - " add r1, r6, #7\n" - " bl MapGridGetMetatileBehaviorAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl sub_805759C\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._185 @cond_branch\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r7, r0, #0x10\n" - "._185:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " ldr r0, ._188\n" - " ldr r0, [r0]\n" - " ldr r0, [r0]\n" - " cmp r4, r0\n" - " blt ._186 @cond_branch\n" - "._184:\n" - " lsl r0, r5, #0x10\n" - " lsr r6, r0, #0x10\n" - " cmp r6, r8\n" - " blt ._187 @cond_branch\n" - "._183:\n" - " add r0, r7, #0\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._189:\n" - " .align 2, 0\n" - "._188:\n" - " .word gMapHeader\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815FD40() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r6, #0x0\n" - " mov r4, sp\n" - " add r4, r4, #0x2\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " mov r1, sp\n" - " mov r0, sp\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r1]\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r4]\n" - " mov r5, #0x0\n" - " ldr r1, ._192\n" - " ldr r0, [r1]\n" - " ldr r0, [r0, #0x4]\n" - " add r7, r4, #0\n" - " cmp r6, r0\n" - " bge ._190 @cond_branch\n" - "._199:\n" - " mov r4, #0x0\n" - " ldr r0, [r1]\n" - " b ._191\n" - "._193:\n" - " .align 2, 0\n" - "._192:\n" - " .word gMapHeader\n" - "._198:\n" - " add r0, r4, #7\n" - " add r1, r5, #7\n" - " bl MapGridGetMetatileBehaviorAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl sub_805759C\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._196 @cond_branch\n" - " add r0, r6, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, r4\n" - " bne ._196 @cond_branch\n" - " mov r1, #0x0\n" - " ldsh r0, [r7, r1]\n" - " cmp r0, r5\n" - " bne ._196 @cond_branch\n" - " add r0, r6, #0\n" - " b ._197\n" - "._196:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " ldr r0, ._200\n" - " ldr r0, [r0]\n" - "._191:\n" - " ldr r0, [r0]\n" - " cmp r4, r0\n" - " blt ._198 @cond_branch\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " ldr r1, ._200\n" - " ldr r0, [r1]\n" - " ldr r0, [r0, #0x4]\n" - " cmp r5, r0\n" - " blt ._199 @cond_branch\n" - "._190:\n" - " add r0, r6, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - "._197:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._201:\n" - " .align 2, 0\n" - "._200:\n" - " .word gMapHeader\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815FDE4() -{ - asm( - " push {lr}\n" - " ldr r0, ._205\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._202 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._203 @cond_branch\n" - "._202:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._204\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word gMain\n" - "._203:\n" - " mov r0, #0x0\n" - "._204:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_815FE1C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x10\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._210\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r6, ._210 + 4\n" - " mov r0, #0x0\n" - " bl debug_sub_815FCB4\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x5\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " mov r0, #0x1\n" - " bl debug_sub_815FCB4\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x5\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0x2\n" - " bl debug_sub_815FCB4\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0x5\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " bl debug_sub_8092344\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " mov r0, #0x1\n" - " bl debug_sub_8092344\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0x2\n" - " bl debug_sub_8092344\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, ._210 + 8\n" - " ldr r1, ._210 + 12\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " bl FeebasSeedRng\n" - " mov r0, #0x0\n" - " bl debug_sub_815FCB4\n" - " add r4, r0, #0\n" - " mov r0, #0x1\n" - " bl debug_sub_815FCB4\n" - " add r5, r0, #0\n" - " mov r0, #0x2\n" - " bl debug_sub_815FCB4\n" - " add r4, r4, r5\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x10\n" - " lsr r7, r0, #0x10\n" - " mov r5, #0x0\n" - "._209:\n" - " bl FeebasRandom\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " add r1, r7, #0\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r1, r0, #0x10\n" - " cmp r1, #0\n" - " bne ._207 @cond_branch\n" - " add r1, r7, #0\n" - "._207:\n" - " sub r0, r1, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0x2\n" - " bls ._208 @cond_branch\n" - " add r0, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x3\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " add r4, r4, #0x2\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r5, #0\n" - " mov r1, #0x3\n" - " bl __udivsi3\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x19\n" - " mov r0, #0xb0\n" - " lsl r0, r0, #0x14\n" - " add r2, r2, r0\n" - " lsr r2, r2, #0x18\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl Menu_PrintText\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - "._208:\n" - " cmp r5, #0x6\n" - " bne ._209 @cond_branch\n" - " ldr r4, ._210 + 4\n" - " bl debug_sub_815FD40\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r1, ._210 + 16\n" - " ldr r0, ._210 + 20\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._211:\n" - " .align 2, 0\n" - "._210:\n" - " .word Str_843E58D\n" - " .word gStringVar1\n" - " .word gSaveBlock1\n" - " .word 0x2dd6\n" - " .word gMenuCallback\n" - " .word debug_sub_815FDE4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_815FFDC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " mov r0, #0xe\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0xe\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._214\n" - " mov r1, #0x1\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r5, #0x0\n" - " ldr r0, ._214 + 4\n" - " mov r8, r0\n" - "._216:\n" - " mov r0, #0x64\n" - " add r1, r5, #0\n" - " mul r1, r1, r0\n" - " ldr r0, ._214 + 8\n" - " add r6, r1, r0\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " lsl r1, r5, #0x2\n" - " mov r2, r8\n" - " add r4, r1, r2\n" - " strh r0, [r4]\n" - " lsl r0, r0, #0x10\n" - " add r7, r1, #0\n" - " cmp r0, #0\n" - " beq ._212 @cond_branch\n" - " add r0, r6, #0\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " strb r0, [r4, #0x2]\n" - " add r0, r5, #0\n" - " bl debug_sub_816009C\n" - " add r0, r5, #0\n" - " bl debug_sub_81600D0\n" - " add r0, r5, #0\n" - " bl debug_sub_816013C\n" - " b ._213\n" - "._215:\n" - " .align 2, 0\n" - "._214:\n" - " .word Str_843E5D4\n" - " .word _nakamuraStatic0\n" - " .word gPlayerParty\n" - "._212:\n" - " mov r0, #0x1\n" - " strb r0, [r4, #0x2]\n" - "._213:\n" - " mov r0, r8\n" - " add r1, r7, r0\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0x3]\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x5\n" - " bls ._216 @cond_branch\n" - " ldr r1, ._217\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " mov r0, #0xf\n" - " mov r1, #0x1\n" - " mov r2, #0xff\n" - " bl PrintTriangleCursorWithPalette\n" - " ldr r1, ._217 + 4\n" - " ldr r0, ._217 + 8\n" - " str r0, [r1]\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._218:\n" - " .align 2, 0\n" - "._217:\n" - " .word _nakamuraData4\n" - " .word gMenuCallback\n" - " .word debug_sub_8160498+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_816009C() -{ - asm( - " push {lr}\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " ldr r1, ._219\n" - " lsl r0, r2, #0x2\n" - " add r0, r0, r1\n" - " mov r3, #0x0\n" - " ldsh r1, [r0, r3]\n" - " mov r0, #0xb\n" - " mul r0, r0, r1\n" - " ldr r1, ._219 + 4\n" - " add r0, r0, r1\n" - " lsl r2, r2, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0x10\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._220:\n" - " .align 2, 0\n" - "._219:\n" - " .word _nakamuraStatic0\n" - " .word gSpeciesNames\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81600D0() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r5, r4, #0\n" - " ldr r1, ._223\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " mov r0, #0x64\n" - " mul r0, r0, r4\n" - " ldr r1, ._223 + 4\n" - " add r0, r0, r1\n" - " bl GetMonGender\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._221 @cond_branch\n" - " ldr r0, ._223 + 8\n" - " b ._222\n" - "._224:\n" - " .align 2, 0\n" - "._223:\n" - " .word Str_843E5F0\n" - " .word gPlayerParty\n" - " .word gOtherText_MaleSymbol2\n" - "._221:\n" - " cmp r0, #0xfe\n" - " bne ._225 @cond_branch\n" - " ldr r0, ._227\n" - "._222:\n" - " lsl r2, r4, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0x17\n" - " bl Menu_PrintText\n" - " b ._226\n" - "._228:\n" - " .align 2, 0\n" - "._227:\n" - " .word gOtherText_FemaleSymbolAndLv\n" - "._225:\n" - " lsl r2, r5, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r0, sp\n" - " mov r1, #0x17\n" - " bl Menu_PrintText\n" - "._226:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_816013C() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r5, ._229\n" - " ldr r1, ._229 + 4\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r1\n" - " mov r1, #0x2\n" - " ldrsb r1, [r0, r1]\n" - " add r0, r5, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " lsl r4, r4, #0x1\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r5, #0\n" - " mov r1, #0x1a\n" - " add r2, r4, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._230:\n" - " .align 2, 0\n" - "._229:\n" - " .word gStringVar1\n" - " .word _nakamuraStatic0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_816017C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " lsl r3, r4, #0x1\n" - " add r1, r3, #1\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r3, r3, #0x2\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x10\n" - " mov r2, #0x1c\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._232\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0\n" - " beq ._231 @cond_branch\n" - " add r0, r4, #0\n" - " bl debug_sub_816009C\n" - " add r0, r4, #0\n" - " bl debug_sub_81600D0\n" - " add r0, r4, #0\n" - " bl debug_sub_816013C\n" - "._231:\n" - " mov r0, #0x5\n" - " bl debug_sub_81603B8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._233:\n" - " .align 2, 0\n" - "._232:\n" - " .word _nakamuraStatic0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81601C8() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff0\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r1, ._239\n" - " lsl r0, r5, #0x2\n" - " add r2, r0, r1\n" - " mov r4, #0x0\n" - " ldsh r0, [r2, r4]\n" - " cmp r0, #0\n" - " bne ._236 @cond_branch\n" - " ldrb r0, [r2, #0x3]\n" - " cmp r0, #0\n" - " bne ._236 @cond_branch\n" - " cmp r3, #0x1\n" - " bne ._236 @cond_branch\n" - " mov r0, #0x8a\n" - " lsl r0, r0, #0x1\n" - " strh r0, [r2]\n" - "._236:\n" - " lsl r0, r5, #0x2\n" - " add r4, r0, r1\n" - " lsl r0, r3, #0x18\n" - " asr r0, r0, #0x18\n" - " ldrh r1, [r4]\n" - " add r2, r0, r1\n" - " mov r3, #0x0\n" - " strh r2, [r4]\n" - " lsl r1, r2, #0x10\n" - " mov r0, #0xcd\n" - " lsl r0, r0, #0x11\n" - " cmp r1, r0\n" - " ble ._237 @cond_branch\n" - " ldr r1, ._239 + 4\n" - " add r0, r2, r1\n" - " strh r0, [r4]\n" - "._237:\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " bge ._238 @cond_branch\n" - " ldr r2, ._239 + 8\n" - " add r0, r1, r2\n" - " strh r0, [r4]\n" - "._238:\n" - " mov r0, #0x64\n" - " mul r0, r0, r5\n" - " ldr r1, ._239 + 12\n" - " add r0, r0, r1\n" - " ldrh r1, [r4]\n" - " ldrb r2, [r4, #0x2]\n" - " str r3, [sp]\n" - " str r3, [sp, #0x4]\n" - " str r3, [sp, #0x8]\n" - " str r3, [sp, #0xc]\n" - " mov r3, #0x20\n" - " bl CreateMon\n" - " mov r0, #0x1\n" - " strb r0, [r4, #0x3]\n" - " add sp, sp, #0x10\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._240:\n" - " .align 2, 0\n" - "._239:\n" - " .word _nakamuraStatic0\n" - " .word 0xfffffe65\n" - " .word 0x19b\n" - " .word gPlayerParty\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160258() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " ldr r1, ._242\n" - " lsl r0, r2, #0x2\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0\n" - " beq ._241 @cond_branch\n" - " add r0, r2, #0\n" - " bl debug_sub_816062C\n" - "._241:\n" - " pop {r0}\n" - " bx r0\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word _nakamuraStatic0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_816027C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r2, r1, #0x18\n" - " ldr r1, ._247\n" - " lsl r0, r4, #0x2\n" - " add r3, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r3, r1]\n" - " cmp r0, #0\n" - " beq ._244 @cond_branch\n" - " lsl r0, r2, #0x18\n" - " asr r0, r0, #0x18\n" - " ldrb r1, [r3, #0x2]\n" - " add r0, r0, r1\n" - " strb r0, [r3, #0x2]\n" - " lsl r0, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x64\n" - " ble ._245 @cond_branch\n" - " mov r0, #0x1\n" - " strb r0, [r3, #0x2]\n" - "._245:\n" - " mov r0, #0x2\n" - " ldrsb r0, [r3, r0]\n" - " cmp r0, #0\n" - " bgt ._246 @cond_branch\n" - " mov r0, #0x64\n" - " strb r0, [r3, #0x2]\n" - "._246:\n" - " mov r0, #0x64\n" - " mul r4, r4, r0\n" - " ldr r0, ._247 + 4\n" - " add r4, r4, r0\n" - " ldr r2, ._247 + 8\n" - " mov r0, #0x0\n" - " ldsh r1, [r3, r0]\n" - " lsl r0, r1, #0x3\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrb r1, [r0, #0x13]\n" - " mov r0, #0xca\n" - " lsl r0, r0, #0x1\n" - " add r2, r1, #0\n" - " mul r2, r2, r0\n" - " mov r0, #0x2\n" - " ldrsb r0, [r3, r0]\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._247 + 12\n" - " add r0, r0, r1\n" - " add r2, r2, r0\n" - " add r0, r4, #0\n" - " mov r1, #0x19\n" - " bl SetMonData\n" - " add r0, r4, #0\n" - " bl debug_sub_803F55C\n" - "._244:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._248:\n" - " .align 2, 0\n" - "._247:\n" - " .word _nakamuraStatic0\n" - " .word gPlayerParty\n" - " .word gBaseStats\n" - " .word gExperienceTables\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160308() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add sp, sp, #0xffffff8c\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " mov r2, #0x0\n" - "._252:\n" - " add r1, r2, #1\n" - " lsl r0, r1, #0x18\n" - " lsr r5, r0, #0x18\n" - " mov r8, r1\n" - " cmp r5, #0x5\n" - " bhi ._249 @cond_branch\n" - " mov r0, #0x64\n" - " mov r9, r0\n" - " mov r0, r9\n" - " mul r0, r0, r2\n" - " ldr r7, ._254\n" - " add r6, r0, r7\n" - "._251:\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " bne ._250 @cond_branch\n" - " add r0, sp, #0x10\n" - " add r1, r6, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " mov r4, r9\n" - " mul r4, r4, r5\n" - " add r4, r4, r7\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " add r0, r4, #0\n" - " add r1, sp, #0x10\n" - " mov r2, #0x64\n" - " bl memcpy\n" - "._250:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x5\n" - " bls ._251 @cond_branch\n" - "._249:\n" - " mov r1, r8\n" - " lsl r0, r1, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x4\n" - " bls ._252 @cond_branch\n" - " bl CalculatePlayerPartyCount\n" - " ldr r4, ._254 + 4\n" - " ldrb r1, [r4]\n" - " cmp r1, #0\n" - " bne ._253 @cond_branch\n" - " ldr r0, ._254\n" - " str r1, [sp]\n" - " str r1, [sp, #0x4]\n" - " str r1, [sp, #0x8]\n" - " str r1, [sp, #0xc]\n" - " mov r1, #0x1\n" - " mov r2, #0xa\n" - " mov r3, #0x20\n" - " bl CreateMon\n" - " mov r0, #0x1\n" - " strb r0, [r4]\n" - "._253:\n" - " add sp, sp, #0x74\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word gPlayerParty\n" - " .word gPlayerPartyCount\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81603B8() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r7, ._259\n" - " ldrb r4, [r7]\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._259 + 4\n" - " add r0, r5, r0\n" - " ldrb r2, [r0]\n" - " lsl r3, r4, #0x1\n" - " add r1, r3, #1\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r3, r3, #0x2\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " add r0, r2, #0\n" - " bl Menu_BlankWindowRect\n" - " cmp r6, #0\n" - " bne ._256 @cond_branch\n" - " cmp r4, #0\n" - " beq ._257 @cond_branch\n" - " ldrb r0, [r7]\n" - " sub r0, r0, #0x1\n" - " b ._258\n" - "._260:\n" - " .align 2, 0\n" - "._259:\n" - " .word _nakamuraData4\n" - " .word _843E5D1\n" - "._257:\n" - " lsl r0, r5, #0x1\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, #0x5\n" - "._258:\n" - " strb r0, [r7]\n" - "._256:\n" - " ldr r1, ._264\n" - " cmp r6, #0x1\n" - " bne ._261 @cond_branch\n" - " cmp r4, #0x5\n" - " beq ._262 @cond_branch\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " b ._263\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word _nakamuraData4\n" - "._262:\n" - " lsl r0, r5, #0x1\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x1\n" - "._263:\n" - " strb r0, [r1]\n" - "._261:\n" - " cmp r6, #0x2\n" - " bne ._266 @cond_branch\n" - " cmp r5, #0\n" - " beq ._267 @cond_branch\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x6\n" - " b ._268\n" - "._267:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc\n" - "._268:\n" - " strb r0, [r1]\n" - "._266:\n" - " cmp r6, #0x3\n" - " bne ._271 @cond_branch\n" - " cmp r5, #0x2\n" - " beq ._270 @cond_branch\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x6\n" - " strb r0, [r1]\n" - " b ._271\n" - "._270:\n" - " strb r4, [r1]\n" - "._271:\n" - " ldrb r4, [r1]\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " ldr r0, ._272\n" - " add r0, r5, r0\n" - " ldrb r0, [r0]\n" - " lsr r1, r1, #0x17\n" - " add r1, r1, #0x1\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0xff\n" - " bl PrintTriangleCursorWithPalette\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._273:\n" - " .align 2, 0\n" - "._272:\n" - " .word _843E5D1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160498() -{ - asm( - " push {r4, lr}\n" - " ldr r1, ._276\n" - " ldrh r2, [r1, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._274 @cond_branch\n" - " mov r0, #0x0\n" - " b ._281\n" - "._277:\n" - " .align 2, 0\n" - "._276:\n" - " .word gMain\n" - "._274:\n" - " mov r0, #0x80\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._278 @cond_branch\n" - " mov r0, #0x1\n" - " b ._281\n" - "._278:\n" - " mov r0, #0x20\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._280 @cond_branch\n" - " mov r0, #0x2\n" - " b ._281\n" - "._280:\n" - " mov r0, #0x10\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._282 @cond_branch\n" - " mov r0, #0x3\n" - "._281:\n" - " bl debug_sub_81603B8\n" - " mov r0, #0x0\n" - " b ._311\n" - "._282:\n" - " ldrh r1, [r1, #0x30]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._284 @cond_branch\n" - " ldr r4, ._289\n" - " ldrb r0, [r4]\n" - " cmp r0, #0x5\n" - " bhi ._285 @cond_branch\n" - " mov r1, #0x1\n" - " bl debug_sub_81601C8\n" - "._285:\n" - " ldrb r0, [r4]\n" - " sub r0, r0, #0x6\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bhi ._286 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8160258\n" - "._286:\n" - " ldrb r0, [r4]\n" - " sub r0, r0, #0xc\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bhi ._306 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " b ._300\n" - "._290:\n" - " .align 2, 0\n" - "._289:\n" - " .word _nakamuraData4\n" - "._284:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._291 @cond_branch\n" - " ldr r4, ._294\n" - " ldrb r0, [r4]\n" - " cmp r0, #0x5\n" - " bhi ._304 @cond_branch\n" - " mov r1, #0x1\n" - " neg r1, r1\n" - " b ._293\n" - "._295:\n" - " .align 2, 0\n" - "._294:\n" - " .word _nakamuraData4\n" - "._291:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._296 @cond_branch\n" - " ldr r4, ._301\n" - " ldrb r0, [r4]\n" - " cmp r0, #0x5\n" - " bhi ._297 @cond_branch\n" - " mov r1, #0xa\n" - " bl debug_sub_81601C8\n" - "._297:\n" - " ldrb r0, [r4]\n" - " sub r0, r0, #0x6\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bhi ._298 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8160258\n" - "._298:\n" - " ldrb r0, [r4]\n" - " sub r0, r0, #0xc\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bhi ._306 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " b ._300\n" - "._302:\n" - " .align 2, 0\n" - "._301:\n" - " .word _nakamuraData4\n" - "._296:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._303 @cond_branch\n" - " ldr r4, ._308\n" - " ldrb r0, [r4]\n" - " cmp r0, #0x5\n" - " bhi ._304 @cond_branch\n" - " mov r1, #0xa\n" - " neg r1, r1\n" - "._293:\n" - " bl debug_sub_81601C8\n" - "._304:\n" - " ldrb r0, [r4]\n" - " sub r0, r0, #0x6\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bhi ._305 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8160258\n" - "._305:\n" - " ldrb r0, [r4]\n" - " sub r0, r0, #0xc\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x5\n" - " bhi ._306 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " neg r1, r1\n" - "._300:\n" - " bl debug_sub_816027C\n" - "._306:\n" - " ldrb r0, [r4]\n" - " mov r1, #0x6\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_816017C\n" - " mov r0, #0x0\n" - " b ._311\n" - "._309:\n" - " .align 2, 0\n" - "._308:\n" - " .word _nakamuraData4\n" - "._303:\n" - " mov r0, #0x8\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._310 @cond_branch\n" - " mov r0, #0x0\n" - " b ._311\n" - "._310:\n" - " bl debug_sub_8160308\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._311:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_816062C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add sp, sp, #0xfffffff0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " mov r0, #0x64\n" - " mov r4, r8\n" - " mul r4, r4, r0\n" - " ldr r0, ._316\n" - " add r4, r4, r0\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " lsl r0, r0, #0x10\n" - " lsr r7, r0, #0x10\n" - " add r0, r4, #0\n" - " bl GetMonGender\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " ldr r1, ._316 + 4\n" - " lsl r0, r7, #0x3\n" - " sub r0, r0, r7\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrb r6, [r0, #0x10]\n" - " cmp r6, #0\n" - " beq ._313 @cond_branch\n" - " cmp r6, #0xfe\n" - " beq ._313 @cond_branch\n" - " cmp r6, #0xff\n" - " bne ._314 @cond_branch\n" - "._313:\n" - " mov r0, #0x64\n" - " mov r1, r8\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r1, ._316\n" - " add r0, r0, r1\n" - " bl GetMonGender\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._320\n" - "._317:\n" - " .align 2, 0\n" - "._316:\n" - " .word gPlayerParty\n" - " .word gBaseStats\n" - "._314:\n" - " cmp r2, #0\n" - " beq ._318 @cond_branch\n" - " cmp r2, #0xfe\n" - " beq ._319 @cond_branch\n" - " mov r0, #0x0\n" - " b ._320\n" - "._318:\n" - " mov r6, #0xfe\n" - " b ._321\n" - "._319:\n" - " mov r6, #0x0\n" - "._321:\n" - " mov r0, r8\n" - " lsl r0, r0, #0x2\n" - " mov r9, r0\n" - "._322:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " orr r5, r5, r0\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl GetGenderFromSpeciesAndPersonality\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, r6\n" - " bne ._322 @cond_branch\n" - " mov r0, #0x64\n" - " mov r4, r8\n" - " mul r4, r4, r0\n" - " ldr r0, ._323\n" - " add r4, r4, r0\n" - " add r0, r4, #0\n" - " mov r1, #0x42\n" - " bl GetMonData\n" - " ldr r0, ._323 + 4\n" - " add r0, r0, r9\n" - " ldrh r1, [r0]\n" - " ldrb r2, [r0, #0x2]\n" - " mov r0, #0x1\n" - " str r0, [sp]\n" - " str r5, [sp, #0x4]\n" - " mov r0, #0x0\n" - " str r0, [sp, #0x8]\n" - " str r0, [sp, #0xc]\n" - " add r0, r4, #0\n" - " mov r3, #0x20\n" - " bl CreateMon\n" - " add r0, r6, #0\n" - "._320:\n" - " add sp, sp, #0x10\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._324:\n" - " .align 2, 0\n" - "._323:\n" - " .word gPlayerParty\n" - " .word _nakamuraStatic0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160714() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add sp, sp, #0xfffffff0\n" - " add r6, r0, #0\n" - " mov r9, r1\n" - " mov r7, #0x0\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " mov r2, #0x0\n" - " mov r5, #0x0\n" - "._329:\n" - " add r4, r5, #1\n" - " lsl r1, r4, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r9\n" - " str r2, [sp, #0xc]\n" - " bl GetPokeblockData\n" - " add r1, r0, #0\n" - " lsl r0, r5, #0x1\n" - " add r0, r0, sp\n" - " strh r1, [r0]\n" - " ldr r2, [sp, #0xc]\n" - " cmp r5, #0x5\n" - " beq ._328 @cond_branch\n" - " lsl r0, r1, #0x10\n" - " asr r1, r0, #0x10\n" - " cmp r1, #0\n" - " ble ._326 @cond_branch\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._326:\n" - " cmp r1, #0\n" - " bge ._327 @cond_branch\n" - " mov r0, r8\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - "._327:\n" - " cmp r1, #0\n" - " bne ._328 @cond_branch\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - "._328:\n" - " lsl r0, r4, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x5\n" - " bls ._329 @cond_branch\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x31\n" - " bgt ._333 @cond_branch\n" - " mov r0, sp\n" - " ldrh r0, [r0, #0x2]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x31\n" - " bgt ._333 @cond_branch\n" - " mov r0, sp\n" - " mov r4, #0x4\n" - " ldsh r0, [r0, r4]\n" - " cmp r0, #0x31\n" - " bgt ._333 @cond_branch\n" - " mov r0, sp\n" - " mov r1, #0x6\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x31\n" - " bgt ._333 @cond_branch\n" - " mov r0, sp\n" - " mov r4, #0x8\n" - " ldsh r0, [r0, r4]\n" - " cmp r0, #0x31\n" - " ble ._334 @cond_branch\n" - "._333:\n" - " ldr r1, ._336\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0xe\n" - " b ._400\n" - "._337:\n" - " .align 2, 0\n" - "._336:\n" - " .word ContestStatsText_GoldPokeBlock\n" - "._334:\n" - " cmp r7, #0x4\n" - " bne ._338 @cond_branch\n" - " ldr r1, ._340\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0xd\n" - " b ._400\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word ContestStatsText_WhitePokeBlock\n" - "._338:\n" - " mov r3, #0x0\n" - " mov r5, #0x0\n" - "._343:\n" - " lsl r0, r5, #0x1\n" - " add r0, r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x2\n" - " bne ._342 @cond_branch\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - "._342:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x4\n" - " bls ._343 @cond_branch\n" - " cmp r3, #0x3\n" - " beq ._345 @cond_branch\n" - " cmp r2, #0x5\n" - " beq ._345 @cond_branch\n" - " mov r4, r8\n" - " cmp r4, #0x4\n" - " bne ._346 @cond_branch\n" - "._345:\n" - " ldr r1, ._348\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0xc\n" - " b ._400\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word ContestStatsText_BlackPokeBlock\n" - "._346:\n" - " cmp r7, #0x3\n" - " bne ._350 @cond_branch\n" - " ldr r1, ._352\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0xb\n" - " b ._400\n" - "._353:\n" - " .align 2, 0\n" - "._352:\n" - " .word ContestStatsText_GrayPokeBlock\n" - "._350:\n" - " cmp r7, #0x2\n" - " beq ._354 @cond_branch\n" - " mov r0, r8\n" - " cmp r0, #0x2\n" - " bne ._377 @cond_branch\n" - "._354:\n" - " mov r3, #0x6\n" - " mov r2, #0x0\n" - " mov r5, #0x0\n" - "._359:\n" - " lsl r0, r5, #0x1\n" - " add r0, r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0\n" - " beq ._358 @cond_branch\n" - " cmp r3, #0x6\n" - " bne ._357 @cond_branch\n" - " add r3, r5, #0\n" - " b ._358\n" - "._357:\n" - " add r2, r5, #0\n" - "._358:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x4\n" - " bls ._359 @cond_branch\n" - " lsl r0, r3, #0x1\n" - " mov r4, sp\n" - " add r1, r4, r0\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, sp\n" - " mov r4, #0x0\n" - " ldsh r1, [r1, r4]\n" - " mov r4, #0x0\n" - " ldsh r0, [r0, r4]\n" - " cmp r1, r0\n" - " blt ._360 @cond_branch\n" - " add r2, r3, #0\n" - "._360:\n" - " cmp r2, #0\n" - " bne ._361 @cond_branch\n" - " ldr r1, ._363\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x6\n" - " b ._400\n" - "._364:\n" - " .align 2, 0\n" - "._363:\n" - " .word ContestStatsText_PurplePokeBlock\n" - "._361:\n" - " cmp r2, #0x1\n" - " bne ._365 @cond_branch\n" - " ldr r1, ._367\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x7\n" - " b ._400\n" - "._368:\n" - " .align 2, 0\n" - "._367:\n" - " .word ContestStatsText_IndigoPokeBlock\n" - "._365:\n" - " cmp r2, #0x2\n" - " bne ._369 @cond_branch\n" - " ldr r1, ._371\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x8\n" - " b ._400\n" - "._372:\n" - " .align 2, 0\n" - "._371:\n" - " .word ContestStatsText_BrownPokeBlock\n" - "._369:\n" - " cmp r2, #0x3\n" - " bne ._373 @cond_branch\n" - " ldr r1, ._375\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x9\n" - " b ._400\n" - "._376:\n" - " .align 2, 0\n" - "._375:\n" - " .word ContestStatsText_LiteBluePokeBlock\n" - "._373:\n" - " cmp r2, #0x4\n" - " bne ._377 @cond_branch\n" - " ldr r1, ._379\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0xa\n" - " b ._400\n" - "._380:\n" - " .align 2, 0\n" - "._379:\n" - " .word ContestStatsText_OlivePokeBlock\n" - "._377:\n" - " cmp r7, #0x1\n" - " beq ._381 @cond_branch\n" - " mov r0, r8\n" - " cmp r0, #0x1\n" - " bne ._399 @cond_branch\n" - "._381:\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0\n" - " beq ._383 @cond_branch\n" - " ldr r1, ._385\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x1\n" - " b ._400\n" - "._386:\n" - " .align 2, 0\n" - "._385:\n" - " .word ContestStatsText_RedPokeBlock\n" - "._383:\n" - " mov r0, sp\n" - " ldrh r0, [r0, #0x2]\n" - " cmp r0, #0\n" - " beq ._387 @cond_branch\n" - " ldr r1, ._389\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x2\n" - " b ._400\n" - "._390:\n" - " .align 2, 0\n" - "._389:\n" - " .word ContestStatsText_BluePokeBlock\n" - "._387:\n" - " mov r0, sp\n" - " mov r4, #0x4\n" - " ldsh r0, [r0, r4]\n" - " cmp r0, #0\n" - " beq ._391 @cond_branch\n" - " ldr r1, ._393\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x3\n" - " b ._400\n" - "._394:\n" - " .align 2, 0\n" - "._393:\n" - " .word ContestStatsText_PinkPokeBlock\n" - "._391:\n" - " mov r0, sp\n" - " mov r1, #0x6\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0\n" - " beq ._395 @cond_branch\n" - " ldr r1, ._397\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x4\n" - " b ._400\n" - "._398:\n" - " .align 2, 0\n" - "._397:\n" - " .word ContestStatsText_GreenPokeBlock\n" - "._395:\n" - " mov r0, sp\n" - " mov r4, #0x8\n" - " ldsh r0, [r0, r4]\n" - " cmp r0, #0\n" - " beq ._399 @cond_branch\n" - " ldr r1, ._401\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " b ._400\n" - "._402:\n" - " .align 2, 0\n" - "._401:\n" - " .word ContestStatsText_YellowPokeBlock\n" - "._399:\n" - " ldr r1, ._403\n" - " add r0, r6, #0\n" - " bl StringCopy\n" - " mov r0, #0x0\n" - "._400:\n" - " add sp, sp, #0x10\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._404:\n" - " .align 2, 0\n" - "._403:\n" - " .word gOtherText_FiveQuestions\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_816097C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add r7, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r5, r1, #0x10\n" - " mov r6, #0x0\n" - " mov r1, #0x0\n" - "._405:\n" - " add r0, r7, r6\n" - " strb r1, [r0]\n" - " add r0, r6, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " cmp r6, #0x3\n" - " bls ._405 @cond_branch\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0x4]\n" - " lsl r0, r5, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._406 @cond_branch\n" - " mov r0, #0xa1\n" - " strb r0, [r7, #0x3]\n" - " b ._414\n" - "._406:\n" - " cmp r0, #0\n" - " ble ._408 @cond_branch\n" - " mov r4, #0x64\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " mov r6, #0x0\n" - "._412:\n" - " lsl r5, r5, #0x10\n" - " asr r0, r5, #0x10\n" - " lsl r4, r4, #0x10\n" - " asr r1, r4, #0x10\n" - " bl __divsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " mov r1, r8\n" - " cmp r1, #0\n" - " bne ._410 @cond_branch\n" - " cmp r6, #0x2\n" - " beq ._410 @cond_branch\n" - " cmp r2, #0\n" - " beq ._411 @cond_branch\n" - "._410:\n" - " add r1, r6, r7\n" - " add r0, r2, #0\n" - " sub r0, r0, #0x5f\n" - " strb r0, [r1, #0x1]\n" - " mov r0, #0x1\n" - " mov r8, r0\n" - "._411:\n" - " asr r0, r5, #0x10\n" - " asr r4, r4, #0x10\n" - " add r1, r4, #0\n" - " bl __modsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0xa\n" - " bl __divsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r6, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " cmp r6, #0x2\n" - " bls ._412 @cond_branch\n" - " b ._414\n" - "._408:\n" - " cmp r0, #0\n" - " bge ._414 @cond_branch\n" - " neg r0, r0\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " mov r4, #0x64\n" - " mov r1, #0x0\n" - " mov r8, r1\n" - " mov r6, #0x0\n" - "._419:\n" - " lsl r5, r5, #0x10\n" - " asr r0, r5, #0x10\n" - " lsl r4, r4, #0x10\n" - " asr r1, r4, #0x10\n" - " bl __divsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " mov r1, r8\n" - " lsl r0, r1, #0x10\n" - " add r3, r0, #0\n" - " cmp r3, #0\n" - " bne ._416 @cond_branch\n" - " cmp r6, #0x2\n" - " beq ._416 @cond_branch\n" - " cmp r2, #0\n" - " beq ._417 @cond_branch\n" - "._416:\n" - " add r1, r6, r7\n" - " add r0, r2, #0\n" - " sub r0, r0, #0x5f\n" - " strb r0, [r1, #0x1]\n" - " cmp r3, #0\n" - " bne ._418 @cond_branch\n" - " mov r0, #0xae\n" - " strb r0, [r1]\n" - "._418:\n" - " mov r0, #0x1\n" - " mov r8, r0\n" - "._417:\n" - " asr r0, r5, #0x10\n" - " asr r4, r4, #0x10\n" - " add r1, r4, #0\n" - " bl __modsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0xa\n" - " bl __divsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r6, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " cmp r6, #0x2\n" - " bls ._419 @cond_branch\n" - "._414:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160A80() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r2, r0, #0\n" - " ldr r1, ._422\n" - " cmp r0, #0\n" - " bne ._420 @cond_branch\n" - " ldr r4, ._422 + 4\n" - " ldrb r1, [r1, #0x1]\n" - " add r0, r4, #0\n" - " bl debug_sub_816097C\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " b ._440\n" - "._423:\n" - " .align 2, 0\n" - "._422:\n" - " .word _nakamuraStatic18\n" - " .word gStringVar1\n" - "._420:\n" - " cmp r0, #0x1\n" - " bne ._424 @cond_branch\n" - " ldr r4, ._426\n" - " ldrb r1, [r1, #0x2]\n" - " add r0, r4, #0\n" - " bl debug_sub_816097C\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " b ._440\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gStringVar1\n" - "._424:\n" - " cmp r0, #0x2\n" - " bne ._428 @cond_branch\n" - " ldr r4, ._430\n" - " ldrb r1, [r1, #0x3]\n" - " add r0, r4, #0\n" - " bl debug_sub_816097C\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " b ._440\n" - "._431:\n" - " .align 2, 0\n" - "._430:\n" - " .word gStringVar1\n" - "._428:\n" - " cmp r0, #0x3\n" - " bne ._432 @cond_branch\n" - " ldr r4, ._434\n" - " ldrb r1, [r1, #0x4]\n" - " add r0, r4, #0\n" - " bl debug_sub_816097C\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " b ._440\n" - "._435:\n" - " .align 2, 0\n" - "._434:\n" - " .word gStringVar1\n" - "._432:\n" - " cmp r0, #0x4\n" - " bne ._436 @cond_branch\n" - " ldr r4, ._438\n" - " ldrb r1, [r1, #0x5]\n" - " add r0, r4, #0\n" - " bl debug_sub_816097C\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " b ._440\n" - "._439:\n" - " .align 2, 0\n" - "._438:\n" - " .word gStringVar1\n" - "._436:\n" - " cmp r2, #0x5\n" - " bne ._440 @cond_branch\n" - " ldr r4, ._441\n" - " ldrb r1, [r1, #0x6]\n" - " add r0, r4, #0\n" - " bl debug_sub_816097C\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - "._440:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._442:\n" - " .align 2, 0\n" - "._441:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160B50() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r3, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r4, r1, #0\n" - " ldr r2, ._445\n" - " cmp r0, #0\n" - " bne ._443 @cond_branch\n" - " ldrb r0, [r2, #0x1]\n" - " add r0, r0, r1\n" - " strb r0, [r2, #0x1]\n" - " b ._455\n" - "._446:\n" - " .align 2, 0\n" - "._445:\n" - " .word _nakamuraStatic18\n" - "._443:\n" - " cmp r0, #0x1\n" - " bne ._447 @cond_branch\n" - " ldrb r0, [r2, #0x2]\n" - " add r0, r0, r1\n" - " strb r0, [r2, #0x2]\n" - " b ._455\n" - "._447:\n" - " cmp r0, #0x2\n" - " bne ._449 @cond_branch\n" - " ldrb r0, [r2, #0x3]\n" - " add r0, r0, r1\n" - " strb r0, [r2, #0x3]\n" - " b ._455\n" - "._449:\n" - " cmp r0, #0x3\n" - " bne ._451 @cond_branch\n" - " ldrb r0, [r2, #0x4]\n" - " add r0, r0, r1\n" - " strb r0, [r2, #0x4]\n" - " b ._455\n" - "._451:\n" - " cmp r0, #0x4\n" - " bne ._453 @cond_branch\n" - " ldrb r0, [r2, #0x5]\n" - " add r0, r0, r1\n" - " strb r0, [r2, #0x5]\n" - " b ._455\n" - "._453:\n" - " cmp r3, #0x5\n" - " bne ._455 @cond_branch\n" - " ldrb r0, [r2, #0x6]\n" - " add r0, r0, r4\n" - " strb r0, [r2, #0x6]\n" - "._455:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160BB0() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r5, ._456\n" - " ldr r4, ._456 + 4\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " bl debug_sub_8160714\n" - " strb r0, [r4]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._457:\n" - " .align 2, 0\n" - "._456:\n" - " .word gStringVar1\n" - " .word _nakamuraStatic18\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160BE4() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xc\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " bl debug_sub_8160BB0\n" - " ldr r0, ._459\n" - " mov r1, #0x2\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, ._459 + 4\n" - " mov r1, #0x2\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r0, ._459 + 8\n" - " mov r1, #0x2\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, ._459 + 12\n" - " mov r1, #0x2\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldr r0, ._459 + 16\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._459 + 20\n" - " mov r1, #0x2\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " mov r4, #0x0\n" - "._458:\n" - " add r0, r4, #0\n" - " bl debug_sub_8160A80\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x5\n" - " bls ._458 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xb\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._460:\n" - " .align 2, 0\n" - "._459:\n" - " .word gContestStatsText_Spicy\n" - " .word gContestStatsText_Dry\n" - " .word gContestStatsText_Sweet\n" - " .word gContestStatsText_Bitter\n" - " .word gContestStatsText_Sour\n" - " .word gContestStatsText_Tasty\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160C7C() -{ - asm( - " push {r4, lr}\n" - " ldr r2, ._469\n" - " mov r1, #0x0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0xc\n" - " bne ._467 @cond_branch\n" - " ldrb r0, [r2, #0x1]\n" - " cmp r0, #0x2\n" - " bne ._462 @cond_branch\n" - " mov r1, #0x1\n" - "._462:\n" - " ldrb r0, [r2, #0x3]\n" - " cmp r0, #0x2\n" - " bne ._463 @cond_branch\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - "._463:\n" - " ldrb r0, [r2, #0x4]\n" - " cmp r0, #0x2\n" - " bne ._464 @cond_branch\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - "._464:\n" - " ldrb r0, [r2, #0x2]\n" - " cmp r0, #0x2\n" - " bne ._465 @cond_branch\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - "._465:\n" - " ldrb r0, [r2, #0x5]\n" - " cmp r0, #0x2\n" - " bne ._466 @cond_branch\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - "._466:\n" - " cmp r1, #0x3\n" - " beq ._467 @cond_branch\n" - " mov r0, #0x2\n" - " strb r0, [r2, #0x1]\n" - " strb r0, [r2, #0x3]\n" - " strb r0, [r2, #0x4]\n" - "._467:\n" - " add r0, r2, #0\n" - " bl sub_810CA34\n" - " bl debug_sub_8160BB0\n" - " mov r4, #0x0\n" - "._468:\n" - " add r0, r4, #0\n" - " bl debug_sub_8160A80\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x5\n" - " bls ._468 @cond_branch\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._470:\n" - " .align 2, 0\n" - "._469:\n" - " .word _nakamuraStatic18\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160CF4() -{ - asm( - " push {lr}\n" - " ldr r2, ._473\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._471 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._472\n" - "._474:\n" - " .align 2, 0\n" - "._473:\n" - " .word gMain\n" - "._471:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._475 @cond_branch\n" - " mov r0, #0x1\n" - "._472:\n" - " bl Menu_MoveCursor\n" - " mov r0, #0x0\n" - " b ._484\n" - "._475:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._477 @cond_branch\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " neg r1, r1\n" - " b ._478\n" - "._477:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._479 @cond_branch\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - "._478:\n" - " bl debug_sub_8160B50\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8160A80\n" - " bl debug_sub_8160BB0\n" - " mov r0, #0x0\n" - " b ._484\n" - "._479:\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._481 @cond_branch\n" - " bl debug_sub_8160C7C\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x0\n" - " b ._484\n" - "._481:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._483 @cond_branch\n" - " mov r0, #0x0\n" - " b ._484\n" - "._483:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._484:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -u8 debug_sub_8160D98() -{ - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl debug_sub_8160BE4\n" - " ldr r1, ._485\n" - " ldr r0, ._485 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._486:\n" - " .align 2, 0\n" - "._485:\n" - " .word gMenuCallback\n" - " .word debug_sub_8160CF4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160DC0() -{ - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x16\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._487\n" - " mov r1, #0xb\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 4\n" - " mov r1, #0x2\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 8\n" - " mov r1, #0x2\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 12\n" - " mov r1, #0x2\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 16\n" - " mov r1, #0x2\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 20\n" - " mov r1, #0x2\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 24\n" - " mov r1, #0x2\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 28\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r0, ._487 + 32\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gOtherText_Slash\n" - " .word Str_843E5F2\n" - " .word Str_843E5FB\n" - " .word Str_843E606\n" - " .word Str_843E611\n" - " .word Str_843E61C\n" - " .word Str_843E627\n" - " .word Str_843E637\n" - " .word Str_843E632\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8160E50() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0xa\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " ldr r5, ._489\n" - " add r0, r6, #0\n" - " mov r1, #0x2\n" - " add r2, r5, #0\n" - " bl GetMonData\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r0, #0xc\n" - " mov r1, #0x1\n" - " mov r2, #0x15\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " mov r1, #0xb\n" - " mul r0, r0, r1\n" - " ldr r1, ._489 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xc\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x1a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0x3\n" - " mov r2, #0x11\n" - " mov r3, #0x4\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x1b\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r4, r4, r1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0x5\n" - " mov r2, #0x11\n" - " mov r3, #0x6\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x1c\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r4, r4, r1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0x7\n" - " mov r2, #0x11\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x1d\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r4, r4, r1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " mov r3, #0xa\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x1e\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r4, r4, r1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0xb\n" - " mov r2, #0x11\n" - " mov r3, #0xc\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x1f\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r4, r4, r1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0xd\n" - " mov r2, #0x11\n" - " mov r3, #0xe\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0xf\n" - " mov r2, #0x11\n" - " mov r3, #0x10\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x20\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0xd\n" - " mov r1, #0x11\n" - " mov r2, #0x11\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0xd\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word gStringVar1\n" - " .word gSpeciesNames\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8161028() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._491 @cond_branch\n" - " ldr r0, ._496\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._492 @cond_branch\n" - " mov r5, #0x5\n" - "._494:\n" - " lsl r0, r5, #0x10\n" - " asr r4, r0, #0x10\n" - " mov r0, #0x64\n" - " mul r0, r0, r4\n" - " ldr r1, ._496 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " bne ._493 @cond_branch\n" - " sub r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " cmp r0, #0\n" - " bge ._494 @cond_branch\n" - "._492:\n" - " ldr r1, ._496\n" - " ldrb r0, [r1]\n" - " add r0, r0, r6\n" - " strb r0, [r1]\n" - " b ._506\n" - "._497:\n" - " .align 2, 0\n" - "._496:\n" - " .word _nakamuraData5\n" - " .word gPlayerParty\n" - "._491:\n" - " cmp r1, #0x1\n" - " bne ._506 @cond_branch\n" - " ldr r4, ._501\n" - " ldrb r0, [r4]\n" - " add r0, r0, r6\n" - " strb r0, [r4]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x6\n" - " bne ._499 @cond_branch\n" - " mov r0, #0x0\n" - " b ._500\n" - "._502:\n" - " .align 2, 0\n" - "._501:\n" - " .word _nakamuraData5\n" - "._493:\n" - " ldr r0, ._504\n" - " strb r5, [r0]\n" - " b ._506\n" - "._505:\n" - " .align 2, 0\n" - "._504:\n" - " .word _nakamuraData5\n" - "._499:\n" - " ldrb r1, [r4]\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._507\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " bne ._506 @cond_branch\n" - "._500:\n" - " strb r0, [r4]\n" - "._506:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._508:\n" - " .align 2, 0\n" - "._507:\n" - " .word gPlayerParty\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81610BC() -{ - asm( - " push {lr}\n" - " ldr r0, ._511\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._509 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._510\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word gMain\n" - "._509:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._513 @cond_branch\n" - " mov r0, #0x1\n" - "._510:\n" - " bl debug_sub_8161028\n" - " ldr r0, ._515\n" - " ldrb r1, [r0]\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._515 + 4\n" - " add r0, r0, r1\n" - " bl debug_sub_8160E50\n" - " mov r0, #0x0\n" - " b ._518\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word _nakamuraData5\n" - " .word gPlayerParty\n" - "._513:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._517 @cond_branch\n" - " mov r0, #0x0\n" - " b ._518\n" - "._517:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._518:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_EffortValues() -{ - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " ldr r1, ._519\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl debug_sub_8160DC0\n" - " ldr r0, ._519 + 4\n" - " bl debug_sub_8160E50\n" - " ldr r1, ._519 + 8\n" - " ldr r0, ._519 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._520:\n" - " .align 2, 0\n" - "._519:\n" - " .word _nakamuraData5\n" - " .word gPlayerParty\n" - " .word gMenuCallback\n" - " .word debug_sub_81610BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8161160() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " mov r7, #0x0\n" - " ldr r2, ._523\n" - " ldr r1, ._523 + 4\n" - " ldrh r0, [r2]\n" - " ldrh r3, [r1]\n" - " cmp r0, r3\n" - " bhi ._521 @cond_branch\n" - " add r6, r0, #0\n" - " ldrh r5, [r1]\n" - " b ._522\n" - "._524:\n" - " .align 2, 0\n" - "._523:\n" - " .word _nakamuraData6\n" - " .word _nakamuraData8\n" - "._521:\n" - " ldrh r6, [r1]\n" - " ldrh r5, [r2]\n" - "._522:\n" - " mov r4, #0x0\n" - " ldr r0, ._529\n" - " ldrh r0, [r0]\n" - " cmp r4, r0\n" - " bcs ._525 @cond_branch\n" - " ldr r0, ._529 + 4\n" - " mov r8, r0\n" - "._528:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r2, r8\n" - " ldrh r1, [r2]\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, r6\n" - " bcc ._527 @cond_branch\n" - " cmp r0, r5\n" - " bhi ._527 @cond_branch\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r7, r0, #0x10\n" - "._527:\n" - " add r4, r4, #0x1\n" - " ldr r0, ._529\n" - " ldrh r0, [r0]\n" - " cmp r4, r0\n" - " bcc ._528 @cond_branch\n" - "._525:\n" - " add r0, r7, #0\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._530:\n" - " .align 2, 0\n" - "._529:\n" - " .word _nakamuraDataA\n" - " .word _nakamuraDataC\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81611D8() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xf\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._531\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._531 + 4\n" - " mov r1, #0x2\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " ldr r0, ._531 + 8\n" - " mov r1, #0x2\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " ldr r0, ._531 + 12\n" - " mov r1, #0x2\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r0, ._531 + 16\n" - " mov r1, #0x2\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldr r0, ._531 + 20\n" - " mov r1, #0xd\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " ldr r4, ._531 + 24\n" - " add r0, r4, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xe\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._532:\n" - " .align 2, 0\n" - "._531:\n" - " .word Str_843E642\n" - " .word Str_843E647\n" - " .word Str_843E65A\n" - " .word Str_843E64C\n" - " .word Str_843E651\n" - " .word Str_843E655\n" - " .word Str_843E658\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8161290() -{ - asm( - " push {r4, lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r4, ._533\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x8\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._534:\n" - " .align 2, 0\n" - "._533:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81612B8() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " ldrh r2, [r0]\n" - " add r1, r1, r2\n" - " strh r1, [r0]\n" - " ldr r5, ._535\n" - " ldrh r1, [r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x8\n" - " add r2, r4, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._536:\n" - " .align 2, 0\n" - "._535:\n" - " .word gStringVar1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_81612EC() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r2, ._540\n" - " ldrh r1, [r2, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " mov r5, #0x1\n" - " cmp r0, #0\n" - " beq ._537 @cond_branch\n" - " mov r5, #0x64\n" - "._537:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._538 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._539\n" - "._541:\n" - " .align 2, 0\n" - "._540:\n" - " .word gMain\n" - "._538:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._542 @cond_branch\n" - " mov r0, #0x1\n" - "._539:\n" - " bl Menu_MoveCursor\n" - "._565:\n" - " mov r0, #0x0\n" - " b ._543\n" - "._542:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._544 @cond_branch\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " cmp r4, #0\n" - " bne ._545 @cond_branch\n" - " ldr r0, ._550\n" - " neg r1, r5\n" - " mov r2, #0x1\n" - " bl debug_sub_81612B8\n" - "._545:\n" - " cmp r4, #0x1\n" - " bne ._546 @cond_branch\n" - " ldr r0, ._550 + 4\n" - " neg r1, r5\n" - " mov r2, #0x3\n" - " bl debug_sub_81612B8\n" - "._546:\n" - " cmp r4, #0x2\n" - " bne ._547 @cond_branch\n" - " ldr r0, ._550 + 8\n" - " neg r1, r5\n" - " mov r2, #0x5\n" - " bl debug_sub_81612B8\n" - "._547:\n" - " cmp r4, #0x3\n" - " bne ._565 @cond_branch\n" - " ldr r0, ._550 + 12\n" - " neg r1, r5\n" - " mov r2, #0x7\n" - " bl debug_sub_81612B8\n" - " b ._565\n" - "._551:\n" - " .align 2, 0\n" - "._550:\n" - " .word _nakamuraData6\n" - " .word _nakamuraData8\n" - " .word _nakamuraDataC\n" - " .word _nakamuraDataA\n" - "._544:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._552 @cond_branch\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " cmp r4, #0\n" - " bne ._553 @cond_branch\n" - " ldr r0, ._558\n" - " add r1, r5, #0\n" - " mov r2, #0x1\n" - " bl debug_sub_81612B8\n" - "._553:\n" - " cmp r4, #0x1\n" - " bne ._554 @cond_branch\n" - " ldr r0, ._558 + 4\n" - " add r1, r5, #0\n" - " mov r2, #0x3\n" - " bl debug_sub_81612B8\n" - "._554:\n" - " cmp r4, #0x2\n" - " bne ._555 @cond_branch\n" - " ldr r0, ._558 + 8\n" - " add r1, r5, #0\n" - " mov r2, #0x5\n" - " bl debug_sub_81612B8\n" - "._555:\n" - " cmp r4, #0x3\n" - " bne ._565 @cond_branch\n" - " ldr r0, ._558 + 12\n" - " add r1, r5, #0\n" - " mov r2, #0x7\n" - " bl debug_sub_81612B8\n" - " b ._565\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word _nakamuraData6\n" - " .word _nakamuraData8\n" - " .word _nakamuraDataC\n" - " .word _nakamuraDataA\n" - "._552:\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._560 @cond_branch\n" - " ldr r0, ._563\n" - " ldrh r0, [r0]\n" - " cmp r0, #0\n" - " beq ._565 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " bl debug_sub_8161160\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl debug_sub_8161290\n" - " b ._565\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word _nakamuraDataC\n" - "._560:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._565 @cond_branch\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._543:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void DebugMenu_RandomNumberTest() -{ - asm( - " push {lr}\n" - " ldr r0, ._566\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " ldr r0, ._566 + 4\n" - " strh r1, [r0]\n" - " ldr r0, ._566 + 8\n" - " strh r1, [r0]\n" - " ldr r0, ._566 + 12\n" - " strh r1, [r0]\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_EraseWindowRect\n" - " bl debug_sub_81611D8\n" - " ldr r1, ._566 + 16\n" - " ldr r0, ._566 + 20\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._567:\n" - " .align 2, 0\n" - "._566:\n" - " .word _nakamuraData6\n" - " .word _nakamuraData8\n" - " .word _nakamuraDataC\n" - " .word _nakamuraDataA\n" - " .word gMenuCallback\n" - " .word debug_sub_81612EC+1\n" - "\n" - ); -} - #endif // DEBUG diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c index bdfc8f9c5..b3885ff76 100644 --- a/src/debug/nohara_debug_menu.c +++ b/src/debug/nohara_debug_menu.c @@ -5,2312 +5,8 @@ __attribute__((unused)) static u8 gDebug_03000724; __attribute__((unused)) static u8 gDebug_03000725; __attribute__((unused)) static u8 gDebug_03000726; -__attribute__((naked)) -void InitNoharaDebugMenu() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._1\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x12\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._1 + 4\n" - " ldr r0, ._1 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word gUnknown_Debug_083C4938\n" - " .word gMenuCallback\n" - " .word debug_sub_808F414+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F414() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._3 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " beq ._4 @cond_branch\n" - " ldr r2, ._6\n" - " ldr r0, ._6 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - "._3:\n" - " mov r0, #0x0\n" - " b ._5\n" - "._7:\n" - " .align 2, 0\n" - "._6:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C4938\n" - "._4:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._5:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_TV() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " ldr r1, ._8\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xa\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._8 + 4\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._8 + 8\n" - " ldr r0, ._8 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._9:\n" - " .align 2, 0\n" - "._8:\n" - " .word gDebug_03000726\n" - " .word gUnknown_Debug_083C4B8C\n" - " .word gMenuCallback\n" - " .word debug_sub_808F4AC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F4AC() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._10 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " beq ._11 @cond_branch\n" - " ldr r2, ._13\n" - " ldr r0, ._13 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - "._10:\n" - " mov r0, #0x0\n" - " b ._12\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C4B8C\n" - "._11:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._12:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F4EC() -{ - asm( - " push {lr}\n" - " bl debug_sub_808F6BC\n" - " ldr r0, ._15\n" - " bl sub_8071F40\n" - " mov r0, #0x3\n" - " mov r1, #0x3\n" - " mov r2, #0x1\n" - " bl DisplayYesNoMenu\n" - " ldr r1, ._15 + 4\n" - " ldr r0, ._15 + 8\n" - " str r0, [r1]\n" - " pop {r0}\n" - " bx r0\n" - "._16:\n" - " .align 2, 0\n" - "._15:\n" - " .word gUnknown_Debug_083C4980\n" - " .word gMenuCallback\n" - " .word debug_sub_808F648+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F518() -{ - asm( - " push {r4, lr}\n" - " mov r2, #0x0\n" - " ldr r4, ._20\n" - " ldr r3, ._20 + 4\n" - "._19:\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x2\n" - " add r1, r0, r4\n" - " add r0, r1, r3\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x15\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x13\n" - " bhi ._18 @cond_branch\n" - " ldr r0, ._20 + 8\n" - " add r1, r1, r0\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._18 @cond_branch\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - "._18:\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x17\n" - " bls ._19 @cond_branch\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._21:\n" - " .align 2, 0\n" - "._20:\n" - " .word gSaveBlock1\n" - " .word 0x2738\n" - " .word 0x2739\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F560() -{ - asm( - " push {r4, lr}\n" - " mov r1, #0x0\n" - " ldr r4, ._23\n" - " ldr r3, ._23 + 4\n" - " mov r2, #0x0\n" - "._22:\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r4\n" - " add r0, r0, r3\n" - " strb r2, [r0]\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " cmp r1, #0x17\n" - " bls ._22 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._24:\n" - " .align 2, 0\n" - "._23:\n" - " .word gSaveBlock1\n" - " .word 0x2739\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F594() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r2, #0x0\n" - " ldr r6, ._27\n" - " ldr r5, ._27 + 4\n" - " ldr r4, ._27 + 8\n" - " mov r3, #0x1\n" - "._26:\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x2\n" - " add r1, r0, r6\n" - " add r0, r1, r5\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._25 @cond_branch\n" - " add r0, r1, r4\n" - " strb r3, [r0]\n" - "._25:\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x17\n" - " bls ._26 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._28:\n" - " .align 2, 0\n" - "._27:\n" - " .word gSaveBlock1\n" - " .word 0x2738\n" - " .word 0x2739\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F5D8() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " mov r4, #0x0\n" - " ldr r6, ._30\n" - " ldr r7, ._30 + 4\n" - " add r0, r7, #1\n" - " mov r8, r0\n" - "._29:\n" - " ldr r5, ._30 + 8\n" - " strh r4, [r5]\n" - " bl GetSlotMachineId\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " lsl r0, r4, #0x1\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x2\n" - " add r1, r0, r7\n" - " ldrb r1, [r1]\n" - " add r0, r0, r8\n" - " ldrb r2, [r0]\n" - " add r0, r6, #0\n" - " bl Menu_PrintText\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0xb\n" - " bls ._29 @cond_branch\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r1, ._30 + 12\n" - " ldr r0, ._30 + 16\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._31:\n" - " .align 2, 0\n" - "._30:\n" - " .word gStringVar1\n" - " .word gUnknown_Debug_083C4BD4\n" - " .word gSpecialVar_0x8004\n" - " .word gMenuCallback\n" - " .word debug_sub_8090278+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F648() -{ - asm( - " push {lr}\n" - " ldr r0, ._35\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._32 @cond_branch\n" - " mov r0, #0xa\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_EraseWindowRect\n" - " ldr r0, ._35 + 4\n" - " ldrb r1, [r0]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " strb r1, [r0]\n" - " cmp r1, #0\n" - " beq ._33 @cond_branch\n" - " bl debug_sub_808F7B4\n" - " b ._40\n" - "._36:\n" - " .align 2, 0\n" - "._35:\n" - " .word gMain\n" - " .word gDebug_03000726\n" - "._33:\n" - " bl debug_sub_808F6BC\n" - " b ._40\n" - "._32:\n" - " bl Menu_ProcessInputNoWrap_\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._43 @cond_branch\n" - " cmp r1, r0\n" - " bgt ._39 @cond_branch\n" - " sub r0, r0, #0x1\n" - " cmp r1, r0\n" - " beq ._40 @cond_branch\n" - " b ._43\n" - "._39:\n" - " cmp r1, #0\n" - " beq ._42 @cond_branch\n" - " b ._43\n" - "._40:\n" - " mov r0, #0x0\n" - " b ._44\n" - "._42:\n" - " bl debug_sub_808F518\n" - "._43:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._44:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F6BC() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._48\n" - " ldr r6, ._48 + 4\n" - "._45:\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldr r1, ._48 + 8\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xa0\n" - " lsl r0, r0, #0x14\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x4\n" - " bls ._45 @cond_branch\n" - " mov r4, #0x5\n" - " ldr r5, ._48\n" - " ldr r6, ._48 + 4\n" - "._50:\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldr r1, ._48 + 8\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " cmp r4, #0xe\n" - " bhi ._46 @cond_branch\n" - " lsl r1, r4, #0x19\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " b ._47\n" - "._49:\n" - " .align 2, 0\n" - "._48:\n" - " .word gStringVar1\n" - " .word gSaveBlock1\n" - " .word 0x2738\n" - "._46:\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xec\n" - " lsl r0, r0, #0x18\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._47:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x17\n" - " bls ._50 @cond_branch\n" - " mov r4, #0x0\n" - " ldr r5, ._53\n" - "._55:\n" - " ldr r0, ._53 + 4\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r0\n" - " ldr r0, ._53 + 8\n" - " add r1, r1, r0\n" - " ldrb r1, [r1]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " cmp r4, #0x7\n" - " bhi ._51 @cond_branch\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xa0\n" - " lsl r0, r0, #0x14\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " b ._52\n" - "._54:\n" - " .align 2, 0\n" - "._53:\n" - " .word gStringVar1\n" - " .word gSaveBlock1\n" - " .word 0x2abc\n" - "._51:\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xfa\n" - " lsl r0, r0, #0x18\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - "._52:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0xf\n" - " bls ._55 @cond_branch\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F7B4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._59\n" - " ldr r6, ._59 + 4\n" - "._56:\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldr r1, ._59 + 8\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xa0\n" - " lsl r0, r0, #0x14\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x4\n" - " bls ._56 @cond_branch\n" - " mov r4, #0x5\n" - " ldr r5, ._59\n" - " ldr r6, ._59 + 4\n" - "._61:\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldr r1, ._59 + 8\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " cmp r4, #0xe\n" - " bhi ._57 @cond_branch\n" - " lsl r1, r4, #0x19\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " b ._58\n" - "._60:\n" - " .align 2, 0\n" - "._59:\n" - " .word gStringVar1\n" - " .word gSaveBlock1\n" - " .word 0x2739\n" - "._57:\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xec\n" - " lsl r0, r0, #0x18\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._58:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x17\n" - " bls ._61 @cond_branch\n" - " mov r4, #0x0\n" - " ldr r5, ._64\n" - "._66:\n" - " ldr r0, ._64 + 4\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r0\n" - " ldr r0, ._64 + 8\n" - " add r1, r1, r0\n" - " ldrb r1, [r1]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " cmp r4, #0x7\n" - " bhi ._62 @cond_branch\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xa0\n" - " lsl r0, r0, #0x14\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " b ._63\n" - "._65:\n" - " .align 2, 0\n" - "._64:\n" - " .word gStringVar1\n" - " .word gSaveBlock1\n" - " .word 0x2abd\n" - "._62:\n" - " lsl r1, r4, #0x19\n" - " mov r0, #0xfa\n" - " lsl r0, r0, #0x18\n" - " add r1, r1, r0\n" - " lsr r1, r1, #0x18\n" - " add r0, r5, #0\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - "._63:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0xf\n" - " bls ._66 @cond_branch\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F8AC() -{ - asm( - " push {lr}\n" - " ldr r0, ._67\n" - " bl FlagSet\n" - " ldr r0, ._67 + 4\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._68:\n" - " .align 2, 0\n" - "._67:\n" - " .word 0x832\n" - " .word 0x818\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F8CC() -{ - asm( - " push {r4, lr}\n" - " ldr r1, ._69\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " ldr r0, ._69 + 4\n" - " bl sub_8071F40\n" - " mov r0, #0xd\n" - " mov r1, #0x6\n" - " mov r2, #0x1a\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._69 + 8\n" - " ldr r0, [r0]\n" - " mov r1, #0xe\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " mov r0, #0x16\n" - " mov r1, #0x1\n" - " mov r2, #0x18\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._69 + 12\n" - " add r0, r4, #0\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x17\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._69 + 16\n" - " ldr r0, ._69 + 20\n" - " str r0, [r1]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._70:\n" - " .align 2, 0\n" - "._69:\n" - " .word gDebug_03000724\n" - " .word gUnknown_Debug_083C49CA\n" - " .word gUnknown_Debug_083C4ABD+0xf\n" - " .word gStringVar1\n" - " .word gMenuCallback\n" - " .word debug_sub_808F93C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F93C() -{ - asm( - " push {r4, lr}\n" - " mov r2, #0x0\n" - " ldr r0, ._83\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._71 @cond_branch\n" - " ldr r1, ._83 + 4\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x18\n" - " bne ._72 @cond_branch\n" - " strb r2, [r1]\n" - "._72:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._71:\n" - " ldr r0, ._83\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._73 @cond_branch\n" - " ldr r1, ._83 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._74 @cond_branch\n" - " mov r0, #0x18\n" - " strb r0, [r1]\n" - "._74:\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._73:\n" - " ldr r0, ._83\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._75 @cond_branch\n" - " ldr r1, ._83 + 8\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xc\n" - " bne ._76 @cond_branch\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - "._76:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._75:\n" - " ldr r0, ._83\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._77 @cond_branch\n" - " ldr r1, ._83 + 8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._78 @cond_branch\n" - " mov r0, #0xc\n" - " strb r0, [r1]\n" - "._78:\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._77:\n" - " cmp r2, #0\n" - " beq ._79 @cond_branch\n" - " mov r0, #0xd\n" - " mov r1, #0x6\n" - " mov r2, #0x1a\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._83 + 12\n" - " ldr r0, ._83 + 8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0xe\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " mov r0, #0x16\n" - " mov r1, #0x1\n" - " mov r2, #0x18\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._83 + 16\n" - " ldr r0, ._83 + 4\n" - " ldrb r1, [r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x17\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - "._79:\n" - " ldr r4, ._83\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._80 @cond_branch\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - " ldr r0, ._83 + 4\n" - " ldrb r0, [r0]\n" - " ldr r2, ._83 + 20\n" - " ldr r1, ._83 + 8\n" - " ldrb r1, [r1]\n" - " add r1, r1, r2\n" - " ldrb r1, [r1]\n" - " bl debug_sub_808FA88\n" - "._80:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._81 @cond_branch\n" - " mov r0, #0x0\n" - " b ._82\n" - "._84:\n" - " .align 2, 0\n" - "._83:\n" - " .word gMain\n" - " .word gDebug_03000725\n" - " .word gDebug_03000724\n" - " .word gUnknown_Debug_083C4ABD+0xf\n" - " .word gStringVar1\n" - " .word gUnknown_Debug_083C4ABD\n" - "._81:\n" - " ldr r0, ._85\n" - " bl sub_80BF588\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._82:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._86:\n" - " .align 2, 0\n" - "._85:\n" - " .word gSaveBlock1+0x2738\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808FA88() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add sp, sp, #0xffffffcc\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r7, r1, #0x18\n" - " bl GetLeadMonIndex\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r9, r0\n" - " ldr r3, ._92\n" - " lsl r4, r6, #0x3\n" - " add r2, r4, r6\n" - " lsl r2, r2, #0x2\n" - " add r0, r2, r3\n" - " ldr r5, ._92 + 4\n" - " add r1, r0, r5\n" - " strb r7, [r1]\n" - " ldr r1, ._92 + 8\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strb r1, [r0]\n" - " mov r1, #0x0\n" - " ldr r0, ._92 + 12\n" - " add r5, r3, r0\n" - " mov r3, #0x1\n" - "._87:\n" - " add r0, r1, r2\n" - " add r0, r0, r5\n" - " strb r3, [r0]\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " cmp r1, #0x21\n" - " bls ._87 @cond_branch\n" - " add r0, r7, #0\n" - " bl GetTVChannelByShowType\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r1, r0, #0\n" - " cmp r0, #0x3\n" - " beq ._88 @cond_branch\n" - " cmp r0, #0x3\n" - " bgt ._89 @cond_branch\n" - " cmp r0, #0x2\n" - " beq ._90 @cond_branch\n" - " b ._95\n" - "._93:\n" - " .align 2, 0\n" - "._92:\n" - " .word gSaveBlock1\n" - " .word 0x2738\n" - " .word 0x2739\n" - " .word 0x273a\n" - "._89:\n" - " cmp r1, #0x4\n" - " bne ._95 @cond_branch\n" - "._90:\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._96\n" - " add r0, r0, r1\n" - " bl sub_80BE160\n" - " b ._95\n" - "._97:\n" - " .align 2, 0\n" - "._96:\n" - " .word gSaveBlock1+0x2738\n" - "._88:\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._100\n" - " add r0, r0, r1\n" - " bl sub_80BE138\n" - "._95:\n" - " sub r0, r7, #1\n" - " cmp r0, #0x28\n" - " bls ._98 @cond_branch\n" - " b ._173\n" - "._98:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._100 + 4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._101:\n" - " .align 2, 0\n" - "._100:\n" - " .word gSaveBlock1+0x2738\n" - " .word ._102\n" - "._102:\n" - " .word ._104\n" - " .word ._104\n" - " .word ._105\n" - " .word ._173\n" - " .word ._107\n" - " .word ._108\n" - " .word ._109\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._123\n" - " .word ._124\n" - " .word ._125\n" - " .word ._126\n" - " .word ._127\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._173\n" - " .word ._143\n" - "._104:\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._145\n" - " add r4, r0, r1\n" - " mov r2, #0x1\n" - " strh r2, [r4, #0x2]\n" - " add r1, r1, #0x10\n" - " add r0, r0, r1\n" - " ldr r1, ._145 + 4\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " strb r0, [r4, #0x18]\n" - " b ._173\n" - "._146:\n" - " .align 2, 0\n" - "._145:\n" - " .word gSaveBlock1+0x2738\n" - " .word gSaveBlock2\n" - "._105:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r6, ._148\n" - " add r1, r4, r6\n" - " mov r8, r1\n" - " mov r0, #0x1\n" - " strh r0, [r1, #0x2]\n" - " add r0, r6, #5\n" - " add r0, r4, r0\n" - " ldr r1, ._148 + 4\n" - " bl StringCopy\n" - " mov r0, #0x64\n" - " mov r5, r9\n" - " mul r5, r5, r0\n" - " ldr r0, ._148 + 8\n" - " add r5, r5, r0\n" - " add r6, r6, #0x10\n" - " add r4, r4, r6\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " add r2, r4, #0\n" - " bl GetMonData\n" - " mov r0, #0x5\n" - " mov r1, r8\n" - " strb r0, [r1, #0xd]\n" - " add r0, r5, #0\n" - " mov r1, #0x3\n" - " bl GetMonData\n" - " mov r5, r8\n" - " strb r0, [r5, #0xe]\n" - " b ._173\n" - "._149:\n" - " .align 2, 0\n" - "._148:\n" - " .word gSaveBlock1+0x2738\n" - " .word gSaveBlock2\n" - " .word gPlayerParty\n" - "._107:\n" - " mov r0, #0x64\n" - " mov r1, r9\n" - " mul r1, r1, r0\n" - " mov r8, r1\n" - " ldr r0, ._151\n" - " add r8, r8, r0\n" - " mov r0, r8\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r5, ._151 + 4\n" - " add r6, r4, r5\n" - " strh r0, [r6, #0x2]\n" - " mov r0, #0x1\n" - " strh r0, [r6, #0x1c]\n" - " add r0, r5, #0\n" - " add r0, r0, #0xf\n" - " add r0, r4, r0\n" - " ldr r1, ._151 + 8\n" - " bl StringCopy\n" - " add r5, r5, #0x4\n" - " add r4, r4, r5\n" - " mov r0, r8\n" - " mov r1, #0x2\n" - " add r2, r4, #0\n" - " bl GetMonData\n" - " mov r0, #0x5\n" - " strb r0, [r6, #0x1e]\n" - " mov r0, r8\n" - " mov r1, #0x3\n" - " bl GetMonData\n" - " strb r0, [r6, #0x1f]\n" - " b ._173\n" - "._152:\n" - " .align 2, 0\n" - "._151:\n" - " .word gPlayerParty\n" - " .word gSaveBlock1+0x2738\n" - " .word gSaveBlock2\n" - "._108:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r6, ._154\n" - " add r5, r4, r6\n" - " mov r8, r5\n" - " mov r0, #0x1\n" - " strh r0, [r5, #0x2]\n" - " add r0, r6, #0\n" - " add r0, r0, #0x16\n" - " add r0, r4, r0\n" - " ldr r1, ._154 + 4\n" - " bl StringCopy\n" - " mov r0, #0x64\n" - " mov r5, r9\n" - " mul r5, r5, r0\n" - " ldr r0, ._154 + 8\n" - " add r5, r5, r0\n" - " add r6, r6, #0x8\n" - " add r4, r4, r6\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " add r2, r4, #0\n" - " bl GetMonData\n" - " mov r0, #0x5\n" - " mov r1, r8\n" - " strb r0, [r1, #0x1e]\n" - " add r0, r5, #0\n" - " mov r1, #0x3\n" - " bl GetMonData\n" - " mov r5, r8\n" - " strb r0, [r5, #0x1f]\n" - " b ._173\n" - "._155:\n" - " .align 2, 0\n" - "._154:\n" - " .word gSaveBlock1+0x2738\n" - " .word gSaveBlock2\n" - " .word gPlayerParty\n" - "._109:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r5, ._157\n" - " add r6, r4, r5\n" - " mov r0, #0x1\n" - " strh r0, [r6, #0xa]\n" - " strh r0, [r6, #0x14]\n" - " add r0, r5, #2\n" - " add r0, r4, r0\n" - " ldr r1, ._157 + 4\n" - " mov r8, r1\n" - " bl StringCopy\n" - " add r5, r5, #0xc\n" - " add r4, r4, r5\n" - " add r0, r4, #0\n" - " mov r1, r8\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " strb r0, [r6, #0x1d]\n" - " b ._173\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word gSaveBlock1+0x2738\n" - " .word gSaveBlock2\n" - "._143:\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._160\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xc]\n" - " strh r1, [r0, #0x16]\n" - " b ._173\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word gSaveBlock1+0x2738\n" - "._123:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r0, ._163\n" - " add r4, r4, r0\n" - " ldr r1, ._163 + 4\n" - " mov r0, sp\n" - " mov r2, #0x8\n" - " bl memcpy\n" - " add r5, sp, #0x8\n" - " ldr r1, ._163 + 8\n" - " add r0, r5, #0\n" - " mov r2, #0xb\n" - " bl memcpy\n" - " mov r0, #0xff\n" - " strb r0, [r4, #0x12]\n" - " add r0, r4, #0\n" - " add r0, r0, #0x13\n" - " mov r1, sp\n" - " bl StringCopy\n" - " add r0, r4, #4\n" - " add r1, r5, #0\n" - " bl StringCopy\n" - " mov r0, #0xc\n" - " strb r0, [r4, #0xf]\n" - " mov r0, #0x28\n" - " strh r0, [r4, #0x10]\n" - " mov r0, #0x5\n" - " strb r0, [r4, #0x2]\n" - " strb r0, [r4, #0x3]\n" - " b ._173\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word gSaveBlock1+0x2738\n" - " .word gUnknown_Debug_083C4C64\n" - " .word gUnknown_Debug_083C4C6C\n" - "._124:\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._168\n" - " add r5, r0, r1\n" - " add r4, sp, #0x14\n" - " ldr r1, ._168 + 4\n" - " add r0, r4, #0\n" - " mov r2, #0x8\n" - " bl memcpy\n" - " add r1, r4, #0\n" - " mov r3, #0xfe\n" - " mov r2, #0x2\n" - " add r0, r5, #0\n" - " add r0, r0, #0x10\n" - "._165:\n" - " strh r3, [r0]\n" - " sub r0, r0, #0x2\n" - " sub r2, r2, #0x1\n" - " cmp r2, #0\n" - " bge ._165 @cond_branch\n" - " mov r0, #0x1\n" - " strb r0, [r5, #0x2]\n" - " mov r0, #0x28\n" - " strb r0, [r5, #0x12]\n" - " add r0, r5, #0\n" - " add r0, r0, #0x13\n" - " add r3, r5, #6\n" - " mov r6, #0x1e\n" - " add r2, r5, #0\n" - " add r2, r2, #0xa\n" - "._166:\n" - " strh r6, [r2]\n" - " sub r2, r2, #0x2\n" - " cmp r2, r3\n" - " bge ._166 @cond_branch\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " strb r0, [r5, #0x3]\n" - " b ._173\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word gSaveBlock1+0x2738\n" - " .word gUnknown_Debug_083C4C64\n" - "._125:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r0, ._171\n" - " add r4, r4, r0\n" - " add r5, sp, #0x1c\n" - " ldr r1, ._171 + 4\n" - " add r0, r5, #0\n" - " mov r2, #0x8\n" - " bl memcpy\n" - " mov r0, #0x28\n" - " strh r0, [r4, #0xc]\n" - " strh r0, [r4, #0xe]\n" - " mov r0, #0x3\n" - " strb r0, [r4, #0x12]\n" - " mov r0, #0xff\n" - " strb r0, [r4, #0x10]\n" - " mov r0, #0x1\n" - " strb r0, [r4, #0x11]\n" - " add r0, r4, #0\n" - " add r0, r0, #0x13\n" - " add r1, r5, #0\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " strb r0, [r4, #0x2]\n" - " b ._173\n" - "._172:\n" - " .align 2, 0\n" - "._171:\n" - " .word gSaveBlock1+0x2738\n" - " .word gUnknown_Debug_083C4C64\n" - "._126:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r0, ._174\n" - " add r4, r4, r0\n" - " add r5, sp, #0x24\n" - " ldr r1, ._174 + 4\n" - " add r0, r5, #0\n" - " mov r2, #0x8\n" - " bl memcpy\n" - " mov r0, #0xff\n" - " strb r0, [r4, #0x2]\n" - " mov r0, #0x0\n" - " strb r0, [r4, #0x3]\n" - " mov r0, #0x28\n" - " strh r0, [r4, #0x4]\n" - " add r0, r4, #0\n" - " add r0, r0, #0x13\n" - " add r1, r5, #0\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " strb r0, [r4, #0x6]\n" - " b ._173\n" - "._175:\n" - " .align 2, 0\n" - "._174:\n" - " .word gSaveBlock1+0x2738\n" - " .word gUnknown_Debug_083C4C64\n" - "._127:\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x2\n" - " ldr r0, ._176\n" - " add r4, r4, r0\n" - " add r5, sp, #0x2c\n" - " ldr r1, ._176 + 4\n" - " add r0, r5, #0\n" - " mov r2, #0x8\n" - " bl memcpy\n" - " ldr r0, ._176 + 8\n" - " strh r0, [r4, #0x2]\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " strh r0, [r4, #0x6]\n" - " mov r0, #0x28\n" - " strh r0, [r4, #0x4]\n" - " strh r0, [r4, #0x8]\n" - " mov r0, #0x3\n" - " strb r0, [r4, #0xa]\n" - " add r0, r4, #0\n" - " add r0, r0, #0x13\n" - " add r1, r5, #0\n" - " bl StringCopy\n" - " mov r0, #0x5\n" - " strb r0, [r4, #0xb]\n" - "._173:\n" - " add sp, sp, #0x34\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._177:\n" - " .align 2, 0\n" - "._176:\n" - " .word gSaveBlock1+0x2738\n" - " .word gUnknown_Debug_083C4C64\n" - " .word 0xffff\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808FEBC() -{ - asm( - " push {lr}\n" - " bl ClearTVShowData\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808FECC() -{ - asm( - " push {r4, lr}\n" - " ldr r1, ._178\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " ldr r0, ._178 + 4\n" - " bl sub_8071F40\n" - " mov r0, #0xd\n" - " mov r1, #0x6\n" - " mov r2, #0x17\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._178 + 8\n" - " ldr r0, [r0]\n" - " mov r1, #0xe\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " mov r0, #0x16\n" - " mov r1, #0x1\n" - " mov r2, #0x18\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._178 + 12\n" - " add r0, r4, #0\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x17\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._178 + 16\n" - " ldr r0, ._178 + 20\n" - " str r0, [r1]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word gDebug_03000724\n" - " .word gUnknown_Debug_083C49CA\n" - " .word gUnknown_Debug_083C4B20+0x4\n" - " .word gStringVar1\n" - " .word gMenuCallback\n" - " .word debug_sub_808FF3C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808FF3C() -{ - asm( - " push {r4, lr}\n" - " mov r2, #0x0\n" - " ldr r0, ._192\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._180 @cond_branch\n" - " ldr r1, ._192 + 4\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x10\n" - " bne ._181 @cond_branch\n" - " strb r2, [r1]\n" - "._181:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._180:\n" - " ldr r0, ._192\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._182 @cond_branch\n" - " ldr r1, ._192 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._183 @cond_branch\n" - " mov r0, #0x10\n" - " strb r0, [r1]\n" - "._183:\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._182:\n" - " ldr r0, ._192\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._184 @cond_branch\n" - " ldr r1, ._192 + 8\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x3\n" - " bne ._185 @cond_branch\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - "._185:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._184:\n" - " ldr r0, ._192\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._186 @cond_branch\n" - " ldr r1, ._192 + 8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._187 @cond_branch\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - "._187:\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r2, #0x1\n" - "._186:\n" - " cmp r2, #0\n" - " beq ._188 @cond_branch\n" - " mov r0, #0xd\n" - " mov r1, #0x6\n" - " mov r2, #0x17\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._192 + 12\n" - " ldr r0, ._192 + 8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0xe\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " mov r0, #0x16\n" - " mov r1, #0x1\n" - " mov r2, #0x18\n" - " mov r3, #0x2\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._192 + 16\n" - " ldr r0, ._192 + 4\n" - " ldrb r1, [r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x17\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - "._188:\n" - " ldr r4, ._192\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._189 @cond_branch\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - " ldr r0, ._192 + 4\n" - " ldrb r0, [r0]\n" - " ldr r2, ._192 + 20\n" - " ldr r1, ._192 + 8\n" - " ldrb r1, [r1]\n" - " add r1, r1, r2\n" - " ldrb r1, [r1]\n" - " bl debug_sub_8090080\n" - "._189:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._190 @cond_branch\n" - " mov r0, #0x0\n" - " b ._191\n" - "._193:\n" - " .align 2, 0\n" - "._192:\n" - " .word gMain\n" - " .word gDebug_03000725\n" - " .word gDebug_03000724\n" - " .word gUnknown_Debug_083C4B20+0x4\n" - " .word gStringVar1\n" - " .word gUnknown_Debug_083C4B20\n" - "._190:\n" - " bl sub_80BEC40\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._191:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090080() -{ - asm( - " lsl r0, r0, #0x18\n" - " ldr r2, ._194\n" - " lsr r0, r0, #0x16\n" - " add r0, r0, r2\n" - " ldr r3, ._194 + 4\n" - " add r2, r0, r3\n" - " strb r1, [r2]\n" - " ldr r1, ._194 + 8\n" - " add r2, r0, r1\n" - " mov r1, #0x1\n" - " strb r1, [r2]\n" - " add r3, r3, #0x2\n" - " add r0, r0, r3\n" - " mov r1, #0x4\n" - " strh r1, [r0]\n" - " bx lr\n" - "._195:\n" - " .align 2, 0\n" - "._194:\n" - " .word gSaveBlock1\n" - " .word 0x2abc\n" - " .word 0x2abd\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80900AC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " mov r7, #0x0\n" - " mov r5, #0x0\n" - " ldr r0, ._202\n" - " mov r8, r0\n" - "._198:\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x2\n" - " mov r1, r8\n" - " add r6, r0, r1\n" - " ldr r1, ._202 + 4\n" - " add r0, r6, r1\n" - " ldrb r4, [r0]\n" - " cmp r4, #0\n" - " bne ._196 @cond_branch\n" - " cmp r7, #0xc\n" - " bne ._197 @cond_branch\n" - " mov r7, #0x0\n" - "._197:\n" - " ldr r0, ._202 + 8\n" - " add r0, r7, r0\n" - " ldrb r1, [r0]\n" - " add r0, r5, #0\n" - " bl debug_sub_808FA88\n" - " ldr r1, ._202 + 12\n" - " add r0, r6, r1\n" - " strb r4, [r0]\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._196:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x17\n" - " bls ._198 @cond_branch\n" - " mov r7, #0x0\n" - " mov r5, #0x0\n" - "._201:\n" - " ldr r0, ._202\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r0\n" - " ldr r0, ._202 + 16\n" - " add r1, r1, r0\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._199 @cond_branch\n" - " cmp r7, #0x3\n" - " bne ._200 @cond_branch\n" - " mov r7, #0x0\n" - "._200:\n" - " ldr r0, ._202 + 20\n" - " add r0, r7, r0\n" - " ldrb r1, [r0]\n" - " add r0, r5, #0\n" - " bl debug_sub_8090080\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._199:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0xf\n" - " bls ._201 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._203:\n" - " .align 2, 0\n" - "._202:\n" - " .word gSaveBlock1\n" - " .word 0x2738\n" - " .word gUnknown_Debug_083C4ABD\n" - " .word 0x2739\n" - " .word 0x2abc\n" - " .word gUnknown_Debug_083C4B20\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_Fan() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._204\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xa\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._204 + 4\n" - " ldr r0, ._204 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._205:\n" - " .align 2, 0\n" - "._204:\n" - " .word gUnknown_Debug_083C4D28\n" - " .word gMenuCallback\n" - " .word debug_sub_80901A4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80901A4() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._206 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " beq ._207 @cond_branch\n" - " ldr r2, ._209\n" - " ldr r0, ._209 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - "._206:\n" - " mov r0, #0x0\n" - " b ._208\n" - "._210:\n" - " .align 2, 0\n" - "._209:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C4D28\n" - "._207:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._208:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80901E4() -{ - asm( - " push {lr}\n" - " bl ResetFanClub\n" - " bl sub_810FAA0\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80901F8() -{ - asm( - " push {lr}\n" - " bl sub_810FB9C\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._211\n" - " ldr r1, ._211 + 4\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x8\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldr r0, [r0]\n" - " mov r1, #0xe\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r1, ._211 + 8\n" - " ldr r0, ._211 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gUnknown_Debug_083C4CA8\n" - " .word gUnknown_083F8408\n" - " .word gMenuCallback\n" - " .word debug_sub_8090278+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090238() -{ - asm( - " push {lr}\n" - " bl sub_810FC18\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._213\n" - " ldr r1, ._213 + 4\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x8\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldr r0, [r0]\n" - " mov r1, #0xe\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r1, ._213 + 8\n" - " ldr r0, ._213 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word gUnknown_Debug_083C4CA8\n" - " .word gUnknown_083F8410\n" - " .word gMenuCallback\n" - " .word debug_sub_8090278+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090278() -{ - asm( - " push {lr}\n" - " ldr r0, ._217\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._215 @cond_branch\n" - " mov r0, #0x0\n" - " b ._216\n" - "._218:\n" - " .align 2, 0\n" - "._217:\n" - " .word gMain\n" - "._215:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._216:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_809029C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._219\n" - " ldr r0, ._219 + 4\n" - " ldr r1, ._219 + 8\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " mov r1, #0x7f\n" - " and r1, r1, r0\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x10\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " ldr r1, ._219 + 12\n" - " ldr r0, ._219 + 16\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._220:\n" - " .align 2, 0\n" - "._219:\n" - " .word gStringVar1\n" - " .word gSaveBlock1\n" - " .word 0x13c2\n" - " .word gMenuCallback\n" - " .word debug_sub_8090278+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80902E4() -{ - asm( - " push {lr}\n" - " ldr r1, ._221\n" - " ldrh r0, [r1, #0xe]\n" - " add r0, r0, #0x6\n" - " strh r0, [r1, #0xe]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._222:\n" - " .align 2, 0\n" - "._221:\n" - " .word gSaveBlock2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80902FC() -{ - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " bl sub_810FB10\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090310() -{ - asm( - " push {lr}\n" - " mov r0, #0x1\n" - " bl sub_810FB10\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090324() -{ - asm( - " push {lr}\n" - " mov r0, #0x2\n" - " bl sub_810FB10\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090338() -{ - asm( - " push {lr}\n" - " mov r0, #0x3\n" - " bl sub_810FB10\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_BattleVSDad() -{ - asm( - " push {lr}\n" - " ldr r0, ._223\n" - " mov r1, #0x6\n" - " bl VarSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._224:\n" - " .align 2, 0\n" - "._223:\n" - " .word 0x4085\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_DadAfterBattle() -{ - asm( - " push {lr}\n" - " ldr r0, ._225\n" - " mov r1, #0x7\n" - " bl VarSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._226:\n" - " .align 2, 0\n" - "._225:\n" - " .word 0x4085\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_SootopolisCity() -{ - asm( - " push {lr}\n" - " mov r0, #0x81\n" - " bl FlagSet\n" - " mov r0, #0x71\n" - " bl FlagSet\n" - " ldr r0, ._227\n" - " bl FlagClear\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._228:\n" - " .align 2, 0\n" - "._227:\n" - " .word 0x32f\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_Embark() -{ - asm( - " push {lr}\n" - " ldr r0, ._229\n" - " bl FlagClear\n" - " ldr r0, ._229 + 4\n" - " mov r1, #0x1\n" - " bl VarSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._230:\n" - " .align 2, 0\n" - "._229:\n" - " .word 0x2e3\n" - " .word 0x4090\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_Yes9999() -{ - asm( - " push {lr}\n" - " ldr r0, ._231\n" - " ldr r1, ._231 + 4\n" - " bl VarSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._232:\n" - " .align 2, 0\n" - "._231:\n" - " .word 0x4048\n" - " .word 0x270f\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_LegendsFlagOn() -{ - asm( - " push {lr}\n" - " mov r0, #0xe4\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void NoharaDebugMenu_AddNumWinningStreaks() -{ - asm( - " push {lr}\n" - " ldr r0, ._235\n" - " ldr r1, ._235 + 4\n" - " add r2, r0, r1\n" - " ldrh r1, [r2]\n" - " cmp r1, #0x31\n" - " bhi ._233 @cond_branch\n" - " mov r0, #0x32\n" - " b ._244\n" - "._236:\n" - " .align 2, 0\n" - "._235:\n" - " .word gSaveBlock2\n" - " .word 0x572\n" - "._233:\n" - " cmp r1, #0x63\n" - " bhi ._237 @cond_branch\n" - " mov r0, #0x64\n" - " b ._244\n" - "._237:\n" - " ldr r0, ._241\n" - " cmp r1, r0\n" - " bhi ._239 @cond_branch\n" - " add r0, r0, #0x1\n" - " b ._244\n" - "._242:\n" - " .align 2, 0\n" - "._241:\n" - " .word 0x3e7\n" - "._239:\n" - " ldr r0, ._245\n" - " cmp r1, r0\n" - " bhi ._243 @cond_branch\n" - " ldr r0, ._245 + 4\n" - " b ._244\n" - "._246:\n" - " .align 2, 0\n" - "._245:\n" - " .word 0x1387\n" - " .word 0x2706\n" - "._243:\n" - " ldr r0, ._248\n" - " cmp r1, r0\n" - " bhi ._247 @cond_branch\n" - " add r0, r0, #0xa\n" - "._244:\n" - " strh r0, [r2]\n" - "._247:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word 0x2705\n" - "\n" - ); -} +asm(".global gDebug_03000724"); +asm(".global gDebug_03000725"); +asm(".global gDebug_03000726"); #endif diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c index d479c59c8..f7e0e3770 100644 --- a/src/debug/taya_debug_window.c +++ b/src/debug/taya_debug_window.c @@ -3,2120 +3,4 @@ EWRAM_DATA u8 unk_2030224[4] = { 0 }; -__attribute__((naked)) -void TayaDebugMenu_Trend() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffd8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1e\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r5, ._3\n" - " mov r7, #0x0\n" - " mov r0, #0x1\n" - " add r0, r0, sp\n" - " mov sl, r0\n" - " mov r9, sp\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " add r6, sp, #0x20\n" - "._2:\n" - " ldrb r1, [r5, #0x1]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " mov r1, #0xa1\n" - " cmp r0, #0\n" - " beq ._1 @cond_branch\n" - " mov r1, #0xa2\n" - "._1:\n" - " mov r0, r9\n" - " strb r1, [r0]\n" - " ldrh r1, [r5, #0x4]\n" - " add r0, r6, #0\n" - " bl EasyChat_GetWordText\n" - " mov r0, sl\n" - " add r1, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x7\n" - " bl StringCopyPadded\n" - " add r4, r0, #0\n" - " ldrh r1, [r5, #0x6]\n" - " add r0, r6, #0\n" - " bl EasyChat_GetWordText\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x8\n" - " bl StringCopyPadded\n" - " add r4, r0, #0\n" - " ldrb r1, [r5]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x19\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r4, r0, #0\n" - " mov r0, r8\n" - " strb r0, [r4]\n" - " add r4, r4, #0x1\n" - " ldrh r1, [r5]\n" - " lsl r1, r1, #0x12\n" - " lsr r1, r1, #0x19\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r4, r0, #0\n" - " mov r0, r8\n" - " strb r0, [r4]\n" - " add r4, r4, #0x1\n" - " ldrh r1, [r5, #0x2]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " lsl r2, r7, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " bl Menu_PrintText\n" - " add r5, r5, #0x8\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r7, r0, #0x10\n" - " cmp r7, #0x4\n" - " bls ._2 @cond_branch\n" - " ldr r1, ._3 + 4\n" - " ldr r0, ._3 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x28\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gSaveBlock1+0x2dd4\n" - " .word gMenuCallback\n" - " .word debug_sub_8090808+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090808() -{ - asm( - " push {lr}\n" - " ldr r0, ._7\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x3\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._5 @cond_branch\n" - " mov r0, #0x0\n" - " b ._6\n" - "._8:\n" - " .align 2, 0\n" - "._7:\n" - " .word gMain\n" - "._5:\n" - " bl Menu_EraseScreen\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._6:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_TrendR() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r0, #0x0\n" - " ldr r7, ._11\n" - "._10:\n" - " mov r4, #0x0\n" - " lsl r5, r0, #0x3\n" - " add r6, r0, #1\n" - "._9:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x16\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl sub_80EB72C\n" - " lsl r1, r4, #0x1\n" - " add r1, r1, r5\n" - " add r1, r1, r7\n" - " strh r0, [r1]\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0x1\n" - " bls ._9 @cond_branch\n" - " lsl r0, r6, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0x4\n" - " bls ._10 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._12:\n" - " .align 2, 0\n" - "._11:\n" - " .word gSaveBlock1+0x2dd8\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090880() -{ - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._13 @cond_branch\n" - " mov r0, #0x0\n" - " b ._14\n" - "._13:\n" - " bl sub_80E60D8\n" - " mov r0, #0x1\n" - "._14:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_809089C() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._15 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._16 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._17\n" - "._16:\n" - " ldr r2, ._19\n" - " ldr r0, ._19 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " strh r0, [r2]\n" - " ldrh r0, [r2]\n" - " sub r0, r0, #0x5\n" - " cmp r0, #0x7\n" - " bhi ._27 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._19 + 8\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._20:\n" - " .align 2, 0\n" - "._19:\n" - " .word gSpecialVar_0x8004\n" - " .word gUnknown_Debug_083C4EC0\n" - " .word ._21\n" - "._21:\n" - " .word ._29\n" - " .word ._27\n" - " .word ._29\n" - " .word ._29\n" - " .word ._27\n" - " .word ._27\n" - " .word ._29\n" - " .word ._29\n" - "._29:\n" - " ldr r0, ._30\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " ldr r0, ._30 + 4\n" - " strh r1, [r0]\n" - "._27:\n" - " mov r0, #0x1\n" - " mov r1, #0x0\n" - " bl FadeScreen\n" - " ldr r1, ._30 + 8\n" - " ldr r0, ._30 + 12\n" - " str r0, [r1]\n" - "._15:\n" - " mov r0, #0x0\n" - "._17:\n" - " pop {r1}\n" - " bx r1\n" - "._31:\n" - " .align 2, 0\n" - "._30:\n" - " .word gSpecialVar_0x8005\n" - " .word gSpecialVar_0x8006\n" - " .word gMenuCallback\n" - " .word debug_sub_8090880+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_SimpleText() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xc\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._32\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xb\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._32 + 4\n" - " ldr r0, ._32 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._33:\n" - " .align 2, 0\n" - "._32:\n" - " .word gUnknown_Debug_083C4EC0\n" - " .word gMenuCallback\n" - " .word debug_sub_809089C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090984() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " bl Menu_ProcessInput\n" - " lsl r2, r0, #0x18\n" - " asr r1, r2, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._34 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " beq ._46 @cond_branch\n" - " cmp r1, #0x4\n" - " bgt ._36 @cond_branch\n" - " lsr r0, r2, #0x18\n" - " bl debug_sub_810B32C\n" - " b ._46\n" - "._34:\n" - " mov r0, #0x0\n" - " b ._38\n" - "._36:\n" - " cmp r1, #0x5\n" - " bne ._39 @cond_branch\n" - " bl sub_80F7F30\n" - " b ._46\n" - "._39:\n" - " cmp r1, #0x6\n" - " bne ._41 @cond_branch\n" - " mov r4, #0x0\n" - " ldr r0, ._44\n" - " add r1, r0, #2\n" - " mov ip, r1\n" - " ldr r7, ._44 + 4\n" - " ldr r1, ._44 + 8\n" - " add r6, r0, r1\n" - " add r5, r0, #0\n" - " add r5, r5, #0xe\n" - "._42:\n" - " lsl r1, r4, #0x1\n" - " mov r0, ip\n" - " add r3, r1, r0\n" - " add r0, r1, r7\n" - " ldrh r2, [r0]\n" - " strh r2, [r3]\n" - " add r0, r1, r5\n" - " strh r2, [r0]\n" - " add r1, r6, r1\n" - " strh r2, [r1]\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0x2\n" - " bls ._42 @cond_branch\n" - " b ._46\n" - "._45:\n" - " .align 2, 0\n" - "._44:\n" - " .word gSaveBlock1+0x2d94\n" - " .word gUnknown_Debug_083C4F08\n" - " .word 0xfffffd94\n" - "._41:\n" - " cmp r1, #0x7\n" - " bne ._46 @cond_branch\n" - " mov r4, #0x0\n" - "._47:\n" - " lsl r0, r4, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl sub_80EB890\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0x20\n" - " bls ._47 @cond_branch\n" - "._46:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._38:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_OldMan() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xa\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._48\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItems\n" - " bl GetCurrentMauvilleOldMan\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " ldr r1, ._48 + 4\n" - " ldr r0, ._48 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._49:\n" - " .align 2, 0\n" - "._48:\n" - " .word gUnknown_Debug_083C4F54\n" - " .word gMenuCallback\n" - " .word debug_sub_8090984+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_LanettesPC() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl ShowPokemonStorageSystem\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_TownFlags() -{ - asm( - " push {lr}\n" - " ldr r0, ._50\n" - " bl FlagSet\n" - " mov r0, #0x81\n" - " lsl r0, r0, #0x4\n" - " bl FlagSet\n" - " ldr r0, ._50 + 4\n" - " bl FlagSet\n" - " ldr r0, ._50 + 8\n" - " bl FlagSet\n" - " ldr r0, ._50 + 12\n" - " bl FlagSet\n" - " ldr r0, ._50 + 16\n" - " bl FlagSet\n" - " ldr r0, ._50 + 20\n" - " bl FlagSet\n" - " ldr r0, ._50 + 24\n" - " bl FlagSet\n" - " ldr r0, ._50 + 28\n" - " bl FlagSet\n" - " ldr r0, ._50 + 32\n" - " bl FlagSet\n" - " ldr r0, ._50 + 36\n" - " bl FlagSet\n" - " ldr r0, ._50 + 40\n" - " bl FlagSet\n" - " ldr r0, ._50 + 44\n" - " bl FlagSet\n" - " ldr r0, ._50 + 48\n" - " bl FlagSet\n" - " ldr r0, ._50 + 52\n" - " bl FlagSet\n" - " ldr r0, ._50 + 56\n" - " bl FlagSet\n" - " ldr r0, ._50 + 60\n" - " bl FlagSet\n" - " ldr r0, ._50 + 64\n" - " bl FlagSet\n" - " ldr r0, ._50 + 68\n" - " bl FlagSet\n" - " ldr r0, ._50 + 72\n" - " bl FlagSet\n" - " ldr r0, ._50 + 76\n" - " bl FlagSet\n" - " ldr r0, ._50 + 80\n" - " bl FlagSet\n" - " ldr r0, ._50 + 84\n" - " bl FlagSet\n" - " ldr r0, ._50 + 88\n" - " bl FlagSet\n" - " ldr r0, ._50 + 92\n" - " bl FlagSet\n" - " ldr r0, ._50 + 96\n" - " bl FlagSet\n" - " ldr r0, ._50 + 100\n" - " bl FlagSet\n" - " ldr r0, ._50 + 104\n" - " bl FlagSet\n" - " ldr r0, ._50 + 108\n" - " bl FlagSet\n" - " ldr r0, ._50 + 112\n" - " bl FlagSet\n" - " ldr r0, ._50 + 116\n" - " bl FlagSet\n" - " ldr r0, ._50 + 120\n" - " bl FlagSet\n" - " mov r0, #0x84\n" - " lsl r0, r0, #0x4\n" - " bl FlagSet\n" - " ldr r0, ._50 + 124\n" - " bl FlagSet\n" - " ldr r0, ._50 + 128\n" - " bl FlagSet\n" - " ldr r0, ._50 + 132\n" - " bl FlagSet\n" - " ldr r0, ._50 + 136\n" - " bl FlagSet\n" - " ldr r0, ._50 + 140\n" - " bl FlagSet\n" - " ldr r0, ._50 + 144\n" - " bl FlagSet\n" - " ldr r0, ._50 + 148\n" - " bl FlagSet\n" - " ldr r0, ._50 + 152\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._51:\n" - " .align 2, 0\n" - "._50:\n" - " .word 0x80f\n" - " .word 0x811\n" - " .word 0x812\n" - " .word 0x813\n" - " .word 0x814\n" - " .word 0x815\n" - " .word 0x816\n" - " .word 0x817\n" - " .word 0x818\n" - " .word 0x819\n" - " .word 0x81a\n" - " .word 0x81b\n" - " .word 0x81c\n" - " .word 0x81d\n" - " .word 0x81e\n" - " .word 0x848\n" - " .word 0x849\n" - " .word 0x84a\n" - " .word 0x854\n" - " .word 0x855\n" - " .word 0x856\n" - " .word 0x857\n" - " .word 0x858\n" - " .word 0x859\n" - " .word 0x85a\n" - " .word 0x85b\n" - " .word 0x85c\n" - " .word 0x83c\n" - " .word 0x83d\n" - " .word 0x83e\n" - " .word 0x83f\n" - " .word 0x841\n" - " .word 0x842\n" - " .word 0x843\n" - " .word 0x844\n" - " .word 0x845\n" - " .word 0x846\n" - " .word 0x847\n" - " .word 0x83b\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_AwardARibbon() -{ - asm( - " push {lr}\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x10\n" - " mov r2, #0x0\n" - " bl BlendPalettes\n" - " ldr r0, ._52\n" - " bl SetMainCallback2\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._53:\n" - " .align 2, 0\n" - "._52:\n" - " .word debug_sub_80915BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090C44() -{ - asm( - " push {r4, r5, lr}\n" - " ldr r4, ._54\n" - " sub r5, r4, #1\n" - " ldrh r1, [r5, #0x8]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x5\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0x0\n" - " mov r2, #0x5\n" - " bl StringFill\n" - " ldrb r0, [r5]\n" - " add r0, r0, r4\n" - " mov r1, #0x79\n" - " strb r1, [r0]\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._55:\n" - " .align 2, 0\n" - "._54:\n" - " .word gSharedMem+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8090C88() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " mov r8, r0\n" - " ldr r2, ._59\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " add r3, r2, #0\n" - " cmp r0, #0\n" - " beq ._57 @cond_branch\n" - " ldr r1, ._59 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._57 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._62\n" - "._60:\n" - " .align 2, 0\n" - "._59:\n" - " .word gMain\n" - " .word gSharedMem\n" - "._67:\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._62\n" - "._77:\n" - " strh r1, [r7, #0x8]\n" - " b ._62\n" - "._79:\n" - " ldr r0, ._64\n" - " ldrh r0, [r0, #0x8]\n" - " bl SetLotteryNumber16_Unused\n" - "._78:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._63\n" - "._65:\n" - " .align 2, 0\n" - "._64:\n" - " .word gSharedMem\n" - "._57:\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._66 @cond_branch\n" - " ldr r1, ._81\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " bls ._67 @cond_branch\n" - "._66:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._68 @cond_branch\n" - " ldr r0, ._81\n" - " ldrh r1, [r0, #0x8]\n" - " str r1, [r0, #0xc]\n" - " ldr r1, ._81 + 4\n" - " strh r1, [r0, #0x10]\n" - " mov r4, #0x0\n" - " ldrb r1, [r0]\n" - " add r7, r0, #0\n" - " cmp r4, r1\n" - " bcs ._69 @cond_branch\n" - " add r5, r7, #0\n" - " add r6, r1, #0\n" - "._70:\n" - " ldrh r0, [r5, #0x10]\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __udivsi3\n" - " strh r0, [r5, #0x10]\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " bcc ._70 @cond_branch\n" - "._69:\n" - " ldrh r1, [r7, #0x10]\n" - " ldr r0, [r7, #0xc]\n" - " add r0, r0, r1\n" - " str r0, [r7, #0xc]\n" - " ldr r1, ._81 + 8\n" - " cmp r0, r1\n" - " ble ._71 @cond_branch\n" - " str r1, [r7, #0xc]\n" - "._71:\n" - " ldrh r0, [r7, #0x8]\n" - " ldr r1, [r7, #0xc]\n" - " cmp r0, r1\n" - " bne ._77 @cond_branch\n" - "._68:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._73 @cond_branch\n" - " ldr r0, ._81\n" - " ldrh r1, [r0, #0x8]\n" - " str r1, [r0, #0xc]\n" - " ldr r1, ._81 + 4\n" - " strh r1, [r0, #0x10]\n" - " mov r4, #0x0\n" - " ldrb r1, [r0]\n" - " add r7, r0, #0\n" - " cmp r4, r1\n" - " bcs ._74 @cond_branch\n" - " add r5, r7, #0\n" - " add r6, r1, #0\n" - "._75:\n" - " ldrh r0, [r5, #0x10]\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __udivsi3\n" - " strh r0, [r5, #0x10]\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " bcc ._75 @cond_branch\n" - "._74:\n" - " add r2, r7, #0\n" - " ldrh r1, [r2, #0x10]\n" - " ldr r0, [r2, #0xc]\n" - " sub r0, r0, r1\n" - " str r0, [r2, #0xc]\n" - " cmp r0, #0\n" - " bge ._76 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [r2, #0xc]\n" - "._76:\n" - " ldrh r0, [r2, #0x8]\n" - " ldr r1, [r2, #0xc]\n" - " cmp r0, r1\n" - " bne ._77 @cond_branch\n" - "._73:\n" - " ldrh r2, [r3, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._78 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._79 @cond_branch\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - "._62:\n" - " mov r0, r8\n" - " cmp r0, #0\n" - " beq ._80 @cond_branch\n" - " bl debug_sub_8090C44\n" - "._80:\n" - " mov r0, #0x0\n" - "._63:\n" - " add sp, sp, #0x4\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._82:\n" - " .align 2, 0\n" - "._81:\n" - " .word gSharedMem\n" - " .word 0x2710\n" - " .word 0xffff\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_PKMNLottery() -{ - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x6\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " bl RetrieveLotteryNumber\n" - " ldr r2, ._83\n" - " ldr r0, ._83 + 4\n" - " ldrh r0, [r0]\n" - " mov r1, #0x0\n" - " strh r0, [r2, #0x8]\n" - " strb r1, [r2]\n" - " bl debug_sub_8090C44\n" - " ldr r1, ._83 + 8\n" - " ldr r0, ._83 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._84:\n" - " .align 2, 0\n" - "._83:\n" - " .word gSharedMem\n" - " .word gSpecialVar_Result\n" - " .word gMenuCallback\n" - " .word debug_sub_8090C88+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_Trainer() -{ - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._86\n" - "._85:\n" - " lsl r0, r4, #0x4\n" - " add r0, r0, r5\n" - " ldrh r0, [r0]\n" - " bl SetTrainerFlag\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0x37\n" - " bls ._85 @cond_branch\n" - " ldr r0, ._86 + 4\n" - " bl SetTrainerFlag\n" - " mov r0, #0x85\n" - " lsl r0, r0, #0x1\n" - " bl SetTrainerFlag\n" - " ldr r0, ._86 + 8\n" - " bl SetTrainerFlag\n" - " mov r0, #0x86\n" - " lsl r0, r0, #0x1\n" - " bl SetTrainerFlag\n" - " ldr r0, ._86 + 12\n" - " bl SetTrainerFlag\n" - " mov r0, #0x87\n" - " lsl r0, r0, #0x1\n" - " bl SetTrainerFlag\n" - " ldr r0, ._86 + 16\n" - " bl SetTrainerFlag\n" - " mov r0, #0x88\n" - " lsl r0, r0, #0x1\n" - " bl SetTrainerFlag\n" - " ldr r0, ._86 + 20\n" - " bl SetTrainerFlag\n" - " mov r0, #0x83\n" - " lsl r0, r0, #0x1\n" - " bl SetTrainerFlag\n" - " ldr r0, ._86 + 24\n" - " bl SetTrainerFlag\n" - " mov r0, #0x84\n" - " lsl r0, r0, #0x1\n" - " bl SetTrainerFlag\n" - " ldr r0, ._86 + 28\n" - " bl SetTrainerFlag\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._87:\n" - " .align 2, 0\n" - "._86:\n" - " .word gTrainerEyeTrainers\n" - " .word 0x109\n" - " .word 0x10b\n" - " .word 0x10d\n" - " .word 0x10f\n" - " .word 0x105\n" - " .word 0x107\n" - " .word 0x14f\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_PokenavD() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe4\n" - " bl Menu_DisplayDialogueFrame\n" - " mov r0, #0x0\n" - " mov sl, r0\n" - " mov r6, #0x1\n" - " mov r7, #0xff\n" - " mov r1, #0x3\n" - " mov r9, r1\n" - "._93:\n" - " ldr r4, ._94\n" - " add r0, r4, #0\n" - " ldr r1, ._94 + 4\n" - " bl StringCopy\n" - " mov r5, sl\n" - " add r5, r5, #0x1\n" - " add r1, r5, r4\n" - " mov r0, #0xff\n" - " strb r0, [r1]\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " str r5, [sp, #0x14]\n" - " mov r1, sl\n" - " lsl r1, r1, #0x2\n" - " str r1, [sp, #0x18]\n" - "._91:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " add r0, r0, #0x1\n" - " str r0, [sp, #0x10]\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xc1\n" - " lsl r1, r1, #0x1\n" - " bl __umodsi3\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " cmp r3, #0xfb\n" - " bls ._89 @cond_branch\n" - " add r0, r3, #0\n" - " add r0, r0, #0x19\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " ldr r0, ._94 + 8\n" - " cmp r3, r0\n" - " bls ._89 @cond_branch\n" - " mov r3, #0x1\n" - "._89:\n" - " ldr r0, [sp, #0x18]\n" - " add r0, r0, sl\n" - " lsl r4, r0, #0x4\n" - " sub r4, r4, r0\n" - " lsl r4, r4, #0x5\n" - " mov r1, r8\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r8\n" - " lsl r0, r0, #0x4\n" - " ldr r1, ._94 + 12\n" - " add r0, r0, r1\n" - " add r4, r4, r0\n" - " lsl r2, r5, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " str r6, [sp, #0x8]\n" - " ldr r0, [sp, #0x10]\n" - " str r0, [sp, #0xc]\n" - " add r0, r4, #0\n" - " add r1, r3, #0\n" - " mov r3, #0x20\n" - " bl CreateBoxMon\n" - " bl Random\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x16\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x17\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x18\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x21\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x2f\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r7, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x30\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " mov r1, r9\n" - " and r1, r1, r0\n" - " add r1, r1, #0x1\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x32\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " mov r1, r9\n" - " and r1, r1, r0\n" - " add r1, r1, #0x1\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x33\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " mov r1, r9\n" - " and r1, r1, r0\n" - " add r1, r1, #0x1\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x34\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " mov r1, r9\n" - " and r1, r1, r0\n" - " add r1, r1, #0x1\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x36\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " mov r1, r9\n" - " and r1, r1, r0\n" - " add r1, r1, #0x1\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x35\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x43\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x44\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x45\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x46\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x47\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x48\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x49\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x4a\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x4b\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x4c\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x4d\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " bl Random\n" - " add r1, r6, #0\n" - " and r1, r1, r0\n" - " str r1, [sp, #0x10]\n" - " add r0, r4, #0\n" - " mov r1, #0x4e\n" - " add r2, sp, #0x10\n" - " bl SetBoxMonData\n" - " mov r0, r8\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r8, r0\n" - " cmp r0, #0x1d\n" - " bhi ._90 @cond_branch\n" - " b ._91\n" - "._90:\n" - " ldr r1, [sp, #0x14]\n" - " lsl r0, r1, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov sl, r0\n" - " cmp r0, #0xd\n" - " bhi ._92 @cond_branch\n" - " b ._93\n" - "._92:\n" - " bl TayaDebugMenu_TownFlags\n" - " bl TayaDebugMenu_Trainer\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " add sp, sp, #0x1c\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._95:\n" - " .align 2, 0\n" - "._94:\n" - " .word gSharedMem\n" - " .word gUnknown_Debug_083C4F94\n" - " .word 0x19b\n" - " .word gPokemonStorage+0x4\n" - "\n" - ); -} - -__attribute__((naked)) -void TayaDebugMenu_8091190() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r3, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r3, r0\n" - " beq ._96 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r3, r0\n" - " beq ._97 @cond_branch\n" - " ldr r2, ._99\n" - " ldr r1, ._99 + 4\n" - " ldr r0, ._99 + 8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, [r0]\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0, #0x4]\n" - " str r0, [r2]\n" - "._106:\n" - " mov r0, #0x0\n" - " b ._98\n" - "._100:\n" - " .align 2, 0\n" - "._99:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_83C5068\n" - " .word unk_2030224\n" - "._96:\n" - " ldr r3, ._107\n" - " ldrb r4, [r3]\n" - " ldr r2, ._107 + 4\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " add r5, r3, #0\n" - " cmp r0, #0\n" - " beq ._102 @cond_branch\n" - " sub r0, r4, #1\n" - " strb r0, [r5]\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bge ._102 @cond_branch\n" - " mov r0, #0x1\n" - " strb r0, [r5]\n" - "._102:\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._104 @cond_branch\n" - " ldrb r0, [r5]\n" - " add r0, r0, #0x1\n" - " strb r0, [r5]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bls ._104 @cond_branch\n" - " mov r0, #0x0\n" - " strb r0, [r5]\n" - "._104:\n" - " lsl r0, r4, #0x18\n" - " asr r0, r0, #0x18\n" - " mov r1, #0x0\n" - " ldrsb r1, [r5, r1]\n" - " cmp r0, r1\n" - " beq ._106 @cond_branch\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._107 + 8\n" - " mov r0, #0x0\n" - " ldrsb r0, [r5, r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r4\n" - " ldrb r2, [r0, #0x4]\n" - " ldr r3, [r0]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " ldrsb r0, [r5, r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r4\n" - " ldrb r3, [r0, #0x4]\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xa\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl InitMenu\n" - " b ._106\n" - "._108:\n" - " .align 2, 0\n" - "._107:\n" - " .word unk_2030224\n" - " .word gMain\n" - " .word gUnknown_Debug_83C5068\n" - "._97:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._98:\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void InitTayaDebugWindow() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " ldr r1, ._109\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._109 + 4\n" - " ldr r3, [r0]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xa\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._109 + 8\n" - " ldr r0, ._109 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word unk_2030224\n" - " .word gUnknown_Debug_83C5068\n" - " .word gMenuCallback\n" - " .word TayaDebugMenu_8091190+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80912D8() -{ - asm( - " push {lr}\n" - " ldr r0, ._113\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._111 @cond_branch\n" - " mov r0, #0x0\n" - " b ._112\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gPaletteFade\n" - "._111:\n" - " ldr r0, ._115\n" - " bl SetMainCallback2\n" - " mov r0, #0x1\n" - "._112:\n" - " pop {r1}\n" - " bx r1\n" - "._116:\n" - " .align 2, 0\n" - "._115:\n" - " .word debug_sub_8110F28+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8091300() -{ - asm( - " push {lr}\n" - " mov r0, #0x1\n" - " mov r1, #0x0\n" - " bl FadeScreen\n" - " ldr r1, ._117\n" - " ldr r0, ._117 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._118:\n" - " .align 2, 0\n" - "._117:\n" - " .word gMenuCallback\n" - " .word debug_sub_80912D8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8091320() -{ - asm( - " push {lr}\n" - " bl LoadOam\n" - " bl ProcessSpriteCopyRequests\n" - " bl TransferPlttBuffer\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8091334() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " ldr r3, ._123\n" - " add r0, r3, #0\n" - " add r0, r0, #0x52\n" - " ldrb r4, [r0]\n" - " cmp r4, #0\n" - " beq ._119 @cond_branch\n" - " cmp r4, #0x1\n" - " bne ._120 @cond_branch\n" - " b ._121\n" - "._120:\n" - " b ._162\n" - "._124:\n" - " .align 2, 0\n" - "._123:\n" - " .word gSharedMem\n" - "._119:\n" - " add r5, r3, #0\n" - " add r5, r5, #0x55\n" - " strb r4, [r5]\n" - " ldr r2, ._131\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " mov r9, r2\n" - " cmp r0, #0\n" - " beq ._126 @cond_branch\n" - " add r1, r3, #0\n" - " add r1, r1, #0x54\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._126 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x1\n" - " strb r0, [r5]\n" - "._126:\n" - " mov r0, r9\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " ldr r5, ._131 + 4\n" - " cmp r0, #0\n" - " beq ._133 @cond_branch\n" - " add r0, r5, #0\n" - " add r0, r0, #0x53\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x2\n" - " beq ._128 @cond_branch\n" - " add r1, r5, #0\n" - " add r1, r1, #0x54\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x4\n" - " bhi ._133 @cond_branch\n" - " b ._130\n" - "._132:\n" - " .align 2, 0\n" - "._131:\n" - " .word gMain\n" - " .word gSharedMem\n" - "._128:\n" - " add r1, r5, #0\n" - " add r1, r1, #0x54\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " bhi ._133 @cond_branch\n" - "._130:\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " add r1, r1, #0x1\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - "._133:\n" - " mov r2, r9\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._135 @cond_branch\n" - " add r1, r5, #0\n" - " add r1, r1, #0x53\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._135 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " add r1, r1, #0x2\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - "._135:\n" - " mov r3, r9\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._140 @cond_branch\n" - " add r0, r5, #0\n" - " add r0, r0, #0x54\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x5\n" - " beq ._137 @cond_branch\n" - " add r1, r5, #0\n" - " add r1, r1, #0x53\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x1\n" - " bhi ._140 @cond_branch\n" - " b ._139\n" - "._137:\n" - " add r1, r5, #0\n" - " add r1, r1, #0x53\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._140 @cond_branch\n" - "._139:\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " add r1, r1, #0x2\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - "._140:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x55\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " mov r0, r9\n" - " ldrh r2, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._142 @cond_branch\n" - " ldr r2, ._145\n" - " add r3, r5, #0\n" - " add r3, r3, #0x53\n" - " add r0, r5, #0\n" - " add r0, r0, #0x54\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " ldrb r3, [r3]\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r2\n" - " ldrh r0, [r0, #0x4]\n" - " sub r0, r0, #0x32\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0x4\n" - " bhi ._143 @cond_branch\n" - " add r1, r5, #0\n" - " add r1, r1, #0x56\n" - " mov r0, #0x4\n" - " b ._144\n" - "._146:\n" - " .align 2, 0\n" - "._145:\n" - " .word gUnknown_Debug_083C50EC\n" - "._143:\n" - " add r1, r5, #0\n" - " add r1, r1, #0x56\n" - " mov r0, #0x1\n" - "._144:\n" - " strb r0, [r1]\n" - " add r1, r5, #0\n" - " add r1, r1, #0x52\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " b ._162\n" - "._142:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._148 @cond_branch\n" - " b ._162\n" - "._148:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x10\n" - " mov r2, #0x0\n" - " bl BlendPalettes\n" - " ldr r0, ._151\n" - " bl SetMainCallback2\n" - " b ._162\n" - "._152:\n" - " .align 2, 0\n" - "._151:\n" - " .word sub_80546F0+1\n" - "._121:\n" - " add r5, r3, #0\n" - " add r5, r5, #0x55\n" - " mov r0, #0x0\n" - " strb r0, [r5]\n" - " ldr r2, ._159\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " mov r9, r2\n" - " cmp r0, #0\n" - " beq ._154 @cond_branch\n" - " add r2, r3, #0\n" - " add r2, r2, #0x53\n" - " add r0, r3, #0\n" - " add r0, r0, #0x54\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " add r2, r0, r3\n" - " add r0, r3, #0\n" - " add r0, r0, #0x56\n" - " ldrb r1, [r2]\n" - " ldrb r0, [r0]\n" - " cmp r1, r0\n" - " bcs ._154 @cond_branch\n" - " add r0, r1, #1\n" - " strb r0, [r2]\n" - " strb r4, [r5]\n" - "._154:\n" - " mov r2, r9\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " ldr r5, ._159 + 4\n" - " cmp r0, #0\n" - " beq ._156 @cond_branch\n" - " add r2, r5, #0\n" - " add r2, r2, #0x53\n" - " add r0, r5, #0\n" - " add r0, r0, #0x54\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x1\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " add r1, r0, r5\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._156 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " add r1, r5, #0\n" - " add r1, r1, #0x55\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - "._156:\n" - " add r6, r5, #0\n" - " add r0, r6, #0\n" - " add r0, r0, #0x55\n" - " ldrb r7, [r0]\n" - " cmp r7, #0\n" - " beq ._157 @cond_branch\n" - "._141:\n" - " bl debug_sub_80916AC\n" - " b ._162\n" - "._160:\n" - " .align 2, 0\n" - "._159:\n" - " .word gMain\n" - " .word gSharedMem\n" - "._157:\n" - " mov r3, r9\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._161 @cond_branch\n" - " ldr r0, ._164\n" - " ldr r1, ._164 + 4\n" - " mov ip, r1\n" - " mov r2, #0x53\n" - " add r2, r2, r6\n" - " mov r8, r2\n" - " add r4, r6, #0\n" - " add r4, r4, #0x54\n" - " ldrb r2, [r4]\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r2\n" - " mov r3, r8\n" - " ldrb r3, [r3]\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, ip\n" - " ldrh r1, [r1, #0x4]\n" - " bl GetMonData\n" - " ldrb r2, [r4]\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r2\n" - " mov r2, r8\n" - " ldrb r2, [r2]\n" - " add r1, r1, r2\n" - " add r1, r1, r6\n" - " strb r0, [r1]\n" - " bl debug_sub_80916AC\n" - " add r0, r6, #0\n" - " add r0, r0, #0x52\n" - " strb r7, [r0]\n" - "._161:\n" - " mov r3, r9\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._162 @cond_branch\n" - " ldr r2, ._164 + 4\n" - " add r0, r6, #0\n" - " add r0, r0, #0x53\n" - " ldrb r4, [r0]\n" - " add r0, r0, #0x1\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x1\n" - " add r3, r0, r1\n" - " add r0, r3, r4\n" - " lsl r0, r0, #0x3\n" - " add r1, r0, r2\n" - " ldrh r0, [r1, #0x4]\n" - " cmp r0, #0\n" - " beq ._163 @cond_branch\n" - " ldr r0, ._164\n" - " ldrh r1, [r1, #0x4]\n" - " add r2, r4, r6\n" - " add r2, r3, r2\n" - " bl SetMonData\n" - "._163:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x52\n" - " strb r7, [r0]\n" - "._162:\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._165:\n" - " .align 2, 0\n" - "._164:\n" - " .word gPlayerParty\n" - " .word gUnknown_Debug_083C50EC\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80915BC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " ldr r0, ._168\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " mov r1, #0x0\n" - " ldr r0, ._168 + 4\n" - " mov r8, r0\n" - " ldr r7, ._168 + 8\n" - "._171:\n" - " mov r4, #0x0\n" - " lsl r0, r1, #0x1\n" - " add r6, r1, #1\n" - " add r5, r0, r1\n" - "._170:\n" - " add r0, r5, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r8\n" - " ldrh r1, [r0, #0x4]\n" - " cmp r1, #0\n" - " beq ._166 @cond_branch\n" - " ldr r0, ._168 + 12\n" - " bl GetMonData\n" - " add r1, r4, r5\n" - " add r1, r1, r7\n" - " strb r0, [r1]\n" - " b ._167\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word 0x4000010\n" - " .word gUnknown_Debug_083C50EC\n" - " .word gSharedMem\n" - " .word gPlayerParty\n" - "._166:\n" - " add r0, r4, r5\n" - " add r0, r0, r7\n" - " strb r1, [r0]\n" - "._167:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x2\n" - " bls ._170 @cond_branch\n" - " lsl r0, r6, #0x18\n" - " lsr r1, r0, #0x18\n" - " cmp r1, #0x5\n" - " bls ._171 @cond_branch\n" - " ldr r4, ._172\n" - " add r0, r4, #0\n" - " bl Text_LoadWindowTemplate\n" - " add r0, r4, #0\n" - " bl InitMenuWindow\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._172 + 4\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " mov r1, #0x4\n" - " mov r2, #0x1d\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0x12\n" - " mov r2, #0x1d\n" - " mov r3, #0x15\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x13\n" - " mov r2, #0x8a\n" - " lsl r2, r2, #0x5\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r2, ._172 + 8\n" - " add r0, r2, #0\n" - " add r0, r0, #0x53\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " add r0, r0, #0x1\n" - " strb r1, [r0]\n" - " sub r0, r0, #0x2\n" - " strb r1, [r0]\n" - " bl debug_sub_80916AC\n" - " ldr r0, ._172 + 12\n" - " bl SetVBlankCallback\n" - " ldr r0, ._172 + 16\n" - " bl SetMainCallback2\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gWindowTemplate_81E7224\n" - " .word gUnknown_Debug_083C517C\n" - " .word gSharedMem\n" - " .word debug_sub_8091320+1\n" - " .word debug_sub_8091334+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_80916AC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov r6, #0x0\n" - " ldr r0, ._177\n" - " mov sl, r0\n" - " mov r1, #0x0\n" - " mov r8, r1\n" - "._182:\n" - " ldr r2, ._177 + 4\n" - " mov r5, #0x0\n" - " lsl r0, r6, #0x1\n" - " mov r9, r0\n" - " add r1, r6, #1\n" - " str r1, [sp]\n" - "._181:\n" - " mov r0, sl\n" - " add r0, r0, #0x53\n" - " ldrb r0, [r0]\n" - " cmp r0, r5\n" - " bne ._175 @cond_branch\n" - " ldr r1, ._177 + 8\n" - " ldrb r0, [r1]\n" - " cmp r0, r6\n" - " bne ._175 @cond_branch\n" - " mov r0, #0xef\n" - " b ._176\n" - "._178:\n" - " .align 2, 0\n" - "._177:\n" - " .word gSharedMem\n" - " .word gSharedMem+0x12\n" - " .word gSharedMem+0x54\n" - "._175:\n" - " mov r0, r8\n" - " strb r0, [r2]\n" - " add r2, r2, #0x1\n" - "._176:\n" - " strb r0, [r2]\n" - " add r2, r2, #0x1\n" - " mov r1, r9\n" - " add r4, r1, r6\n" - " add r0, r4, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._183\n" - " add r0, r0, r1\n" - " ldr r1, [r0]\n" - " add r0, r2, #0\n" - " bl StringCopy\n" - " add r2, r0, #0\n" - " mov r0, r8\n" - " strb r0, [r2]\n" - " add r2, r2, #0x1\n" - " ldr r7, ._183 + 4\n" - " add r4, r5, r4\n" - " add r4, r4, r7\n" - " ldrb r1, [r4]\n" - " add r0, r2, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " add r2, r0, #0\n" - " mov r1, r8\n" - " strb r1, [r2]\n" - " add r2, r2, #0x1\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x2\n" - " bhi ._179 @cond_branch\n" - " cmp r6, #0x5\n" - " bne ._181 @cond_branch\n" - " cmp r5, #0x2\n" - " bne ._181 @cond_branch\n" - "._179:\n" - " sub r1, r2, #1\n" - " mov r0, #0xff\n" - " strb r0, [r1]\n" - " mov r2, r9\n" - " add r2, r2, #0x5\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " add r0, r7, #0\n" - " add r0, r0, #0x12\n" - " mov r1, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, [sp]\n" - " lsl r0, r1, #0x18\n" - " lsr r6, r0, #0x18\n" - " cmp r6, #0x5\n" - " bls ._182 @cond_branch\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word gUnknown_Debug_083C50EC\n" - " .word gSharedMem\n" - "\n" - ); -} - #endif diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 8451a104d..c3616797e 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -17,8639 +17,4 @@ BSS_DATA u8 gDebug_0300071F = 0; BSS_DATA u8 gDebug_03000720 = 0; BSS_DATA u8 gDebug_03000721 = 0; -__attribute__((naked)) -void InitTomomichiDebugWindow() -{ - asm( - " push {lr}\n" - " bl debug_sub_808B874\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808B868() -{ - asm( - " push {lr}\n" - " bl c2_exit_to_overworld_1_continue_scripts_restart_music\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808B874() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xd\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._1\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " ldr r0, ._1 + 4\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0xc\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._1 + 8\n" - " ldr r0, ._1 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word gUnknown_Debug_083C0CBA\n" - " .word gDebug_0300071D\n" - " .word gMenuCallback\n" - " .word debug_sub_808B8C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808B8C8() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._7\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._3 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._7 + 4\n" - " strb r0, [r1]\n" - "._3:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._4 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._7 + 4\n" - " strb r0, [r1]\n" - "._4:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._5 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._7 + 8\n" - " ldr r0, ._7 + 4\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._10\n" - "._8:\n" - " .align 2, 0\n" - "._7:\n" - " .word gMain\n" - " .word gDebug_0300071D\n" - " .word gUnknown_Debug_083C0CBA\n" - "._5:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._9 @cond_branch\n" - " mov r0, #0x0\n" - " b ._10\n" - "._9:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._10:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_ContestGraphics() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x14\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._11\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, ._11 + 4\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x4\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x13\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._11 + 8\n" - " ldr r0, ._11 + 12\n" - " str r0, [r1]\n" - " ldr r0, ._11 + 16\n" - " mov r2, #0x1\n" - " strh r2, [r0]\n" - " ldr r1, ._11 + 20\n" - " ldr r0, ._11 + 24\n" - " str r0, [r1]\n" - " ldr r0, ._11 + 28\n" - " str r4, [r0]\n" - " ldr r0, ._11 + 32\n" - " strb r2, [r0]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._12:\n" - " .align 2, 0\n" - "._11:\n" - " .word gUnknown_Debug_083C0CF4\n" - " .word gUnknown_Debug_083C0D2C\n" - " .word gMenuCallback\n" - " .word debug_sub_808BC48+1\n" - " .word gDebug_03000700\n" - " .word gDebug_03000704\n" - " .word 0x6f33\n" - " .word gDebug_03000708\n" - " .word gDebug_0300070C\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_ArtMusGraphics() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x14\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._13\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, ._13 + 4\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x4\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x13\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._13 + 8\n" - " ldr r0, ._13 + 12\n" - " str r0, [r1]\n" - " ldr r0, ._13 + 16\n" - " mov r2, #0x1\n" - " strh r2, [r0]\n" - " ldr r1, ._13 + 20\n" - " ldr r0, ._13 + 24\n" - " str r0, [r1]\n" - " ldr r0, ._13 + 28\n" - " str r4, [r0]\n" - " ldr r0, ._13 + 32\n" - " strb r2, [r0]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word gUnknown_Debug_083C0D4C\n" - " .word gUnknown_Debug_083C0D83\n" - " .word gMenuCallback\n" - " .word debug_sub_808BCBC+1\n" - " .word gDebug_03000700\n" - " .word gDebug_03000704\n" - " .word 0x6f33\n" - " .word gDebug_03000708\n" - " .word gDebug_0300070D\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_PreviewData() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x14\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._15\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, ._15 + 4\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x4\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x13\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._15 + 8\n" - " ldr r0, ._15 + 12\n" - " str r0, [r1]\n" - " ldr r0, ._15 + 16\n" - " mov r2, #0x1\n" - " strh r2, [r0]\n" - " ldr r1, ._15 + 20\n" - " ldr r0, ._15 + 24\n" - " str r0, [r1]\n" - " ldr r0, ._15 + 28\n" - " str r4, [r0]\n" - " ldr r0, ._15 + 32\n" - " strb r2, [r0]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._16:\n" - " .align 2, 0\n" - "._15:\n" - " .word gUnknown_Debug_083C0DA4\n" - " .word gUnknown_Debug_083C0DD4\n" - " .word gMenuCallback\n" - " .word debug_sub_808BD30+1\n" - " .word gDebug_03000700\n" - " .word gDebug_03000704\n" - " .word 0x6f33\n" - " .word gDebug_03000708\n" - " .word gDebug_0300070E\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_TrickHouse() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._17\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, ._17 + 4\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " ldr r0, ._17 + 8\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._17 + 12\n" - " ldr r0, ._17 + 16\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._18:\n" - " .align 2, 0\n" - "._17:\n" - " .word gUnknown_Debug_083C0DF4\n" - " .word gUnknown_Debug_083C0E15\n" - " .word gDebug_0300071E\n" - " .word gMenuCallback\n" - " .word debug_sub_808BDA4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_ControlEvents() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._19\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " ldr r0, ._19 + 4\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._19 + 8\n" - " ldr r0, ._19 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._20:\n" - " .align 2, 0\n" - "._19:\n" - " .word gUnknown_Debug_083C0E32\n" - " .word gDebug_0300071F\n" - " .word gMenuCallback\n" - " .word debug_sub_808BE2C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_ControlFlags() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._21\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " ldr r0, ._21 + 4\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._21 + 8\n" - " ldr r0, ._21 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._22:\n" - " .align 2, 0\n" - "._21:\n" - " .word gUnknown_Debug_083C0E7F\n" - " .word gDebug_03000720\n" - " .word gMenuCallback\n" - " .word debug_sub_808BEB4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_ControlWorks() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._23\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " ldr r0, ._23 + 4\n" - " ldrb r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._23 + 8\n" - " ldr r0, ._23 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._24:\n" - " .align 2, 0\n" - "._23:\n" - " .word gUnknown_Debug_083C0EF1\n" - " .word gDebug_03000721\n" - " .word gMenuCallback\n" - " .word debug_sub_808BF3C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BC48() -{ - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._25 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._26 @cond_branch\n" - " cmp r0, #0\n" - " beq ._27 @cond_branch\n" - " b ._32\n" - "._26:\n" - " cmp r0, #0x2\n" - " beq ._29 @cond_branch\n" - " b ._32\n" - "._27:\n" - " bl debug_sub_808ED0C\n" - " b ._32\n" - "._25:\n" - " bl debug_sub_808ED9C\n" - " b ._32\n" - "._29:\n" - " bl debug_sub_808EE3C\n" - "._32:\n" - " mov r0, #0x0\n" - " bl debug_sub_808EF8C\n" - " lsl r0, r4, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._36 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._34 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._35\n" - "._34:\n" - " cmp r1, #0x3\n" - " bne ._36 @cond_branch\n" - " ldr r0, ._37\n" - " ldr r1, ._37 + 4\n" - " ldr r1, [r1, #0x1c]\n" - " str r1, [r0]\n" - "._36:\n" - " mov r0, #0x0\n" - "._35:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._38:\n" - " .align 2, 0\n" - "._37:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C0D2C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BCBC() -{ - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._39 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._40 @cond_branch\n" - " cmp r0, #0\n" - " beq ._41 @cond_branch\n" - " b ._46\n" - "._40:\n" - " cmp r0, #0x2\n" - " beq ._43 @cond_branch\n" - " b ._46\n" - "._41:\n" - " bl debug_sub_808ED0C\n" - " b ._46\n" - "._39:\n" - " bl debug_sub_808ED9C\n" - " b ._46\n" - "._43:\n" - " bl debug_sub_808EE9C\n" - "._46:\n" - " mov r0, #0x1\n" - " bl debug_sub_808EF8C\n" - " lsl r0, r4, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._50 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._48 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._49\n" - "._48:\n" - " cmp r1, #0x3\n" - " bne ._50 @cond_branch\n" - " ldr r0, ._51\n" - " ldr r1, ._51 + 4\n" - " ldr r1, [r1, #0x1c]\n" - " str r1, [r0]\n" - "._50:\n" - " mov r0, #0x0\n" - "._49:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._52:\n" - " .align 2, 0\n" - "._51:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C0D83\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BD30() -{ - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._53 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._54 @cond_branch\n" - " cmp r0, #0\n" - " beq ._55 @cond_branch\n" - " b ._60\n" - "._54:\n" - " cmp r0, #0x2\n" - " beq ._57 @cond_branch\n" - " b ._60\n" - "._55:\n" - " bl debug_sub_808ED0C\n" - " b ._60\n" - "._53:\n" - " bl debug_sub_808ED9C\n" - " b ._60\n" - "._57:\n" - " bl debug_sub_808EF14\n" - "._60:\n" - " mov r0, #0x2\n" - " bl debug_sub_808EF8C\n" - " lsl r0, r4, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._64 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._62 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._63\n" - "._62:\n" - " cmp r1, #0x3\n" - " bne ._64 @cond_branch\n" - " ldr r0, ._65\n" - " ldr r1, ._65 + 4\n" - " ldr r1, [r1, #0x1c]\n" - " str r1, [r0]\n" - "._64:\n" - " mov r0, #0x0\n" - "._63:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._66:\n" - " .align 2, 0\n" - "._65:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C0DD4\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BDA4() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._71\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._67 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._71 + 4\n" - " strb r0, [r1]\n" - "._67:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._68 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._71 + 4\n" - " strb r0, [r1]\n" - "._68:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._69 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._71 + 8\n" - " ldr r0, ._71 + 4\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._74\n" - "._72:\n" - " .align 2, 0\n" - "._71:\n" - " .word gMain\n" - " .word gDebug_0300071E\n" - " .word gUnknown_Debug_083C0E15\n" - "._69:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._73 @cond_branch\n" - " mov r0, #0x0\n" - " b ._74\n" - "._73:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._74:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BE2C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._79\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._75 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._79 + 4\n" - " strb r0, [r1]\n" - "._75:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._76 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._79 + 4\n" - " strb r0, [r1]\n" - "._76:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._77 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._79 + 8\n" - " ldr r0, ._79 + 4\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._82\n" - "._80:\n" - " .align 2, 0\n" - "._79:\n" - " .word gMain\n" - " .word gDebug_0300071F\n" - " .word gUnknown_Debug_083C0E32\n" - "._77:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._81 @cond_branch\n" - " mov r0, #0x0\n" - " b ._82\n" - "._81:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._82:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BEB4() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._87\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._83 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._87 + 4\n" - " strb r0, [r1]\n" - "._83:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._84 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._87 + 4\n" - " strb r0, [r1]\n" - "._84:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._85 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._87 + 8\n" - " ldr r0, ._87 + 4\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._90\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMain\n" - " .word gDebug_03000720\n" - " .word gUnknown_Debug_083C0E7F\n" - "._85:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._89 @cond_branch\n" - " mov r0, #0x0\n" - " b ._90\n" - "._89:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._90:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BF3C() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._95\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._91 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._95 + 4\n" - " strb r0, [r1]\n" - "._91:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._92 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._95 + 4\n" - " strb r0, [r1]\n" - "._92:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._93 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._95 + 8\n" - " ldr r0, ._95 + 4\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._98\n" - "._96:\n" - " .align 2, 0\n" - "._95:\n" - " .word gMain\n" - " .word gDebug_03000721\n" - " .word gUnknown_Debug_083C0EF1\n" - "._93:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._97 @cond_branch\n" - " mov r0, #0x0\n" - " b ._98\n" - "._97:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._98:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808BFC4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._99\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._99 + 4\n" - " ldr r0, ._99 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._100:\n" - " .align 2, 0\n" - "._99:\n" - " .word gUnknown_Debug_083C0F79\n" - " .word gMenuCallback\n" - " .word debug_sub_808C064+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C014() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._101\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._101 + 4\n" - " ldr r0, ._101 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._102:\n" - " .align 2, 0\n" - "._101:\n" - " .word gUnknown_Debug_083C0FFC\n" - " .word gMenuCallback\n" - " .word debug_sub_808C0A8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C064() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._103 @cond_branch\n" - " mov r0, #0x0\n" - " b ._106\n" - "._103:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._105 @cond_branch\n" - " ldr r2, ._107\n" - " ldr r0, ._107 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._106\n" - "._108:\n" - " .align 2, 0\n" - "._107:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C0F79\n" - "._105:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._106:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C0A8() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._109 @cond_branch\n" - " mov r0, #0x0\n" - " b ._112\n" - "._109:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._111 @cond_branch\n" - " ldr r2, ._113\n" - " ldr r0, ._113 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._112\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C0FFC\n" - "._111:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._112:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C0EC() -{ - asm( - " push {lr}\n" - " ldr r0, ._115\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._116:\n" - " .align 2, 0\n" - "._115:\n" - " .word DebugScript_081C1CFE\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C104() -{ - asm( - " push {lr}\n" - " ldr r0, ._117\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._118:\n" - " .align 2, 0\n" - "._117:\n" - " .word DebugScript_081C1D07\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C11C() -{ - asm( - " push {lr}\n" - " ldr r0, ._119\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._120:\n" - " .align 2, 0\n" - "._119:\n" - " .word DebugScript_081C1D1E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C134() -{ - asm( - " push {lr}\n" - " ldr r0, ._121\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._122:\n" - " .align 2, 0\n" - "._121:\n" - " .word DebugScript_081C1D24\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C14C() -{ - asm( - " push {lr}\n" - " ldr r0, ._123\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._124:\n" - " .align 2, 0\n" - "._123:\n" - " .word DebugScript_081C1D2A\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C164() -{ - asm( - " push {lr}\n" - " ldr r0, ._125\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word DebugScript_081C1D35\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C17C() -{ - asm( - " push {lr}\n" - " ldr r0, ._127\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._128:\n" - " .align 2, 0\n" - "._127:\n" - " .word DebugScript_081C1D46\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C194() -{ - asm( - " push {lr}\n" - " ldr r0, ._129\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word DebugScript_081C221F\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C1AC() -{ - asm( - " push {lr}\n" - " ldr r0, ._131\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._132:\n" - " .align 2, 0\n" - "._131:\n" - " .word DebugScript_081C23E2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C1C4() -{ - asm( - " push {lr}\n" - " ldr r0, ._133\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word DebugScript_081C23E6\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C1DC() -{ - asm( - " push {lr}\n" - " ldr r0, ._135\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._136:\n" - " .align 2, 0\n" - "._135:\n" - " .word DebugScript_081C23F6\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C1F4() -{ - asm( - " push {lr}\n" - " ldr r0, ._137\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._138:\n" - " .align 2, 0\n" - "._137:\n" - " .word DebugScript_081C2482\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C20C() -{ - asm( - " push {lr}\n" - " ldr r0, ._139\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word DebugScript_081C23FD\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C224() -{ - asm( - " push {lr}\n" - " ldr r0, ._141\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word DebugScript_081C2518\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C23C() -{ - asm( - " push {lr}\n" - " ldr r0, ._143\n" - " bl ScriptContext1_SetupScript\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word DebugScript_081C2507\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_ContestGraphics_Show() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._145\n" - " ldr r0, ._145 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._146:\n" - " .align 2, 0\n" - "._145:\n" - " .word gMenuCallback\n" - " .word debug_sub_808C280+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C280() -{ - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._147 @cond_branch\n" - " mov r0, #0x0\n" - " b ._148\n" - "._147:\n" - " bl CloseMenu\n" - " mov r0, #0x0\n" - " bl debug_sub_808F168\n" - " ldr r0, ._149\n" - " bl SetMainCallback2\n" - " ldr r1, ._149 + 4\n" - " ldr r0, ._149 + 8\n" - " str r0, [r1, #0x8]\n" - " mov r0, #0x1\n" - "._148:\n" - " pop {r1}\n" - " bx r1\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word CB2_ContestPainting+1\n" - " .word gMain\n" - " .word debug_sub_808B868+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_MuseumGraphics_Show() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._151\n" - " ldr r0, ._151 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._152:\n" - " .align 2, 0\n" - "._151:\n" - " .word gMenuCallback\n" - " .word debug_sub_808C2E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C2E4() -{ - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._153 @cond_branch\n" - " mov r0, #0x0\n" - " b ._154\n" - "._153:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " bl debug_sub_808F168\n" - " ldr r0, ._155\n" - " bl SetMainCallback2\n" - " ldr r1, ._155 + 4\n" - " ldr r0, ._155 + 8\n" - " str r0, [r1, #0x8]\n" - " mov r0, #0x1\n" - "._154:\n" - " pop {r1}\n" - " bx r1\n" - "._156:\n" - " .align 2, 0\n" - "._155:\n" - " .word CB2_ContestPainting+1\n" - " .word gMain\n" - " .word debug_sub_808B868+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C31C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._157\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._157 + 4\n" - " ldr r0, ._157 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word gUnknown_Debug_083C2828\n" - " .word gMenuCallback\n" - " .word debug_sub_808C36C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C36C() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._159 @cond_branch\n" - " mov r0, #0x0\n" - " b ._162\n" - "._159:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._161 @cond_branch\n" - " ldr r2, ._163\n" - " ldr r0, ._163 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._162\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C2828\n" - "._161:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._162:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C3B0() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._165\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r0, ._165 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._165 + 8\n" - " ldr r0, ._165 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._166:\n" - " .align 2, 0\n" - "._165:\n" - " .word gUnknown_Debug_083C2938\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C408() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._167\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._167 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._167 + 8\n" - " ldr r0, ._167 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._168:\n" - " .align 2, 0\n" - "._167:\n" - " .word gUnknown_Debug_083C2A48\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C460() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._169\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._169 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._169 + 8\n" - " ldr r0, ._169 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._170:\n" - " .align 2, 0\n" - "._169:\n" - " .word gUnknown_Debug_083C2B4C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C4B8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._171\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._171 + 4\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._171 + 8\n" - " ldr r0, ._171 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._172:\n" - " .align 2, 0\n" - "._171:\n" - " .word gUnknown_Debug_083C2C80\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C510() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._173\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._173 + 4\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r1, ._173 + 8\n" - " ldr r0, ._173 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._174:\n" - " .align 2, 0\n" - "._173:\n" - " .word gUnknown_Debug_083C2D8C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C568() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._175\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._175 + 4\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r1, ._175 + 8\n" - " ldr r0, ._175 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word gUnknown_Debug_083C2EB0\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C5C0() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._177\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._177 + 4\n" - " mov r0, #0x6\n" - " strb r0, [r1]\n" - " ldr r1, ._177 + 8\n" - " ldr r0, ._177 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._178:\n" - " .align 2, 0\n" - "._177:\n" - " .word gUnknown_Debug_083C2FE0\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C618() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._179\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._179 + 4\n" - " mov r0, #0x7\n" - " strb r0, [r1]\n" - " ldr r1, ._179 + 8\n" - " ldr r0, ._179 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._180:\n" - " .align 2, 0\n" - "._179:\n" - " .word gUnknown_Debug_083C3100\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C670() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._181\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " ldr r1, ._181 + 4\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r1, ._181 + 8\n" - " ldr r0, ._181 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_Debug_083C3194\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808C6C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C6C8() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._186\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808C714\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808C764\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._183 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._184 @cond_branch\n" - "._183:\n" - " mov r0, #0x0\n" - " b ._185\n" - "._187:\n" - " .align 2, 0\n" - "._186:\n" - " .word gDebug_0300070F\n" - "._184:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._185:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C714() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._191\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._190 @cond_branch\n" - " ldr r0, ._191 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._189 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._190\n" - "._192:\n" - " .align 2, 0\n" - "._191:\n" - " .word gMain\n" - " .word gUnknown_Debug_83C31E6\n" - "._189:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._190:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C764() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._195\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._193 @cond_branch\n" - " ldr r0, ._195 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._194:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._194 @cond_branch\n" - "._193:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._196:\n" - " .align 2, 0\n" - "._195:\n" - " .word gUnknown_Debug_083C31DC\n" - " .word gUnknown_Debug_83C31E6\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C7C8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._197\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._197 + 4\n" - " ldr r0, ._197 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._198:\n" - " .align 2, 0\n" - "._197:\n" - " .word gUnknown_Debug_083C1CE8\n" - " .word gMenuCallback\n" - " .word debug_sub_808C818+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C818() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._199 @cond_branch\n" - " mov r0, #0x0\n" - " b ._202\n" - "._199:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._201 @cond_branch\n" - " ldr r2, ._203\n" - " ldr r0, ._203 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._202\n" - "._204:\n" - " .align 2, 0\n" - "._203:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C1CE8\n" - "._201:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._202:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C85C() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._205\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r0, ._205 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._205 + 8\n" - " ldr r0, ._205 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word gUnknown_Debug_083C1E0C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C8B4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._207\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._207 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._207 + 8\n" - " ldr r0, ._207 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._208:\n" - " .align 2, 0\n" - "._207:\n" - " .word gUnknown_Debug_083C1F38\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C90C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._209\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._209 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._209 + 8\n" - " ldr r0, ._209 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._210:\n" - " .align 2, 0\n" - "._209:\n" - " .word gUnknown_Debug_083C206C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C964() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._211\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._211 + 4\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._211 + 8\n" - " ldr r0, ._211 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gUnknown_Debug_083C2190\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808C9BC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._213\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._213 + 4\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r1, ._213 + 8\n" - " ldr r0, ._213 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word gUnknown_Debug_083C2264\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CA14() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._215\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._215 + 4\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r1, ._215 + 8\n" - " ldr r0, ._215 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._216:\n" - " .align 2, 0\n" - "._215:\n" - " .word gUnknown_Debug_083C2370\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CA6C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._217\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._217 + 4\n" - " mov r0, #0x6\n" - " strb r0, [r1]\n" - " ldr r1, ._217 + 8\n" - " ldr r0, ._217 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._218:\n" - " .align 2, 0\n" - "._217:\n" - " .word gUnknown_Debug_083C248C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CAC4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._219\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._219 + 4\n" - " mov r0, #0x7\n" - " strb r0, [r1]\n" - " ldr r1, ._219 + 8\n" - " ldr r0, ._219 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._220:\n" - " .align 2, 0\n" - "._219:\n" - " .word gUnknown_Debug_083C259C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CB1C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._221\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._221 + 4\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r1, ._221 + 8\n" - " ldr r0, ._221 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._222:\n" - " .align 2, 0\n" - "._221:\n" - " .word gUnknown_Debug_083C26C8\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CB74+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CB74() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._226\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808CBC0\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808CC10\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._223 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._224 @cond_branch\n" - "._223:\n" - " mov r0, #0x0\n" - " b ._225\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gDebug_0300070F\n" - "._224:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._225:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CBC0() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._231\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._230 @cond_branch\n" - " ldr r0, ._231 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._229 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._230\n" - "._232:\n" - " .align 2, 0\n" - "._231:\n" - " .word gMain\n" - " .word gUnknown_Debug_083C271A\n" - "._229:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._230:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CC10() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._235\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._233 @cond_branch\n" - " ldr r0, ._235 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._234:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._234 @cond_branch\n" - "._233:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._236:\n" - " .align 2, 0\n" - "._235:\n" - " .word gUnknown_Debug_083C2710\n" - " .word gUnknown_Debug_083C271A\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CC74() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._237\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " ldr r1, ._237 + 4\n" - " ldr r0, ._237 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._238:\n" - " .align 2, 0\n" - "._237:\n" - " .word gUnknown_Debug_083C1ADC\n" - " .word gMenuCallback\n" - " .word debug_sub_808CCC4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CCC4() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._239 @cond_branch\n" - " mov r0, #0x0\n" - " b ._242\n" - "._239:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._241 @cond_branch\n" - " ldr r2, ._243\n" - " ldr r0, ._243 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._242\n" - "._244:\n" - " .align 2, 0\n" - "._243:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C1ADC\n" - "._241:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._242:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CD08() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._245\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " ldr r0, ._245 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._245 + 8\n" - " ldr r0, ._245 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._246:\n" - " .align 2, 0\n" - "._245:\n" - " .word gUnknown_Debug_083C1B7C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CE10+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CD60() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._247\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._247 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._247 + 8\n" - " ldr r0, ._247 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._248:\n" - " .align 2, 0\n" - "._247:\n" - " .word gUnknown_Debug_083C1BF0\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CE10+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CDB8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._249\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl InitMenu\n" - " ldr r1, ._249 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._249 + 8\n" - " ldr r0, ._249 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._250:\n" - " .align 2, 0\n" - "._249:\n" - " .word gUnknown_Debug_083C1C2C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808CE10+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CE10() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._254\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808CE5C\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808CEAC\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._251 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._252 @cond_branch\n" - "._251:\n" - " mov r0, #0x0\n" - " b ._253\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word gDebug_0300070F\n" - "._252:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._253:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CE5C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._259\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " ldr r0, ._259 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._257 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._258\n" - "._260:\n" - " .align 2, 0\n" - "._259:\n" - " .word gMain\n" - " .word gUnknown_Debug_083C1C38\n" - "._257:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._258:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CEAC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._263\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._261 @cond_branch\n" - " ldr r0, ._263 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._262:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._262 @cond_branch\n" - "._261:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._264:\n" - " .align 2, 0\n" - "._263:\n" - " .word gUnknown_Debug_083C1C34\n" - " .word gUnknown_Debug_083C1C38\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CF10() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._265\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._265 + 4\n" - " ldr r0, ._265 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._266:\n" - " .align 2, 0\n" - "._265:\n" - " .word gUnknown_Debug_083C1330\n" - " .word gMenuCallback\n" - " .word debug_sub_808CF60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CF60() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._267 @cond_branch\n" - " mov r0, #0x0\n" - " b ._270\n" - "._267:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._269 @cond_branch\n" - " ldr r2, ._271\n" - " ldr r0, ._271 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._270\n" - "._272:\n" - " .align 2, 0\n" - "._271:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C1330\n" - "._269:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._270:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CFA4() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._273\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " ldr r0, ._273 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._273 + 8\n" - " ldr r0, ._273 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._274:\n" - " .align 2, 0\n" - "._273:\n" - " .word gUnknown_Debug_083C13D8\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808CFFC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._275\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._275 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._275 + 8\n" - " ldr r0, ._275 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._276:\n" - " .align 2, 0\n" - "._275:\n" - " .word gUnknown_Debug_083C1465\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D054() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._277\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._277 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._277 + 8\n" - " ldr r0, ._277 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._278:\n" - " .align 2, 0\n" - "._277:\n" - " .word gUnknown_Debug_083C1503\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D0AC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._279\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._279 + 4\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._279 + 8\n" - " ldr r0, ._279 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._280:\n" - " .align 2, 0\n" - "._279:\n" - " .word gUnknown_Debug_083C158A\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D104() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._281\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._281 + 4\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r1, ._281 + 8\n" - " ldr r0, ._281 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._282:\n" - " .align 2, 0\n" - "._281:\n" - " .word gUnknown_Debug_083C1647\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D15C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._283\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._283 + 4\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r1, ._283 + 8\n" - " ldr r0, ._283 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._284:\n" - " .align 2, 0\n" - "._283:\n" - " .word gUnknown_Debug_083C1712\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D1B4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._285\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._285 + 4\n" - " mov r0, #0x6\n" - " strb r0, [r1]\n" - " ldr r1, ._285 + 8\n" - " ldr r0, ._285 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._286:\n" - " .align 2, 0\n" - "._285:\n" - " .word gUnknown_Debug_083C17F8\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D20C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._287\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._287 + 4\n" - " mov r0, #0x7\n" - " strb r0, [r1]\n" - " ldr r1, ._287 + 8\n" - " ldr r0, ._287 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._288:\n" - " .align 2, 0\n" - "._287:\n" - " .word gUnknown_Debug_083C18B8\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D264() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._289\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl InitMenu\n" - " ldr r1, ._289 + 4\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r1, ._289 + 8\n" - " ldr r0, ._289 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._290:\n" - " .align 2, 0\n" - "._289:\n" - " .word gDebug_0x83C1974\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D2BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D2BC() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._294\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808D308\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808D358\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._291 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._292 @cond_branch\n" - "._291:\n" - " mov r0, #0x0\n" - " b ._293\n" - "._295:\n" - " .align 2, 0\n" - "._294:\n" - " .word gDebug_0300070F\n" - "._292:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._293:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D308() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._299\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._298 @cond_branch\n" - " ldr r0, ._299 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._297 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._298\n" - "._300:\n" - " .align 2, 0\n" - "._299:\n" - " .word gMain\n" - " .word gUnknown_Debug_083C19C6\n" - "._297:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._298:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D358() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._303\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._301 @cond_branch\n" - " ldr r0, ._303 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._302:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._302 @cond_branch\n" - "._301:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._304:\n" - " .align 2, 0\n" - "._303:\n" - " .word gUnknown_Debug_083C19BC\n" - " .word gUnknown_Debug_083C19C6\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D3BC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._305\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._305 + 4\n" - " ldr r0, ._305 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._306:\n" - " .align 2, 0\n" - "._305:\n" - " .word gUnknown_Debug_083C105C\n" - " .word gMenuCallback\n" - " .word debug_sub_808D40C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D40C() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._307 @cond_branch\n" - " mov r0, #0x0\n" - " b ._310\n" - "._307:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._309 @cond_branch\n" - " ldr r2, ._311\n" - " ldr r0, ._311 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._310\n" - "._312:\n" - " .align 2, 0\n" - "._311:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C105C\n" - "._309:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._310:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D450() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._313\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r0, ._313 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._313 + 8\n" - " ldr r0, ._313 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._314:\n" - " .align 2, 0\n" - "._313:\n" - " .word gUnknown_Debug_083C10BD\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D500+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D4A8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._315\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._315 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._315 + 8\n" - " ldr r0, ._315 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word gUnknown_Debug_083C1149\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D500+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D500() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._320\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808D54C\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808D59C\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._317 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._318 @cond_branch\n" - "._317:\n" - " mov r0, #0x0\n" - " b ._319\n" - "._321:\n" - " .align 2, 0\n" - "._320:\n" - " .word gDebug_0300070F\n" - "._318:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._319:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D54C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._325\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._324 @cond_branch\n" - " ldr r0, ._325 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._323 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._324\n" - "._326:\n" - " .align 2, 0\n" - "._325:\n" - " .word gMain\n" - " .word gUnknown_Debug_083C1196\n" - "._323:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._324:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D59C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._329\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._327 @cond_branch\n" - " ldr r0, ._329 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._328:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._328 @cond_branch\n" - "._327:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._330:\n" - " .align 2, 0\n" - "._329:\n" - " .word gUnknown_Debug_083C1194\n" - " .word gUnknown_Debug_083C1196\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D600() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._331\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._331 + 4\n" - " ldr r0, ._331 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gUnknown_Debug_083C11CC\n" - " .word gMenuCallback\n" - " .word debug_sub_808D650+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D650() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._333 @cond_branch\n" - " mov r0, #0x0\n" - " b ._336\n" - "._333:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._335 @cond_branch\n" - " ldr r2, ._337\n" - " ldr r0, ._337 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._336\n" - "._338:\n" - " .align 2, 0\n" - "._337:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C11CC\n" - "._335:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._336:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D694() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._339\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r0, ._339 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._339 + 8\n" - " ldr r0, ._339 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._340:\n" - " .align 2, 0\n" - "._339:\n" - " .word gUnknown_Debug_083C1212\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D744+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D6EC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._341\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._341 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._341 + 8\n" - " ldr r0, ._341 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._342:\n" - " .align 2, 0\n" - "._341:\n" - " .word gUnknown_Debug_083C1288\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D744+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D744() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._346\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808D790\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808D7E0\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._343 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._344 @cond_branch\n" - "._343:\n" - " mov r0, #0x0\n" - " b ._345\n" - "._347:\n" - " .align 2, 0\n" - "._346:\n" - " .word gDebug_0300070F\n" - "._344:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._345:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D790() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._351\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._350 @cond_branch\n" - " ldr r0, ._351 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._349 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._350\n" - "._352:\n" - " .align 2, 0\n" - "._351:\n" - " .word gMain\n" - " .word gUnknown_Debug_083C12D2\n" - "._349:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._350:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D7E0() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._355\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._353 @cond_branch\n" - " ldr r0, ._355 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._354:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._354 @cond_branch\n" - "._353:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word gUnknown_Debug_083C12D0\n" - " .word gUnknown_Debug_083C12D2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D844() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1c\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._357\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1b\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl InitMenu\n" - " ldr r1, ._357 + 4\n" - " ldr r0, ._357 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._358:\n" - " .align 2, 0\n" - "._357:\n" - " .word gUnknown_Debug_083C1A78\n" - " .word gMenuCallback\n" - " .word debug_sub_808D894+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D894() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r3, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r3, r0\n" - " bne ._359 @cond_branch\n" - " mov r0, #0x0\n" - " b ._362\n" - "._359:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r3, r0\n" - " beq ._361 @cond_branch\n" - " ldr r2, ._363\n" - " ldr r1, ._363 + 4\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0, #0x4]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._362\n" - "._364:\n" - " .align 2, 0\n" - "._363:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C1A78\n" - "._361:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._362:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D8D8() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._365\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r0, ._365 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._365 + 8\n" - " ldr r0, ._365 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._366:\n" - " .align 2, 0\n" - "._365:\n" - " .word gUnknown_Debug_083C1A9C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808D930+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D930() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._370\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808D97C\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808D9CC\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._367 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._368 @cond_branch\n" - "._367:\n" - " mov r0, #0x0\n" - " b ._369\n" - "._371:\n" - " .align 2, 0\n" - "._370:\n" - " .word gDebug_0300070F\n" - "._368:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._369:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D97C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._375\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._374 @cond_branch\n" - " ldr r0, ._375 + 4\n" - " lsl r1, r2, #0x3\n" - " add r1, r1, r2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r0\n" - " ldrh r4, [r1]\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._373 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._374\n" - "._376:\n" - " .align 2, 0\n" - "._375:\n" - " .word gMain\n" - " .word gUnknown_Debug_083C1AAE\n" - "._373:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - "._374:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808D9CC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._379\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._377 @cond_branch\n" - " ldr r0, ._379 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._378:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " neg r2, r0\n" - " orr r2, r2, r0\n" - " lsr r2, r2, #0x1f\n" - " mov r0, #0x1c\n" - " add r1, r4, #0\n" - " bl debug_sub_808F2E0\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._378 @cond_branch\n" - "._377:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._380:\n" - " .align 2, 0\n" - "._379:\n" - " .word gUnknown_Debug_083C1AAC\n" - " .word gUnknown_Debug_083C1AAE\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DA30() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._381\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl InitMenu\n" - " ldr r1, ._381 + 4\n" - " ldr r0, ._381 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._382:\n" - " .align 2, 0\n" - "._381:\n" - " .word gUnknown_Debug_083C103A\n" - " .word gMenuCallback\n" - " .word debug_sub_808DA80+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DA80() -{ - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " bl debug_sub_808DAD4\n" - " bl debug_sub_808DABC\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._383 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._384 @cond_branch\n" - "._383:\n" - " mov r0, #0x0\n" - " b ._385\n" - "._384:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._385:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DABC() -{ - asm( - " push {lr}\n" - " ldr r0, ._386\n" - " ldrh r2, [r0]\n" - " mov r0, #0x18\n" - " mov r1, #0x1\n" - " bl debug_sub_808F31C\n" - " pop {r0}\n" - " bx r0\n" - "._387:\n" - " .align 2, 0\n" - "._386:\n" - " .word gSpecialVar_Result\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DAD4() -{ - asm( - " push {lr}\n" - " ldr r0, ._390\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._388 @cond_branch\n" - " mov r2, #0x1\n" - " b ._389\n" - "._391:\n" - " .align 2, 0\n" - "._390:\n" - " .word gMain\n" - "._388:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._392 @cond_branch\n" - " ldr r2, ._393\n" - "._389:\n" - " ldr r1, ._393 + 4\n" - " ldrh r0, [r1]\n" - " add r0, r2, r0\n" - " strh r0, [r1]\n" - "._392:\n" - " pop {r0}\n" - " bx r0\n" - "._394:\n" - " .align 2, 0\n" - "._393:\n" - " .word 0xffff\n" - " .word gSpecialVar_Result\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DB0C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._395\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._395 + 4\n" - " ldr r0, ._395 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._396:\n" - " .align 2, 0\n" - "._395:\n" - " .word gUnknown_Debug_083C3D08\n" - " .word gMenuCallback\n" - " .word debug_sub_808DB5C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DB5C() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._397 @cond_branch\n" - " mov r0, #0x0\n" - " b ._400\n" - "._397:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._399 @cond_branch\n" - " ldr r2, ._401\n" - " ldr r0, ._401 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._400\n" - "._402:\n" - " .align 2, 0\n" - "._401:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C3D08\n" - "._399:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._400:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DBA0() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._403\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " ldr r0, ._403 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._403 + 8\n" - " ldr r0, ._403 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._404:\n" - " .align 2, 0\n" - "._403:\n" - " .word gUnknown_Debug_083C432C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DBF8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._405\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._405 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._405 + 8\n" - " ldr r0, ._405 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._406:\n" - " .align 2, 0\n" - "._405:\n" - " .word gUnknown_Debug_083C436C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DC50() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._407\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._407 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._407 + 8\n" - " ldr r0, ._407 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._408:\n" - " .align 2, 0\n" - "._407:\n" - " .word gUnknown_Debug_083C43B4\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DCA8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._409\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._409 + 4\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._409 + 8\n" - " ldr r0, ._409 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._410:\n" - " .align 2, 0\n" - "._409:\n" - " .word gUnknown_Debug_083C43FC\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DD00() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._411\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._411 + 4\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r1, ._411 + 8\n" - " ldr r0, ._411 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._412:\n" - " .align 2, 0\n" - "._411:\n" - " .word gUnknown_Debug_083C4444\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DD58() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._413\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._413 + 4\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r1, ._413 + 8\n" - " ldr r0, ._413 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._414:\n" - " .align 2, 0\n" - "._413:\n" - " .word gUnknown_Debug_083C448C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DDB0() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._415\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._415 + 4\n" - " mov r0, #0x6\n" - " strb r0, [r1]\n" - " ldr r1, ._415 + 8\n" - " ldr r0, ._415 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._416:\n" - " .align 2, 0\n" - "._415:\n" - " .word gUnknown_Debug_83C44C4\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DE08() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._417\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._417 + 4\n" - " mov r0, #0x7\n" - " strb r0, [r1]\n" - " ldr r1, ._417 + 8\n" - " ldr r0, ._417 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._418:\n" - " .align 2, 0\n" - "._417:\n" - " .word gUnknown_Debug_83C44EC\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DE60() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._419\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._419 + 4\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r1, ._419 + 8\n" - " ldr r0, ._419 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._420:\n" - " .align 2, 0\n" - "._419:\n" - " .word gUnknown_Debug_083C4534\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808DEB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DEB8() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._424\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808DF64\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808DF04\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._421 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._422 @cond_branch\n" - "._421:\n" - " mov r0, #0x0\n" - " b ._423\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gDebug_0300070F\n" - "._422:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._423:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DF04() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._428\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._426 @cond_branch\n" - " ldr r0, ._428 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._427:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl VarGet\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x10\n" - " lsr r2, r2, #0x10\n" - " mov r0, #0x18\n" - " add r1, r4, #0\n" - " bl debug_sub_808F31C\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._427 @cond_branch\n" - "._426:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._429:\n" - " .align 2, 0\n" - "._428:\n" - " .word gUnknown_Debug_083C457C\n" - " .word gUnknown_Debug_083C4586\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DF64() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._432\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._430 @cond_branch\n" - " mov r5, #0x1\n" - " b ._431\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gMain\n" - "._430:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._434 @cond_branch\n" - " ldr r5, ._435\n" - "._431:\n" - " ldr r1, ._435 + 4\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrh r4, [r0]\n" - " add r0, r4, #0\n" - " bl VarGet\n" - " add r1, r0, #0\n" - " add r1, r5, r1\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " bl VarSet\n" - "._434:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._436:\n" - " .align 2, 0\n" - "._435:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_083C4586\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808DFC0() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._437\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._437 + 4\n" - " ldr r0, ._437 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._438:\n" - " .align 2, 0\n" - "._437:\n" - " .word gUnknown_Debug_083C377C\n" - " .word gMenuCallback\n" - " .word debug_sub_808E010+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E010() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._439 @cond_branch\n" - " mov r0, #0x0\n" - " b ._442\n" - "._439:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._441 @cond_branch\n" - " ldr r2, ._443\n" - " ldr r0, ._443 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._442\n" - "._444:\n" - " .align 2, 0\n" - "._443:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C377C\n" - "._441:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._442:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E054() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._445\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r0, ._445 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._445 + 8\n" - " ldr r0, ._445 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._446:\n" - " .align 2, 0\n" - "._445:\n" - " .word gUnknown_Debug_083C3AA0\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E264+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E0AC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._447\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl InitMenu\n" - " ldr r1, ._447 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._447 + 8\n" - " ldr r0, ._447 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._448:\n" - " .align 2, 0\n" - "._447:\n" - " .word gUnknown_Debug_83C3AE0\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E264+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E104() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._449\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._449 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._449 + 8\n" - " ldr r0, ._449 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._450:\n" - " .align 2, 0\n" - "._449:\n" - " .word gUnknown_Debug_83C3B28\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E264+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E15C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._451\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._451 + 4\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._451 + 8\n" - " ldr r0, ._451 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._452:\n" - " .align 2, 0\n" - "._451:\n" - " .word gUnknown_Debug_83C3B70\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E264+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E1B4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._453\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._453 + 4\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r1, ._453 + 8\n" - " ldr r0, ._453 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._454:\n" - " .align 2, 0\n" - "._453:\n" - " .word gUnknown_Debug_83C3BB8\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E264+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E20C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._455\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._455 + 4\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r1, ._455 + 8\n" - " ldr r0, ._455 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._456:\n" - " .align 2, 0\n" - "._455:\n" - " .word gUnknown_Debug_83C3C00\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E264+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E264() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._460\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808E310\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808E2B0\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._457 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._458 @cond_branch\n" - "._457:\n" - " mov r0, #0x0\n" - " b ._459\n" - "._461:\n" - " .align 2, 0\n" - "._460:\n" - " .word gDebug_0300070F\n" - "._458:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._459:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E2B0() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._464\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._462 @cond_branch\n" - " ldr r0, ._464 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._463:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl VarGet\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x10\n" - " lsr r2, r2, #0x10\n" - " mov r0, #0x18\n" - " add r1, r4, #0\n" - " bl debug_sub_808F31C\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._463 @cond_branch\n" - "._462:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._465:\n" - " .align 2, 0\n" - "._464:\n" - " .word gUnknown_Debug_083C3C48\n" - " .word gUnknown_Debug_83C3C4E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E310() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._468\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._466 @cond_branch\n" - " mov r5, #0x1\n" - " b ._467\n" - "._469:\n" - " .align 2, 0\n" - "._468:\n" - " .word gMain\n" - "._466:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._470 @cond_branch\n" - " ldr r5, ._471\n" - "._467:\n" - " ldr r1, ._471 + 4\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrh r4, [r0]\n" - " add r0, r4, #0\n" - " bl VarGet\n" - " add r1, r0, #0\n" - " add r1, r5, r1\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " bl VarSet\n" - "._470:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._472:\n" - " .align 2, 0\n" - "._471:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_83C3C4E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E36C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._473\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl InitMenu\n" - " ldr r1, ._473 + 4\n" - " ldr r0, ._473 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._474:\n" - " .align 2, 0\n" - "._473:\n" - " .word gUnknown_Debug_083C32AC\n" - " .word gMenuCallback\n" - " .word debug_sub_808E3BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E3BC() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._475 @cond_branch\n" - " mov r0, #0x0\n" - " b ._478\n" - "._475:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._477 @cond_branch\n" - " ldr r2, ._479\n" - " ldr r0, ._479 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._478\n" - "._480:\n" - " .align 2, 0\n" - "._479:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C32AC\n" - "._477:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._478:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E400() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._481\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl InitMenu\n" - " ldr r0, ._481 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._481 + 8\n" - " ldr r0, ._481 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._482:\n" - " .align 2, 0\n" - "._481:\n" - " .word gUnknown_Debug_083C347C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E5B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E458() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._483\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._483 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._483 + 8\n" - " ldr r0, ._483 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word gUnknown_Debug_083C3494\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E5B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E4B0() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._485\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x6\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x6\n" - " bl InitMenu\n" - " ldr r1, ._485 + 4\n" - " mov r0, #0x2\n" - " strb r0, [r1]\n" - " ldr r1, ._485 + 8\n" - " ldr r0, ._485 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._486:\n" - " .align 2, 0\n" - "._485:\n" - " .word gUnknown_Debug_083C34A4\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E5B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E508() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._487\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r1, ._487 + 4\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._487 + 8\n" - " ldr r0, ._487 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gUnknown_Debug_083C34D4\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E5B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E560() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._489\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x5\n" - " bl InitMenu\n" - " ldr r1, ._489 + 4\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r1, ._489 + 8\n" - " ldr r0, ._489 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word gUnknown_Debug_083C351C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E5B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E5B8() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._494\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808E604\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808E660\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._491 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._492 @cond_branch\n" - "._491:\n" - " mov r0, #0x0\n" - " b ._493\n" - "._495:\n" - " .align 2, 0\n" - "._494:\n" - " .word gDebug_0300070F\n" - "._492:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._493:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E604() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._498\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._496 @cond_branch\n" - " mov r5, #0x1\n" - " b ._497\n" - "._499:\n" - " .align 2, 0\n" - "._498:\n" - " .word gMain\n" - "._496:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._500 @cond_branch\n" - " ldr r5, ._501\n" - "._497:\n" - " ldr r1, ._501 + 4\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrh r4, [r0]\n" - " add r0, r4, #0\n" - " bl VarGet\n" - " add r1, r0, #0\n" - " add r1, r5, r1\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " bl VarSet\n" - "._500:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._502:\n" - " .align 2, 0\n" - "._501:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_083C354A\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E660() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._505\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._503 @cond_branch\n" - " ldr r0, ._505 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._504:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl VarGet\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x10\n" - " lsr r2, r2, #0x10\n" - " mov r0, #0x18\n" - " add r1, r4, #0\n" - " bl debug_sub_808F31C\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._504 @cond_branch\n" - "._503:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._506:\n" - " .align 2, 0\n" - "._505:\n" - " .word gUnknown_Debug_083C3544\n" - " .word gUnknown_Debug_083C354A\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E6C0() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._507\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._507 + 4\n" - " ldr r0, ._507 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._508:\n" - " .align 2, 0\n" - "._507:\n" - " .word gUnknown_Debug_083C4644\n" - " .word gMenuCallback\n" - " .word debug_sub_808E710+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E710() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._509 @cond_branch\n" - " mov r0, #0x0\n" - " b ._512\n" - "._509:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._511 @cond_branch\n" - " ldr r2, ._513\n" - " ldr r0, ._513 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._512\n" - "._514:\n" - " .align 2, 0\n" - "._513:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C4644\n" - "._511:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._512:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E754() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._515\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r0, ._515 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._515 + 8\n" - " ldr r0, ._515 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gUnknown_Debug_083C470C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E804+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E7AC() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._517\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._517 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._517 + 8\n" - " ldr r0, ._517 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._518:\n" - " .align 2, 0\n" - "._517:\n" - " .word gUnknown_Debug_083C4754C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808E804+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E804() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._522\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808E850\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808E8AC\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._519 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._520 @cond_branch\n" - "._519:\n" - " mov r0, #0x0\n" - " b ._521\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word gDebug_0300070F\n" - "._520:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._521:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E850() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._526\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._524 @cond_branch\n" - " mov r5, #0x1\n" - " b ._525\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word gMain\n" - "._524:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._528 @cond_branch\n" - " ldr r5, ._529\n" - "._525:\n" - " ldr r1, ._529 + 4\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrh r4, [r0]\n" - " add r0, r4, #0\n" - " bl VarGet\n" - " add r1, r0, #0\n" - " add r1, r5, r1\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " bl VarSet\n" - "._528:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._530:\n" - " .align 2, 0\n" - "._529:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_083C478E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E8AC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._533\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._531 @cond_branch\n" - " ldr r0, ._533 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._532:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl VarGet\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x10\n" - " lsr r2, r2, #0x10\n" - " mov r0, #0x18\n" - " add r1, r4, #0\n" - " bl debug_sub_808F31C\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._532 @cond_branch\n" - "._531:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._534:\n" - " .align 2, 0\n" - "._533:\n" - " .word gUnknown_Debug_083C478C\n" - " .word gUnknown_Debug_083C478E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E90C() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x18\n" - " mov r3, #0x5\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._535\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x2\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x17\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x2\n" - " bl InitMenu\n" - " ldr r1, ._535 + 4\n" - " ldr r0, ._535 + 8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._536:\n" - " .align 2, 0\n" - "._535:\n" - " .word gUnknown_Debug_083C35C4\n" - " .word gMenuCallback\n" - " .word debug_sub_808E95C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E95C() -{ - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bne ._537 @cond_branch\n" - " mov r0, #0x0\n" - " b ._540\n" - "._537:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._539 @cond_branch\n" - " ldr r2, ._541\n" - " ldr r0, ._541 + 4\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " mov r0, #0x0\n" - " b ._540\n" - "._542:\n" - " .align 2, 0\n" - "._541:\n" - " .word gMenuCallback\n" - " .word gUnknown_Debug_083C35C4\n" - "._539:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._540:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E9A0() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._543\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " bl Menu_PrintItems\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " ldr r0, ._543 + 4\n" - " strb r4, [r0]\n" - " ldr r1, ._543 + 8\n" - " ldr r0, ._543 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._544:\n" - " .align 2, 0\n" - "._543:\n" - " .word gUnknown_Debug_083C369C\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808EA50+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808E9F8() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._545\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x1c\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x7\n" - " bl InitMenu\n" - " ldr r1, ._545 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._545 + 8\n" - " ldr r0, ._545 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._546:\n" - " .align 2, 0\n" - "._545:\n" - " .word gUnknown_Debug_083C36E4\n" - " .word gDebug_0300070F\n" - " .word gMenuCallback\n" - " .word debug_sub_808EA50+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EA50() -{ - asm( - " push {r4, r5, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " add r1, r0, #0\n" - " ldr r5, ._550\n" - " ldrb r0, [r5]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " bl debug_sub_808EAFC\n" - " ldrb r0, [r5]\n" - " bl debug_sub_808EA9C\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._547 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._548 @cond_branch\n" - "._547:\n" - " mov r0, #0x0\n" - " b ._549\n" - "._551:\n" - " .align 2, 0\n" - "._550:\n" - " .word gDebug_0300070F\n" - "._548:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._549:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EA9C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " mov r5, #0x0\n" - " ldr r0, ._554\n" - " add r0, r1, r0\n" - " ldrb r2, [r0]\n" - " cmp r5, r2\n" - " bcs ._552 @cond_branch\n" - " ldr r0, ._554 + 4\n" - " mov r8, r0\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r7, r0, #0x1\n" - " add r6, r2, #0\n" - "._553:\n" - " lsl r0, r5, #0x1\n" - " add r4, r0, #1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " add r0, r0, r7\n" - " add r0, r0, r8\n" - " ldrh r0, [r0]\n" - " bl VarGet\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x10\n" - " lsr r2, r2, #0x10\n" - " mov r0, #0x18\n" - " add r1, r4, #0\n" - " bl debug_sub_808F31C\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, r6\n" - " bcc ._553 @cond_branch\n" - "._552:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._555:\n" - " .align 2, 0\n" - "._554:\n" - " .word gUnknown_Debug_083C371C\n" - " .word gUnknown_Debug_083C371E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EAFC() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " ldr r0, ._558\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._556 @cond_branch\n" - " mov r5, #0x1\n" - " b ._557\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word gMain\n" - "._556:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._560 @cond_branch\n" - " ldr r5, ._561\n" - "._557:\n" - " ldr r1, ._561 + 4\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r1\n" - " ldrh r4, [r0]\n" - " add r0, r4, #0\n" - " bl VarGet\n" - " add r1, r0, #0\n" - " add r1, r5, r1\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " bl VarSet\n" - "._560:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._562:\n" - " .align 2, 0\n" - "._561:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_083C371E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EB58() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xc\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._563\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, ._563 + 4\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x8\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xb\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " ldr r1, ._563 + 8\n" - " ldr r0, ._563 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word gUnknown_Debug_083C47B2\n" - " .word gUnknown_Debug_083C47F0\n" - " .word gMenuCallback\n" - " .word debug_sub_808EC10+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EBB4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xd\n" - " mov r3, #0xd\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._565\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r3, ._565 + 4\n" - " mov r0, #0x2\n" - " mov r1, #0x3\n" - " mov r2, #0x5\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0xc\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x5\n" - " bl InitMenu\n" - " ldr r1, ._565 + 8\n" - " ldr r0, ._565 + 12\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gUnknown_Debug_083C4830\n" - " .word gUnknown_Debug_083C4888\n" - " .word gMenuCallback\n" - " .word debug_sub_808EC5C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EC10() -{ - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._568 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._568 @cond_branch\n" - " ldr r1, ._570\n" - " lsl r0, r2, #0x18\n" - " asr r0, r0, #0x18\n" - " ldr r2, ._570 + 4\n" - " add r1, r1, r2\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._569\n" - "._571:\n" - " .align 2, 0\n" - "._570:\n" - " .word gSaveBlock1\n" - " .word 0x13c8\n" - "._568:\n" - " mov r0, #0x0\n" - "._569:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EC5C() -{ - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._573 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._573 @cond_branch\n" - " ldr r0, ._575\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x8\n" - " lsr r1, r1, #0x10\n" - " bl VarSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._574\n" - "._576:\n" - " .align 2, 0\n" - "._575:\n" - " .word 0x40a7\n" - "._573:\n" - " mov r0, #0x0\n" - "._574:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808ECA4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._577\n" - " ldr r0, ._577 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x4\n" - " pop {r1}\n" - " bx r1\n" - "._578:\n" - " .align 2, 0\n" - "._577:\n" - " .word gMenuCallback\n" - " .word debug_sub_808ECD0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808ECD0() -{ - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._579 @cond_branch\n" - " mov r0, #0x0\n" - " b ._580\n" - "._579:\n" - " bl CloseMenu\n" - " mov r0, #0x2\n" - " bl debug_sub_808F168\n" - " ldr r0, ._581\n" - " bl SetMainCallback2\n" - " ldr r1, ._581 + 4\n" - " ldr r0, ._581 + 8\n" - " str r0, [r1, #0x8]\n" - " mov r0, #0x1\n" - "._580:\n" - " pop {r1}\n" - " bx r1\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word CB2_ContestPainting+1\n" - " .word gMain\n" - " .word debug_sub_808B868+1\n" - "\n" - ); -} - -__attribute__((naked)) -void TomomichiDebugMenu_Config() -{ - asm( - " mov r0, #0x0\n" - " bx lr\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808ED0C() -{ - asm( - " push {lr}\n" - " ldr r2, ._590\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._584 @cond_branch\n" - " ldr r1, ._590 + 4\n" - " ldrh r0, [r1]\n" - " cmp r0, #0x1\n" - " beq ._584 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1]\n" - "._584:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._586 @cond_branch\n" - " ldr r3, ._590 + 4\n" - " ldrh r1, [r3]\n" - " ldr r0, ._590 + 8\n" - " cmp r1, r0\n" - " beq ._586 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r3]\n" - "._586:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._587 @cond_branch\n" - " ldr r1, ._590 + 4\n" - " ldrh r0, [r1]\n" - " cmp r0, #0xa\n" - " bls ._588 @cond_branch\n" - " sub r0, r0, #0xa\n" - " b ._589\n" - "._591:\n" - " .align 2, 0\n" - "._590:\n" - " .word gMain\n" - " .word gDebug_03000700\n" - " .word 0x19b\n" - "._588:\n" - " mov r0, #0x1\n" - "._589:\n" - " strh r0, [r1]\n" - "._587:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._592 @cond_branch\n" - " ldr r2, ._595\n" - " ldrh r1, [r2]\n" - " ldr r0, ._595 + 4\n" - " cmp r1, r0\n" - " bhi ._593 @cond_branch\n" - " add r0, r1, #0\n" - " add r0, r0, #0xa\n" - " b ._594\n" - "._596:\n" - " .align 2, 0\n" - "._595:\n" - " .word gDebug_03000700\n" - " .word 0x191\n" - "._593:\n" - " ldr r1, ._597\n" - " add r0, r1, #0\n" - "._594:\n" - " strh r0, [r2]\n" - "._592:\n" - " pop {r0}\n" - " bx r0\n" - "._598:\n" - " .align 2, 0\n" - "._597:\n" - " .word 0x19b\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808ED9C() -{ - asm( - " push {lr}\n" - " ldr r2, ._606\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._600 @cond_branch\n" - " ldr r1, ._606 + 4\n" - " ldr r0, [r1]\n" - " cmp r0, #0\n" - " beq ._600 @cond_branch\n" - " sub r0, r0, #0x1\n" - " str r0, [r1]\n" - "._600:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._602 @cond_branch\n" - " ldr r3, ._606 + 4\n" - " ldr r1, [r3]\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._602 @cond_branch\n" - " add r0, r1, #1\n" - " str r0, [r3]\n" - "._602:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._603 @cond_branch\n" - " ldr r1, ._606 + 4\n" - " ldr r0, [r1]\n" - " cmp r0, #0xf\n" - " bls ._604 @cond_branch\n" - " sub r0, r0, #0x10\n" - " b ._605\n" - "._607:\n" - " .align 2, 0\n" - "._606:\n" - " .word gMain\n" - " .word gDebug_03000708\n" - "._604:\n" - " mov r0, #0x0\n" - "._605:\n" - " str r0, [r1]\n" - "._603:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._608 @cond_branch\n" - " ldr r3, ._611\n" - " ldr r1, [r3]\n" - " mov r0, #0x11\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " bhi ._609 @cond_branch\n" - " add r0, r1, #0\n" - " add r0, r0, #0x10\n" - " b ._610\n" - "._612:\n" - " .align 2, 0\n" - "._611:\n" - " .word gDebug_03000708\n" - "._609:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - "._610:\n" - " str r0, [r3]\n" - "._608:\n" - " ldrh r2, [r2, #0x2e]\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x2\n" - " add r0, r1, #0\n" - " and r0, r0, r2\n" - " cmp r0, r1\n" - " bne ._613 @cond_branch\n" - " ldr r1, ._614\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " str r0, [r1]\n" - "._613:\n" - " pop {r0}\n" - " bx r0\n" - "._615:\n" - " .align 2, 0\n" - "._614:\n" - " .word gDebug_03000708\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EE3C() -{ - asm( - " push {lr}\n" - " ldr r2, ._622\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._617 @cond_branch\n" - " ldr r1, ._622 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x1\n" - " beq ._617 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._617:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._619 @cond_branch\n" - " ldr r1, ._622 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x5\n" - " beq ._619 @cond_branch\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._619:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._620 @cond_branch\n" - " ldr r1, ._622 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - "._620:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._621 @cond_branch\n" - " ldr r1, ._622 + 4\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - "._621:\n" - " pop {r0}\n" - " bx r0\n" - "._623:\n" - " .align 2, 0\n" - "._622:\n" - " .word gMain\n" - " .word gDebug_0300070C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EE9C() -{ - asm( - " push {lr}\n" - " ldr r2, ._631\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._625 @cond_branch\n" - " ldr r1, ._631 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x1\n" - " beq ._625 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._625:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._627 @cond_branch\n" - " ldr r1, ._631 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0xf\n" - " beq ._627 @cond_branch\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._627:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._628 @cond_branch\n" - " ldr r1, ._631 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0xa\n" - " bls ._629 @cond_branch\n" - " sub r0, r0, #0xa\n" - " b ._630\n" - "._632:\n" - " .align 2, 0\n" - "._631:\n" - " .word gMain\n" - " .word gDebug_0300070D\n" - "._629:\n" - " mov r0, #0x0\n" - "._630:\n" - " strb r0, [r1]\n" - "._628:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._633 @cond_branch\n" - " ldr r1, ._636\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x5\n" - " bhi ._634 @cond_branch\n" - " add r0, r0, #0xa\n" - " b ._635\n" - "._637:\n" - " .align 2, 0\n" - "._636:\n" - " .word gDebug_0300070D\n" - "._634:\n" - " mov r0, #0xf\n" - "._635:\n" - " strb r0, [r1]\n" - "._633:\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EF14() -{ - asm( - " push {lr}\n" - " ldr r2, ._645\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._639 @cond_branch\n" - " ldr r1, ._645 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x1\n" - " beq ._639 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._639:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._641 @cond_branch\n" - " ldr r1, ._645 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0xf\n" - " beq ._641 @cond_branch\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._641:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " ldr r1, ._645 + 4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0xa\n" - " bls ._643 @cond_branch\n" - " sub r0, r0, #0xa\n" - " b ._644\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word gMain\n" - " .word gDebug_0300070E\n" - "._643:\n" - " mov r0, #0x0\n" - "._644:\n" - " strb r0, [r1]\n" - "._642:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._647 @cond_branch\n" - " ldr r1, ._650\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x5\n" - " bhi ._648 @cond_branch\n" - " add r0, r0, #0xa\n" - " b ._649\n" - "._651:\n" - " .align 2, 0\n" - "._650:\n" - " .word gDebug_0300070E\n" - "._648:\n" - " mov r0, #0xf\n" - "._649:\n" - " strb r0, [r1]\n" - "._647:\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808EF8C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " cmp r6, #0x2\n" - " bgt ._653 @cond_branch\n" - " cmp r6, #0\n" - " blt ._653 @cond_branch\n" - " mov r3, #0x0\n" - " ldr r0, ._656\n" - " mov r8, r0\n" - " ldr r4, ._656 + 4\n" - " mov r7, #0x7\n" - " mov r5, #0xf\n" - "._658:\n" - " sub r0, r7, r3\n" - " lsl r0, r0, #0x2\n" - " mov r1, r8\n" - " ldr r2, [r1]\n" - " LSR r2, r0\n" - " and r2, r2, r5\n" - " cmp r2, #0x9\n" - " bhi ._654 @cond_branch\n" - " add r1, r3, r4\n" - " add r0, r2, #0\n" - " add r0, r0, #0xa1\n" - " b ._655\n" - "._657:\n" - " .align 2, 0\n" - "._656:\n" - " .word gDebug_03000708\n" - " .word gDebug_03000710\n" - "._654:\n" - " add r1, r3, r4\n" - " add r0, r2, #0\n" - " sub r0, r0, #0x4f\n" - "._655:\n" - " strb r0, [r1]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x7\n" - " bls ._658 @cond_branch\n" - " ldr r0, ._666\n" - " mov r1, #0xff\n" - " strb r1, [r0, #0x8]\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - "._653:\n" - " mov r3, #0x0\n" - " ldr r7, ._666\n" - " ldr r5, ._666 + 4\n" - " ldr r2, ._666 + 8\n" - " mov r8, r2\n" - " add r4, r7, #0\n" - " mov r2, #0x0\n" - "._659:\n" - " add r1, r3, #1\n" - " add r0, r1, r4\n" - " strb r2, [r0]\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " cmp r3, #0x9\n" - " bls ._659 @cond_branch\n" - " mov r3, #0x0\n" - " ldrh r2, [r5]\n" - " mov r0, #0xb\n" - " add r1, r2, #0\n" - " mul r1, r1, r0\n" - " mov r2, r8\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._661 @cond_branch\n" - " ldr r0, ._666\n" - " mov ip, r0\n" - " mov r5, r8\n" - " add r4, r1, #0\n" - "._662:\n" - " add r1, r3, #1\n" - " mov r0, ip\n" - " add r2, r1, r0\n" - " add r0, r3, r4\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " strb r0, [r2]\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " add r0, r3, r4\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._661 @cond_branch\n" - " cmp r3, #0x9\n" - " bls ._662 @cond_branch\n" - "._661:\n" - " mov r0, #0xb1\n" - " strb r0, [r7]\n" - " mov r0, #0xb2\n" - " strb r0, [r7, #0xb]\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0xc]\n" - " cmp r6, #0x2\n" - " bgt ._664 @cond_branch\n" - " cmp r6, #0\n" - " blt ._664 @cond_branch\n" - " add r0, r7, #0\n" - " mov r1, #0x8\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " b ._665\n" - "._667:\n" - " .align 2, 0\n" - "._666:\n" - " .word gDebug_03000710\n" - " .word gDebug_03000700\n" - " .word gSpeciesNames\n" - "._664:\n" - " ldr r0, ._672\n" - " mov r1, #0xc\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - "._665:\n" - " ldr r5, ._672\n" - " mov r0, #0xff\n" - " strb r0, [r5, #0x3]\n" - " ldr r4, ._672 + 4\n" - " ldrh r0, [r4]\n" - " mov r1, #0x64\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5]\n" - " ldrh r0, [r4]\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xa\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x1]\n" - " ldrh r0, [r4]\n" - " mov r1, #0xa\n" - " bl __umodsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x2]\n" - " add r0, r5, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " cmp r6, #0x1\n" - " beq ._668 @cond_branch\n" - " cmp r6, #0x1\n" - " bgt ._669 @cond_branch\n" - " cmp r6, #0\n" - " beq ._670 @cond_branch\n" - " b ._679\n" - "._673:\n" - " .align 2, 0\n" - "._672:\n" - " .word gDebug_03000710\n" - " .word gDebug_03000700\n" - "._669:\n" - " cmp r6, #0x2\n" - " beq ._674 @cond_branch\n" - " b ._679\n" - "._670:\n" - " ldr r4, ._677\n" - " b ._676\n" - "._678:\n" - " .align 2, 0\n" - "._677:\n" - " .word gDebug_0300070C\n" - "._668:\n" - " ldr r4, ._680\n" - "._676:\n" - " ldrb r0, [r4]\n" - " mov r1, #0x64\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5]\n" - " ldrb r0, [r4]\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0xa\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x1]\n" - " ldrb r0, [r4]\n" - " mov r1, #0xa\n" - " bl __umodsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x2]\n" - " add r0, r5, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - " b ._679\n" - "._681:\n" - " .align 2, 0\n" - "._680:\n" - " .word gDebug_0300070D\n" - "._674:\n" - " ldr r4, ._682\n" - " ldrb r0, [r4]\n" - " mov r1, #0x64\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5]\n" - " ldrb r0, [r4]\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0xa\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x1]\n" - " ldrb r0, [r4]\n" - " mov r1, #0xa\n" - " bl __umodsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x2]\n" - " add r0, r5, #0\n" - " mov r1, #0xc\n" - " mov r2, #0x7\n" - " bl Menu_PrintText\n" - "._679:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._683:\n" - " .align 2, 0\n" - "._682:\n" - " .word gDebug_0300070E\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F168() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " ldr r4, ._686\n" - " ldr r0, ._686 + 4\n" - " ldrh r0, [r0]\n" - " strh r0, [r4, #0x8]\n" - " ldr r0, ._686 + 8\n" - " ldr r0, [r0]\n" - " str r0, [r4, #0x4]\n" - " ldr r0, ._686 + 12\n" - " ldr r0, [r0]\n" - " str r0, [r4]\n" - " cmp r1, #0x5\n" - " bls ._684 @cond_branch\n" - " b ._707\n" - "._684:\n" - " lsl r0, r1, #0x2\n" - " ldr r1, ._686 + 16\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._687:\n" - " .align 2, 0\n" - "._686:\n" - " .word +0x2015de0\n" - " .word gDebug_03000700\n" - " .word gDebug_03000704\n" - " .word gDebug_03000708\n" - " .word ._688\n" - "._688:\n" - " .word ._689\n" - " .word ._690\n" - " .word ._691\n" - " .word ._692\n" - " .word ._693\n" - " .word ._694\n" - "._689:\n" - " ldr r0, ._696\n" - " ldr r2, ._696 + 4\n" - " add r1, r0, r2\n" - " mov r2, #0x0\n" - " strb r2, [r1]\n" - " ldr r1, ._696 + 8\n" - " add r0, r0, r1\n" - " strb r2, [r0]\n" - " ldr r0, ._696 + 12\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r4, #0xa]\n" - " add r0, r4, #0\n" - " add r0, r0, #0x16\n" - " ldr r1, ._696 + 16\n" - " bl StringCopy\n" - " b ._704\n" - "._697:\n" - " .align 2, 0\n" - "._696:\n" - " .word +0x2000000\n" - " .word 0x15ddf\n" - " .word 0x15dde\n" - " .word gDebug_0300070C\n" - " .word gUnknown_Debug_083C48BB\n" - "._690:\n" - " ldr r1, ._699\n" - " ldr r0, ._699 + 4\n" - " add r2, r1, r0\n" - " mov r0, #0x0\n" - " strb r0, [r2]\n" - " ldr r2, ._699 + 8\n" - " add r1, r1, r2\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r0, ._699 + 12\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x1\n" - " b ._698\n" - "._700:\n" - " .align 2, 0\n" - "._699:\n" - " .word +0x2000000\n" - " .word 0x15ddf\n" - " .word 0x15dde\n" - " .word gDebug_0300070D\n" - "._691:\n" - " ldr r1, ._702\n" - " ldr r0, ._702 + 4\n" - " add r2, r1, r0\n" - " mov r0, #0x1\n" - " strb r0, [r2]\n" - " ldr r2, ._702 + 8\n" - " add r1, r1, r2\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldr r0, ._702 + 12\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r4, #0xa]\n" - " b ._707\n" - "._703:\n" - " .align 2, 0\n" - "._702:\n" - " .word +0x2000000\n" - " .word 0x15ddf\n" - " .word 0x15dde\n" - " .word gDebug_0300070E\n" - "._692:\n" - " ldr r1, ._705\n" - " ldr r2, ._705 + 4\n" - " add r0, r1, r2\n" - " mov r2, #0x0\n" - " strb r2, [r0]\n" - " ldr r0, ._705 + 8\n" - " add r1, r1, r0\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " strb r2, [r4, #0xa]\n" - " b ._704\n" - "._706:\n" - " .align 2, 0\n" - "._705:\n" - " .word +0x2000000\n" - " .word 0x15ddf\n" - " .word 0x15dde\n" - "._693:\n" - " ldr r1, ._708\n" - " ldr r0, ._708 + 4\n" - " add r2, r1, r0\n" - " mov r0, #0x0\n" - " strb r0, [r2]\n" - " ldr r2, ._708 + 8\n" - " add r1, r1, r2\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " mov r0, #0x3\n" - "._698:\n" - " strb r0, [r4, #0xa]\n" - "._704:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xb\n" - " ldr r1, ._708 + 12\n" - " bl StringCopy\n" - " b ._707\n" - "._709:\n" - " .align 2, 0\n" - "._708:\n" - " .word +0x2000000\n" - " .word 0x15ddf\n" - " .word 0x15dde\n" - " .word gUnknown_Debug_083C48B0\n" - "._694:\n" - " ldr r1, ._710\n" - " ldr r0, ._710 + 4\n" - " add r2, r1, r0\n" - " mov r0, #0x0\n" - " strb r0, [r2]\n" - " ldr r2, ._710 + 8\n" - " add r1, r1, r2\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " mov r0, #0x9\n" - " strb r0, [r4, #0xa]\n" - " add r0, r4, #0\n" - " add r0, r0, #0xb\n" - " ldr r1, ._710 + 12\n" - " bl StringCopy\n" - "._707:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._711:\n" - " .align 2, 0\n" - "._710:\n" - " .word +0x2000000\n" - " .word 0x15ddf\n" - " .word 0x15dde\n" - " .word gUnknown_Debug_083C48B0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F2E0() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r3, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " cmp r2, #0\n" - " bne ._712 @cond_branch\n" - " ldr r1, ._714\n" - " mov r0, #0xa1\n" - " b ._713\n" - "._715:\n" - " .align 2, 0\n" - "._714:\n" - " .word gDebug_03000710\n" - "._712:\n" - " ldr r1, ._716\n" - " mov r0, #0xa2\n" - "._713:\n" - " strb r0, [r1]\n" - " mov r0, #0xff\n" - " strb r0, [r1, #0x1]\n" - " add r0, r1, #0\n" - " add r1, r4, #0\n" - " add r2, r3, #0\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._717:\n" - " .align 2, 0\n" - "._716:\n" - " .word gDebug_03000710\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_808F31C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6}\n" - " mov r8, r0\n" - " mov r9, r1\n" - " add r4, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " mov r0, r9\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r9, r0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " ldr r5, ._718\n" - " ldr r6, ._718 + 4\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5]\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r6, #0xfa\n" - " lsl r6, r6, #0x2\n" - " add r1, r6, #0\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x1]\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0x64\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x2]\n" - " add r0, r4, #0\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xa\n" - " bl __udivsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x3]\n" - " add r0, r4, #0\n" - " mov r1, #0xa\n" - " bl __umodsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r5, #0x4]\n" - " mov r0, #0xff\n" - " strb r0, [r5, #0x5]\n" - " add r0, r5, #0\n" - " mov r1, r8\n" - " mov r2, r9\n" - " bl Menu_PrintText\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._719:\n" - " .align 2, 0\n" - "._718:\n" - " .word gDebug_03000710\n" - " .word 0x2710\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_nullsub_66() -{ - asm( - " bx lr\n" - "\n" - ); -} - #endif diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c deleted file mode 100644 index fa944b25f..000000000 --- a/src/debug/unk_debug_menu_3.c +++ /dev/null @@ -1,804 +0,0 @@ -#include "global.h" -#include "menu.h" - -#if DEBUG - -__attribute__((naked)) -int debug_sub_813C404() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " ldr r5, ._1\n" - " ldr r4, ._1 + 4\n" - " sub r5, r5, r4\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl unref_sub_812620C\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._2:\n" - " .align 2, 0\n" - "._1:\n" - " .word gUnknown_Debug_845DDB2\n" - " .word gUnknown_Debug_845DAE1\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C430() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " ldr r5, ._3\n" - " ldr r4, ._3 + 4\n" - " sub r5, r5, r4\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl unref_sub_812620C\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._4:\n" - " .align 2, 0\n" - "._3:\n" - " .word gUnknown_Debug_845E402\n" - " .word gUnknown_Debug_845E3E0\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C45C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " ldr r5, ._5\n" - " ldr r4, ._5 + 4\n" - " sub r5, r5, r4\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl unref_sub_812620C\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._6:\n" - " .align 2, 0\n" - "._5:\n" - " .word gUnknown_Debug_845E443\n" - " .word gUnknown_Debug_845E422\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C488() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " ldr r5, ._7\n" - " ldr r4, ._7 + 4\n" - " sub r5, r5, r4\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl unref_sub_812620C\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._8:\n" - " .align 2, 0\n" - "._7:\n" - " .word gUnknown_Debug_845E422\n" - " .word gUnknown_Debug_845E402\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C4B4() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._9\n" - " ldr r1, ._9 + 4\n" - " sub r4, r4, r1\n" - " add r2, r4, #0\n" - " bl memcpy\n" - " add r0, r4, #0\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._10:\n" - " .align 2, 0\n" - "._9:\n" - " .word gUnknown_Debug_845E619\n" - " .word gUnknown_Debug_845E606\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C4D4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " ldr r5, ._11\n" - " ldr r4, ._11 + 4\n" - " sub r5, r5, r4\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl unref_sub_81261B4\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._12:\n" - " .align 2, 0\n" - "._11:\n" - " .word gUnknown_Debug_845E712\n" - " .word gUnknown_Debug_845E619\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C500() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " ldr r5, ._13\n" - " ldr r4, ._13 + 4\n" - " sub r5, r5, r4\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " bl unref_sub_812620C\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._14:\n" - " .align 2, 0\n" - "._13:\n" - " .word gUnknown_Debug_845E797\n" - " .word gUnknown_Debug_845E712\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_813C52C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6}\n" - " mov r8, r0\n" - " lsl r5, r1, #0x10\n" - " lsr r0, r5, #0x10\n" - " mov r9, r0\n" - " ldr r6, ._15\n" - " ldr r4, ._15 + 4\n" - " sub r6, r6, r4\n" - " mov r0, r8\n" - " add r1, r4, #0\n" - " add r2, r6, #0\n" - " bl memcpy\n" - " ldr r0, ._15 + 8\n" - " sub r0, r0, r4\n" - " add r0, r0, r8\n" - " add r0, r0, #0x3\n" - " mov r1, r9\n" - " strb r1, [r0]\n" - " lsr r5, r5, #0x18\n" - " strb r5, [r0, #0x1]\n" - " mov r0, r8\n" - " add r1, r4, #0\n" - " bl unref_sub_812620C\n" - " add r0, r6, #0\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._16:\n" - " .align 2, 0\n" - "._15:\n" - " .word gUnknown_Debug_845E7BB\n" - " .word gUnknown_Debug_845E797\n" - " .word gUnknown_Debug_845E7B5\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C580() -{ - asm( - " push {lr}\n" - " mov r1, #0xd\n" - " bl debug_sub_813C52C\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C58C() -{ - asm( - " push {lr}\n" - " mov r1, #0x4\n" - " bl debug_sub_813C52C\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C598() -{ - asm( - " push {lr}\n" - " mov r1, #0x85\n" - " bl debug_sub_813C52C\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C5A4() -{ - asm( - " push {lr}\n" - " ldr r1, ._17\n" - " bl debug_sub_813C52C\n" - " pop {r1}\n" - " bx r1\n" - "._18:\n" - " .align 2, 0\n" - "._17:\n" - " .word 0x121\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C5B4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add r4, r0, #0\n" - " ldr r7, ._23\n" - " ldr r0, ._23 + 4\n" - " ldr r1, ._23 + 8\n" - " sub r0, r0, r1\n" - " add r6, r0, r4\n" - " ldr r0, ._23 + 12\n" - " sub r5, r0, r1\n" - " ldr r0, ._23 + 16\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " bl GetEnigmaBerryChecksum\n" - " mov r2, #0x0\n" - " ldr r3, ._23 + 20\n" - " mov r1, #0x0\n" - "._19:\n" - " add r0, r4, r2\n" - " strb r1, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, r3\n" - " ble ._19 @cond_branch\n" - " mov r2, #0x0\n" - " cmp r2, r5\n" - " bcs ._20 @cond_branch\n" - " ldr r3, ._23 + 8\n" - "._21:\n" - " add r0, r4, r2\n" - " add r1, r2, r3\n" - " ldrb r1, [r1]\n" - " strb r1, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, r5\n" - " bcc ._21 @cond_branch\n" - "._20:\n" - " mov r2, #0x0\n" - " ldr r3, ._23 + 24\n" - "._22:\n" - " add r0, r6, r2\n" - " add r1, r7, r2\n" - " ldrb r1, [r1]\n" - " strb r1, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, r3\n" - " bls ._22 @cond_branch\n" - " bl ClearEnigmaBerries\n" - " ldr r1, ._23 + 8\n" - " add r0, r4, #0\n" - " bl unref_sub_81261B4\n" - " add r0, r5, #0\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._24:\n" - " .align 2, 0\n" - "._23:\n" - " .word gSaveBlock1+0x3160\n" - " .word gUnknown_Debug_845DDD6\n" - " .word gUnknown_Debug_845DDB2\n" - " .word gUnknown_Debug_845E306\n" - " .word Str_842E23C\n" - " .word 0xfff\n" - " .word 0x52f\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_813C638() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xffffffec\n" - " mov r8, r0\n" - " add r4, r1, #0\n" - " add r5, r2, #0\n" - " add r6, r3, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " lsl r6, r6, #0x10\n" - " lsr r6, r6, #0x10\n" - " bl ZeroMonData\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x1\n" - " str r0, [sp, #0x8]\n" - " ldr r0, ._25\n" - " str r0, [sp, #0xc]\n" - " mov r0, r8\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " mov r3, #0x20\n" - " bl CreateMon\n" - " ldr r2, ._25 + 4\n" - " mov r0, r8\n" - " mov r1, #0x7\n" - " bl SetMonData\n" - " ldr r2, ._25 + 8\n" - " mov r0, r8\n" - " mov r1, #0x2\n" - " bl SetMonData\n" - " str r6, [sp, #0x10]\n" - " mov r0, r8\n" - " mov r1, #0xc\n" - " add r2, sp, #0x10\n" - " bl SetMonData\n" - " add sp, sp, #0x14\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._26:\n" - " .align 2, 0\n" - "._25:\n" - " .word 0x270f\n" - " .word Str_842E240\n" - " .word Str_842E248\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_813C6AC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffff8\n" - " add r6, r0, #0\n" - " add r5, r1, #0\n" - " add r0, r5, #0\n" - " bl ClearMailStruct\n" - " add r0, r6, #0\n" - " mov r1, #0xc\n" - " bl GetMonData\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r8, r0\n" - " bl ItemIsMail\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._27 @cond_branch\n" - " add r4, r5, #0\n" - " add r4, r4, #0x12\n" - " add r7, r5, #0\n" - " add r7, r7, #0x1a\n" - " mov r1, #0x9\n" - " add r0, r5, #0\n" - " add r0, r0, #0x10\n" - "._28:\n" - " strh r1, [r0]\n" - " sub r1, r1, #0x1\n" - " sub r0, r0, #0x2\n" - " cmp r0, r5\n" - " bge ._28 @cond_branch\n" - " add r0, r6, #0\n" - " mov r1, #0x7\n" - " mov r2, sp\n" - " bl GetMonData\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " mov r2, #0x8\n" - " bl StringCopyN\n" - " add r0, r6, #0\n" - " mov r1, #0x1\n" - " bl GetMonData\n" - " add r1, r7, #0\n" - " bl write_word_to_mem\n" - " add r0, r6, #0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r6, #0\n" - " mov r1, #0x0\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " add r0, r4, #0\n" - " bl SpeciesToMailSpecies\n" - " strh r0, [r5, #0x1e]\n" - " mov r0, r8\n" - " strh r0, [r5, #0x20]\n" - "._27:\n" - " add sp, sp, #0x8\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C740() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, sl\n" - " mov r5, r9\n" - " mov r4, r8\n" - " push {r4, r5, r6}\n" - " add sp, sp, #0xffffffd0\n" - " add r6, r0, #0\n" - " ldr r0, ._29\n" - " mov r8, r0\n" - " ldr r1, ._29 + 4\n" - " ldr r5, ._29 + 8\n" - " sub r1, r1, r0\n" - " mov r9, r1\n" - " add r0, r6, #0\n" - " mov r1, r8\n" - " mov r2, r9\n" - " bl memcpy\n" - " add r0, r5, #0\n" - " mov r1, #0x19\n" - " mov r2, #0x5\n" - " mov r3, #0x0\n" - " bl debug_sub_813C638\n" - " add r4, sp, #0x24\n" - " mov r0, #0x1\n" - " mov sl, r0\n" - " mov r1, sl\n" - " strb r1, [r4]\n" - " add r0, r5, #0\n" - " mov r1, #0x2d\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " mov r0, #0x3\n" - " strb r0, [r4]\n" - " add r0, r5, #0\n" - " mov r1, #0x20\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " mov r0, #0xff\n" - " strb r0, [r4]\n" - " add r0, r5, #0\n" - " mov r1, #0x23\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldr r1, ._29 + 12\n" - " add r0, r4, #0\n" - " mov r2, #0xb\n" - " bl StringCopyN\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " mov r0, sl\n" - " strb r0, [r4]\n" - " add r0, r5, #0\n" - " mov r1, #0x3\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldr r0, ._29 + 16\n" - " add r0, r6, r0\n" - " mov r1, r8\n" - " sub r0, r0, r1\n" - " add r1, r5, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " ldr r0, ._29 + 20\n" - " add r6, r6, r0\n" - " mov r0, r8\n" - " sub r6, r6, r0\n" - " add r0, r6, #0\n" - " mov r1, sp\n" - " mov r2, #0x24\n" - " bl memcpy\n" - " mov r0, r9\n" - " add sp, sp, #0x30\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._30:\n" - " .align 2, 0\n" - "._29:\n" - " .word gUnknown_Debug_845E443\n" - " .word gUnknown_Debug_845E4EF\n" - " .word gEnemyParty\n" - " .word Str_842E238\n" - " .word gUnknown_Debug_845E467\n" - " .word gUnknown_Debug_845E4CB\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C810() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xffffffdc\n" - " add r6, r0, #0\n" - " ldr r5, ._31\n" - " ldr r0, ._31 + 4\n" - " ldr r4, ._31 + 8\n" - " sub r0, r0, r5\n" - " mov r8, r0\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " mov r2, r8\n" - " bl memcpy\n" - " add r0, r4, #0\n" - " mov r1, #0xc9\n" - " mov r2, #0x15\n" - " mov r3, #0x82\n" - " bl debug_sub_813C638\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " bl debug_sub_813C6AC\n" - " ldr r0, ._31 + 12\n" - " add r0, r6, r0\n" - " sub r0, r0, r5\n" - " add r1, r4, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " ldr r0, ._31 + 16\n" - " add r0, r6, r0\n" - " sub r0, r0, r5\n" - " mov r1, sp\n" - " mov r2, #0x24\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl unref_sub_812620C\n" - " mov r0, r8\n" - " add sp, sp, #0x24\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._32:\n" - " .align 2, 0\n" - "._31:\n" - " .word gUnknown_Debug_845E443\n" - " .word gUnknown_Debug_845E4EF\n" - " .word gEnemyParty\n" - " .word gUnknown_Debug_845E467\n" - " .word gUnknown_Debug_845E4CB\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C888() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xffffffdc\n" - " add r6, r0, #0\n" - " ldr r5, ._33\n" - " ldr r0, ._33 + 4\n" - " ldr r4, ._33 + 8\n" - " sub r0, r0, r5\n" - " mov r8, r0\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " mov r2, r8\n" - " bl memcpy\n" - " add r0, r4, #0\n" - " mov r1, #0xc9\n" - " mov r2, #0x15\n" - " mov r3, #0x82\n" - " bl debug_sub_813C638\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " bl debug_sub_813C6AC\n" - " mov r0, #0x0\n" - " strh r0, [r4, #0x1c]\n" - " ldr r0, ._33 + 12\n" - " add r0, r6, r0\n" - " sub r0, r0, r5\n" - " add r1, r4, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " ldr r0, ._33 + 16\n" - " add r0, r6, r0\n" - " sub r0, r0, r5\n" - " mov r1, sp\n" - " mov r2, #0x24\n" - " bl memcpy\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl unref_sub_812620C\n" - " mov r0, r8\n" - " add sp, sp, #0x24\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._34:\n" - " .align 2, 0\n" - "._33:\n" - " .word gUnknown_Debug_845E443\n" - " .word gUnknown_Debug_845E4EF\n" - " .word gEnemyParty\n" - " .word gUnknown_Debug_845E467\n" - " .word gUnknown_Debug_845E4CB\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_813C904() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._35\n" - " add r0, r4, #0\n" - " mov r1, #0x5\n" - " mov r2, #0x32\n" - " mov r3, #0xb7\n" - " bl debug_sub_813C638\n" - " add r0, r4, #0\n" - " add r0, r0, #0x64\n" - " mov r1, #0x8\n" - " mov r2, #0x32\n" - " mov r3, #0xc4\n" - " bl debug_sub_813C638\n" - " add r4, r4, #0xc8\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x32\n" - " mov r3, #0x8d\n" - " bl debug_sub_813C638\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._36:\n" - " .align 2, 0\n" - "._35:\n" - " .word gPlayerParty\n" - "\n" - ); -} - -__attribute__((naked)) -int debug_sub_813C93C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xffffff44\n" - " add r4, r0, #0\n" - " ldr r6, ._37\n" - " ldr r5, ._37 + 4\n" - " sub r5, r5, r6\n" - " add r1, r6, #0\n" - " add r2, r5, #0\n" - " bl memcpy\n" - " bl SavePlayerParty\n" - " bl debug_sub_813C904\n" - " ldr r1, ._37 + 8\n" - " ldr r2, ._37 + 12\n" - " mov r0, sp\n" - " bl debug_sub_8075DB4\n" - " bl LoadPlayerParty\n" - " ldr r0, ._37 + 16\n" - " add r4, r4, r0\n" - " sub r4, r4, r6\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " mov r2, #0xbc\n" - " bl memcpy\n" - " add r0, r5, #0\n" - " add sp, sp, #0xbc\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._38:\n" - " .align 2, 0\n" - "._37:\n" - " .word gUnknown_Debug_845E4EF\n" - " .word gUnknown_Debug_845E606\n" - " .word Str_842E253+5 @ weird...\n" - " .word 0x270f\n" - " .word gUnknown_Debug_845E506\n" - "\n" - ); -} - -#endif - diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index cc53f8c95..6c94b0466 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -8,9842 +8,4 @@ EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 }; u8 byte_3005E30[0x20]; -__attribute__((naked)) -void debug_69() -{ - asm( - " bx lr\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C35DC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " bl SetVBlankCallback\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x13\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " add r0, r0, #0xe\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r1, [r0]\n" - " add r0, r0, #0x14\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x6\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x6\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x6\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " mov r3, #0xc0\n" - " lsl r3, r3, #0x13\n" - " mov r4, #0xc0\n" - " lsl r4, r4, #0x9\n" - " add r0, sp, #0x4\n" - " mov r8, r0\n" - " mov r2, sp\n" - " mov r6, #0x0\n" - " ldr r1, ._2\n" - " mov r5, #0x80\n" - " lsl r5, r5, #0x5\n" - " ldr r7, ._2 + 4\n" - " mov r0, #0x81\n" - " lsl r0, r0, #0x18\n" - " mov ip, r0\n" - "._1:\n" - " strh r6, [r2]\n" - " mov r0, sp\n" - " str r0, [r1]\n" - " str r3, [r1, #0x4]\n" - " str r7, [r1, #0x8]\n" - " ldr r0, [r1, #0x8]\n" - " add r3, r3, r5\n" - " sub r4, r4, r5\n" - " cmp r4, r5\n" - " bhi ._1 @cond_branch\n" - " strh r6, [r2]\n" - " mov r2, sp\n" - " str r2, [r1]\n" - " str r3, [r1, #0x4]\n" - " lsr r0, r4, #0x1\n" - " mov r2, ip\n" - " orr r0, r0, r2\n" - " str r0, [r1, #0x8]\n" - " ldr r0, [r1, #0x8]\n" - " mov r0, #0xe0\n" - " lsl r0, r0, #0x13\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x3\n" - " mov r4, #0x0\n" - " str r4, [sp, #0x4]\n" - " ldr r2, ._2\n" - " mov r1, r8\n" - " str r1, [r2]\n" - " str r0, [r2, #0x4]\n" - " lsr r0, r3, #0x2\n" - " mov r1, #0x85\n" - " lsl r1, r1, #0x18\n" - " orr r0, r0, r1\n" - " str r0, [r2, #0x8]\n" - " ldr r0, [r2, #0x8]\n" - " mov r1, #0xa0\n" - " lsl r1, r1, #0x13\n" - " mov r0, sp\n" - " strh r4, [r0]\n" - " str r0, [r2]\n" - " str r1, [r2, #0x4]\n" - " lsr r3, r3, #0x1\n" - " mov r0, #0x81\n" - " lsl r0, r0, #0x18\n" - " orr r3, r3, r0\n" - " str r3, [r2, #0x8]\n" - " ldr r0, [r2, #0x8]\n" - " bl ResetPaletteFade\n" - " bl ScanlineEffect_Stop\n" - " bl ResetTasks\n" - " bl ResetSpriteData\n" - " bl ResetPaletteFade\n" - " bl FreeAllSpritePalettes\n" - " ldr r0, ._2 + 8\n" - " bl LoadSpriteSheet\n" - " ldr r0, ._2 + 12\n" - " bl LoadSpritePalette\n" - " ldr r0, ._2 + 16\n" - " bl Text_LoadWindowTemplate\n" - " ldr r0, ._2 + 20\n" - " bl InitMenuWindow\n" - " add sp, sp, #0x8\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._3:\n" - " .align 2, 0\n" - "._2:\n" - " .word 0x40000d4\n" - " .word 0x81000800\n" - " .word stru_83F8828\n" - " .word stru_83F8838\n" - " .word gWindowTemplate_81E6C3C\n" - " .word gWindowTemplate_81E6CE4\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C36F4() -{ - asm( - " push {lr}\n" - " bl RunTasks\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " bl UpdatePaletteFade\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C370C() -{ - asm( - " push {lr}\n" - " ldr r0, ._6\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._4 @cond_branch\n" - " ldr r0, ._6 + 4\n" - " bl SetMainCallback2\n" - " b ._5\n" - "._7:\n" - " .align 2, 0\n" - "._6:\n" - " .word gPaletteFade\n" - " .word debug_80C36F4+1\n" - "._4:\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " bl UpdatePaletteFade\n" - "._5:\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C373C() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " ldr r0, ._8\n" - " bl SetMainCallback2\n" - " pop {r0}\n" - " bx r0\n" - "._9:\n" - " .align 2, 0\n" - "._8:\n" - " .word sub_80546F0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C3758() -{ - asm( - " push {lr}\n" - " bl LoadOam\n" - " bl ProcessSpriteCopyRequests\n" - " bl TransferPlttBuffer\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C376C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " lsl r1, r1, #0x18\n" - " lsr r7, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r6, r2, #0x18\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - "._10:\n" - " mov r3, sp\n" - " add r0, r3, r1\n" - " strb r2, [r0]\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " cmp r1, #0x2\n" - " bls ._10 @cond_branch\n" - " mov r1, sp\n" - " mov r0, #0xff\n" - " strb r0, [r1, #0x3]\n" - " mov r4, #0x0\n" - " add r0, r5, #0\n" - " mov r1, #0x64\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._11 @cond_branch\n" - " mov r1, sp\n" - " add r0, r0, #0xa1\n" - " strb r0, [r1]\n" - " mov r4, #0x1\n" - "._11:\n" - " add r0, r5, #0\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xa\n" - " bl __udivsi3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._12 @cond_branch\n" - " cmp r4, #0\n" - " beq ._13 @cond_branch\n" - "._12:\n" - " mov r1, sp\n" - " add r0, r0, #0xa1\n" - " strb r0, [r1, #0x1]\n" - "._13:\n" - " mov r4, sp\n" - " add r0, r5, #0\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xa\n" - " bl __umodsi3\n" - " add r0, r0, #0xa1\n" - " strb r0, [r4, #0x2]\n" - " mov r0, sp\n" - " add r1, r7, #0\n" - " add r2, r6, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C3800() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffff4\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " lsl r1, r1, #0x18\n" - " lsr r6, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r5, r2, #0x18\n" - " mov r3, #0x0\n" - " ldr r2, ._18\n" - " mov r1, #0x0\n" - "._14:\n" - " mov r7, sp\n" - " add r0, r7, r3\n" - " strb r1, [r0]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x9\n" - " bls ._14 @cond_branch\n" - " add r1, r7, r3\n" - " mov r0, #0xff\n" - " strb r0, [r1]\n" - " mov r3, #0x0\n" - " mov r0, #0xb\n" - " add r1, r4, #0\n" - " mul r1, r1, r0\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._16 @cond_branch\n" - " add r4, r2, #0\n" - " add r2, r1, #0\n" - "._17:\n" - " mov r0, sp\n" - " add r1, r0, r3\n" - " add r0, r3, r2\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " add r0, r3, r2\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._16 @cond_branch\n" - " cmp r3, #0x9\n" - " bls ._17 @cond_branch\n" - "._16:\n" - " mov r0, sp\n" - " add r1, r6, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0xc\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._19:\n" - " .align 2, 0\n" - "._18:\n" - " .word gSpeciesNames\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C3878() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " cmp r0, #0\n" - " beq ._20 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._21 @cond_branch\n" - "._20:\n" - " cmp r1, #0x1\n" - " bls ._22 @cond_branch\n" - " sub r0, r1, #1\n" - " b ._23\n" - "._22:\n" - " ldr r1, ._25\n" - " b ._28\n" - "._26:\n" - " .align 2, 0\n" - "._25:\n" - " .word 0x19b\n" - "._21:\n" - " mov r0, #0xcd\n" - " lsl r0, r0, #0x1\n" - " cmp r1, r0\n" - " bhi ._27 @cond_branch\n" - " add r0, r1, #1\n" - "._23:\n" - " lsl r0, r0, #0x10\n" - " lsr r1, r0, #0x10\n" - " b ._28\n" - "._27:\n" - " mov r1, #0x1\n" - "._28:\n" - " add r0, r1, #0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C38B4() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r0, r1, #0x10\n" - " cmp r2, #0\n" - " beq ._29 @cond_branch\n" - " cmp r2, #0x1\n" - " beq ._30 @cond_branch\n" - "._29:\n" - " cmp r0, #0\n" - " beq ._31 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._32\n" - "._31:\n" - " mov r0, #0x52\n" - " b ._35\n" - "._30:\n" - " cmp r0, #0x51\n" - " bhi ._34 @cond_branch\n" - " add r0, r0, #0x1\n" - "._32:\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " b ._35\n" - "._34:\n" - " mov r0, #0x0\n" - "._35:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C38E4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r2, #0\n" - " add r5, r3, #0\n" - " ldr r6, [sp, #0x1c]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " lsl r1, r1, #0x18\n" - " lsr r7, r1, #0x18\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " lsl r6, r6, #0x18\n" - " lsr r6, r6, #0x18\n" - " ldr r1, ._37\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r0, r7, #0\n" - " add r1, r4, #0\n" - " add r2, r7, #0\n" - " add r3, r5, #0\n" - " bl Menu_BlankWindowRect\n" - " cmp r6, #0\n" - " beq ._36 @cond_branch\n" - " mov r0, sp\n" - " add r1, r7, #0\n" - " mov r2, r8\n" - " bl Menu_PrintText\n" - "._36:\n" - " add sp, sp, #0x4\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._38:\n" - " .align 2, 0\n" - "._37:\n" - " .word gUnknown_Debug_083F7FD4\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C393C() -{ - asm( - " push {lr}\n" - " ldr r1, ._39\n" - " mov r0, #0x1e\n" - " bl ProgramFlashSectorAndVerify\n" - " pop {r0}\n" - " bx r0\n" - "._40:\n" - " .align 2, 0\n" - "._39:\n" - " .word gUnknown_Debug_083F7FD6\n" - "\n" - ); -} - -__attribute__((naked)) -void InitWatanabeDebugMenu() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._46\n" - " ldr r1, ._46 + 4\n" - " add r4, r0, r1\n" - " ldrb r0, [r4]\n" - " cmp r0, #0x1\n" - " beq ._41 @cond_branch\n" - " cmp r0, #0x1\n" - " ble ._42 @cond_branch\n" - " cmp r0, #0x2\n" - " beq ._43 @cond_branch\n" - " cmp r0, #0x3\n" - " beq ._44 @cond_branch\n" - "._42:\n" - " bl save_serialize_map\n" - " bl sub_8125E2C\n" - " mov r0, #0x1\n" - " strb r0, [r4]\n" - " b ._51\n" - "._47:\n" - " .align 2, 0\n" - "._46:\n" - " .word gMain\n" - " .word 0x43c\n" - "._41:\n" - " bl sub_8125E6C\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._51 @cond_branch\n" - " b ._49\n" - "._43:\n" - " mov r0, #0x37\n" - " bl PlaySE\n" - "._49:\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " b ._51\n" - "._44:\n" - " bl IsSEPlaying\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._51 @cond_branch\n" - " bl ScriptContext2_Disable\n" - " ldr r0, ._52\n" - " bl SetMainCallback2\n" - "._51:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._53:\n" - " .align 2, 0\n" - "._52:\n" - " .word sub_80546F0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void InitSizeComparison() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " bl debug_80C35DC\n" - " ldr r1, ._54\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, ._54 + 4\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x1\n" - " mov r2, #0x20\n" - " bl LoadPalette\n" - " ldr r3, ._54 + 8\n" - " ldrh r2, [r3]\n" - " mov r0, #0x0\n" - " strh r0, [r3]\n" - " ldr r4, ._54 + 12\n" - " ldrh r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strh r0, [r4]\n" - " strh r2, [r3]\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x10\n" - " mov r3, #0x0\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._54 + 16\n" - " bl SetVBlankCallback\n" - " ldr r0, ._54 + 20\n" - " bl SetMainCallback2\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x13\n" - " mov r2, #0x8a\n" - " lsl r2, r2, #0x5\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, ._54 + 24\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._54 + 28\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " mov r0, #0xfc\n" - " strh r0, [r1, #0x8]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._55:\n" - " .align 2, 0\n" - "._54:\n" - " .word gReservedSpritePaletteCount\n" - " .word gUnknown_Debug_20389EC\n" - " .word 0x4000208\n" - " .word 0x4000200\n" - " .word debug_80C3758+1\n" - " .word debug_80C370C+1\n" - " .word debug_80C3A50+1\n" - " .word gTasks\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C3A50() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffd8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._56\n" - " lsl r2, r0, #0x2\n" - " add r0, r2, r0\n" - " lsl r0, r0, #0x3\n" - " add r7, r0, r1\n" - " ldrh r0, [r7, #0x8]\n" - " str r0, [sp, #0x4]\n" - " bl NationalPokedexNumToSpecies\n" - " mov r1, sp\n" - " strh r0, [r1, #0x8]\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x10\n" - " str r2, [sp, #0xc]\n" - " lsr r2, r2, #0x10\n" - " mov r9, r2\n" - " ldr r3, ._56 + 4\n" - " mov r8, r3\n" - " mov r0, #0x6\n" - " mov r1, #0x0\n" - " mov r2, #0x17\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x5\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r5, ._56 + 8\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r4, ._56 + 12\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0x18\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r5, #0\n" - " mov r1, #0x19\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0x19\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " mov r1, #0xa\n" - " mov r2, #0xb\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._56 + 16\n" - " mov r1, #0x1\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._56 + 20\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " ldr r0, ._56 + 24\n" - " mov r1, #0x1\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r0, ._56 + 28\n" - " mov r1, #0x1\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xc\n" - " mov r1, #0xa\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._56 + 32\n" - " mov r1, #0xd\n" - " mov r2, #0xb\n" - " bl Menu_PrintText\n" - " ldr r0, ._56 + 36\n" - " mov r1, #0xd\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " mov r0, #0xc\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._56 + 40\n" - " mov r1, #0xd\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r0, ._56 + 44\n" - " mov r1, #0x18\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, r9\n" - " mov r1, #0x12\n" - " mov r2, #0x11\n" - " bl debug_80C3800\n" - " mov r1, r8\n" - " ldrb r0, [r1, #0x8]\n" - " mov r1, #0x98\n" - " mov r2, #0x28\n" - " mov r3, #0x0\n" - " bl sub_8091A4C\n" - " mov r2, sp\n" - " strh r0, [r2, #0x10]\n" - " add r3, r0, #0\n" - " lsl r3, r3, #0x10\n" - " str r3, [sp, #0x18]\n" - " lsr r0, r3, #0x10\n" - " str r0, [sp, #0x14]\n" - " lsl r4, r0, #0x4\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x2\n" - " ldr r1, ._56 + 48\n" - " add r4, r4, r1\n" - " ldrb r1, [r4, #0x1]\n" - " mov r2, #0x4\n" - " neg r2, r2\n" - " mov sl, r2\n" - " mov r0, sl\n" - " and r0, r0, r1\n" - " mov r3, #0x1\n" - " orr r0, r0, r3\n" - " strb r0, [r4, #0x1]\n" - " ldrb r1, [r4, #0x3]\n" - " mov r0, #0x3f\n" - " neg r0, r0\n" - " mov r9, r0\n" - " and r0, r0, r1\n" - " mov r1, #0x4\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x3]\n" - " ldrb r1, [r4, #0x5]\n" - " sub r2, r2, #0x9\n" - " mov r8, r2\n" - " mov r0, r8\n" - " and r0, r0, r1\n" - " mov r3, #0xf\n" - " and r0, r0, r3\n" - " strb r0, [r4, #0x5]\n" - " mov r0, #0x0\n" - " bl GetSpritePaletteTagByPaletteNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl FreeSpritePaletteByTag\n" - " ldr r0, ._56 + 52\n" - " ldr r1, [sp, #0x4]\n" - " lsl r5, r1, #0x3\n" - " add r5, r5, r1\n" - " lsl r5, r5, #0x2\n" - " add r5, r5, r0\n" - " ldrh r6, [r5, #0x20]\n" - " strh r6, [r4, #0x26]\n" - " ldrh r4, [r5, #0x1e]\n" - " str r4, [sp]\n" - " mov r0, #0x2\n" - " add r1, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl SetOamMatrix\n" - " mov r2, sp\n" - " ldrh r2, [r2, #0x14]\n" - " strh r2, [r7, #0xe]\n" - " strh r6, [r7, #0x10]\n" - " strh r4, [r7, #0x14]\n" - " ldr r0, [sp, #0x4]\n" - " mov r1, #0x58\n" - " mov r2, #0x28\n" - " mov r3, #0x1\n" - " bl sub_80918EC\n" - " mov r3, sp\n" - " strh r0, [r3, #0x1c]\n" - " lsl r0, r0, #0x10\n" - " str r0, [sp, #0x24]\n" - " lsr r1, r0, #0x10\n" - " str r1, [sp, #0x20]\n" - " lsl r4, r1, #0x4\n" - " add r4, r4, r1\n" - " lsl r4, r4, #0x2\n" - " ldr r2, ._56 + 48\n" - " add r4, r4, r2\n" - " ldrb r0, [r4, #0x1]\n" - " mov r3, sl\n" - " and r3, r3, r0\n" - " mov r0, #0x1\n" - " orr r3, r3, r0\n" - " strb r3, [r4, #0x1]\n" - " ldrb r0, [r4, #0x3]\n" - " mov r1, r9\n" - " and r1, r1, r0\n" - " mov r0, #0x2\n" - " orr r1, r1, r0\n" - " strb r1, [r4, #0x3]\n" - " ldrb r0, [r4, #0x5]\n" - " mov r2, r8\n" - " and r2, r2, r0\n" - " mov r3, #0xf\n" - " and r2, r2, r3\n" - " strb r2, [r4, #0x5]\n" - " mov r0, #0x0\n" - " bl GetSpritePaletteTagByPaletteNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl FreeSpritePaletteByTag\n" - " ldrh r0, [r5, #0x1c]\n" - " mov r8, r0\n" - " strh r0, [r4, #0x26]\n" - " ldrh r4, [r5, #0x1a]\n" - " str r4, [sp]\n" - " mov r0, #0x1\n" - " add r1, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl SetOamMatrix\n" - " mov r1, sp\n" - " ldrh r1, [r1, #0x20]\n" - " strh r1, [r7, #0xc]\n" - " mov r2, r8\n" - " strh r2, [r7, #0x12]\n" - " strh r4, [r7, #0x16]\n" - " mov r3, #0x0\n" - " strh r3, [r7, #0x18]\n" - " strh r3, [r7, #0x1a]\n" - " ldr r1, ._56 + 56\n" - " ldr r2, ._56 + 60\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " mov r0, #0x1f\n" - " strh r0, [r1]\n" - " ldr r2, ._56 + 64\n" - " mov r3, #0x18\n" - " ldsh r1, [r7, r3]\n" - " lsl r1, r1, #0x6\n" - " add r0, r1, #0\n" - " add r0, r0, #0x38\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, #0x78\n" - " add r0, r0, r1\n" - " strh r0, [r2]\n" - " ldr r1, ._56 + 68\n" - " ldr r2, ._56 + 72\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " sub r1, r1, #0x2\n" - " ldr r3, ._56 + 76\n" - " add r0, r3, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._56 + 80\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0xa\n" - " mov r0, #0xe1\n" - " strh r0, [r1]\n" - " ldr r0, ._56 + 84\n" - " mov r3, #0x0\n" - " strh r3, [r0]\n" - " add r1, r1, #0x4\n" - " mov r0, #0x7\n" - " strh r0, [r1]\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " ldrh r0, [r2]\n" - " mov r3, #0xc0\n" - " lsl r3, r3, #0x7\n" - " add r1, r3, #0\n" - " orr r0, r0, r1\n" - " strh r0, [r2]\n" - " ldr r0, ._56 + 88\n" - " str r0, [r7]\n" - " add sp, sp, #0x28\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._57:\n" - " .align 2, 0\n" - "._56:\n" - " .word gTasks\n" - " .word gSaveBlock2\n" - " .word gUnknown_Debug_083F7FD6+0x4\n" - " .word gUnknown_Debug_083F7FDE\n" - " .word gUnknown_Debug_083F7FE2\n" - " .word gUnknown_Debug_083F7FED\n" - " .word gUnknown_Debug_083F7FF6\n" - " .word gUnknown_Debug_083F8001\n" - " .word gUnknown_Debug_083F800C\n" - " .word gUnknown_Debug_083F8019\n" - " .word gUnknown_Debug_083F8022\n" - " .word gUnknown_Debug_083F8028\n" - " .word gSprites\n" - " .word gPokedexEntries\n" - " .word 0x4000048\n" - " .word 0x3f1f\n" - " .word 0x4000040\n" - " .word 0x4000044\n" - " .word 0x848\n" - " .word 0x31bf\n" - " .word 0x14f\n" - " .word 0x4000052\n" - " .word debug_80C3D2C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C3D2C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " add r7, r6, #0\n" - " ldr r4, ._60\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._58 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._60 + 4\n" - " bl SetMainCallback2\n" - " ldr r1, ._60 + 8\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._60 + 12\n" - " str r1, [r0]\n" - " b ._117\n" - "._61:\n" - " .align 2, 0\n" - "._60:\n" - " .word gMain\n" - " .word debug_80C370C+1\n" - " .word gTasks\n" - " .word debug_80C373C+1\n" - "._58:\n" - " mov r5, #0x1\n" - " add r0, r5, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._62 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._64\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrh r1, [r0, #0x18]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " strh r1, [r0, #0x18]\n" - " b ._117\n" - "._65:\n" - " .align 2, 0\n" - "._64:\n" - " .word gTasks\n" - "._62:\n" - " ldrh r1, [r4, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._66 @cond_branch\n" - " ldr r1, ._70\n" - " lsl r2, r6, #0x2\n" - " add r0, r2, r6\n" - " lsl r0, r0, #0x3\n" - " add r3, r0, r1\n" - " mov r5, #0x18\n" - " ldsh r0, [r3, r5]\n" - " mov r8, r1\n" - " cmp r0, #0\n" - " beq ._67 @cond_branch\n" - " ldrh r1, [r4, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._68 @cond_branch\n" - " ldrh r0, [r3, #0x14]\n" - " add r0, r0, #0x10\n" - " b ._69\n" - "._71:\n" - " .align 2, 0\n" - "._70:\n" - " .word gTasks\n" - "._68:\n" - " ldrh r0, [r3, #0x14]\n" - " add r0, r0, #0x1\n" - "._69:\n" - " strh r0, [r3, #0x14]\n" - " add r0, r2, r7\n" - " lsl r0, r0, #0x3\n" - " mov r2, r8\n" - " add r1, r0, r2\n" - " ldrh r0, [r1, #0x14]\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x8\n" - " cmp r0, r6\n" - " bhi ._72 @cond_branch\n" - " b ._117\n" - "._72:\n" - " strh r6, [r1, #0x14]\n" - " b ._117\n" - "._67:\n" - " ldrh r1, [r4, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._75 @cond_branch\n" - " ldrh r0, [r3, #0x16]\n" - " add r0, r0, #0x10\n" - " b ._76\n" - "._75:\n" - " ldrh r0, [r3, #0x16]\n" - " add r0, r0, #0x1\n" - "._76:\n" - " strh r0, [r3, #0x16]\n" - " add r0, r2, r7\n" - " lsl r0, r0, #0x3\n" - " mov r4, r8\n" - " add r1, r0, r4\n" - " ldrh r0, [r1, #0x16]\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x8\n" - " cmp r0, r6\n" - " bhi ._77 @cond_branch\n" - " b ._117\n" - "._77:\n" - " strh r6, [r1, #0x16]\n" - " b ._117\n" - "._66:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._80 @cond_branch\n" - " ldr r1, ._84\n" - " lsl r2, r6, #0x2\n" - " add r0, r2, r6\n" - " lsl r0, r0, #0x3\n" - " add r3, r0, r1\n" - " mov r5, #0x18\n" - " ldsh r0, [r3, r5]\n" - " mov r8, r1\n" - " cmp r0, #0\n" - " beq ._81 @cond_branch\n" - " ldrh r1, [r4, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._82 @cond_branch\n" - " ldrh r0, [r3, #0x14]\n" - " sub r0, r0, #0x10\n" - " b ._83\n" - "._85:\n" - " .align 2, 0\n" - "._84:\n" - " .word gTasks\n" - "._82:\n" - " ldrh r0, [r3, #0x14]\n" - " sub r0, r0, #0x1\n" - "._83:\n" - " strh r0, [r3, #0x14]\n" - " add r0, r2, r7\n" - " lsl r0, r0, #0x3\n" - " mov r2, r8\n" - " add r1, r0, r2\n" - " mov r4, #0x14\n" - " ldsh r0, [r1, r4]\n" - " cmp r0, #0xff\n" - " ble ._86 @cond_branch\n" - " b ._117\n" - "._86:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " strh r0, [r1, #0x14]\n" - " b ._117\n" - "._81:\n" - " ldrh r1, [r4, #0x2c]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._89 @cond_branch\n" - " ldrh r0, [r3, #0x16]\n" - " sub r0, r0, #0x10\n" - " b ._90\n" - "._89:\n" - " ldrh r0, [r3, #0x16]\n" - " sub r0, r0, #0x1\n" - "._90:\n" - " strh r0, [r3, #0x16]\n" - " add r0, r2, r7\n" - " lsl r0, r0, #0x3\n" - " mov r5, r8\n" - " add r1, r0, r5\n" - " mov r2, #0x16\n" - " ldsh r0, [r1, r2]\n" - " cmp r0, #0xff\n" - " ble ._91 @cond_branch\n" - " b ._117\n" - "._91:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " strh r0, [r1, #0x16]\n" - " b ._117\n" - "._80:\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._94 @cond_branch\n" - " ldr r0, ._97\n" - " lsl r1, r6, #0x2\n" - " add r1, r1, r6\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " mov r4, #0x18\n" - " ldsh r0, [r1, r4]\n" - " cmp r0, #0\n" - " beq ._95 @cond_branch\n" - " ldrh r0, [r1, #0x10]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1, #0x10]\n" - " b ._117\n" - "._98:\n" - " .align 2, 0\n" - "._97:\n" - " .word gTasks\n" - "._95:\n" - " ldrh r0, [r1, #0x12]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1, #0x12]\n" - " b ._117\n" - "._94:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._100 @cond_branch\n" - " ldr r0, ._103\n" - " lsl r1, r6, #0x2\n" - " add r1, r1, r6\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " mov r5, #0x18\n" - " ldsh r0, [r1, r5]\n" - " cmp r0, #0\n" - " beq ._101 @cond_branch\n" - " ldrh r0, [r1, #0x10]\n" - " add r0, r0, #0x1\n" - " strh r0, [r1, #0x10]\n" - " b ._117\n" - "._104:\n" - " .align 2, 0\n" - "._103:\n" - " .word gTasks\n" - "._101:\n" - " ldrh r0, [r1, #0x12]\n" - " add r0, r0, #0x1\n" - " strh r0, [r1, #0x12]\n" - " b ._117\n" - "._100:\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._106 @cond_branch\n" - " ldr r2, ._109\n" - " lsl r3, r6, #0x2\n" - " add r0, r3, r6\n" - " lsl r0, r0, #0x3\n" - " add r6, r0, r2\n" - " ldrh r4, [r6, #0x8]\n" - " mov r0, #0x8\n" - " ldsh r1, [r6, r0]\n" - " ldr r0, ._109 + 4\n" - " mov r8, r2\n" - " add r2, r3, #0\n" - " cmp r1, r0\n" - " bgt ._107 @cond_branch\n" - " add r0, r4, #1\n" - " strh r0, [r6, #0x8]\n" - " b ._108\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word gTasks\n" - " .word 0x181\n" - "._107:\n" - " strh r5, [r6, #0x8]\n" - "._108:\n" - " add r4, r2, r7\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r8\n" - " mov r2, #0xc\n" - " ldsh r1, [r4, r2]\n" - " b ._111\n" - "._106:\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._112 @cond_branch\n" - " ldr r1, ._115\n" - " lsl r2, r6, #0x2\n" - " add r0, r2, r6\n" - " lsl r0, r0, #0x3\n" - " add r3, r0, r1\n" - " ldrh r6, [r3, #0x8]\n" - " mov r4, #0x8\n" - " ldsh r0, [r3, r4]\n" - " mov r8, r1\n" - " cmp r0, #0x1\n" - " ble ._113 @cond_branch\n" - " sub r0, r6, #1\n" - " b ._114\n" - "._116:\n" - " .align 2, 0\n" - "._115:\n" - " .word gTasks\n" - "._113:\n" - " mov r0, #0xc1\n" - " lsl r0, r0, #0x1\n" - "._114:\n" - " strh r0, [r3, #0x8]\n" - " add r4, r2, r7\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r8\n" - " mov r5, #0xc\n" - " ldsh r1, [r4, r5]\n" - "._111:\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r5, ._118\n" - " add r0, r0, r5\n" - " bl DestroySprite\n" - " mov r0, #0xe\n" - " ldsh r1, [r4, r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r5\n" - " bl DestroySprite\n" - " ldr r0, ._118 + 4\n" - " str r0, [r4]\n" - " b ._117\n" - "._119:\n" - " .align 2, 0\n" - "._118:\n" - " .word gSprites\n" - " .word debug_80C3A50+1\n" - "._112:\n" - " ldr r0, ._120\n" - " lsl r5, r7, #0x2\n" - " add r5, r5, r7\n" - " lsl r5, r5, #0x3\n" - " add r5, r5, r0\n" - " ldrh r4, [r5, #0x16]\n" - " ldrh r6, [r5, #0x12]\n" - " str r4, [sp]\n" - " mov r0, #0x1\n" - " add r1, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl SetOamMatrix\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x3\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " add r0, r6, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x7\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " ldr r2, ._120 + 4\n" - " mov r8, r2\n" - " mov r4, #0xc\n" - " ldsh r1, [r5, r4]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r8\n" - " strh r6, [r0, #0x26]\n" - " ldrh r4, [r5, #0x14]\n" - " ldrh r6, [r5, #0x10]\n" - " str r4, [sp]\n" - " mov r0, #0x2\n" - " add r1, r4, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl SetOamMatrix\n" - " add r0, r4, #0\n" - " mov r1, #0x19\n" - " mov r2, #0x3\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " add r0, r6, #0\n" - " mov r1, #0x19\n" - " mov r2, #0x7\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " mov r0, #0xe\n" - " ldsh r1, [r5, r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r8\n" - " strh r6, [r0, #0x26]\n" - " ldr r2, ._120 + 8\n" - " mov r4, #0x18\n" - " ldsh r1, [r5, r4]\n" - " lsl r1, r1, #0x6\n" - " add r0, r1, #0\n" - " add r0, r0, #0x38\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, #0x78\n" - " add r0, r0, r1\n" - " strh r0, [r2]\n" - "._117:\n" - " add sp, sp, #0x4\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._121:\n" - " .align 2, 0\n" - "._120:\n" - " .word gTasks\n" - " .word gSprites\n" - " .word 0x4000040\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C405C() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r5, r1, #0x10\n" - " mov r2, #0x0\n" - " mov r1, #0x0\n" - "._122:\n" - " add r0, r4, r2\n" - " strb r1, [r0]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x9\n" - " bls ._122 @cond_branch\n" - " add r0, r4, r2\n" - " mov r1, #0xff\n" - " strb r1, [r0]\n" - " mov r0, #0xae\n" - " strb r0, [r4]\n" - " cmp r5, #0\n" - " beq ._125 @cond_branch\n" - " mov r2, #0x0\n" - " ldr r3, ._127\n" - " mov r0, #0xb\n" - " add r1, r5, #0\n" - " mul r1, r1, r0\n" - " add r0, r1, r3\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._125 @cond_branch\n" - " add r5, r3, #0\n" - " add r3, r1, #0\n" - "._126:\n" - " add r1, r4, r2\n" - " add r0, r2, r3\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " add r0, r2, r3\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._125 @cond_branch\n" - " cmp r2, #0x9\n" - " bls ._126 @cond_branch\n" - "._125:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._128:\n" - " .align 2, 0\n" - "._127:\n" - " .word gSpeciesNames\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C40C4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " mov r5, #0x0\n" - " mov r6, sp\n" - "._135:\n" - " cmp r7, #0\n" - " beq ._129 @cond_branch\n" - " mov r0, #0x64\n" - " add r1, r5, #0\n" - " mul r1, r1, r0\n" - " ldr r0, ._132\n" - " add r4, r1, r0\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " beq ._134 @cond_branch\n" - " add r0, r4, #0\n" - " bl CalculateMonStats\n" - " add r0, r4, #0\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " strh r0, [r6]\n" - " add r0, r4, #0\n" - " mov r1, #0x39\n" - " mov r2, sp\n" - " bl SetMonData\n" - " b ._134\n" - "._133:\n" - " .align 2, 0\n" - "._132:\n" - " .word gEnemyParty\n" - "._129:\n" - " mov r0, #0x64\n" - " add r1, r5, #0\n" - " mul r1, r1, r0\n" - " ldr r0, ._136\n" - " add r4, r1, r0\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " beq ._134 @cond_branch\n" - " add r0, r4, #0\n" - " bl CalculateMonStats\n" - " add r0, r4, #0\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " strh r0, [r6]\n" - " add r0, r4, #0\n" - " mov r1, #0x39\n" - " mov r2, sp\n" - " bl SetMonData\n" - "._134:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x5\n" - " bls ._135 @cond_branch\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._137:\n" - " .align 2, 0\n" - "._136:\n" - " .word gPlayerParty\n" - "\n" - ); -} - -__attribute__((naked)) -void InitBattleForDebug() -{ - asm( - " push {lr}\n" - " bl SavePlayerParty\n" - " ldr r1, ._138\n" - " ldr r0, ._138 + 4\n" - " ldrb r2, [r0, #0x8]\n" - " mov r0, #0x0\n" - " strb r2, [r1, #0xd]\n" - " strb r0, [r1]\n" - " strb r0, [r1, #0x1]\n" - " strb r0, [r1, #0x2]\n" - " strb r0, [r1, #0x3]\n" - " strb r0, [r1, #0x4]\n" - " strb r0, [r1, #0x5]\n" - " strb r0, [r1, #0x6]\n" - " strb r0, [r1, #0x7]\n" - " strb r0, [r1, #0x8]\n" - " strb r0, [r1, #0xc]\n" - " ldr r1, ._138 + 8\n" - " str r0, [r1]\n" - " bl ZeroPlayerPartyMons\n" - " bl ZeroEnemyPartyMons\n" - " mov r0, #0x0\n" - " bl debug_80C4214\n" - " ldr r0, ._138 + 12\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._139:\n" - " .align 2, 0\n" - "._138:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gSaveBlock2\n" - " .word byte_3005E30\n" - " .word debug_80C47BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C41A8() -{ - asm( - " push {lr}\n" - " ldr r1, ._140\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0x1]\n" - " strb r0, [r1, #0x2]\n" - " bl ZeroPlayerPartyMons\n" - " bl ZeroEnemyPartyMons\n" - " mov r0, #0x0\n" - " bl debug_80C4214\n" - " ldr r0, ._140 + 4\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._141:\n" - " .align 2, 0\n" - "._140:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word debug_80C47BC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C41D4() -{ - asm( - " push {lr}\n" - " mov r0, #0x0\n" - " bl debug_80C40C4\n" - " mov r0, #0x0\n" - " bl debug_80C4214\n" - " ldr r0, ._142\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._143:\n" - " .align 2, 0\n" - "._142:\n" - " .word debug_80C42B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C41F4() -{ - asm( - " push {lr}\n" - " mov r0, #0x1\n" - " bl debug_80C40C4\n" - " mov r0, #0x1\n" - " bl debug_80C4214\n" - " ldr r0, ._144\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._145:\n" - " .align 2, 0\n" - "._144:\n" - " .word debug_80C42B8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4214() -{ - asm( - " push {r4, r5, r6, lr}\n" - " bl debug_80C35DC\n" - " ldr r6, ._146\n" - " mov r4, #0x0\n" - " strh r4, [r6]\n" - " ldr r5, ._146 + 4\n" - " strh r4, [r5]\n" - " ldr r0, ._146 + 8\n" - " strh r4, [r0]\n" - " add r0, r0, #0x4\n" - " strh r4, [r0]\n" - " ldr r1, ._146 + 12\n" - " ldr r2, ._146 + 16\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " mov r0, #0x31\n" - " strh r0, [r1]\n" - " add r1, r1, #0x6\n" - " mov r0, #0xe1\n" - " strh r0, [r1]\n" - " ldr r0, ._146 + 20\n" - " strh r4, [r0]\n" - " add r1, r1, #0x4\n" - " mov r0, #0x7\n" - " strh r0, [r1]\n" - " ldr r3, ._146 + 24\n" - " ldrh r2, [r3]\n" - " strh r4, [r3]\n" - " ldr r4, ._146 + 28\n" - " ldrh r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strh r0, [r4]\n" - " strh r2, [r3]\n" - " ldr r0, ._146 + 32\n" - " bl SetVBlankCallback\n" - " ldr r0, ._146 + 36\n" - " bl SetMainCallback2\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x13\n" - " ldr r2, ._146 + 40\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._146 + 44\n" - " add r0, r1, #0\n" - " strh r0, [r6]\n" - " ldr r2, ._146 + 48\n" - " add r0, r2, #0\n" - " strh r0, [r5]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._147:\n" - " .align 2, 0\n" - "._146:\n" - " .word 0x4000040\n" - " .word 0x4000044\n" - " .word 0x4000042\n" - " .word 0x4000048\n" - " .word 0x1111\n" - " .word 0x4000052\n" - " .word 0x4000208\n" - " .word 0x4000200\n" - " .word debug_80C3758+1\n" - " .word debug_80C370C+1\n" - " .word 0x7140\n" - " .word 0x1ef\n" - " .word 0x819f\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C42B8() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xffffffe4\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._150\n" - " mov r0, sp\n" - " mov r2, #0xc\n" - " bl memcpy\n" - " add r4, sp, #0xc\n" - " ldr r1, ._150 + 4\n" - " add r0, r4, #0\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " mov r0, #0x0\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0x14\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " bl debug_80C4694\n" - " bl debug_80C4704\n" - " ldr r0, ._150 + 8\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._148 @cond_branch\n" - " ldr r0, ._150 + 12\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._150 + 16\n" - " b ._149\n" - "._151:\n" - " .align 2, 0\n" - "._150:\n" - " .word gUnknown_Debug_083F8194\n" - " .word gUnknown_Debug_083F81A0\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gTasks\n" - " .word debug_80C44EC+1\n" - "._148:\n" - " ldr r0, ._152\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._152 + 4\n" - "._149:\n" - " str r0, [r1]\n" - " add sp, sp, #0x1c\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._153:\n" - " .align 2, 0\n" - "._152:\n" - " .word gTasks\n" - " .word debug_80C4348+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4348() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r0, ._154\n" - " ldrb r0, [r0, #0x1]\n" - " lsl r0, r0, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r0, r0, r1\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " str r1, [sp]\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r1, ._154 + 4\n" - " ldr r2, ._154 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " add r2, r2, #0x8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._154 + 12\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._154 + 16\n" - " str r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._155:\n" - " .align 2, 0\n" - "._154:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word 0x4000042\n" - " .word 0x177\n" - " .word gTasks\n" - " .word debug_80C43A8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C43A8() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r1, ._158\n" - " ldrh r2, [r1, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " add r3, r1, #0\n" - " cmp r0, #0\n" - " beq ._156 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._158 + 4\n" - " ldrb r1, [r0, #0x1]\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._158 + 8\n" - " add r0, r0, r1\n" - " ldr r1, ._158 + 12\n" - " bl debug_sub_80A433C\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " b ._180\n" - "._159:\n" - " .align 2, 0\n" - "._158:\n" - " .word gMain\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gPlayerParty\n" - " .word debug_80C41D4+1\n" - "._156:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._160 @cond_branch\n" - " ldr r0, ._162\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._162 + 4\n" - " str r0, [r1]\n" - " b ._180\n" - "._163:\n" - " .align 2, 0\n" - "._162:\n" - " .word gTasks\n" - " .word debug_80C4F48+1\n" - "._160:\n" - " mov r0, #0x8\n" - " and r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " lsr r1, r0, #0x10\n" - " cmp r1, #0\n" - " beq ._164 @cond_branch\n" - " bl debug_80C4774\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._180 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " bl CalculatePlayerPartyCount\n" - " bl CalculateEnemyPartyCount\n" - " ldr r0, ._167\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._167 + 4\n" - " str r0, [r1]\n" - " b ._180\n" - "._168:\n" - " .align 2, 0\n" - "._167:\n" - " .word gTasks\n" - " .word debug_80C4D14+1\n" - "._164:\n" - " mov r0, #0x88\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._169 @cond_branch\n" - " str r1, [sp]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r0, ._171\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._171 + 4\n" - " str r0, [r1]\n" - " b ._180\n" - "._172:\n" - " .align 2, 0\n" - "._171:\n" - " .word gTasks\n" - " .word debug_80C44EC+1\n" - "._169:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._174 @cond_branch\n" - " ldr r1, ._176\n" - " ldrb r0, [r1, #0x1]\n" - " cmp r0, #0\n" - " beq ._174 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0x1]\n" - " b ._175\n" - "._177:\n" - " .align 2, 0\n" - "._176:\n" - " .word gUnknown_Debug_2038A0C\n" - "._174:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._180 @cond_branch\n" - " ldr r5, ._181\n" - " ldrb r0, [r5, #0x1]\n" - " cmp r0, #0x4\n" - " bhi ._180 @cond_branch\n" - " add r1, r0, #0\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._181 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " beq ._180 @cond_branch\n" - " ldrb r0, [r5, #0x1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r5, #0x1]\n" - "._175:\n" - " ldr r1, ._181 + 8\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._181 + 12\n" - " str r1, [r0]\n" - "._180:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gPlayerParty\n" - " .word gTasks\n" - " .word debug_80C4348+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C44EC() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r0, ._183\n" - " ldrb r0, [r0, #0x2]\n" - " lsl r0, r0, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r0, r0, r1\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " str r1, [sp]\n" - " mov r1, #0x10\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r1, ._183 + 4\n" - " ldr r2, ._183 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._183 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._183 + 16\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._183 + 20\n" - " str r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word 0x4000042\n" - " .word 0x79ef\n" - " .word 0x17f\n" - " .word gTasks\n" - " .word debug_80C4550+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4550() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r1, ._187\n" - " ldrh r2, [r1, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " add r3, r1, #0\n" - " cmp r0, #0\n" - " beq ._185 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._187 + 4\n" - " ldrb r1, [r0, #0x2]\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._187 + 8\n" - " add r0, r0, r1\n" - " ldr r1, ._187 + 12\n" - " bl debug_sub_80A433C\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " b ._209\n" - "._188:\n" - " .align 2, 0\n" - "._187:\n" - " .word gMain\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gEnemyParty\n" - " .word debug_80C41F4+1\n" - "._185:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._189 @cond_branch\n" - " ldr r0, ._191\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._191 + 4\n" - " str r0, [r1]\n" - " b ._209\n" - "._192:\n" - " .align 2, 0\n" - "._191:\n" - " .word gTasks\n" - " .word debug_80C4F48+1\n" - "._189:\n" - " mov r0, #0x8\n" - " and r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " lsr r1, r0, #0x10\n" - " cmp r1, #0\n" - " beq ._193 @cond_branch\n" - " bl debug_80C4774\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " bl CalculatePlayerPartyCount\n" - " bl CalculateEnemyPartyCount\n" - " ldr r0, ._196\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._196 + 4\n" - " str r0, [r1]\n" - " b ._209\n" - "._197:\n" - " .align 2, 0\n" - "._196:\n" - " .word gTasks\n" - " .word debug_80C4D14+1\n" - "._193:\n" - " mov r0, #0x88\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._198 @cond_branch\n" - " str r1, [sp]\n" - " mov r0, #0x0\n" - " mov r1, #0x10\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r0, ._200\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._200 + 4\n" - " str r0, [r1]\n" - " b ._209\n" - "._201:\n" - " .align 2, 0\n" - "._200:\n" - " .word gTasks\n" - " .word debug_80C4348+1\n" - "._198:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._203 @cond_branch\n" - " ldr r1, ._205\n" - " ldrb r0, [r1, #0x2]\n" - " cmp r0, #0\n" - " beq ._203 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0x2]\n" - " b ._204\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word gUnknown_Debug_2038A0C\n" - "._203:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - " ldr r5, ._210\n" - " ldrb r0, [r5, #0x2]\n" - " cmp r0, #0x4\n" - " bhi ._209 @cond_branch\n" - " add r1, r0, #0\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._210 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - " ldrb r0, [r5, #0x2]\n" - " add r0, r0, #0x1\n" - " strb r0, [r5, #0x2]\n" - "._204:\n" - " ldr r1, ._210 + 8\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._210 + 12\n" - " str r1, [r0]\n" - "._209:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._211:\n" - " .align 2, 0\n" - "._210:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gEnemyParty\n" - " .word gTasks\n" - " .word debug_80C44EC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4694() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xffffffe4\n" - " ldr r1, ._213\n" - " mov r0, sp\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, sp\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r4, #0x0\n" - " add r5, sp, #0x10\n" - "._212:\n" - " mov r0, #0x64\n" - " mul r0, r0, r4\n" - " ldr r1, ._213 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r5, #0\n" - " bl debug_80C405C\n" - " lsl r2, r4, #0x19\n" - " mov r0, #0xc0\n" - " lsl r0, r0, #0x12\n" - " add r2, r2, r0\n" - " lsr r2, r2, #0x18\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " bl Menu_PrintText\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x5\n" - " bls ._212 @cond_branch\n" - " add sp, sp, #0x1c\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word gUnknown_Debug_083F81AD\n" - " .word gPlayerParty\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4704() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xffffffe4\n" - " ldr r1, ._216\n" - " mov r0, sp\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " mov r0, #0xf\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, sp\n" - " mov r1, #0x11\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r4, #0x0\n" - " add r5, sp, #0x10\n" - "._215:\n" - " mov r0, #0x64\n" - " mul r0, r0, r4\n" - " ldr r1, ._216 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r5, #0\n" - " bl debug_80C405C\n" - " lsl r2, r4, #0x19\n" - " mov r0, #0xc0\n" - " lsl r0, r0, #0x12\n" - " add r2, r2, r0\n" - " lsr r2, r2, #0x18\n" - " add r0, r5, #0\n" - " mov r1, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x5\n" - " bls ._215 @cond_branch\n" - " add sp, sp, #0x1c\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._217:\n" - " .align 2, 0\n" - "._216:\n" - " .word gUnknown_Debug_083F81BA\n" - " .word gEnemyParty\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4774() -{ - asm( - " push {r4, lr}\n" - " ldr r0, ._221\n" - " ldrb r0, [r0, #0xc]\n" - " sub r0, r0, #0x1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x64\n" - " add r4, r0, #0\n" - " mul r4, r4, r1\n" - " ldr r0, ._221 + 4\n" - " add r0, r4, r0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " beq ._219 @cond_branch\n" - " ldr r0, ._221 + 8\n" - " add r0, r4, r0\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " beq ._219 @cond_branch\n" - " mov r0, #0x1\n" - " b ._220\n" - "._222:\n" - " .align 2, 0\n" - "._221:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gPlayerParty\n" - " .word gEnemyParty\n" - "._219:\n" - " mov r0, #0x0\n" - "._220:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C47BC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xffffffc0\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " ldr r1, ._224\n" - " mov r0, sp\n" - " mov r2, #0xf\n" - " bl memcpy\n" - " add r4, sp, #0x10\n" - " ldr r1, ._224 + 4\n" - " add r0, r4, #0\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " add r6, sp, #0x20\n" - " ldr r1, ._224 + 8\n" - " add r0, r6, #0\n" - " mov r2, #0xf\n" - " bl memcpy\n" - " add r5, sp, #0x30\n" - " ldr r1, ._224 + 12\n" - " add r0, r5, #0\n" - " mov r2, #0x10\n" - " bl memcpy\n" - " mov r0, #0x0\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0x14\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r6, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r4, #0x0\n" - " ldr r6, ._224 + 16\n" - "._223:\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r6\n" - " ldr r0, [r0]\n" - " lsl r2, r4, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r2, r2, r1\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0x2\n" - " bl Menu_PrintText\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x4\n" - " bls ._223 @cond_branch\n" - " mov r0, #0xf\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r5, #0\n" - " mov r1, #0x11\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._224 + 20\n" - " ldrb r0, [r0, #0x4]\n" - " bl debug_80C4C44\n" - " ldr r1, ._224 + 24\n" - " lsl r0, r7, #0x2\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._224 + 28\n" - " str r1, [r0]\n" - " add sp, sp, #0x40\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._225:\n" - " .align 2, 0\n" - "._224:\n" - " .word gUnknown_Debug_083F81C7\n" - " .word gUnknown_Debug_083F81A0\n" - " .word gUnknown_Debug_083F81D6\n" - " .word gUnknown_Debug_083F81E5\n" - " .word gUnknown_Debug_083F8068\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gTasks\n" - " .word debug_80C48A0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C48A0() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r0, ._226\n" - " ldrb r0, [r0, #0x3]\n" - " lsl r0, r0, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r0, r0, r1\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " str r1, [sp]\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r1, ._226 + 4\n" - " ldr r2, ._226 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " add r2, r2, #0x8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._226 + 12\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._226 + 16\n" - " str r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word 0x4000042\n" - " .word 0x177\n" - " .word gTasks\n" - " .word debug_80C4900+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4900() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._230\n" - " ldrh r2, [r1, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r3, r1, #0\n" - " cmp r4, #0\n" - " beq ._228 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._230 + 4\n" - " bl SetMainCallback2\n" - " bl LoadPlayerParty\n" - " ldr r1, ._230 + 8\n" - " ldr r0, ._230 + 12\n" - " ldrb r0, [r0, #0xd]\n" - " strb r0, [r1, #0x8]\n" - " ldr r0, ._230 + 16\n" - " mov r1, #0x0\n" - " strh r4, [r0]\n" - " ldr r0, ._230 + 20\n" - " strb r1, [r0]\n" - " ldr r1, ._230 + 24\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._230 + 28\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word gMain\n" - " .word debug_80C370C+1\n" - " .word gSaveBlock2\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gBattleTypeFlags\n" - " .word gUnknown_02023A14_50\n" - " .word gTasks\n" - " .word debug_80C373C+1\n" - "._228:\n" - " mov r0, #0x8\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._232 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._233 @cond_branch\n" - "._232:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._236\n" - " ldr r3, ._236 + 4\n" - " ldr r2, ._236 + 8\n" - " ldrb r0, [r2, #0x3]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r3\n" - " ldrb r0, [r0, #0x4]\n" - " strh r0, [r1]\n" - " ldr r1, ._236 + 12\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " ldrb r0, [r2, #0x3]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r3\n" - " ldrb r0, [r0, #0x5]\n" - " strb r0, [r2, #0xc]\n" - " ldrb r0, [r2, #0x3]\n" - " sub r0, r0, #0x1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bhi ._234 @cond_branch\n" - " str r4, [sp]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r0, ._236 + 16\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._236 + 20\n" - " str r0, [r1]\n" - " b ._247\n" - "._237:\n" - " .align 2, 0\n" - "._236:\n" - " .word gBattleTypeFlags\n" - " .word gUnknown_Debug_083F8068\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gUnknown_02023A14_50\n" - " .word gTasks\n" - " .word debug_80C4A60+1\n" - "._234:\n" - " ldr r0, ._239\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._239 + 4\n" - " str r0, [r1]\n" - " b ._247\n" - "._240:\n" - " .align 2, 0\n" - "._239:\n" - " .word gTasks\n" - " .word debug_80C4F48+1\n" - "._233:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._242 @cond_branch\n" - " ldr r1, ._244\n" - " ldrb r0, [r1, #0x3]\n" - " cmp r0, #0\n" - " beq ._242 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._243\n" - "._245:\n" - " .align 2, 0\n" - "._244:\n" - " .word gUnknown_Debug_2038A0C\n" - "._242:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._247 @cond_branch\n" - " ldr r1, ._248\n" - " ldrb r0, [r1, #0x3]\n" - " cmp r0, #0x1\n" - " bhi ._247 @cond_branch\n" - " add r0, r0, #0x1\n" - "._243:\n" - " strb r0, [r1, #0x3]\n" - " ldr r1, ._248 + 4\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._248 + 8\n" - "._229:\n" - " str r1, [r0]\n" - "._247:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gTasks\n" - " .word debug_80C48A0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4A60() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r0, ._250\n" - " ldrb r0, [r0, #0x5]\n" - " lsl r0, r0, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r0, r0, r1\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " str r1, [sp]\n" - " mov r1, #0x10\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r1, ._250 + 4\n" - " ldr r2, ._250 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._250 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._250 + 16\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._250 + 20\n" - " str r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._251:\n" - " .align 2, 0\n" - "._250:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word 0x4000042\n" - " .word 0x79ef\n" - " .word 0x17f\n" - " .word gTasks\n" - " .word debug_80C4AC4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4AC4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r7, ._255\n" - " ldrb r0, [r7, #0x4]\n" - " mov ip, r0\n" - " ldrb r5, [r7, #0x5]\n" - " mov r1, ip\n" - " add r0, r1, r5\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " ldr r2, ._255 + 4\n" - " mov r8, r2\n" - " ldrh r2, [r2, #0x2e]\n" - " mov r3, #0x1\n" - " and r3, r3, r2\n" - " add r4, r7, #0\n" - " cmp r3, #0\n" - " beq ._252 @cond_branch\n" - " ldr r0, ._255 + 8\n" - " lsl r1, r1, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r1, [r1]\n" - " ldr r3, ._255 + 12\n" - " ldr r2, [r3]\n" - " add r0, r2, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._253 @cond_branch\n" - " ldr r0, ._255 + 16\n" - " eor r1, r1, r0\n" - " and r2, r2, r1\n" - " b ._254\n" - "._256:\n" - " .align 2, 0\n" - "._255:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gMain\n" - " .word gUnknown_Debug_083F80D8\n" - " .word byte_3005E30\n" - " .word 0xffff\n" - "._253:\n" - " orr r2, r2, r1\n" - "._254:\n" - " str r2, [r3]\n" - " ldrb r0, [r4, #0x4]\n" - " bl debug_80C4C44\n" - " ldr r1, ._258\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._258 + 4\n" - " str r1, [r0]\n" - " b ._274\n" - "._259:\n" - " .align 2, 0\n" - "._258:\n" - " .word gTasks\n" - " .word debug_80C4A60+1\n" - "._252:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " cmp r4, #0\n" - " beq ._260 @cond_branch\n" - " str r3, [sp]\n" - " mov r0, #0x0\n" - " mov r1, #0x10\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r0, ._262\n" - " lsl r1, r6, #0x2\n" - " add r1, r1, r6\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._262 + 4\n" - " b ._261\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gTasks\n" - " .word debug_80C48A0+1\n" - "._260:\n" - " mov r0, #0x8\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._264 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._266\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x3\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._266 + 4\n" - " ldrb r2, [r1, #0x1]\n" - " mov r0, #0x11\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " strb r0, [r1, #0x1]\n" - " mov r0, #0xac\n" - " strb r0, [r1, #0x2]\n" - " mov r0, #0xff\n" - " strb r0, [r1, #0x3]\n" - " strb r4, [r1, #0x9]\n" - " strb r4, [r1, #0xa]\n" - " strb r4, [r1, #0xb]\n" - " strb r4, [r1, #0xc]\n" - " ldr r1, ._266 + 8\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._266 + 12\n" - " str r1, [r0]\n" - " b ._274\n" - "._267:\n" - " .align 2, 0\n" - "._266:\n" - " .word gTrainerBattleOpponent\n" - " .word +0x2017000\n" - " .word gTasks\n" - " .word debug_80C4F48+1\n" - "._264:\n" - " mov r0, r8\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._268 @cond_branch\n" - " lsl r0, r5, #0x18\n" - " cmp r0, #0\n" - " beq ._269 @cond_branch\n" - " sub r0, r5, #1\n" - " strb r0, [r7, #0x5]\n" - " b ._277\n" - "._269:\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " cmp r0, #0\n" - " beq ._277 @cond_branch\n" - " mov r0, ip\n" - " sub r0, r0, #0x1\n" - " b ._272\n" - "._268:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._274 @cond_branch\n" - " lsl r0, r5, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x8\n" - " bhi ._274 @cond_branch\n" - " cmp r0, #0x4\n" - " bhi ._275 @cond_branch\n" - " add r0, r5, #1\n" - " strb r0, [r7, #0x5]\n" - " b ._277\n" - "._275:\n" - " mov r2, ip\n" - " lsl r0, r2, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x3\n" - " bhi ._277 @cond_branch\n" - " mov r0, ip\n" - " add r0, r0, #0x1\n" - "._272:\n" - " strb r0, [r7, #0x4]\n" - " ldrb r0, [r7, #0x4]\n" - " bl debug_80C4C44\n" - "._277:\n" - " ldr r0, ._278\n" - " lsl r1, r6, #0x2\n" - " add r1, r1, r6\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._278 + 4\n" - "._261:\n" - " str r0, [r1]\n" - "._274:\n" - " add sp, sp, #0x4\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._279:\n" - " .align 2, 0\n" - "._278:\n" - " .word gTasks\n" - " .word debug_80C4A60+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4C44() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffff0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov sl, r0\n" - " mov r2, #0x0\n" - " mov r5, sp\n" - "._290:\n" - " mov r0, sl\n" - " add r6, r2, r0\n" - " add r4, r6, #0\n" - " add r1, r2, #1\n" - " mov r8, r1\n" - " cmp r4, #0x9\n" - " bgt ._280 @cond_branch\n" - " mov r3, #0x0\n" - " ldr r1, ._288\n" - " lsl r0, r4, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " ldrb r0, [r0]\n" - " ldr r7, ._288 + 4\n" - " mov r9, r7\n" - " lsl r2, r2, #0x1\n" - " mov ip, r2\n" - " cmp r0, #0xff\n" - " beq ._282 @cond_branch\n" - " add r7, r1, #0\n" - "._283:\n" - " add r0, r3, #3\n" - " mov r1, sp\n" - " add r2, r1, r0\n" - " lsl r1, r6, #0x3\n" - " add r1, r1, r7\n" - " ldr r0, [r1]\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " strb r0, [r2]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " ldr r0, [r1]\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._282 @cond_branch\n" - " cmp r3, #0xb\n" - " bls ._283 @cond_branch\n" - "._282:\n" - " cmp r3, #0xb\n" - " bhi ._284 @cond_branch\n" - " mov r1, #0x0\n" - "._285:\n" - " add r0, r3, #3\n" - " add r0, r0, sp\n" - " strb r1, [r0]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0xb\n" - " bls ._285 @cond_branch\n" - "._284:\n" - " mov r0, #0xff\n" - " strb r0, [r5, #0xe]\n" - " mov r0, #0xfc\n" - " strb r0, [r5]\n" - " mov r2, #0x1\n" - " strb r2, [r5, #0x1]\n" - " add r1, r2, #0\n" - " LSL r1, r4\n" - " mov r3, r9\n" - " ldr r0, [r3]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._286 @cond_branch\n" - " mov r0, #0x3\n" - " strb r0, [r5, #0x2]\n" - " b ._287\n" - "._289:\n" - " .align 2, 0\n" - "._288:\n" - " .word gUnknown_Debug_083F80D8\n" - " .word byte_3005E30\n" - "._286:\n" - " strb r2, [r5, #0x2]\n" - "._287:\n" - " mov r2, ip\n" - " add r2, r2, #0x3\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r0, sp\n" - " mov r1, #0x11\n" - " bl Menu_PrintText\n" - "._280:\n" - " mov r7, r8\n" - " lsl r0, r7, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x5\n" - " bls ._290 @cond_branch\n" - " add sp, sp, #0x10\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4D14() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xffffffd0\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._291\n" - " mov r0, sp\n" - " mov r2, #0xf\n" - " bl memcpy\n" - " add r5, sp, #0x10\n" - " ldr r1, ._291 + 4\n" - " add r0, r5, #0\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " add r6, sp, #0x20\n" - " ldr r1, ._291 + 8\n" - " add r0, r6, #0\n" - " mov r2, #0xf\n" - " bl memcpy\n" - " mov r0, #0x0\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " mov r1, #0x14\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r6, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._291 + 12\n" - " ldrb r0, [r0, #0x6]\n" - " bl debug_80C4F00\n" - " mov r0, #0xf\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._291 + 16\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._291 + 20\n" - " str r1, [r0]\n" - " add sp, sp, #0x30\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._292:\n" - " .align 2, 0\n" - "._291:\n" - " .word gUnknown_Debug_083F81C7\n" - " .word gUnknown_Debug_083F81F5\n" - " .word gUnknown_Debug_083F8202\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gTasks\n" - " .word debug_80C4DB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4DB8() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r0, ._293\n" - " ldrb r0, [r0, #0x7]\n" - " lsl r0, r0, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r0, r0, r1\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " str r1, [sp]\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r1, ._293 + 4\n" - " ldr r2, ._293 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " add r2, r2, #0x8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._293 + 12\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._293 + 16\n" - " str r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._294:\n" - " .align 2, 0\n" - "._293:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word 0x4000042\n" - " .word 0x177\n" - " .word gTasks\n" - " .word debug_80C4E18+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4E18() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r5, ._297\n" - " ldrb r3, [r5, #0x6]\n" - " ldrb r2, [r5, #0x7]\n" - " add r0, r3, r2\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r7, ._297 + 4\n" - " ldrh r1, [r7, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._295 @cond_branch\n" - " ldr r0, ._297 + 8\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._297 + 12\n" - " b ._296\n" - "._298:\n" - " .align 2, 0\n" - "._297:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gMain\n" - " .word gTasks\n" - " .word debug_80C42B8+1\n" - "._295:\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._299 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._300 @cond_branch\n" - "._299:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r2, ._302\n" - " ldr r1, ._302 + 4\n" - " lsl r0, r6, #0x3\n" - " add r0, r0, r1\n" - " ldrb r0, [r0, #0x4]\n" - " strb r0, [r2]\n" - " ldr r1, ._302 + 8\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._302 + 12\n" - " str r1, [r0]\n" - " b ._310\n" - "._303:\n" - " .align 2, 0\n" - "._302:\n" - " .word gBattleTerrain\n" - " .word gUnknown_Debug_083F814C\n" - " .word gTasks\n" - " .word debug_80C5158+1\n" - "._300:\n" - " ldrh r1, [r7, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._304 @cond_branch\n" - " lsl r0, r2, #0x18\n" - " cmp r0, #0\n" - " beq ._305 @cond_branch\n" - " sub r0, r2, #1\n" - " strb r0, [r5, #0x7]\n" - " b ._313\n" - "._305:\n" - " lsl r0, r3, #0x18\n" - " cmp r0, #0\n" - " beq ._313 @cond_branch\n" - " sub r0, r3, #1\n" - " b ._308\n" - "._304:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._310 @cond_branch\n" - " lsl r0, r2, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x7\n" - " bhi ._310 @cond_branch\n" - " cmp r0, #0x4\n" - " bhi ._311 @cond_branch\n" - " add r0, r2, #1\n" - " strb r0, [r5, #0x7]\n" - " b ._313\n" - "._311:\n" - " lsl r0, r3, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x2\n" - " bhi ._313 @cond_branch\n" - " add r0, r3, #1\n" - "._308:\n" - " strb r0, [r5, #0x6]\n" - " ldrb r0, [r5, #0x6]\n" - " bl debug_80C4F00\n" - "._313:\n" - " ldr r0, ._314\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._314 + 4\n" - "._296:\n" - " str r0, [r1]\n" - "._310:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._315:\n" - " .align 2, 0\n" - "._314:\n" - " .word gTasks\n" - " .word debug_80C4DB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4F00() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " mov r0, #0x1\n" - " mov r1, #0x3\n" - " mov r2, #0xd\n" - " mov r3, #0xe\n" - " bl Menu_BlankWindowRect\n" - " mov r4, #0x0\n" - " ldr r6, ._318\n" - "._317:\n" - " cmp r4, #0x8\n" - " bhi ._316 @cond_branch\n" - " add r0, r4, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r6\n" - " ldr r0, [r0]\n" - " lsl r2, r4, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r2, r2, r1\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0x2\n" - " bl Menu_PrintText\n" - "._316:\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x5\n" - " bls ._317 @cond_branch\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._319:\n" - " .align 2, 0\n" - "._318:\n" - " .word gUnknown_Debug_083F814C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C4F48() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6}\n" - " add sp, sp, #0xffffffc4\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._320\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " add r6, sp, #0x14\n" - " ldr r1, ._320 + 4\n" - " add r0, r6, #0\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " add r5, sp, #0x24\n" - " ldr r1, ._320 + 8\n" - " add r0, r5, #0\n" - " mov r2, #0xd\n" - " bl memcpy\n" - " add r0, sp, #0x34\n" - " mov r9, r0\n" - " ldr r1, ._320 + 12\n" - " mov r2, #0x4\n" - " bl memcpy\n" - " add r0, sp, #0x38\n" - " mov r8, r0\n" - " ldr r1, ._320 + 16\n" - " mov r2, #0x4\n" - " bl memcpy\n" - " mov r0, #0x0\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " mov r1, #0x14\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r0, #0x1\n" - " mov r1, #0x3\n" - " mov r2, #0xd\n" - " mov r3, #0xe\n" - " bl Menu_BlankWindowRect\n" - " add r0, r5, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r0, r9\n" - " mov r1, #0x2\n" - " mov r2, #0x3\n" - " bl Menu_PrintText\n" - " mov r0, r8\n" - " mov r1, #0x2\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0xf\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._320 + 20\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._320 + 24\n" - " str r1, [r0]\n" - " add sp, sp, #0x3c\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._321:\n" - " .align 2, 0\n" - "._320:\n" - " .word gUnknown_Debug_083F8211\n" - " .word gUnknown_Debug_083F81A0\n" - " .word gUnknown_Debug_083F8222\n" - " .word gUnknown_Debug_083F822F\n" - " .word gUnknown_Debug_083F8233\n" - " .word gTasks\n" - " .word debug_80C5038+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5038() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r0, ._322\n" - " ldrb r0, [r0, #0x8]\n" - " lsl r0, r0, #0x19\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x12\n" - " add r0, r0, r1\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " str r1, [sp]\n" - " mov r2, #0x1\n" - " mov r3, #0xe\n" - " bl debug_80C38E4\n" - " ldr r1, ._322 + 4\n" - " ldr r2, ._322 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " add r2, r2, #0x8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._322 + 12\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._322 + 16\n" - " str r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._323:\n" - " .align 2, 0\n" - "._322:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word 0x4000042\n" - " .word 0x177\n" - " .word gTasks\n" - " .word debug_80C5098+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5098() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r1, ._326\n" - " ldrh r2, [r1, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " add r3, r1, #0\n" - " cmp r0, #0\n" - " beq ._324 @cond_branch\n" - " ldr r0, ._326 + 4\n" - " lsl r1, r4, #0x2\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._326 + 8\n" - " str r0, [r1]\n" - " b ._339\n" - "._327:\n" - " .align 2, 0\n" - "._326:\n" - " .word gMain\n" - " .word gTasks\n" - " .word debug_80C47BC+1\n" - "._324:\n" - " mov r0, #0x8\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._328 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._329 @cond_branch\n" - "._328:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._331\n" - " ldr r0, ._331 + 4\n" - " ldrb r0, [r0, #0x8]\n" - " strb r0, [r1, #0x8]\n" - " ldr r1, ._331 + 8\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._331 + 12\n" - " b ._330\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gSaveBlock2\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gTasks\n" - " .word debug_80C42B8+1\n" - "._329:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._334 @cond_branch\n" - " ldr r1, ._336\n" - " ldrb r0, [r1, #0x8]\n" - " cmp r0, #0\n" - " beq ._334 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._335\n" - "._337:\n" - " .align 2, 0\n" - "._336:\n" - " .word gUnknown_Debug_2038A0C\n" - "._334:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._339 @cond_branch\n" - " ldr r1, ._340\n" - " ldrb r0, [r1, #0x8]\n" - " cmp r0, #0\n" - " bne ._339 @cond_branch\n" - " add r0, r0, #0x1\n" - "._335:\n" - " strb r0, [r1, #0x8]\n" - " ldr r1, ._340 + 4\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._340 + 8\n" - "._330:\n" - " str r1, [r0]\n" - "._339:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word gUnknown_Debug_2038A0C\n" - " .word gTasks\n" - " .word debug_80C5038+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5158() -{ - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._342\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r0, ._342 + 4\n" - " str r0, [r1]\n" - " bx lr\n" - "._343:\n" - " .align 2, 0\n" - "._342:\n" - " .word gTasks\n" - " .word debug_80C5174+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5174() -{ - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._344\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r0, ._344 + 4\n" - " str r0, [r1]\n" - " bx lr\n" - "._345:\n" - " .align 2, 0\n" - "._344:\n" - " .word gTasks\n" - " .word debug_80C5190+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5190() -{ - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._346\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r0, ._346 + 4\n" - " str r0, [r1]\n" - " bx lr\n" - "._347:\n" - " .align 2, 0\n" - "._346:\n" - " .word gTasks\n" - " .word debug_80C51AC+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C51AC() -{ - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._348\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r0, ._348 + 4\n" - " str r0, [r1]\n" - " bx lr\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word gTasks\n" - " .word debug_80C51C8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C51C8() -{ - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._350\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r0, ._350 + 4\n" - " str r0, [r1]\n" - " bx lr\n" - "._351:\n" - " .align 2, 0\n" - "._350:\n" - " .word gTasks\n" - " .word debug_80C51E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C51E4() -{ - asm( - " push {lr}\n" - " bl sub_80408BC\n" - " ldr r0, ._352\n" - " ldr r1, ._352 + 4\n" - " str r1, [r0, #0x8]\n" - " ldr r0, ._352 + 8\n" - " bl SetMainCallback2\n" - " pop {r0}\n" - " bx r0\n" - "._353:\n" - " .align 2, 0\n" - "._352:\n" - " .word gMain\n" - " .word debug_80C41A8+1\n" - " .word unref_sub_800D684+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5208() -{ - asm( - " push {r4, r5, r6, lr}\n" - " ldr r1, ._355\n" - " ldr r0, ._355 + 4\n" - " str r0, [r1]\n" - " mov r3, #0x0\n" - " add r6, r1, #0\n" - " ldr r4, ._355 + 8\n" - " add r5, r6, #0\n" - " mov r2, #0x0\n" - "._354:\n" - " ldr r0, [r5]\n" - " lsl r1, r3, #0x2\n" - " add r0, r0, #0x64\n" - " add r0, r0, r1\n" - " str r2, [r0]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " cmp r3, #0x3f\n" - " bls ._354 @cond_branch\n" - " ldr r2, [r6]\n" - " mov r0, #0xfc\n" - " str r0, [r2, #0x64]\n" - " ldrb r1, [r4, #0xa]\n" - " ldrb r0, [r4, #0xb]\n" - " lsl r0, r0, #0x8\n" - " orr r1, r1, r0\n" - " ldrb r0, [r4, #0xc]\n" - " lsl r0, r0, #0x10\n" - " orr r1, r1, r0\n" - " ldrb r0, [r4, #0xd]\n" - " lsl r0, r0, #0x18\n" - " orr r1, r1, r0\n" - " str r1, [r2, #0x70]\n" - " bl Random\n" - " add r4, r0, #0\n" - " bl Random\n" - " ldr r1, [r6]\n" - " lsl r4, r4, #0x10\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " orr r4, r4, r0\n" - " str r4, [r1, #0x74]\n" - " mov r0, #0x1\n" - " str r0, [r1, #0x68]\n" - " str r0, [r1, #0x6c]\n" - " bl debug_80C5C94\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word +0x2018000\n" - " .word gSaveBlock2\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C527C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add r6, r0, #0\n" - " mov r5, #0x0\n" - " ldr r7, ._359\n" - "._361:\n" - " mov r0, #0x64\n" - " add r1, r5, #0\n" - " mul r1, r1, r0\n" - " ldr r0, ._359 + 4\n" - " add r4, r1, r0\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " cmp r0, #0\n" - " bne ._357 @cond_branch\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " add r0, r5, #1\n" - " strb r0, [r7]\n" - " mov r0, #0x0\n" - " b ._358\n" - "._360:\n" - " .align 2, 0\n" - "._359:\n" - " .word gPlayerPartyCount\n" - " .word gPlayerParty\n" - "._357:\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x5\n" - " bls ._361 @cond_branch\n" - " ldr r0, ._362\n" - " ldr r0, [r0]\n" - " bl SendMonToPC\n" - " mov r0, #0x1\n" - "._358:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._363:\n" - " .align 2, 0\n" - "._362:\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void InitCreatePokemon() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xffffffd4\n" - " ldr r1, ._364\n" - " add r0, sp, #0x4\n" - " mov r2, #0x25\n" - " bl memcpy\n" - " bl debug_80C35DC\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x10\n" - " mov r3, #0x0\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._364 + 4\n" - " mov r5, #0x0\n" - " strh r4, [r0]\n" - " add r0, r0, #0x2\n" - " strh r4, [r0]\n" - " add r0, r0, #0x2\n" - " strh r4, [r0]\n" - " ldr r3, ._364 + 8\n" - " ldrh r2, [r3]\n" - " strh r4, [r3]\n" - " ldr r4, ._364 + 12\n" - " ldrh r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strh r0, [r4]\n" - " strh r2, [r3]\n" - " ldr r2, ._364 + 16\n" - " ldrh r0, [r2]\n" - " mov r1, #0x8\n" - " orr r0, r0, r1\n" - " strh r0, [r2]\n" - " ldr r0, ._364 + 20\n" - " bl SetVBlankCallback\n" - " ldr r0, ._364 + 24\n" - " bl SetMainCallback2\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, sp, #0x4\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x13\n" - " mov r2, #0x8a\n" - " lsl r2, r2, #0x5\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, ._364 + 28\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " bl debug_80C5208\n" - " ldr r1, ._364 + 32\n" - " ldr r0, [r1]\n" - " mov r2, #0xb4\n" - " lsl r2, r2, #0x1\n" - " add r0, r0, r2\n" - " strb r5, [r0]\n" - " ldr r0, [r1]\n" - " ldr r1, ._364 + 36\n" - " add r0, r0, r1\n" - " strb r5, [r0]\n" - " add sp, sp, #0x2c\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._365:\n" - " .align 2, 0\n" - "._364:\n" - " .word gUnknown_Debug_083F8733\n" - " .word 0x4000050\n" - " .word 0x4000208\n" - " .word 0x4000200\n" - " .word 0x4000004\n" - " .word debug_80C3758+1\n" - " .word debug_80C370C+1\n" - " .word debug_80C53A4+1\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C53A4() -{ - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._366\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r0, ._366 + 4\n" - " str r0, [r1]\n" - " bx lr\n" - "._367:\n" - " .align 2, 0\n" - "._366:\n" - " .word gTasks\n" - " .word debug_80C53C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C53C0() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl debug_80C6384\n" - " mov r0, #0x0\n" - " bl debug_80C627C\n" - " ldr r1, ._368\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._368 + 4\n" - " str r1, [r0]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._369:\n" - " .align 2, 0\n" - "._368:\n" - " .word gTasks\n" - " .word debug_80C53F0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C53F0() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r0, ._372\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r2, #0x1\n" - " and r2, r2, r1\n" - " add r4, r0, #0\n" - " cmp r2, #0\n" - " beq ._370 @cond_branch\n" - " ldr r0, ._372 + 4\n" - " ldr r3, [r0]\n" - " mov r0, #0xb2\n" - " lsl r0, r0, #0x1\n" - " add r2, r3, r0\n" - " ldr r1, ._372 + 8\n" - " mov r4, #0xb4\n" - " lsl r4, r4, #0x1\n" - " add r0, r3, r4\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r6, ._372 + 12\n" - " add r1, r3, r6\n" - " ldrb r1, [r1]\n" - " ldr r0, [r0]\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " lsl r1, r1, #0x2\n" - " add r0, r3, #0\n" - " add r0, r0, #0x64\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " str r0, [r2]\n" - " mov r0, #0xb5\n" - " lsl r0, r0, #0x1\n" - " add r1, r3, r0\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl debug_80C643C\n" - " ldr r1, ._372 + 16\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._372 + 20\n" - " b ._375\n" - "._373:\n" - " .align 2, 0\n" - "._372:\n" - " .word gMain\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gUnknown_Debug_083F8698\n" - " .word 0x169\n" - " .word gTasks\n" - " .word debug_80C55E4+1\n" - "._370:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._374 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " str r2, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._376\n" - " bl SetMainCallback2\n" - " ldr r1, ._376 + 4\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._376 + 8\n" - " b ._375\n" - "._377:\n" - " .align 2, 0\n" - "._376:\n" - " .word debug_80C370C+1\n" - " .word gTasks\n" - " .word debug_80C373C+1\n" - "._374:\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._378 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " bl debug_80C5FFC\n" - " ldr r0, ._381\n" - " ldr r0, [r0]\n" - " bl debug_80C527C\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r0, #0x3\n" - " mov r1, #0x8\n" - " mov r2, #0x1a\n" - " mov r3, #0xb\n" - " bl Menu_DrawStdWindowFrame\n" - " cmp r4, #0\n" - " beq ._379 @cond_branch\n" - " ldr r0, ._381 + 4\n" - " mov r1, #0x4\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - " b ._380\n" - "._382:\n" - " .align 2, 0\n" - "._381:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gUnknown_Debug_083F872A\n" - "._379:\n" - " ldr r0, ._384\n" - " mov r1, #0x4\n" - " mov r2, #0x9\n" - " bl Menu_PrintText\n" - "._380:\n" - " ldr r0, ._384 + 4\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._384 + 8\n" - " str r0, [r1]\n" - " b ._400\n" - "._385:\n" - " .align 2, 0\n" - "._384:\n" - " .word gUnknown_Debug_083F8720\n" - " .word gTasks\n" - " .word debug_80C5708+1\n" - "._378:\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._386 @cond_branch\n" - " ldr r0, ._388\n" - " ldr r0, [r0]\n" - " ldr r4, [r0, #0x64]\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._400\n" - "._389:\n" - " .align 2, 0\n" - "._388:\n" - " .word gUnknown_Debug_2038A1C\n" - "._386:\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._390 @cond_branch\n" - " mov r0, #0x2\n" - " bl debug_80C627C\n" - " b ._400\n" - "._390:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r3, r0, #0x10\n" - " cmp r3, #0\n" - " beq ._392 @cond_branch\n" - " mov r0, #0x1\n" - " bl debug_80C627C\n" - " b ._400\n" - "._392:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._395 @cond_branch\n" - " ldr r2, ._397\n" - " ldr r0, [r2]\n" - " mov r6, #0xb4\n" - " lsl r6, r6, #0x1\n" - " add r1, r0, r6\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._395 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, [r2]\n" - " ldr r1, ._397 + 4\n" - " add r0, r0, r1\n" - " strb r3, [r0]\n" - " b ._396\n" - "._398:\n" - " .align 2, 0\n" - "._397:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - "._395:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._400 @cond_branch\n" - " ldr r3, ._401\n" - " ldr r0, [r3]\n" - " mov r4, #0xb4\n" - " lsl r4, r4, #0x1\n" - " add r2, r0, r4\n" - " ldrb r0, [r2]\n" - " cmp r0, #0x4\n" - " bhi ._400 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x0\n" - " strb r0, [r2]\n" - " ldr r0, [r3]\n" - " ldr r6, ._401 + 4\n" - " add r0, r0, r6\n" - " strb r1, [r0]\n" - "._396:\n" - " ldr r1, ._401 + 8\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._401 + 12\n" - "._375:\n" - " str r1, [r0]\n" - "._400:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._402:\n" - " .align 2, 0\n" - "._401:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - " .word gTasks\n" - " .word debug_80C53C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C55E4() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " add r6, r3, #0\n" - " ldr r1, ._405\n" - " ldr r2, ._405 + 4\n" - " ldr r0, [r2]\n" - " mov ip, r0\n" - " mov r0, #0xb4\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, ip\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._405 + 8\n" - " add r1, r1, ip\n" - " ldrb r1, [r1]\n" - " ldr r0, [r0]\n" - " add r0, r0, r1\n" - " ldrb r5, [r0]\n" - " add r7, r5, #0\n" - " ldr r1, ._405 + 12\n" - " ldrh r4, [r1, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r4\n" - " mov r8, r2\n" - " add r2, r1, #0\n" - " cmp r0, #0\n" - " beq ._403 @cond_branch\n" - " ldr r0, ._405 + 16\n" - " lsl r1, r3, #0x2\n" - " add r1, r1, r3\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._405 + 20\n" - " str r0, [r1]\n" - " b ._422\n" - "._406:\n" - " .align 2, 0\n" - "._405:\n" - " .word gUnknown_Debug_083F8698\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - " .word gMain\n" - " .word gTasks\n" - " .word debug_80C53C0+1\n" - "._403:\n" - " mov r0, #0x2\n" - " and r0, r0, r4\n" - " cmp r0, #0\n" - " beq ._407 @cond_branch\n" - " lsl r1, r5, #0x2\n" - " mov r0, ip\n" - " add r0, r0, #0x64\n" - " add r0, r0, r1\n" - " mov r1, #0xb2\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, ip\n" - " ldr r1, [r1]\n" - " str r1, [r0]\n" - " ldr r1, ._409\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._409 + 4\n" - " str r1, [r0]\n" - " b ._422\n" - "._410:\n" - " .align 2, 0\n" - "._409:\n" - " .word gTasks\n" - " .word debug_80C53C0+1\n" - "._407:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._411 @cond_branch\n" - " mov r0, #0x1\n" - " b ._412\n" - "._411:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._413 @cond_branch\n" - " mov r0, #0x2\n" - "._412:\n" - " bl debug_80C6544\n" - " bl debug_80C643C\n" - " b ._422\n" - "._413:\n" - " ldr r0, ._419\n" - " lsl r1, r7, #0x3\n" - " add r0, r0, #0x4\n" - " add r1, r1, r0\n" - " ldr r1, [r1]\n" - " ldrb r0, [r1, #0x9]\n" - " cmp r0, #0xff\n" - " beq ._422 @cond_branch\n" - " mov r0, #0x20\n" - " and r0, r0, r4\n" - " cmp r0, #0\n" - " beq ._417 @cond_branch\n" - " mov r0, #0xb5\n" - " lsl r0, r0, #0x1\n" - " add ip, ip, r0\n" - " mov r0, ip\n" - " ldrb r3, [r0]\n" - " ldrb r0, [r1, #0x9]\n" - " sub r0, r0, #0x1\n" - " cmp r3, r0\n" - " bge ._417 @cond_branch\n" - " add r0, r3, #1\n" - " mov r1, ip\n" - " strb r0, [r1]\n" - " bl debug_80C643C\n" - " b ._422\n" - "._420:\n" - " .align 2, 0\n" - "._419:\n" - " .word gUnknown_Debug_083F8554\n" - "._417:\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._422 @cond_branch\n" - " mov r2, r8\n" - " ldr r0, [r2]\n" - " mov r2, #0xb5\n" - " lsl r2, r2, #0x1\n" - " add r1, r0, r2\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._422 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " bl debug_80C643C\n" - "._422:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5708() -{ - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " ldr r0, ._424\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._423 @cond_branch\n" - " ldr r0, ._424 + 4\n" - " lsl r1, r2, #0x2\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._424 + 8\n" - " str r0, [r1]\n" - "._423:\n" - " pop {r0}\n" - " bx r0\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gMain\n" - " .word gTasks\n" - " .word debug_80C53C0+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5738() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add r6, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r4, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r8, r2\n" - " cmp r4, #0xfe\n" - " bne ._426 @cond_branch\n" - " ldr r1, ._428\n" - " mov r2, #0x7\n" - " bl debug_80C689C\n" - " add r0, r6, #7\n" - " ldr r7, ._428 + 4\n" - " ldr r1, [r7]\n" - " add r1, r1, #0xf0\n" - " ldr r1, [r1]\n" - " mov r2, #0x3\n" - " mov r3, #0x1\n" - " bl debug_80C6678\n" - " mov r4, #0x0\n" - " strb r4, [r6, #0x13]\n" - " strb r4, [r6, #0x14]\n" - " add r0, r6, #0\n" - " add r0, r0, #0x15\n" - " ldr r1, ._428 + 8\n" - " mov r2, #0x7\n" - " bl debug_80C689C\n" - " add r0, r6, #0\n" - " add r0, r0, #0x1c\n" - " ldr r1, [r7]\n" - " add r1, r1, #0xf4\n" - " ldr r1, [r1]\n" - " mov r2, #0x3\n" - " mov r3, #0x1\n" - " bl debug_80C6678\n" - " add r0, r6, #0\n" - " add r0, r0, #0x28\n" - " strb r4, [r0]\n" - " add r0, r0, #0x1\n" - " strb r4, [r0]\n" - " add r0, r0, #0x1\n" - " ldr r1, ._428 + 12\n" - " mov r2, #0x9\n" - " bl debug_80C689C\n" - " add r0, r6, #0\n" - " add r0, r0, #0x31\n" - " ldr r1, [r7]\n" - " add r1, r1, #0xf8\n" - "._431:\n" - " ldr r1, [r1]\n" - " mov r2, #0x3\n" - " mov r3, #0x1\n" - " bl debug_80C6678\n" - " b ._517\n" - "._429:\n" - " .align 2, 0\n" - "._428:\n" - " .word gUnknown_Debug_083F850A\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gUnknown_Debug_083F8514\n" - " .word gUnknown_Debug_083F851C\n" - "._426:\n" - " cmp r4, #0xfd\n" - " bne ._430 @cond_branch\n" - " ldr r1, ._432\n" - " add r0, r6, #0\n" - " mov r2, #0x9\n" - " bl debug_80C689C\n" - " add r0, r6, #0\n" - " add r0, r0, #0x9\n" - " ldr r7, ._432 + 4\n" - " ldr r1, [r7]\n" - " add r1, r1, #0xfc\n" - " ldr r1, [r1]\n" - " mov r2, #0x3\n" - " mov r3, #0x1\n" - " bl debug_80C6678\n" - " mov r4, #0x0\n" - " strb r4, [r6, #0x15]\n" - " strb r4, [r6, #0x16]\n" - " add r0, r6, #0\n" - " add r0, r0, #0x17\n" - " ldr r1, ._432 + 8\n" - " mov r2, #0x9\n" - " bl debug_80C689C\n" - " add r0, r6, #0\n" - " add r0, r0, #0x20\n" - " ldr r1, [r7]\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r1, r1, r2\n" - " ldr r1, [r1]\n" - " mov r2, #0x3\n" - " mov r3, #0x1\n" - " bl debug_80C6678\n" - " add r0, r6, #0\n" - " add r0, r0, #0x2c\n" - " strb r4, [r0]\n" - " add r0, r0, #0x1\n" - " strb r4, [r0]\n" - " add r0, r0, #0x1\n" - " ldr r1, ._432 + 12\n" - " mov r2, #0x9\n" - " bl debug_80C689C\n" - " add r0, r6, #0\n" - " add r0, r0, #0x37\n" - " ldr r1, [r7]\n" - " mov r3, #0x82\n" - " lsl r3, r3, #0x1\n" - " add r1, r1, r3\n" - " b ._431\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gUnknown_Debug_083F8524\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gUnknown_Debug_083F852D\n" - " .word gUnknown_Debug_083F8537\n" - "._430:\n" - " mov r1, #0x0\n" - " lsl r5, r4, #0x3\n" - " mov r2, #0x0\n" - "._434:\n" - " add r0, r6, r1\n" - " strb r2, [r0]\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r1, r0, #0x10\n" - " cmp r1, #0xb\n" - " bls ._434 @cond_branch\n" - " ldr r0, ._437\n" - " add r0, r5, r0\n" - " ldr r1, [r0]\n" - " add r0, r6, #0\n" - " mov r2, #0xb\n" - " bl debug_80C689C\n" - " mov r1, #0xc\n" - " mov r2, #0xff\n" - "._435:\n" - " add r0, r6, r1\n" - " strb r2, [r0]\n" - " add r0, r1, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r1, r0, #0x10\n" - " cmp r1, #0xff\n" - " bls ._435 @cond_branch\n" - " ldr r0, ._437\n" - " add r0, r0, #0x4\n" - " add r0, r5, r0\n" - " ldr r0, [r0]\n" - " ldrb r2, [r0, #0x9]\n" - " lsl r0, r2, #0x1a\n" - " lsr r5, r0, #0x18\n" - " cmp r4, #0x22\n" - " bhi ._436 @cond_branch\n" - " lsl r0, r4, #0x2\n" - " ldr r1, ._437 + 4\n" - " add r1, r0, r1\n" - " ldr r1, [r1]\n" - " add r7, r0, #0\n" - " mov pc, r1\n" - "._438:\n" - " .align 2, 0\n" - "._437:\n" - " .word gUnknown_Debug_083F8554\n" - " .word ._439\n" - "._439:\n" - " .word ._440\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._445\n" - " .word ._446\n" - " .word ._450\n" - " .word ._450\n" - " .word ._450\n" - " .word ._450\n" - " .word ._451\n" - " .word ._452\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._472\n" - " .word ._473\n" - " .word ._474\n" - "._436:\n" - " mov r0, #0xff\n" - " strb r0, [r6]\n" - " b ._517\n" - "._440:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r1, ._477\n" - " mov r9, r1\n" - " ldr r1, [r1]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r1, [r1]\n" - " mov r3, r8\n" - " bl debug_80C6678\n" - " add r1, r5, r6\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0xa]\n" - " mov r0, #0xfc\n" - " strb r0, [r1, #0xb]\n" - " mov r0, #0x1\n" - " strb r0, [r1, #0xc]\n" - " mov r2, r8\n" - " strb r2, [r1, #0xd]\n" - " add r4, r5, #0\n" - " add r4, r4, #0xe\n" - " add r4, r6, r4\n" - " mov r3, r9\n" - " ldr r0, [r3]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r7\n" - " ldrh r0, [r0]\n" - " bl NationalPokedexNumToSpecies\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xb\n" - " mul r1, r1, r0\n" - " ldr r0, ._477 + 4\n" - " add r1, r1, r0\n" - " add r0, r4, #0\n" - " mov r2, #0xa\n" - " bl debug_80C689C\n" - " b ._517\n" - "._478:\n" - " .align 2, 0\n" - "._477:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gSpeciesNames\n" - "._445:\n" - " ldr r0, ._483\n" - " ldr r0, [r0]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r7\n" - " ldr r0, [r0]\n" - " cmp r0, #0x1\n" - " beq ._479 @cond_branch\n" - " cmp r0, #0x1\n" - " bcc ._480 @cond_branch\n" - " cmp r0, #0x2\n" - " beq ._481 @cond_branch\n" - " b ._517\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word gUnknown_Debug_2038A1C\n" - "._480:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r1, ._486\n" - " b ._488\n" - "._487:\n" - " .align 2, 0\n" - "._486:\n" - " .word gUnknown_Debug_083F8546\n" - "._479:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r1, ._489\n" - " b ._488\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word gUnknown_Debug_083F8541\n" - "._481:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r1, ._492\n" - "._488:\n" - " mov r2, #0x2\n" - " bl debug_80C689C\n" - " b ._517\n" - "._493:\n" - " .align 2, 0\n" - "._492:\n" - " .word gUnknown_Debug_083F8544\n" - "._450:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r4, ._495\n" - " ldr r1, [r4]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r1, [r1]\n" - " mov r3, r8\n" - " bl debug_80C6678\n" - " add r1, r5, r6\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0xa]\n" - " mov r0, #0xfc\n" - " strb r0, [r1, #0xb]\n" - " mov r0, #0x1\n" - " strb r0, [r1, #0xc]\n" - " mov r0, r8\n" - " strb r0, [r1, #0xd]\n" - " add r0, r5, #0\n" - " add r0, r0, #0xe\n" - " add r0, r6, r0\n" - " ldr r1, [r4]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r2, [r1]\n" - " mov r1, #0xd\n" - " mul r1, r1, r2\n" - " ldr r2, ._495 + 4\n" - " add r1, r1, r2\n" - " b ._494\n" - "._496:\n" - " .align 2, 0\n" - "._495:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gMoveNames\n" - "._451:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r4, ._499\n" - " ldr r1, [r4]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r1, [r1]\n" - " mov r3, r8\n" - " bl debug_80C6678\n" - " add r1, r5, r6\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0xa]\n" - " mov r0, #0xfc\n" - " strb r0, [r1, #0xb]\n" - " mov r0, #0x1\n" - " strb r0, [r1, #0xc]\n" - " mov r2, r8\n" - " strb r2, [r1, #0xd]\n" - " ldr r0, [r4]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r7\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._497 @cond_branch\n" - " add r4, r5, #0\n" - " add r4, r4, #0xe\n" - " add r4, r6, r4\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl ItemId_GetItem\n" - " add r1, r0, #0\n" - " add r0, r4, #0\n" - " b ._498\n" - "._500:\n" - " .align 2, 0\n" - "._499:\n" - " .word gUnknown_Debug_2038A1C\n" - "._497:\n" - " add r0, r5, #0\n" - " add r0, r0, #0xe\n" - " add r0, r6, r0\n" - " ldr r1, ._502\n" - "._498:\n" - " mov r2, #0x9\n" - " bl debug_80C689C\n" - " b ._517\n" - "._503:\n" - " .align 2, 0\n" - "._502:\n" - " .word gUnknown_Debug_083F8541\n" - "._452:\n" - " add r6, r6, #0xc\n" - " ldr r4, ._505\n" - " ldr r0, [r4]\n" - " ldr r0, [r0, #0x64]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl NationalPokedexNumToSpecies\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldr r1, [r4]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldrb r1, [r1]\n" - " bl GetAbilityBySpecies\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0xd\n" - " mul r1, r1, r0\n" - " ldr r0, ._505 + 4\n" - " add r1, r1, r0\n" - " add r0, r6, #0\n" - "._494:\n" - " mov r2, #0xc\n" - " bl debug_80C689C\n" - " b ._517\n" - "._506:\n" - " .align 2, 0\n" - "._505:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gAbilityNames\n" - "._474:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r2, ._508\n" - " ldr r1, ._508 + 4\n" - " ldr r1, [r1]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r1, [r1]\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r1, [r1]\n" - " b ._514\n" - "._509:\n" - " .align 2, 0\n" - "._508:\n" - " .word gUnknown_Debug_083F86E8\n" - " .word gUnknown_Debug_2038A1C\n" - "._472:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xc\n" - " ldr r1, ._511\n" - " ldr r1, [r1]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r1, [r1]\n" - " mov r3, r8\n" - " bl debug_80C6678\n" - " b ._517\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word gUnknown_Debug_2038A1C\n" - "._473:\n" - " ldr r0, ._515\n" - " ldr r0, [r0]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r7\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._513 @cond_branch\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r1, ._515 + 4\n" - " b ._514\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gUnknown_Debug_083F854A\n" - "._513:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r1, ._518\n" - "._514:\n" - " mov r2, #0x4\n" - " bl debug_80C689C\n" - " b ._517\n" - "._519:\n" - " .align 2, 0\n" - "._518:\n" - " .word gUnknown_Debug_083F854D\n" - "._446:\n" - " add r0, r6, #0\n" - " add r0, r0, #0xa\n" - " ldr r2, ._520\n" - " ldr r1, ._520 + 4\n" - " ldr r1, [r1]\n" - " add r1, r1, #0x64\n" - " add r1, r1, r7\n" - " ldr r1, [r1]\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r2\n" - " ldr r1, [r1]\n" - " mov r2, #0x5\n" - " bl debug_80C689C\n" - "._517:\n" - " mov r0, #0x0\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._521:\n" - " .align 2, 0\n" - "._520:\n" - " .word gNatureNames\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5B60() -{ - asm( - " lsl r0, r0, #0x18\n" - " ldr r1, ._522\n" - " ldr r1, [r1]\n" - " lsr r0, r0, #0x16\n" - " add r1, r1, #0x64\n" - " add r1, r1, r0\n" - " ldr r0, [r1]\n" - " bx lr\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5B74() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r2, r1, #0x18\n" - " cmp r2, #0x18\n" - " bhi ._540 @cond_branch\n" - " lsl r0, r2, #0x2\n" - " ldr r1, ._526\n" - " add r1, r0, r1\n" - " ldr r1, [r1]\n" - " add r3, r0, #0\n" - " mov pc, r1\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word ._525\n" - "._525:\n" - " .word ._532\n" - " .word ._529\n" - " .word ._530\n" - " .word ._532\n" - " .word ._532\n" - " .word ._540\n" - " .word ._540\n" - " .word ._540\n" - " .word ._540\n" - " .word ._540\n" - " .word ._540\n" - " .word ._540\n" - " .word ._540\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - " .word ._552\n" - "._540:\n" - " ldr r0, ._554\n" - " ldr r0, [r0]\n" - " lsl r1, r2, #0x2\n" - " add r0, r0, #0x64\n" - " add r0, r0, r1\n" - " str r6, [r0]\n" - " b ._562\n" - "._555:\n" - " .align 2, 0\n" - "._554:\n" - " .word gUnknown_Debug_2038A1C\n" - "._532:\n" - " ldr r0, ._557\n" - " ldr r0, [r0]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r3\n" - " str r6, [r0]\n" - " bl debug_80C5C94\n" - " b ._562\n" - "._558:\n" - " .align 2, 0\n" - "._557:\n" - " .word gUnknown_Debug_2038A1C\n" - "._529:\n" - " ldr r4, ._560\n" - " ldr r1, [r4]\n" - " add r0, r1, #0\n" - " add r0, r0, #0x64\n" - " add r0, r0, r3\n" - " str r6, [r0]\n" - " ldr r0, [r1, #0x64]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl NationalPokedexNumToSpecies\n" - " ldr r5, [r4]\n" - " ldr r4, ._560 + 4\n" - " lsl r2, r6, #0x2\n" - " ldr r3, ._560 + 8\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " lsl r1, r0, #0x3\n" - " sub r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r3\n" - " ldrb r1, [r1, #0x13]\n" - " mov r0, #0xca\n" - " lsl r0, r0, #0x1\n" - " mul r0, r0, r1\n" - " add r2, r2, r0\n" - " add r2, r2, r4\n" - " ldr r0, [r2]\n" - " str r0, [r5, #0x6c]\n" - " bl debug_80C5C94\n" - " b ._562\n" - "._561:\n" - " .align 2, 0\n" - "._560:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gExperienceTables\n" - " .word gBaseStats\n" - "._530:\n" - " ldr r0, ._563\n" - " ldr r0, [r0]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r3\n" - " str r6, [r0]\n" - " bl debug_80C5DEC\n" - " b ._562\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word gUnknown_Debug_2038A1C\n" - "._552:\n" - " ldr r0, ._565\n" - " ldr r0, [r0]\n" - " add r0, r0, #0x64\n" - " add r0, r0, r3\n" - " str r6, [r0]\n" - " bl debug_80C5EF4\n" - "._562:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5C94() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff0\n" - " ldr r6, ._567\n" - " ldr r2, [r6]\n" - " add r0, r2, #0\n" - " add r0, r0, #0x98\n" - " ldr r4, [r0]\n" - " mov r1, #0x1f\n" - " and r4, r4, r1\n" - " add r0, r0, #0x8\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xa8\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0xa\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xb0\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0xf\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xb8\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x14\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xc0\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x19\n" - " orr r4, r4, r0\n" - " ldr r0, [r2, #0x64]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl NationalPokedexNumToSpecies\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, [r6]\n" - " ldr r2, [r0, #0x68]\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r5, #0x1\n" - " str r5, [sp]\n" - " ldr r3, [r0, #0x74]\n" - " str r3, [sp, #0x4]\n" - " str r5, [sp, #0x8]\n" - " ldr r3, [r0, #0x70]\n" - " str r3, [sp, #0xc]\n" - " add r3, r4, #0\n" - " bl CreateMon\n" - " ldr r0, [r6]\n" - " bl GetMonGender\n" - " ldr r1, [r6]\n" - " add r0, r0, #0x2\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [r1, #0x78]\n" - " add r0, r1, #0\n" - " bl GetNature\n" - " ldr r1, [r6]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [r1, #0x7c]\n" - " add r0, r1, #0\n" - " mov r1, #0xd\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x80\n" - " str r2, [r1]\n" - " mov r1, #0xe\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x84\n" - " str r2, [r1]\n" - " mov r1, #0xf\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x88\n" - " str r2, [r1]\n" - " mov r1, #0x10\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x8c\n" - " str r2, [r1]\n" - " mov r1, #0x19\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " ldr r0, [r6]\n" - " str r1, [r0, #0x6c]\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf0\n" - " str r2, [r1]\n" - " mov r1, #0x3b\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf4\n" - " str r2, [r1]\n" - " mov r1, #0x3c\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf8\n" - " str r2, [r1]\n" - " mov r1, #0x3d\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xfc\n" - " str r2, [r1]\n" - " mov r1, #0x3e\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r6]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - " add r1, r0, r3\n" - " str r2, [r1]\n" - " mov r1, #0x3f\n" - " bl GetMonData\n" - " ldr r1, [r6]\n" - " mov r2, #0x82\n" - " lsl r2, r2, #0x1\n" - " add r1, r1, r2\n" - " str r0, [r1]\n" - " add sp, sp, #0x10\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._568:\n" - " .align 2, 0\n" - "._567:\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5DEC() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " ldr r4, ._569\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x6c\n" - " mov r1, #0x19\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " mov r1, #0xd\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " mov r1, #0xe\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " mov r1, #0xf\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " mov r1, #0x10\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " bl CalculateMonStats\n" - " ldr r0, [r4]\n" - " bl GiveMonInitialMoveset\n" - " ldr r0, [r4]\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " ldr r0, [r4]\n" - " str r1, [r0, #0x68]\n" - " mov r1, #0xd\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x80\n" - " str r2, [r1]\n" - " mov r1, #0xe\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x84\n" - " str r2, [r1]\n" - " mov r1, #0xf\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x88\n" - " str r2, [r1]\n" - " mov r1, #0x10\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0x8c\n" - " str r2, [r1]\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf0\n" - " str r2, [r1]\n" - " mov r1, #0x3b\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf4\n" - " str r2, [r1]\n" - " mov r1, #0x3c\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf8\n" - " str r2, [r1]\n" - " mov r1, #0x3d\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xfc\n" - " str r2, [r1]\n" - " mov r1, #0x3e\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - " add r1, r0, r3\n" - " str r2, [r1]\n" - " mov r1, #0x3f\n" - " bl GetMonData\n" - " ldr r1, [r4]\n" - " mov r2, #0x82\n" - " lsl r2, r2, #0x1\n" - " add r1, r1, r2\n" - " str r0, [r1]\n" - " add sp, sp, #0x4\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._570:\n" - " .align 2, 0\n" - "._569:\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5EF4() -{ - asm( - " push {r4, lr}\n" - " ldr r4, ._571\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x98\n" - " mov r1, #0x27\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x9c\n" - " mov r1, #0x1a\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xa0\n" - " mov r1, #0x28\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xa4\n" - " mov r1, #0x1b\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xa8\n" - " mov r1, #0x29\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xac\n" - " mov r1, #0x1c\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xb0\n" - " mov r1, #0x2a\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xb4\n" - " mov r1, #0x1d\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xb8\n" - " mov r1, #0x2b\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xbc\n" - " mov r1, #0x1e\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xc0\n" - " mov r1, #0x2c\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xc4\n" - " mov r1, #0x1f\n" - " bl SetMonData\n" - " ldr r0, [r4]\n" - " bl CalculateMonStats\n" - " ldr r0, [r4]\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf0\n" - " str r2, [r1]\n" - " mov r1, #0x3b\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf4\n" - " str r2, [r1]\n" - " mov r1, #0x3c\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xf8\n" - " str r2, [r1]\n" - " mov r1, #0x3d\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xfc\n" - " str r2, [r1]\n" - " mov r1, #0x3e\n" - " bl GetMonData\n" - " add r2, r0, #0\n" - " ldr r0, [r4]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - " add r1, r0, r3\n" - " str r2, [r1]\n" - " mov r1, #0x3f\n" - " bl GetMonData\n" - " ldr r1, [r4]\n" - " mov r2, #0x82\n" - " lsl r2, r2, #0x1\n" - " add r1, r1, r2\n" - " str r0, [r1]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._572:\n" - " .align 2, 0\n" - "._571:\n" - " .word gUnknown_Debug_2038A1C\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C5FFC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xffffffe0\n" - " ldr r1, ._578\n" - " add r0, sp, #0x10\n" - " mov r2, #0x4\n" - " bl memcpy\n" - " add r7, sp, #0x14\n" - " ldr r1, ._578 + 4\n" - " add r0, r7, #0\n" - " mov r2, #0x8\n" - " bl memcpy\n" - " ldr r5, ._578 + 8\n" - " ldr r2, [r5]\n" - " add r0, r2, #0\n" - " add r0, r0, #0x98\n" - " ldr r4, [r0]\n" - " mov r1, #0x1f\n" - " and r4, r4, r1\n" - " add r0, r0, #0x8\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xa8\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0xa\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xb0\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0xf\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xb8\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x14\n" - " orr r4, r4, r0\n" - " add r0, r2, #0\n" - " add r0, r0, #0xc0\n" - " ldr r0, [r0]\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x19\n" - " orr r4, r4, r0\n" - " ldr r0, [r2, #0x64]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl NationalPokedexNumToSpecies\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, [r5]\n" - " ldr r2, [r0, #0x68]\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r6, #0x1\n" - " str r6, [sp]\n" - " ldr r3, [r0, #0x74]\n" - " str r3, [sp, #0x4]\n" - " str r6, [sp, #0x8]\n" - " ldr r3, [r0, #0x70]\n" - " str r3, [sp, #0xc]\n" - " add r3, r4, #0\n" - " bl CreateMon\n" - " ldr r2, [r5]\n" - " add r0, r2, #0\n" - " add r0, r0, #0x80\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._573 @cond_branch\n" - " lsl r1, r0, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r2, #0\n" - " mov r2, #0x0\n" - " bl SetMonMoveSlot\n" - "._573:\n" - " ldr r2, [r5]\n" - " add r0, r2, #0\n" - " add r0, r0, #0x84\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._574 @cond_branch\n" - " lsl r1, r0, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r2, #0\n" - " mov r2, #0x1\n" - " bl SetMonMoveSlot\n" - "._574:\n" - " ldr r2, [r5]\n" - " add r0, r2, #0\n" - " add r0, r0, #0x88\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._575 @cond_branch\n" - " lsl r1, r0, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r2, #0\n" - " mov r2, #0x2\n" - " bl SetMonMoveSlot\n" - "._575:\n" - " ldr r2, [r5]\n" - " add r0, r2, #0\n" - " add r0, r0, #0x8c\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._576 @cond_branch\n" - " lsl r1, r0, #0x10\n" - " lsr r1, r1, #0x10\n" - " add r0, r2, #0\n" - " mov r2, #0x3\n" - " bl SetMonMoveSlot\n" - "._576:\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x6c\n" - " mov r1, #0x19\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x98\n" - " mov r1, #0x27\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x9c\n" - " mov r1, #0x1a\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xa0\n" - " mov r1, #0x28\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xa4\n" - " mov r1, #0x1b\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xa8\n" - " mov r1, #0x29\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xac\n" - " mov r1, #0x1c\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xb0\n" - " mov r1, #0x2a\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xb4\n" - " mov r1, #0x1d\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xb8\n" - " mov r1, #0x2b\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xbc\n" - " mov r1, #0x1e\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xc0\n" - " mov r1, #0x2c\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xc4\n" - " mov r1, #0x1f\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xc8\n" - " mov r1, #0x16\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xcc\n" - " mov r1, #0x17\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xd0\n" - " mov r1, #0x18\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xd4\n" - " mov r1, #0x21\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xd8\n" - " mov r1, #0x2f\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xdc\n" - " mov r1, #0x30\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xe0\n" - " mov r1, #0x20\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xe4\n" - " mov r1, #0x22\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x90\n" - " mov r1, #0xc\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0x94\n" - " mov r1, #0x2e\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r1, r0, #0\n" - " add r1, r1, #0xec\n" - " ldr r2, [r1]\n" - " lsl r2, r2, #0x3\n" - " ldr r1, ._578 + 12\n" - " add r2, r2, r1\n" - " mov r1, #0x37\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " add r2, r0, #0\n" - " add r2, r2, #0xe8\n" - " mov r1, #0x2d\n" - " bl SetMonData\n" - " ldr r1, [r5]\n" - " add r0, r1, #0\n" - " add r0, r0, #0xe8\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._577 @cond_branch\n" - " add r0, r1, #0\n" - " mov r1, #0x2\n" - " add r2, sp, #0x10\n" - " bl SetMonData\n" - " add r2, sp, #0x1c\n" - " strb r6, [r2]\n" - " ldr r0, [r5]\n" - " mov r1, #0x3\n" - " bl SetMonData\n" - "._577:\n" - " ldr r0, [r5]\n" - " mov r1, #0x7\n" - " add r2, r7, #0\n" - " bl SetMonData\n" - " mov r2, sp\n" - " add r2, r2, #0x1e\n" - " mov r0, #0xff\n" - " strh r0, [r2]\n" - " ldr r0, [r5]\n" - " mov r1, #0x23\n" - " bl SetMonData\n" - " ldr r0, [r5]\n" - " bl CalculateMonStats\n" - " add sp, sp, #0x20\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._579:\n" - " .align 2, 0\n" - "._578:\n" - " .word gUnknown_Debug_083F8758\n" - " .word gUnknown_Debug_083F875C\n" - " .word gUnknown_Debug_2038A1C\n" - " .word gUnknown_Debug_083F86E8+0x4\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C627C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r6, r4, #0\n" - " ldr r1, ._584\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r5, sp, #0x4\n" - " ldr r1, ._584 + 4\n" - " add r0, r5, #0\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " cmp r4, #0x1\n" - " beq ._580 @cond_branch\n" - " cmp r4, #0x1\n" - " bgt ._581 @cond_branch\n" - " cmp r4, #0\n" - " beq ._582 @cond_branch\n" - " b ._595\n" - "._585:\n" - " .align 2, 0\n" - "._584:\n" - " .word gUnknown_Debug_083F7FD4\n" - " .word gUnknown_Debug_083F8764\n" - "._581:\n" - " cmp r6, #0x2\n" - " beq ._586 @cond_branch\n" - " b ._595\n" - "._582:\n" - " ldr r0, ._589\n" - " ldr r0, [r0]\n" - " ldr r1, ._589 + 4\n" - " add r0, r0, r1\n" - " b ._588\n" - "._590:\n" - " .align 2, 0\n" - "._589:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - "._580:\n" - " ldr r4, ._593\n" - " ldr r3, [r4]\n" - " ldr r1, ._593 + 4\n" - " add r0, r3, r1\n" - " ldrb r2, [r0]\n" - " ldr r1, ._593 + 8\n" - " mov r6, #0xb4\n" - " lsl r6, r6, #0x1\n" - " add r0, r3, r6\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r0, [r0, #0x4]\n" - " sub r0, r0, #0x1\n" - " cmp r2, r0\n" - " bge ._595 @cond_branch\n" - " lsl r2, r2, #0x19\n" - " mov r0, #0xa0\n" - " lsl r0, r0, #0x13\n" - " add r2, r2, r0\n" - " lsr r2, r2, #0x18\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, [r4]\n" - " ldr r2, ._593 + 4\n" - " add r1, r0, r2\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, [r4]\n" - " add r0, r0, r2\n" - "._588:\n" - " ldrb r2, [r0]\n" - " lsl r2, r2, #0x19\n" - " mov r6, #0xa0\n" - " lsl r6, r6, #0x13\n" - " add r2, r2, r6\n" - " lsr r2, r2, #0x18\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " bl Menu_PrintText\n" - " b ._595\n" - "._594:\n" - " .align 2, 0\n" - "._593:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - " .word gUnknown_Debug_083F8698\n" - "._586:\n" - " ldr r4, ._596\n" - " ldr r0, [r4]\n" - " ldr r2, ._596 + 4\n" - " add r1, r0, r2\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._595 @cond_branch\n" - " add r2, r0, #0\n" - " lsl r2, r2, #0x19\n" - " mov r6, #0xa0\n" - " lsl r6, r6, #0x13\n" - " add r2, r2, r6\n" - " lsr r2, r2, #0x18\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, [r4]\n" - " ldr r2, ._596 + 4\n" - " add r1, r0, r2\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, [r4]\n" - " add r0, r0, r2\n" - " ldrb r2, [r0]\n" - " lsl r2, r2, #0x19\n" - " add r2, r2, r6\n" - " lsr r2, r2, #0x18\n" - " mov r0, sp\n" - " mov r1, #0x1\n" - " bl Menu_PrintText\n" - "._595:\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._597:\n" - " .align 2, 0\n" - "._596:\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6384() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " mov r0, #0x0\n" - " mov r1, #0x4\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r5, #0x0\n" - " ldr r3, ._600\n" - " ldr r1, ._600 + 4\n" - " ldr r0, [r1]\n" - " mov r2, #0xb4\n" - " lsl r2, r2, #0x1\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r3\n" - " ldr r0, [r0]\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._598 @cond_branch\n" - " add r4, r1, #0\n" - " ldr r0, ._600 + 8\n" - " mov r9, r0\n" - " mov r8, r3\n" - " add r7, r2, #0\n" - " mov r6, #0x1\n" - "._599:\n" - " ldr r0, [r4]\n" - " add r0, r0, r9\n" - " mov r1, #0xfc\n" - " strb r1, [r0]\n" - " ldr r0, [r4]\n" - " add r1, r1, #0x70\n" - " add r0, r0, r1\n" - " strb r6, [r0]\n" - " ldr r0, [r4]\n" - " ldr r2, ._600 + 12\n" - " add r0, r0, r2\n" - " strb r6, [r0]\n" - " ldr r1, [r4]\n" - " add r2, r2, #0x1\n" - " add r0, r1, r2\n" - " add r1, r1, r7\n" - " ldrb r1, [r1]\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r8\n" - " ldr r1, [r1]\n" - " add r1, r1, r5\n" - " ldrb r1, [r1]\n" - " mov r2, #0x1\n" - " bl debug_80C5738\n" - " ldr r0, [r4]\n" - " add r0, r0, r9\n" - " lsl r2, r5, #0x19\n" - " mov r1, #0xa0\n" - " lsl r1, r1, #0x13\n" - " add r2, r2, r1\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0x2\n" - " bl Menu_PrintText\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " ldr r0, [r4]\n" - " add r0, r0, r7\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r8\n" - " ldr r0, [r0]\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._599 @cond_branch\n" - "._598:\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._601:\n" - " .align 2, 0\n" - "._600:\n" - " .word gUnknown_Debug_083F8698\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x16b\n" - " .word 0x16d\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C643C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " mov r0, #0x2\n" - " mov r1, #0x5\n" - " mov r2, #0x1c\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " mov r5, #0x0\n" - " ldr r6, ._605\n" - " ldr r1, ._605 + 4\n" - " ldr r0, [r1]\n" - " mov r3, #0xb4\n" - " lsl r3, r3, #0x1\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r6\n" - " ldr r0, [r0]\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " beq ._602 @cond_branch\n" - " add r4, r1, #0\n" - " mov r0, #0x1\n" - " mov r8, r0\n" - "._607:\n" - " ldr r0, [r4]\n" - " ldr r7, ._605 + 8\n" - " add r2, r0, r7\n" - " mov r0, #0xfc\n" - " strb r0, [r2]\n" - " ldr r0, [r4]\n" - " mov r2, #0xb6\n" - " lsl r2, r2, #0x1\n" - " add r0, r0, r2\n" - " mov r7, r8\n" - " strb r7, [r0]\n" - " ldr r2, [r4]\n" - " ldr r7, ._605 + 12\n" - " add r0, r2, r7\n" - " ldrb r0, [r0]\n" - " cmp r5, r0\n" - " bne ._603 @cond_branch\n" - " ldr r0, ._605 + 16\n" - " add r2, r2, r0\n" - " mov r0, #0x2\n" - " strb r0, [r2]\n" - " ldr r1, [r1]\n" - " mov r2, #0xb7\n" - " lsl r2, r2, #0x1\n" - " add r0, r1, r2\n" - " add r1, r1, r3\n" - " ldrb r1, [r1]\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r6\n" - " ldr r1, [r1]\n" - " add r1, r1, r5\n" - " ldrb r1, [r1]\n" - " mov r2, #0x2\n" - " bl debug_80C5738\n" - " b ._604\n" - "._606:\n" - " .align 2, 0\n" - "._605:\n" - " .word gUnknown_Debug_083F8698\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x16b\n" - " .word 0x169\n" - " .word 0x16d\n" - "._603:\n" - " ldr r3, ._608\n" - " add r0, r2, r3\n" - " mov r7, r8\n" - " strb r7, [r0]\n" - " ldr r1, [r1]\n" - " mov r2, #0xb7\n" - " lsl r2, r2, #0x1\n" - " add r0, r1, r2\n" - " ldr r2, ._608 + 4\n" - " sub r3, r3, #0x5\n" - " add r1, r1, r3\n" - " ldrb r1, [r1]\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " ldr r1, [r1]\n" - " add r1, r1, r5\n" - " ldrb r1, [r1]\n" - " mov r2, #0x1\n" - " bl debug_80C5738\n" - "._604:\n" - " ldr r0, [r4]\n" - " ldr r7, ._608 + 8\n" - " add r0, r0, r7\n" - " lsl r2, r5, #0x19\n" - " mov r1, #0xa0\n" - " lsl r1, r1, #0x13\n" - " add r2, r2, r1\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0x2\n" - " bl Menu_PrintText\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " ldr r6, ._608 + 4\n" - " add r1, r4, #0\n" - " ldr r0, [r4]\n" - " mov r3, #0xb4\n" - " lsl r3, r3, #0x1\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r6\n" - " ldr r0, [r0]\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._607 @cond_branch\n" - "._602:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._609:\n" - " .align 2, 0\n" - "._608:\n" - " .word 0x16d\n" - " .word gUnknown_Debug_083F8698\n" - " .word 0x16b\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6544() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r9, r0\n" - " ldr r0, ._614\n" - " mov r8, r0\n" - " ldr r6, ._614 + 4\n" - " ldr r1, [r6]\n" - " mov r5, #0xb4\n" - " lsl r5, r5, #0x1\n" - " add r0, r1, r5\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r8\n" - " ldr r4, ._614 + 8\n" - " add r1, r1, r4\n" - " ldrb r1, [r1]\n" - " ldr r0, [r0]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " bl debug_80C5B60\n" - " add r7, r0, #0\n" - " ldr r2, ._614 + 12\n" - " ldr r3, [r6]\n" - " add r5, r3, r5\n" - " ldrb r0, [r5]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r8\n" - " add r4, r3, r4\n" - " ldrb r1, [r4]\n" - " ldr r0, [r0]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r2, r2, #0x4\n" - " add r0, r0, r2\n" - " ldr r1, [r0]\n" - " ldr r5, [r1]\n" - " ldr r4, [r1, #0x4]\n" - " ldr r2, ._614 + 16\n" - " mov r6, #0xb5\n" - " lsl r6, r6, #0x1\n" - " add r0, r3, r6\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldr r3, [r0]\n" - " ldrb r0, [r1, #0x8]\n" - " cmp r0, #0\n" - " bne ._623 @cond_branch\n" - " mov r0, r9\n" - " cmp r0, #0x1\n" - " beq ._611 @cond_branch\n" - " cmp r0, #0x2\n" - " beq ._612 @cond_branch\n" - " b ._623\n" - "._615:\n" - " .align 2, 0\n" - "._614:\n" - " .word gUnknown_Debug_083F8698\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - " .word gUnknown_Debug_083F8554\n" - " .word gUnknown_Debug_083F8768\n" - "._611:\n" - " sub r0, r4, r3\n" - " cmp r7, r0\n" - " bcs ._616 @cond_branch\n" - " add r7, r7, r3\n" - " b ._623\n" - "._616:\n" - " cmp r7, r4\n" - " bcc ._622 @cond_branch\n" - " b ._619\n" - "._612:\n" - " add r0, r5, r3\n" - " cmp r7, r0\n" - " bls ._620 @cond_branch\n" - " sub r7, r7, r3\n" - " b ._623\n" - "._620:\n" - " cmp r7, r5\n" - " bls ._622 @cond_branch\n" - "._619:\n" - " add r7, r5, #0\n" - " b ._623\n" - "._622:\n" - " add r7, r4, #0\n" - "._623:\n" - " ldr r1, ._624\n" - " ldr r0, ._624 + 4\n" - " ldr r2, [r0]\n" - " mov r3, #0xb4\n" - " lsl r3, r3, #0x1\n" - " add r0, r2, r3\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r6, ._624 + 8\n" - " add r1, r2, r6\n" - " ldrb r1, [r1]\n" - " ldr r0, [r0]\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " add r0, r7, #0\n" - " bl debug_80C5B74\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._625:\n" - " .align 2, 0\n" - "._624:\n" - " .word gUnknown_Debug_083F8698\n" - " .word gUnknown_Debug_2038A1C\n" - " .word 0x169\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6630() -{ - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0xfc\n" - " strb r0, [r4]\n" - " add r4, r4, #0x1\n" - " mov r0, #0x1\n" - " strb r0, [r4]\n" - " add r4, r4, #0x1\n" - " cmp r2, #0x2\n" - " bne ._626 @cond_branch\n" - " ldr r0, ._629\n" - " ldr r0, [r0]\n" - " mov r5, #0xb5\n" - " lsl r5, r5, #0x1\n" - " add r0, r0, r5\n" - " ldrb r0, [r0]\n" - " cmp r3, r0\n" - " beq ._627 @cond_branch\n" - " strb r2, [r4]\n" - " b ._628\n" - "._630:\n" - " .align 2, 0\n" - "._629:\n" - " .word gUnknown_Debug_2038A1C\n" - "._627:\n" - " mov r0, #0x4\n" - "._626:\n" - " strb r0, [r4]\n" - "._628:\n" - " add r0, r1, #0\n" - " add r0, r0, #0xa1\n" - " strb r0, [r4, #0x1]\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6678() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " mov r9, r0\n" - " add r6, r1, #0\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r8, r3\n" - " mov r7, #0x0\n" - " sub r0, r2, #1\n" - " cmp r0, #0x9\n" - " bhi ._644 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._633\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._634:\n" - " .align 2, 0\n" - "._633:\n" - " .word ._632\n" - "._632:\n" - " .word ._635\n" - " .word ._636\n" - " .word ._637\n" - " .word ._638\n" - " .word ._639\n" - " .word ._640\n" - " .word ._641\n" - " .word ._642\n" - " .word ._643\n" - " .word ._644\n" - "._644:\n" - " mov r0, r9\n" - " add r4, r0, r7\n" - " ldr r5, ._645\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x9\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._643:\n" - " mov r1, r9\n" - " add r4, r1, r7\n" - " ldr r5, ._645 + 4\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x8\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._642:\n" - " mov r0, r9\n" - " add r4, r0, r7\n" - " ldr r5, ._645 + 8\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x7\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._641:\n" - " mov r1, r9\n" - " add r4, r1, r7\n" - " ldr r5, ._645 + 12\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x6\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._640:\n" - " mov r0, r9\n" - " add r4, r0, r7\n" - " ldr r5, ._645 + 16\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x5\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._639:\n" - " mov r1, r9\n" - " add r4, r1, r7\n" - " ldr r5, ._645 + 20\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x4\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._638:\n" - " mov r0, r9\n" - " add r4, r0, r7\n" - " mov r5, #0xfa\n" - " lsl r5, r5, #0x2\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x3\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " add r1, r5, #0\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._637:\n" - " mov r1, r9\n" - " add r4, r1, r7\n" - " add r0, r6, #0\n" - " mov r1, #0x64\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x2\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " mov r1, #0x64\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._636:\n" - " mov r0, r9\n" - " add r4, r0, r7\n" - " add r0, r6, #0\n" - " mov r1, #0xa\n" - " bl __udivsi3\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " mov r2, r8\n" - " mov r3, #0x1\n" - " bl debug_80C6630\n" - " add r0, r6, #0\n" - " mov r1, #0xa\n" - " bl __umodsi3\n" - " add r6, r0, #0\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - "._635:\n" - " mov r1, r9\n" - " add r0, r1, r7\n" - " lsl r1, r6, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, r8\n" - " mov r3, #0x0\n" - " bl debug_80C6630\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word 0x3b9aca00\n" - " .word 0x5f5e100\n" - " .word 0x989680\n" - " .word 0xf4240\n" - " .word 0x186a0\n" - " .word 0x2710\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C689C() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " add r4, r1, #0\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r3, #0x0\n" - " ldrb r0, [r4]\n" - " b ._647\n" - "._649:\n" - " add r1, r5, r3\n" - " add r0, r4, r3\n" - " ldrb r0, [r0]\n" - " strb r0, [r1]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " add r0, r4, r3\n" - " ldrb r0, [r0]\n" - "._647:\n" - " cmp r0, #0xff\n" - " beq ._648 @cond_branch\n" - " cmp r3, r2\n" - " bcc ._649 @cond_branch\n" - "._648:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C68CC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffff8\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " lsl r1, r1, #0x18\n" - " lsr r6, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r5, r2, #0x18\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r2, #0x0\n" - " mov r1, #0x0\n" - "._650:\n" - " mov r7, sp\n" - " add r0, r7, r2\n" - " strb r1, [r0]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x3\n" - " bls ._650 @cond_branch\n" - " mov r1, sp\n" - " mov r0, #0xff\n" - " strb r0, [r1, #0x4]\n" - " cmp r3, #0x2\n" - " beq ._651 @cond_branch\n" - " cmp r3, #0x2\n" - " bgt ._652 @cond_branch\n" - " cmp r3, #0x1\n" - " beq ._653 @cond_branch\n" - " b ._654\n" - "._652:\n" - " cmp r3, #0x3\n" - " beq ._655 @cond_branch\n" - "._654:\n" - " mov r1, sp\n" - " lsr r0, r4, #0xc\n" - " strb r0, [r1]\n" - "._655:\n" - " mov r1, sp\n" - " mov r0, #0xf0\n" - " lsl r0, r0, #0x4\n" - " and r0, r0, r4\n" - " lsr r0, r0, #0x8\n" - " strb r0, [r1, #0x1]\n" - "._651:\n" - " mov r1, sp\n" - " mov r0, #0xf0\n" - " and r0, r0, r4\n" - " lsr r0, r0, #0x4\n" - " strb r0, [r1, #0x2]\n" - "._653:\n" - " mov r2, sp\n" - " mov r1, #0xf\n" - " add r0, r4, #0\n" - " and r0, r0, r1\n" - " strb r0, [r2, #0x3]\n" - " mov r2, #0x0\n" - "._658:\n" - " mov r0, sp\n" - " add r1, r0, r2\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x9\n" - " bhi ._656 @cond_branch\n" - " add r0, r0, #0xa1\n" - " b ._657\n" - "._656:\n" - " add r0, r0, #0xb1\n" - "._657:\n" - " strb r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x3\n" - " bls ._658 @cond_branch\n" - " mov r0, #0x4\n" - " sub r0, r0, r3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r0, r0, sp\n" - " add r1, r6, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void InitSeePokemonGraphics() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl debug_80C35DC\n" - " ldr r1, ._659\n" - " ldr r2, ._659 + 4\n" - " ldr r0, ._659 + 8\n" - " str r1, [r0]\n" - " str r2, [r0, #0x4]\n" - " ldr r1, ._659 + 12\n" - " str r1, [r0, #0x8]\n" - " ldr r0, [r0, #0x8]\n" - " ldr r0, ._659 + 16\n" - " mov r1, #0x80\n" - " mov r2, #0x60\n" - " bl LoadPalette\n" - " ldr r1, ._659 + 20\n" - " add r0, sp, #0x4\n" - " strh r1, [r0]\n" - " mov r1, #0x0\n" - " mov r2, #0x2\n" - " bl LoadPalette\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r5, #0x0\n" - " str r5, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x10\n" - " mov r3, #0x0\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._659 + 24\n" - " mov r6, #0x0\n" - " strh r5, [r0]\n" - " add r0, r0, #0x4\n" - " strh r5, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r5, [r0]\n" - " add r0, r0, #0x4\n" - " strh r5, [r0]\n" - " ldr r1, ._659 + 28\n" - " mov r0, #0x3f\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " mov r0, #0x1f\n" - " strh r0, [r1]\n" - " add r1, r1, #0x6\n" - " mov r0, #0xf1\n" - " strh r0, [r1]\n" - " ldr r0, ._659 + 32\n" - " strh r5, [r0]\n" - " add r1, r1, #0x4\n" - " mov r0, #0x7\n" - " strh r0, [r1]\n" - " ldr r3, ._659 + 36\n" - " ldrh r2, [r3]\n" - " strh r5, [r3]\n" - " ldr r4, ._659 + 40\n" - " ldrh r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strh r0, [r4]\n" - " strh r2, [r3]\n" - " ldr r0, ._659 + 44\n" - " bl SetVBlankCallback\n" - " ldr r0, ._659 + 48\n" - " bl SetMainCallback2\n" - " bl sub_809D51C\n" - " ldr r1, ._659 + 52\n" - " ldr r2, ._659 + 56\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r2, ._659 + 60\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " sub r1, r1, #0xa\n" - " mov r2, #0xcd\n" - " lsl r2, r2, #0x6\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, ._659 + 64\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " ldr r1, ._659 + 68\n" - " ldr r0, ._659 + 72\n" - " str r0, [r1]\n" - " ldr r1, ._659 + 76\n" - " strh r1, [r0]\n" - " strb r6, [r0, #0x2]\n" - " strb r6, [r0, #0x3]\n" - " strb r6, [r0, #0x5]\n" - " strb r6, [r0, #0x7]\n" - " strb r6, [r0, #0xa]\n" - " strb r6, [r0, #0x8]\n" - " ldr r4, ._659 + 80\n" - " add r0, r4, #0\n" - " mov r1, #0x6c\n" - " mov r2, #0x74\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " ldr r6, ._659 + 84\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " strh r5, [r0, #0x2e]\n" - " mov r1, #0x0\n" - " bl StartSpriteAnim\n" - " add r0, r4, #0\n" - " mov r1, #0x6c\n" - " mov r2, #0x74\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0x2e]\n" - " bl StartSpriteAnim\n" - " add r0, r4, #0\n" - " mov r1, #0x6c\n" - " mov r2, #0x74\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " mov r1, #0x2\n" - " strh r1, [r0, #0x2e]\n" - " bl StartSpriteAnim\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._660:\n" - " .align 2, 0\n" - "._659:\n" - " .word byte_83F88EC\n" - " .word 0x600e000\n" - " .word 0x40000d4\n" - " .word 0x80000400\n" - " .word word_83F888C\n" - " .word 0x7fff\n" - " .word 0x4000040\n" - " .word 0x4000048\n" - " .word 0x4000052\n" - " .word 0x4000208\n" - " .word 0x4000200\n" - " .word debug_80C3758+1\n" - " .word debug_80C370C+1\n" - " .word 0x4000008\n" - " .word 0x1f0b\n" - " .word 0x1e0a\n" - " .word debug_80C6B00+1\n" - " .word gUnknown_Debug_2038A20\n" - " .word +0x2018000\n" - " .word 0x115\n" - " .word gSpriteTemplate_83F8874\n" - " .word gSprites\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6B00() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xffffffec\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " ldr r1, ._666\n" - " mov r0, sp\n" - " mov r2, #0x12\n" - " bl memcpy\n" - " mov r0, #0xa\n" - " mov r1, #0x0\n" - " mov r2, #0xf\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x9\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x10\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._666 + 4\n" - " mov r1, #0x11\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._666 + 8\n" - " mov r1, #0x1b\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._666 + 12\n" - " mov r1, #0x11\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0xa\n" - " mov r1, #0x8\n" - " mov r2, #0x1d\n" - " mov r3, #0xc\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r2, #0x0\n" - " ldr r4, ._666 + 16\n" - " ldr r0, ._666 + 20\n" - " add r3, r0, #0\n" - "._661:\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r4\n" - " add r1, r2, r3\n" - " strh r1, [r0]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0xe\n" - " bls ._661 @cond_branch\n" - " mov r2, #0x0\n" - " ldr r5, ._666 + 24\n" - " lsl r6, r7, #0x2\n" - " mov r8, r6\n" - " ldr r4, ._666 + 28\n" - " ldr r0, ._666 + 32\n" - " add r3, r0, #0\n" - "._662:\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r4\n" - " add r1, r2, r3\n" - " strh r1, [r0]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0xe\n" - " bls ._662 @cond_branch\n" - " add r0, r5, #0\n" - " mov r1, #0x14\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " mov r0, #0xa\n" - " mov r1, #0xd\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r1, sp\n" - " mov r0, #0x23\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " ldr r4, ._666 + 36\n" - " mov r5, #0x93\n" - " lsl r5, r5, #0x8\n" - " add r3, r5, #0\n" - "._663:\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r4\n" - " mov r6, sp\n" - " add r0, r6, r2\n" - " ldrb r0, [r0]\n" - " add r0, r0, r3\n" - " strh r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x11\n" - " bls ._663 @cond_branch\n" - " mov r1, sp\n" - " mov r0, #0x24\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " ldr r5, ._666 + 40\n" - " ldr r4, ._666 + 44\n" - " mov r0, #0x93\n" - " lsl r0, r0, #0x8\n" - " add r3, r0, #0\n" - "._664:\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r4\n" - " mov r6, sp\n" - " add r0, r6, r2\n" - " ldrb r0, [r0]\n" - " add r0, r0, r3\n" - " strh r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x11\n" - " bls ._664 @cond_branch\n" - " mov r1, sp\n" - " mov r0, #0x25\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " ldr r4, ._666 + 48\n" - " mov r0, #0x93\n" - " lsl r0, r0, #0x8\n" - " add r3, r0, #0\n" - "._665:\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r4\n" - " mov r6, sp\n" - " add r0, r6, r2\n" - " ldrb r0, [r0]\n" - " add r0, r0, r3\n" - " strh r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x11\n" - " bls ._665 @cond_branch\n" - " add r0, r5, #0\n" - " mov r1, #0xf\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r1, ._666 + 52\n" - " ldr r2, ._666 + 56\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r5, ._666 + 60\n" - " add r0, r5, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._666 + 64\n" - " mov r6, r8\n" - " add r0, r6, r7\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._666 + 68\n" - " str r1, [r0]\n" - " add sp, sp, #0x14\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._667:\n" - " .align 2, 0\n" - "._666:\n" - " .word gUnknown_Debug_083F8815\n" - " .word gUnknown_Debug_083F87D0\n" - " .word gUnknown_Debug_083F87D8\n" - " .word gUnknown_Debug_083F87E0\n" - " .word 0x600fa56\n" - " .word 0xa311\n" - " .word gUnknown_Debug_083F87F4\n" - " .word 0x600f256\n" - " .word 0x8301\n" - " .word 0x600f396\n" - " .word gUnknown_Debug_083F8801\n" - " .word 0x600f3d6\n" - " .word 0x600f416\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x699f\n" - " .word gTasks\n" - " .word debug_80C6CB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6CB8() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffff4\n" - " mov sl, r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov sl, r0\n" - " ldr r5, ._668\n" - " ldr r4, [r5]\n" - " ldrh r2, [r4]\n" - " lsl r0, r2, #0x3\n" - " ldr r1, ._668 + 4\n" - " add r0, r0, r1\n" - " ldr r1, ._668 + 8\n" - " lsl r2, r2, #0x2\n" - " add r2, r2, r1\n" - " ldrb r1, [r2]\n" - " ldrb r2, [r2, #0x1]\n" - " ldr r3, ._668 + 12\n" - " mov r8, r3\n" - " ldr r6, [r3]\n" - " str r6, [sp, #0x8]\n" - " ldr r3, [r3, #0x4]\n" - " str r3, [sp]\n" - " ldrh r3, [r4]\n" - " str r3, [sp, #0x4]\n" - " add r3, r6, #0\n" - " bl DecompressPicFromTable_2\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r7, ._668 + 16\n" - " add r0, r0, r7\n" - " bl LoadCompressedObjectPalette\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x1\n" - " bl GetMonSpriteTemplate_803C56C\n" - " ldr r0, ._668 + 20\n" - " mov r1, #0x28\n" - " mov r2, #0x28\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " ldr r1, [r5]\n" - " strb r0, [r1, #0x2]\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._668 + 24\n" - " add r0, r0, r1\n" - " ldr r3, ._668 + 28\n" - " mov r9, r3\n" - " str r3, [r0]\n" - " ldrb r0, [r2, #0x2]\n" - " lsl r1, r0, #0x4\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " ldr r6, ._668 + 32\n" - " add r1, r1, r6\n" - " ldrb r2, [r1, #0x5]\n" - " mov r6, #0xd\n" - " neg r6, r6\n" - " add r0, r6, #0\n" - " and r0, r0, r2\n" - " strb r0, [r1, #0x5]\n" - " ldr r4, [r5]\n" - " ldrh r2, [r4]\n" - " lsl r0, r2, #0x3\n" - " ldr r1, ._668 + 36\n" - " add r0, r0, r1\n" - " ldr r1, ._668 + 40\n" - " lsl r2, r2, #0x2\n" - " add r2, r2, r1\n" - " ldrb r1, [r2]\n" - " ldrb r2, [r2, #0x1]\n" - " mov r7, r8\n" - " ldr r3, [r7, #0x8]\n" - " str r3, [sp]\n" - " ldrh r3, [r4]\n" - " str r3, [sp, #0x4]\n" - " ldr r3, [sp, #0x8]\n" - " bl DecompressPicFromTable_2\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._668 + 16\n" - " add r0, r0, r1\n" - " bl LoadCompressedObjectPalette\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x2\n" - " bl GetMonSpriteTemplate_803C56C\n" - " ldr r0, ._668 + 20\n" - " mov r1, #0x28\n" - " mov r2, #0x78\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " ldr r1, [r5]\n" - " strb r0, [r1, #0x3]\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0x3]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r3, ._668 + 24\n" - " add r0, r0, r3\n" - " mov r7, r9\n" - " str r7, [r0]\n" - " ldrb r1, [r2, #0x3]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._668 + 32\n" - " add r0, r0, r1\n" - " ldrb r1, [r0, #0x5]\n" - " and r6, r6, r1\n" - " strb r6, [r0, #0x5]\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " ldr r1, ._668 + 44\n" - " mov r2, #0x0\n" - " str r2, [sp]\n" - " str r2, [sp, #0x4]\n" - " mov r2, #0x68\n" - " mov r3, #0x2c\n" - " bl CreateMonIcon\n" - " ldr r1, [r5]\n" - " strb r0, [r1, #0x4]\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " bl SpeciesToNationalPokedexNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r2, #0xff\n" - " lsl r2, r2, #0x2\n" - " mov r1, #0x2\n" - " bl sub_8091738\n" - " ldr r1, ._668 + 48\n" - " ldr r3, ._668 + 52\n" - " add r0, r3, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r6, ._668 + 56\n" - " add r0, r6, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x3e\n" - " ldr r7, ._668 + 60\n" - " add r0, r7, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r2, ._668 + 64\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x11\n" - " mov r2, #0x3\n" - " bl debug_80C3800\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x1a\n" - " mov r2, #0x5\n" - " bl debug_80C376C\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r3, ._668 + 32\n" - " add r0, r0, r3\n" - " ldrb r0, [r0, #0x5]\n" - " lsr r0, r0, #0x4\n" - " strb r0, [r2, #0x6]\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " ldr r4, ._668 + 68\n" - " add r0, r0, r4\n" - " ldr r6, ._668 + 72\n" - " add r1, r4, r6\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r4\n" - " ldr r1, ._668 + 76\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r1, ._668 + 80\n" - " mov r7, sl\n" - " lsl r0, r7, #0x2\n" - " add r0, r0, sl\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._668 + 84\n" - " str r1, [r0]\n" - " ldr r0, [r5]\n" - " mov r1, #0x0\n" - " strb r1, [r0, #0x9]\n" - " bl StopCryAndClearCrySongs\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x0\n" - " bl PlayCry1\n" - " add sp, sp, #0xc\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._669:\n" - " .align 2, 0\n" - "._668:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gMonFrontPicTable\n" - " .word gMonFrontPicCoords\n" - " .word gUnknown_081FAF4C\n" - " .word gMonPaletteTable\n" - " .word gUnknown_02024E8C\n" - " .word gSprites+0x1c\n" - " .word debug_69+1\n" - " .word gSprites\n" - " .word gMonBackPicTable\n" - " .word gMonBackPicCoords\n" - " .word sub_809D62C+1\n" - " .word 0x600f858\n" - " .word 0xf3fc\n" - " .word 0xf3fd\n" - " .word 0xf3fe\n" - " .word 0xf3ff\n" - " .word gPlttBufferUnfaded+0x200\n" - " .word 0xffffff00\n" - " .word gPlttBufferFaded+0x100\n" - " .word gTasks\n" - " .word debug_80C6EE8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6EE8() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " lsl r6, r6, #0x18\n" - " lsr r6, r6, #0x18\n" - " ldr r4, ._670\n" - " ldr r5, ._670 + 4\n" - " ldr r1, [r5]\n" - " add r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, ._670 + 8\n" - " add r4, r4, r0\n" - " ldr r3, [r5]\n" - " ldrb r0, [r3, #0x7]\n" - " add r0, r0, #0x81\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r4\n" - " ldrh r4, [r0]\n" - " mov r1, #0x1f\n" - " and r1, r1, r4\n" - " ldrb r2, [r3, #0xc]\n" - " mov r0, #0x20\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r3, #0xc]\n" - " ldr r3, [r5]\n" - " mov r1, #0xf8\n" - " lsl r1, r1, #0x2\n" - " and r1, r1, r4\n" - " ldrh r2, [r3, #0xc]\n" - " ldr r0, ._670 + 12\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strh r0, [r3, #0xc]\n" - " mov r1, #0xf8\n" - " lsl r1, r1, #0x7\n" - " and r1, r1, r4\n" - " lsr r1, r1, #0x8\n" - " ldrb r2, [r3, #0xd]\n" - " mov r0, #0x7d\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r3, #0xd]\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0xd]\n" - " mov r0, #0x7f\n" - " and r0, r0, r1\n" - " strb r0, [r2, #0xd]\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x7]\n" - " add r0, r0, #0x1\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " mov r3, #0x2\n" - " bl debug_80C68CC\n" - " ldr r0, ._670 + 16\n" - " mov r1, #0xd\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0xe\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " ldr r1, ._670 + 20\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._670 + 24\n" - " str r1, [r0]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._671:\n" - " .align 2, 0\n" - "._670:\n" - " .word gPlttBufferUnfaded+0x100\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0xffffff00\n" - " .word 0xfffffc1f\n" - " .word gUnknown_Debug_083F8813\n" - " .word gTasks\n" - " .word debug_80C6FA8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C6FA8() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r1, ._674\n" - " ldrh r2, [r1, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " add r4, r1, #0\n" - " cmp r0, #0\n" - " beq ._672 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._674 + 4\n" - " bl SetMainCallback2\n" - " ldr r1, ._674 + 8\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._674 + 12\n" - " str r1, [r0]\n" - " b ._703\n" - "._675:\n" - " .align 2, 0\n" - "._674:\n" - " .word gMain\n" - " .word debug_80C370C+1\n" - " .word gTasks\n" - " .word debug_80C373C+1\n" - "._672:\n" - " ldrh r1, [r4, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._676 @cond_branch\n" - " ldr r4, ._678\n" - " ldr r0, [r4]\n" - " ldrh r1, [r0]\n" - " mov r0, #0x0\n" - " b ._677\n" - "._679:\n" - " .align 2, 0\n" - "._678:\n" - " .word gUnknown_Debug_2038A20\n" - "._676:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._680 @cond_branch\n" - " ldr r4, ._682\n" - " ldr r0, [r4]\n" - " ldrh r1, [r0]\n" - " mov r0, #0x1\n" - "._677:\n" - " bl debug_80C3878\n" - " ldr r1, [r4]\n" - " strh r0, [r1]\n" - " ldr r1, ._682 + 4\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._682 + 8\n" - " str r1, [r0]\n" - " b ._703\n" - "._683:\n" - " .align 2, 0\n" - "._682:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gTasks\n" - " .word debug_80C71FC+1\n" - "._680:\n" - " mov r3, #0x1\n" - " and r3, r3, r2\n" - " cmp r3, #0\n" - " beq ._684 @cond_branch\n" - " ldr r0, ._686\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " strb r0, [r1, #0x5]\n" - " ldr r1, ._686 + 4\n" - " ldr r2, ._686 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._686 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._686 + 16\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._686 + 20\n" - " str r1, [r0]\n" - " b ._703\n" - "._687:\n" - " .align 2, 0\n" - "._686:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x4167\n" - " .word gTasks\n" - " .word debug_80C7294+1\n" - "._684:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._689 @cond_branch\n" - " ldr r1, ._691\n" - " ldr r2, [r1]\n" - " ldrb r0, [r2, #0x7]\n" - " cmp r0, #0xd\n" - " bhi ._689 @cond_branch\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._691 + 4\n" - " add r0, r0, r2\n" - " strh r3, [r0]\n" - " ldr r1, [r1]\n" - " ldrb r0, [r1, #0x7]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1, #0x7]\n" - " b ._695\n" - "._692:\n" - " .align 2, 0\n" - "._691:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x5000102\n" - "._689:\n" - " ldrh r1, [r4, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._694 @cond_branch\n" - " ldr r2, ._696\n" - " ldr r1, [r2]\n" - " ldrb r0, [r1, #0x7]\n" - " cmp r0, #0\n" - " beq ._694 @cond_branch\n" - " lsl r0, r0, #0x1\n" - " ldr r1, ._696 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " ldr r1, [r2]\n" - " ldrb r0, [r1, #0x7]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0x7]\n" - " b ._695\n" - "._697:\n" - " .align 2, 0\n" - "._696:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x5000102\n" - "._694:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._698 @cond_branch\n" - " ldr r4, ._701\n" - " ldr r2, [r4]\n" - " ldrb r0, [r2, #0x9]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2, #0x9]\n" - " ldr r1, [r4]\n" - " ldrb r0, [r1, #0x9]\n" - " cmp r0, #0\n" - " beq ._699 @cond_branch\n" - " ldrh r0, [r1]\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " bl GetMonSpritePalFromOtIdPersonality\n" - " ldr r1, [r4]\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x14\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x11\n" - " add r1, r1, r2\n" - " lsr r1, r1, #0x10\n" - " mov r2, #0x20\n" - " bl LoadCompressedPalette\n" - " b ._700\n" - "._702:\n" - " .align 2, 0\n" - "._701:\n" - " .word gUnknown_Debug_2038A20\n" - "._699:\n" - " ldrh r0, [r1]\n" - " mov r1, #0x0\n" - " mov r2, #0x9\n" - " bl GetMonSpritePalFromOtIdPersonality\n" - " ldr r1, [r4]\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x14\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x11\n" - " add r1, r1, r2\n" - " lsr r1, r1, #0x10\n" - " mov r2, #0x20\n" - " bl LoadCompressedPalette\n" - "._700:\n" - " ldr r5, ._704\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " ldr r4, ._704 + 4\n" - " add r0, r0, r4\n" - " ldr r2, ._704 + 8\n" - " add r1, r4, r2\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r4\n" - " ldr r1, ._704 + 12\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - "._695:\n" - " ldr r1, ._704 + 16\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._704 + 20\n" - " str r1, [r0]\n" - " b ._703\n" - "._705:\n" - " .align 2, 0\n" - "._704:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gPlttBufferUnfaded+0x200\n" - " .word 0xffffff00\n" - " .word gPlttBufferFaded+0x100\n" - " .word gTasks\n" - " .word debug_80C6EE8+1\n" - "._698:\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._706 @cond_branch\n" - " bl StopCryAndClearCrySongs\n" - " ldr r0, ._707\n" - " ldr r0, [r0]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x0\n" - " bl PlayCry1\n" - "._706:\n" - " ldr r2, ._707\n" - " ldr r1, [r2]\n" - " ldrb r0, [r1, #0x8]\n" - " add r0, r0, #0x4\n" - " strb r0, [r1, #0x8]\n" - " ldr r3, [r2]\n" - " ldrb r1, [r3, #0x8]\n" - " mov r0, #0x1f\n" - " and r0, r0, r1\n" - " strb r0, [r3, #0x8]\n" - " ldr r0, [r2]\n" - " ldrb r1, [r0, #0x7]\n" - " lsl r1, r1, #0x1\n" - " ldr r2, ._707 + 4\n" - " add r1, r1, r2\n" - " ldr r2, ._707 + 8\n" - " ldrb r0, [r0, #0x8]\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r2\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - "._703:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._708:\n" - " .align 2, 0\n" - "._707:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x5000142\n" - " .word gUnknown_Debug_083F8790\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C71FC() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r6, ._709\n" - " ldr r4, ._709 + 4\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldrb r0, [r0, #0x5]\n" - " lsr r0, r0, #0x4\n" - " bl GetSpritePaletteTagByPaletteNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl FreeSpritePaletteByTag\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " bl DestroySprite\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x3]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldrb r0, [r0, #0x5]\n" - " lsr r0, r0, #0x4\n" - " bl GetSpritePaletteTagByPaletteNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl FreeSpritePaletteByTag\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x3]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " bl DestroySprite\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x4]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " bl sub_809D510\n" - " ldr r1, ._709 + 8\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._709 + 12\n" - " str r1, [r0]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._710:\n" - " .align 2, 0\n" - "._709:\n" - " .word gSprites\n" - " .word gUnknown_Debug_2038A20\n" - " .word gTasks\n" - " .word debug_80C6CB8+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7294() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " ldr r0, ._713\n" - " ldrh r2, [r0, #0x2e]\n" - " mov r1, #0x1\n" - " and r1, r1, r2\n" - " add r3, r0, #0\n" - " cmp r1, #0\n" - " beq ._711 @cond_branch\n" - " ldr r0, ._713 + 4\n" - " ldr r1, [r0]\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0x5]\n" - " ldr r1, ._713 + 8\n" - " ldr r2, ._713 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._713 + 16\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " b ._712\n" - "._714:\n" - " .align 2, 0\n" - "._713:\n" - " .word gMain\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x699f\n" - "._711:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._715 @cond_branch\n" - " ldr r6, ._717\n" - " ldr r0, [r6]\n" - " strb r1, [r0, #0x5]\n" - " ldr r1, ._717 + 4\n" - " ldr r2, ._717 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._717 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, [r6]\n" - " add r0, r0, #0x10\n" - " ldr r4, ._717 + 16\n" - " add r1, r4, #0\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, [r6]\n" - " add r0, r0, #0x10\n" - " ldr r5, ._717 + 20\n" - " add r1, r5, #0\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r1, [r6]\n" - " add r0, r1, #0\n" - " add r0, r0, #0x10\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x5\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r4, r4, r2\n" - " add r1, r1, r4\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r1, [r6]\n" - " add r0, r1, #0\n" - " add r0, r0, #0x10\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x5\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r5, r5, r2\n" - " add r1, r1, r5\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - "._712:\n" - " ldr r1, ._717 + 24\n" - " lsl r0, r7, #0x2\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._717 + 28\n" - " str r1, [r0]\n" - " b ._754\n" - "._718:\n" - " .align 2, 0\n" - "._717:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x699f\n" - " .word gPlttBufferUnfaded+0x100\n" - " .word gPlttBufferFaded+0x100\n" - " .word gTasks\n" - " .word debug_80C6EE8+1\n" - "._715:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._720 @cond_branch\n" - " ldr r0, ._722\n" - " ldr r1, [r0]\n" - " ldrb r0, [r1, #0xa]\n" - " cmp r0, #0x1\n" - " bhi ._720 @cond_branch\n" - " add r0, r0, #0x1\n" - " strb r0, [r1, #0xa]\n" - " b ._754\n" - "._723:\n" - " .align 2, 0\n" - "._722:\n" - " .word gUnknown_Debug_2038A20\n" - "._720:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._725 @cond_branch\n" - " ldr r0, ._727\n" - " ldr r1, [r0]\n" - " ldrb r0, [r1, #0xa]\n" - " cmp r0, #0\n" - " beq ._725 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0xa]\n" - " b ._754\n" - "._728:\n" - " .align 2, 0\n" - "._727:\n" - " .word gUnknown_Debug_2038A20\n" - "._725:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._729 @cond_branch\n" - " ldr r0, ._734\n" - " ldr r2, [r0]\n" - " ldrb r0, [r2, #0xa]\n" - " cmp r0, #0x1\n" - " beq ._730 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._731 @cond_branch\n" - " cmp r0, #0\n" - " beq ._732 @cond_branch\n" - " b ._754\n" - "._735:\n" - " .align 2, 0\n" - "._734:\n" - " .word gUnknown_Debug_2038A20\n" - "._731:\n" - " cmp r0, #0x2\n" - " beq ._736 @cond_branch\n" - " b ._754\n" - "._732:\n" - " ldrb r3, [r2, #0xc]\n" - " lsl r1, r3, #0x1b\n" - " lsr r0, r1, #0x1b\n" - " cmp r0, #0x1e\n" - " bhi ._761 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " mov r1, #0x20\n" - " neg r1, r1\n" - " and r1, r1, r3\n" - " orr r1, r1, r0\n" - " strb r1, [r2, #0xc]\n" - " b ._761\n" - "._730:\n" - " ldrh r3, [r2, #0xc]\n" - " lsl r1, r3, #0x16\n" - " lsr r0, r1, #0x1b\n" - " cmp r0, #0x1e\n" - " bhi ._761 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " ldr r1, ._742\n" - " and r1, r1, r3\n" - " orr r1, r1, r0\n" - " strh r1, [r2, #0xc]\n" - " b ._761\n" - "._743:\n" - " .align 2, 0\n" - "._742:\n" - " .word 0xfffffc1f\n" - "._736:\n" - " ldrb r3, [r2, #0xd]\n" - " lsl r1, r3, #0x19\n" - " lsr r0, r1, #0x1b\n" - " cmp r0, #0x1e\n" - " bhi ._761 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, #0x7d\n" - " neg r1, r1\n" - " and r1, r1, r3\n" - " orr r1, r1, r0\n" - " strb r1, [r2, #0xd]\n" - " b ._761\n" - "._729:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._754 @cond_branch\n" - " ldr r0, ._751\n" - " ldr r3, [r0]\n" - " ldrb r0, [r3, #0xa]\n" - " cmp r0, #0x1\n" - " beq ._747 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._748 @cond_branch\n" - " cmp r0, #0\n" - " beq ._749 @cond_branch\n" - " b ._754\n" - "._752:\n" - " .align 2, 0\n" - "._751:\n" - " .word gUnknown_Debug_2038A20\n" - "._748:\n" - " cmp r0, #0x2\n" - " beq ._753 @cond_branch\n" - " b ._754\n" - "._749:\n" - " ldrb r2, [r3, #0xc]\n" - " mov r0, #0x1f\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._761 @cond_branch\n" - " lsl r0, r2, #0x1b\n" - " lsr r0, r0, #0x1b\n" - " sub r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " mov r1, #0x20\n" - " neg r1, r1\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strb r1, [r3, #0xc]\n" - " b ._761\n" - "._747:\n" - " ldrh r2, [r3, #0xc]\n" - " mov r0, #0xf8\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._761 @cond_branch\n" - " lsl r0, r2, #0x16\n" - " lsr r0, r0, #0x1b\n" - " sub r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " ldr r1, ._759\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strh r1, [r3, #0xc]\n" - " b ._761\n" - "._760:\n" - " .align 2, 0\n" - "._759:\n" - " .word 0xfffffc1f\n" - "._753:\n" - " ldrb r2, [r3, #0xd]\n" - " mov r0, #0x7c\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._761 @cond_branch\n" - " lsl r0, r2, #0x19\n" - " lsr r0, r0, #0x1b\n" - " sub r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, #0x7d\n" - " neg r1, r1\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strb r1, [r3, #0xd]\n" - "._761:\n" - " ldr r0, ._762\n" - " lsl r1, r7, #0x2\n" - " add r1, r1, r7\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._762 + 4\n" - " str r0, [r1]\n" - "._754:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._763:\n" - " .align 2, 0\n" - "._762:\n" - " .word gTasks\n" - " .word debug_80C74E4+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C74E4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._764\n" - " ldr r3, [r0]\n" - " ldrb r0, [r3, #0xc]\n" - " lsl r0, r0, #0x1b\n" - " lsr r0, r0, #0x1b\n" - " ldrh r2, [r3, #0xc]\n" - " mov r1, #0xf8\n" - " lsl r1, r1, #0x2\n" - " and r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrb r1, [r3, #0xd]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x1b\n" - " lsl r1, r1, #0xa\n" - " add r0, r0, r1\n" - " ldr r6, ._764 + 4\n" - " ldrb r1, [r3, #0x7]\n" - " add r1, r1, #0x81\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r6\n" - " strh r0, [r1]\n" - " ldr r1, ._764 + 8\n" - " mov r8, r1\n" - " ldrb r1, [r3, #0x7]\n" - " add r1, r1, #0x81\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r8\n" - " strh r0, [r1]\n" - " ldrb r1, [r3, #0x6]\n" - " lsl r1, r1, #0x4\n" - " ldrb r2, [r3, #0x7]\n" - " ldr r4, ._764 + 12\n" - " add r2, r2, r4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r6\n" - " strh r0, [r1]\n" - " ldrb r1, [r3, #0x6]\n" - " lsl r1, r1, #0x4\n" - " ldrb r2, [r3, #0x7]\n" - " add r2, r2, r4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r8\n" - " strh r0, [r1]\n" - " mov r1, #0xe\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " ldr r1, ._764 + 16\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._764 + 20\n" - " str r1, [r0]\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._765:\n" - " .align 2, 0\n" - "._764:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gPlttBufferUnfaded\n" - " .word gPlttBufferFaded\n" - " .word 0x101\n" - " .word gTasks\n" - " .word debug_80C7294+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7584() -{ - asm( - " push {r4, lr}\n" - " add r2, r0, #0\n" - " ldr r0, ._771\n" - " ldr r3, [r0]\n" - " ldrb r1, [r3, #0x5]\n" - " add r4, r0, #0\n" - " cmp r1, #0\n" - " beq ._766 @cond_branch\n" - " mov r1, #0x2e\n" - " ldsh r0, [r2, r1]\n" - " cmp r0, #0x1\n" - " beq ._767 @cond_branch\n" - " cmp r0, #0x1\n" - " ble ._768 @cond_branch\n" - " cmp r0, #0x2\n" - " beq ._769 @cond_branch\n" - "._768:\n" - " ldrb r0, [r3, #0xc]\n" - " lsl r0, r0, #0x1b\n" - " b ._773\n" - "._772:\n" - " .align 2, 0\n" - "._771:\n" - " .word gUnknown_Debug_2038A20\n" - "._767:\n" - " ldrh r0, [r3, #0xc]\n" - " lsl r0, r0, #0x16\n" - " b ._773\n" - "._769:\n" - " ldrb r0, [r3, #0xd]\n" - " lsl r0, r0, #0x19\n" - "._773:\n" - " lsr r0, r0, #0x1b\n" - " lsl r0, r0, #0x2\n" - " strh r0, [r2, #0x24]\n" - " mov r1, #0x2e\n" - " ldsh r0, [r2, r1]\n" - " lsl r0, r0, #0x3\n" - " strh r0, [r2, #0x26]\n" - " ldrh r0, [r2, #0x30]\n" - " add r3, r0, #1\n" - " strh r3, [r2, #0x30]\n" - " mov r0, #0x2e\n" - " ldsh r1, [r2, r0]\n" - " ldr r0, [r4]\n" - " ldrb r0, [r0, #0xa]\n" - " cmp r1, r0\n" - " bne ._775 @cond_branch\n" - " mov r0, #0x8\n" - " and r3, r3, r0\n" - " cmp r3, #0\n" - " bne ._775 @cond_branch\n" - "._766:\n" - " add r0, r2, #0\n" - " add r0, r0, #0x3e\n" - " ldrb r1, [r0]\n" - " mov r2, #0x4\n" - " orr r1, r1, r2\n" - " strb r1, [r0]\n" - " b ._776\n" - "._775:\n" - " add r2, r2, #0x3e\n" - " ldrb r1, [r2]\n" - " mov r0, #0x5\n" - " neg r0, r0\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - "._776:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -__attribute__((naked)) -void InitSeeTrainers() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " bl debug_80C35DC\n" - " ldr r1, ._777\n" - " ldr r2, ._777 + 4\n" - " ldr r0, ._777 + 8\n" - " str r1, [r0]\n" - " str r2, [r0, #0x4]\n" - " ldr r1, ._777 + 12\n" - " str r1, [r0, #0x8]\n" - " ldr r0, [r0, #0x8]\n" - " ldr r0, ._777 + 16\n" - " mov r1, #0x80\n" - " mov r2, #0x60\n" - " bl LoadPalette\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r5, #0x0\n" - " str r5, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x10\n" - " mov r3, #0x0\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._777 + 20\n" - " mov r6, #0x0\n" - " strh r5, [r0]\n" - " add r0, r0, #0x4\n" - " strh r5, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r5, [r0]\n" - " add r0, r0, #0x4\n" - " strh r5, [r0]\n" - " ldr r1, ._777 + 24\n" - " mov r0, #0x3f\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " mov r0, #0x1f\n" - " strh r0, [r1]\n" - " add r1, r1, #0x6\n" - " mov r0, #0xf1\n" - " strh r0, [r1]\n" - " ldr r0, ._777 + 28\n" - " strh r5, [r0]\n" - " add r1, r1, #0x4\n" - " mov r0, #0x7\n" - " strh r0, [r1]\n" - " ldr r3, ._777 + 32\n" - " ldrh r2, [r3]\n" - " strh r5, [r3]\n" - " ldr r4, ._777 + 36\n" - " ldrh r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strh r0, [r4]\n" - " strh r2, [r3]\n" - " ldr r0, ._777 + 40\n" - " bl SetVBlankCallback\n" - " ldr r0, ._777 + 44\n" - " bl SetMainCallback2\n" - " ldr r1, ._777 + 48\n" - " ldr r2, ._777 + 52\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r2, ._777 + 56\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " sub r1, r1, #0xa\n" - " mov r2, #0xcd\n" - " lsl r2, r2, #0x6\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, ._777 + 60\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " ldr r1, ._777 + 64\n" - " ldr r0, ._777 + 68\n" - " str r0, [r1]\n" - " strh r5, [r0]\n" - " strb r6, [r0, #0x2]\n" - " strb r6, [r0, #0x3]\n" - " strb r6, [r0, #0x5]\n" - " strb r6, [r0, #0x7]\n" - " strb r6, [r0, #0xa]\n" - " strb r6, [r0, #0x8]\n" - " ldr r4, ._777 + 72\n" - " add r0, r4, #0\n" - " mov r1, #0x6c\n" - " mov r2, #0x74\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " ldr r6, ._777 + 76\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " strh r5, [r0, #0x2e]\n" - " mov r1, #0x0\n" - " bl StartSpriteAnim\n" - " add r0, r4, #0\n" - " mov r1, #0x6c\n" - " mov r2, #0x74\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0x2e]\n" - " bl StartSpriteAnim\n" - " add r0, r4, #0\n" - " mov r1, #0x6c\n" - " mov r2, #0x74\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " mov r1, #0x2\n" - " strh r1, [r0, #0x2e]\n" - " bl StartSpriteAnim\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._778:\n" - " .align 2, 0\n" - "._777:\n" - " .word byte_83F88EC\n" - " .word 0x600e000\n" - " .word 0x40000d4\n" - " .word 0x80000400\n" - " .word word_83F888C\n" - " .word 0x4000040\n" - " .word 0x4000048\n" - " .word 0x4000052\n" - " .word 0x4000208\n" - " .word 0x4000200\n" - " .word debug_80C3758+1\n" - " .word debug_80C370C+1\n" - " .word 0x4000008\n" - " .word 0x1f0b\n" - " .word 0x1e0a\n" - " .word debug_80C777C+1\n" - " .word gUnknown_Debug_2038A20\n" - " .word +0x2018000\n" - " .word gSpriteTemplate_83F8874\n" - " .word gSprites\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C777C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xffffffec\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " ldr r1, ._784\n" - " mov r0, sp\n" - " mov r2, #0x12\n" - " bl memcpy\n" - " mov r0, #0x9\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x9\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x0\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0xe\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x7\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._784 + 4\n" - " mov r1, #0xf\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._784 + 8\n" - " mov r1, #0x19\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r0, ._784 + 12\n" - " mov r1, #0xf\n" - " mov r2, #0x5\n" - " bl Menu_PrintText\n" - " mov r0, #0xa\n" - " mov r1, #0x8\n" - " mov r2, #0x1d\n" - " mov r3, #0xc\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r2, #0x0\n" - " ldr r4, ._784 + 16\n" - " ldr r0, ._784 + 20\n" - " add r3, r0, #0\n" - "._779:\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r4\n" - " add r1, r2, r3\n" - " strh r1, [r0]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0xe\n" - " bls ._779 @cond_branch\n" - " mov r2, #0x0\n" - " ldr r5, ._784 + 24\n" - " lsl r6, r7, #0x2\n" - " mov r8, r6\n" - " ldr r4, ._784 + 28\n" - " ldr r0, ._784 + 32\n" - " add r3, r0, #0\n" - "._780:\n" - " lsl r0, r2, #0x1\n" - " add r0, r0, r4\n" - " add r1, r2, r3\n" - " strh r1, [r0]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0xe\n" - " bls ._780 @cond_branch\n" - " add r0, r5, #0\n" - " mov r1, #0x14\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " mov r0, #0xa\n" - " mov r1, #0xd\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r1, sp\n" - " mov r0, #0x23\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " ldr r4, ._784 + 36\n" - " mov r5, #0x93\n" - " lsl r5, r5, #0x8\n" - " add r3, r5, #0\n" - "._781:\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r4\n" - " mov r6, sp\n" - " add r0, r6, r2\n" - " ldrb r0, [r0]\n" - " add r0, r0, r3\n" - " strh r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x11\n" - " bls ._781 @cond_branch\n" - " mov r1, sp\n" - " mov r0, #0x24\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " ldr r5, ._784 + 40\n" - " ldr r4, ._784 + 44\n" - " mov r0, #0x93\n" - " lsl r0, r0, #0x8\n" - " add r3, r0, #0\n" - "._782:\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r4\n" - " mov r6, sp\n" - " add r0, r6, r2\n" - " ldrb r0, [r0]\n" - " add r0, r0, r3\n" - " strh r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x11\n" - " bls ._782 @cond_branch\n" - " mov r1, sp\n" - " mov r0, #0x25\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " ldr r4, ._784 + 48\n" - " mov r0, #0x93\n" - " lsl r0, r0, #0x8\n" - " add r3, r0, #0\n" - "._783:\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r4\n" - " mov r6, sp\n" - " add r0, r6, r2\n" - " ldrb r0, [r0]\n" - " add r0, r0, r3\n" - " strh r0, [r1]\n" - " add r0, r2, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " cmp r2, #0x11\n" - " bls ._783 @cond_branch\n" - " add r0, r5, #0\n" - " mov r1, #0xf\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " ldr r1, ._784 + 52\n" - " ldr r2, ._784 + 56\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r5, ._784 + 60\n" - " add r0, r5, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._784 + 64\n" - " mov r6, r8\n" - " add r0, r6, r7\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._784 + 68\n" - " str r1, [r0]\n" - " add sp, sp, #0x14\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._785:\n" - " .align 2, 0\n" - "._784:\n" - " .word gUnknown_Debug_083F8815\n" - " .word gUnknown_Debug_083F87D0\n" - " .word gUnknown_Debug_083F87D8\n" - " .word gUnknown_Debug_083F87E0\n" - " .word 0x600fa56\n" - " .word 0xa311\n" - " .word gUnknown_Debug_083F87F4\n" - " .word 0x600f256\n" - " .word 0x8301\n" - " .word 0x600f396\n" - " .word gUnknown_Debug_083F8801\n" - " .word 0x600f3d6\n" - " .word 0x600f416\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x699f\n" - " .word gTasks\n" - " .word debug_80C7934+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7934() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xfffffff8\n" - " mov r8, r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " ldr r5, ._786\n" - " ldr r6, [r5]\n" - " ldrh r2, [r6]\n" - " lsl r0, r2, #0x3\n" - " ldr r1, ._786 + 4\n" - " add r0, r0, r1\n" - " ldr r1, ._786 + 8\n" - " lsl r2, r2, #0x2\n" - " add r2, r2, r1\n" - " ldrb r1, [r2]\n" - " ldrb r2, [r2, #0x1]\n" - " ldr r4, ._786 + 12\n" - " ldr r3, [r4]\n" - " ldr r4, [r4, #0x4]\n" - " str r4, [sp]\n" - " ldrh r4, [r6]\n" - " str r4, [sp, #0x4]\n" - " bl DecompressPicFromTable_2\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._786 + 16\n" - " add r0, r0, r1\n" - " bl LoadCompressedObjectPalette\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x1\n" - " bl GetMonSpriteTemplate_803C5A0\n" - " ldr r0, ._786 + 20\n" - " mov r1, #0x28\n" - " mov r2, #0x28\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " ldr r1, [r5]\n" - " mov r6, #0x0\n" - " strb r0, [r1, #0x2]\n" - " ldr r4, ._786 + 24\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r1, r4, #0\n" - " add r1, r1, #0x1c\n" - " add r0, r0, r1\n" - " ldr r1, ._786 + 28\n" - " str r1, [r0]\n" - " ldrb r0, [r2, #0x2]\n" - " lsl r1, r0, #0x4\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r4\n" - " ldrb r2, [r1, #0x5]\n" - " mov r0, #0xd\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " strb r0, [r1, #0x5]\n" - " ldr r0, [r5]\n" - " ldrh r0, [r0]\n" - " mov r1, #0x1a\n" - " mov r2, #0x5\n" - " bl debug_80C376C\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r4\n" - " ldrb r0, [r0, #0x5]\n" - " lsr r0, r0, #0x4\n" - " strb r0, [r2, #0x6]\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " ldr r4, ._786 + 32\n" - " add r0, r0, r4\n" - " ldr r2, ._786 + 36\n" - " add r1, r4, r2\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r4\n" - " ldr r1, ._786 + 40\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r1, ._786 + 44\n" - " mov r2, r8\n" - " lsl r0, r2, #0x2\n" - " add r0, r0, r8\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._786 + 48\n" - " str r1, [r0]\n" - " ldr r0, [r5]\n" - " strb r6, [r0, #0x9]\n" - " add sp, sp, #0x8\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._787:\n" - " .align 2, 0\n" - "._786:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gTrainerFrontPicTable\n" - " .word gTrainerFrontPicCoords\n" - " .word gUnknown_081FAF4C\n" - " .word gTrainerFrontPicPaletteTable\n" - " .word gUnknown_02024E8C\n" - " .word gSprites\n" - " .word debug_69+1\n" - " .word gPlttBufferUnfaded+0x200\n" - " .word 0xffffff00\n" - " .word gPlttBufferFaded+0x100\n" - " .word gTasks\n" - " .word debug_80C7A54+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7A54() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r0, #0\n" - " lsl r6, r6, #0x18\n" - " lsr r6, r6, #0x18\n" - " ldr r4, ._788\n" - " ldr r5, ._788 + 4\n" - " ldr r1, [r5]\n" - " add r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, ._788 + 8\n" - " add r4, r4, r0\n" - " ldr r3, [r5]\n" - " ldrb r0, [r3, #0x7]\n" - " add r0, r0, #0x81\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r4\n" - " ldrh r4, [r0]\n" - " mov r1, #0x1f\n" - " and r1, r1, r4\n" - " ldrb r2, [r3, #0xc]\n" - " mov r0, #0x20\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r3, #0xc]\n" - " ldr r3, [r5]\n" - " mov r1, #0xf8\n" - " lsl r1, r1, #0x2\n" - " and r1, r1, r4\n" - " ldrh r2, [r3, #0xc]\n" - " ldr r0, ._788 + 12\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strh r0, [r3, #0xc]\n" - " mov r1, #0xf8\n" - " lsl r1, r1, #0x7\n" - " and r1, r1, r4\n" - " lsr r1, r1, #0x8\n" - " ldrb r2, [r3, #0xd]\n" - " mov r0, #0x7d\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r3, #0xd]\n" - " ldr r2, [r5]\n" - " ldrb r1, [r2, #0xd]\n" - " mov r0, #0x7f\n" - " and r0, r0, r1\n" - " strb r0, [r2, #0xd]\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x7]\n" - " add r0, r0, #0x1\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " mov r3, #0x2\n" - " bl debug_80C68CC\n" - " ldr r0, ._788 + 16\n" - " mov r1, #0xd\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " mov r1, #0xe\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " ldr r1, ._788 + 20\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._788 + 24\n" - " str r1, [r0]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._789:\n" - " .align 2, 0\n" - "._788:\n" - " .word gPlttBufferUnfaded+0x100\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0xffffff00\n" - " .word 0xfffffc1f\n" - " .word gUnknown_Debug_083F8813\n" - " .word gTasks\n" - " .word debug_80C7B14+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7B14() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r1, ._792\n" - " ldrh r3, [r1, #0x2e]\n" - " mov r0, #0x2\n" - " and r0, r0, r3\n" - " add r4, r1, #0\n" - " cmp r0, #0\n" - " beq ._790 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._792 + 4\n" - " bl SetMainCallback2\n" - " ldr r1, ._792 + 8\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._792 + 12\n" - " str r1, [r0]\n" - " b ._821\n" - "._793:\n" - " .align 2, 0\n" - "._792:\n" - " .word gMain\n" - " .word debug_80C370C+1\n" - " .word gTasks\n" - " .word debug_80C373C+1\n" - "._790:\n" - " ldrh r1, [r4, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._794 @cond_branch\n" - " ldr r4, ._796\n" - " ldr r0, [r4]\n" - " ldrh r1, [r0]\n" - " mov r0, #0x0\n" - " b ._795\n" - "._797:\n" - " .align 2, 0\n" - "._796:\n" - " .word gUnknown_Debug_2038A20\n" - "._794:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._798 @cond_branch\n" - " ldr r4, ._800\n" - " ldr r0, [r4]\n" - " ldrh r1, [r0]\n" - " mov r0, #0x1\n" - "._795:\n" - " bl debug_80C38B4\n" - " ldr r1, [r4]\n" - " strh r0, [r1]\n" - " ldr r1, ._800 + 4\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._800 + 8\n" - " str r1, [r0]\n" - " b ._821\n" - "._801:\n" - " .align 2, 0\n" - "._800:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gTasks\n" - " .word debug_80C7D44+1\n" - "._798:\n" - " mov r2, #0x1\n" - " and r2, r2, r3\n" - " cmp r2, #0\n" - " beq ._802 @cond_branch\n" - " ldr r0, ._804\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " strb r0, [r1, #0x5]\n" - " ldr r1, ._804 + 4\n" - " ldr r2, ._804 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._804 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r1, ._804 + 16\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._804 + 20\n" - " str r1, [r0]\n" - " b ._821\n" - "._805:\n" - " .align 2, 0\n" - "._804:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x4167\n" - " .word gTasks\n" - " .word debug_80C7DDC+1\n" - "._802:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " ldr r3, ._809\n" - " cmp r0, #0\n" - " beq ._807 @cond_branch\n" - " ldr r1, [r3]\n" - " ldrb r0, [r1, #0x7]\n" - " cmp r0, #0xd\n" - " bhi ._807 @cond_branch\n" - " lsl r0, r0, #0x1\n" - " ldr r1, ._809 + 4\n" - " add r0, r0, r1\n" - " strh r2, [r0]\n" - " ldr r1, [r3]\n" - " ldrb r0, [r1, #0x7]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1, #0x7]\n" - " b ._813\n" - "._810:\n" - " .align 2, 0\n" - "._809:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x5000102\n" - "._807:\n" - " ldrh r1, [r4, #0x30]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._812 @cond_branch\n" - " ldr r1, [r3]\n" - " ldrb r0, [r1, #0x7]\n" - " cmp r0, #0\n" - " beq ._812 @cond_branch\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._814\n" - " add r0, r0, r2\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " ldr r1, [r3]\n" - " ldrb r0, [r1, #0x7]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0x7]\n" - " b ._813\n" - "._815:\n" - " .align 2, 0\n" - "._814:\n" - " .word 0x5000102\n" - "._812:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._816 @cond_branch\n" - " ldr r4, ._819\n" - " ldr r2, [r4]\n" - " ldrb r0, [r2, #0x9]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2, #0x9]\n" - " ldr r1, [r4]\n" - " ldrb r0, [r1, #0x9]\n" - " cmp r0, #0\n" - " beq ._817 @cond_branch\n" - " ldrh r0, [r1]\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " bl GetMonSpritePalFromOtIdPersonality\n" - " ldr r1, [r4]\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x14\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x11\n" - " add r1, r1, r2\n" - " lsr r1, r1, #0x10\n" - " mov r2, #0x20\n" - " bl LoadCompressedPalette\n" - " b ._818\n" - "._820:\n" - " .align 2, 0\n" - "._819:\n" - " .word gUnknown_Debug_2038A20\n" - "._817:\n" - " ldrh r0, [r1]\n" - " mov r1, #0x0\n" - " mov r2, #0x9\n" - " bl GetMonSpritePalFromOtIdPersonality\n" - " ldr r1, [r4]\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x14\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x11\n" - " add r1, r1, r2\n" - " lsr r1, r1, #0x10\n" - " mov r2, #0x20\n" - " bl LoadCompressedPalette\n" - "._818:\n" - " ldr r5, ._822\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " ldr r4, ._822 + 4\n" - " add r0, r0, r4\n" - " ldr r2, ._822 + 8\n" - " add r1, r4, r2\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, [r5]\n" - " ldrb r0, [r0, #0x6]\n" - " lsl r0, r0, #0x5\n" - " add r0, r0, r4\n" - " ldr r1, ._822 + 12\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - "._813:\n" - " ldr r1, ._822 + 16\n" - " lsl r0, r6, #0x2\n" - " add r0, r0, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._822 + 20\n" - " str r1, [r0]\n" - " b ._821\n" - "._823:\n" - " .align 2, 0\n" - "._822:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gPlttBufferUnfaded+0x200\n" - " .word 0xffffff00\n" - " .word gPlttBufferFaded+0x100\n" - " .word gTasks\n" - " .word debug_80C7A54+1\n" - "._816:\n" - " ldr r1, [r3]\n" - " ldrb r0, [r1, #0x8]\n" - " add r0, r0, #0x4\n" - " strb r0, [r1, #0x8]\n" - " ldr r2, [r3]\n" - " ldrb r1, [r2, #0x8]\n" - " mov r0, #0x1f\n" - " and r0, r0, r1\n" - " strb r0, [r2, #0x8]\n" - " ldr r0, [r3]\n" - " ldrb r1, [r0, #0x7]\n" - " lsl r1, r1, #0x1\n" - " ldr r2, ._824\n" - " add r1, r1, r2\n" - " ldr r2, ._824 + 4\n" - " ldrb r0, [r0, #0x8]\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r2\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - "._821:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._825:\n" - " .align 2, 0\n" - "._824:\n" - " .word 0x5000142\n" - " .word gUnknown_Debug_083F8790\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7D44() -{ - asm( - " push {r4, r5, r6, lr}\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r6, ._826\n" - " ldr r4, ._826 + 4\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldrb r0, [r0, #0x5]\n" - " lsr r0, r0, #0x4\n" - " bl GetSpritePaletteTagByPaletteNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl FreeSpritePaletteByTag\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x2]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " bl DestroySprite\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x3]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldrb r0, [r0, #0x5]\n" - " lsr r0, r0, #0x4\n" - " bl GetSpritePaletteTagByPaletteNum\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl FreeSpritePaletteByTag\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x3]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " bl DestroySprite\n" - " ldr r0, [r4]\n" - " ldrb r1, [r0, #0x4]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " bl sub_809D510\n" - " ldr r1, ._826 + 8\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._826 + 12\n" - " str r1, [r0]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._827:\n" - " .align 2, 0\n" - "._826:\n" - " .word gSprites\n" - " .word gUnknown_Debug_2038A20\n" - " .word gTasks\n" - " .word debug_80C7934+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C7DDC() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " ldr r0, ._830\n" - " ldrh r2, [r0, #0x2e]\n" - " mov r1, #0x1\n" - " and r1, r1, r2\n" - " add r3, r0, #0\n" - " cmp r1, #0\n" - " beq ._828 @cond_branch\n" - " ldr r0, ._830 + 4\n" - " ldr r1, [r0]\n" - " mov r0, #0x0\n" - " strb r0, [r1, #0x5]\n" - " ldr r1, ._830 + 8\n" - " ldr r2, ._830 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._830 + 16\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " b ._829\n" - "._831:\n" - " .align 2, 0\n" - "._830:\n" - " .word gMain\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x699f\n" - "._828:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._832 @cond_branch\n" - " ldr r6, ._834\n" - " ldr r0, [r6]\n" - " strb r1, [r0, #0x5]\n" - " ldr r1, ._834 + 4\n" - " ldr r2, ._834 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x4\n" - " ldr r2, ._834 + 12\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, [r6]\n" - " add r0, r0, #0x10\n" - " ldr r4, ._834 + 16\n" - " add r1, r4, #0\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r0, [r6]\n" - " add r0, r0, #0x10\n" - " ldr r5, ._834 + 20\n" - " add r1, r5, #0\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r1, [r6]\n" - " add r0, r1, #0\n" - " add r0, r0, #0x10\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x5\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r4, r4, r2\n" - " add r1, r1, r4\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - " ldr r1, [r6]\n" - " add r0, r1, #0\n" - " add r0, r0, #0x10\n" - " ldrb r1, [r1, #0x6]\n" - " lsl r1, r1, #0x5\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r5, r5, r2\n" - " add r1, r1, r5\n" - " mov r2, #0x10\n" - " bl CpuSet\n" - "._829:\n" - " ldr r1, ._834 + 24\n" - " lsl r0, r7, #0x2\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._834 + 28\n" - " str r1, [r0]\n" - " b ._871\n" - "._835:\n" - " .align 2, 0\n" - "._834:\n" - " .word gUnknown_Debug_2038A20\n" - " .word 0x4000040\n" - " .word 0x51ef\n" - " .word 0x699f\n" - " .word gPlttBufferUnfaded+0x100\n" - " .word gPlttBufferFaded+0x100\n" - " .word gTasks\n" - " .word debug_80C7A54+1\n" - "._832:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._837 @cond_branch\n" - " ldr r0, ._839\n" - " ldr r1, [r0]\n" - " ldrb r0, [r1, #0xa]\n" - " cmp r0, #0x1\n" - " bhi ._837 @cond_branch\n" - " add r0, r0, #0x1\n" - " strb r0, [r1, #0xa]\n" - " b ._871\n" - "._840:\n" - " .align 2, 0\n" - "._839:\n" - " .word gUnknown_Debug_2038A20\n" - "._837:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._842 @cond_branch\n" - " ldr r0, ._844\n" - " ldr r1, [r0]\n" - " ldrb r0, [r1, #0xa]\n" - " cmp r0, #0\n" - " beq ._842 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1, #0xa]\n" - " b ._871\n" - "._845:\n" - " .align 2, 0\n" - "._844:\n" - " .word gUnknown_Debug_2038A20\n" - "._842:\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._846 @cond_branch\n" - " ldr r0, ._851\n" - " ldr r2, [r0]\n" - " ldrb r0, [r2, #0xa]\n" - " cmp r0, #0x1\n" - " beq ._847 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._848 @cond_branch\n" - " cmp r0, #0\n" - " beq ._849 @cond_branch\n" - " b ._871\n" - "._852:\n" - " .align 2, 0\n" - "._851:\n" - " .word gUnknown_Debug_2038A20\n" - "._848:\n" - " cmp r0, #0x2\n" - " beq ._853 @cond_branch\n" - " b ._871\n" - "._849:\n" - " ldrb r3, [r2, #0xc]\n" - " lsl r1, r3, #0x1b\n" - " lsr r0, r1, #0x1b\n" - " cmp r0, #0x1e\n" - " bhi ._878 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " mov r1, #0x20\n" - " neg r1, r1\n" - " and r1, r1, r3\n" - " orr r1, r1, r0\n" - " strb r1, [r2, #0xc]\n" - " b ._878\n" - "._847:\n" - " ldrh r3, [r2, #0xc]\n" - " lsl r1, r3, #0x16\n" - " lsr r0, r1, #0x1b\n" - " cmp r0, #0x1e\n" - " bhi ._878 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " ldr r1, ._859\n" - " and r1, r1, r3\n" - " orr r1, r1, r0\n" - " strh r1, [r2, #0xc]\n" - " b ._878\n" - "._860:\n" - " .align 2, 0\n" - "._859:\n" - " .word 0xfffffc1f\n" - "._853:\n" - " ldrb r3, [r2, #0xd]\n" - " lsl r1, r3, #0x19\n" - " lsr r0, r1, #0x1b\n" - " cmp r0, #0x1e\n" - " bhi ._878 @cond_branch\n" - " add r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, #0x7d\n" - " neg r1, r1\n" - " and r1, r1, r3\n" - " orr r1, r1, r0\n" - " strb r1, [r2, #0xd]\n" - " b ._878\n" - "._846:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._871 @cond_branch\n" - " ldr r0, ._868\n" - " ldr r3, [r0]\n" - " ldrb r0, [r3, #0xa]\n" - " cmp r0, #0x1\n" - " beq ._864 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._865 @cond_branch\n" - " cmp r0, #0\n" - " beq ._866 @cond_branch\n" - " b ._871\n" - "._869:\n" - " .align 2, 0\n" - "._868:\n" - " .word gUnknown_Debug_2038A20\n" - "._865:\n" - " cmp r0, #0x2\n" - " beq ._870 @cond_branch\n" - " b ._871\n" - "._866:\n" - " ldrb r2, [r3, #0xc]\n" - " mov r0, #0x1f\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._878 @cond_branch\n" - " lsl r0, r2, #0x1b\n" - " lsr r0, r0, #0x1b\n" - " sub r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " mov r1, #0x20\n" - " neg r1, r1\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strb r1, [r3, #0xc]\n" - " b ._878\n" - "._864:\n" - " ldrh r2, [r3, #0xc]\n" - " mov r0, #0xf8\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._878 @cond_branch\n" - " lsl r0, r2, #0x16\n" - " lsr r0, r0, #0x1b\n" - " sub r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x5\n" - " ldr r1, ._876\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strh r1, [r3, #0xc]\n" - " b ._878\n" - "._877:\n" - " .align 2, 0\n" - "._876:\n" - " .word 0xfffffc1f\n" - "._870:\n" - " ldrb r2, [r3, #0xd]\n" - " mov r0, #0x7c\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._878 @cond_branch\n" - " lsl r0, r2, #0x19\n" - " lsr r0, r0, #0x1b\n" - " sub r0, r0, #0x1\n" - " mov r1, #0x1f\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, #0x7d\n" - " neg r1, r1\n" - " and r1, r1, r2\n" - " orr r1, r1, r0\n" - " strb r1, [r3, #0xd]\n" - "._878:\n" - " ldr r0, ._879\n" - " lsl r1, r7, #0x2\n" - " add r1, r1, r7\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldr r0, ._879 + 4\n" - " str r0, [r1]\n" - "._871:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._880:\n" - " .align 2, 0\n" - "._879:\n" - " .word gTasks\n" - " .word debug_80C802C+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_80C802C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._881\n" - " ldr r3, [r0]\n" - " ldrb r0, [r3, #0xc]\n" - " lsl r0, r0, #0x1b\n" - " lsr r0, r0, #0x1b\n" - " ldrh r2, [r3, #0xc]\n" - " mov r1, #0xf8\n" - " lsl r1, r1, #0x2\n" - " and r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrb r1, [r3, #0xd]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x1b\n" - " lsl r1, r1, #0xa\n" - " add r0, r0, r1\n" - " ldr r6, ._881 + 4\n" - " ldrb r1, [r3, #0x7]\n" - " add r1, r1, #0x81\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r6\n" - " strh r0, [r1]\n" - " ldr r1, ._881 + 8\n" - " mov r8, r1\n" - " ldrb r1, [r3, #0x7]\n" - " add r1, r1, #0x81\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r8\n" - " strh r0, [r1]\n" - " ldrb r1, [r3, #0x6]\n" - " lsl r1, r1, #0x4\n" - " ldrb r2, [r3, #0x7]\n" - " ldr r4, ._881 + 12\n" - " add r2, r2, r4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r6\n" - " strh r0, [r1]\n" - " ldrb r1, [r3, #0x6]\n" - " lsl r1, r1, #0x4\n" - " ldrb r2, [r3, #0x7]\n" - " add r2, r2, r4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x1\n" - " add r1, r1, r8\n" - " strh r0, [r1]\n" - " mov r1, #0xe\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl debug_80C68CC\n" - " ldr r1, ._881 + 16\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._881 + 20\n" - " str r1, [r0]\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._882:\n" - " .align 2, 0\n" - "._881:\n" - " .word gUnknown_Debug_2038A20\n" - " .word gPlttBufferUnfaded\n" - " .word gPlttBufferFaded\n" - " .word 0x101\n" - " .word gTasks\n" - " .word debug_80C7DDC+1\n" - "\n" - ); -} - #endif -- cgit v1.2.3 From d972f2af82d805b53bb4b93759fb3ba445b1ce78 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 23 Jan 2018 23:19:36 -0600 Subject: remove Japanese characters from menu order data --- src/debug/start_menu_debug.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 5d9b150e7..2bc536d6c 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -258,15 +258,15 @@ const struct MenuAction gUnknown_Debug_839BC94[] = // debug_sub_8076BB4 will access the array differently and no longer match. //extern const struct MenuAction gUnknown_Debug_839BC94[]; -const u8 Str_839BD14[][10] = +const u8 gMenuOrders_839BD14[][10] = { - _("うかえ"), - _("おけこしすせそ"), + { 3, 6, 4, 0xFF }, + { 5, 9, 10, 12, 13, 14, 15, 0xFF }, }; const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced -const u8 Str_839BD2C[] = _("RTCを リセット します\n" +const u8 Str_839BD2C[] = _("RTCを リセット します\n" // Reset RTC "Aで じっこう   Bでキャンセル"); const u8 Str_839BD4C[] = _("RTCを リセット した!"); @@ -291,8 +291,8 @@ void debug_sub_8076AC8(u8 a) { s32 r4; - gUnknown_030006C4 = Str_839BD14[a]; - for (r4 = 0; gUnknown_030006C4[r4] != EOS; r4++) + gUnknown_030006C4 = gMenuOrders_839BD14[a]; + for (r4 = 0; gUnknown_030006C4[r4] != 0xFF; r4++) ; Menu_EraseWindowRect(16, 0, 29, 19); Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1); -- cgit v1.2.3 From dbcf1ce9cb124e303e6bed3fecede7a72b8000f2 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 24 Jan 2018 00:58:38 -0600 Subject: integrate some debug differences --- src/battle/battle_2.c | 2179 ++++------------------------------------------- src/engine/cable_club.c | 42 +- src/engine/link.c | 2 +- 3 files changed, 193 insertions(+), 2030 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 6808ad61c..64b64ecea 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -14,6 +14,7 @@ #include "main.h" #include "m4a.h" #include "name_string_util.h" +#include "overworld.h" #include "palette.h" #include "party_menu.h" #include "pokeball.h" @@ -64,6 +65,9 @@ struct UnknownStruct12 u8 filler4[0x54]; }; +void debug_sub_80139E4(void); +extern u8 gUnknown_02023A14_50; + extern const u16 gUnknown_08D004E0[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; @@ -203,231 +207,6 @@ void sub_800E7C4(void) } } -#if DEBUG -__attribute__((naked)) -void InitBattle(void) -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x0\n" - " bl SetHBlankCallback\n" - " mov r0, #0x0\n" - " bl SetVBlankCallback\n" - " mov r4, #0x0\n" - " str r4, [sp]\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x13\n" - " ldr r2, ._10\n" - " mov r0, sp\n" - " bl CpuSet\n" - " ldr r0, ._10 + 4\n" - " strh r4, [r0]\n" - " sub r0, r0, #0xc\n" - " mov r2, #0xf0\n" - " strh r2, [r0]\n" - " add r0, r0, #0x4\n" - " ldr r3, ._10 + 8\n" - " add r1, r3, #0\n" - " strh r1, [r0]\n" - " add r0, r0, #0x4\n" - " strh r4, [r0]\n" - " add r0, r0, #0x2\n" - " strh r4, [r0]\n" - " ldr r0, ._10 + 12\n" - " strh r2, [r0]\n" - " ldr r0, ._10 + 16\n" - " strh r1, [r0]\n" - " bl ScanlineEffect_Clear\n" - " ldr r0, ._10 + 20\n" - " mov r3, #0xf0\n" - " mov r5, #0xf0\n" - " lsl r5, r5, #0x3\n" - " add r2, r0, r5\n" - " mov r1, #0x4f\n" - "._5:\n" - " strh r3, [r0]\n" - " strh r3, [r2]\n" - " add r2, r2, #0x2\n" - " add r0, r0, #0x2\n" - " sub r1, r1, #0x1\n" - " cmp r1, #0\n" - " bge ._5 @cond_branch\n" - " mov r1, #0x50\n" - " ldr r4, ._10 + 24\n" - " ldr r0, ._10 + 20\n" - " ldr r3, ._10 + 28\n" - " mov r5, #0x82\n" - " lsl r5, r5, #0x4\n" - " add r2, r0, r5\n" - " add r0, r0, #0xa0\n" - "._6:\n" - " strh r3, [r0]\n" - " strh r3, [r2]\n" - " add r2, r2, #0x2\n" - " add r0, r0, #0x2\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x9f\n" - " ble ._6 @cond_branch\n" - " ldr r0, [r4]\n" - " ldr r1, [r4, #0x4]\n" - " ldr r2, [r4, #0x8]\n" - " bl ScanlineEffect_SetParams\n" - " ldr r4, ._10 + 32\n" - " add r0, r4, #0\n" - " bl Text_LoadWindowTemplate\n" - " bl ResetPaletteFade\n" - " ldr r0, ._10 + 36\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 40\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 44\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 48\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 52\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 56\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 60\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 64\n" - " strh r1, [r0]\n" - " ldr r0, ._10 + 68\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._7 @cond_branch\n" - " bl BattleSetup_GetTerrain\n" - " ldr r1, ._10 + 72\n" - " strb r0, [r1]\n" - "._7:\n" - " ldr r0, ._10 + 76\n" - " add r1, r4, #0\n" - " bl Text_InitWindowWithTemplate\n" - " ldr r0, ._10 + 80\n" - " ldr r1, ._10 + 84\n" - " bl Text_InitWindowWithTemplate\n" - " ldr r0, ._10 + 88\n" - " ldr r1, ._10 + 92\n" - " bl Text_InitWindowWithTemplate\n" - " bl sub_800D6D4\n" - " bl sub_800DAB8\n" - " bl ResetSpriteData\n" - " bl ResetTasks\n" - " bl sub_800E23C\n" - " bl FreeAllSpritePalettes\n" - " ldr r1, ._10 + 96\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r0, ._10 + 100\n" - " bl SetVBlankCallback\n" - " bl setup_poochyena_battle\n" - " ldr r0, ._10 + 104\n" - " ldrh r1, [r0]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._8 @cond_branch\n" - " ldr r0, ._10 + 108\n" - " bl SetMainCallback2\n" - " b ._9\n" - "._11:\n" - " .align 2, 0\n" - "._10:\n" - " .word 0x5006000\n" - " .word 0x400004c\n" - " .word 0x5051\n" - " .word gBattle_WIN0H\n" - " .word gBattle_WIN0V\n" - " .word gScanlineEffectRegBuffers\n" - " .word gUnknown_081F9674\n" - " .word 0xff10\n" - " .word gWindowTemplate_81E6C58\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - " .word gUnknown_02023A14_50\n" - " .word gBattleTerrain\n" - " .word gUnknown_03004210\n" - " .word gUnknown_030041D0\n" - " .word gWindowTemplate_81E71D0\n" - " .word gUnknown_03004250\n" - " .word gWindowTemplate_81E71EC\n" - " .word gReservedSpritePaletteCount\n" - " .word sub_800FCFC+1\n" - " .word gBattleTypeFlags\n" - " .word sub_800F298+1\n" - "._8:\n" - " ldr r0, ._15\n" - " bl SetMainCallback2\n" - "._9:\n" - " ldr r0, ._15 + 4\n" - " ldrh r1, [r0]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._13 @cond_branch\n" - " ldr r0, ._15 + 8\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._13 @cond_branch\n" - " ldr r0, ._15 + 12\n" - " ldr r1, ._15 + 16\n" - " ldrh r1, [r1]\n" - " bl CreateNPCTrainerParty\n" - " bl SetWildMonHeldItem\n" - "._13:\n" - " ldr r0, ._15 + 20\n" - " ldr r1, ._15 + 24\n" - " add r0, r0, r1\n" - " ldrb r1, [r0]\n" - " mov r2, #0x2\n" - " orr r1, r1, r2\n" - " strb r1, [r0]\n" - " ldr r4, ._15 + 28\n" - " mov r3, #0xfa\n" - " lsl r3, r3, #0x1\n" - " add r5, r4, r3\n" - "._14:\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl AdjustFriendship\n" - " add r4, r4, #0x64\n" - " cmp r4, r5\n" - " ble ._14 @cond_branch\n" - " mov r1, #0x0\n" - " ldr r0, ._15 + 32\n" - " strb r1, [r0]\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._16:\n" - " .align 2, 0\n" - "._15:\n" - " .word sub_800EC9C+1\n" - " .word gBattleTypeFlags\n" - " .word gUnknown_02023A14_50\n" - " .word gEnemyParty\n" - " .word gTrainerBattleOpponent\n" - " .word gMain\n" - " .word 0x43d\n" - " .word gPlayerParty\n" - " .word gBattleCommunication\n" - "\n" - ); -} -#else void InitBattle(void) { s32 i; @@ -469,7 +248,14 @@ void InitBattle(void) gBattle_BG2_Y = 0; gBattle_BG3_X = 0; gBattle_BG3_Y = 0; + +#if DEBUG + if (!(gUnknown_02023A14_50 & 8)) + gBattleTerrain = BattleSetup_GetTerrain(); +#else gBattleTerrain = BattleSetup_GetTerrain(); +#endif + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0); Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC); @@ -486,7 +272,11 @@ void InitBattle(void) SetMainCallback2(sub_800F298); else SetMainCallback2(sub_800EC9C); - if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) +#if DEBUG + && !(gUnknown_02023A14_50 & 8) +#endif + ) { CreateNPCTrainerParty(gEnemyParty, gTrainerBattleOpponent); SetWildMonHeldItem(); @@ -496,7 +286,6 @@ void InitBattle(void) AdjustFriendship(&gPlayerParty[i], 3); gBattleCommunication[0] = 0; } -#endif void sub_800E9EC(void) { @@ -605,480 +394,11 @@ void shedinja_something(struct Pokemon *pkmn) } } -#if DEBUG -__attribute__((naked)) -void sub_800EC9C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " bl RunTasks\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " bl GetMultiplayerId\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._55\n" - " ldr r1, ._55 + 4\n" - " add r0, r0, r1\n" - " strb r4, [r0]\n" - " mov r0, #0x1\n" - " add r5, r4, #0\n" - " eor r5, r5, r0\n" - " ldr r0, ._55 + 8\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x9\n" - " bls ._53 @cond_branch\n" - " b ._140\n" - "._53:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._55 + 12\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._56:\n" - " .align 2, 0\n" - "._55:\n" - " .word gSharedMem\n" - " .word 0x160cb\n" - " .word gBattleCommunication\n" - " .word ._57\n" - "._57:\n" - " .word ._58\n" - " .word ._59\n" - " .word ._60\n" - " .word ._61\n" - " .word ._62\n" - " .word ._63\n" - " .word ._64\n" - " .word ._65\n" - " .word ._66\n" - " .word ._67\n" - "._58:\n" - " ldr r2, ._76\n" - " ldrh r1, [r2]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._68 @cond_branch\n" - " ldr r0, ._76 + 4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._69 @cond_branch\n" - " b ._140\n" - "._69:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._71 @cond_branch\n" - " b ._140\n" - "._71:\n" - " ldr r1, ._76 + 8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " strb r0, [r1, #0x1]\n" - " bl sub_800E9EC\n" - " bl sub_800EAAC\n" - " ldr r0, ._76 + 12\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._73 @cond_branch\n" - " mov r3, #0x0\n" - " ldr r1, ._76 + 16\n" - " ldr r0, ._76 + 20\n" - "._74:\n" - " strh r3, [r0, #0x18]\n" - " str r1, [r0, #0x14]\n" - " add r0, r0, #0x1c\n" - " add r3, r3, #0x1\n" - " cmp r3, #0x1\n" - " ble ._74 @cond_branch\n" - "._73:\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._76 + 8\n" - " mov r2, #0x20\n" - " bl SendBlock\n" - " ldr r1, ._76 + 24\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " b ._140\n" - "._77:\n" - " .align 2, 0\n" - "._76:\n" - " .word gBattleTypeFlags\n" - " .word gReceivedRemoteLinkPlayers\n" - " .word gSharedMem\n" - " .word gUnknown_02023A14_50\n" - " .word 0x2211\n" - " .word gLinkPlayers\n" - " .word gBattleCommunication\n" - "._68:\n" - " mov r0, #0x4\n" - " orr r0, r0, r1\n" - " strh r0, [r2]\n" - " ldr r1, ._79\n" - " mov r0, #0x8\n" - " strb r0, [r1]\n" - " bl sub_800EB08\n" - " b ._140\n" - "._80:\n" - " .align 2, 0\n" - "._79:\n" - " .word gBattleCommunication\n" - "._59:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0x3\n" - " and r1, r1, r0\n" - " cmp r1, #0x3\n" - " beq ._81 @cond_branch\n" - " b ._140\n" - "._81:\n" - " bl ResetBlockReceivedFlags\n" - " mov r3, #0x0\n" - " ldr r0, ._86\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._83 @cond_branch\n" - " cmp r4, #0\n" - " bne ._84 @cond_branch\n" - " ldr r0, ._86 + 4\n" - " ldrh r1, [r0]\n" - " mov r2, #0xc\n" - " b ._85\n" - "._87:\n" - " .align 2, 0\n" - "._86:\n" - " .word gBlockRecvBuffer\n" - " .word gBattleTypeFlags\n" - "._84:\n" - " ldr r0, ._92\n" - " ldrh r1, [r0]\n" - " mov r2, #0x8\n" - "._85:\n" - " orr r1, r1, r2\n" - " strh r1, [r0]\n" - " add r3, r3, #0x1\n" - "._83:\n" - " lsl r7, r5, #0x8\n" - " cmp r3, #0\n" - " bne ._94 @cond_branch\n" - " ldr r0, ._92 + 4\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x1\n" - " add r2, r0, r1\n" - " ldrh r1, [r0]\n" - " add r6, r0, #0\n" - " ldrh r2, [r2]\n" - " cmp r1, r2\n" - " bne ._89 @cond_branch\n" - " cmp r4, #0\n" - " bne ._90 @cond_branch\n" - " ldr r0, ._92\n" - " ldrh r1, [r0]\n" - " mov r2, #0xc\n" - " b ._91\n" - "._93:\n" - " .align 2, 0\n" - "._92:\n" - " .word gBattleTypeFlags\n" - " .word gBlockRecvBuffer\n" - "._90:\n" - " ldr r0, ._96\n" - " ldrh r1, [r0]\n" - " mov r2, #0x8\n" - "._91:\n" - " orr r1, r1, r2\n" - " strh r1, [r0]\n" - " add r3, r3, #0x1\n" - "._89:\n" - " lsl r7, r5, #0x8\n" - " cmp r3, #0\n" - " bne ._94 @cond_branch\n" - " ldrh r1, [r6]\n" - " ldr r0, ._96 + 4\n" - " ldr r2, ._96\n" - " b ._95\n" - "._97:\n" - " .align 2, 0\n" - "._96:\n" - " .word gBattleTypeFlags\n" - " .word 0x101\n" - "._100:\n" - " add r3, r3, #0x1\n" - " cmp r3, #0x1\n" - " bgt ._98 @cond_branch\n" - " lsl r0, r3, #0x8\n" - " add r0, r0, r6\n" - " ldrh r1, [r0]\n" - " ldr r0, ._103\n" - "._95:\n" - " cmp r1, r0\n" - " bls ._100 @cond_branch\n" - " cmp r3, r4\n" - " beq ._100 @cond_branch\n" - "._98:\n" - " cmp r3, #0x2\n" - " bne ._101 @cond_branch\n" - " ldrh r0, [r2]\n" - " mov r1, #0xc\n" - " b ._102\n" - "._104:\n" - " .align 2, 0\n" - "._103:\n" - " .word 0x101\n" - "._101:\n" - " ldrh r0, [r2]\n" - " mov r1, #0x8\n" - "._102:\n" - " orr r0, r0, r1\n" - " strh r0, [r2]\n" - "._94:\n" - " bl sub_800EB08\n" - " ldr r0, ._106\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._106 + 4\n" - " lsl r2, r0, #0x2\n" - " add r2, r2, r0\n" - " lsl r2, r2, #0x3\n" - " add r2, r2, r1\n" - " mov r1, #0x0\n" - " mov r0, #0x87\n" - " lsl r0, r0, #0x1\n" - " strh r0, [r2, #0xa]\n" - " mov r0, #0x5a\n" - " strh r0, [r2, #0xc]\n" - " strh r1, [r2, #0x12]\n" - " ldr r0, ._106 + 8\n" - " ldrb r1, [r0, #0x2]\n" - " ldrb r0, [r0, #0x3]\n" - " lsl r0, r0, #0x8\n" - " orr r1, r1, r0\n" - " strh r1, [r2, #0xe]\n" - " ldr r0, ._106 + 12\n" - " add r0, r0, #0x2\n" - " add r0, r7, r0\n" - " ldrh r0, [r0]\n" - " strh r0, [r2, #0x10]\n" - " b ._129\n" - "._107:\n" - " .align 2, 0\n" - "._106:\n" - " .word sub_800DE30+1\n" - " .word gTasks\n" - " .word gSharedMem\n" - " .word gBlockRecvBuffer\n" - "._60:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._108 @cond_branch\n" - " b ._140\n" - "._108:\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._111\n" - " mov r2, #0xc8\n" - " bl SendBlock\n" - " b ._129\n" - "._112:\n" - " .align 2, 0\n" - "._111:\n" - " .word gPlayerParty\n" - "._61:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0x3\n" - " and r1, r1, r0\n" - " cmp r1, #0x3\n" - " beq ._113 @cond_branch\n" - " b ._140\n" - "._113:\n" - " bl ResetBlockReceivedFlags\n" - " ldr r0, ._116\n" - " lsl r1, r5, #0x8\n" - " ldr r2, ._116 + 4\n" - " add r1, r1, r2\n" - " mov r2, #0xc8\n" - " bl memcpy\n" - " b ._129\n" - "._117:\n" - " .align 2, 0\n" - "._116:\n" - " .word gEnemyParty\n" - " .word gBlockRecvBuffer\n" - "._62:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._118 @cond_branch\n" - " b ._140\n" - "._118:\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._121\n" - " mov r2, #0xc8\n" - " bl SendBlock\n" - " b ._129\n" - "._122:\n" - " .align 2, 0\n" - "._121:\n" - " .word gPlayerParty+0xc8\n" - "._63:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0x3\n" - " and r1, r1, r0\n" - " cmp r1, #0x3\n" - " beq ._123 @cond_branch\n" - " b ._140\n" - "._123:\n" - " bl ResetBlockReceivedFlags\n" - " ldr r0, ._126\n" - " lsl r1, r5, #0x8\n" - " ldr r2, ._126 + 4\n" - " add r1, r1, r2\n" - " mov r2, #0xc8\n" - " bl memcpy\n" - " b ._129\n" - "._127:\n" - " .align 2, 0\n" - "._126:\n" - " .word gEnemyParty+0xc8\n" - " .word gBlockRecvBuffer\n" - "._64:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._140 @cond_branch\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._130\n" - " mov r2, #0xc8\n" - " bl SendBlock\n" - " b ._129\n" - "._131:\n" - " .align 2, 0\n" - "._130:\n" - " .word gPlayerParty+0x190\n" - "._65:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0x3\n" - " and r1, r1, r0\n" - " cmp r1, #0x3\n" - " bne ._140 @cond_branch\n" - " bl ResetBlockReceivedFlags\n" - " ldr r4, ._134\n" - " lsl r1, r5, #0x8\n" - " ldr r0, ._134 + 4\n" - " add r1, r1, r0\n" - " add r0, r4, #0\n" - " mov r2, #0xc8\n" - " bl memcpy\n" - " ldr r1, ._134 + 8\n" - " add r0, r4, r1\n" - " bl shedinja_something\n" - " ldr r1, ._134 + 12\n" - " add r0, r4, r1\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " sub r0, r0, #0xc8\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " sub r0, r0, #0x64\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " add r0, r0, #0x64\n" - " bl shedinja_something\n" - "._129:\n" - " ldr r1, ._134 + 16\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._140\n" - "._135:\n" - " .align 2, 0\n" - "._134:\n" - " .word gEnemyParty+0x190\n" - " .word gBlockRecvBuffer\n" - " .word 0xfffffe70\n" - " .word 0xfffffed4\n" - " .word gBattleCommunication\n" - "._66:\n" - " bl sub_800B950\n" - " ldr r0, ._137\n" - " ldrb r1, [r0]\n" - " add r1, r1, #0x1\n" - " mov r2, #0x0\n" - " strb r1, [r0]\n" - " strb r2, [r0, #0x1]\n" - " strb r2, [r0, #0x2]\n" - " b ._140\n" - "._138:\n" - " .align 2, 0\n" - "._137:\n" - " .word gBattleCommunication\n" - "._67:\n" - " ldr r0, ._141\n" - " add r1, r0, #1\n" - " bl battle_load_something\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._140 @cond_branch\n" - " ldr r2, ._141 + 4\n" - " ldr r1, ._141 + 8\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " ldr r0, ._141 + 12\n" - " str r0, [r1]\n" - " ldr r0, ._141 + 16\n" - " bl SetMainCallback2\n" - " ldr r3, ._141 + 20\n" - " ldrh r2, [r3]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._140 @cond_branch\n" - " ldr r1, ._141 + 24\n" - " mov r4, #0x80\n" - " lsl r4, r4, #0x4\n" - " add r0, r4, #0\n" - " strh r0, [r1]\n" - " mov r0, #0x20\n" - " orr r0, r0, r2\n" - " strh r0, [r3]\n" - "._140:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word gUnknown_02024D1F\n" - " .word gPreBattleCallback1\n" - " .word gMain\n" - " .word debug_sub_80139E4+1\n" - " .word BattleMainCB2+1\n" - " .word gBattleTypeFlags\n" - " .word gTrainerBattleOpponent\n" - "\n" - ); -} -#else -void sub_800EC9C(void) +void sub_800EC9C(void) { u8 playerId; u8 enemyId; + s32 id; RunTasks(); AnimateSprites(); @@ -1098,6 +418,16 @@ void sub_800EC9C(void) gBattleStruct->unk1 = 1; sub_800E9EC(); sub_800EAAC(); +#if DEBUG + if (gUnknown_02023A14_50 & 8) + { + for (id = 0; id < 2; id++) // Why < 2 here? + { + gLinkPlayers[id].lp_field_18 = id; + gLinkPlayers[id].linkType = 0x2211; + } + } +#endif SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32); gBattleCommunication[0] = 1; } @@ -1112,7 +442,6 @@ void sub_800EC9C(void) case 1: if ((GetBlockReceivedStatus() & 3) == 3) { - s32 id; u8 taskId; ResetBlockReceivedFlags(); @@ -1220,7 +549,11 @@ void sub_800EC9C(void) if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { gPreBattleCallback1 = gMain.callback1; +#if DEBUG + gMain.callback1 = debug_sub_80139E4; +#else gMain.callback1 = sub_8010824; +#endif SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -1231,7 +564,6 @@ void sub_800EC9C(void) break; } } -#endif void sub_800F02C(void) { @@ -1258,241 +590,12 @@ void sub_800F02C(void) memcpy(gSharedMem, gUnknown_02023A00, 0x60); } -#if DEBUG -__attribute__((naked)) -void sub_800F104() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " bl GetMultiplayerId\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r0, ._151\n" - " ldr r2, ._151 + 4\n" - " add r1, r0, r2\n" - " strb r6, [r1]\n" - " ldr r1, ._151 + 8\n" - " add r1, r1, r0\n" - " mov r9, r1\n" - " sub r2, r2, #0x9\n" - " add r2, r2, r0\n" - " mov r8, r2\n" - " bl RunTasks\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " ldr r2, ._151 + 12\n" - " ldrb r0, [r2]\n" - " cmp r0, #0x1\n" - " beq ._147 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._148 @cond_branch\n" - " cmp r0, #0\n" - " beq ._149 @cond_branch\n" - " b ._183\n" - "._152:\n" - " .align 2, 0\n" - "._151:\n" - " .word gSharedMem\n" - " .word 0x160cb\n" - " .word 0x160c4\n" - " .word gBattleCommunication\n" - "._148:\n" - " cmp r0, #0x2\n" - " bne ._153 @cond_branch\n" - " b ._154\n" - "._153:\n" - " cmp r0, #0x3\n" - " bne ._155 @cond_branch\n" - " b ._156\n" - "._155:\n" - " b ._183\n" - "._149:\n" - " ldr r0, ._165\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._158 @cond_branch\n" - " b ._183\n" - "._158:\n" - " ldr r0, ._165 + 4\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._160 @cond_branch\n" - " mov r4, #0x0\n" - " ldr r1, ._165 + 8\n" - " ldr r0, ._165 + 12\n" - "._161:\n" - " strh r4, [r0, #0x18]\n" - " str r1, [r0, #0x14]\n" - " add r0, r0, #0x1c\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " ble ._161 @cond_branch\n" - "._160:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._162 @cond_branch\n" - " b ._183\n" - "._162:\n" - " bl sub_800F02C\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._165 + 16\n" - " mov r2, #0x60\n" - " bl SendBlock\n" - " ldr r1, ._165 + 20\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._183\n" - "._166:\n" - " .align 2, 0\n" - "._165:\n" - " .word gReceivedRemoteLinkPlayers\n" - " .word gUnknown_02023A14_50\n" - " .word 0x2211\n" - " .word gLinkPlayers\n" - " .word gSharedMem\n" - " .word gBattleCommunication\n" - "._147:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0xf\n" - " and r1, r1, r0\n" - " cmp r1, #0xf\n" - " bne ._183 @cond_branch\n" - " bl ResetBlockReceivedFlags\n" - " mov r4, #0x0\n" - " lsl r0, r6, #0x3\n" - " sub r0, r0, r6\n" - " lsl r5, r0, #0x2\n" - " mov r7, #0x0\n" - "._175:\n" - " cmp r4, r6\n" - " beq ._174 @cond_branch\n" - " ldr r2, ._172\n" - " add r0, r7, r2\n" - " ldrh r1, [r0, #0x18]\n" - " mov r3, #0x1\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._169 @cond_branch\n" - " add r0, r5, r2\n" - " ldrh r1, [r0, #0x18]\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._170 @cond_branch\n" - " b ._174\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gLinkPlayers\n" - "._169:\n" - " add r0, r5, r2\n" - " ldrh r1, [r0, #0x18]\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._174 @cond_branch\n" - "._170:\n" - " lsl r1, r4, #0x8\n" - " ldr r0, ._177\n" - " add r1, r1, r0\n" - " ldr r0, ._177 + 4\n" - " mov r2, #0x60\n" - " bl memcpy\n" - "._174:\n" - " add r7, r7, #0x1c\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " ble ._175 @cond_branch\n" - " ldr r1, ._177 + 8\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r1, ._177 + 12\n" - " ldr r0, [r1, #0x8]\n" - " mov r2, r9\n" - " str r0, [r2]\n" - " ldr r0, ._177 + 16\n" - " ldrh r0, [r0]\n" - " mov r2, r8\n" - " strh r0, [r2]\n" - " ldr r0, ._177 + 20\n" - " str r0, [r1, #0x8]\n" - " mov r0, #0x5\n" - " mov r1, #0x0\n" - " bl OpenPartyMenu\n" - " b ._183\n" - "._178:\n" - " .align 2, 0\n" - "._177:\n" - " .word gBlockRecvBuffer\n" - " .word gUnknown_02023A00\n" - " .word gBattleCommunication\n" - " .word gMain\n" - " .word gBattleTypeFlags\n" - " .word sub_800F104+1\n" - "._154:\n" - " ldr r0, ._181\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._183 @cond_branch\n" - " mov r0, #0x3\n" - " strb r0, [r2]\n" - " bl sub_800832C\n" - " b ._183\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gPaletteFade\n" - "._156:\n" - " ldr r0, ._184\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._183 @cond_branch\n" - " ldr r1, ._184 + 4\n" - " mov r2, r8\n" - " ldrh r0, [r2]\n" - " strh r0, [r1]\n" - " ldr r1, ._184 + 8\n" - " mov r2, r9\n" - " ldr r0, [r2]\n" - " str r0, [r1, #0x8]\n" - " ldr r0, ._184 + 12\n" - " bl SetMainCallback2\n" - "._183:\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._185:\n" - " .align 2, 0\n" - "._184:\n" - " .word gReceivedRemoteLinkPlayers\n" - " .word gBattleTypeFlags\n" - " .word gMain\n" - " .word InitBattle+1\n" - "\n" - ); -} -#else void sub_800F104(void) { u8 playerId; MainCallback *pSavedCallback; u16 *pSavedBattleTypeFlags; + s32 i; playerId = GetMultiplayerId(); ewram160CB = playerId; @@ -1506,820 +609,66 @@ void sub_800F104(void) switch (gBattleCommunication[0]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) - { - sub_800F02C(); - SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60); - gBattleCommunication[0]++; - } - break; - case 1: - if ((GetBlockReceivedStatus() & 0xF) == 0xF) - { - s32 i; - - ResetBlockReceivedFlags(); - for (i = 0; i < 4; i++) - { - if (i != playerId) - { - if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) - || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) - memcpy(gUnknown_02023A00, gBlockRecvBuffer[i], 0x60); - } - } - gBattleCommunication[0]++; - *pSavedCallback = gMain.savedCallback; - *pSavedBattleTypeFlags = gBattleTypeFlags; - gMain.savedCallback = sub_800F104; - OpenPartyMenu(PARTY_MENU_TYPE_LINK_MULTI_BATTLE, 0); - } - break; - case 2: - if (!gPaletteFade.active) - { - gBattleCommunication[0] = 3; - sub_800832C(); - } - break; - case 3: - if (gReceivedRemoteLinkPlayers == 0) - { - gBattleTypeFlags = *pSavedBattleTypeFlags; - gMain.savedCallback = *pSavedCallback; - SetMainCallback2(InitBattle); - } - break; - } -} -#endif - -#if DEBUG -__attribute__((naked)) -void sub_800F298() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " bl GetMultiplayerId\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r0, ._188\n" - " ldr r1, ._188 + 4\n" - " add r0, r0, r1\n" - " strb r6, [r0]\n" - " bl RunTasks\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " ldr r0, ._188 + 8\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x7\n" - " bls ._186 @cond_branch\n" - " b ._352\n" - "._186:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._188 + 12\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._189:\n" - " .align 2, 0\n" - "._188:\n" - " .word gSharedMem\n" - " .word 0x160cb\n" - " .word gBattleCommunication\n" - " .word ._190\n" - "._190:\n" - " .word ._191\n" - " .word ._192\n" - " .word ._193\n" - " .word ._194\n" - " .word ._195\n" - " .word ._196\n" - " .word ._197\n" - " .word ._198\n" - "._191:\n" - " ldr r0, ._206\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._199 @cond_branch\n" - " b ._352\n" - "._199:\n" - " ldr r0, ._206 + 4\n" - " ldrb r1, [r0]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._201 @cond_branch\n" - " mov r4, #0x0\n" - " ldr r1, ._206 + 8\n" - " ldr r0, ._206 + 12\n" - "._202:\n" - " strh r4, [r0, #0x18]\n" - " str r1, [r0, #0x14]\n" - " add r0, r0, #0x1c\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " ble ._202 @cond_branch\n" - "._201:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._203 @cond_branch\n" - " b ._352\n" - "._203:\n" - " ldr r4, ._206 + 16\n" - " mov r0, #0x1\n" - " strb r0, [r4]\n" - " strb r0, [r4, #0x1]\n" - " bl sub_800E9EC\n" - " bl sub_800EAAC\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r1, r4, #0\n" - " mov r2, #0x20\n" - " bl SendBlock\n" - " b ._300\n" - "._207:\n" - " .align 2, 0\n" - "._206:\n" - " .word gReceivedRemoteLinkPlayers\n" - " .word gUnknown_02023A14_50\n" - " .word 0x2211\n" - " .word gLinkPlayers\n" - " .word gSharedMem\n" - "._192:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0xf\n" - " and r1, r1, r0\n" - " cmp r1, #0xf\n" - " beq ._208 @cond_branch\n" - " b ._352\n" - "._208:\n" - " bl ResetBlockReceivedFlags\n" - " mov r4, #0x0\n" - " ldr r0, ._213\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._210 @cond_branch\n" - " cmp r6, #0\n" - " bne ._211 @cond_branch\n" - " ldr r0, ._213 + 4\n" - " ldrh r1, [r0]\n" - " mov r2, #0xc\n" - " b ._212\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word gBlockRecvBuffer\n" - " .word gBattleTypeFlags\n" - "._211:\n" - " ldr r0, ._221\n" - " ldrh r1, [r0]\n" - " mov r2, #0x8\n" - "._212:\n" - " orr r1, r1, r2\n" - " strh r1, [r0]\n" - " add r4, r4, #0x1\n" - "._210:\n" - " cmp r4, #0\n" - " bne ._223 @cond_branch\n" - " mov r2, #0x0\n" - " ldr r1, ._221 + 4\n" - " add r5, r1, #0\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - "._217:\n" - " add r1, r1, r3\n" - " add r2, r2, #0x1\n" - " cmp r2, #0x3\n" - " bgt ._216 @cond_branch\n" - " ldrh r0, [r5]\n" - " ldrh r7, [r1]\n" - " cmp r0, r7\n" - " beq ._217 @cond_branch\n" - "._216:\n" - " cmp r2, #0x4\n" - " bne ._218 @cond_branch\n" - " cmp r6, #0\n" - " bne ._219 @cond_branch\n" - " ldr r0, ._221\n" - " ldrh r1, [r0]\n" - " mov r2, #0xc\n" - " b ._220\n" - "._222:\n" - " .align 2, 0\n" - "._221:\n" - " .word gBattleTypeFlags\n" - " .word gBlockRecvBuffer\n" - "._219:\n" - " ldr r0, ._233\n" - " ldrh r1, [r0]\n" - " mov r2, #0x8\n" - "._220:\n" - " orr r1, r1, r2\n" - " strh r1, [r0]\n" - " add r4, r4, #0x1\n" - "._218:\n" - " cmp r4, #0\n" - " bne ._223 @cond_branch\n" - " ldr r0, ._233 + 4\n" - " ldrh r2, [r0]\n" - " ldr r1, ._233 + 8\n" - " add r3, r0, #0\n" - " ldr r5, ._233\n" - " cmp r2, r1\n" - " beq ._224 @cond_branch\n" - "._230:\n" - " lsl r0, r4, #0x8\n" - " add r0, r0, r3\n" - " ldrh r0, [r0]\n" - " ldr r1, ._233 + 8\n" - " cmp r0, r1\n" - " bls ._225 @cond_branch\n" - " cmp r4, r6\n" - " bne ._227 @cond_branch\n" - "._225:\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " bgt ._227 @cond_branch\n" - " lsl r0, r4, #0x8\n" - " add r0, r0, r3\n" - " ldrh r0, [r0]\n" - " cmp r0, r1\n" - " bne ._230 @cond_branch\n" - "._224:\n" - " cmp r4, r6\n" - " beq ._230 @cond_branch\n" - " cmp r4, r6\n" - " bge ._230 @cond_branch\n" - "._227:\n" - " cmp r4, #0x4\n" - " bne ._231 @cond_branch\n" - " ldrh r0, [r5]\n" - " mov r1, #0xc\n" - " b ._232\n" - "._234:\n" - " .align 2, 0\n" - "._233:\n" - " .word gBattleTypeFlags\n" - " .word gBlockRecvBuffer\n" - " .word 0x101\n" - "._231:\n" - " ldrh r0, [r5]\n" - " mov r1, #0x8\n" - "._232:\n" - " orr r0, r0, r1\n" - " strh r0, [r5]\n" - "._223:\n" - " bl sub_800EB08\n" - " ldr r0, ._239\n" - " ldr r1, ._239 + 4\n" - " mov r2, #0x96\n" - " lsl r2, r2, #0x1\n" - " bl memcpy\n" - " ldr r0, ._239 + 8\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._239 + 12\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " mov r2, #0x0\n" - " mov r0, #0x87\n" - " lsl r0, r0, #0x1\n" - " strh r0, [r1, #0xa]\n" - " mov r0, #0x5a\n" - " strh r0, [r1, #0xc]\n" - " strh r2, [r1, #0x12]\n" - " strh r2, [r1, #0xe]\n" - " strh r2, [r1, #0x10]\n" - " add r2, r1, #0\n" - " ldr r0, ._239 + 16\n" - " add r3, r0, #2\n" - " ldr r6, ._239 + 20\n" - " mov r5, #0x3f\n" - " mov r7, #0x80\n" - " lsl r7, r7, #0x1\n" - " mov r4, #0x3\n" - "._247:\n" - " ldrh r0, [r6, #0x18]\n" - " cmp r0, #0x1\n" - " beq ._235 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._236 @cond_branch\n" - " cmp r0, #0\n" - " beq ._237 @cond_branch\n" - " b ._246\n" - "._240:\n" - " .align 2, 0\n" - "._239:\n" - " .word +0x201d000\n" - " .word gPlayerParty\n" - " .word sub_800DE30+1\n" - " .word gTasks\n" - " .word gBlockRecvBuffer\n" - " .word gLinkPlayers\n" - "._236:\n" - " cmp r0, #0x2\n" - " beq ._241 @cond_branch\n" - " cmp r0, #0x3\n" - " beq ._242 @cond_branch\n" - " b ._246\n" - "._237:\n" - " ldrh r0, [r3]\n" - " add r1, r5, #0\n" - " and r1, r1, r0\n" - " b ._244\n" - "._235:\n" - " ldrh r0, [r3]\n" - " add r1, r5, #0\n" - " and r1, r1, r0\n" - " b ._245\n" - "._241:\n" - " ldrh r0, [r3]\n" - " add r1, r5, #0\n" - " and r1, r1, r0\n" - " lsl r1, r1, #0x6\n" - "._244:\n" - " ldrh r0, [r2, #0xe]\n" - " orr r1, r1, r0\n" - " strh r1, [r2, #0xe]\n" - " b ._246\n" - "._242:\n" - " ldrh r0, [r3]\n" - " add r1, r5, #0\n" - " and r1, r1, r0\n" - " lsl r1, r1, #0x6\n" - "._245:\n" - " ldrh r0, [r2, #0x10]\n" - " orr r1, r1, r0\n" - " strh r1, [r2, #0x10]\n" - "._246:\n" - " add r3, r3, r7\n" - " add r6, r6, #0x1c\n" - " sub r4, r4, #0x1\n" - " cmp r4, #0\n" - " bge ._247 @cond_branch\n" - " bl ZeroPlayerPartyMons\n" - " bl ZeroEnemyPartyMons\n" - " ldr r1, ._251\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._193:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._248 @cond_branch\n" - " b ._352\n" - "._248:\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._251 + 4\n" - " mov r2, #0xc8\n" - " bl SendBlock\n" - " b ._300\n" - "._252:\n" - " .align 2, 0\n" - "._251:\n" - " .word gBattleCommunication\n" - " .word +0x201d000\n" - "._194:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0xf\n" - " and r1, r1, r0\n" - " cmp r1, #0xf\n" - " beq ._253 @cond_branch\n" - " b ._352\n" - "._253:\n" - " bl ResetBlockReceivedFlags\n" - " mov r4, #0x0\n" - " lsl r0, r6, #0x3\n" - " sub r0, r0, r6\n" - " lsl r0, r0, #0x2\n" - " mov r8, r0\n" - " ldr r5, ._260\n" - " mov r7, #0x0\n" - "._294:\n" - " cmp r4, r6\n" - " bne ._255 @cond_branch\n" - " ldr r0, ._260 + 4\n" - " add r0, r7, r0\n" - " ldrh r0, [r0, #0x18]\n" - " cmp r0, #0x2\n" - " bgt ._256 @cond_branch\n" - " cmp r0, #0x1\n" - " bge ._257 @cond_branch\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " b ._291\n" - "._261:\n" - " .align 2, 0\n" - "._260:\n" - " .word gBlockRecvBuffer\n" - " .word gLinkPlayers\n" - "._256:\n" - " cmp r0, #0x3\n" - " bne ._291 @cond_branch\n" - "._258:\n" - " ldr r0, ._264\n" - " b ._283\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word gPlayerParty\n" - "._257:\n" - " ldr r0, ._267\n" - " b ._283\n" - "._268:\n" - " .align 2, 0\n" - "._267:\n" - " .word gPlayerParty+0x12c\n" - "._255:\n" - " ldr r2, ._272\n" - " add r0, r7, r2\n" - " ldrh r1, [r0, #0x18]\n" - " mov r3, #0x1\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._269 @cond_branch\n" - " mov r1, r8\n" - " add r0, r1, r2\n" - " ldrh r1, [r0, #0x18]\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._270 @cond_branch\n" - " b ._274\n" - "._273:\n" - " .align 2, 0\n" - "._272:\n" - " .word gLinkPlayers\n" - "._269:\n" - " mov r1, r8\n" - " add r0, r1, r2\n" - " ldrh r1, [r0, #0x18]\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._274 @cond_branch\n" - "._270:\n" - " add r0, r7, r2\n" - " ldrh r2, [r0, #0x18]\n" - " cmp r2, #0x2\n" - " bgt ._275 @cond_branch\n" - " cmp r2, #0x1\n" - " bge ._276 @cond_branch\n" - " cmp r2, #0\n" - " beq ._277 @cond_branch\n" - " b ._291\n" - "._275:\n" - " cmp r2, #0x3\n" - " bne ._291 @cond_branch\n" - "._277:\n" - " ldr r0, ._281\n" - " b ._283\n" - "._282:\n" - " .align 2, 0\n" - "._281:\n" - " .word gPlayerParty\n" - "._276:\n" - " ldr r0, ._284\n" - " b ._283\n" - "._285:\n" - " .align 2, 0\n" - "._284:\n" - " .word gPlayerParty+0x12c\n" - "._274:\n" - " add r0, r7, r2\n" - " ldrh r2, [r0, #0x18]\n" - " cmp r2, #0x2\n" - " bgt ._286 @cond_branch\n" - " cmp r2, #0x1\n" - " bge ._287 @cond_branch\n" - " cmp r2, #0\n" - " beq ._288 @cond_branch\n" - " b ._291\n" - "._286:\n" - " cmp r2, #0x3\n" - " bne ._291 @cond_branch\n" - "._288:\n" - " ldr r0, ._292\n" - "._283:\n" - " add r1, r5, #0\n" - " mov r2, #0xc8\n" - " bl memcpy\n" - " b ._291\n" - "._293:\n" - " .align 2, 0\n" - "._292:\n" - " .word gEnemyParty\n" - "._287:\n" - " ldr r0, ._296\n" - " add r1, r5, #0\n" - " mov r2, #0xc8\n" - " bl memcpy\n" - "._291:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " add r5, r5, r0\n" - " add r7, r7, #0x1c\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " ble ._294 @cond_branch\n" - " b ._300\n" - "._297:\n" - " .align 2, 0\n" - "._296:\n" - " .word gEnemyParty+0x12c\n" - "._195:\n" - " bl sub_8007ECC\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._298 @cond_branch\n" - " b ._352\n" - "._298:\n" - " bl bitmask_all_link_players_but_self\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r1, ._301\n" - " mov r2, #0x64\n" - " bl SendBlock\n" - " b ._300\n" - "._302:\n" - " .align 2, 0\n" - "._301:\n" - " .word +0x201d0c8\n" - "._196:\n" - " bl GetBlockReceivedStatus\n" - " mov r1, #0xf\n" - " and r1, r1, r0\n" - " cmp r1, #0xf\n" - " beq ._303 @cond_branch\n" - " b ._352\n" - "._303:\n" - " bl ResetBlockReceivedFlags\n" - " mov r4, #0x0\n" - " lsl r0, r6, #0x3\n" - " sub r0, r0, r6\n" - " lsl r0, r0, #0x2\n" - " mov r8, r0\n" - " ldr r5, ._310\n" - " mov r7, #0x0\n" - "._344:\n" - " cmp r4, r6\n" - " bne ._305 @cond_branch\n" - " ldr r0, ._310 + 4\n" - " add r0, r7, r0\n" - " ldrh r0, [r0, #0x18]\n" - " cmp r0, #0x2\n" - " bgt ._306 @cond_branch\n" - " cmp r0, #0x1\n" - " bge ._307 @cond_branch\n" - " cmp r0, #0\n" - " beq ._308 @cond_branch\n" - " b ._341\n" - "._311:\n" - " .align 2, 0\n" - "._310:\n" - " .word gBlockRecvBuffer\n" - " .word gLinkPlayers\n" - "._306:\n" - " cmp r0, #0x3\n" - " bne ._341 @cond_branch\n" - "._308:\n" - " ldr r0, ._314\n" - " b ._333\n" - "._315:\n" - " .align 2, 0\n" - "._314:\n" - " .word gPlayerParty+0xc8\n" - "._307:\n" - " ldr r0, ._317\n" - " b ._333\n" - "._318:\n" - " .align 2, 0\n" - "._317:\n" - " .word gPlayerParty+0x1f4\n" - "._305:\n" - " ldr r2, ._322\n" - " add r0, r7, r2\n" - " ldrh r1, [r0, #0x18]\n" - " mov r3, #0x1\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._319 @cond_branch\n" - " mov r1, r8\n" - " add r0, r1, r2\n" - " ldrh r1, [r0, #0x18]\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._320 @cond_branch\n" - " b ._324\n" - "._323:\n" - " .align 2, 0\n" - "._322:\n" - " .word gLinkPlayers\n" - "._319:\n" - " mov r1, r8\n" - " add r0, r1, r2\n" - " ldrh r1, [r0, #0x18]\n" - " add r0, r3, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._324 @cond_branch\n" - "._320:\n" - " add r0, r7, r2\n" - " ldrh r2, [r0, #0x18]\n" - " cmp r2, #0x2\n" - " bgt ._325 @cond_branch\n" - " cmp r2, #0x1\n" - " bge ._326 @cond_branch\n" - " cmp r2, #0\n" - " beq ._327 @cond_branch\n" - " b ._341\n" - "._325:\n" - " cmp r2, #0x3\n" - " bne ._341 @cond_branch\n" - "._327:\n" - " ldr r0, ._331\n" - " b ._333\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gPlayerParty+0xc8\n" - "._326:\n" - " ldr r0, ._334\n" - " b ._333\n" - "._335:\n" - " .align 2, 0\n" - "._334:\n" - " .word gPlayerParty+0x1f4\n" - "._324:\n" - " add r0, r7, r2\n" - " ldrh r2, [r0, #0x18]\n" - " cmp r2, #0x2\n" - " bgt ._336 @cond_branch\n" - " cmp r2, #0x1\n" - " bge ._337 @cond_branch\n" - " cmp r2, #0\n" - " beq ._338 @cond_branch\n" - " b ._341\n" - "._336:\n" - " cmp r2, #0x3\n" - " bne ._341 @cond_branch\n" - "._338:\n" - " ldr r0, ._342\n" - "._333:\n" - " add r1, r5, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - " b ._341\n" - "._343:\n" - " .align 2, 0\n" - "._342:\n" - " .word gEnemyParty+0xc8\n" - "._337:\n" - " ldr r0, ._346\n" - " add r1, r5, #0\n" - " mov r2, #0x64\n" - " bl memcpy\n" - "._341:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " add r5, r5, r0\n" - " add r7, r7, #0x1c\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " ble ._344 @cond_branch\n" - " ldr r4, ._346 + 4\n" - " add r0, r4, #0\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " add r0, r0, #0x64\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc8\n" - " bl shedinja_something\n" - " mov r1, #0x96\n" - " lsl r1, r1, #0x1\n" - " add r0, r4, r1\n" - " bl shedinja_something\n" - " mov r7, #0xc8\n" - " lsl r7, r7, #0x1\n" - " add r0, r4, r7\n" - " bl shedinja_something\n" - " mov r1, #0xfa\n" - " lsl r1, r1, #0x1\n" - " add r0, r4, r1\n" - " bl shedinja_something\n" - " ldr r4, ._346 + 8\n" - " add r0, r4, #0\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " add r0, r0, #0x64\n" - " bl shedinja_something\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc8\n" - " bl shedinja_something\n" - " sub r7, r7, #0x64\n" - " add r0, r4, r7\n" - " bl shedinja_something\n" - " mov r1, #0xc8\n" - " lsl r1, r1, #0x1\n" - " add r0, r4, r1\n" - " bl shedinja_something\n" - " add r7, r7, #0xc8\n" - " add r0, r4, r7\n" - " bl shedinja_something\n" - "._300:\n" - " ldr r1, ._346 + 12\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._352\n" - "._347:\n" - " .align 2, 0\n" - "._346:\n" - " .word gEnemyParty+0x1f4\n" - " .word gPlayerParty\n" - " .word gEnemyParty\n" - " .word gBattleCommunication\n" - "._197:\n" - " bl sub_800B950\n" - " ldr r0, ._349\n" - " ldrb r1, [r0]\n" - " add r1, r1, #0x1\n" - " mov r2, #0x0\n" - " strb r1, [r0]\n" - " strb r2, [r0, #0x1]\n" - " strb r2, [r0, #0x2]\n" - " b ._352\n" - "._350:\n" - " .align 2, 0\n" - "._349:\n" - " .word gBattleCommunication\n" - "._198:\n" - " ldr r0, ._353\n" - " add r1, r0, #1\n" - " bl battle_load_something\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._352 @cond_branch\n" - " ldr r2, ._353 + 4\n" - " ldr r1, ._353 + 8\n" - " ldr r0, [r1]\n" - " str r0, [r2]\n" - " ldr r0, ._353 + 12\n" - " str r0, [r1]\n" - " ldr r0, ._353 + 16\n" - " bl SetMainCallback2\n" - " ldr r3, ._353 + 20\n" - " ldrh r2, [r3]\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._352 @cond_branch\n" - " ldr r1, ._353 + 24\n" - " mov r4, #0x80\n" - " lsl r4, r4, #0x4\n" - " add r0, r4, #0\n" - " strh r0, [r1]\n" - " mov r0, #0x20\n" - " orr r0, r0, r2\n" - " strh r0, [r3]\n" - "._352:\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._354:\n" - " .align 2, 0\n" - "._353:\n" - " .word gUnknown_02024D1F\n" - " .word gPreBattleCallback1\n" - " .word gMain\n" - " .word debug_sub_80139E4+1\n" - " .word BattleMainCB2+1\n" - " .word gBattleTypeFlags\n" - " .word gTrainerBattleOpponent\n" - "\n" - ); + if (gReceivedRemoteLinkPlayers != 0) + { +#if DEBUG + if (gUnknown_02023A14_50 & 8) + { + for (i = 0; i < 4; i++) + { + gLinkPlayers[i].lp_field_18 = i; + gLinkPlayers[i].linkType = 0x2211; + } + } +#endif + if (sub_8007ECC()) + { + sub_800F02C(); + SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60); + gBattleCommunication[0]++; + } + } + break; + case 1: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + //s32 i; + + ResetBlockReceivedFlags(); + for (i = 0; i < 4; i++) + { + if (i != playerId) + { + if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) + || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) + memcpy(gUnknown_02023A00, gBlockRecvBuffer[i], 0x60); + } + } + gBattleCommunication[0]++; + *pSavedCallback = gMain.savedCallback; + *pSavedBattleTypeFlags = gBattleTypeFlags; + gMain.savedCallback = sub_800F104; + OpenPartyMenu(PARTY_MENU_TYPE_LINK_MULTI_BATTLE, 0); + } + break; + case 2: + if (!gPaletteFade.active) + { + gBattleCommunication[0] = 3; + sub_800832C(); + } + break; + case 3: + if (gReceivedRemoteLinkPlayers == 0) + { + gBattleTypeFlags = *pSavedBattleTypeFlags; + gMain.savedCallback = *pSavedCallback; + SetMainCallback2(InitBattle); + } + break; + } } -#else + void sub_800F298(void) { u8 playerId; @@ -2333,14 +682,27 @@ void sub_800F298(void) switch (gBattleCommunication[0]) { case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + if (gReceivedRemoteLinkPlayers != 0) { - gBattleStruct->unk0 = 1; - gBattleStruct->unk1 = 1; - sub_800E9EC(); - sub_800EAAC(); - SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20); - gBattleCommunication[0]++; +#if DEBUG + if (gUnknown_02023A14_50 & 8) + { + for (id = 0; id < 4; id++) + { + gLinkPlayers[id].lp_field_18 = id; + gLinkPlayers[id].linkType = 0x2211; + } + } +#endif + if (sub_8007ECC()) + { + gBattleStruct->unk0 = 1; + gBattleStruct->unk1 = 1; + sub_800E9EC(); + sub_800EAAC(); + SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20); + gBattleCommunication[0]++; + } } break; case 1: @@ -2576,7 +938,12 @@ void sub_800F298(void) if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { gPreBattleCallback1 = gMain.callback1; + // debug +#if DEBUG + gMain.callback1 = debug_sub_80139E4; +#else gMain.callback1 = sub_8010824; +#endif SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -2587,128 +954,38 @@ void sub_800F298(void) break; } } -#endif -#if DEBUG -__attribute__((naked)) -void BattleMainCB2(void) -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " ldr r4, ._358\n" - " ldrh r2, [r4, #0x2c]\n" - " mov r1, #0x82\n" - " lsl r1, r1, #0x1\n" - " add r0, r1, #0\n" - " and r0, r0, r2\n" - " cmp r0, r1\n" - " bne ._357 @cond_branch\n" - " ldr r2, ._358 + 4\n" - " ldr r1, ._358 + 8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x1\n" - " strh r0, [r2]\n" - " ldr r0, ._358 + 12\n" - " add r2, r4, r0\n" - " ldrb r1, [r2]\n" - " mov r0, #0x3\n" - " neg r0, r0\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - " ldr r1, ._358 + 16\n" - " mov r0, #0x3\n" - " strb r0, [r1, #0x15]\n" - " ldr r0, ._358 + 20\n" - " ldr r0, [r0]\n" - " str r0, [r4]\n" - " bl ZeroEnemyPartyMons\n" - " mov r0, #0x5a\n" - " bl m4aSongNumStop\n" - " ldr r0, ._358 + 24\n" - " ldrh r1, [r0]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._356 @cond_branch\n" - " ldr r0, ._358 + 28\n" - " bl SetMainCallback2\n" - " b ._357\n" - "._359:\n" - " .align 2, 0\n" - "._358:\n" - " .word gMain\n" - " .word gSpecialVar_Result\n" - " .word gBattleOutcome\n" - " .word 0x43d\n" - " .word gScanlineEffect\n" - " .word gPreBattleCallback1\n" - " .word gBattleTypeFlags\n" - " .word sub_805465C+1\n" - "._356:\n" - " ldr r0, [r4, #0x8]\n" - " bl SetMainCallback2\n" - "._357:\n" - " ldr r5, ._361\n" - " ldrh r1, [r5]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._360 @cond_branch\n" - " lsr r0, r1, #0x2\n" - " mov r4, #0x1\n" - " and r0, r0, r4\n" - " str r4, [sp]\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl debug_sub_8008264\n" - " ldrh r0, [r5]\n" - " lsr r0, r0, #0x2\n" - " and r0, r0, r4\n" - " str r4, [sp]\n" - " mov r1, #0x1\n" - " mov r2, #0x15\n" - " mov r3, #0x1\n" - " bl debug_sub_8008264\n" - " ldrh r0, [r5]\n" - " lsr r0, r0, #0x2\n" - " and r0, r0, r4\n" - " str r4, [sp]\n" - " mov r1, #0x1\n" - " mov r2, #0x29\n" - " mov r3, #0x1\n" - " bl debug_sub_8008264\n" - "._360:\n" - " ldr r0, ._361 + 4\n" - " bl Text_UpdateWindowInBattle\n" - " bl UpdatePaletteFade\n" - " bl RunTasks\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._362:\n" - " .align 2, 0\n" - "._361:\n" - " .word gBattleTypeFlags\n" - " .word gUnknown_03004210\n" - "\n" - ); -} -#else void BattleMainCB2(void) { AnimateSprites(); BuildOamBuffer(); + +#if DEBUG + if ((gMain.heldKeys & (R_BUTTON | SELECT_BUTTON)) == ((R_BUTTON | SELECT_BUTTON))) + { + gSpecialVar_Result = gBattleOutcome = 1; + gMain.inBattle = FALSE; + gScanlineEffect.state = 3; + gMain.callback1 = gPreBattleCallback1; + ZeroEnemyPartyMons(); + m4aSongNumStop(0x5A); + if (gBattleTypeFlags & 2) + SetMainCallback2(sub_805465C); + else + SetMainCallback2(gMain.savedCallback); + } + if (gBattleTypeFlags & 2) + { + debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 1, 1, 1); + debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 21, 1, 1); + debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 41, 1, 1); + } +#endif + Text_UpdateWindowInBattle(&gUnknown_03004210); UpdatePaletteFade(); RunTasks(); } -#endif void sub_800F828(struct Sprite *sprite) { @@ -3084,24 +1361,19 @@ void c2_081284E0(void) // A LOT of debug code! #if DEBUG -__attribute__((naked)) -void debug_sub_8010800() + +extern u8 gBattleBuffersTransferData[]; + +void debug_sub_8010818(void); +void debug_sub_80108B8(void); +void debug_sub_8011EA0(u8); +void debug_sub_8012294(void); + +void debug_sub_8010800(void) { - asm( - " push {lr}\n" - " bl debug_sub_8010818\n" - " bl debug_sub_80108B8\n" - " ldr r1, ._496\n" - " mov r0, #0x0\n" - " str r0, [r1]\n" - " pop {r0}\n" - " bx r0\n" - "._497:\n" - " .align 2, 0\n" - "._496:\n" - " .word gBattleBuffersTransferData+0x100\n" - "\n" - ); + debug_sub_8010818(); + debug_sub_80108B8(); + *(u32 *)(gBattleBuffersTransferData + 0x100) = 0; } __attribute__((naked)) @@ -5849,133 +4121,54 @@ void debug_sub_8011D40() ); } -__attribute__((naked)) void debug_nullsub_45() { - asm( - " bx lr\n" - "\n" - ); } -__attribute__((naked)) -void debug_sub_8011DD4() +void debug_sub_8011DD4(void) { - asm( - " push {lr}\n" - " ldr r1, ._776\n" - " ldr r2, ._776 + 4\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x8\n" - " ldr r0, ._776 + 8\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 12\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 16\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 20\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 24\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 28\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 32\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._776 + 36\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " bl LoadOam\n" - " bl ProcessSpriteCopyRequests\n" - " bl TransferPlttBuffer\n" - " bl ScanlineEffect_InitHBlankDmaTransfer\n" - " pop {r0}\n" - " bx r0\n" - "._777:\n" - " .align 2, 0\n" - "._776:\n" - " .word 0x4000008\n" - " .word 0x9803\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - "\n" - ); + REG_BG0CNT = 0x9803; + + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; + + REG_BG1HOFS = gBattle_BG1_X; + REG_BG1VOFS = gBattle_BG1_Y; + + REG_BG2HOFS = gBattle_BG2_X; + REG_BG2VOFS = gBattle_BG2_Y; + + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; + + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + ScanlineEffect_InitHBlankDmaTransfer(); } -__attribute__((naked)) -void debug_sub_8011E5C() +void debug_sub_8011E5C(void) { - asm( - " push {r4, lr}\n" - " mov r4, #0x0\n" - "._778:\n" - " lsl r0, r4, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x1e\n" - " ble ._778 @cond_branch\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + s32 i; + + for (i = 0; i < 31; i++) + debug_sub_8011EA0(i); } -__attribute__((naked)) -void debug_sub_8011E74() +extern u8 gUnknown_Debug_030043A8; + +void debug_sub_8011E74(void) { - asm( - " push {r4, r5, lr}\n" - " ldr r0, ._780\n" - " ldrb r5, [r0]\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " add r4, r0, #0\n" - "._779:\n" - " bl debug_sub_8012294\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x3\n" - " bls ._779 @cond_branch\n" - " ldr r0, ._780\n" - " strb r5, [r0]\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._781:\n" - " .align 2, 0\n" - "._780:\n" - " .word gUnknown_Debug_030043A8\n" - "\n" - ); + u8 r5 = gUnknown_Debug_030043A8; + + for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++) + debug_sub_8012294(); + + gUnknown_Debug_030043A8 = r5; } __attribute__((naked)) -void debug_sub_8011EA0() +void debug_sub_8011EA0(u8 a) { asm( " push {r4, r5, r6, r7, lr}\n" diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index ed6929638..8f79944de 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -23,6 +23,7 @@ #include "text.h" #include "trainer_card.h" +extern u8 unk_2030220; extern u16 gSpecialVar_Result; extern struct TrainerCard gTrainerCards[4]; extern u8 gUnknown_03004860; @@ -1374,50 +1375,19 @@ void unref_sub_8083CC8(u8 taskId) #if DEBUG -__attribute__((naked)) -void debug_sub_808B82C() +void debug_sub_808B82C(void) { - asm("\ - ldr r1, ._400\n\ - mov r0, #0x0\n\ - strb r0, [r1]\n\ - bx lr\n\ -._401:\n\ - .align 2, 0\n\ -._400:\n\ - .word unk_2030220"); + unk_2030220 = 0; } -__attribute__((naked)) void debug_sub_808B838(u8 a) { - asm("\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - ldr r2, ._402\n\ - mov r1, #0x1\n\ - LSL r1, r0\n\ - ldrb r0, [r2]\n\ - orr r1, r1, r0\n\ - strb r1, [r2]\n\ - bx lr\n\ -._403:\n\ - .align 2, 0\n\ -._402:\n\ - .word unk_2030220"); + unk_2030220 |= 1 << a; } -__attribute__((naked)) -int debug_sub_808B850() +int debug_sub_808B850(void) { - asm("\ - ldr r0, ._404\n\ - ldrb r0, [r0]\n\ - bx lr\n\ -._405:\n\ - .align 2, 0\n\ -._404:\n\ - .word unk_2030220"); + return unk_2030220; } #endif \ No newline at end of file diff --git a/src/engine/link.c b/src/engine/link.c index eb0ae4731..31311d345 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -1044,7 +1044,7 @@ void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) } #else __attribute__((naked)) -void debug_sub_8008264() +void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) { asm( " push {r4, r5, r6, r7, lr}\n" -- cgit v1.2.3 From d125e9b461204d0f80ae25d35a1569613ee3aa6e Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 24 Jan 2018 01:35:05 -0600 Subject: integrate debug Blender_PrintBlendingResults --- src/scene/berry_blender.c | 493 +--------------------------------------------- 1 file changed, 5 insertions(+), 488 deletions(-) (limited to 'src') diff --git a/src/scene/berry_blender.c b/src/scene/berry_blender.c index 0799531cd..c636e245c 100644 --- a/src/scene/berry_blender.c +++ b/src/scene/berry_blender.c @@ -3276,493 +3276,6 @@ static void sub_8051C04(struct Sprite* sprite) gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM; } -#if DEBUG -__attribute__((naked)) -bool8 Blender_PrintBlendingResults(void) -{ - asm(".syntax unified\n\ -loc_8056178:\n\ - PUSH {R4-R7,LR}\n\ - MOV R7, R10\n\ - MOV R6, R9\n\ - MOV R5, R8\n\ - PUSH {R5-R7}\n\ - SUB SP, SP, #0x34\n\ - LDR R1, off_805619C\n\ - LDR R0, [R1]\n\ - LDRB R0, [R0]\n\ - ADDS R2, R1, #0\n\ - CMP R0, #6 @ switch 7 cases\n\ - BLS loc_8056192\n\ - B def_805619A @ jumptable 0805619A default case\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_8056192:\n\ - LSLS R0, R0, #2\n\ - LDR R1, off_80561A0\n\ - ADDS R0, R0, R1\n\ - LDR R0, [R0]\n\ - MOV PC, R0 @ switch jump\n\ -@ ---------------------------------------------------------------------------\n\ -off_805619C: .4byte gBerryBlenderData\n\ -off_80561A0: .4byte jpt_805619A\n\ -jpt_805619A: .4byte loc_80561C0 @ jump table for switch statement\n\ - .4byte loc_80561D6 @ jumptable 0805619A case 1\n\ - .4byte loc_80561F0 @ jumptable 0805619A case 2\n\ - .4byte loc_8056240 @ jumptable 0805619A case 3\n\ - .4byte loc_805645C @ jumptable 0805619A case 4\n\ - .4byte loc_8056470 @ jumptable 0805619A case 5\n\ - .4byte loc_8056538 @ jumptable 0805619A case 6\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_80561C0: @ jumptable 0805619A case 0\n\ - LDR R1, [R2]\n\ - LDRB R0, [R1]\n\ - ADDS R0, #1\n\ - STRB R0, [R1]\n\ - LDR R0, [R2]\n\ - MOVS R1, #0x98\n\ - LSLS R1, R1, #1\n\ - ADDS R0, R0, R1\n\ - MOVS R1, #0x11\n\ - STR R1, [R0]\n\ - B def_805619A @ jumptable 0805619A default case\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_80561D6: @ jumptable 0805619A case 1\n\ - LDR R1, [R2]\n\ - MOVS R0, #0x98\n\ - LSLS R0, R0, #1\n\ - ADDS R2, R1, R0\n\ - LDR R0, [R2]\n\ - SUBS R0, #0xA\n\ - STR R0, [R2]\n\ - CMP R0, #0\n\ - BLT loc_80561EA\n\ - B def_805619A @ jumptable 0805619A default case\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_80561EA:\n\ - MOVS R0, #0\n\ - STR R0, [R2]\n\ - B loc_8056520\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_80561F0: @ jumptable 0805619A case 2\n\ - LDR R1, [R2]\n\ - MOVS R2, #0x98\n\ - LSLS R2, R2, #1\n\ - ADDS R1, R1, R2\n\ - LDR R0, [R1]\n\ - ADDS R0, #1\n\ - STR R0, [R1]\n\ - CMP R0, #0x14\n\ - BGT loc_8056204\n\ - B def_805619A @ jumptable 0805619A default case\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_8056204:\n\ - MOVS R6, #0\n\ -\n\ -loc_8056206:\n\ - LDR R4, off_8056238\n\ - LDR R0, [R4]\n\ - ADDS R0, #0x50\n\ - ADDS R0, R0, R6\n\ - LDRB R1, [R0]\n\ - LSLS R0, R1, #4\n\ - ADDS R0, R0, R1\n\ - LSLS R0, R0, #2\n\ - LDR R1, off_805623C\n\ - ADDS R0, R0, R1\n\ - BL DestroySprite\n\ - ADDS R0, R6, #1\n\ - LSLS R0, R0, #0x10\n\ - LSRS R6, R0, #0x10\n\ - CMP R6, #2\n\ - BLS loc_8056206\n\ - LDR R1, [R4]\n\ - MOVS R0, #0x98\n\ - LSLS R0, R0, #1\n\ - ADDS R2, R1, R0\n\ - MOVS R0, #0\n\ - STR R0, [R2]\n\ - B loc_8056520\n\ -@ ---------------------------------------------------------------------------\n\ - .align 2, 0\n\ -off_8056238: .4byte gBerryBlenderData\n\ -off_805623C: .4byte gSprites\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_8056240: @ jumptable 0805619A case 3\n\ - MOVS R0, #4\n\ - MOVS R1, #2\n\ - MOVS R2, #0x19\n\ - MOVS R3, #0x11\n\ - BL Menu_DrawStdWindowFrame\n\ - LDR R0, dword_805642C\n\ - MOVS R1, #5\n\ - MOVS R2, #3\n\ - MOVS R3, #0xA0\n\ - BL sub_8072BD8\n\ - MOVS R6, #0\n\ - LDR R1, off_8056430\n\ - LDR R0, [R1]\n\ - ADDS R0, #0x88\n\ - ADD R2, SP, #0xC\n\ - MOV R8, R2\n\ - MOV R2, SP\n\ - ADDS R2, #0x16\n\ - STR R2, [SP,#0x30]\n\ - LDRB R0, [R0]\n\ - CMP R6, R0\n\ - BCS loc_8056322\n\ - MOV R9, R1\n\ - LDR R0, off_8056434\n\ - MOV R10, R0\n\ -\n\ -loc_8056276:\n\ - MOV R1, R9\n\ - LDR R2, [R1]\n\ - MOVS R1, #0xB2\n\ - LSLS R1, R1, #1\n\ - ADDS R0, R2, R1\n\ - ADDS R0, R0, R6\n\ - LDRB R4, [R0]\n\ - LSLS R1, R4, #4\n\ - ADDS R1, R1, R2\n\ - MOVS R2, #0xBF\n\ - LSLS R2, R2, #1\n\ - ADDS R1, R1, R2\n\ - MOV R0, R8\n\ - BL StringCopy\n\ - LSLS R5, R4, #3\n\ - SUBS R5, R5, R4\n\ - LSLS R5, R5, #2\n\ - MOV R1, R10\n\ - ADDS R0, R5, R1\n\ - LDRB R1, [R0,#0x1A]\n\ - MOV R0, R8\n\ - BL ConvertInternationalString\n\ - MOV R0, R8\n\ - LDR R1, dword_8056438\n\ - BL de_sub_8073174\n\ - MOV R2, R9\n\ - LDR R0, [R2]\n\ - ADDS R7, R0, #0\n\ - ADDS R7, #0xAB\n\ - ADDS R4, R6, #1\n\ - ADDS R0, R7, #0\n\ - ADDS R1, R4, #0\n\ - BL ConvertIntToDecimalString\n\ - ADDS R7, R0, #0\n\ - MOVS R1, #0\n\ - STRB R1, [R7]\n\ - MOVS R0, #0xAD\n\ - STRB R0, [R7,#1]\n\ - STRB R1, [R7,#2]\n\ - ADDS R7, #3\n\ - LDR R0, off_805643C\n\ - ADDS R5, R5, R0\n\ - ADDS R0, R7, #0\n\ - ADDS R1, R5, #0\n\ - MOVS R2, #0x58\n\ - MOVS R3, #0\n\ - BL sub_8072C74\n\ - ADDS R7, R0, #0\n\ - ADD R1, SP, #0xC\n\ - MOVS R2, #0x9D\n\ - MOVS R3, #0\n\ - BL sub_8072C74\n\ - MOV R2, R9\n\ - LDR R1, [R2]\n\ - ADDS R0, R1, #0\n\ - ADDS R0, #0xAB\n\ - LDR R3, dword_8056440\n\ - ADDS R1, #0x88\n\ - LDRB R2, [R1]\n\ - ADDS R3, R2, R3\n\ - LDR R1, dword_8056444\n\ - ADDS R2, R2, R1\n\ - LDRB R1, [R2]\n\ - ADDS R2, R6, #0\n\ - MULS R2, R1\n\ - LDRB R3, [R3]\n\ - ADDS R2, R2, R3\n\ - LSLS R2, R2, #0x18\n\ - LSRS R2, R2, #0x18\n\ - MOVS R1, #5\n\ - BL Menu_PrintText\n\ - LSLS R4, R4, #0x10\n\ - LSRS R6, R4, #0x10\n\ - MOV R1, R9\n\ - LDR R0, [R1]\n\ - ADDS R0, #0x88\n\ - LDRB R0, [R0]\n\ - CMP R6, R0\n\ - BCC loc_8056276\n\ -\n\ -loc_8056322:\n\ - LDR R6, off_8056430\n\ - LDR R0, [R6]\n\ - ADDS R0, #0x5A\n\ - LDRH R0, [R0]\n\ - MOVS R1, #0x64\n\ - BL __umodsi3\n\ - ADDS R1, R0, #0\n\ - LSLS R1, R1, #0x10\n\ - LSRS R1, R1, #0x10\n\ - MOV R0, R8\n\ - MOVS R2, #2\n\ - MOVS R3, #2\n\ - BL ConvertIntToDecimalStringN\n\ - LDR R0, [R6]\n\ - ADDS R7, R0, #0\n\ - ADDS R7, #0xAB\n\ - LDR R1, dword_8056448\n\ - ADDS R0, R7, #0\n\ - BL StringCopy\n\ - ADDS R7, R0, #0\n\ - LDR R0, [R6]\n\ - ADDS R0, #0x5A\n\ - LDRH R0, [R0]\n\ - MOVS R1, #0x64\n\ - BL __udivsi3\n\ - ADDS R1, R0, #0\n\ - LSLS R1, R1, #0x10\n\ - LSRS R1, R1, #0x10\n\ - ADDS R0, R7, #0\n\ - MOVS R2, #0x79\n\ - MOVS R3, #1\n\ - BL sub_8072C14\n\ - ADDS R7, R0, #0\n\ - MOVS R0, #0xB8\n\ - STRB R0, [R7]\n\ - ADDS R7, #1\n\ - ADDS R0, R7, #0\n\ - MOV R1, R8\n\ - MOVS R2, #0x88\n\ - MOVS R3, #1\n\ - BL sub_8072C74\n\ - ADDS R7, R0, #0\n\ - LDR R1, off_805644C\n\ - BL StringCopy\n\ - LDR R0, [R6]\n\ - ADDS R0, #0xAB\n\ - MOVS R1, #5\n\ - MOVS R2, #0xD\n\ - BL Menu_PrintText\n\ - LDR R0, [R6]\n\ - MOVS R2, #0x96\n\ - LSLS R2, R2, #1\n\ - ADDS R0, R0, R2\n\ - LDR R0, [R0]\n\ - MOVS R1, #0x3C\n\ - BL __udivsi3\n\ - ADDS R4, R0, #0\n\ - LSLS R4, R4, #0x10\n\ - LSRS R4, R4, #0x10\n\ - ADDS R0, R4, #0\n\ - MOVS R1, #0x3C\n\ - BL __umodsi3\n\ - ADDS R5, R0, #0\n\ - LSLS R5, R5, #0x10\n\ - LSRS R5, R5, #0x10\n\ - ADDS R0, R4, #0\n\ - MOVS R1, #0x3C\n\ - BL __udivsi3\n\ - ADDS R1, R0, #0\n\ - LSLS R1, R1, #0x10\n\ - LSRS R1, R1, #0x10\n\ - MOV R0, R8\n\ - MOVS R2, #2\n\ - MOVS R3, #2\n\ - BL ConvertIntToDecimalStringN\n\ - LDR R0, [SP,#0x30]\n\ - ADDS R1, R5, #0\n\ - MOVS R2, #2\n\ - MOVS R3, #2\n\ - BL ConvertIntToDecimalStringN\n\ - LDR R0, [R6]\n\ - ADDS R7, R0, #0\n\ - ADDS R7, #0xAB\n\ - LDR R1, dword_8056450\n\ - ADDS R0, R7, #0\n\ - BL StringCopy\n\ - ADDS R7, R0, #0\n\ - MOV R1, R8\n\ - MOVS R2, #0x63\n\ - MOVS R3, #1\n\ - BL sub_8072C74\n\ - ADDS R7, R0, #0\n\ - LDR R1, dword_8056454\n\ - BL StringAppend\n\ - ADDS R7, R0, #0\n\ - LDR R1, [SP,#0x30]\n\ - MOVS R2, #0x88\n\ - MOVS R3, #1\n\ - BL sub_8072C74\n\ - ADDS R7, R0, #0\n\ - LDR R1, dword_8056458\n\ - BL StringCopy\n\ - LDR R0, [R6]\n\ - ADDS R0, #0xAB\n\ - MOVS R1, #5\n\ - MOVS R2, #0xF\n\ - BL Menu_PrintText\n\ - LDR R1, [R6]\n\ - MOVS R0, #0x98\n\ - LSLS R0, R0, #1\n\ - ADDS R2, R1, R0\n\ - MOVS R0, #0\n\ - STR R0, [R2]\n\ - B loc_8056520\n\ -@ ---------------------------------------------------------------------------\n\ -dword_805642C: .4byte gOtherText_ResultsOfBlending\n\ -off_8056430: .4byte gBerryBlenderData\n\ -off_8056434: .4byte gLinkPlayers\n\ -dword_8056438: .4byte gOtherText_Berry\n\ -off_805643C: .4byte gLinkPlayers+0x8\n\ -dword_8056440: .4byte gUnknown_082165E9\n\ -dword_8056444: .4byte gUnknown_082165EE\n\ -dword_8056448: .4byte gOtherText_MaxSpeed\n\ -off_805644C: .4byte gOtherText_RPM\n\ -dword_8056450: .4byte gOtherText_RequiredTime\n\ -dword_8056454: .4byte gOtherText_Min\n\ -dword_8056458: .4byte gOtherText_Sec\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_805645C: @ jumptable 0805619A case 4\n\ - LDR R0, off_805646C\n\ - LDRH R1, [R0,#0x2E]\n\ - MOVS R0, #1\n\ - ANDS R0, R1\n\ - CMP R0, #0\n\ - BEQ def_805619A @ jumptable 0805619A default case\n\ - LDR R1, [R2]\n\ - B loc_8056520\n\ -@ ---------------------------------------------------------------------------\n\ -off_805646C: .4byte gMain\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_8056470: @ jumptable 0805619A case 5\n\ - BL Menu_EraseScreen\n\ - MOVS R0, #0\n\ - MOVS R1, #0xE\n\ - MOVS R2, #0x1D\n\ - MOVS R3, #0x13\n\ - BL Menu_DrawStdWindowFrame\n\ - MOVS R6, #0\n\ - ADD R1, SP, #0xC\n\ - MOV R8, R1\n\ - ADD R5, SP, #0x28\n\ - LDR R0, off_8056528\n\ - LDR R0, [R0]\n\ - ADDS R3, R0, #0\n\ - ADDS R3, #0x80\n\ - ADD R2, SP, #0x20\n\ -\n\ -loc_8056492:\n\ - LSLS R1, R6, #1\n\ - ADDS R0, R3, R1\n\ - LDRH R0, [R0]\n\ - CMP R0, #0\n\ - BEQ loc_80564A2\n\ - ADDS R1, R2, R1\n\ - SUBS R0, #0x85\n\ - STRH R0, [R1]\n\ -\n\ -loc_80564A2:\n\ - ADDS R0, R6, #1\n\ - LSLS R0, R0, #0x10\n\ - LSRS R6, R0, #0x10\n\ - CMP R6, #3\n\ - BLS loc_8056492\n\ - BL sub_8050760\n\ - LDR R4, off_8056528\n\ - LDR R3, [R4]\n\ - MOVS R2, #0xBE\n\ - LSLS R2, R2, #1\n\ - ADDS R0, R3, R2\n\ - ADDS R1, R3, #0\n\ - ADDS R1, #0x88\n\ - LDRB R2, [R1]\n\ - SUBS R1, #0x2E\n\ - LDRH R1, [R1]\n\ - STR R1, [SP]\n\ - ADDS R1, R5, #0\n\ - ADD R3, SP, #4\n\ - BL Blender_CalculatePokeblock\n\ - LDR R1, [R4]\n\ - ADDS R1, #0xAB\n\ - ADDS R0, R5, #0\n\ - BL Blender_PrintMadePokeblockString\n\ - LDR R0, off_805652C\n\ - MOVS R1, #6\n\ - BL CreateTask\n\ - BL sub_8007E40\n\ - ADDS R1, R0, #0\n\ - MOV R0, R8\n\ - MOVS R2, #0\n\ - MOVS R3, #4\n\ - BL ConvertIntToHexStringN\n\ - LDR R1, dword_8056530\n\ - MOV R0, R8\n\ - BL StringAppend\n\ - LDR R0, [R4]\n\ - ADDS R0, #0xAB\n\ - MOV R1, R8\n\ - BL StringAppend\n\ - LDR R0, [R4]\n\ - ADDS R0, #0xAB\n\ - MOVS R1, #1\n\ - MOVS R2, #0xF\n\ - BL MenuPrintMessage\n\ - LDR R0, off_8056534\n\ - LDRH R0, [R0]\n\ - MOVS R1, #1\n\ - BL RemoveBagItem\n\ - ADDS R0, R5, #0\n\ - BL sub_810CA34\n\ - LDR R1, [R4]\n\ -\n\ -loc_8056520:\n\ - LDRB R0, [R1]\n\ - ADDS R0, #1\n\ - STRB R0, [R1]\n\ - B def_805619A @ jumptable 0805619A default case\n\ -@ ---------------------------------------------------------------------------\n\ -off_8056528: .4byte gBerryBlenderData\n\ -off_805652C: .4byte sub_8052BD0+1\n\ -dword_8056530: .4byte gUnknown_08216249\n\ -off_8056534: .4byte gSpecialVar_ItemId\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -loc_8056538: @ jumptable 0805619A case 6\n\ - BL Menu_UpdateWindowText\n\ - LSLS R0, R0, #0x18\n\ - CMP R0, #0\n\ - BEQ def_805619A @ jumptable 0805619A default case\n\ - BL Blender_TrySettingRecord\n\ - MOVS R0, #1\n\ - B loc_805654C\n\ -@ ---------------------------------------------------------------------------\n\ -\n\ -def_805619A: @ jumptable 0805619A default case\n\ - MOVS R0, #0\n\ -\n\ -loc_805654C:\n\ - ADD SP, SP, #0x34\n\ - POP {R3-R5}\n\ - MOV R8, R3\n\ - MOV R9, R4\n\ - MOV R10, R5\n\ - POP {R4-R7}\n\ - POP {R1}\n\ - BX R1\n\ - .syntax divided\n"); -} -#else bool8 Blender_PrintBlendingResults(void) { u16 i; @@ -3882,6 +3395,11 @@ bool8 Blender_PrintBlendingResults(void) Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM); Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar); CreateTask(sub_8052BD0, 6); +#if DEBUG + ConvertIntToHexStringN(text[0], sub_8007E40(), 0, 4); + StringAppend(text[0], gUnknown_08216249); + StringAppend(gBerryBlenderData->stringVar, text[0]); +#endif MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15); RemoveBagItem(gSpecialVar_ItemId, 1); sub_810CA34(&pokeblock); @@ -3897,7 +3415,6 @@ bool8 Blender_PrintBlendingResults(void) } return FALSE; } -#endif /*static*/ void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst) { -- cgit v1.2.3 From 641d2749b67b6c7cad2054f5c52c990f0dad0121 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 24 Jan 2018 15:32:04 -0600 Subject: decompile debug_sub_8010818 and debug_sub_80108B8 --- src/battle/battle_2.c | 429 ++++++++++++++++---------------------------------- 1 file changed, 137 insertions(+), 292 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 64b64ecea..f9756db29 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1,5 +1,11 @@ #include "global.h" #include "constants/abilities.h" +#include "constants/battle_move_effects.h" +#include "constants/hold_effects.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/songs.h" +#include "constants/species.h" #include "battle.h" #include "battle_ai.h" #include "battle_interface.h" @@ -7,6 +13,7 @@ #include "battle_setup.h" #include "battle_util.h" #include "data2.h" +#include "decompress.h" #include "event_data.h" #include "evolution_scene.h" #include "item.h" @@ -25,9 +32,7 @@ #include "rom3.h" #include "rom_8077ABC.h" #include "rom_8094928.h" -#include "constants/songs.h" #include "sound.h" -#include "constants/species.h" #include "sprite.h" #include "string_util.h" #include "task.h" @@ -37,10 +42,6 @@ #include "tv.h" #include "scanline_effect.h" #include "util.h" -#include "constants/battle_move_effects.h" -#include "constants/items.h" -#include "constants/hold_effects.h" -#include "constants/moves.h" #include "ewram.h" struct UnknownStruct7 @@ -1362,12 +1363,55 @@ void c2_081284E0(void) // A LOT of debug code! #if DEBUG -extern u8 gBattleBuffersTransferData[]; - void debug_sub_8010818(void); void debug_sub_80108B8(void); +void debug_sub_8010CAC(void); +void debug_sub_801174C(void); +void debug_sub_8011D40(void); void debug_sub_8011EA0(u8); void debug_sub_8012294(void); +void debug_sub_80123D8(u8); +void debug_sub_8012540(void); +void debug_sub_80125A0(void); +void debug_nullsub_3(void); + +struct UnknownStruct2023A76 +{ + u16 unk0; + u16 unk2[(0x44-2)/2]; + s16 unk44; + u16 unk46; + u16 unk48[1]; +}; + +struct UnknownStruct2023B02 +{ + u16 unk0[4][4]; + u8 filler20[0x10]; + u16 unk30[4][4]; +}; + +struct UnknownStruct821F424 +{ + u8 filler0[0x12]; + u16 unk12[1][5]; // unknown length +}; + +extern struct UnknownStruct2023A76 gUnknown_Debug_2023A76; +extern struct UnknownStruct2023B02 gUnknown_Debug_2023B02; +extern u8 gUnknown_Debug_03004360; +extern struct Window gUnknown_Debug_03004370; +extern u8 gUnknown_Debug_030043A0; +extern u8 gUnknown_Debug_030043A4; +extern u8 gUnknown_Debug_030043A8; +extern u8 gBattleBuffersTransferData[]; + +extern const struct UnknownStruct821F424 gUnknown_Debug_821F424; +extern const u16 gUnknown_Debug_821F56C[][5]; + +extern const u8 gUnusedOldCharmap_Gfx_lz[]; +extern const u8 gUnusedOldCharmap_Tilemap_lz[]; +extern const u8 gUnusedOldCharmap_Pal_lz[]; void debug_sub_8010800(void) { @@ -1376,283 +1420,84 @@ void debug_sub_8010800(void) *(u32 *)(gBattleBuffersTransferData + 0x100) = 0; } -__attribute__((naked)) -void debug_sub_8010818() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " ldr r1, ._501\n" - " ldr r0, ._501 + 4\n" - " strh r0, [r1]\n" - " add r2, r1, #0\n" - " add r2, r2, #0x46\n" - " strh r0, [r2]\n" - " ldr r0, ._501 + 8\n" - " add r4, r1, #0\n" - " add r4, r4, #0x48\n" - " add r3, r0, #0\n" - " add r3, r3, #0x12\n" - " add r2, r1, #2\n" - " mov r1, #0x1d\n" - "._498:\n" - " ldrh r0, [r3]\n" - " strh r0, [r2]\n" - " strh r0, [r4]\n" - " add r4, r4, #0x2\n" - " add r3, r3, #0xa\n" - " add r2, r2, #0x2\n" - " sub r1, r1, #0x1\n" - " cmp r1, #0\n" - " bge ._498 @cond_branch\n" - " mov r1, #0x0\n" - " ldr r4, ._501 + 12\n" - " ldr r7, ._501 + 16\n" - " ldr r6, ._501 + 20\n" - " mov r0, #0x30\n" - " add r0, r0, r7\n" - " mov ip, r0\n" - "._500:\n" - " mov r0, #0x0\n" - " strb r0, [r4]\n" - " add r5, r1, #1\n" - " lsl r3, r1, #0x3\n" - "._499:\n" - " ldrb r2, [r4]\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r3\n" - " add r1, r1, r7\n" - " lsl r0, r2, #0x2\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r6\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " ldrb r2, [r4]\n" - " lsl r1, r2, #0x1\n" - " add r1, r1, r3\n" - " add r1, r1, ip\n" - " lsl r0, r2, #0x2\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r6\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x3\n" - " bls ._499 @cond_branch\n" - " add r1, r5, #0\n" - " cmp r1, #0x5\n" - " ble ._500 @cond_branch\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._502:\n" - " .align 2, 0\n" - "._501:\n" - " .word gUnknown_Debug_2023A76\n" - " .word 0x115\n" - " .word gUnknown_Debug_821F424\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_2023B02\n" - " .word gUnknown_Debug_821F56C\n" - "\n" - ); -} -__attribute__((naked)) -void debug_sub_80108B8() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " bl m4aSoundVSyncOff\n" - " mov r0, #0x0\n" - " bl SetHBlankCallback\n" - " mov r0, #0x0\n" - " bl SetVBlankCallback\n" - " mov r3, #0x0\n" - " str r3, [sp]\n" - " ldr r2, ._507\n" - " mov r0, sp\n" - " str r0, [r2]\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x13\n" - " str r1, [r2, #0x4]\n" - " ldr r0, ._507 + 4\n" - " str r0, [r2, #0x8]\n" - " ldr r0, [r2, #0x8]\n" - " ldr r2, ._507 + 8\n" - " mov r0, #0x1\n" - " strh r0, [r2]\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " mov r4, #0x9a\n" - " lsl r4, r4, #0x5\n" - " add r0, r4, #0\n" - " strh r0, [r2]\n" - " ldr r0, ._507 + 12\n" - " mov r5, #0x0\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 16\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 20\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 24\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 28\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 32\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 36\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 40\n" - " strh r3, [r0]\n" - " add r2, r2, #0x8\n" - " ldr r4, ._507 + 44\n" - " add r0, r4, #0\n" - " strh r0, [r2]\n" - " add r2, r2, #0x2\n" - " ldr r4, ._507 + 48\n" - " add r0, r4, #0\n" - " strh r0, [r2]\n" - " ldr r0, ._507 + 52\n" - " strh r3, [r0]\n" - " add r0, r0, #0x4\n" - " strh r3, [r0]\n" - " ldr r0, ._507 + 56\n" - " bl LZDecompressVram\n" - " ldr r0, ._507 + 60\n" - " ldr r1, ._507 + 64\n" - " bl LZDecompressWram\n" - " ldr r4, ._507 + 68\n" - " mov r1, #0xa0\n" - " lsl r1, r1, #0x13\n" - " add r0, r4, #0\n" - " bl LZDecompressVram\n" - " ldr r1, ._507 + 72\n" - " add r0, r4, #0\n" - " bl LZDecompressVram\n" - " bl m4aSoundVSyncOn\n" - " ldr r0, ._507 + 76\n" - " bl SetVBlankCallback\n" - " ldr r0, ._507 + 80\n" - " bl SetMainCallback2\n" - " bl ResetTasks\n" - " bl ResetSpriteData\n" - " bl ScanlineEffect_Stop\n" - " ldr r4, ._507 + 84\n" - " add r0, r4, #0\n" - " bl Text_LoadWindowTemplate\n" - " ldr r0, ._507 + 88\n" - " add r1, r4, #0\n" - " bl Text_InitWindowWithTemplate\n" - " ldr r0, ._507 + 92\n" - " strb r5, [r0]\n" - " ldr r0, ._507 + 96\n" - " strb r5, [r0]\n" - " ldr r0, ._507 + 100\n" - " strb r5, [r0]\n" - " mov r4, #0x0\n" - "._503:\n" - " lsl r0, r4, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x1e\n" - " ble ._503 @cond_branch\n" - " ldr r1, ._507 + 104\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " add r4, r1, #0\n" - "._504:\n" - " bl debug_sub_8012294\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x3\n" - " bls ._504 @cond_branch\n" - " ldr r0, ._507 + 100\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - " bl debug_sub_8012540\n" - " bl debug_nullsub_3\n" - " ldr r1, ._507 + 104\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " bl debug_sub_80125A0\n" - " ldr r0, ._507 + 108\n" - " add r0, r0, #0x44\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x8\n" - " bne ._505 @cond_branch\n" - " bl debug_sub_801174C\n" - " b ._506\n" - "._508:\n" - " .align 2, 0\n" - "._507:\n" - " .word 0x40000d4\n" - " .word 0x85006000\n" - " .word 0x4000200\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - " .word 0x1f09\n" - " .word 0x4801\n" - " .word 0x4000050\n" - " .word gMonShinyPalette_CircledQuestionMark+0x18\n" - " .word gMonShinyPalette_CircledQuestionMark+0x834\n" - " .word gSharedMem\n" - " .word gMonShinyPalette_CircledQuestionMark+0xa8c\n" - " .word 0x50001e0\n" - " .word debug_sub_8011D40+1\n" - " .word debug_sub_8010CAC+1\n" - " .word gWindowTemplate_81E6C3C\n" - " .word gUnknown_Debug_03004370\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_2023A76\n" - "._505:\n" - " ldr r0, ._510\n" - " mov r1, #0x0\n" - " mov r4, #0x7\n" - " ldr r2, ._510 + 4\n" - " add r0, r0, r2\n" - "._509:\n" - " strb r1, [r0]\n" - " sub r0, r0, #0x1\n" - " sub r4, r4, #0x1\n" - " cmp r4, #0\n" - " bge ._509 @cond_branch\n" - "._506:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._511:\n" - " .align 2, 0\n" - "._510:\n" - " .word gSharedMem\n" - " .word 0x160bb\n" - "\n" - ); +void debug_sub_8010818(void) +{ + s32 i; + + gUnknown_Debug_2023A76.unk0 = 0x115; + gUnknown_Debug_2023A76.unk46 = 0x115; + for (i = 0; i < 30; i++) + { + gUnknown_Debug_2023A76.unk2[i] = gUnknown_Debug_821F424.unk12[i][0]; + gUnknown_Debug_2023A76.unk48[i] = gUnknown_Debug_821F424.unk12[i][0]; + } + + for (i = 0; i < 6; i++) + { + for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++) + { + gUnknown_Debug_2023B02.unk0[i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0]; + gUnknown_Debug_2023B02.unk30[i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0]; + } + } +} + +void debug_sub_80108B8(void) +{ + s32 i; + + m4aSoundVSyncOff(); + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE); + REG_IE = 1; + REG_DISPCNT = 0x1340; + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + REG_BG0CNT = 0x1F09; + REG_BG1CNT = 0x4801; + REG_BLDCNT = 0; + REG_BLDY = 0; + LZDecompressVram(gUnusedOldCharmap_Gfx_lz, (void *)VRAM); + LZDecompressWram(gUnusedOldCharmap_Tilemap_lz, gSharedMem); + LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)PLTT); + LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)(PLTT + 0x1E0)); + m4aSoundVSyncOn(); + SetVBlankCallback(debug_sub_8011D40); + SetMainCallback2(debug_sub_8010CAC); + ResetTasks(); + ResetSpriteData(); + ScanlineEffect_Stop(); + Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); + Text_InitWindowWithTemplate(&gUnknown_Debug_03004370, &gWindowTemplate_81E6C3C); + gUnknown_Debug_03004360 = 0; + gUnknown_Debug_030043A0 = 0; + gUnknown_Debug_030043A4 = 0; + for (i = 0; i < 31; i++) + debug_sub_8011EA0(i); + for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++) + debug_sub_8012294(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + debug_sub_8012540(); + debug_nullsub_3(); + gUnknown_Debug_030043A8 = 0; + debug_sub_80125A0(); + if (gUnknown_Debug_2023A76.unk44 == 8) + { + debug_sub_801174C(); + } + else + { + for (i = 0; i < 8; i++) + gSharedMem[0x160B4 + i] = 0; + } } __attribute__((naked)) @@ -4128,19 +3973,19 @@ void debug_nullsub_45() void debug_sub_8011DD4(void) { REG_BG0CNT = 0x9803; - + REG_BG0HOFS = gBattle_BG0_X; REG_BG0VOFS = gBattle_BG0_Y; - + REG_BG1HOFS = gBattle_BG1_X; REG_BG1VOFS = gBattle_BG1_Y; - + REG_BG2HOFS = gBattle_BG2_X; REG_BG2VOFS = gBattle_BG2_Y; - + REG_BG3HOFS = gBattle_BG3_X; REG_BG3VOFS = gBattle_BG3_Y; - + LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -4150,7 +3995,7 @@ void debug_sub_8011DD4(void) void debug_sub_8011E5C(void) { s32 i; - + for (i = 0; i < 31; i++) debug_sub_8011EA0(i); } @@ -4160,7 +4005,7 @@ extern u8 gUnknown_Debug_030043A8; void debug_sub_8011E74(void) { u8 r5 = gUnknown_Debug_030043A8; - + for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++) debug_sub_8012294(); @@ -4777,7 +4622,7 @@ void debug_sub_8012294() } __attribute__((naked)) -void debug_sub_80123D8() +void debug_sub_80123D8(u8 a) { asm( " push {r4, r5, r6, r7, lr}\n" -- cgit v1.2.3 From c7cd31f56ced799f6bb75ef8357b6d623a0b0de8 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 24 Jan 2018 18:17:43 -0600 Subject: integrate debug AbilityBattleEffects --- src/battle/battle_util.c | 4357 ++-------------------------------------------- 1 file changed, 179 insertions(+), 4178 deletions(-) (limited to 'src') diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index 620e0690a..faa395a97 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -22,6 +22,8 @@ #include "constants/species.h" #include "constants/weather.h" +extern u8 gUnknown_02023A14_50; + extern const u8* gBattlescriptCurrInstr; extern u8 gActiveBank; extern u8 gBattleBufferB[4][0x200]; @@ -1683,4066 +1685,6 @@ u8 CastformDataTypeChange(u8 bank) return formChange; } -#if DEBUG -__attribute__((naked)) -u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - add sp, sp, #0xffffffd8\n\ - ldr r4, [sp, #0x48]\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - str r0, [sp, #0x4]\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - mov sl, r1\n\ - lsl r2, r2, #0x18\n\ - lsr r6, r2, #0x18\n\ - lsl r3, r3, #0x18\n\ - lsr r3, r3, #0x18\n\ - mov r8, r3\n\ - lsl r4, r4, #0x10\n\ - lsr r4, r4, #0x10\n\ - mov r0, #0x0\n\ - mov r9, r0\n\ - ldr r5, ._718\n\ - ldr r1, ._718 + 4\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._715 @cond_branch\n\ - mov r1, sl\n\ - strb r1, [r5]\n\ -._715:\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._716 @cond_branch\n\ - ldr r1, ._718 + 8\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r1, r1, r0\n\ - ldr r0, ._718 + 12\n\ - b ._717\n\ -._719:\n\ - .align 2, 0\n\ -._718:\n\ - .word gBankAttacker\n\ - .word gNoOfAllBanks\n\ - .word gBattlePartyID\n\ - .word gPlayerParty\n\ -._716:\n\ - ldr r1, ._723\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r1, r1, r0\n\ - ldr r0, ._723 + 4\n\ -._717:\n\ - add r7, r1, r0\n\ - ldr r5, ._723 + 8\n\ - ldr r1, ._723 + 12\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._720 @cond_branch\n\ - mov r2, sl\n\ - strb r2, [r5]\n\ -._720:\n\ - ldrb r0, [r5]\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._721 @cond_branch\n\ - ldr r1, ._723\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r1, r1, r0\n\ - ldr r0, ._723 + 16\n\ - b ._722\n\ -._724:\n\ - .align 2, 0\n\ -._723:\n\ - .word gBattlePartyID\n\ - .word gEnemyParty\n\ - .word gBankTarget\n\ - .word gNoOfAllBanks\n\ - .word gPlayerParty\n\ -._721:\n\ - ldr r1, ._729\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - mov r0, #0x64\n\ - mul r1, r1, r0\n\ - ldr r0, ._729 + 4\n\ -._722:\n\ - add r5, r1, r0\n\ - add r0, r7, #0\n\ - mov r1, #0xb\n\ - bl GetMonData\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - str r0, [sp, #0x8]\n\ - add r0, r7, #0\n\ - mov r1, #0x0\n\ - bl GetMonData\n\ - str r0, [sp, #0x10]\n\ - add r0, r5, #0\n\ - mov r1, #0xb\n\ - bl GetMonData\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - str r0, [sp, #0xc]\n\ - add r0, r5, #0\n\ - mov r1, #0x0\n\ - bl GetMonData\n\ - str r0, [sp, #0x14]\n\ - ldr r0, ._729 + 8\n\ - ldrh r1, [r0]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._725 @cond_branch\n\ - bl ._1540\n\ -._725:\n\ - mov r3, r8\n\ - cmp r3, #0\n\ - beq ._727 @cond_branch\n\ - ldr r0, ._729 + 12\n\ - strb r3, [r0]\n\ - mov r8, r0\n\ - b ._728\n\ -._730:\n\ - .align 2, 0\n\ -._729:\n\ - .word gBattlePartyID\n\ - .word gEnemyParty\n\ - .word gBattleTypeFlags\n\ - .word gLastUsedAbility\n\ -._727:\n\ - ldr r2, ._733\n\ - ldr r1, ._733 + 4\n\ - mov r0, #0x58\n\ - mov r5, sl\n\ - mul r5, r5, r0\n\ - add r0, r5, #0\n\ - add r0, r0, r1\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - strb r0, [r2]\n\ - mov r8, r2\n\ -._728:\n\ - cmp r4, #0\n\ - beq ._731 @cond_branch\n\ - add r3, r4, #0\n\ - b ._732\n\ -._734:\n\ - .align 2, 0\n\ -._733:\n\ - .word gLastUsedAbility\n\ - .word gBattleMons\n\ -._731:\n\ - ldr r0, ._737\n\ - ldrh r3, [r0]\n\ -._732:\n\ - ldr r1, ._737 + 4\n\ - ldr r2, ._737 + 8\n\ - add r0, r1, r2\n\ - ldrb r0, [r0]\n\ - add r7, r1, #0\n\ - cmp r0, #0\n\ - beq ._735 @cond_branch\n\ - mov r4, #0x3f\n\ - and r4, r4, r0\n\ - b ._736\n\ -._738:\n\ - .align 2, 0\n\ -._737:\n\ - .word gCurrentMove\n\ - .word +0x2000000\n\ - .word 0x1601c\n\ -._735:\n\ - ldr r1, ._741\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r4, [r0, #0x2]\n\ -._736:\n\ - ldr r5, [sp, #0x4]\n\ - cmp r5, #0x13\n\ - bls ._739 @cond_branch\n\ - bl ._1534\n\ -._739:\n\ - lsl r0, r5, #0x2\n\ - ldr r1, ._741 + 4\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._742:\n\ - .align 2, 0\n\ -._741:\n\ - .word gBattleMoves\n\ - .word ._743\n\ -._743:\n\ - .word ._744\n\ - .word ._745\n\ - .word ._746\n\ - .word ._747\n\ - .word ._748\n\ - .word ._749\n\ - .word ._750\n\ - .word ._751\n\ - .word ._752\n\ - .word ._753\n\ - .word ._754\n\ - .word ._755\n\ - .word ._756\n\ - .word ._757\n\ - .word ._758\n\ - .word ._759\n\ - .word ._760\n\ - .word ._761\n\ - .word ._762\n\ - .word ._763\n\ -._744:\n\ - ldr r2, ._774\n\ - ldr r0, ._774 + 4\n\ - ldrb r1, [r2]\n\ - add r5, r0, #0\n\ - ldrb r0, [r5]\n\ - cmp r1, r0\n\ - bcc ._764 @cond_branch\n\ - mov r1, sl\n\ - strb r1, [r2]\n\ -._764:\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - cmp r0, #0x2d\n\ - bne ._765 @cond_branch\n\ - b ._766\n\ -._765:\n\ - cmp r0, #0x2d\n\ - bgt ._767 @cond_branch\n\ - cmp r0, #0xd\n\ - bne ._768 @cond_branch\n\ - b ._788\n\ -._768:\n\ - cmp r0, #0xd\n\ - bgt ._770 @cond_branch\n\ - cmp r0, #0x2\n\ - bne ._771 @cond_branch\n\ - b ._772\n\ -._771:\n\ - bl ._1534\n\ -._775:\n\ - .align 2, 0\n\ -._774:\n\ - .word gBankAttacker\n\ - .word gNoOfAllBanks\n\ -._770:\n\ - cmp r0, #0x16\n\ - bne ._776 @cond_branch\n\ - b ._777\n\ -._776:\n\ - cmp r0, #0x24\n\ - bne ._778 @cond_branch\n\ - b ._779\n\ -._778:\n\ - bl ._1534\n\ -._767:\n\ - cmp r0, #0x46\n\ - bne ._781 @cond_branch\n\ - b ._782\n\ -._781:\n\ - cmp r0, #0x46\n\ - bgt ._783 @cond_branch\n\ - cmp r0, #0x3b\n\ - bne ._784 @cond_branch\n\ - b ._785\n\ -._784:\n\ - bl ._1534\n\ -._783:\n\ - cmp r0, #0x4d\n\ - bne ._787 @cond_branch\n\ - b ._788\n\ -._787:\n\ - cmp r0, #0xff\n\ - beq ._789 @cond_branch\n\ - bl ._1534\n\ -._789:\n\ - bl GetCurrentWeather\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - sub r0, r0, #0x3\n\ - cmp r0, #0xa\n\ - bhi ._814 @cond_branch\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._793\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._794:\n\ - .align 2, 0\n\ -._793:\n\ - .word ._792\n\ -._792:\n\ - .word ._805\n\ - .word ._814\n\ - .word ._805\n\ - .word ._814\n\ - .word ._814\n\ - .word ._800\n\ - .word ._814\n\ - .word ._814\n\ - .word ._814\n\ - .word ._804\n\ - .word ._805\n\ -._805:\n\ - ldr r2, ._808\n\ - ldrh r1, [r2]\n\ - mov r0, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._814 @cond_branch\n\ - mov r0, #0x5\n\ - strh r0, [r2]\n\ - ldr r0, ._808 + 4\n\ - ldr r3, ._808 + 8\n\ - add r2, r0, r3\n\ - mov r1, #0xa\n\ - b ._811\n\ -._809:\n\ - .align 2, 0\n\ -._808:\n\ - .word gBattleWeather\n\ - .word +0x2000000\n\ - .word 0x160a4\n\ -._800:\n\ - ldr r3, ._812\n\ - ldrh r1, [r3]\n\ - mov r2, #0x18\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._814 @cond_branch\n\ - strh r2, [r3]\n\ - ldr r0, ._812 + 4\n\ - ldr r3, ._812 + 8\n\ - add r2, r0, r3\n\ - mov r1, #0xc\n\ - b ._811\n\ -._813:\n\ - .align 2, 0\n\ -._812:\n\ - .word gBattleWeather\n\ - .word +0x2000000\n\ - .word 0x160a4\n\ -._804:\n\ - ldr r3, ._818\n\ - ldrh r1, [r3]\n\ - mov r2, #0x60\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._814 @cond_branch\n\ - strh r2, [r3]\n\ - ldr r0, ._818 + 4\n\ - ldr r3, ._818 + 8\n\ - add r2, r0, r3\n\ - mov r1, #0xb\n\ -._811:\n\ - strb r1, [r2]\n\ - ldr r5, ._818 + 12\n\ - add r0, r0, r5\n\ - mov r1, sl\n\ - strb r1, [r0]\n\ - mov r0, r9\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._814:\n\ - mov r2, r9\n\ - cmp r2, #0\n\ - bne ._815 @cond_branch\n\ - bl ._1540\n\ -._815:\n\ - bl GetCurrentWeather\n\ - ldr r1, ._818 + 16\n\ - strb r0, [r1, #0x5]\n\ - ldr r0, ._818 + 20\n\ - bl BattleScriptPushCursorAndCallback\n\ - bl ._1534\n\ -._819:\n\ - .align 2, 0\n\ -._818:\n\ - .word gBattleWeather\n\ - .word +0x2000000\n\ - .word 0x160a4\n\ - .word 0x16003\n\ - .word gBattleCommunication\n\ - .word BattleScript_OverworldWeatherStarts\n\ -._772:\n\ - ldr r2, ._823\n\ - ldrh r1, [r2]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._820 @cond_branch\n\ - bl ._1534\n\ -._820:\n\ - mov r0, #0x5\n\ - strh r0, [r2]\n\ - ldr r0, ._823 + 4\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, ._823 + 8\n\ - ldr r3, ._823 + 12\n\ - add r0, r0, r3\n\ - mov r5, sl\n\ - strb r5, [r0]\n\ - bl ._1392\n\ -._824:\n\ - .align 2, 0\n\ -._823:\n\ - .word gBattleWeather\n\ - .word BattleScript_DrizzleActivates\n\ - .word +0x2000000\n\ - .word 0x16003\n\ -._766:\n\ - ldr r2, ._828\n\ - ldrh r1, [r2]\n\ - mov r0, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._825 @cond_branch\n\ - bl ._1534\n\ -._825:\n\ - mov r0, #0x18\n\ - strh r0, [r2]\n\ - ldr r0, ._828 + 4\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, ._828 + 8\n\ - ldr r1, ._828 + 12\n\ - add r0, r0, r1\n\ - mov r2, sl\n\ - strb r2, [r0]\n\ - bl ._1392\n\ -._829:\n\ - .align 2, 0\n\ -._828:\n\ - .word gBattleWeather\n\ - .word BattleScript_SandstreamActivates\n\ - .word +0x2000000\n\ - .word 0x16003\n\ -._782:\n\ - ldr r2, ._833\n\ - ldrh r1, [r2]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._830 @cond_branch\n\ - bl ._1534\n\ -._830:\n\ - mov r0, #0x60\n\ - strh r0, [r2]\n\ - ldr r0, ._833 + 4\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, ._833 + 8\n\ - ldr r3, ._833 + 12\n\ - add r0, r0, r3\n\ - mov r5, sl\n\ - strb r5, [r0]\n\ - bl ._1392\n\ -._834:\n\ - .align 2, 0\n\ -._833:\n\ - .word gBattleWeather\n\ - .word BattleScript_DroughtActivates\n\ - .word +0x2000000\n\ - .word 0x16003\n\ -._777:\n\ - ldr r0, ._838\n\ - mov r1, sl\n\ - lsl r2, r1, #0x2\n\ - add r1, r2, r1\n\ - lsl r1, r1, #0x2\n\ - add r3, r1, r0\n\ - ldrb r0, [r3]\n\ - lsl r0, r0, #0x1c\n\ - cmp r0, #0\n\ - bge ._835 @cond_branch\n\ - bl ._1534\n\ -._835:\n\ - ldr r1, ._838 + 4\n\ - add r1, r2, r1\n\ - ldr r0, [r1]\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0xc\n\ - orr r0, r0, r2\n\ - str r0, [r1]\n\ - ldrb r0, [r3]\n\ - mov r1, #0x8\n\ - b ._837\n\ -._839:\n\ - .align 2, 0\n\ -._838:\n\ - .word gSpecialStatuses\n\ - .word gStatuses3\n\ -._785:\n\ - mov r0, sl\n\ - bl CastformDataTypeChange\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ - cmp r0, #0\n\ - bne ._840 @cond_branch\n\ - bl ._1540\n\ -._840:\n\ - ldr r0, ._843\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, ._843 + 4\n\ - ldr r2, ._843 + 8\n\ - add r1, r0, r2\n\ - mov r3, sl\n\ - strb r3, [r1]\n\ - mov r1, r9\n\ - sub r1, r1, #0x1\n\ - ldr r5, ._843 + 12\n\ - add r0, r0, r5\n\ - strb r1, [r0]\n\ - bl ._1534\n\ -._844:\n\ - .align 2, 0\n\ -._843:\n\ - .word BattleScript_CastformChange\n\ - .word +0x2000000\n\ - .word 0x16003\n\ - .word 0x1609b\n\ -._779:\n\ - ldr r0, ._848\n\ - mov r1, sl\n\ - lsl r2, r1, #0x2\n\ - add r1, r2, r1\n\ - lsl r1, r1, #0x2\n\ - add r3, r1, r0\n\ - ldrb r0, [r3]\n\ - lsl r0, r0, #0x1b\n\ - cmp r0, #0\n\ - bge ._845 @cond_branch\n\ - bl ._1534\n\ -._845:\n\ - ldr r1, ._848 + 4\n\ - add r1, r2, r1\n\ - ldr r0, [r1]\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0xd\n\ - orr r0, r0, r2\n\ - str r0, [r1]\n\ - ldrb r0, [r3]\n\ - mov r1, #0x10\n\ -._837:\n\ - orr r0, r0, r1\n\ - strb r0, [r3]\n\ - bl ._1534\n\ -._849:\n\ - .align 2, 0\n\ -._848:\n\ - .word gSpecialStatuses\n\ - .word gStatuses3\n\ -._788:\n\ - mov r6, #0x0\n\ - ldrb r5, [r5]\n\ - cmp r6, r5\n\ - bcc ._854 @cond_branch\n\ - bl ._1534\n\ -._854:\n\ - add r0, r6, #0\n\ - bl CastformDataTypeChange\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ - cmp r0, #0\n\ - beq ._852 @cond_branch\n\ - bl ._853\n\ -._852:\n\ - add r0, r6, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - ldr r0, ._856\n\ - ldrb r0, [r0]\n\ - cmp r6, r0\n\ - bcc ._854 @cond_branch\n\ - bl ._1534\n\ -._857:\n\ - .align 2, 0\n\ -._856:\n\ - .word gNoOfAllBanks\n\ -._745:\n\ - ldr r2, ._865\n\ - mov r0, #0x58\n\ - mov r1, sl\n\ - mul r1, r1, r0\n\ - add r4, r1, r2\n\ - ldrh r0, [r4, #0x28]\n\ - cmp r0, #0\n\ - bne ._858 @cond_branch\n\ - bl ._1534\n\ -._858:\n\ - ldr r0, ._865 + 4\n\ - mov r3, sl\n\ - strb r3, [r0]\n\ - mov r3, r8\n\ - ldrb r5, [r3]\n\ - cmp r5, #0x2c\n\ - beq ._860 @cond_branch\n\ - cmp r5, #0x2c\n\ - bgt ._861 @cond_branch\n\ - cmp r5, #0x3\n\ - bne ._862 @cond_branch\n\ - b ._863\n\ -._862:\n\ - bl ._1534\n\ -._866:\n\ - .align 2, 0\n\ -._865:\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ -._861:\n\ - cmp r5, #0x36\n\ - bne ._867 @cond_branch\n\ - b ._868\n\ -._867:\n\ - cmp r5, #0x3d\n\ - beq ._869 @cond_branch\n\ - bl ._1534\n\ -._860:\n\ - mov r0, #0x0\n\ - str r0, [sp]\n\ - mov r0, #0x13\n\ - mov r1, #0x0\n\ - mov r2, #0xd\n\ - mov r3, #0x0\n\ - bl AbilityBattleEffects\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._871 @cond_branch\n\ - bl ._1534\n\ -._871:\n\ - str r0, [sp]\n\ - mov r0, #0x13\n\ - mov r1, #0x0\n\ - mov r2, #0x4d\n\ - mov r3, #0x0\n\ - bl AbilityBattleEffects\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._873 @cond_branch\n\ - bl ._1534\n\ -._873:\n\ - ldr r0, ._881\n\ - ldrh r1, [r0]\n\ - mov r0, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._875 @cond_branch\n\ - bl ._1534\n\ -._875:\n\ - ldrh r0, [r4, #0x2c]\n\ - ldrh r1, [r4, #0x28]\n\ - cmp r0, r1\n\ - bhi ._877 @cond_branch\n\ - bl ._1534\n\ -._877:\n\ - mov r2, r8\n\ - strb r5, [r2]\n\ - ldr r0, ._881 + 4\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r1, ._881 + 8\n\ - ldrh r0, [r4, #0x2c]\n\ - lsr r0, r0, #0x4\n\ - str r0, [r1]\n\ - cmp r0, #0\n\ - bne ._879 @cond_branch\n\ - mov r0, #0x1\n\ - str r0, [r1]\n\ -._879:\n\ - ldr r0, [r1]\n\ - neg r0, r0\n\ - str r0, [r1]\n\ - bl ._1392\n\ -._882:\n\ - .align 2, 0\n\ -._881:\n\ - .word gBattleWeather\n\ - .word BattleScript_RainDishActivates\n\ - .word gBattleMoveDamage\n\ -._869:\n\ - add r0, r2, #0\n\ - add r0, r0, #0x4c\n\ - add r5, r1, r0\n\ - ldrb r0, [r5]\n\ - cmp r0, #0\n\ - bne ._883 @cond_branch\n\ - bl ._1534\n\ -._883:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0x3\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - lsr r4, r0, #0x10\n\ - cmp r4, #0\n\ - beq ._885 @cond_branch\n\ - bl ._1534\n\ -._885:\n\ - ldr r0, [r5]\n\ - mov r1, #0x88\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._887 @cond_branch\n\ - ldr r0, ._893\n\ - ldr r1, ._893 + 4\n\ - bl StringCopy\n\ -._887:\n\ - ldr r0, [r5]\n\ - mov r1, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._888 @cond_branch\n\ - ldr r0, ._893\n\ - ldr r1, ._893 + 8\n\ - bl StringCopy\n\ -._888:\n\ - ldr r0, [r5]\n\ - mov r1, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._889 @cond_branch\n\ - ldr r0, ._893\n\ - ldr r1, ._893 + 12\n\ - bl StringCopy\n\ -._889:\n\ - ldr r0, [r5]\n\ - mov r1, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._890 @cond_branch\n\ - ldr r0, ._893\n\ - ldr r1, ._893 + 16\n\ - bl StringCopy\n\ -._890:\n\ - ldr r0, [r5]\n\ - mov r1, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._891 @cond_branch\n\ - ldr r0, ._893\n\ - ldr r1, ._893 + 20\n\ - bl StringCopy\n\ -._891:\n\ - str r4, [r5]\n\ - ldr r0, ._893 + 24\n\ - ldr r4, ._893 + 28\n\ - mov r3, sl\n\ - strb r3, [r4]\n\ - ldr r1, ._893 + 32\n\ - add r0, r0, r1\n\ - strb r3, [r0]\n\ - ldr r0, ._893 + 36\n\ - bl BattleScriptPushCursorAndCallback\n\ - str r5, [sp]\n\ - mov r0, #0x0\n\ - mov r1, #0x28\n\ - mov r2, #0x0\n\ - mov r3, #0x4\n\ - bl EmitSetMonData\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ - bl ._1392\n\ -._894:\n\ - .align 2, 0\n\ -._893:\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_PoisonJpn\n\ - .word gStatusConditionString_SleepJpn\n\ - .word gStatusConditionString_ParalysisJpn\n\ - .word gStatusConditionString_BurnJpn\n\ - .word gStatusConditionString_IceJpn\n\ - .word +0x2000000\n\ - .word gActiveBank\n\ - .word 0x16003\n\ - .word BattleScript_ShedSkinActivates\n\ -._863:\n\ - ldrb r2, [r4, #0x1b]\n\ - mov r0, #0x1b\n\ - ldsb r0, [r4, r0]\n\ - cmp r0, #0xb\n\ - ble ._895 @cond_branch\n\ - bl ._1534\n\ -._895:\n\ - ldr r0, ._900\n\ - mov r3, sl\n\ - lsl r1, r3, #0x3\n\ - sub r1, r1, r3\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x16]\n\ - cmp r0, #0x2\n\ - bne ._897 @cond_branch\n\ - bl ._1534\n\ -._897:\n\ - add r0, r2, #1\n\ - mov r2, #0x0\n\ - strb r0, [r4, #0x1b]\n\ - ldr r5, ._900 + 4\n\ - add r1, r7, r5\n\ - mov r0, #0x11\n\ - strb r0, [r1]\n\ - ldr r1, ._900 + 8\n\ - add r0, r7, r1\n\ - strb r2, [r0]\n\ - ldr r0, ._900 + 12\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r2, ._900 + 16\n\ - add r0, r7, r2\n\ - mov r3, sl\n\ - strb r3, [r0]\n\ - bl ._1392\n\ -._901:\n\ - .align 2, 0\n\ -._900:\n\ - .word gDisableStructs\n\ - .word 0x160a4\n\ - .word 0x160a5\n\ - .word BattleScript_SpeedBoostActivates\n\ - .word 0x16003\n\ -._868:\n\ - ldr r2, ._903\n\ - ldrb r0, [r0]\n\ - lsl r1, r0, #0x3\n\ - sub r1, r1, r0\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r2\n\ - ldrb r3, [r1, #0x18]\n\ - lsl r0, r3, #0x1f\n\ - lsr r0, r0, #0x1f\n\ - mov r2, #0x1\n\ - eor r2, r2, r0\n\ - mov r0, #0x2\n\ - neg r0, r0\n\ - and r0, r0, r3\n\ - orr r0, r0, r2\n\ - strb r0, [r1, #0x18]\n\ - bl ._1534\n\ -._904:\n\ - .align 2, 0\n\ -._903:\n\ - .word gDisableStructs\n\ -._746:\n\ - mov r5, r8\n\ - ldrb r0, [r5]\n\ - cmp r0, #0x2b\n\ - beq ._905 @cond_branch\n\ - bl ._1534\n\ -._905:\n\ - mov r4, #0x0\n\ - ldr r0, ._917\n\ - ldrh r2, [r0]\n\ - ldr r5, ._917 + 4\n\ - add r1, r0, #0\n\ - cmp r2, r5\n\ - bne ._907 @cond_branch\n\ - bl ._1534\n\ -._907:\n\ - cmp r2, r3\n\ - beq ._909 @cond_branch\n\ - add r2, r1, #0\n\ -._912:\n\ - add r2, r2, #0x2\n\ - add r4, r4, #0x1\n\ - ldrh r0, [r2]\n\ - cmp r0, r5\n\ - bne ._910 @cond_branch\n\ - bl ._1534\n\ -._910:\n\ - cmp r0, r3\n\ - bne ._912 @cond_branch\n\ -._909:\n\ - lsl r0, r4, #0x1\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - ldr r0, ._917 + 4\n\ - cmp r1, r0\n\ - bne ._913 @cond_branch\n\ - bl ._1534\n\ -._913:\n\ - ldr r1, ._917 + 8\n\ - ldr r0, ._917 + 12\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r1, r1, #0x50\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x5\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._915 @cond_branch\n\ - ldr r0, ._917 + 16\n\ - ldr r1, [r0]\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x4\n\ - orr r1, r1, r2\n\ - str r1, [r0]\n\ -._915:\n\ - ldr r1, ._917 + 20\n\ - ldr r0, ._917 + 24\n\ - str r0, [r1]\n\ - mov r0, #0x1\n\ - mov r9, r0\n\ - bl ._916\n\ -._918:\n\ - .align 2, 0\n\ -._917:\n\ - .word gSoundMovesTable\n\ - .word 0xffff\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gHitMarker\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_SoundproofProtected\n\ -._747:\n\ - cmp r3, #0\n\ - bne ._919 @cond_branch\n\ - bl ._1534\n\ -._919:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, #0xb\n\ - beq ._921 @cond_branch\n\ - cmp r0, #0xb\n\ - bgt ._922 @cond_branch\n\ - cmp r0, #0xa\n\ - beq ._923 @cond_branch\n\ - b ._956\n\ -._922:\n\ - cmp r0, #0x12\n\ - beq ._925 @cond_branch\n\ - b ._956\n\ -._923:\n\ - cmp r4, #0xd\n\ - beq ._927 @cond_branch\n\ - b ._956\n\ -._927:\n\ - ldr r0, ._933\n\ - lsl r1, r3, #0x1\n\ - add r1, r1, r3\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - cmp r0, #0\n\ - bne ._929 @cond_branch\n\ - b ._956\n\ -._929:\n\ - ldr r1, ._933 + 4\n\ - ldr r0, ._933 + 8\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x4\n\ - add r0, r0, r1\n\ - ldrb r0, [r0, #0x2]\n\ - lsl r0, r0, #0x1c\n\ - cmp r0, #0\n\ - bge ._931 @cond_branch\n\ - ldr r1, ._933 + 12\n\ - ldr r0, ._933 + 16\n\ - b ._932\n\ -._934:\n\ - .align 2, 0\n\ -._933:\n\ - .word gBattleMoves\n\ - .word gProtectStructs\n\ - .word gBankAttacker\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_MoveHPDrain\n\ -._931:\n\ - ldr r1, ._936\n\ - ldr r0, ._936 + 4\n\ -._932:\n\ - str r0, [r1]\n\ - mov r2, #0x1\n\ - b ._935\n\ -._937:\n\ - .align 2, 0\n\ -._936:\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_MoveHPDrain_PPLoss\n\ -._921:\n\ - cmp r4, #0xb\n\ - beq ._938 @cond_branch\n\ - b ._956\n\ -._938:\n\ - ldr r0, ._944\n\ - lsl r1, r3, #0x1\n\ - add r1, r1, r3\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - cmp r0, #0\n\ - bne ._940 @cond_branch\n\ - b ._956\n\ -._940:\n\ - ldr r1, ._944 + 4\n\ - ldr r0, ._944 + 8\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x4\n\ - add r0, r0, r1\n\ - ldrb r0, [r0, #0x2]\n\ - lsl r0, r0, #0x1c\n\ - cmp r0, #0\n\ - bge ._942 @cond_branch\n\ - ldr r1, ._944 + 12\n\ - ldr r0, ._944 + 16\n\ - b ._943\n\ -._945:\n\ - .align 2, 0\n\ -._944:\n\ - .word gBattleMoves\n\ - .word gProtectStructs\n\ - .word gBankAttacker\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_MoveHPDrain\n\ -._942:\n\ - ldr r1, ._947\n\ - ldr r0, ._947 + 4\n\ -._943:\n\ - str r0, [r1]\n\ - mov r3, #0x1\n\ - mov r9, r3\n\ - b ._956\n\ -._948:\n\ - .align 2, 0\n\ -._947:\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_MoveHPDrain_PPLoss\n\ -._925:\n\ - cmp r4, #0xa\n\ - bne ._956 @cond_branch\n\ - ldr r1, ._954\n\ - mov r0, #0x58\n\ - mov r5, sl\n\ - mul r5, r5, r0\n\ - add r0, r5, #0\n\ - add r1, r1, #0x4c\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._956 @cond_branch\n\ - ldr r2, ._954 + 4\n\ - mov r0, sl\n\ - lsl r1, r0, #0x2\n\ - add r0, r1, r2\n\ - ldr r3, [r0]\n\ - mov r4, #0x1\n\ - and r3, r3, r4\n\ - add r5, r1, #0\n\ - cmp r3, #0\n\ - bne ._951 @cond_branch\n\ - ldr r0, ._954 + 8\n\ - strb r3, [r0, #0x5]\n\ - ldr r1, ._954 + 12\n\ - ldr r0, ._954 + 16\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x4\n\ - add r0, r0, r1\n\ - ldrb r0, [r0, #0x2]\n\ - lsl r0, r0, #0x1c\n\ - cmp r0, #0\n\ - bge ._952 @cond_branch\n\ - ldr r1, ._954 + 20\n\ - ldr r0, ._954 + 24\n\ - b ._953\n\ -._955:\n\ - .align 2, 0\n\ -._954:\n\ - .word gBattleMons\n\ - .word +0x2017100\n\ - .word gBattleCommunication\n\ - .word gProtectStructs\n\ - .word gBankAttacker\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_FlashFireBoost\n\ -._952:\n\ - ldr r1, ._957\n\ - ldr r0, ._957 + 4\n\ -._953:\n\ - str r0, [r1]\n\ - add r0, r5, r2\n\ - ldr r1, [r0]\n\ - mov r2, #0x1\n\ - orr r1, r1, r2\n\ - str r1, [r0]\n\ - mov r1, #0x2\n\ - mov r9, r1\n\ - b ._956\n\ -._958:\n\ - .align 2, 0\n\ -._957:\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_FlashFireBoost_PPLoss\n\ -._951:\n\ - ldr r0, ._961\n\ - strb r4, [r0, #0x5]\n\ - ldr r1, ._961 + 4\n\ - ldr r0, ._961 + 8\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x4\n\ - add r0, r0, r1\n\ - ldrb r0, [r0, #0x2]\n\ - lsl r0, r0, #0x1c\n\ - cmp r0, #0\n\ - bge ._959 @cond_branch\n\ - ldr r1, ._961 + 12\n\ - ldr r0, ._961 + 16\n\ - b ._960\n\ -._962:\n\ - .align 2, 0\n\ -._961:\n\ - .word gBattleCommunication\n\ - .word gProtectStructs\n\ - .word gBankAttacker\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_FlashFireBoost\n\ -._959:\n\ - ldr r1, ._968\n\ - ldr r0, ._968 + 4\n\ -._960:\n\ - str r0, [r1]\n\ - mov r2, #0x2\n\ -._935:\n\ - mov r9, r2\n\ -._956:\n\ - mov r3, r9\n\ - cmp r3, #0x1\n\ - beq ._963 @cond_branch\n\ - bl ._1534\n\ -._963:\n\ - ldr r1, ._968 + 8\n\ - mov r0, #0x58\n\ - mov r5, sl\n\ - mul r5, r5, r0\n\ - add r0, r5, #0\n\ - add r1, r0, r1\n\ - ldrh r0, [r1, #0x2c]\n\ - ldrh r2, [r1, #0x28]\n\ - cmp r0, r2\n\ - bne ._965 @cond_branch\n\ - ldr r1, ._968 + 12\n\ - ldr r0, ._968 + 16\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x4\n\ - add r0, r0, r1\n\ - ldrb r0, [r0, #0x2]\n\ - lsl r0, r0, #0x1c\n\ - cmp r0, #0\n\ - bge ._966 @cond_branch\n\ - ldr r1, ._968\n\ - ldr r0, ._968 + 20\n\ - str r0, [r1]\n\ - bl ._1534\n\ -._969:\n\ - .align 2, 0\n\ -._968:\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_FlashFireBoost_PPLoss\n\ - .word gBattleMons\n\ - .word gProtectStructs\n\ - .word gBankAttacker\n\ - .word BattleScript_MoveHPDrain_FullHP\n\ -._966:\n\ - ldr r1, ._971\n\ - ldr r0, ._971 + 4\n\ - str r0, [r1]\n\ - bl ._1534\n\ -._972:\n\ - .align 2, 0\n\ -._971:\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_MoveHPDrain_FullHP_PPLoss\n\ -._965:\n\ - ldr r2, ._975\n\ - ldrh r0, [r1, #0x2c]\n\ - lsr r0, r0, #0x2\n\ - str r0, [r2]\n\ - cmp r0, #0\n\ - bne ._973 @cond_branch\n\ - mov r3, r9\n\ - str r3, [r2]\n\ -._973:\n\ - ldr r0, [r2]\n\ - neg r0, r0\n\ - str r0, [r2]\n\ - bl ._1534\n\ -._976:\n\ - .align 2, 0\n\ -._975:\n\ - .word gBattleMoveDamage\n\ -._748:\n\ - mov r5, r8\n\ - ldrb r0, [r5]\n\ - sub r0, r0, #0x9\n\ - cmp r0, #0x2f\n\ - bls ._977 @cond_branch\n\ - bl ._1534\n\ -._977:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._980\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._981:\n\ - .align 2, 0\n\ -._980:\n\ - .word ._979\n\ -._979:\n\ - .word ._982\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._989\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._997\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1000\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1011\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1022\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1534\n\ - .word ._1029\n\ -._989:\n\ - ldr r0, ._1046\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1030 @cond_branch\n\ - bl ._1534\n\ -._1030:\n\ - cmp r3, #0xa5\n\ - bne ._1032 @cond_branch\n\ - bl ._1534\n\ -._1032:\n\ - ldr r0, ._1046 + 4\n\ - lsl r1, r3, #0x1\n\ - add r1, r1, r3\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - cmp r0, #0\n\ - bne ._1034 @cond_branch\n\ - bl ._1534\n\ -._1034:\n\ - ldr r2, ._1046 + 8\n\ - ldr r0, ._1046 + 12\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1037 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1037 @cond_branch\n\ - bl ._1534\n\ -._1037:\n\ - ldr r1, ._1046 + 16\n\ - mov r0, #0x58\n\ - mov r2, sl\n\ - mul r2, r2, r0\n\ - add r0, r2, #0\n\ - add r1, r0, r1\n\ - add r3, r1, #0\n\ - add r3, r3, #0x21\n\ - ldrb r0, [r3]\n\ - cmp r0, r4\n\ - bne ._1039 @cond_branch\n\ - bl ._1534\n\ -._1039:\n\ - add r2, r1, #0\n\ - add r2, r2, #0x22\n\ - ldrb r0, [r2]\n\ - cmp r0, r4\n\ - bne ._1041 @cond_branch\n\ - bl ._1534\n\ -._1041:\n\ - ldrh r0, [r1, #0x28]\n\ - cmp r0, #0\n\ - bne ._1043 @cond_branch\n\ - bl ._1534\n\ -._1043:\n\ - strb r4, [r3]\n\ - strb r4, [r2]\n\ - ldr r1, ._1046 + 20\n\ - mov r0, #0xfd\n\ - strb r0, [r1]\n\ - mov r0, #0x3\n\ - strb r0, [r1, #0x1]\n\ - strb r4, [r1, #0x2]\n\ - mov r0, #0xff\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1046 + 24\n\ - ldr r0, ._1046 + 28\n\ - str r0, [r1]\n\ - bl ._1392\n\ -._1047:\n\ - .align 2, 0\n\ -._1046:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMoves\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMons\n\ - .word gBattleTextBuff1\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ColorChangeActivates\n\ -._997:\n\ - ldr r0, ._1061\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1048 @cond_branch\n\ - bl ._1534\n\ -._1048:\n\ - ldr r1, ._1061 + 4\n\ - ldr r0, ._1061 + 8\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r4, r0, r1\n\ - ldrh r0, [r4, #0x28]\n\ - cmp r0, #0\n\ - bne ._1050 @cond_branch\n\ - bl ._1534\n\ -._1050:\n\ - ldr r0, ._1061 + 12\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1052 @cond_branch\n\ - bl ._1534\n\ -._1052:\n\ - ldr r2, ._1061 + 16\n\ - ldr r0, ._1061 + 20\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1055 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1055 @cond_branch\n\ - bl ._1534\n\ -._1055:\n\ - ldr r1, ._1061 + 24\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r2, #0x1\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1057 @cond_branch\n\ - bl ._1534\n\ -._1057:\n\ - ldr r1, ._1061 + 28\n\ - ldrh r0, [r4, #0x2c]\n\ - lsr r0, r0, #0x4\n\ - str r0, [r1]\n\ - cmp r0, #0\n\ - bne ._1059 @cond_branch\n\ - str r2, [r1]\n\ -._1059:\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1061 + 32\n\ - ldr r0, ._1061 + 36\n\ - str r0, [r1]\n\ - bl ._1392\n\ -._1062:\n\ - .align 2, 0\n\ -._1061:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleMoveDamage\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_RoughSkinActivates\n\ -._1000:\n\ - ldr r0, ._1078\n\ - ldrb r1, [r0]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1063 @cond_branch\n\ - ldr r0, ._1078 + 4\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1064 @cond_branch\n\ - bl ._1534\n\ -._1064:\n\ - ldr r1, ._1078 + 8\n\ - ldr r0, ._1078 + 12\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1066 @cond_branch\n\ - bl ._1534\n\ -._1066:\n\ - ldr r0, ._1078 + 16\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1068 @cond_branch\n\ - bl ._1534\n\ -._1068:\n\ - ldr r2, ._1078 + 20\n\ - ldr r0, ._1078 + 24\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1071 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1071 @cond_branch\n\ - bl ._1534\n\ -._1071:\n\ - ldr r1, ._1078 + 28\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1073 @cond_branch\n\ - bl ._1534\n\ -._1073:\n\ - ldr r5, ._1078 + 32\n\ - mov r4, #0x3\n\ -._1075:\n\ - bl Random\n\ - and r0, r0, r4\n\ - strb r0, [r5, #0x3]\n\ - cmp r0, #0\n\ - beq ._1075 @cond_branch\n\ - ldr r1, ._1078 + 32\n\ - ldrb r0, [r1, #0x3]\n\ - cmp r0, #0x3\n\ - bne ._1076 @cond_branch\n\ - add r0, r0, #0x2\n\ - strb r0, [r1, #0x3]\n\ -._1076:\n\ - ldrb r0, [r1, #0x3]\n\ - add r0, r0, #0x40\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1078 + 36\n\ - ldr r0, ._1078 + 40\n\ - str r0, [r1]\n\ - ldr r2, ._1078 + 44\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1079:\n\ - .align 2, 0\n\ -._1078:\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1063:\n\ - ldr r0, ._1096\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1080 @cond_branch\n\ - bl ._1534\n\ -._1080:\n\ - ldr r1, ._1096 + 4\n\ - ldr r0, ._1096 + 8\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1082 @cond_branch\n\ - bl ._1534\n\ -._1082:\n\ - ldr r0, ._1096 + 12\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1084 @cond_branch\n\ - bl ._1534\n\ -._1084:\n\ - ldr r2, ._1096 + 16\n\ - ldr r0, ._1096 + 20\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1087 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1087 @cond_branch\n\ - bl ._1534\n\ -._1087:\n\ - ldr r1, ._1096 + 24\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1089 @cond_branch\n\ - bl ._1534\n\ -._1089:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0xa\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - beq ._1091 @cond_branch\n\ - bl ._1534\n\ -._1091:\n\ - ldr r5, ._1096 + 28\n\ - mov r4, #0x3\n\ -._1093:\n\ - bl Random\n\ - and r0, r0, r4\n\ - strb r0, [r5, #0x3]\n\ - cmp r0, #0\n\ - beq ._1093 @cond_branch\n\ - ldr r1, ._1096 + 28\n\ - ldrb r0, [r1, #0x3]\n\ - cmp r0, #0x3\n\ - bne ._1094 @cond_branch\n\ - add r0, r0, #0x2\n\ - strb r0, [r1, #0x3]\n\ -._1094:\n\ - ldrb r0, [r1, #0x3]\n\ - add r0, r0, #0x40\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1096 + 32\n\ - ldr r0, ._1096 + 36\n\ - str r0, [r1]\n\ - ldr r2, ._1096 + 40\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1097:\n\ - .align 2, 0\n\ -._1096:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1011:\n\ - ldr r0, ._1111\n\ - ldrb r1, [r0]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1098 @cond_branch\n\ - ldr r0, ._1111 + 4\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1099 @cond_branch\n\ - bl ._1534\n\ -._1099:\n\ - ldr r1, ._1111 + 8\n\ - ldr r0, ._1111 + 12\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1101 @cond_branch\n\ - bl ._1534\n\ -._1101:\n\ - ldr r0, ._1111 + 16\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1103 @cond_branch\n\ - bl ._1534\n\ -._1103:\n\ - ldr r2, ._1111 + 20\n\ - ldr r0, ._1111 + 24\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1106 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1106 @cond_branch\n\ - bl ._1534\n\ -._1106:\n\ - ldr r1, ._1111 + 28\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1108 @cond_branch\n\ - bl ._1534\n\ -._1108:\n\ - ldr r1, ._1111 + 32\n\ - mov r0, #0x42\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1111 + 36\n\ - ldr r0, ._1111 + 40\n\ - str r0, [r1]\n\ - ldr r2, ._1111 + 44\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1112:\n\ - .align 2, 0\n\ -._1111:\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1098:\n\ - ldr r0, ._1127\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1113 @cond_branch\n\ - bl ._1534\n\ -._1113:\n\ - ldr r1, ._1127 + 4\n\ - ldr r0, ._1127 + 8\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1115 @cond_branch\n\ - bl ._1534\n\ -._1115:\n\ - ldr r0, ._1127 + 12\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1117 @cond_branch\n\ - bl ._1534\n\ -._1117:\n\ - ldr r2, ._1127 + 16\n\ - ldr r0, ._1127 + 20\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1120 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1120 @cond_branch\n\ - bl ._1534\n\ -._1120:\n\ - ldr r1, ._1127 + 24\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1122 @cond_branch\n\ - bl ._1534\n\ -._1122:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0x3\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - beq ._1124 @cond_branch\n\ - bl ._1534\n\ -._1124:\n\ - ldr r1, ._1127 + 28\n\ - mov r0, #0x42\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1127 + 32\n\ - ldr r0, ._1127 + 36\n\ - str r0, [r1]\n\ - ldr r2, ._1127 + 40\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1128:\n\ - .align 2, 0\n\ -._1127:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._982:\n\ - ldr r0, ._1142\n\ - ldrb r1, [r0]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1129 @cond_branch\n\ - ldr r0, ._1142 + 4\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1130 @cond_branch\n\ - bl ._1534\n\ -._1130:\n\ - ldr r1, ._1142 + 8\n\ - ldr r0, ._1142 + 12\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1132 @cond_branch\n\ - bl ._1534\n\ -._1132:\n\ - ldr r0, ._1142 + 16\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1134 @cond_branch\n\ - bl ._1534\n\ -._1134:\n\ - ldr r2, ._1142 + 20\n\ - ldr r0, ._1142 + 24\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1137 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1137 @cond_branch\n\ - bl ._1534\n\ -._1137:\n\ - ldr r1, ._1142 + 28\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1139 @cond_branch\n\ - bl ._1534\n\ -._1139:\n\ - ldr r1, ._1142 + 32\n\ - mov r0, #0x45\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1142 + 36\n\ - ldr r0, ._1142 + 40\n\ - str r0, [r1]\n\ - ldr r2, ._1142 + 44\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1143:\n\ - .align 2, 0\n\ -._1142:\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1129:\n\ - ldr r0, ._1158\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1144 @cond_branch\n\ - bl ._1534\n\ -._1144:\n\ - ldr r1, ._1158 + 4\n\ - ldr r0, ._1158 + 8\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1146 @cond_branch\n\ - bl ._1534\n\ -._1146:\n\ - ldr r0, ._1158 + 12\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1148 @cond_branch\n\ - bl ._1534\n\ -._1148:\n\ - ldr r2, ._1158 + 16\n\ - ldr r0, ._1158 + 20\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1151 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1151 @cond_branch\n\ - bl ._1534\n\ -._1151:\n\ - ldr r1, ._1158 + 24\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1153 @cond_branch\n\ - bl ._1534\n\ -._1153:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0x3\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - beq ._1155 @cond_branch\n\ - bl ._1534\n\ -._1155:\n\ - ldr r1, ._1158 + 28\n\ - mov r0, #0x45\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1158 + 32\n\ - ldr r0, ._1158 + 36\n\ - str r0, [r1]\n\ - ldr r2, ._1158 + 40\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1159:\n\ - .align 2, 0\n\ -._1158:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleMoves\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1022:\n\ - ldr r0, ._1173\n\ - ldrb r1, [r0]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1160 @cond_branch\n\ - ldr r0, ._1173 + 4\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1161 @cond_branch\n\ - bl ._1534\n\ -._1161:\n\ - ldr r1, ._1173 + 8\n\ - ldr r0, ._1173 + 12\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1163 @cond_branch\n\ - bl ._1534\n\ -._1163:\n\ - ldr r0, ._1173 + 16\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1165 @cond_branch\n\ - bl ._1534\n\ -._1165:\n\ - ldr r1, ._1173 + 20\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1167 @cond_branch\n\ - bl ._1534\n\ -._1167:\n\ - ldr r2, ._1173 + 24\n\ - ldr r0, ._1173 + 28\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1170 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1170 @cond_branch\n\ - bl ._1534\n\ -._1170:\n\ - ldr r1, ._1173 + 32\n\ - mov r0, #0x43\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1173 + 36\n\ - ldr r0, ._1173 + 40\n\ - str r0, [r1]\n\ - ldr r2, ._1173 + 44\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1174:\n\ - .align 2, 0\n\ -._1173:\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gBattleMoves\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1160:\n\ - ldr r0, ._1189\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1175 @cond_branch\n\ - bl ._1534\n\ -._1175:\n\ - ldr r1, ._1189 + 4\n\ - ldr r0, ._1189 + 8\n\ - ldrb r2, [r0]\n\ - mov r0, #0x58\n\ - mul r0, r0, r2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1177 @cond_branch\n\ - bl ._1534\n\ -._1177:\n\ - ldr r0, ._1189 + 12\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1179 @cond_branch\n\ - bl ._1534\n\ -._1179:\n\ - ldr r1, ._1189 + 16\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1181 @cond_branch\n\ - bl ._1534\n\ -._1181:\n\ - ldr r2, ._1189 + 20\n\ - ldr r0, ._1189 + 24\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r1, r0, #0x2\n\ - add r0, r2, #0\n\ - add r0, r0, #0x8\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1184 @cond_branch\n\ - add r0, r2, #0\n\ - add r0, r0, #0xc\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1184 @cond_branch\n\ - bl ._1534\n\ -._1184:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0x3\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - beq ._1186 @cond_branch\n\ - bl ._1534\n\ -._1186:\n\ - ldr r1, ._1189 + 28\n\ - mov r0, #0x43\n\ - strb r0, [r1, #0x3]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1189 + 32\n\ - ldr r0, ._1189 + 36\n\ - str r0, [r1]\n\ - ldr r2, ._1189 + 40\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl ._1392\n\ -._1190:\n\ - .align 2, 0\n\ -._1189:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gBattleMoves\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_ApplySecondaryEffect\n\ - .word gHitMarker\n\ -._1029:\n\ - ldr r0, ._1217\n\ - ldrb r1, [r0]\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1191 @cond_branch\n\ - b ._1192\n\ -._1191:\n\ - ldr r0, ._1217 + 4\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1193 @cond_branch\n\ - bl ._1534\n\ -._1193:\n\ - ldr r5, ._1217 + 8\n\ - ldr r7, ._1217 + 12\n\ - ldrb r1, [r7]\n\ - mov r6, #0x58\n\ - add r0, r1, #0\n\ - mul r0, r0, r6\n\ - add r4, r0, r5\n\ - ldrh r0, [r4, #0x28]\n\ - cmp r0, #0\n\ - bne ._1195 @cond_branch\n\ - bl ._1534\n\ -._1195:\n\ - ldr r0, ._1217 + 16\n\ - lsl r1, r1, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1197 @cond_branch\n\ - bl ._1534\n\ -._1197:\n\ - ldr r1, ._1217 + 20\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1199 @cond_branch\n\ - bl ._1534\n\ -._1199:\n\ - ldr r3, ._1217 + 24\n\ - ldr r0, ._1217 + 28\n\ - mov r8, r0\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r2, r0, #0x2\n\ - add r0, r3, #0\n\ - add r0, r0, #0x8\n\ - add r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1202 @cond_branch\n\ - add r0, r3, #0\n\ - add r0, r0, #0xc\n\ - add r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1202 @cond_branch\n\ - bl ._1534\n\ -._1202:\n\ - add r0, r1, #0\n\ - mul r0, r0, r6\n\ - add r0, r0, r5\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1204 @cond_branch\n\ - bl ._1534\n\ -._1204:\n\ - add r0, r4, #0\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0xc\n\ - bne ._1206 @cond_branch\n\ - bl ._1534\n\ -._1206:\n\ - ldr r0, [sp, #0x8]\n\ - ldr r1, [sp, #0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - add r4, r0, #0\n\ - ldr r0, [sp, #0xc]\n\ - ldr r1, [sp, #0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsl r4, r4, #0x18\n\ - lsl r0, r0, #0x18\n\ - cmp r4, r0\n\ - bne ._1208 @cond_branch\n\ - bl ._1534\n\ -._1208:\n\ - ldrb r0, [r7]\n\ - mul r0, r0, r6\n\ - add r4, r5, #0\n\ - add r4, r4, #0x50\n\ - add r0, r0, r4\n\ - ldr r0, [r0]\n\ - mov r1, #0xf0\n\ - lsl r1, r1, #0xc\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1210 @cond_branch\n\ - bl ._1534\n\ -._1210:\n\ - ldr r0, [sp, #0x8]\n\ - ldr r1, [sp, #0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._1212 @cond_branch\n\ - bl ._1534\n\ -._1212:\n\ - ldr r0, [sp, #0xc]\n\ - ldr r1, [sp, #0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._1214 @cond_branch\n\ - bl ._1534\n\ -._1214:\n\ - ldrb r0, [r7]\n\ - add r2, r0, #0\n\ - mul r2, r2, r6\n\ - add r2, r2, r4\n\ - ldr r1, ._1217 + 32\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, [r0]\n\ - lsl r1, r1, #0x10\n\ - ldr r0, [r2]\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1217 + 36\n\ - ldr r0, ._1217 + 40\n\ - str r0, [r1]\n\ - bl ._1392\n\ -._1218:\n\ - .align 2, 0\n\ -._1217:\n\ - .word gUnknown_02023A14_50\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gBattleMoves\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBitTable\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_CuteCharmActivates\n\ -._1192:\n\ - ldr r0, ._1245\n\ - ldrb r1, [r0]\n\ - mov r0, #0x29\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1219 @cond_branch\n\ - bl ._1534\n\ -._1219:\n\ - ldr r5, ._1245 + 4\n\ - ldr r7, ._1245 + 8\n\ - ldrb r1, [r7]\n\ - mov r6, #0x58\n\ - add r0, r1, #0\n\ - mul r0, r0, r6\n\ - add r0, r0, r5\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1221 @cond_branch\n\ - bl ._1534\n\ -._1221:\n\ - ldr r0, ._1245 + 12\n\ - lsl r1, r1, #0x4\n\ - add r1, r1, r0\n\ - ldrb r0, [r1, #0x1]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._1223 @cond_branch\n\ - bl ._1534\n\ -._1223:\n\ - ldr r1, ._1245 + 16\n\ - lsl r0, r3, #0x1\n\ - add r0, r0, r3\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldrb r1, [r0, #0x8]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1225 @cond_branch\n\ - bl ._1534\n\ -._1225:\n\ - ldr r3, ._1245 + 20\n\ - ldr r0, ._1245 + 24\n\ - mov r8, r0\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r2, r0, #0x2\n\ - add r0, r3, #0\n\ - add r0, r0, #0x8\n\ - add r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1228 @cond_branch\n\ - add r0, r3, #0\n\ - add r0, r0, #0xc\n\ - add r0, r2, r0\n\ - ldr r0, [r0]\n\ - cmp r0, #0\n\ - bne ._1228 @cond_branch\n\ - bl ._1534\n\ -._1228:\n\ - add r0, r1, #0\n\ - mul r0, r0, r6\n\ - add r0, r0, r5\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - bne ._1230 @cond_branch\n\ - bl ._1534\n\ -._1230:\n\ - bl Random\n\ - lsl r0, r0, #0x10\n\ - lsr r0, r0, #0x10\n\ - mov r1, #0x3\n\ - bl __umodsi3\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - beq ._1232 @cond_branch\n\ - bl ._1534\n\ -._1232:\n\ - ldrb r0, [r7]\n\ - mul r0, r0, r6\n\ - add r0, r0, r5\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0xc\n\ - bne ._1234 @cond_branch\n\ - bl ._1534\n\ -._1234:\n\ - ldr r0, [sp, #0x8]\n\ - ldr r1, [sp, #0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - add r4, r0, #0\n\ - ldr r0, [sp, #0xc]\n\ - ldr r1, [sp, #0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsl r4, r4, #0x18\n\ - lsl r0, r0, #0x18\n\ - cmp r4, r0\n\ - bne ._1236 @cond_branch\n\ - bl ._1534\n\ -._1236:\n\ - ldrb r0, [r7]\n\ - mul r0, r0, r6\n\ - add r4, r5, #0\n\ - add r4, r4, #0x50\n\ - add r0, r0, r4\n\ - ldr r0, [r0]\n\ - mov r1, #0xf0\n\ - lsl r1, r1, #0xc\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1238 @cond_branch\n\ - bl ._1534\n\ -._1238:\n\ - ldr r0, [sp, #0x8]\n\ - ldr r1, [sp, #0x10]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._1240 @cond_branch\n\ - bl ._1534\n\ -._1240:\n\ - ldr r0, [sp, #0xc]\n\ - ldr r1, [sp, #0x14]\n\ - bl GetGenderFromSpeciesAndPersonality\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0xff\n\ - bne ._1242 @cond_branch\n\ - bl ._1534\n\ -._1242:\n\ - ldrb r0, [r7]\n\ - add r2, r0, #0\n\ - mul r2, r2, r6\n\ - add r2, r2, r4\n\ - ldr r1, ._1245 + 28\n\ - mov r3, r8\n\ - ldrb r0, [r3]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, [r0]\n\ - lsl r1, r1, #0x10\n\ - ldr r0, [r2]\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1245 + 32\n\ - ldr r0, ._1245 + 36\n\ - str r0, [r1]\n\ - bl ._1392\n\ -._1246:\n\ - .align 2, 0\n\ -._1245:\n\ - .word gBattleMoveFlags\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gProtectStructs\n\ - .word gBattleMoves\n\ - .word gSpecialStatuses\n\ - .word gBankTarget\n\ - .word gBitTable\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_CuteCharmActivates\n\ -._749:\n\ - mov r5, #0x0\n\ - mov sl, r5\n\ - ldr r0, ._1251\n\ - ldrb r0, [r0]\n\ - cmp sl, r0\n\ - bcc ._1366 @cond_branch\n\ - bl ._1534\n\ -._1366:\n\ - ldr r1, ._1251 + 4\n\ - mov r0, #0x58\n\ - mov r2, sl\n\ - mul r2, r2, r0\n\ - add r0, r2, #0\n\ - add r0, r0, r1\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x7\n\ - add r2, r1, #0\n\ - cmp r0, #0x41\n\ - bls ._1249 @cond_branch\n\ - b ._1346\n\ -._1249:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._1251 + 8\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._1252:\n\ - .align 2, 0\n\ -._1251:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word ._1253\n\ -._1253:\n\ - .word ._1254\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1259\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1319\n\ - .word ._1346\n\ - .word ._1264\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1267\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1287\n\ - .word ._1288\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1346\n\ - .word ._1319\n\ -._1264:\n\ - mov r0, #0x58\n\ - mov r3, sl\n\ - mul r3, r3, r0\n\ - add r0, r3, #0\n\ - add r1, r2, #0\n\ - add r1, r1, #0x4c\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - ldr r1, ._1323\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1320 @cond_branch\n\ - b ._1346\n\ -._1320:\n\ - ldr r0, ._1323 + 4\n\ - ldr r1, ._1323 + 8\n\ - b ._1331\n\ -._1324:\n\ - .align 2, 0\n\ -._1323:\n\ - .word 0xf88\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_PoisonJpn\n\ -._1267:\n\ - mov r0, #0x58\n\ - mov r1, sl\n\ - mul r1, r1, r0\n\ - add r0, r1, #0\n\ - add r1, r2, #0\n\ - add r1, r1, #0x50\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1325 @cond_branch\n\ - b ._1346\n\ -._1325:\n\ - ldr r0, ._1328\n\ - ldr r1, ._1328 + 4\n\ - bl StringCopy\n\ - mov r2, #0x2\n\ - mov r9, r2\n\ - b ._1343\n\ -._1329:\n\ - .align 2, 0\n\ -._1328:\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_ConfusionJpn\n\ -._1254:\n\ - mov r0, #0x58\n\ - mov r3, sl\n\ - mul r3, r3, r0\n\ - add r0, r3, #0\n\ - add r1, r2, #0\n\ - add r1, r1, #0x4c\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1346 @cond_branch\n\ - ldr r0, ._1332\n\ - ldr r1, ._1332 + 4\n\ - b ._1331\n\ -._1333:\n\ - .align 2, 0\n\ -._1332:\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_ParalysisJpn\n\ -._1319:\n\ - mov r0, #0x58\n\ - mov r3, sl\n\ - mul r3, r3, r0\n\ - add r0, r2, #0\n\ - add r0, r0, #0x4c\n\ - add r0, r3, r0\n\ - ldr r0, [r0]\n\ - mov r1, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1346 @cond_branch\n\ - add r2, r2, #0x50\n\ - add r2, r3, r2\n\ - ldr r0, [r2]\n\ - ldr r1, ._1336\n\ - and r0, r0, r1\n\ - str r0, [r2]\n\ - ldr r0, ._1336 + 4\n\ - ldr r1, ._1336 + 8\n\ - bl StringCopy\n\ - mov r0, #0x1\n\ - mov r9, r0\n\ - b ._1343\n\ -._1337:\n\ - .align 2, 0\n\ -._1336:\n\ - .word 0xf7ffffff\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_SleepJpn\n\ -._1288:\n\ - mov r0, #0x58\n\ - mov r1, sl\n\ - mul r1, r1, r0\n\ - add r0, r1, #0\n\ - add r1, r2, #0\n\ - add r1, r1, #0x4c\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1346 @cond_branch\n\ - ldr r0, ._1340\n\ - ldr r1, ._1340 + 4\n\ - bl StringCopy\n\ - mov r2, #0x1\n\ - mov r9, r2\n\ - b ._1343\n\ -._1341:\n\ - .align 2, 0\n\ -._1340:\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_BurnJpn\n\ -._1287:\n\ - mov r0, #0x58\n\ - mov r3, sl\n\ - mul r3, r3, r0\n\ - add r0, r3, #0\n\ - add r1, r2, #0\n\ - add r1, r1, #0x4c\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1346 @cond_branch\n\ - ldr r0, ._1344\n\ - ldr r1, ._1344 + 4\n\ -._1331:\n\ - bl StringCopy\n\ - mov r5, #0x1\n\ - mov r9, r5\n\ - b ._1343\n\ -._1345:\n\ - .align 2, 0\n\ -._1344:\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_IceJpn\n\ -._1259:\n\ - mov r0, #0x58\n\ - mov r1, sl\n\ - mul r1, r1, r0\n\ - add r0, r1, #0\n\ - add r1, r2, #0\n\ - add r1, r1, #0x50\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0xf0\n\ - lsl r1, r1, #0xc\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1346 @cond_branch\n\ - ldr r0, ._1352\n\ - ldr r1, ._1352 + 4\n\ - bl StringCopy\n\ - mov r2, #0x3\n\ - mov r9, r2\n\ -._1346:\n\ - mov r3, r9\n\ - cmp r3, #0\n\ - beq ._1347 @cond_branch\n\ -._1343:\n\ - mov r5, r9\n\ - cmp r5, #0x2\n\ - beq ._1348 @cond_branch\n\ - cmp r5, #0x2\n\ - bgt ._1349 @cond_branch\n\ - cmp r5, #0x1\n\ - beq ._1350 @cond_branch\n\ - b ._1355\n\ -._1353:\n\ - .align 2, 0\n\ -._1352:\n\ - .word gBattleTextBuff1\n\ - .word gStatusConditionString_LoveJpn\n\ -._1349:\n\ - mov r0, r9\n\ - cmp r0, #0x3\n\ - beq ._1354 @cond_branch\n\ - b ._1355\n\ -._1350:\n\ - ldr r1, ._1357\n\ - mov r0, #0x58\n\ - mov r2, sl\n\ - mul r2, r2, r0\n\ - add r1, r1, #0x4c\n\ - add r2, r2, r1\n\ - mov r0, #0x0\n\ - b ._1356\n\ -._1358:\n\ - .align 2, 0\n\ -._1357:\n\ - .word gBattleMons\n\ -._1348:\n\ - ldr r1, ._1360\n\ - mov r0, #0x58\n\ - mov r2, sl\n\ - mul r2, r2, r0\n\ - add r1, r1, #0x50\n\ - add r2, r2, r1\n\ - ldr r0, [r2]\n\ - mov r1, #0x8\n\ - neg r1, r1\n\ - b ._1359\n\ -._1361:\n\ - .align 2, 0\n\ -._1360:\n\ - .word gBattleMons\n\ -._1354:\n\ - ldr r1, ._1363\n\ - mov r0, #0x58\n\ - mov r2, sl\n\ - mul r2, r2, r0\n\ - add r1, r1, #0x50\n\ - add r2, r2, r1\n\ - ldr r0, [r2]\n\ - ldr r1, ._1363 + 4\n\ -._1359:\n\ - and r0, r0, r1\n\ -._1356:\n\ - str r0, [r2]\n\ -._1355:\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1363 + 8\n\ - ldr r0, ._1363 + 12\n\ - str r0, [r1]\n\ - ldr r0, ._1363 + 16\n\ - ldr r1, ._1363 + 20\n\ - add r0, r0, r1\n\ - mov r2, sl\n\ - strb r2, [r0]\n\ - ldr r4, ._1363 + 24\n\ - strb r2, [r4]\n\ - ldrb r1, [r4]\n\ - mov r0, #0x58\n\ - mul r0, r0, r1\n\ - ldr r1, ._1363 + 28\n\ - add r0, r0, r1\n\ - str r0, [sp]\n\ - mov r0, #0x0\n\ - mov r1, #0x28\n\ - mov r2, #0x0\n\ - mov r3, #0x4\n\ - bl EmitSetMonData\n\ - ldrb r0, [r4]\n\ - bl MarkBufferBankForExecution\n\ - bl ._1540\n\ -._1364:\n\ - .align 2, 0\n\ -._1363:\n\ - .word gBattleMons\n\ - .word 0xfff0ffff\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_AbilityCuredStatus\n\ - .word +0x2000000\n\ - .word 0x16003\n\ - .word gActiveBank\n\ - .word gUnknown_02024ACC\n\ -._1347:\n\ - mov r0, sl\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov sl, r0\n\ - ldr r0, ._1368\n\ - ldrb r0, [r0]\n\ - cmp sl, r0\n\ - bcs ._1365 @cond_branch\n\ - b ._1366\n\ -._1365:\n\ - bl ._1534\n\ -._1369:\n\ - .align 2, 0\n\ -._1368:\n\ - .word gNoOfAllBanks\n\ -._750:\n\ - mov r3, #0x0\n\ - mov sl, r3\n\ - ldr r0, ._1377\n\ - ldrb r0, [r0]\n\ - cmp sl, r0\n\ - bcc ._1370 @cond_branch\n\ - b ._1534\n\ -._1370:\n\ - ldr r4, ._1377 + 4\n\ -._1375:\n\ - mov r0, #0x58\n\ - mov r5, sl\n\ - mul r5, r5, r0\n\ - add r0, r5, #0\n\ - add r0, r0, r4\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x3b\n\ - bne ._1373 @cond_branch\n\ - mov r0, sl\n\ - bl CastformDataTypeChange\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ - cmp r0, #0\n\ - beq ._1373 @cond_branch\n\ - b ._1374\n\ -._1373:\n\ - mov r0, sl\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov sl, r0\n\ - ldr r0, ._1377\n\ - ldrb r0, [r0]\n\ - cmp sl, r0\n\ - bcc ._1375 @cond_branch\n\ - b ._1534\n\ -._1378:\n\ - .align 2, 0\n\ -._1377:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ -._751:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, #0x1c\n\ - beq ._1379 @cond_branch\n\ - b ._1534\n\ -._1379:\n\ - ldr r4, ._1385\n\ - ldr r1, [r4]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1381 @cond_branch\n\ - b ._1534\n\ -._1381:\n\ - ldr r0, ._1385 + 4\n\ - and r1, r1, r0\n\ - str r1, [r4]\n\ - ldr r3, ._1385 + 8\n\ - add r2, r7, r3\n\ - ldrb r1, [r2]\n\ - mov r0, #0x3f\n\ - and r0, r0, r1\n\ - strb r0, [r2]\n\ - cmp r0, #0x6\n\ - bne ._1383 @cond_branch\n\ - mov r0, #0x2\n\ - strb r0, [r2]\n\ -._1383:\n\ - ldr r1, ._1385 + 12\n\ - ldrb r0, [r2]\n\ - add r0, r0, #0x40\n\ - strb r0, [r1, #0x3]\n\ - ldr r0, ._1385 + 16\n\ - ldrb r1, [r0]\n\ - ldr r5, ._1385 + 20\n\ - add r0, r7, r5\n\ - strb r1, [r0]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1385 + 24\n\ - ldr r0, ._1385 + 28\n\ - str r0, [r1]\n\ - ldr r0, [r4]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r4]\n\ - b ._1392\n\ -._1386:\n\ - .align 2, 0\n\ -._1385:\n\ - .word gHitMarker\n\ - .word 0xffffbfff\n\ - .word 0x160ca\n\ - .word gBattleCommunication\n\ - .word gBankTarget\n\ - .word 0x16003\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_SynchronizeActivates\n\ -._752:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, #0x1c\n\ - beq ._1387 @cond_branch\n\ - b ._1534\n\ -._1387:\n\ - ldr r4, ._1393\n\ - ldr r1, [r4]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1389 @cond_branch\n\ - b ._1534\n\ -._1389:\n\ - ldr r0, ._1393 + 4\n\ - and r1, r1, r0\n\ - str r1, [r4]\n\ - ldr r3, ._1393 + 8\n\ - add r2, r7, r3\n\ - ldrb r1, [r2]\n\ - mov r0, #0x3f\n\ - and r0, r0, r1\n\ - strb r0, [r2]\n\ - cmp r0, #0x6\n\ - bne ._1391 @cond_branch\n\ - mov r0, #0x2\n\ - strb r0, [r2]\n\ -._1391:\n\ - ldr r1, ._1393 + 12\n\ - ldrb r0, [r2]\n\ - strb r0, [r1, #0x3]\n\ - ldr r0, ._1393 + 16\n\ - ldrb r1, [r0]\n\ - ldr r5, ._1393 + 20\n\ - add r0, r7, r5\n\ - strb r1, [r0]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1393 + 24\n\ - ldr r0, ._1393 + 28\n\ - str r0, [r1]\n\ - ldr r0, [r4]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x6\n\ - orr r0, r0, r1\n\ - str r0, [r4]\n\ - b ._1392\n\ -._1394:\n\ - .align 2, 0\n\ -._1393:\n\ - .word gHitMarker\n\ - .word 0xffffbfff\n\ - .word 0x160ca\n\ - .word gBattleCommunication\n\ - .word gBankAttacker\n\ - .word 0x16003\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_SynchronizeActivates\n\ -._753:\n\ - mov r4, #0x0\n\ - ldr r0, ._1402\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - blt ._1395 @cond_branch\n\ - b ._1534\n\ -._1395:\n\ - ldr r0, ._1402 + 4\n\ - add r5, r1, #0\n\ - ldr r2, ._1402 + 8\n\ - add r3, r0, #0\n\ - add r3, r3, #0x20\n\ - mov r6, #0x80\n\ - lsl r6, r6, #0xc\n\ -._1400:\n\ - ldrb r1, [r3]\n\ - cmp r1, #0x16\n\ - bne ._1398 @cond_branch\n\ - ldr r0, [r2]\n\ - and r0, r0, r6\n\ - cmp r0, #0\n\ - beq ._1398 @cond_branch\n\ - b ._1399\n\ -._1398:\n\ - add r2, r2, #0x4\n\ - add r3, r3, #0x58\n\ - add r4, r4, #0x1\n\ - cmp r4, r5\n\ - blt ._1400 @cond_branch\n\ - b ._1534\n\ -._1403:\n\ - .align 2, 0\n\ -._1402:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gStatuses3\n\ -._755:\n\ - mov r4, #0x0\n\ - ldr r0, ._1417\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1404 @cond_branch\n\ - b ._1534\n\ -._1404:\n\ - ldr r0, ._1417 + 4\n\ - mov r8, r0\n\ - ldr r1, ._1417 + 8\n\ - add r1, r1, #0x20\n\ - str r1, [sp, #0x1c]\n\ - mov r2, #0x0\n\ - str r2, [sp, #0x20]\n\ -._1434:\n\ - ldr r3, [sp, #0x1c]\n\ - ldrb r0, [r3]\n\ - cmp r0, #0x24\n\ - beq ._1406 @cond_branch\n\ - b ._1431\n\ -._1406:\n\ - ldr r0, ._1417 + 12\n\ - ldr r5, [sp, #0x20]\n\ - add r0, r5, r0\n\ - ldr r1, [r0]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0xd\n\ - and r1, r1, r0\n\ - str r5, [sp, #0x18]\n\ - cmp r1, #0\n\ - bne ._1408 @cond_branch\n\ - b ._1431\n\ -._1408:\n\ - lsl r0, r4, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl GetBankIdentity\n\ - mov r1, #0x1\n\ - add r5, r0, #0\n\ - eor r5, r5, r1\n\ - and r5, r5, r1\n\ - add r0, r5, #0\n\ - bl GetBankByIdentity\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - add r0, r5, #2\n\ - bl GetBankByIdentity\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - ldr r0, ._1417 + 16\n\ - ldrh r1, [r0]\n\ - mov r2, #0x1\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1410 @cond_branch\n\ - b ._1411\n\ -._1410:\n\ - mov r1, #0x58\n\ - add r0, r6, #0\n\ - mul r0, r0, r1\n\ - ldr r3, ._1417 + 8\n\ - add r1, r0, r3\n\ - add r0, r1, #0\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._1420 @cond_branch\n\ - ldrh r0, [r1, #0x28]\n\ - cmp r0, #0\n\ - beq ._1415 @cond_branch\n\ - mov r1, #0x58\n\ - add r0, r7, #0\n\ - mul r0, r0, r1\n\ - add r1, r0, r3\n\ - add r0, r1, #0\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._1415 @cond_branch\n\ - ldrh r0, [r1, #0x28]\n\ - cmp r0, #0\n\ - beq ._1415 @cond_branch\n\ - str r2, [sp, #0x24]\n\ - bl Random\n\ - ldr r2, [sp, #0x24]\n\ - add r1, r2, #0\n\ - and r1, r1, r0\n\ - lsl r1, r1, #0x1\n\ - orr r5, r5, r1\n\ - add r0, r5, #0\n\ - bl GetBankByIdentity\n\ - mov r2, r8\n\ - strb r0, [r2]\n\ - ldrb r0, [r2]\n\ - mov r3, #0x58\n\ - mul r0, r0, r3\n\ - ldr r5, ._1417 + 8\n\ - add r0, r0, r5\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - ldr r1, [sp, #0x1c]\n\ - strb r0, [r1]\n\ - ldrb r0, [r2]\n\ - mul r0, r0, r3\n\ - add r0, r0, r5\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - ldr r2, ._1417 + 20\n\ - strb r0, [r2]\n\ - b ._1416\n\ -._1418:\n\ - .align 2, 0\n\ -._1417:\n\ - .word gNoOfAllBanks\n\ - .word gActiveBank\n\ - .word gBattleMons\n\ - .word gStatuses3\n\ - .word gBattleTypeFlags\n\ - .word gLastUsedAbility\n\ -._1415:\n\ - ldr r3, ._1422\n\ - mov r2, #0x58\n\ - add r0, r6, #0\n\ - mul r0, r0, r2\n\ - add r1, r0, r3\n\ - add r0, r1, #0\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._1420 @cond_branch\n\ - ldrh r0, [r1, #0x28]\n\ - cmp r0, #0\n\ - beq ._1420 @cond_branch\n\ - mov r5, r8\n\ - strb r6, [r5]\n\ - add r1, r4, #0\n\ - mul r1, r1, r2\n\ - add r1, r1, r3\n\ - ldrb r0, [r5]\n\ - mul r0, r0, r2\n\ - add r0, r0, r3\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - add r1, r1, #0x20\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - mul r0, r0, r2\n\ - add r0, r0, r3\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - b ._1426\n\ -._1423:\n\ - .align 2, 0\n\ -._1422:\n\ - .word gBattleMons\n\ -._1420:\n\ - ldr r3, ._1427\n\ - mov r2, #0x58\n\ - add r0, r7, #0\n\ - mul r0, r0, r2\n\ - add r1, r0, r3\n\ - add r0, r1, #0\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._1430 @cond_branch\n\ - ldrh r0, [r1, #0x28]\n\ - cmp r0, #0\n\ - beq ._1430 @cond_branch\n\ - mov r5, r8\n\ - strb r7, [r5]\n\ - add r1, r4, #0\n\ - mul r1, r1, r2\n\ - add r1, r1, r3\n\ - ldrb r0, [r5]\n\ - mul r0, r0, r2\n\ - add r0, r0, r3\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - add r1, r1, #0x20\n\ - strb r0, [r1]\n\ - ldrb r0, [r5]\n\ - mul r0, r0, r2\n\ - add r0, r0, r3\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - b ._1426\n\ -._1428:\n\ - .align 2, 0\n\ -._1427:\n\ - .word gBattleMons\n\ -._1411:\n\ - mov r2, r8\n\ - strb r6, [r2]\n\ - mov r3, #0x58\n\ - add r0, r6, #0\n\ - mul r0, r0, r3\n\ - ldr r5, ._1436\n\ - add r0, r0, r5\n\ - add r2, r0, #0\n\ - add r2, r2, #0x20\n\ - ldrb r1, [r2]\n\ - cmp r1, #0\n\ - beq ._1430 @cond_branch\n\ - ldrh r0, [r0, #0x28]\n\ - cmp r0, #0\n\ - beq ._1430 @cond_branch\n\ - ldr r0, [sp, #0x1c]\n\ - strb r1, [r0]\n\ - ldrb r0, [r2]\n\ -._1426:\n\ - ldr r1, ._1436 + 4\n\ - strb r0, [r1]\n\ -._1416:\n\ - mov r0, r9\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1430:\n\ - mov r2, r9\n\ - cmp r2, #0\n\ - beq ._1431 @cond_branch\n\ - b ._1432\n\ -._1431:\n\ - ldr r3, [sp, #0x1c]\n\ - add r3, r3, #0x58\n\ - str r3, [sp, #0x1c]\n\ - ldr r5, [sp, #0x20]\n\ - add r5, r5, #0x4\n\ - str r5, [sp, #0x20]\n\ - add r4, r4, #0x1\n\ - ldr r0, ._1436 + 8\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - bge ._1433 @cond_branch\n\ - b ._1434\n\ -._1433:\n\ - b ._1534\n\ -._1437:\n\ - .align 2, 0\n\ -._1436:\n\ - .word gBattleMons\n\ - .word gLastUsedAbility\n\ - .word gNoOfAllBanks\n\ -._754:\n\ - mov r4, #0x0\n\ - ldr r0, ._1445\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - blt ._1438 @cond_branch\n\ - b ._1534\n\ -._1438:\n\ - ldr r0, ._1445 + 4\n\ - add r5, r1, #0\n\ - ldr r2, ._1445 + 8\n\ - add r3, r0, #0\n\ - add r3, r3, #0x20\n\ - mov r6, #0x80\n\ - lsl r6, r6, #0xc\n\ -._1443:\n\ - ldrb r1, [r3]\n\ - cmp r1, #0x16\n\ - bne ._1441 @cond_branch\n\ - ldr r0, [r2]\n\ - and r0, r0, r6\n\ - cmp r0, #0\n\ - beq ._1441 @cond_branch\n\ - b ._1442\n\ -._1441:\n\ - add r2, r2, #0x4\n\ - add r3, r3, #0x58\n\ - add r4, r4, #0x1\n\ - cmp r4, r5\n\ - blt ._1443 @cond_branch\n\ - b ._1534\n\ -._1446:\n\ - .align 2, 0\n\ -._1445:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gStatuses3\n\ -._756:\n\ - mov r0, sl\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - mov r4, #0x0\n\ - ldr r0, ._1453\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1447 @cond_branch\n\ - b ._1534\n\ -._1447:\n\ - ldr r7, ._1453 + 4\n\ -._1451:\n\ - lsl r0, r4, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - add r3, r4, #1\n\ - cmp r0, r5\n\ - beq ._1450 @cond_branch\n\ - mov r0, #0x58\n\ - mul r0, r0, r4\n\ - add r0, r0, r7\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne ._1450 @cond_branch\n\ - ldr r0, ._1453 + 8\n\ - strb r6, [r0]\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1450:\n\ - add r4, r3, #0\n\ - ldr r0, ._1453\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1451 @cond_branch\n\ - b ._1534\n\ -._1454:\n\ - .align 2, 0\n\ -._1453:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gLastUsedAbility\n\ -._757:\n\ - mov r0, sl\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - mov r4, #0x0\n\ - ldr r0, ._1461\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1455 @cond_branch\n\ - b ._1534\n\ -._1455:\n\ - ldr r7, ._1461 + 4\n\ -._1459:\n\ - lsl r0, r4, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - add r3, r4, #1\n\ - cmp r0, r5\n\ - bne ._1458 @cond_branch\n\ - mov r0, #0x58\n\ - mul r0, r0, r4\n\ - add r0, r0, r7\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne ._1458 @cond_branch\n\ - ldr r0, ._1461 + 8\n\ - strb r6, [r0]\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1458:\n\ - add r4, r3, #0\n\ - ldr r0, ._1461\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1459 @cond_branch\n\ - b ._1534\n\ -._1462:\n\ - .align 2, 0\n\ -._1461:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gLastUsedAbility\n\ -._758:\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - cmp r0, #0xfd\n\ - beq ._1463 @cond_branch\n\ - cmp r0, #0xfe\n\ - beq ._1464 @cond_branch\n\ - mov r4, #0x0\n\ - ldr r0, ._1468\n\ - add r5, r0, #0\n\ - ldrb r2, [r5]\n\ - cmp r4, r2\n\ - blt ._1465 @cond_branch\n\ - b ._1534\n\ -._1465:\n\ - ldr r2, ._1468 + 4\n\ - b ._1485\n\ -._1469:\n\ - .align 2, 0\n\ -._1468:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ -._1463:\n\ - mov r4, #0x0\n\ - ldr r0, ._1475\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1470 @cond_branch\n\ - b ._1534\n\ -._1470:\n\ - ldr r5, ._1475 + 4\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x9\n\ - add r1, r0, #0\n\ -._1473:\n\ - lsl r0, r4, #0x2\n\ - add r0, r0, r5\n\ - ldr r0, [r0]\n\ - and r0, r0, r2\n\ - add r3, r4, #1\n\ - cmp r0, #0\n\ - beq ._1472 @cond_branch\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1472:\n\ - add r4, r3, #0\n\ - cmp r4, r1\n\ - blt ._1473 @cond_branch\n\ - b ._1534\n\ -._1476:\n\ - .align 2, 0\n\ -._1475:\n\ - .word gNoOfAllBanks\n\ - .word gStatuses3\n\ -._1464:\n\ - mov r4, #0x0\n\ - ldr r0, ._1482\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1477 @cond_branch\n\ - b ._1534\n\ -._1477:\n\ - ldr r5, ._1482 + 4\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0xa\n\ - add r1, r0, #0\n\ -._1480:\n\ - lsl r0, r4, #0x2\n\ - add r0, r0, r5\n\ - ldr r0, [r0]\n\ - and r0, r0, r2\n\ - add r3, r4, #1\n\ - cmp r0, #0\n\ - beq ._1479 @cond_branch\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1479:\n\ - add r4, r3, #0\n\ - cmp r4, r1\n\ - blt ._1480 @cond_branch\n\ - b ._1534\n\ -._1483:\n\ - .align 2, 0\n\ -._1482:\n\ - .word gNoOfAllBanks\n\ - .word gStatuses3\n\ -._1485:\n\ - mov r0, #0x58\n\ - mul r0, r0, r4\n\ - add r0, r0, r2\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - add r3, r4, #1\n\ - cmp r0, r6\n\ - bne ._1484 @cond_branch\n\ - mov r0, r8\n\ - strb r6, [r0]\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1484:\n\ - add r4, r3, #0\n\ - ldrb r1, [r5]\n\ - cmp r4, r1\n\ - blt ._1485 @cond_branch\n\ - b ._1534\n\ -._763:\n\ - mov r4, #0x0\n\ - ldr r0, ._1493\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1487 @cond_branch\n\ - b ._1534\n\ -._1487:\n\ - ldr r7, ._1493 + 4\n\ - add r2, r0, #0\n\ - mov r5, #0x58\n\ -._1491:\n\ - add r0, r4, #0\n\ - mul r0, r0, r5\n\ - add r1, r0, r7\n\ - add r0, r1, #0\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - add r3, r4, #1\n\ - cmp r0, r6\n\ - bne ._1490 @cond_branch\n\ - ldrh r0, [r1, #0x28]\n\ - cmp r0, #0\n\ - beq ._1490 @cond_branch\n\ - mov r0, r8\n\ - strb r6, [r0]\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1490:\n\ - add r4, r3, #0\n\ - cmp r4, r2\n\ - blt ._1491 @cond_branch\n\ - b ._1534\n\ -._1494:\n\ - .align 2, 0\n\ -._1493:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ -._759:\n\ - mov r4, #0x0\n\ - ldr r0, ._1501\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1495 @cond_branch\n\ - b ._1534\n\ -._1495:\n\ - ldr r7, ._1501 + 4\n\ - add r1, r0, #0\n\ - mov r5, #0x58\n\ - ldr r2, ._1501 + 8\n\ -._1499:\n\ - add r0, r4, #0\n\ - mul r0, r0, r5\n\ - add r0, r0, r7\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - add r3, r4, #1\n\ - cmp r0, r6\n\ - bne ._1498 @cond_branch\n\ - cmp r4, sl\n\ - beq ._1498 @cond_branch\n\ - strb r6, [r2]\n\ - lsl r0, r3, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1498:\n\ - add r4, r3, #0\n\ - cmp r4, r1\n\ - blt ._1499 @cond_branch\n\ - b ._1534\n\ -._1502:\n\ - .align 2, 0\n\ -._1501:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gLastUsedAbility\n\ -._760:\n\ - mov r0, sl\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - mov r4, #0x0\n\ - ldr r0, ._1509\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1503 @cond_branch\n\ - b ._1534\n\ -._1503:\n\ - ldr r7, ._1509 + 4\n\ -._1507:\n\ - lsl r0, r4, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, r5\n\ - beq ._1506 @cond_branch\n\ - mov r0, #0x58\n\ - mul r0, r0, r4\n\ - add r0, r0, r7\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne ._1506 @cond_branch\n\ - ldr r0, ._1509 + 8\n\ - strb r6, [r0]\n\ - mov r0, r9\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1506:\n\ - add r4, r4, #0x1\n\ - ldr r0, ._1509\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1507 @cond_branch\n\ - b ._1534\n\ -._1510:\n\ - .align 2, 0\n\ -._1509:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gLastUsedAbility\n\ -._761:\n\ - mov r0, sl\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - mov r4, #0x0\n\ - ldr r0, ._1517\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1511 @cond_branch\n\ - b ._1534\n\ -._1511:\n\ - ldr r7, ._1517 + 4\n\ -._1515:\n\ - lsl r0, r4, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, r5\n\ - bne ._1514 @cond_branch\n\ - mov r0, #0x58\n\ - mul r0, r0, r4\n\ - add r0, r0, r7\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, r6\n\ - bne ._1514 @cond_branch\n\ - ldr r0, ._1517 + 8\n\ - strb r6, [r0]\n\ - mov r0, r9\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1514:\n\ - add r4, r4, #0x1\n\ - ldr r0, ._1517\n\ - ldrb r0, [r0]\n\ - cmp r4, r0\n\ - blt ._1515 @cond_branch\n\ - b ._1534\n\ -._1518:\n\ - .align 2, 0\n\ -._1517:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gLastUsedAbility\n\ -._853:\n\ - ldr r0, ._1520\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, ._1520 + 4\n\ - ldr r2, ._1520 + 8\n\ - add r1, r0, r2\n\ - strb r6, [r1]\n\ - mov r1, r9\n\ - sub r1, r1, #0x1\n\ - ldr r3, ._1520 + 12\n\ - add r0, r0, r3\n\ - strb r1, [r0]\n\ - b ._1534\n\ -._1521:\n\ - .align 2, 0\n\ -._1520:\n\ - .word BattleScript_CastformChange\n\ - .word +0x2000000\n\ - .word 0x16003\n\ - .word 0x1609b\n\ -._1374:\n\ - ldr r0, ._1523\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r0, ._1523 + 4\n\ - ldr r5, ._1523 + 8\n\ - add r1, r0, r5\n\ - mov r2, sl\n\ - strb r2, [r1]\n\ - mov r1, r9\n\ - sub r1, r1, #0x1\n\ - ldr r3, ._1523 + 12\n\ - add r0, r0, r3\n\ - strb r1, [r0]\n\ - b ._1540\n\ -._1524:\n\ - .align 2, 0\n\ -._1523:\n\ - .word BattleScript_CastformChange\n\ - .word +0x2000000\n\ - .word 0x16003\n\ - .word 0x1609b\n\ -._1399:\n\ - mov r5, r8\n\ - strb r1, [r5]\n\ - ldr r0, [r2]\n\ - ldr r1, ._1526\n\ - and r0, r0, r1\n\ - str r0, [r2]\n\ - ldr r0, ._1526 + 4\n\ - bl BattleScriptPushCursorAndCallback\n\ - b ._1525\n\ -._1527:\n\ - .align 2, 0\n\ -._1526:\n\ - .word 0xfff7ffff\n\ - .word gUnknown_081D978C\n\ -._1432:\n\ - ldr r0, ._1529\n\ - bl BattleScriptPushCursorAndCallback\n\ - ldr r1, ._1529 + 4\n\ - ldr r2, [sp, #0x18]\n\ - add r1, r2, r1\n\ - ldr r0, [r1]\n\ - ldr r2, ._1529 + 8\n\ - and r0, r0, r2\n\ - str r0, [r1]\n\ - ldr r0, ._1529 + 12\n\ - ldr r3, ._1529 + 16\n\ - add r0, r0, r3\n\ - strb r4, [r0]\n\ - ldr r1, ._1529 + 20\n\ - mov r4, #0xfd\n\ - strb r4, [r1]\n\ - mov r0, #0x4\n\ - strb r0, [r1, #0x1]\n\ - ldr r2, ._1529 + 24\n\ - ldrb r0, [r2]\n\ - strb r0, [r1, #0x2]\n\ - ldr r3, ._1529 + 28\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, r3\n\ - ldrh r0, [r0]\n\ - strb r0, [r1, #0x3]\n\ - mov r0, #0xff\n\ - strb r0, [r1, #0x4]\n\ - ldr r1, ._1529 + 32\n\ - strb r4, [r1]\n\ - mov r0, #0x9\n\ - strb r0, [r1, #0x1]\n\ - ldr r0, ._1529 + 36\n\ - ldrb r0, [r0]\n\ - strb r0, [r1, #0x2]\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - strb r0, [r1, #0x3]\n\ - b ._1534\n\ -._1530:\n\ - .align 2, 0\n\ -._1529:\n\ - .word BattleScript_TraceActivates\n\ - .word gStatuses3\n\ - .word 0xffefffff\n\ - .word +0x2000000\n\ - .word 0x16003\n\ - .word gBattleTextBuff1\n\ - .word gActiveBank\n\ - .word gBattlePartyID\n\ - .word gBattleTextBuff2\n\ - .word gLastUsedAbility\n\ -._1442:\n\ - mov r5, r8\n\ - strb r1, [r5]\n\ - ldr r0, [r2]\n\ - ldr r1, ._1532\n\ - and r0, r0, r1\n\ - str r0, [r2]\n\ - bl BattleScriptPushCursor\n\ - ldr r1, ._1532 + 4\n\ - ldr r0, ._1532 + 8\n\ - str r0, [r1]\n\ -._1525:\n\ - ldr r0, ._1532 + 12\n\ - ldr r1, ._1532 + 16\n\ - add r0, r0, r1\n\ - strb r4, [r0]\n\ -._1392:\n\ - mov r0, r9\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ - b ._1534\n\ -._1533:\n\ - .align 2, 0\n\ -._1532:\n\ - .word 0xfff7ffff\n\ - .word gBattlescriptCurrInstr\n\ - .word gUnknown_081D9795\n\ - .word +0x2000000\n\ - .word 0x160dd\n\ -._762:\n\ - mov r4, #0x0\n\ - ldr r0, ._1541\n\ - ldrb r1, [r0]\n\ - cmp r4, r1\n\ - bge ._1534 @cond_branch\n\ - ldr r0, ._1541 + 4\n\ - add r2, r1, #0\n\ - add r1, r0, #0\n\ - add r1, r1, #0x20\n\ - ldr r3, ._1541 + 8\n\ -._1537:\n\ - ldrb r0, [r1]\n\ - cmp r0, r6\n\ - bne ._1536 @cond_branch\n\ - cmp r4, sl\n\ - beq ._1536 @cond_branch\n\ - strb r6, [r3]\n\ - mov r0, r9\n\ - add r0, r0, #0x1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r9, r0\n\ -._1536:\n\ - add r1, r1, #0x58\n\ - add r4, r4, #0x1\n\ - cmp r4, r2\n\ - blt ._1537 @cond_branch\n\ -._1534:\n\ - mov r2, r9\n\ - cmp r2, #0\n\ - beq ._1540 @cond_branch\n\ -._916:\n\ - ldr r3, [sp, #0x4]\n\ - cmp r3, #0xb\n\ - bhi ._1540 @cond_branch\n\ - ldr r1, ._1541 + 8\n\ - ldrb r0, [r1]\n\ - cmp r0, #0xff\n\ - beq ._1540 @cond_branch\n\ - add r1, r0, #0\n\ - mov r0, sl\n\ - bl RecordAbilityBattle\n\ -._1540:\n\ - mov r0, r9\n\ - add sp, sp, #0x28\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r1}\n\ - bx r1\n\ -._1542:\n\ - .align 2, 0\n\ -._1541:\n\ - .word gNoOfAllBanks\n\ - .word gBattleMons\n\ - .word gLastUsedAbility"); -} -#else u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { u8 effect = 0; @@ -5796,17 +1738,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) else moveType = gBattleMoves[move].type; - //_080184AC switch (caseID) { case ABILITYEFFECT_ON_SWITCHIN: // 0 - //_08018518 if (gBankAttacker >= gNoOfAllBanks) gBankAttacker = bank; switch (gLastUsedAbility) { case 0xFF: //weather from overworld - //_08018586 switch (GetCurrentWeather()) { case WEATHER_RAIN_LIGHT: @@ -5846,7 +1785,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_DRIZZLE: - //_08018680 if (!(gBattleWeather & WEATHER_RAIN_PERMANENT)) { gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY); @@ -5856,7 +1794,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_SAND_STREAM: - //_080186B8 if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT)) { gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY); @@ -5866,7 +1803,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_DROUGHT: - //_080186F0 if (!(gBattleWeather & WEATHER_SUN_PERMANENT)) { gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY); @@ -5876,7 +1812,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_INTIMIDATE: - //_08018728 if (!(gSpecialStatuses[bank].intimidatedPoke)) { gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES; @@ -5884,7 +1819,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_FORECAST: - //_0801875C effect = CastformDataTypeChange(bank); if (effect != 0) { @@ -5894,7 +1828,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_TRACE: - //_080187A0 if (!(gSpecialStatuses[bank].traced)) { gStatuses3[bank] |= STATUS3_TRACE; @@ -5903,7 +1836,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) break; case ABILITY_CLOUD_NINE: case ABILITY_AIR_LOCK: - //_080187DC { // that's a weird choice for a variable, why not use i or bank? for (target1 = 0; target1 < gNoOfAllBanks; target1++) @@ -5922,7 +1854,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_ENDTURN: // 1 - //_08018814 if (gBattleMons[bank].hp != 0) { gBankAttacker = bank; @@ -5982,7 +1913,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_MOVES_BLOCK: // 2 - //_08018A40 if (gLastUsedAbility == ABILITY_SOUNDPROOF) { for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++) @@ -6000,7 +1930,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_ABSORBING: // 3 - //_08018AD8 if (move) { switch (gLastUsedAbility) @@ -6070,11 +1999,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_CONTACT: // 4 - //_08018CF0 switch (gLastUsedAbility) { case ABILITY_COLOR_CHANGE: - //_08018DCC if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move != MOVE_STRUGGLE && gBattleMoves[move].power != 0 @@ -6095,7 +2022,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_ROUGH_SKIN: - //_08018E94 if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && gBattleMons[gBankAttacker].hp != 0 && !gProtectStructs[gBankAttacker].confusionSelfDmg @@ -6111,100 +2037,195 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITY_EFFECT_SPORE: - //_08018F54 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (Random() % 10) == 0) - { - do - { - gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; - } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); - if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) - gBattleCommunication[MOVE_EFFECT_BYTE] += 2; - gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } + if (DEBUG && (gUnknown_02023A14_50 & 4)) + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + { + do + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; + } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; + gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } + else + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 10) == 0) + { + do + { + gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; + } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3) + gBattleCommunication[MOVE_EFFECT_BYTE] += 2; + gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } break; case ABILITY_POISON_POINT: - //_0801904C - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (Random() % 3) == 0) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } + if (DEBUG && (gUnknown_02023A14_50 & 4)) + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } + else + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } break; case ABILITY_STATIC: - //_08019128 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (Random() % 3) == 0) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } + if (DEBUG && (gUnknown_02023A14_50 & 4)) + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } + else + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } break; case ABILITY_FLAME_BODY: - //_08019204 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && (Random() % 3) == 0) - { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; - gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - effect++; - } + if (DEBUG && (gUnknown_02023A14_50 & 4)) + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } + else + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && (Random() % 3) == 0) + { + gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43; + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; + gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; + effect++; + } + } break; case ABILITY_CUTE_CHARM: - //_080192E0 - if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) - && gBattleMons[gBankAttacker].hp != 0 - && !gProtectStructs[gBankAttacker].confusionSelfDmg - && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) - && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) - && gBattleMons[gBankTarget].hp != 0 - && (Random() % 3) == 0 - && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) - && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) - && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF - && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) - { - gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); - BattleScriptPushCursor(); - gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; - effect++; - } + if (DEBUG && (gUnknown_02023A14_50 & 4)) + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[gBankTarget].hp != 0 + && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) + { + gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + effect++; + } + } + else + { + if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) + && gBattleMons[gBankAttacker].hp != 0 + && !gProtectStructs[gBankAttacker].confusionSelfDmg + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) + && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special) + && gBattleMons[gBankTarget].hp != 0 + && (Random() % 3) == 0 + && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) + && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) + && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF + && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF) + { + gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10); + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; + effect++; + } + } break; } break; case ABILITYEFFECT_IMMUNITY: // 5 - //_08019448 { for (bank = 0; bank < gNoOfAllBanks; bank++) { @@ -6288,7 +2309,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_FORECAST: // 6 - //_080197B4 { for (bank = 0; bank < gNoOfAllBanks; bank++) { @@ -6307,7 +2327,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_SYNCHRONIZE: // 7 - //_08019804 if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); @@ -6323,7 +2342,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 - //_08019880 if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); @@ -6339,7 +2357,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_INTIMIDATE1: // 9 - //_080198FC for (i = 0; i < gNoOfAllBanks; i++) { if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) @@ -6354,7 +2371,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_TRACE: // 11 - //_08019940 for (i = 0; i < gNoOfAllBanks; i++) { if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) @@ -6368,7 +2384,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) { - //_080199AE gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side); gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; @@ -6376,7 +2391,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) { - //_08019A34 gActiveBank = target1; gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; @@ -6384,7 +2398,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) { - //_08019A78 gActiveBank = target2; gBattleMons[i].ability = gBattleMons[gActiveBank].ability; gLastUsedAbility = gBattleMons[gActiveBank].ability; @@ -6392,7 +2405,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } } else - //_08019ABC { gActiveBank = target1; if (gBattleMons[target1].ability && gBattleMons[target1].hp) @@ -6424,7 +2436,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_INTIMIDATE2: // 10 - //_08019B1C for (i = 0; i < gNoOfAllBanks; i++) { if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) @@ -6440,7 +2451,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 - //_08019B60 side = GetBankSide(bank); for (i = 0; i < gNoOfAllBanks; i++) { @@ -6452,7 +2462,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_CHECK_BANK_SIDE: // 13 - //_08019BBC side = GetBankSide(bank); for (i = 0; i < gNoOfAllBanks; i++) { @@ -6464,7 +2473,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_FIELD_SPORT: // 14 - //_08019C18 switch (gLastUsedAbility) { case 0xFD: @@ -6494,7 +2502,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_CHECK_ON_FIELD: // 19 - //_08019CD4 for (i = 0; i < gNoOfAllBanks; i++) { if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) @@ -6505,7 +2512,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15 - //_08019D18 for (i = 0; i < gNoOfAllBanks; i++) { if (gBattleMons[i].ability == ability && i != bank) @@ -6516,7 +2522,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16 - //_08019D5C side = GetBankSide(bank); for (i = 0; i < gNoOfAllBanks; i++) { @@ -6528,7 +2533,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_COUNT_BANK_SIDE: // 17 - //_08019DB8 side = GetBankSide(bank); for (i = 0; i < gNoOfAllBanks; i++) { @@ -6540,7 +2544,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_COUNT_ON_FIELD: // 18 - //_08019F44 for (i = 0; i < gNoOfAllBanks; i++) { if (gBattleMons[i].ability == ability && i != bank) @@ -6551,14 +2554,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; } - //_08019F76 if (effect && caseID < 0xC && gLastUsedAbility != 0xFF) RecordAbilityBattle(bank, gLastUsedAbility); } return effect; } -#endif void BattleScriptExecute(const u8* BS_ptr) { -- cgit v1.2.3 From 94c9998804e9da20edf5e7285603c3e03b07e3c5 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 24 Jan 2018 18:58:29 -0600 Subject: integrate debug IsMonDisobedient --- src/battle/battle_util.c | 440 ++--------------------------------------------- 1 file changed, 18 insertions(+), 422 deletions(-) (limited to 'src') diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c index faa395a97..194a002d3 100644 --- a/src/battle/battle_util.c +++ b/src/battle/battle_util.c @@ -3439,417 +3439,6 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target return targetBank; } -#if DEBUG -__attribute__((naked)) -u8 IsMonDisobedient(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6, r7}\n\ - add sp, sp, #0xfffffff0\n\ - ldr r0, ._1785\n\ - ldrh r1, [r0]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1791 @cond_branch\n\ - ldr r4, ._1785 + 4\n\ - ldrb r0, [r4]\n\ - bl GetBankSide\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - beq ._1791 @cond_branch\n\ - ldr r2, ._1785 + 8\n\ - ldrb r1, [r4]\n\ - mov r0, #0x58\n\ - mul r1, r1, r0\n\ - add r0, r2, #0\n\ - add r0, r0, #0x54\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - add r2, r2, #0x3c\n\ - add r1, r1, r2\n\ - bl IsOtherTrainer\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1791 @cond_branch\n\ - ldr r0, ._1785 + 12\n\ - ldrb r1, [r0]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1783 @cond_branch\n\ - mov r0, #0xa\n\ - b ._1784\n\ -._1786:\n\ - .align 2, 0\n\ -._1785:\n\ - .word gBattleTypeFlags\n\ - .word gBankAttacker\n\ - .word gBattleMons\n\ - .word gUnknown_02023A14_50\n\ -._1783:\n\ - ldr r0, ._1794\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1791 @cond_branch\n\ - mov r1, #0xa\n\ - mov r8, r1\n\ - ldr r0, ._1794 + 4\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1788 @cond_branch\n\ - mov r2, #0x1e\n\ - mov r8, r2\n\ -._1788:\n\ - ldr r0, ._1794 + 8\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1789 @cond_branch\n\ - mov r4, #0x32\n\ - mov r8, r4\n\ -._1789:\n\ - ldr r0, ._1794 + 12\n\ - bl FlagGet\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1790 @cond_branch\n\ - mov r0, #0x46\n\ -._1784:\n\ - mov r8, r0\n\ -._1790:\n\ - ldr r5, ._1794 + 16\n\ - ldr r7, ._1794 + 20\n\ - ldrb r0, [r7]\n\ - mov r6, #0x58\n\ - mul r0, r0, r6\n\ - add r0, r0, r5\n\ - add r0, r0, #0x2a\n\ - ldrb r0, [r0]\n\ - cmp r0, r8\n\ - bls ._1791 @cond_branch\n\ - bl Random\n\ - mov r1, #0xff\n\ - and r1, r1, r0\n\ - ldrb r0, [r7]\n\ - add r2, r0, #0\n\ - mul r2, r2, r6\n\ - add r0, r2, r5\n\ - add r0, r0, #0x2a\n\ - ldrb r0, [r0]\n\ - add r0, r0, r8\n\ - mul r0, r0, r1\n\ - asr r4, r0, #0x8\n\ - cmp r4, r8\n\ - bge ._1792 @cond_branch\n\ -._1791:\n\ - mov r0, #0x0\n\ - b ._1823\n\ -._1795:\n\ - .align 2, 0\n\ -._1794:\n\ - .word 0x80e\n\ - .word 0x808\n\ - .word 0x80a\n\ - .word 0x80c\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ -._1792:\n\ - ldr r3, ._1801\n\ - ldrh r0, [r3]\n\ - cmp r0, #0x63\n\ - bne ._1796 @cond_branch\n\ - add r0, r5, #0\n\ - add r0, r0, #0x50\n\ - add r0, r2, r0\n\ - ldr r1, [r0]\n\ - ldr r2, ._1801 + 4\n\ - and r1, r1, r2\n\ - str r1, [r0]\n\ -._1796:\n\ - ldrb r0, [r7]\n\ - mul r0, r0, r6\n\ - add r1, r5, #0\n\ - add r1, r1, #0x4c\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x7\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1799 @cond_branch\n\ - ldrh r0, [r3]\n\ - cmp r0, #0xad\n\ - beq ._1798 @cond_branch\n\ - cmp r0, #0xd6\n\ - bne ._1799 @cond_branch\n\ -._1798:\n\ - ldr r1, ._1801 + 8\n\ - ldr r0, ._1801 + 12\n\ - b ._1819\n\ -._1802:\n\ - .align 2, 0\n\ -._1801:\n\ - .word gCurrentMove\n\ - .word 0xff7fffff\n\ - .word gBattlescriptCurrInstr\n\ - .word gUnknown_081D995F\n\ -._1799:\n\ - bl Random\n\ - mov r5, #0xff\n\ - add r1, r5, #0\n\ - and r1, r1, r0\n\ - ldr r6, ._1808\n\ - ldr r2, ._1808 + 4\n\ - mov r9, r2\n\ - ldrb r3, [r2]\n\ - mov r7, #0x58\n\ - add r0, r3, #0\n\ - mul r0, r0, r7\n\ - add r0, r0, r6\n\ - add r0, r0, #0x2a\n\ - ldrb r2, [r0]\n\ - mov r4, r8\n\ - add r0, r2, r4\n\ - mul r0, r0, r1\n\ - asr r4, r0, #0x8\n\ - cmp r4, r8\n\ - bge ._1803 @cond_branch\n\ - ldr r7, ._1808 + 8\n\ - ldr r5, ._1808 + 12\n\ - ldrb r0, [r5]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r7\n\ - ldrb r1, [r0]\n\ - add r0, r3, #0\n\ - mov r2, #0xff\n\ - bl CheckMoveLimitations\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0xf\n\ - bne ._1804 @cond_branch\n\ - b ._1805\n\ -._1804:\n\ - add r6, r5, #0\n\ - ldr r0, ._1808 + 16\n\ - mov r9, r0\n\ - mov r1, #0x3\n\ - mov r8, r1\n\ -._1806:\n\ - bl Random\n\ - mov r2, r8\n\ - and r0, r0, r2\n\ - mov r1, r9\n\ - strb r0, [r1]\n\ - strb r0, [r6]\n\ - ldrb r0, [r6]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r7\n\ - ldr r5, [r0]\n\ - and r5, r5, r4\n\ - cmp r5, #0\n\ - bne ._1806 @cond_branch\n\ - ldr r4, ._1808 + 20\n\ - ldr r3, ._1808\n\ - ldr r0, ._1808 + 12\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x1\n\ - ldr r1, ._1808 + 4\n\ - ldrb r2, [r1]\n\ - mov r1, #0x58\n\ - mul r1, r1, r2\n\ - add r0, r0, r1\n\ - add r3, r3, #0xc\n\ - add r0, r0, r3\n\ - ldrh r0, [r0]\n\ - strh r0, [r4]\n\ - ldr r0, ._1808 + 24\n\ - strb r5, [r0, #0x3]\n\ - ldr r0, ._1808 + 28\n\ - mov r1, #0x0\n\ - strh r5, [r0]\n\ - ldr r0, ._1808 + 32\n\ - ldr r2, ._1808 + 36\n\ - add r0, r0, r2\n\ - strb r1, [r0]\n\ - ldr r1, ._1808 + 40\n\ - ldr r0, ._1808 + 44\n\ - str r0, [r1]\n\ - ldrh r0, [r4]\n\ - mov r1, #0x0\n\ - bl GetMoveTarget\n\ - ldr r1, ._1808 + 48\n\ - strb r0, [r1]\n\ - ldr r2, ._1808 + 52\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0xe\n\ - b ._1807\n\ -._1809:\n\ - .align 2, 0\n\ -._1808:\n\ - .word gBattleMons\n\ - .word gBankAttacker\n\ - .word gBitTable\n\ - .word gCurrMovePos\n\ - .word gUnknown_02024BE5\n\ - .word gRandomMove\n\ - .word gBattleCommunication\n\ - .word gDynamicBasePower\n\ - .word +0x2000000\n\ - .word 0x1601c\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_IgnoresAndUsesRandomMove\n\ - .word gBankTarget\n\ - .word gHitMarker\n\ -._1803:\n\ - mov r4, r8\n\ - sub r0, r2, r4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - mov r8, r0\n\ - bl Random\n\ - add r4, r5, #0\n\ - and r4, r4, r0\n\ - cmp r4, r8\n\ - bge ._1818 @cond_branch\n\ - mov r1, r9\n\ - ldrb r0, [r1]\n\ - add r1, r0, #0\n\ - mul r1, r1, r7\n\ - add r0, r6, #0\n\ - add r0, r0, #0x4c\n\ - add r0, r1, r0\n\ - ldr r0, [r0]\n\ - and r0, r0, r5\n\ - cmp r0, #0\n\ - bne ._1818 @cond_branch\n\ - add r0, r1, r6\n\ - add r0, r0, #0x20\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x48\n\ - beq ._1818 @cond_branch\n\ - cmp r0, #0xf\n\ - beq ._1818 @cond_branch\n\ - mov r2, #0x0\n\ - ldr r0, ._1820\n\ - ldrb r3, [r0]\n\ - add r7, r0, #0\n\ - cmp r2, r3\n\ - bge ._1816 @cond_branch\n\ - ldr r0, [r6, #0x50]\n\ - mov r1, #0x70\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1816 @cond_branch\n\ - add r1, r6, #0\n\ - add r1, r1, #0x50\n\ - mov r5, #0x70\n\ -._1817:\n\ - add r1, r1, #0x58\n\ - add r2, r2, #0x1\n\ - cmp r2, r3\n\ - bge ._1816 @cond_branch\n\ - ldr r0, [r1]\n\ - and r0, r0, r5\n\ - cmp r0, #0\n\ - beq ._1817 @cond_branch\n\ -._1816:\n\ - ldrb r7, [r7]\n\ - cmp r2, r7\n\ - bne ._1818 @cond_branch\n\ - ldr r1, ._1820 + 4\n\ - ldr r0, ._1820 + 8\n\ - b ._1819\n\ -._1821:\n\ - .align 2, 0\n\ -._1820:\n\ - .word gNoOfAllBanks\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_IgnoresAndFallsAsleep\n\ -._1818:\n\ - mov r2, r8\n\ - sub r4, r4, r2\n\ - cmp r4, r8\n\ - blt ._1822 @cond_branch\n\ -._1805:\n\ - bl Random\n\ - ldr r2, ._1824\n\ - mov r1, #0x3\n\ - and r1, r1, r0\n\ - strb r1, [r2, #0x5]\n\ - ldr r1, ._1824 + 4\n\ - ldr r0, ._1824 + 8\n\ -._1819:\n\ - str r0, [r1]\n\ - mov r0, #0x1\n\ - b ._1823\n\ -._1825:\n\ - .align 2, 0\n\ -._1824:\n\ - .word gBattleCommunication\n\ - .word gBattlescriptCurrInstr\n\ - .word BattleScript_MoveUsedLoafingAround\n\ -._1822:\n\ - ldr r4, ._1826\n\ - ldrb r1, [r4]\n\ - mov r0, #0x58\n\ - mul r1, r1, r0\n\ - ldr r0, ._1826 + 4\n\ - add r1, r1, r0\n\ - mov r0, #0x28\n\ - str r0, [sp]\n\ - mov r0, #0x0\n\ - str r0, [sp, #0x4]\n\ - ldrb r0, [r4]\n\ - str r0, [sp, #0x8]\n\ - ldrb r0, [r4]\n\ - str r0, [sp, #0xc]\n\ - add r0, r1, #0\n\ - mov r2, #0x1\n\ - mov r3, #0x0\n\ - bl CalculateBaseDamage\n\ - ldr r1, ._1826 + 8\n\ - str r0, [r1]\n\ - ldr r1, ._1826 + 12\n\ - ldrb r0, [r4]\n\ - strb r0, [r1]\n\ - ldr r1, ._1826 + 16\n\ - ldr r0, ._1826 + 20\n\ - str r0, [r1]\n\ - ldr r2, ._1826 + 24\n\ - ldr r0, [r2]\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0xc\n\ -._1807:\n\ - orr r0, r0, r1\n\ - str r0, [r2]\n\ - mov r0, #0x2\n\ -._1823:\n\ - add sp, sp, #0x10\n\ - pop {r3, r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4, r5, r6, r7}\n\ - pop {r1}\n\ - bx r1\n\ -._1827:\n\ - .align 2, 0\n\ -._1826:\n\ - .word gBankAttacker\n\ - .word gBattleMons\n\ - .word gBattleMoveDamage\n\ - .word gBankTarget\n\ - .word gBattlescriptCurrInstr\n\ - .word gUnknown_081D99A0\n\ - .word gHitMarker"); -} -#else u8 IsMonDisobedient(void) { u8 obedienceLevel; @@ -3858,17 +3447,25 @@ u8 IsMonDisobedient(void) if (gBattleTypeFlags & BATTLE_TYPE_LINK || GetBankSide(gBankAttacker) == 1 - || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName) - || FlagGet(FLAG_BADGE08_GET)) - return 0; + || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)) + return 0; - obedienceLevel = 10; - if (FlagGet(FLAG_BADGE02_GET)) - obedienceLevel = 30; - if (FlagGet(FLAG_BADGE04_GET)) - obedienceLevel = 50; - if (FlagGet(FLAG_BADGE06_GET)) - obedienceLevel = 70; + if (DEBUG && (gUnknown_02023A14_50 & 0x40)) + { + obedienceLevel = 10; + } + else + { + if (FlagGet(FLAG_BADGE08_GET)) + return 0; + obedienceLevel = 10; + if (FlagGet(FLAG_BADGE02_GET)) + obedienceLevel = 30; + if (FlagGet(FLAG_BADGE04_GET)) + obedienceLevel = 50; + if (FlagGet(FLAG_BADGE06_GET)) + obedienceLevel = 70; + } if (gBattleMons[gBankAttacker].level <= obedienceLevel) return 0; @@ -3950,4 +3547,3 @@ u8 IsMonDisobedient(void) } } } -#endif -- cgit v1.2.3 From 8cce68537704adb0d1d34a96fa977675ad1a0340 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 24 Jan 2018 20:11:06 -0600 Subject: integrate debug functions in field_control_avatar.c --- src/field/field_control_avatar.c | 537 ++++++--------------------------------- src/scene/new_game.c | 4 - 2 files changed, 77 insertions(+), 464 deletions(-) (limited to 'src') diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 9ac5ae11d..8dc1fed18 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -4,6 +4,7 @@ #include "bike.h" #include "coord_event_weather.h" #include "daycare.h" +#include "debug.h" #include "event_data.h" #include "field_fadetransition.h" #include "field_player_avatar.h" @@ -35,6 +36,7 @@ extern u16 gSpecialVar_Facing; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; +extern u8 gUnknown_020297ED; static EWRAM_DATA u8 gUnknown_0202E8C0 = 0; static EWRAM_DATA u16 gUnknown_0202E8C2 = 0; @@ -82,28 +84,28 @@ extern u8 gUnknown_081C6BDE[]; static void player_get_pos_to_and_height(struct MapPosition *); static void player_get_next_pos_and_height(struct MapPosition *); -/*static*/ u16 cur_mapdata_block_role_at_player_pos(int); -/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c); +static u16 cur_mapdata_block_role_at_player_pos(int); +static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c); static u8 *TryGetScriptOnPressingA(struct MapPosition *position, u8 b, u8 c); static u8 *sub_8068364(struct MapPosition *, u8, u8); static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *, u8, u8 c); static u8 *sub_8068500(struct MapPosition *, u8, u8); static u8 *TryGetFieldMoveScript(struct MapPosition *, u8, u8); -/*static*/ bool32 sub_8068770(void); -/*static*/ bool32 sub_80687A4(void); -/*static*/ bool8 sub_80687E4(struct MapPosition *, u16, u16); +static bool32 sub_8068770(void); +static bool32 sub_80687A4(void); +static bool8 sub_80687E4(struct MapPosition *, u16, u16); static void happiness_algorithm_step(void); static bool8 overworld_poison_step(void); -/*static*/ bool8 is_it_battle_time_3(u16); -/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8); +static bool8 is_it_battle_time_3(u16); +static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *, u16, u8); static bool8 sub_8068B30(u16); static bool8 is_non_stair_warp_tile(u16, u8); static s8 map_warp_check_packed(struct MapHeader *, struct MapPosition *); static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *); -/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8); +static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8); static s8 map_warp_check(struct MapHeader *, u16, u16, u8); static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8); -static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8); +static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);; void FieldClearPlayerInput(struct FieldInput *input) { @@ -122,230 +124,6 @@ void FieldClearPlayerInput(struct FieldInput *input) input->dpadDirection = 0; } -#if DEBUG -__attribute__((naked)) -void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " add r4, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " mov r8, r1\n" - " lsl r2, r2, #0x10\n" - " lsr r5, r2, #0x10\n" - " ldr r0, ._17\n" - " ldrb r6, [r0, #0x3]\n" - " ldrb r0, [r0, #0x2]\n" - " mov r9, r0\n" - " bl cur_mapdata_block_role_at_player_pos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl MetatileBehavior_IsMoveTile\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r6, #0x2\n" - " bne ._1 @cond_branch\n" - " cmp r7, #0\n" - " beq ._2 @cond_branch\n" - "._1:\n" - " cmp r6, #0\n" - " bne ._9 @cond_branch\n" - "._2:\n" - " bl GetPlayerSpeed\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x4\n" - " beq ._8 @cond_branch\n" - " mov r0, #0x8\n" - " mov r1, r8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._5 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x4\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._5:\n" - " mov r0, #0x4\n" - " mov r3, r8\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._6 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x8\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._6:\n" - " mov r0, #0x1\n" - " mov r1, r8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._7 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x1\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._7:\n" - " mov r0, #0x2\n" - " mov r3, r8\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._8 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x80\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._8:\n" - " mov r0, #0xf0\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._9 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x10\n" - " orr r0, r0, r1\n" - " mov r1, #0x20\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._9:\n" - " cmp r7, #0\n" - " bne ._14 @cond_branch\n" - " cmp r6, #0x2\n" - " bne ._12 @cond_branch\n" - " mov r0, r9\n" - " cmp r0, #0x2\n" - " bne ._12 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x40\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._12:\n" - " cmp r7, #0\n" - " bne ._14 @cond_branch\n" - " cmp r6, #0x2\n" - " bne ._14 @cond_branch\n" - " ldrb r0, [r4]\n" - " mov r1, #0x2\n" - " orr r0, r0, r1\n" - " strb r0, [r4]\n" - "._14:\n" - " mov r0, #0x40\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._15 @cond_branch\n" - " mov r0, #0x2\n" - " b ._22\n" - "._18:\n" - " .align 2, 0\n" - "._17:\n" - " .word gPlayerAvatar\n" - "._15:\n" - " mov r0, #0x80\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._19 @cond_branch\n" - " mov r0, #0x1\n" - " b ._22\n" - "._19:\n" - " mov r0, #0x20\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._21 @cond_branch\n" - " mov r0, #0x3\n" - " b ._22\n" - "._21:\n" - " mov r0, #0x10\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._23 @cond_branch\n" - " mov r0, #0x4\n" - "._22:\n" - " strb r0, [r4, #0x2]\n" - "._23:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._25 @cond_branch\n" - " ldrb r2, [r4]\n" - " mov r0, #0x4\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._25 @cond_branch\n" - " ldrb r0, [r4, #0x1]\n" - " mov r1, #0x4\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x1]\n" - " mov r0, #0x5\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " strb r0, [r4]\n" - "._25:\n" - " ldr r0, ._30\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._29 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._28 @cond_branch\n" - " ldrb r1, [r4, #0x1]\n" - " mov r0, #0x2\n" - " orr r1, r1, r0\n" - " strb r1, [r4, #0x1]\n" - " ldrb r0, [r4]\n" - " mov r2, #0x41\n" - " neg r2, r2\n" - " and r2, r2, r0\n" - " mov r0, #0x3\n" - " neg r0, r0\n" - " and r2, r2, r0\n" - " sub r0, r0, #0xe\n" - " and r2, r2, r0\n" - " sub r0, r0, #0x10\n" - " and r2, r2, r0\n" - " strb r2, [r4]\n" - " mov r0, #0x4\n" - " mov r3, r8\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._28 @cond_branch\n" - " mov r0, #0x1\n" - " orr r1, r1, r0\n" - " strb r1, [r4, #0x1]\n" - " mov r0, #0x9\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " strb r0, [r4]\n" - "._28:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r5\n" - " cmp r0, #0\n" - " beq ._29 @cond_branch\n" - " ldrb r0, [r4, #0x1]\n" - " mov r1, #0x8\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x1]\n" - "._29:\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._31:\n" - " .align 2, 0\n" - "._30:\n" - " .word gUnknown_020297ED\n" - "\n" - ); -} -#else void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) { u8 r6 = gPlayerAvatar.tileTransitionState; @@ -386,223 +164,33 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) input->dpadDirection = DIR_WEST; else if (heldKeys & DPAD_RIGHT) input->dpadDirection = DIR_EAST; -} -#endif - #if DEBUG -__attribute__((naked)) -int sub_8068024(struct FieldInput *input) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r5, r0, #0\n" - " bl player_get_direction_lower_nybble\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " mov r4, sp\n" - " mov r0, sp\n" - " bl player_get_pos_to_and_height\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x2\n" - " ldsh r1, [r4, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " ldrb r1, [r5, #0x1]\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._33 @cond_branch\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " bl dive_warp\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._33 @cond_branch\n" - " b ._63\n" - "._33:\n" - " ldrb r1, [r5, #0x1]\n" - " mov r6, #0x2\n" - " add r0, r6, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._39 @cond_branch\n" - " bl CheckTrainers\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._36 @cond_branch\n" - " b ._63\n" - "._36:\n" - " ldrb r1, [r5, #0x1]\n" - " add r0, r6, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._39 @cond_branch\n" - " bl mapheader_run_first_tag2_script_list_match\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._39 @cond_branch\n" - " b ._63\n" - "._39:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._42 @cond_branch\n" - " bl sub_80687A4\n" - " cmp r0, #0x1\n" - " bne ._42 @cond_branch\n" - " b ._63\n" - "._42:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._44 @cond_branch\n" - " mov r0, #0x5\n" - " bl IncrementGameStat\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " add r2, r7, #0\n" - " bl sub_80687E4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._44:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._46 @cond_branch\n" - " add r0, r4, #0\n" - " bl is_it_battle_time_3\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._46:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._49 @cond_branch\n" - " ldrb r0, [r5, #0x2]\n" - " cmp r0, r7\n" - " bne ._49 @cond_branch\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " add r2, r7, #0\n" - " bl mapheader_run_first_tag2_script_list_match_conditionally\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._49:\n" - " mov r4, sp\n" - " mov r0, sp\n" - " bl player_get_next_pos_and_height\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x2\n" - " ldsh r1, [r4, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " ldrb r1, [r5]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._51 @cond_branch\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " add r2, r7, #0\n" - " bl sub_80681F0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._51:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._54 @cond_branch\n" - " ldrb r0, [r5, #0x2]\n" - " cmp r0, r7\n" - " bne ._54 @cond_branch\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " add r2, r7, #0\n" - " bl map_warp_consider_2_to_inside\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._54:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._56 @cond_branch\n" - " bl sub_8068770\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._56:\n" - " ldrb r1, [r5]\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._58 @cond_branch\n" - " mov r0, #0x6\n" - " bl PlaySE\n" - " bl sub_8071310\n" - " b ._63\n" - "._58:\n" - " mov r0, #0x8\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._60 @cond_branch\n" - " bl sub_80A6D1C\n" - " cmp r0, #0x1\n" - " beq ._63 @cond_branch\n" - "._60:\n" - " ldrb r1, [r5, #0x1]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._62 @cond_branch\n" - " bl debug_sub_80888D8\n" - " b ._63\n" - "._62:\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._64 @cond_branch\n" - " mov r0, #0x0\n" - " b ._65\n" - "._64:\n" - " mov r0, #0x6\n" - " bl PlaySE\n" - " bl DebugMenu_8077048\n" - "._63:\n" - " mov r0, #0x1\n" - "._65:\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if ((heldKeys & R_BUTTON) && input->pressedStartButton) + { + input->input_field_1_2 = TRUE; + input->pressedStartButton = FALSE; + } + if (gUnknown_020297ED) + { + if (heldKeys & R_BUTTON) + { + input->input_field_1_1 = TRUE; + input->input_field_0_6 = FALSE; + input->input_field_0_1 = FALSE; + input->input_field_0_4 = FALSE; + input->input_field_0_5 = FALSE; + if (newKeys & SELECT_BUTTON) + { + input->input_field_1_0 = TRUE; + input->pressedSelectButton = FALSE; + } + } + if (heldKeys & L_BUTTON) + input->input_field_1_3 = TRUE; + } +#endif } -#else + int sub_8068024(struct FieldInput *input) { struct MapPosition position; @@ -612,10 +200,25 @@ int sub_8068024(struct FieldInput *input) r6 = player_get_direction_lower_nybble(); player_get_pos_to_and_height(&position); r4 = MapGridGetMetatileBehaviorAt(position.x, position.y); - if (CheckTrainers() == TRUE) +#if DEBUG + if (input->input_field_1_3 && dive_warp(&position, r4) == TRUE) return TRUE; - if (mapheader_run_first_tag2_script_list_match() == 1) +#endif + + if ( +#if DEBUG + !input->input_field_1_1 +#endif + && CheckTrainers() == TRUE) return TRUE; + + if ( +#if DEBUG + !input->input_field_1_1 +#endif + && mapheader_run_first_tag2_script_list_match() == 1) + return TRUE; + if (input->pressedBButton && sub_80687A4() == 1) return TRUE; if (input->input_field_0_6) @@ -650,9 +253,23 @@ int sub_8068024(struct FieldInput *input) } if (input->pressedSelectButton && sub_80A6D1C() == TRUE) return TRUE; + +#if DEBUG + if (input->input_field_1_0) + { + debug_sub_80888D8(); + return TRUE; + } + if (input->input_field_1_2) + { + PlaySE(SE_WIN_OPEN); + DebugMenu_8077048(); + return TRUE; + } +#endif + return FALSE; } -#endif static void player_get_pos_to_and_height(struct MapPosition *position) { @@ -672,7 +289,7 @@ static void player_get_next_pos_and_height(struct MapPosition *position) position->height = 0; } -/*static*/ u16 cur_mapdata_block_role_at_player_pos(int unused) +static u16 cur_mapdata_block_role_at_player_pos(int unused) { s16 x, y; @@ -680,7 +297,7 @@ static void player_get_next_pos_and_height(struct MapPosition *position) return MapGridGetMetatileBehaviorAt(x, y); } -/*static*/ bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) +static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) { u8 *script = TryGetScriptOnPressingA(position, b, c); @@ -875,7 +492,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) return NULL; } -/*static*/ bool32 sub_8068770(void) +static bool32 sub_8068770(void) { if (FlagGet(FLAG_BADGE07_GET) && sub_8068F18() == 2) { @@ -885,7 +502,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) return FALSE; } -/*static*/ bool32 sub_80687A4(void) +static bool32 sub_80687A4(void) { if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) { @@ -895,7 +512,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) return FALSE; } -/*static*/ bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused) +static bool8 sub_80687E4(struct MapPosition *position, u16 b, u16 unused) { if (mapheader_trigger_activate_at__run_now(position) == TRUE) return TRUE; @@ -1015,7 +632,7 @@ void prev_quest_postbuffer_cursor_backup_reset(void) gUnknown_0202E8C0 = 0; } -/*static*/ bool8 is_it_battle_time_3(u16 a) +static bool8 is_it_battle_time_3(u16 a) { if (gUnknown_0202E8C0 < 4) { @@ -1036,7 +653,7 @@ void prev_quest_postbuffer_cursor_backup_reset(void) } } -/*static*/ bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c) +static bool8 mapheader_run_first_tag2_script_list_match_conditionally(struct MapPosition *position, u16 b, u8 c) { s8 r6 = map_warp_check_packed(&gMapHeader, position); @@ -1144,7 +761,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi } } -/*static*/ bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c) +static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b, u8 c) { s8 r4; @@ -1250,7 +867,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea return NULL; } -int dive_warp(struct MapPosition *position, u16 b) +bool8 dive_warp(struct MapPosition *position, u16 b) { if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0) { diff --git a/src/scene/new_game.c b/src/scene/new_game.c index cec7134a3..e64dc91e3 100644 --- a/src/scene/new_game.c +++ b/src/scene/new_game.c @@ -31,10 +31,6 @@ #include "text.h" #include "tv.h" -#if DEBUG -extern u8 gUnknown_020297ED; -#endif - EWRAM_DATA u8 gDifferentSaveFile = 0; EWRAM_DATA u8 gUnknown_020297ED = 0; -- cgit v1.2.3 From d6f6e12490f5d980c66c2de0f767bbaf8da75da1 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 24 Jan 2018 20:16:00 -0600 Subject: fix build --- src/field/field_control_avatar.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 8dc1fed18..48eb64dd7 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -207,16 +207,16 @@ int sub_8068024(struct FieldInput *input) if ( #if DEBUG - !input->input_field_1_1 + !input->input_field_1_1 && #endif - && CheckTrainers() == TRUE) + CheckTrainers() == TRUE) return TRUE; if ( #if DEBUG - !input->input_field_1_1 + !input->input_field_1_1 && #endif - && mapheader_run_first_tag2_script_list_match() == 1) + mapheader_run_first_tag2_script_list_match() == 1) return TRUE; if (input->pressedBButton && sub_80687A4() == 1) -- cgit v1.2.3 From 4c1e0b8b303320a173203b8ab94c2a695555ace3 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 00:07:15 -0600 Subject: integrate debug functions in mail.c and decompile some debug code --- src/engine/sprite.c | 2 +- src/pokemon/mail.c | 1712 +++++++++++---------------------------------------- 2 files changed, 344 insertions(+), 1370 deletions(-) (limited to 'src') diff --git a/src/engine/sprite.c b/src/engine/sprite.c index df8c66750..a9d84e01a 100644 --- a/src/engine/sprite.c +++ b/src/engine/sprite.c @@ -815,7 +815,7 @@ void ProcessSpriteCopyRequests(void) } } -/*static*/ void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images) +static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images) { if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS) { diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 11851410b..16252af64 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -1,7 +1,10 @@ #include "global.h" #include "mail.h" +#include "data2.h" #include "easy_chat.h" #include "constants/items.h" +#include "constants/species.h" +#include "field_fadetransition.h" #include "graphics.h" #include "mail_data.h" #include "menu.h" @@ -10,6 +13,7 @@ #include "palette.h" #include "pokemon_icon.h" #include "overworld.h" +#include "script.h" #include "sprite.h" #include "string_util.h" #include "strings2.h" @@ -18,6 +22,8 @@ #include "scanline_effect.h" #include "ewram.h" +extern u8 (*gMenuCallback)(void); + struct UnkMailStruct { u8 unk_0_0:2; @@ -287,31 +293,6 @@ const u8 Str_8411608[] = _("メールをけす"); // Delete Mail // XXX: what is this? static u8 *const sSharedMemPtr = gSharedMem; -#if DEBUG - -const u8 Str_841160F[] = _("{STR_VAR_1} {STR_VAR_2}"); -const u8 Str_841161A[] = _("メール{STR_VAR_1} {STR_VAR_2}"); -const u8 Str_8411623[] = _("メール{STR_VAR_1}を だれに もたせる?"); -const u8 Str_8411634[] = _("000 {STR_VAR_1}"); -const u8 Str_841163B[] = _("せいきの データが とうろくずみ です\n" - "しんき とうろく できません"); -const u8 Str_841165E[] = _("せいきに とうろくされたメールデータは\n" - "へんこう できません"); -const u8 Str_841167D[] = _("メール{STR_VAR_1} とうろく かいじょ"); -const u8 Str_841168D[] = _("デバッグメニューから とうろくした\n" - "メール いがいは けせません"); -const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); - -const struct MenuAction _84116BC[] = -{ - {Str_84115F4, NULL}, - {Str_84115FB, NULL}, - {Str_8411603, NULL}, - {Str_8411608, NULL}, -}; - -#endif - static u8 sub_80F8A28(void); /*static*/ void sub_80F8D50(void); static void sub_80F8DA0(void); @@ -322,226 +303,44 @@ static void sub_80F8F58(void); static void sub_80F8F78(void); static void sub_80F8FB4(void); +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; + #if DEBUG -// some debug variable, I guess. -// TODO: where exactly is this located? -__attribute__((section(".bss"))) /*static*/ u8 gUnknown_0300074C = 0; +static u8 gUnknown_Debug_0300079C; #endif -#if DEBUG -__attribute__((naked)) -void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) -{ - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r2, r2, #0x18\n" - " lsr r5, r2, #0x18\n" - " ldr r0, .__3\n" - " ldrb r3, [r0]\n" - " cmp r3, #0\n" - " beq .__1 @cond_branch\n" - " ldr r2, .__3 + 4\n" - " add r1, r2, #0\n" - " add r1, r1, #0xff\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " ldr r0, .__3 + 8\n" - " ldrh r1, [r0]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x1\n" - " add r0, r2, r3\n" - " strb r1, [r0]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, .__3 + 12\n" - " str r0, [r1]\n" - " add r3, r3, #0x8\n" - " add r1, r2, r3\n" - " ldr r0, .__3 + 16\n" - " str r0, [r1]\n" - " ldr r0, .__3 + 20\n" - " ldrh r1, [r0]\n" - " b .__2\n" - ".__4:\n" - " .align 2, 0\n" - ".__3:\n" - " .word gUnknown_0300074C\n" - " .word +0x2000000\n" - " .word gSpecialVar_0x8004\n" - " .word EasyChat_GetWordText+1\n" - " .word ConvertEasyChatWordsToString+1\n" - " .word gSpecialVar_0x8006\n" - ".__1:\n" - " ldr r2, .__7\n" - " add r1, r2, #0\n" - " add r1, r1, #0xff\n" - " mov r0, #0x5\n" - " strb r0, [r1]\n" - " add r0, r0, #0xfb\n" - " add r1, r2, r0\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, .__7 + 4\n" - " str r0, [r1]\n" - " mov r0, #0x84\n" - " lsl r0, r0, #0x1\n" - " add r1, r2, r0\n" - " ldr r0, .__7 + 8\n" - " str r0, [r1]\n" - " ldrh r1, [r4, #0x20]\n" - " add r0, r1, #0\n" - " sub r0, r0, #0x79\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi .__5 @cond_branch\n" - " sub r1, r1, #0x79\n" - ".__2:\n" - " add r0, r2, #0\n" - " add r0, r0, #0xfa\n" - " strb r1, [r0]\n" - " b .__6\n" - ".__8:\n" - " .align 2, 0\n" - ".__7:\n" - " .word +0x2000000\n" - " .word EasyChat_GetWordText+1\n" - " .word ConvertEasyChatWordsToString+1\n" - ".__5:\n" - " add r0, r2, #0\n" - " add r0, r0, #0xfa\n" - " strb r3, [r0]\n" - " mov r5, #0x0\n" - ".__6:\n" - " ldr r1, .__12\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq .__9 @cond_branch\n" - " cmp r0, #0x1\n" - " beq .__10 @cond_branch\n" - ".__9:\n" - " mov r3, #0x86\n" - " lsl r3, r3, #0x1\n" - " add r2, r1, r3\n" - " add r0, r1, #0\n" - " add r0, r0, #0xfa\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, .__12 + 4\n" - " b .__11\n" - ".__13:\n" - " .align 2, 0\n" - ".__12:\n" - " .word +0x2000000\n" - " .word gUnknown_083E5730\n" - ".__10:\n" - " mov r0, #0x86\n" - " lsl r0, r0, #0x1\n" - " add r2, r1, r0\n" - " add r0, r1, #0\n" - " add r0, r0, #0xfa\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, .__18\n" - ".__11:\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " ldrh r0, [r4, #0x1e]\n" - " mov r1, sp\n" - " bl MailSpeciesToSpecies\n" - " lsl r0, r0, #0x10\n" - " ldr r1, .__18 + 4\n" - " add r0, r0, r1\n" - " mov r1, #0xcd\n" - " lsl r1, r1, #0x11\n" - " cmp r0, r1\n" - " bhi .__14 @cond_branch\n" - " ldr r0, .__18 + 8\n" - " add r1, r0, #0\n" - " add r1, r1, #0xfa\n" - " ldrb r2, [r1]\n" - " add r1, r0, #0\n" - " cmp r2, #0x6\n" - " beq .__15 @cond_branch\n" - " cmp r2, #0x9\n" - " beq .__16 @cond_branch\n" - " b .__17\n" - ".__19:\n" - " .align 2, 0\n" - ".__18:\n" - " .word gUnknown_083E57A4\n" - " .word 0xffff0000\n" - " .word +0x2000000\n" - ".__15:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x1\n" - " b .__21\n" - ".__16:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x2\n" - " b .__21\n" - ".__14:\n" - " ldr r1, .__22\n" - ".__17:\n" - " add r2, r1, #0\n" - " add r2, r2, #0xfb\n" - " mov r0, #0x0\n" - ".__21:\n" - " strb r0, [r2]\n" - " add r0, r1, #0\n" - " add r0, r0, #0xf4\n" - " str r4, [r0]\n" - " sub r0, r0, #0x8\n" - " str r6, [r0]\n" - " add r0, r0, #0xc\n" - " strb r5, [r0]\n" - " ldr r0, .__22 + 4\n" - " bl SetMainCallback2\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - ".__23:\n" - " .align 2, 0\n" - ".__22:\n" - " .word +0x2000000\n" - " .word sub_80F8D50+1\n" - "\n" - ); -} -#else void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) { - u16 mailDesign; u16 buffer[2]; + u16 species; - ewram0_4.varFF = GAME_LANGUAGE; - ewram0_4.var100 = 1; - ewram0_4.var104 = (MainCallback)EasyChat_GetWordText; - ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString; - - mailDesign = arg0->itemId - ITEM_ORANGE_MAIL; - - if (mailDesign <= 11) +#if DEBUG + if (gUnknown_Debug_0300079C != 0) { - ewram0_4.varFA = arg0->itemId - ITEM_ORANGE_MAIL; + ewram0_4.varFF = GAME_LANGUAGE; + ewram0_4.var100 = gSpecialVar_0x8004; + ewram0_4.var104 = (MainCallback)EasyChat_GetWordText; + ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString; + ewram0_4.varFA = gSpecialVar_0x8006; } else +#endif { - ewram0_4.varFA = 0; - arg2 = FALSE; + ewram0_4.varFF = GAME_LANGUAGE; + ewram0_4.var100 = 1; + ewram0_4.var104 = (MainCallback)EasyChat_GetWordText; + ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString; + if (IS_ITEM_MAIL(arg0->itemId)) + { + ewram0_4.varFA = arg0->itemId - 0x79; + } + else + { + ewram0_4.varFA = 0; + arg2 = FALSE; + } } switch (ewram0_4.var100) @@ -550,24 +349,22 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) default: ewram0_4.var10C = &gUnknown_083E5730[ewram0_4.varFA]; break; - case 1: ewram0_4.var10C = &gUnknown_083E57A4[ewram0_4.varFA]; break; } - if (((MailSpeciesToSpecies(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16)) + species = MailSpeciesToSpecies(arg0->species, buffer); + if (species >= 1 && species <= 411) { switch (ewram0_4.varFA) { case 6: ewram0_4.varFB = 1; break; - case 9: ewram0_4.varFB = 2; break; - default: ewram0_4.varFB = 0; break; @@ -578,14 +375,12 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2) ewram0_4.varFB = 0; } - ewram0_4.varF4 = arg0; ewram0_4.varEC = arg1; ewram0_4.varF8 = arg2; SetMainCallback2(sub_80F8D50); } -#endif #define RETURN_UP_STATE break #define RETURN_SKIP_STATE return FALSE @@ -849,1180 +644,359 @@ static void sub_80F8F78(void) } } +static void sub_80F8FB4(void) +{ + if (!UpdatePaletteFade()) + { + SetMainCallback2(ewram0_4.varEC); + switch (ewram0_4.varFB) + { + case 2: + case 1: + sub_809D608(sub_809D4A8(ewram0_4.varF4->species)); + sub_809D510(&gSprites[ewram0_4.varFC]); + break; + } +#if !DEBUG + memset(&ewram0_4, 0, 0x110); +#endif + ResetPaletteFade(); + } +} + #if DEBUG -__attribute__((naked)) -void sub_80F8FB4() + +void debug_sub_810CA7C(u8); +void debug_sub_810CE1C(u8); +void debug_sub_810D388(void); +void debug_sub_810D340(void); + +void debug_sub_810C910(u8 taskId) { - asm( - " push {r4, lr}\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._135 @cond_branch\n" - " ldr r4, ._138\n" - " add r0, r4, #0\n" - " add r0, r0, #0xec\n" - " ldr r0, [r0]\n" - " bl SetMainCallback2\n" - " add r0, r4, #0\n" - " add r0, r0, #0xfb\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x2\n" - " bgt ._137 @cond_branch\n" - " cmp r0, #0x1\n" - " blt ._137 @cond_branch\n" - " add r0, r4, #0\n" - " add r0, r0, #0xf4\n" - " ldr r0, [r0]\n" - " ldrh r0, [r0, #0x1e]\n" - " bl sub_809D4A8\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " bl sub_809D608\n" - " add r0, r4, #0\n" - " add r0, r0, #0xfc\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._138 + 4\n" - " add r0, r0, r1\n" - " bl sub_809D510\n" - "._137:\n" - " bl ResetPaletteFade\n" - "._135:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._139:\n" - " .align 2, 0\n" - "._138:\n" - " .word +0x2000000\n" - " .word gSprites\n" - "\n" - ); + if (!gPaletteFade.active) + { + gUnknown_Debug_0300079C = 1; + Menu_EraseScreen(); + DestroyTask(taskId); + if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId == 0) + HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 0); + else + HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 1); + } } -#else -static void sub_80F8FB4(void) + +void debug_sub_810C990(u8 taskId) { - u16 local1; + if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN)) + { + gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 11) % 12; + Menu_DrawStdWindowFrame(1, 1, 10, 4); + Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2); + } + else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT)) + { + gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 1) % 12; + Menu_DrawStdWindowFrame(1, 1, 10, 4); + Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2); + } + else if (gMain.newKeys & A_BUTTON) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = debug_sub_810C910; + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_8411540, 4, 15); + Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2); + gTasks[taskId].func = debug_sub_810CA7C; + } +} - if (UpdatePaletteFade()) +void debug_sub_810CA7C(u8 taskId) +{ + if (gMain.newKeys & 0xF0) { - return; + gSpecialVar_0x8004 ^= 1; + Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2); + } + else if (gMain.newKeys & A_BUTTON) + { + if (gMain.watchedKeysPressed) + { + gMain.watchedKeysPressed = FALSE; + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_8411540, 4, 15); + Menu_DrawStdWindowFrame(1, 1, 10, 4); + Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2); + } + else + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_8411568, 4, 15); + Menu_DrawStdWindowFrame(1, 1, 10, 4); + Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2); + gTasks[taskId].func = debug_sub_810C990; + } } +} + +void debug_sub_810CB50(u8 taskId) +{ + u8 sp0[] = _("{STR_VAR_1} {STR_VAR_2}"); + u8 sp8[] = _("メール{STR_VAR_1} {STR_VAR_2}"); + bool8 r2 = FALSE; - SetMainCallback2(ewram0_4.varEC); - switch (ewram0_4.varFB) + if (gMain.newKeys & A_BUTTON) { - case 2: - case 1: - local1 = sub_809D4A8(ewram0_4.varF4->species); - sub_809D608(local1); + ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 2, 1); + StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]); + gSaveBlock1.mail[gSpecialVar_0x8005].species = gTasks[taskId].data[0]; + StringExpandPlaceholders(gStringVar4, sp8); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 4, 15); + DestroyTask(taskId); + CreateTask(debug_sub_810CE1C, 0); + debug_sub_810D340(); + return; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + Menu_EraseScreen(); + CreateTask(debug_sub_810CE1C, 0); + debug_sub_810D340(); + return; + } + else if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN)) + { + gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 0x19B) % 0x19C; + r2 = TRUE; + } + else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT)) + { + gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 1) % 0x19C; + r2 = TRUE; + } - sub_809D510(&gSprites[ewram0_4.varFC]); - break; + if (r2) + { + ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[0], 2, 3); + StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]); + StringExpandPlaceholders(gStringVar4, sp0); + Menu_DrawStdWindowFrame(0, 0, 12, 3); + Menu_PrintText(gStringVar4, 1, 1); } +} + +void debug_sub_810CCEC(u8 taskId) +{ + u8 string1[] = _("メール{STR_VAR_1}を だれに もたせる?"); + u8 string2[] = _("000 {STR_VAR_1}"); + + ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1); + StringExpandPlaceholders(gStringVar4, string1); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 4, 15); + + StringCopy(gStringVar1, gSpeciesNames[0]); + StringExpandPlaceholders(gStringVar4, string2); + Menu_DrawStdWindowFrame(0, 0, 12, 3); + Menu_PrintText(string2, 1, 1); // This probably should have been gStringVar4 - memset(&ewram0_4, 0, 0x110); - ResetPaletteFade(); + gTasks[taskId].func = debug_sub_810CB50; } -#endif -#if DEBUG -__attribute__((naked)) -void debug_sub_810C910() +u8 debug_sub_810CD9C(void) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._143\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._142 @cond_branch\n" - " ldr r1, ._143 + 4\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl Menu_EraseScreen\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " ldr r2, ._143 + 8\n" - " ldr r0, ._143 + 12\n" - " ldrh r1, [r0]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r1, r0, #0x2\n" - " add r0, r1, r2\n" - " ldr r3, ._143 + 16\n" - " add r0, r0, r3\n" - " ldrh r0, [r0]\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " sub r3, r3, #0x20\n" - " add r0, r2, r3\n" - " add r0, r1, r0\n" - " ldr r1, ._143 + 20\n" - " mov r2, #0x0\n" - " bl HandleReadMail\n" - " b ._142\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word gPaletteFade\n" - " .word gUnknown_0300074C\n" - " .word gSaveBlock1\n" - " .word gSpecialVar_0x8005\n" - " .word 0x2b6c\n" - " .word debug_sub_810D388+1\n" - "._141:\n" - " ldr r3, ._145\n" - " add r0, r2, r3\n" - " add r0, r1, r0\n" - " ldr r1, ._145 + 4\n" - " mov r2, #0x1\n" - " bl HandleReadMail\n" - "._142:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._146:\n" - " .align 2, 0\n" - "._145:\n" - " .word 0x2b4c\n" - " .word debug_sub_810D388+1\n" - "\n" - ); + CloseMenu(); + ScriptContext1_Stop(); + ScriptContext2_Enable(); + gUnknown_Debug_0300079C = 0; + gSpecialVar_0x8004 = gSpecialVar_0x8005 = gSpecialVar_0x8006 = 0; + SetMainCallback2(debug_sub_810D388); + return 1; } -__attribute__((naked)) -void debug_sub_810C990() +void debug_sub_810CDE0(void) { - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r5, r4, #0\n" - " ldr r0, ._149\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0xa0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._147 @cond_branch\n" - " ldr r4, ._149 + 4\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xb\n" - " b ._148\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word gMain\n" - " .word gSpecialVar_0x8006\n" - "._147:\n" - " mov r2, #0x50\n" - " and r2, r2, r1\n" - " cmp r2, #0\n" - " beq ._151 @cond_branch\n" - " ldr r4, ._153\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - "._148:\n" - " mov r1, #0xc\n" - " bl __modsi3\n" - " strh r0, [r4]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._153 + 4\n" - " ldrh r0, [r4]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " b ._159\n" - "._154:\n" - " .align 2, 0\n" - "._153:\n" - " .word gSpecialVar_0x8006\n" - " .word _84115C4\n" - "._151:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._155 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " str r2, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " ldr r1, ._157\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._157 + 4\n" - " b ._156\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word gTasks\n" - " .word debug_sub_810C910+1\n" - "._155:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._159 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._160\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._160 + 4\n" - " ldr r0, ._160 + 8\n" - " ldrh r0, [r0]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldr r1, ._160 + 12\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._160 + 16\n" - "._156:\n" - " str r1, [r0]\n" - "._159:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word Str_8411540\n" - " .word _8411560\n" - " .word gSpecialVar_0x8004\n" - " .word gTasks\n" - " .word debug_sub_810CA7C+1\n" - "\n" - ); + UpdatePaletteFade(); + RunTasks(); } -__attribute__((naked)) -void debug_sub_810CA7C() +void debug_sub_810CDF0(void) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r3, ._164\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r2, #0xf0\n" - " and r2, r2, r1\n" - " cmp r2, #0\n" - " beq ._162 @cond_branch\n" - " ldr r2, ._164 + 4\n" - " ldrh r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strh r0, [r2]\n" - " ldr r1, ._164 + 8\n" - " ldrh r0, [r2]\n" - " b ._163\n" - "._165:\n" - " .align 2, 0\n" - "._164:\n" - " .word gMain\n" - " .word gSpecialVar_0x8004\n" - " .word _8411560\n" - "._162:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._168 @cond_branch\n" - " ldrh r0, [r3, #0x34]\n" - " cmp r0, #0\n" - " beq ._167 @cond_branch\n" - " strh r2, [r3, #0x34]\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._169\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._169 + 4\n" - " ldr r0, ._169 + 8\n" - " ldrh r0, [r0]\n" - "._163:\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " b ._168\n" - "._170:\n" - " .align 2, 0\n" - "._169:\n" - " .word Str_8411540\n" - " .word _8411560\n" - " .word gSpecialVar_0x8004\n" - "._167:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._171\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0xa\n" - " mov r3, #0x4\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._171 + 4\n" - " ldr r0, ._171 + 8\n" - " ldrh r0, [r0]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldr r1, ._171 + 12\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._171 + 16\n" - " str r1, [r0]\n" - "._168:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._172:\n" - " .align 2, 0\n" - "._171:\n" - " .word Str_8411568\n" - " .word _84115C4\n" - " .word gSpecialVar_0x8006\n" - " .word gTasks\n" - " .word debug_sub_810C990+1\n" - "\n" - ); + gMain.watchedKeysPressed = 0; + gMain.watchedKeysMask = 0; + gFieldCallback = mapldr_default; + SetMainCallback2(c2_exit_to_overworld_2_switch); } -__attribute__((naked)) -void debug_sub_810CB50() +void debug_sub_810CE1C(u8 taskId) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xffffffec\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " ldr r1, ._175\n" - " mov r0, sp\n" - " mov r2, #0x6\n" - " bl memcpy\n" - " add r7, sp, #0x8\n" - " ldr r1, ._175 + 4\n" - " add r0, r7, #0\n" - " mov r2, #0x9\n" - " bl memcpy\n" - " mov r2, #0x0\n" - " ldr r0, ._175 + 8\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._173 @cond_branch\n" - " ldr r0, ._175 + 12\n" - " ldr r5, ._175 + 16\n" - " ldrh r1, [r5]\n" - " mov r2, #0x2\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._175 + 20\n" - " ldr r1, ._175 + 24\n" - " lsl r4, r6, #0x2\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r1\n" - " mov r1, #0x8\n" - " ldsh r2, [r4, r1]\n" - " mov r1, #0xb\n" - " mul r1, r1, r2\n" - " ldr r2, ._175 + 28\n" - " add r1, r1, r2\n" - " bl StringCopy\n" - " ldr r2, ._175 + 32\n" - " ldrh r1, [r5]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrh r1, [r4, #0x8]\n" - " ldr r2, ._175 + 36\n" - " add r0, r0, r2\n" - " strh r1, [r0]\n" - " ldr r4, ._175 + 40\n" - " add r0, r4, #0\n" - " add r1, r7, #0\n" - " bl StringExpandPlaceholders\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " add r0, r6, #0\n" - " bl DestroyTask\n" - " b ._174\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word Str_841160F\n" - " .word Str_841161A\n" - " .word gMain\n" - " .word gStringVar1\n" - " .word gSpecialVar_0x8005\n" - " .word gStringVar2\n" - " .word gTasks\n" - " .word gSpeciesNames\n" - " .word gSaveBlock1\n" - " .word 0x2b6a\n" - " .word gStringVar4\n" - "._173:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._177 @cond_branch\n" - " add r0, r6, #0\n" - " bl DestroyTask\n" - " bl Menu_EraseScreen\n" - "._174:\n" - " ldr r0, ._179\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " bl debug_sub_810D340\n" - " b ._186\n" - "._180:\n" - " .align 2, 0\n" - "._179:\n" - " .word debug_sub_810CE1C+1\n" - "._177:\n" - " mov r0, #0xa0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._181 @cond_branch\n" - " ldr r0, ._183\n" - " lsl r4, r6, #0x2\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " ldr r2, ._183 + 4\n" - " add r0, r0, r2\n" - " mov r1, #0xce\n" - " lsl r1, r1, #0x1\n" - " bl __modsi3\n" - " strh r0, [r4, #0x8]\n" - " b ._182\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word gTasks\n" - " .word 0x19b\n" - "._181:\n" - " mov r0, #0x50\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._185 @cond_branch\n" - " ldr r0, ._187\n" - " lsl r4, r6, #0x2\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " add r0, r0, #0x1\n" - " mov r1, #0xce\n" - " lsl r1, r1, #0x1\n" - " bl __modsi3\n" - " strh r0, [r4, #0x8]\n" - " mov r2, #0x1\n" - "._185:\n" - " cmp r2, #0\n" - " beq ._186 @cond_branch\n" - "._182:\n" - " ldr r0, ._187 + 4\n" - " ldr r1, ._187\n" - " lsl r4, r6, #0x2\n" - " add r4, r4, r6\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r1\n" - " mov r2, #0x8\n" - " ldsh r1, [r4, r2]\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._187 + 8\n" - " mov r1, #0x8\n" - " ldsh r2, [r4, r1]\n" - " mov r1, #0xb\n" - " mul r1, r1, r2\n" - " ldr r2, ._187 + 12\n" - " add r1, r1, r2\n" - " bl StringCopy\n" - " ldr r4, ._187 + 16\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " bl StringExpandPlaceholders\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xc\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - "._186:\n" - " add sp, sp, #0x14\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._188:\n" - " .align 2, 0\n" - "._187:\n" - " .word gTasks\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gSpeciesNames\n" - " .word gStringVar4\n" - "\n" - ); + if (gMenuCallback() == TRUE) + { + CloseMenu(); + DestroyTask(taskId); + } } -__attribute__((naked)) -void debug_sub_810CCEC() +u8 debug_sub_810CE48(void) { - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xffffffe4\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r1, ._189\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " add r6, sp, #0x14\n" - " ldr r1, ._189 + 4\n" - " add r0, r6, #0\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " ldr r0, ._189 + 8\n" - " mov r8, r0\n" - " ldr r0, ._189 + 12\n" - " ldrh r1, [r0]\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r4, ._189 + 16\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " bl StringExpandPlaceholders\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._189 + 20\n" - " mov r0, r8\n" - " bl StringCopy\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl StringExpandPlaceholders\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xc\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r6, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._189 + 24\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r1, ._189 + 28\n" - " str r1, [r0]\n" - " add sp, sp, #0x1c\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._190:\n" - " .align 2, 0\n" - "._189:\n" - " .word Str_8411623\n" - " .word Str_8411634\n" - " .word gStringVar1\n" - " .word gSpecialVar_0x8005\n" - " .word gStringVar4\n" - " .word gSpeciesNames\n" - " .word gTasks\n" - " .word debug_sub_810CB50+1\n" - "\n" - ); -} + s8 input = Menu_ProcessInput(); -__attribute__((naked)) -void debug_sub_810CD9C() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl ScriptContext1_Stop\n" - " bl ScriptContext2_Enable\n" - " ldr r1, ._191\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " ldr r3, ._191 + 4\n" - " ldr r2, ._191 + 8\n" - " ldr r1, ._191 + 12\n" - " mov r0, #0x0\n" - " strh r0, [r1]\n" - " strh r0, [r2]\n" - " strh r0, [r3]\n" - " ldr r0, ._191 + 16\n" - " bl SetMainCallback2\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._192:\n" - " .align 2, 0\n" - "._191:\n" - " .word gUnknown_0300074C\n" - " .word gSpecialVar_0x8004\n" - " .word gSpecialVar_0x8005\n" - " .word gSpecialVar_0x8006\n" - " .word debug_sub_810D388+1\n" - "\n" - ); + switch (input) + { + case -1: + Menu_EraseScreen(); + debug_sub_810D340(); + return 0; + case -2: + return 0; + default: + gSpecialVar_0x8005 = input; + gSpecialVar_0x8006 %= 12; + CreateTask(debug_sub_810CA7C, 0); + gMain.watchedKeysPressed = TRUE; // huh? + gMain.watchedKeysMask = 0; + return 1; + } } -__attribute__((naked)) -void debug_sub_810CDE0() +u8 debug_sub_810CEA4(void) { - asm( - " push {lr}\n" - " bl UpdatePaletteFade\n" - " bl RunTasks\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + if (!gPaletteFade.active) + { + gSpecialVar_0x8004 = 4; + sub_80E60D8(); + return 1; + } + return 0; } -__attribute__((naked)) -void debug_sub_810CDF0() +u8 debug_sub_810CED0(void) { - asm( - " push {lr}\n" - " ldr r1, ._193\n" - " mov r0, #0x0\n" - " strh r0, [r1, #0x34]\n" - " strh r0, [r1, #0x36]\n" - " ldr r1, ._193 + 4\n" - " ldr r0, ._193 + 8\n" - " str r0, [r1]\n" - " ldr r0, ._193 + 12\n" - " bl SetMainCallback2\n" - " pop {r0}\n" - " bx r0\n" - "._194:\n" - " .align 2, 0\n" - "._193:\n" - " .word gMain\n" - " .word gFieldCallback\n" - " .word mapldr_default+1\n" - " .word c2_exit_to_overworld_2_switch+1\n" - "\n" - ); -} + u8 text[] = _("せいきの データが とうろくずみ です\n" + "しんき とうろく できません"); + s8 input = Menu_ProcessInput(); -__attribute__((naked)) -void debug_sub_810CE1C() -{ - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._196\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._195 @cond_branch\n" - " bl CloseMenu\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._195:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._197:\n" - " .align 2, 0\n" - "._196:\n" - " .word gMenuCallback\n" - "\n" - ); + switch (input) + { + case -1: + Menu_EraseScreen(); + break; + case -2: + return 0; + default: + gSpecialVar_0x8005 = input; + if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId)) + { + Menu_EraseScreen(); + Menu_DisplayDialogueFrame(); + Menu_PrintText(text, 4, 15); + } + else + { + gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0xFFFF; + StringCopy(gSaveBlock1.mail[gSpecialVar_0x8005].playerName, gSaveBlock2.playerName); + *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = *(u32 *)gSaveBlock2.playerTrainerId; + gMenuCallback = debug_sub_810CEA4; + return 0; + } + break; + } + debug_sub_810D340(); + return 0; } -__attribute__((naked)) -void debug_sub_810CE48() +u8 debug_sub_810CFA4(void) { - asm( - " push {r4, lr}\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._198 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._199 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_810D340\n" - "._198:\n" - " mov r0, #0x0\n" - " b ._200\n" - "._199:\n" - " ldr r0, ._201\n" - " strh r1, [r0]\n" - " ldr r4, ._201 + 4\n" - " ldrh r0, [r4]\n" - " mov r1, #0xc\n" - " bl __umodsi3\n" - " strh r0, [r4]\n" - " ldr r0, ._201 + 8\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " ldr r1, ._201 + 12\n" - " mov r2, #0x0\n" - " mov r0, #0x1\n" - " strh r0, [r1, #0x34]\n" - " strh r2, [r1, #0x36]\n" - "._200:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._202:\n" - " .align 2, 0\n" - "._201:\n" - " .word gSpecialVar_0x8005\n" - " .word gSpecialVar_0x8006\n" - " .word debug_sub_810CA7C+1\n" - " .word gMain\n" - "\n" - ); -} + u8 text[] = _("せいきに とうろくされたメールデータは\n" + "へんこう できません"); + s8 input = Menu_ProcessInput(); -__attribute__((naked)) -void debug_sub_810CEA4() -{ - asm( - " push {lr}\n" - " ldr r0, ._205\n" - " ldrb r1, [r0, #0x7]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._203 @cond_branch\n" - " mov r0, #0x0\n" - " b ._204\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word gPaletteFade\n" - "._203:\n" - " ldr r1, ._207\n" - " mov r0, #0x4\n" - " strh r0, [r1]\n" - " bl sub_80E60D8\n" - " mov r0, #0x1\n" - "._204:\n" - " pop {r1}\n" - " bx r1\n" - "._208:\n" - " .align 2, 0\n" - "._207:\n" - " .word gSpecialVar_0x8004\n" - "\n" - ); + switch (input) + { + case -1: + Menu_EraseScreen(); + debug_sub_810D340(); + return 0; + case -2: + return 0; + default: + gSpecialVar_0x8005 = input; + if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId)) + { + Menu_EraseScreen(); + Menu_DisplayDialogueFrame(); + Menu_PrintText(text, 4, 15); + debug_sub_810D340(); + return 0; + } + else + { + CreateTask(debug_sub_810CCEC, 0); + return 1; + } + } } -__attribute__((naked)) -void debug_sub_810CED0() +u8 debug_sub_810D030(void) { - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xffffffdc\n" - " ldr r1, ._212\n" - " mov r0, sp\n" - " mov r2, #0x23\n" - " bl memcpy\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._215 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._210 @cond_branch\n" - " bl Menu_EraseScreen\n" - " b ._211\n" - "._213:\n" - " .align 2, 0\n" - "._212:\n" - " .word Str_841163B\n" - "._210:\n" - " ldr r5, ._216\n" - " strh r1, [r5]\n" - " ldr r6, ._216 + 4\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldr r1, ._216 + 8\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x79\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bls ._214 @cond_branch\n" - " ldrh r1, [r5]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldr r2, ._216 + 8\n" - " add r0, r0, r2\n" - " ldr r1, ._216 + 12\n" - " strh r1, [r0]\n" - " ldrh r1, [r5]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " sub r2, r2, #0xe\n" - " add r1, r6, r2\n" - " add r0, r0, r1\n" - " ldr r4, ._216 + 16\n" - " add r1, r4, #0\n" - " bl StringCopy\n" - " ldrh r1, [r5]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " ldr r2, ._216 + 20\n" - " add r1, r6, r2\n" - " add r0, r0, r1\n" - " add r4, r4, #0xa\n" - " ldr r1, [r4]\n" - " str r1, [r0]\n" - " ldr r1, ._216 + 24\n" - " ldr r0, ._216 + 28\n" - " str r0, [r1]\n" - " b ._215\n" - "._217:\n" - " .align 2, 0\n" - "._216:\n" - " .word gSpecialVar_0x8005\n" - " .word gSaveBlock1\n" - " .word 0x2b6c\n" - " .word 0xffff\n" - " .word gSaveBlock2\n" - " .word 0x2b66\n" - " .word gMenuCallback\n" - " .word debug_sub_810CEA4+1\n" - "._214:\n" - " bl Menu_EraseScreen\n" - " bl Menu_DisplayDialogueFrame\n" - " mov r0, sp\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._211:\n" - " bl debug_sub_810D340\n" - "._215:\n" - " mov r0, #0x0\n" - " add sp, sp, #0x24\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} + const u8 text1[] = _("メール{STR_VAR_1} とうろく かいじょ"); + const u8 text2[] = _("デバッグメニューから とうろくした\n" + "メール いがいは けせません"); + s8 input = Menu_ProcessInput(); -__attribute__((naked)) -void debug_sub_810CFA4() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xffffffe0\n" - " ldr r1, ._221\n" - " mov r0, sp\n" - " mov r2, #0x1f\n" - " bl memcpy\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r2, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r2, r0\n" - " beq ._218 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r2, r0\n" - " bne ._219 @cond_branch\n" - " bl Menu_EraseScreen\n" - " b ._220\n" - "._222:\n" - " .align 2, 0\n" - "._221:\n" - " .word Str_841165E\n" - "._219:\n" - " ldr r0, ._225\n" - " strh r2, [r0]\n" - " ldr r1, ._225 + 4\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r1, ._225 + 8\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x79\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bls ._223 @cond_branch\n" - " ldr r0, ._225 + 12\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " b ._224\n" - "._226:\n" - " .align 2, 0\n" - "._225:\n" - " .word gSpecialVar_0x8005\n" - " .word gSaveBlock1\n" - " .word 0x2b6c\n" - " .word debug_sub_810CCEC+1\n" - "._223:\n" - " bl Menu_EraseScreen\n" - " bl Menu_DisplayDialogueFrame\n" - " mov r0, sp\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._220:\n" - " bl debug_sub_810D340\n" - "._218:\n" - " mov r0, #0x0\n" - "._224:\n" - " add sp, sp, #0x20\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + switch (input) + { + case -1: + Menu_EraseScreen(); + debug_sub_810D340(); + return 0; + case -2: + return 0; + default: + gSpecialVar_0x8005 = input; + if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0xFFFF + && gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0) + { + Menu_EraseScreen(); + Menu_DisplayDialogueFrame(); + Menu_PrintText(text2, 4, 15); + debug_sub_810D340(); + return 0; + } + else + { + s8 i; + + gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0; + gSaveBlock1.mail[gSpecialVar_0x8005].species = 0; + gSaveBlock1.mail[gSpecialVar_0x8005].playerName[0] = EOS; + *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = 0; + for (i = 0; i < 9; i++) + gSaveBlock1.mail[gSpecialVar_0x8005].words[i] = 0xFFFF; + ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1); + StringExpandPlaceholders(gStringVar4, text1); + Menu_EraseScreen(); + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 4, 15); + debug_sub_810D340(); + return 0; + } + } } -__attribute__((naked)) -void debug_sub_810D030() +const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); + +const struct MenuAction _84116BC[] = { - asm( - " push {r4, r5, r6, r7, lr}\n" - " add sp, sp, #0xffffffcc\n" - " ldr r1, ._230\n" - " mov r0, sp\n" - " mov r2, #0x10\n" - " bl memcpy\n" - " add r5, sp, #0x10\n" - " ldr r1, ._230 + 4\n" - " add r0, r5, #0\n" - " mov r2, #0x21\n" - " bl memcpy\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._227 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._228 @cond_branch\n" - " bl Menu_EraseScreen\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word Str_841167D\n" - " .word Str_841168D\n" - "._228:\n" - " ldr r2, ._235\n" - " strh r1, [r2]\n" - " ldr r3, ._235 + 4\n" - " ldrh r1, [r2]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r3\n" - " ldr r1, ._235 + 8\n" - " add r0, r0, r1\n" - " ldrh r1, [r0]\n" - " ldr r0, ._235 + 12\n" - " add r4, r2, #0\n" - " cmp r1, r0\n" - " beq ._233 @cond_branch\n" - " cmp r1, #0\n" - " beq ._233 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r5, #0\n" - " b ._234\n" - "._236:\n" - " .align 2, 0\n" - "._235:\n" - " .word gSpecialVar_0x8005\n" - " .word gSaveBlock1\n" - " .word 0x2b6c\n" - " .word 0xffff\n" - "._233:\n" - " ldrh r1, [r4]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r3\n" - " ldr r5, ._238\n" - " add r0, r0, r5\n" - " mov r2, #0x0\n" - " strh r2, [r0]\n" - " ldrh r1, [r4]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r3\n" - " ldr r1, ._238 + 4\n" - " add r0, r0, r1\n" - " strh r2, [r0]\n" - " ldrh r1, [r4]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r3\n" - " sub r5, r5, #0xe\n" - " add r0, r0, r5\n" - " mov r1, #0xff\n" - " strb r1, [r0]\n" - " ldrh r1, [r4]\n" - " lsl r0, r1, #0x3\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r5, r5, #0x8\n" - " add r1, r3, r5\n" - " add r0, r0, r1\n" - " str r2, [r0]\n" - " mov r0, #0x0\n" - " ldr r1, ._238 + 8\n" - " mov ip, r1\n" - " sub r5, r5, #0x1a\n" - " add r7, r3, r5\n" - " add r6, r4, #0\n" - " ldr r1, ._238 + 12\n" - " add r5, r1, #0\n" - "._237:\n" - " lsl r1, r0, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r3, r1, #0x1\n" - " ldrh r2, [r6]\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x2\n" - " add r3, r3, r0\n" - " add r3, r3, r7\n" - " ldrh r0, [r3]\n" - " orr r0, r0, r5\n" - " strh r0, [r3]\n" - " add r1, r1, #0x1\n" - " lsl r1, r1, #0x18\n" - " lsr r0, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " cmp r1, #0x8\n" - " ble ._237 @cond_branch\n" - " ldrh r1, [r4]\n" - " mov r0, ip\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r4, ._238 + 16\n" - " add r0, r4, #0\n" - " mov r1, sp\n" - " bl StringExpandPlaceholders\n" - " bl Menu_EraseScreen\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r4, #0\n" - "._234:\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._229:\n" - " bl debug_sub_810D340\n" - "._227:\n" - " mov r0, #0x0\n" - " add sp, sp, #0x34\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._239:\n" - " .align 2, 0\n" - "._238:\n" - " .word 0x2b6c\n" - " .word 0x2b6a\n" - " .word gStringVar1\n" - " .word 0xffff\n" - " .word gStringVar4\n" - "\n" - ); -} + {Str_84115F4, NULL}, + {Str_84115FB, NULL}, + {Str_8411603, NULL}, + {Str_8411608, NULL}, +}; __attribute__((naked)) void debug_sub_810D174() @@ -2367,7 +1341,7 @@ void debug_sub_810D388() "._300:\n" " .align 2, 0\n" "._299:\n" - " .word gUnknown_0300074C\n" + " .word gUnknown_Debug_0300079C\n" " .word 0x43c\n" "._297:\n" " bl ScanlineEffect_Stop\n" -- cgit v1.2.3 From aa3c9d1d357f858baad3065fa2939eba695d5731 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 15:19:46 -0600 Subject: finish decompiling all debug code in mail.c --- src/pokemon/mail.c | 664 +++++++++++++---------------------------------------- 1 file changed, 156 insertions(+), 508 deletions(-) (limited to 'src') diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c index 16252af64..4497c98fb 100644 --- a/src/pokemon/mail.c +++ b/src/pokemon/mail.c @@ -294,7 +294,7 @@ const u8 Str_8411608[] = _("メールをけす"); // Delete Mail static u8 *const sSharedMemPtr = gSharedMem; static u8 sub_80F8A28(void); -/*static*/ void sub_80F8D50(void); +static void sub_80F8D50(void); static void sub_80F8DA0(void); static void sub_80F8E80(void); static void sub_80F8F18(void); @@ -527,7 +527,7 @@ static u8 sub_80F8A28(void) return FALSE; } -/*static*/ void sub_80F8D50(void) +static void sub_80F8D50(void) { do { @@ -988,7 +988,85 @@ u8 debug_sub_810D030(void) } } -const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); +void debug_sub_810D174(u8 a) +{ + u8 string[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}"); + u8 buffer[9][20]; + struct MenuAction menuActions[9]; + u8 i; + + for (i = 0; i < 9; i++) + { + ConvertIntToDecimalStringN(gStringVar1, i, 1, 1); + if (gSaveBlock1.mail[i].itemId == 0xFFFF) + { + ConvertIntToDecimalStringN(gStringVar2, 1, 1, 1); + } + else if (IS_ITEM_MAIL(gSaveBlock1.mail[i].itemId)) + { + ConvertIntToDecimalStringN(gStringVar2, 2, 1, 1); + } + else + { + ConvertIntToDecimalStringN(gStringVar2, 0, 1, 1); + gSaveBlock1.mail[i].itemId = 0; + } + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.mail[i].species]); + StringExpandPlaceholders(buffer[i], string); + menuActions[i].text = buffer[i]; + menuActions[i].func = NULL; + } + Menu_DrawStdWindowFrame(0, 0, 16, 19); + Menu_PrintItems(2, 1, 9, menuActions); + InitMenu(0, 1, 1, 9, 0, 15); + switch (a) + { + case 0: + gMenuCallback = debug_sub_810CE48; + break; + case 1: + gMenuCallback = debug_sub_810CED0; + break; + case 2: + gMenuCallback = debug_sub_810CFA4; + break; + case 3: + gMenuCallback = debug_sub_810D030; + break; + } +} + +u8 debug_sub_810D2F4(void) +{ + s8 input = Menu_ProcessInput(); + + switch (input) + { + case -1: + SetMainCallback2(debug_sub_810CDF0); + return 1; + case -2: + return 0; + } + + switch (input) + { + case 0: + debug_sub_810D174(input); + return 0; + case 1: + debug_sub_810D174(input); + return 0; + case 2: + debug_sub_810D174(input); + return 0; + case 3: + debug_sub_810D174(input); + return 0; + } + + return 1; +} const struct MenuAction _84116BC[] = { @@ -998,514 +1076,84 @@ const struct MenuAction _84116BC[] = {Str_8411608, NULL}, }; -__attribute__((naked)) -void debug_sub_810D174() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffeec\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " ldr r1, ._242\n" - " add r0, sp, #0x8\n" - " mov r2, #0xc\n" - " bl memcpy\n" - " mov r5, #0x0\n" - " mov r0, sp\n" - " add r0, r0, #0x14\n" - " str r0, [sp, #0x110]\n" - " add r1, sp, #0xc8\n" - " mov r8, r1\n" - " add r2, sp, #0xcc\n" - " mov sl, r2\n" - " ldr r0, ._242 + 4\n" - " mov r9, r0\n" - "._248:\n" - " ldr r0, ._242 + 8\n" - " add r1, r5, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " lsl r1, r5, #0x3\n" - " add r0, r1, r5\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldr r2, ._242 + 12\n" - " add r4, r0, r2\n" - " ldrh r0, [r4]\n" - " add r6, r1, #0\n" - " ldr r1, ._242 + 16\n" - " cmp r0, r1\n" - " bne ._240 @cond_branch\n" - " ldr r0, ._242 + 20\n" - " mov r1, #0x1\n" - " b ._241\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word Str_84116AE\n" - " .word gSaveBlock1\n" - " .word gStringVar1\n" - " .word 0x2b6c\n" - " .word 0xffff\n" - " .word gStringVar2\n" - "._240:\n" - " sub r0, r0, #0x79\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._244 @cond_branch\n" - " ldr r0, ._246\n" - " mov r1, #0x2\n" - "._241:\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " b ._245\n" - "._247:\n" - " .align 2, 0\n" - "._246:\n" - " .word gStringVar2\n" - "._244:\n" - " ldr r0, ._253\n" - " mov r1, #0x0\n" - " mov r2, #0x1\n" - " mov r3, #0x1\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x0\n" - " strh r0, [r4]\n" - "._245:\n" - " add r0, r6, r5\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldr r2, ._253 + 4\n" - " add r0, r0, r2\n" - " ldrh r1, [r0]\n" - " mov r0, #0xb\n" - " mul r1, r1, r0\n" - " ldr r0, ._253 + 8\n" - " add r1, r1, r0\n" - " ldr r0, ._253 + 12\n" - " bl StringCopy\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x2\n" - " ldr r0, [sp, #0x110]\n" - " add r4, r0, r4\n" - " add r0, r4, #0\n" - " add r1, sp, #0x8\n" - " bl StringExpandPlaceholders\n" - " mov r1, r8\n" - " add r0, r1, r6\n" - " str r4, [r0]\n" - " mov r2, sl\n" - " add r0, r2, r6\n" - " mov r4, #0x0\n" - " str r4, [r0]\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x8\n" - " bls ._248 @cond_branch\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x10\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x9\n" - " mov r3, r8\n" - " bl Menu_PrintItems\n" - " str r4, [sp]\n" - " mov r0, #0xf\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x9\n" - " bl InitMenu\n" - " cmp r7, #0x1\n" - " beq ._249 @cond_branch\n" - " cmp r7, #0x1\n" - " bgt ._250 @cond_branch\n" - " cmp r7, #0\n" - " beq ._251 @cond_branch\n" - " b ._257\n" - "._254:\n" - " .align 2, 0\n" - "._253:\n" - " .word gStringVar2\n" - " .word 0x2b6a\n" - " .word gSpeciesNames\n" - " .word gStringVar3\n" - "._250:\n" - " cmp r7, #0x2\n" - " beq ._255 @cond_branch\n" - " cmp r7, #0x3\n" - " beq ._256 @cond_branch\n" - " b ._257\n" - "._251:\n" - " ldr r1, ._259\n" - " ldr r0, ._259 + 4\n" - " b ._264\n" - "._260:\n" - " .align 2, 0\n" - "._259:\n" - " .word gMenuCallback\n" - " .word debug_sub_810CE48+1\n" - "._249:\n" - " ldr r1, ._262\n" - " ldr r0, ._262 + 4\n" - " b ._264\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gMenuCallback\n" - " .word debug_sub_810CED0+1\n" - "._255:\n" - " ldr r1, ._265\n" - " ldr r0, ._265 + 4\n" - " b ._264\n" - "._266:\n" - " .align 2, 0\n" - "._265:\n" - " .word gMenuCallback\n" - " .word debug_sub_810CFA4+1\n" - "._256:\n" - " ldr r1, ._267\n" - " ldr r0, ._267 + 4\n" - "._264:\n" - " str r0, [r1]\n" - "._257:\n" - " add sp, sp, #0x114\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._268:\n" - " .align 2, 0\n" - "._267:\n" - " .word gMenuCallback\n" - " .word debug_sub_810D030+1\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_810D2F4() +void debug_sub_810D340(void) { - asm( - " push {lr}\n" - " bl Menu_ProcessInput\n" - " lsl r2, r0, #0x18\n" - " asr r1, r2, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._269 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._270 @cond_branch\n" - " ldr r0, ._272\n" - " bl SetMainCallback2\n" - " b ._279\n" - "._273:\n" - " .align 2, 0\n" - "._272:\n" - " .word debug_sub_810CDF0+1\n" - "._270:\n" - " cmp r1, #0x1\n" - " beq ._278 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._275 @cond_branch\n" - " cmp r1, #0\n" - " beq ._278 @cond_branch\n" - " b ._279\n" - "._275:\n" - " cmp r1, #0x2\n" - " beq ._278 @cond_branch\n" - " cmp r1, #0x3\n" - " bne ._279 @cond_branch\n" - "._278:\n" - " lsr r0, r2, #0x18\n" - " bl debug_sub_810D174\n" - "._269:\n" - " mov r0, #0x0\n" - " b ._280\n" - "._279:\n" - " mov r0, #0x1\n" - "._280:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + Menu_DrawStdWindowFrame(0, 0, 9, 9); + Menu_PrintItems(2, 1, 4, _84116BC); + InitMenu(0, 1, 1, 4, 0, 8); + gMenuCallback = debug_sub_810D2F4; } -__attribute__((naked)) -void debug_sub_810D340() +void debug_sub_810D388(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x9\n" - " mov r3, #0x9\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._281\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x8\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._281 + 4\n" - " ldr r0, ._281 + 8\n" - " str r0, [r1]\n" - " add sp, sp, #0x8\n" - " pop {r0}\n" - " bx r0\n" - "._282:\n" - " .align 2, 0\n" - "._281:\n" - " .word _84116BC\n" - " .word gMenuCallback\n" - " .word debug_sub_810D2F4+1\n" - "\n" - ); + switch (gMain.state) + { + case 0: + if (gUnknown_Debug_0300079C != 0) + { + gMain.state = 2; + gUnknown_Debug_0300079C = 0; + return; + } + else + { + ScanlineEffect_Stop(); + ResetPaletteFade(); + SetVBlankCallback(sub_80F8F18); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + } + break; + case 1: + if (UpdatePaletteFade()) + return; + break; + case 2: + SetVBlankCallback(NULL); + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + break; + case 3: + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + break; + case 4: + Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gWindowTemplate_81E6CE4); + Menu_EraseScreen(); + break; + case 5: + LoadPalette(gMailGraphicsTable[0].palette, 0, 32); + LZ77UnCompVram(gMailGraphicsTable[0].tiles, (void *)VRAM); + DmaFill16(3, 1, (void *)(VRAM + 0x4000), 0x500); + break; + case 6: + REG_BG0CNT = 0x9F08; + REG_BG1CNT = 0x0801; + REG_BLDCNT = 0; + REG_DISPCNT = 0x0340; + debug_sub_810D340(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + SetVBlankCallback(sub_80F8F18); + break; + case 7: + if (!UpdatePaletteFade()) + return; + break; + case 8: + CreateTask(debug_sub_810CE1C, 0); + SetMainCallback2(debug_sub_810CDE0); + break; + default: + return; + } + gMain.state++; } -__attribute__((naked)) -void debug_sub_810D388() -{ - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " ldr r1, ._285\n" - " ldr r2, ._285 + 4\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " add r2, r1, #0\n" - " cmp r0, #0x8\n" - " bls ._283 @cond_branch\n" - " b ._320\n" - "._283:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._285 + 8\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._286:\n" - " .align 2, 0\n" - "._285:\n" - " .word gMain\n" - " .word 0x43c\n" - " .word ._287\n" - "._287:\n" - " .word ._288\n" - " .word ._289\n" - " .word ._290\n" - " .word ._291\n" - " .word ._292\n" - " .word ._293\n" - " .word ._294\n" - " .word ._295\n" - " .word ._296\n" - "._288:\n" - " ldr r3, ._299\n" - " ldrb r4, [r3]\n" - " cmp r4, #0\n" - " beq ._297 @cond_branch\n" - " ldr r1, ._299 + 4\n" - " add r0, r2, r1\n" - " mov r2, #0x0\n" - " mov r1, #0x2\n" - " strb r1, [r0]\n" - " strb r2, [r3]\n" - " b ._320\n" - "._300:\n" - " .align 2, 0\n" - "._299:\n" - " .word gUnknown_Debug_0300079C\n" - " .word 0x43c\n" - "._297:\n" - " bl ScanlineEffect_Stop\n" - " bl ResetPaletteFade\n" - " ldr r0, ._302\n" - " bl SetVBlankCallback\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " str r4, [sp]\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x10\n" - " bl BeginNormalPaletteFade\n" - " b ._321\n" - "._303:\n" - " .align 2, 0\n" - "._302:\n" - " .word sub_80F8F18+1\n" - "._289:\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._304 @cond_branch\n" - " b ._320\n" - "._304:\n" - " b ._321\n" - "._290:\n" - " mov r0, #0x0\n" - " bl SetVBlankCallback\n" - " ldr r0, ._308\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " add r0, r0, #0x4\n" - " strh r1, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r1, [r0]\n" - " add r0, r0, #0x4\n" - " strh r1, [r0]\n" - " add r0, r0, #0x2\n" - " strh r1, [r0]\n" - " b ._321\n" - "._309:\n" - " .align 2, 0\n" - "._308:\n" - " .word 0x4000010\n" - "._291:\n" - " bl ResetSpriteData\n" - " bl ResetTasks\n" - " bl FreeAllSpritePalettes\n" - " b ._321\n" - "._292:\n" - " ldr r4, ._312\n" - " add r0, r4, #0\n" - " bl Text_LoadWindowTemplate\n" - " add r0, r4, #0\n" - " bl InitMenuWindow\n" - " bl Menu_EraseScreen\n" - " b ._321\n" - "._313:\n" - " .align 2, 0\n" - "._312:\n" - " .word gWindowTemplate_81E6CE4\n" - "._293:\n" - " ldr r4, ._315\n" - " ldr r0, [r4]\n" - " mov r1, #0x0\n" - " mov r2, #0x20\n" - " bl LoadPalette\n" - " ldr r0, [r4, #0x4]\n" - " mov r1, #0xc0\n" - " lsl r1, r1, #0x13\n" - " bl LZ77UnCompVram\n" - " add r1, sp, #0x4\n" - " mov r0, #0x1\n" - " strh r0, [r1]\n" - " ldr r1, ._315 + 4\n" - " add r2, sp, #0x4\n" - " str r2, [r1]\n" - " ldr r0, ._315 + 8\n" - " str r0, [r1, #0x4]\n" - " ldr r0, ._315 + 12\n" - " str r0, [r1, #0x8]\n" - " ldr r0, [r1, #0x8]\n" - " b ._321\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word gMailGraphicsTable\n" - " .word 0x40000d4\n" - " .word 0x6004000\n" - " .word 0x81000280\n" - "._294:\n" - " ldr r1, ._318\n" - " ldr r2, ._318 + 4\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r2, ._318 + 8\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " add r1, r1, #0x46\n" - " mov r0, #0x0\n" - " strh r0, [r1]\n" - " sub r1, r1, #0x50\n" - " mov r2, #0xd0\n" - " lsl r2, r2, #0x2\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl debug_sub_810D340\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " mov r1, #0x0\n" - " str r1, [sp]\n" - " mov r2, #0x10\n" - " mov r3, #0x0\n" - " bl BeginNormalPaletteFade\n" - " ldr r0, ._318 + 12\n" - " bl SetVBlankCallback\n" - " b ._321\n" - "._319:\n" - " .align 2, 0\n" - "._318:\n" - " .word 0x4000008\n" - " .word 0x9f08\n" - " .word 0x801\n" - " .word sub_80F8F18+1\n" - "._295:\n" - " bl UpdatePaletteFade\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._320 @cond_branch\n" - " b ._321\n" - "._296:\n" - " ldr r0, ._322\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " ldr r0, ._322 + 4\n" - " bl SetMainCallback2\n" - "._321:\n" - " ldr r1, ._322 + 8\n" - " ldr r0, ._322 + 12\n" - " add r1, r1, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - "._320:\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._323:\n" - " .align 2, 0\n" - "._322:\n" - " .word debug_sub_810CE1C+1\n" - " .word debug_sub_810CDE0+1\n" - " .word gMain\n" - " .word 0x43c\n" - "\n" - ); -} -#endif \ No newline at end of file +#endif -- cgit v1.2.3 From 092eba3155abf78bfdde1dbe3f140fdbfa9f5081 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 16:50:16 -0600 Subject: integrate debug functions in contest.c --- src/contest.c | 1022 +++++++++++---------------------------------------------- 1 file changed, 187 insertions(+), 835 deletions(-) (limited to 'src') diff --git a/src/contest.c b/src/contest.c index 950b26d0c..2f988b9e4 100644 --- a/src/contest.c +++ b/src/contest.c @@ -33,6 +33,8 @@ #include "util.h" #include "contest_ai.h" +extern u8 gUnknown_020297ED; + extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool extern void sub_80C8A38(u8); extern void sub_80C8AD0(u8); @@ -238,6 +240,7 @@ void sub_80B0BC4(u8, bool8); void sub_80B0C5C(struct Sprite *); void sub_80B0CB0(struct Sprite *); void sub_80B0CDC(u8, int); +void unref_sub_80B0CF4(void); void sub_80B0D7C(void); void sub_80B1118(void); void sub_80B114C(u8); @@ -611,43 +614,17 @@ void sub_80AB9A0(u8 taskId) } } -#if DEBUG -__attribute__((naked)) -void ContestMainCallback2(void) -{ - asm("\ - push {lr}\n\ - ldr r0, ._122\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._121 @cond_branch\n\ - ldr r0, ._122 + 4\n\ - ldrh r0, [r0, #0x2e]\n\ - cmp r0, #0x4\n\ - bne ._121 @cond_branch\n\ - bl unref_sub_80B0CF4\n\ -._121:\n\ - bl AnimateSprites\n\ - bl RunTasks\n\ - bl BuildOamBuffer\n\ - bl UpdatePaletteFade\n\ - pop {r0}\n\ - bx r0\n\ -._123:\n\ - .align 2, 0\n\ -._122:\n\ - .word gUnknown_020297ED\n\ - .word gMain"); -} -#else void ContestMainCallback2(void) { +#if DEBUG + if (gUnknown_020297ED == 1 && gMain.newKeys == 4) + unref_sub_80B0CF4(); +#endif AnimateSprites(); RunTasks(); BuildOamBuffer(); UpdatePaletteFade(); } -#endif void ContestVBlankCallback(void) { @@ -762,273 +739,9 @@ void sub_80ABCDC(u8 taskId) gTasks[taskId].func = sub_80ABEA0; } +void debug_sub_80B9EBC(u8); + // Handle move selection input -#if DEBUG -__attribute__((naked)) -void sub_80ABEA0(u8 taskId) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - add sp, sp, #0xfffffff8\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - mov r6, #0x0\n\ - ldr r0, ._161\n\ - mov ip, r0\n\ - ldr r4, ._161 + 4\n\ - ldr r3, ._161 + 8\n\ - ldrb r0, [r4]\n\ - lsl r0, r0, #0x6\n\ - mov r1, ip\n\ - add r1, r1, #0x1e\n\ - add r1, r0, r1\n\ - mov r2, #0x3\n\ -._158:\n\ - ldrh r0, [r1]\n\ - cmp r0, #0\n\ - beq ._157 @cond_branch\n\ - add r0, r6, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ -._157:\n\ - add r1, r1, #0x2\n\ - sub r2, r2, #0x1\n\ - cmp r2, #0\n\ - bge ._158 @cond_branch\n\ - ldrh r0, [r3, #0x2e]\n\ - mov r5, #0x1\n\ - and r5, r5, r0\n\ - cmp r5, #0\n\ - beq ._159 @cond_branch\n\ - bl DestroyMenuCursor\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._161 + 12\n\ - lsl r1, r7, #0x2\n\ - add r1, r1, r7\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r0\n\ - ldr r0, ._161 + 16\n\ - b ._160\n\ -._162:\n\ - .align 2, 0\n\ -._161:\n\ - .word gContestMons\n\ - .word gContestPlayerMonIndex\n\ - .word gMain\n\ - .word gTasks\n\ - .word sub_80AC0C8+1\n\ -._159:\n\ - ldrh r0, [r3, #0x30]\n\ - cmp r0, #0x10\n\ - bne ._163 @cond_branch\n\ - b ._196\n\ -._163:\n\ - cmp r0, #0x10\n\ - bgt ._165 @cond_branch\n\ - cmp r0, #0x2\n\ - beq ._166 @cond_branch\n\ - cmp r0, #0x8\n\ - bne ._167 @cond_branch\n\ - b ._168\n\ -._167:\n\ - b ._196\n\ -._165:\n\ - cmp r0, #0x40\n\ - beq ._170 @cond_branch\n\ - cmp r0, #0x40\n\ - bgt ._171 @cond_branch\n\ - b ._196\n\ -._171:\n\ - cmp r0, #0x80\n\ - beq ._173 @cond_branch\n\ - b ._196\n\ -._166:\n\ - bl sub_814A904\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0x0\n\ - bl sub_80AFFE0\n\ - ldr r0, ._177\n\ - ldr r1, ._177 + 4\n\ - ldrb r2, [r1]\n\ - ldrb r3, [r1, #0x1]\n\ - ldrb r4, [r1, #0x2]\n\ - str r4, [sp]\n\ - ldrb r1, [r1, #0x3]\n\ - str r1, [sp, #0x4]\n\ - mov r1, #0x0\n\ - bl Text_FillWindowRectDefPalette\n\ - ldr r0, ._177 + 8\n\ - ldrb r0, [r0]\n\ - bl Contest_IsMonsTurnDisabled\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._175 @cond_branch\n\ - ldr r0, ._177 + 12\n\ - ldr r1, ._177 + 16\n\ - bl StringCopy\n\ - b ._176\n\ -._178:\n\ - .align 2, 0\n\ -._177:\n\ - .word gUnknown_03004210\n\ - .word gUnknown_083CA340\n\ - .word gContestPlayerMonIndex\n\ - .word gDisplayedStringBattle\n\ - .word gText_Contest_WhichMoveWillBePlayed\n\ -._175:\n\ - ldr r0, ._180\n\ - ldr r1, ._180 + 4\n\ - bl StringCopy\n\ -._176:\n\ - ldr r5, ._180\n\ - ldr r0, ._180 + 8\n\ - ldrb r1, [r0, #0x1]\n\ - add r1, r1, #0x1\n\ - add r0, r5, #0\n\ - bl InsertStringDigit\n\ - bl sub_80AF138\n\ - ldr r4, ._180 + 12\n\ - add r0, r4, #0\n\ - add r1, r5, #0\n\ - bl StringExpandPlaceholders\n\ - ldr r0, ._180 + 16\n\ - mov r2, #0xc2\n\ - lsl r2, r2, #0x2\n\ - mov r1, #0xf\n\ - str r1, [sp]\n\ - add r1, r4, #0\n\ - mov r3, #0x1\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r0, ._180 + 20\n\ - mov r1, #0x0\n\ - strh r1, [r0]\n\ - ldr r0, ._180 + 24\n\ - strh r1, [r0]\n\ - ldr r1, ._180 + 28\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r1\n\ - ldr r1, ._180 + 32\n\ - str r1, [r0]\n\ - b ._196\n\ -._181:\n\ - .align 2, 0\n\ -._180:\n\ - .word gDisplayedStringBattle\n\ - .word gText_Contest_ButItCantParticipate\n\ - .word gSharedMem+0x19204\n\ - .word gStringVar4\n\ - .word gMenuWindow\n\ - .word gBattle_BG0_Y\n\ - .word gBattle_BG2_Y\n\ - .word gTasks\n\ - .word sub_80ABC70+1\n\ -._170:\n\ - ldr r4, ._184\n\ - mov r0, #0x0\n\ - ldsb r0, [r4, r0]\n\ - bl nullsub_17\n\ - ldrb r0, [r4]\n\ - cmp r0, #0\n\ - bne ._182 @cond_branch\n\ - sub r0, r6, #1\n\ - b ._186\n\ -._185:\n\ - .align 2, 0\n\ -._184:\n\ - .word gSharedMem+0x19204\n\ -._182:\n\ - sub r0, r0, #0x1\n\ - b ._186\n\ -._173:\n\ - ldr r4, ._189\n\ - mov r0, #0x0\n\ - ldsb r0, [r4, r0]\n\ - bl nullsub_17\n\ - ldrb r1, [r4]\n\ - sub r0, r6, #1\n\ - cmp r1, r0\n\ - bne ._187 @cond_branch\n\ - strb r5, [r4]\n\ - b ._188\n\ -._190:\n\ - .align 2, 0\n\ -._189:\n\ - .word gSharedMem+0x19204\n\ -._187:\n\ - add r0, r1, #1\n\ -._186:\n\ - strb r0, [r4]\n\ -._188:\n\ - ldr r4, ._193\n\ - mov r0, #0x0\n\ - ldsb r0, [r4, r0]\n\ - bl sub_80AC0AC\n\ - bl sub_80AED58\n\ - ldr r2, ._193 + 4\n\ - ldrb r1, [r4]\n\ - lsl r1, r1, #0x1\n\ - ldr r0, ._193 + 8\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x6\n\ - add r1, r1, r0\n\ - add r2, r2, #0x1e\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - bl sub_80AEBEC\n\ - cmp r6, #0x1\n\ - bls ._196 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - b ._196\n\ -._194:\n\ - .align 2, 0\n\ -._193:\n\ - .word gSharedMem+0x19204\n\ - .word gContestMons\n\ - .word gContestPlayerMonIndex\n\ -._168:\n\ - ldr r0, ._197\n\ - ldrb r1, [r0]\n\ - cmp r1, #0x1\n\ - bne ._196 @cond_branch\n\ - ldr r0, ._197 + 4\n\ - ldrb r0, [r0]\n\ - add r2, r0, #0\n\ - and r2, r2, r1\n\ - cmp r2, #0\n\ - bne ._196 @cond_branch\n\ - ldr r0, ._197 + 8\n\ - lsl r1, r7, #0x2\n\ - add r1, r1, r7\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r0\n\ - strh r2, [r1, #0x8]\n\ - ldrb r0, [r4]\n\ - lsl r0, r0, #0x6\n\ - add r0, r0, ip\n\ - ldrh r0, [r0, #0x1e]\n\ - strh r0, [r1, #0xa]\n\ - ldr r0, ._197 + 12\n\ -._160:\n\ - str r0, [r1]\n\ -._196:\n\ - add sp, sp, #0x8\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._198:\n\ - .align 2, 0\n\ -._197:\n\ - .word gUnknown_020297ED\n\ - .word gIsLinkContest\n\ - .word gTasks\n\ - .word debug_sub_80B9EBC+1"); -} -#else void sub_80ABEA0(u8 taskId) { u8 numMoves = 0; @@ -1100,552 +813,191 @@ void sub_80ABEA0(u8 taskId) if (numMoves > 1) PlaySE(SE_SELECT); break; +#if DEBUG + case START_BUTTON: + if (gUnknown_020297ED == 1 && !(gIsLinkContest & 1)) + { + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = gContestMons[gContestPlayerMonIndex].moves[0]; + gTasks[taskId].func = debug_sub_80B9EBC; + } + break; +#endif } } } -#endif #if DEBUG -__attribute__((naked)) -void debug_sub_80B9EBC() -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - add sp, sp, #0xffffff94\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - ldr r1, ._202\n\ - lsl r0, r4, #0x2\n\ - add r0, r0, r4\n\ - lsl r0, r0, #0x3\n\ - add r7, r0, r1\n\ - mov r0, #0x8\n\ - ldsh r2, [r7, r0]\n\ - cmp r2, #0\n\ - beq ._199 @cond_branch\n\ - cmp r2, #0x1\n\ - beq ._200 @cond_branch\n\ - b ._229\n\ -._203:\n\ - .align 2, 0\n\ -._202:\n\ - .word gTasks\n\ -._199:\n\ - ldr r5, ._205\n\ - ldr r4, ._205 + 4\n\ - ldrb r0, [r4]\n\ - mov r8, r0\n\ - ldrb r6, [r4, #0x1]\n\ - ldrb r0, [r4, #0x2]\n\ - str r0, [sp]\n\ - ldrb r0, [r4, #0x3]\n\ - str r0, [sp, #0x4]\n\ - add r0, r5, #0\n\ - mov r1, #0x0\n\ - mov r2, r8\n\ - add r3, r6, #0\n\ - bl Text_FillWindowRectDefPalette\n\ - mov r0, #0xa\n\ - ldsh r1, [r7, r0]\n\ - mov r0, #0xd\n\ - mul r1, r1, r0\n\ - ldr r0, ._205 + 8\n\ - add r1, r1, r0\n\ - mov r2, #0xc2\n\ - lsl r2, r2, #0x2\n\ - str r6, [sp]\n\ - add r0, r5, #0\n\ - mov r3, r8\n\ - bl Text_InitWindowAndPrintText\n\ - mov r0, #0xa\n\ - ldsh r1, [r7, r0]\n\ - add r0, sp, #0x8\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0xc7\n\ - lsl r2, r2, #0x2\n\ - ldrb r3, [r4, #0x4]\n\ - ldrb r0, [r4, #0x5]\n\ - str r0, [sp]\n\ - add r0, r5, #0\n\ - add r1, sp, #0x8\n\ - bl Text_InitWindowAndPrintText\n\ - bl sub_80AED58\n\ - ldrh r0, [r7, #0xa]\n\ - bl sub_80AEBEC\n\ - ldrh r0, [r7, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r7, #0x8]\n\ - b ._229\n\ -._206:\n\ - .align 2, 0\n\ -._205:\n\ - .word gUnknown_03004210\n\ - .word gUnknown_083CA340\n\ - .word gMoveNames\n\ -._200:\n\ - ldr r0, ._213\n\ - ldrh r1, [r0, #0x30]\n\ - cmp r1, #0x10\n\ - beq ._207 @cond_branch\n\ - cmp r1, #0x10\n\ - bgt ._208 @cond_branch\n\ - cmp r1, #0x4\n\ - beq ._215 @cond_branch\n\ - cmp r1, #0x4\n\ - bgt ._210 @cond_branch\n\ - cmp r1, #0x2\n\ - beq ._211 @cond_branch\n\ - b ._229\n\ -._214:\n\ - .align 2, 0\n\ -._213:\n\ - .word gMain\n\ -._210:\n\ - cmp r1, #0x8\n\ - beq ._215 @cond_branch\n\ - b ._229\n\ -._208:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - cmp r1, r0\n\ - beq ._217 @cond_branch\n\ - cmp r1, r0\n\ - bgt ._218 @cond_branch\n\ - cmp r1, #0x20\n\ - beq ._219 @cond_branch\n\ - b ._229\n\ -._218:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x2\n\ - cmp r1, r0\n\ - beq ._221 @cond_branch\n\ - b ._229\n\ -._219:\n\ - ldrh r0, [r7, #0xa]\n\ - sub r0, r0, #0x1\n\ - b ._223\n\ -._221:\n\ - ldrh r0, [r7, #0xa]\n\ - sub r0, r0, #0xa\n\ -._223:\n\ - strh r0, [r7, #0xa]\n\ - lsl r0, r0, #0x10\n\ - cmp r0, #0\n\ - bgt ._227 @cond_branch\n\ - mov r0, #0xb1\n\ - lsl r0, r0, #0x1\n\ - strh r0, [r7, #0xa]\n\ - b ._227\n\ -._207:\n\ - ldrh r0, [r7, #0xa]\n\ - add r0, r0, #0x1\n\ - b ._226\n\ -._217:\n\ - ldrh r0, [r7, #0xa]\n\ - add r0, r0, #0xa\n\ -._226:\n\ - strh r0, [r7, #0xa]\n\ - lsl r0, r0, #0x10\n\ - mov r1, #0xb1\n\ - lsl r1, r1, #0x11\n\ - cmp r0, r1\n\ - ble ._227 @cond_branch\n\ - strh r2, [r7, #0xa]\n\ -._227:\n\ - ldrh r0, [r7, #0x8]\n\ - sub r0, r0, #0x1\n\ - strh r0, [r7, #0x8]\n\ - b ._229\n\ -._215:\n\ - ldr r0, ._230\n\ - mov r1, #0x0\n\ - strh r1, [r0]\n\ - ldr r0, ._230 + 4\n\ - strh r1, [r0]\n\ - bl sub_80B1BDC\n\ - ldr r1, ._230 + 8\n\ - lsl r0, r4, #0x2\n\ - add r0, r0, r4\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r1\n\ - mov r1, #0x0\n\ - strh r1, [r0, #0x8]\n\ - ldr r1, ._230 + 12\n\ - str r1, [r0]\n\ - b ._229\n\ -._231:\n\ - .align 2, 0\n\ -._230:\n\ - .word gBattle_BG0_Y\n\ - .word gBattle_BG2_Y\n\ - .word gTasks\n\ - .word debug_sub_80BA054+1\n\ -._211:\n\ - ldr r0, ._232\n\ - mov r1, #0xa0\n\ - strh r1, [r0]\n\ - ldr r0, ._232 + 4\n\ - strh r1, [r0]\n\ - ldr r1, ._232 + 8\n\ - ldr r0, ._232 + 12\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x6\n\ - add r0, r0, r1\n\ - ldrh r2, [r7, #0xa]\n\ - mov r1, #0x0\n\ - strh r2, [r0, #0x1e]\n\ - strh r1, [r7, #0x8]\n\ - strh r1, [r7, #0xa]\n\ - strh r1, [r7, #0xc]\n\ - strh r1, [r7, #0xe]\n\ - ldr r0, ._232 + 16\n\ - str r0, [r7]\n\ -._229:\n\ - add sp, sp, #0x6c\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._233:\n\ - .align 2, 0\n\ -._232:\n\ - .word gBattle_BG0_Y\n\ - .word gBattle_BG2_Y\n\ - .word gContestMons\n\ - .word gContestPlayerMonIndex\n\ - .word sub_80ABCDC+1"); -} -__attribute__((naked)) -void debug_sub_80BA054() -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6, r7}\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - ldr r1, ._236\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r1\n\ - mov r2, #0x8\n\ - ldsh r0, [r0, r2]\n\ - add r2, r1, #0\n\ - cmp r0, #0x14\n\ - bls ._234 @cond_branch\n\ - b ._286\n\ -._234:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._236 + 4\n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._237:\n\ - .align 2, 0\n\ -._236:\n\ - .word gTasks\n\ - .word ._238\n\ -._238:\n\ - .word ._239\n\ - .word ._240\n\ - .word ._241\n\ - .word ._242\n\ - .word ._243\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._286\n\ - .word ._259\n\ -._239:\n\ - lsl r0, r7, #0x2\n\ - mov r8, r0\n\ - ldr r2, ._262\n\ - mov r9, r2\n\ - ldr r1, ._262 + 4\n\ - mov r2, #0x0\n\ - add r0, r1, #3\n\ -._260:\n\ - strb r2, [r0]\n\ - sub r0, r0, #0x1\n\ - cmp r0, r1\n\ - bge ._260 @cond_branch\n\ - mov r5, #0x0\n\ - mov r0, r9\n\ - mov r1, #0x0\n\ - mov r2, #0x14\n\ - bl memset\n\ - ldr r4, ._262 + 8\n\ - ldrb r0, [r4]\n\ - bl sub_80B28F0\n\ - ldr r3, ._262 + 12\n\ - ldrb r2, [r4]\n\ - lsl r2, r2, #0x6\n\ - add r0, r2, r3\n\ - ldrh r0, [r0]\n\ - add r1, r3, #0\n\ - add r1, r1, #0x3c\n\ - add r1, r2, r1\n\ - ldr r1, [r1]\n\ - add r3, r3, #0x38\n\ - add r2, r2, r3\n\ - ldr r2, [r2]\n\ - bl sub_80AE9FC\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - ldr r2, ._262 + 16\n\ - lsl r0, r6, #0x4\n\ - add r0, r0, r6\n\ - lsl r0, r0, #0x2\n\ - add r3, r0, r2\n\ - mov r4, #0x0\n\ - mov r1, #0x78\n\ - strh r1, [r3, #0x24]\n\ - add r2, r2, #0x1c\n\ - add r0, r0, r2\n\ - ldr r1, ._262 + 20\n\ - str r1, [r0]\n\ - ldr r0, ._262 + 24\n\ - mov r2, r8\n\ - add r1, r2, r7\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r0\n\ - strh r6, [r1, #0xc]\n\ - ldr r2, ._262 + 28\n\ - ldr r0, ._262 + 32\n\ - ldrb r0, [r0]\n\ - add r0, r0, r2\n\ - strb r6, [r0]\n\ - strh r5, [r1, #0xe]\n\ - ldrh r0, [r1, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1, #0x8]\n\ - mov r0, r9\n\ - sub r0, r0, #0xea\n\ - strb r4, [r0]\n\ - b ._286\n\ -._263:\n\ - .align 2, 0\n\ -._262:\n\ - .word gSharedMem+0x19348\n\ - .word gBattleMonForms\n\ - .word gContestPlayerMonIndex\n\ - .word gContestMons\n\ - .word gSprites\n\ - .word sub_80AD8FC+1\n\ - .word gTasks\n\ - .word gObjectBankIDs\n\ - .word gBankAttacker\n\ -._240:\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r7, r0, r2\n\ - ldrb r6, [r7, #0xc]\n\ - ldr r1, ._267\n\ - lsl r0, r6, #0x4\n\ - add r0, r0, r6\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, #0x1c\n\ - add r0, r0, r1\n\ - ldr r1, [r0]\n\ - ldr r0, ._267 + 4\n\ - cmp r1, r0\n\ - beq ._264 @cond_branch\n\ - b ._286\n\ -._264:\n\ - ldr r4, ._267 + 8\n\ - ldrb r1, [r4]\n\ - lsl r0, r1, #0x3\n\ - sub r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._267 + 12\n\ - add r0, r0, r1\n\ - ldrh r1, [r7, #0xa]\n\ - mov r5, #0x0\n\ - strh r1, [r0, #0x6]\n\ - ldrb r0, [r4]\n\ - bl sub_80B2790\n\ - ldrb r0, [r4]\n\ - bl sub_80B28F0\n\ - ldrh r0, [r7, #0xa]\n\ - bl SelectContestMoveBankTarget\n\ - ldrh r0, [r7, #0xa]\n\ - bl DoMoveAnim\n\ - strh r5, [r7, #0xe]\n\ - ldrh r0, [r7, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r7, #0x8]\n\ - b ._286\n\ -._268:\n\ - .align 2, 0\n\ -._267:\n\ - .word gSprites\n\ - .word SpriteCallbackDummy+1\n\ - .word gContestPlayerMonIndex\n\ - .word gSharedMem+0x19260\n\ -._241:\n\ - ldr r0, ._273\n\ - ldr r0, [r0]\n\ - bl _call_via_r0\n\ - ldr r0, ._273 + 4\n\ - ldrb r4, [r0]\n\ - cmp r4, #0\n\ - beq ._269 @cond_branch\n\ - b ._286\n\ -._269:\n\ - ldr r0, ._273 + 8\n\ - ldrb r0, [r0]\n\ - bl sub_80B28CC\n\ - ldr r0, ._273 + 12\n\ - add r0, r0, #0x5a\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._271 @cond_branch\n\ - ldr r0, ._273 + 16\n\ - lsl r1, r7, #0x2\n\ - add r1, r1, r7\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r0\n\ - strh r4, [r1, #0x1c]\n\ - mov r0, #0x14\n\ - strh r0, [r1, #0x8]\n\ - b ._286\n\ -._274:\n\ - .align 2, 0\n\ -._273:\n\ - .word gAnimScriptCallback\n\ - .word gAnimScriptActive\n\ - .word gContestPlayerMonIndex\n\ - .word gSharedMem+0x19204\n\ - .word gTasks\n\ -._271:\n\ - ldr r0, ._276\n\ - lsl r1, r7, #0x2\n\ - add r1, r1, r7\n\ - lsl r1, r1, #0x3\n\ - add r1, r1, r0\n\ - ldrh r0, [r1, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1, #0x8]\n\ - b ._286\n\ -._277:\n\ - .align 2, 0\n\ -._276:\n\ - .word gTasks\n\ -._242:\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r4, r0, r2\n\ - ldrh r0, [r4, #0xe]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4, #0xe]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x15\n\ - bne ._286 @cond_branch\n\ - ldrb r6, [r4, #0xc]\n\ - ldr r1, ._280\n\ - lsl r0, r6, #0x4\n\ - add r0, r0, r6\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, #0x1c\n\ - add r0, r0, r1\n\ - ldr r1, ._280 + 4\n\ - str r1, [r0]\n\ - bl sub_80B1B14\n\ - mov r0, #0x0\n\ - strh r0, [r4, #0xe]\n\ - ldrh r0, [r4, #0x8]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4, #0x8]\n\ - b ._286\n\ -._281:\n\ - .align 2, 0\n\ -._280:\n\ - .word gSprites\n\ - .word sub_80AD92C+1\n\ -._243:\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r5, r0, r2\n\ - ldrb r6, [r5, #0xc]\n\ - ldr r1, ._284\n\ - lsl r0, r6, #0x4\n\ - add r0, r0, r6\n\ - lsl r0, r0, #0x2\n\ - add r4, r0, r1\n\ - add r0, r4, #0\n\ - add r0, r0, #0x3e\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x1d\n\ - cmp r0, #0\n\ - bge ._286 @cond_branch\n\ - add r0, r4, #0\n\ - bl FreeSpriteOamMatrix\n\ - add r0, r4, #0\n\ - bl DestroySprite\n\ - mov r0, #0x0\n\ - strh r0, [r5, #0x8]\n\ - ldr r0, ._284 + 4\n\ - str r0, [r5]\n\ - ldr r0, ._284 + 8\n\ - mov r1, #0xa0\n\ - strh r1, [r0]\n\ - ldr r0, ._284 + 12\n\ - strh r1, [r0]\n\ - b ._286\n\ -._285:\n\ - .align 2, 0\n\ -._284:\n\ - .word gSprites\n\ - .word debug_sub_80B9EBC+1\n\ - .word gBattle_BG0_Y\n\ - .word gBattle_BG2_Y\n\ -._259:\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - add r2, r0, r2\n\ - ldrh r0, [r2, #0x1c]\n\ - add r1, r0, #1\n\ - strh r1, [r2, #0x1c]\n\ - lsl r0, r0, #0x10\n\ - asr r0, r0, #0x10\n\ - cmp r0, #0x1e\n\ - ble ._286 @cond_branch\n\ - mov r0, #0x0\n\ - strh r0, [r2, #0x1c]\n\ - mov r0, #0x1\n\ - strh r0, [r2, #0x8]\n\ -._286:\n\ - pop {r3, r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0"); +void debug_sub_80BA054(u8); + +void debug_sub_80B9EBC(u8 taskId) +{ + u8 text[100]; + + switch (gTasks[taskId].data[0]) + { + case 0: + Text_FillWindowRectDefPalette( + &gUnknown_03004210, + 0, + gUnknown_083CA340[0][0], + gUnknown_083CA340[0][1], + gUnknown_083CA340[0][2], + gUnknown_083CA340[0][3]); + Text_InitWindowAndPrintText( + &gUnknown_03004210, + gMoveNames[gTasks[taskId].data[1]], + 776, + gUnknown_083CA340[0][0], + gUnknown_083CA340[0][1]); + ConvertIntToDecimalStringN(text, gTasks[taskId].data[1], 2, 3); + Text_InitWindowAndPrintText( + &gUnknown_03004210, + text, + 796, + gUnknown_083CA340[1][0], + gUnknown_083CA340[1][1]); + sub_80AED58(); + sub_80AEBEC(gTasks[taskId].data[1]); + gTasks[taskId].data[0]++; + break; + case 1: + switch (gMain.newAndRepeatedKeys) + { + case 0x20: + gTasks[taskId].data[1] -= 1; + if (gTasks[taskId].data[1] < 1) + gTasks[taskId].data[1] = 354; + gTasks[taskId].data[0]--; + break; + case 0x200: + gTasks[taskId].data[1] -= 10; + if (gTasks[taskId].data[1] < 1) + gTasks[taskId].data[1] = 354; + gTasks[taskId].data[0]--; + break; + case 0x10: + gTasks[taskId].data[1] += 1; + if (gTasks[taskId].data[1] > 354) + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[0]--; + break; + case 0x100: + gTasks[taskId].data[1] += 10; + if (gTasks[taskId].data[1] > 354) + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[0]--; + break; + case 4: + case 8: + gBattle_BG0_Y = 0; + gBattle_BG2_Y = 0; + sub_80B1BDC(); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = debug_sub_80BA054; + break; + case 2: + gBattle_BG0_Y = DISPLAY_HEIGHT; + gBattle_BG2_Y = DISPLAY_HEIGHT; + gContestMons[gContestPlayerMonIndex].moves[0] = gTasks[taskId].data[1]; + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].func = sub_80ABCDC; + break; + } + break; + } +} + +void debug_sub_80BA054(u8 taskId) +{ + s32 i; + u8 r6; + + switch (gTasks[taskId].data[0]) + { + case 0: + for (i = 0; i < 4; i++) + gBattleMonForms[i] = 0; + memset(&shared19348, 0, sizeof(shared19348)); + sub_80B28F0(gContestPlayerMonIndex); + r6 = sub_80AE9FC( + gContestMons[gContestPlayerMonIndex].species, + gContestMons[gContestPlayerMonIndex].otId, + gContestMons[gContestPlayerMonIndex].personality); + gSprites[r6].pos2.x = 120; + gSprites[r6].callback = sub_80AD8FC; + gTasks[taskId].data[2] = r6; + gObjectBankIDs[gBankAttacker] = r6; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[0]++; + sContest.unk1925E = 0; + break; + case 1: + r6 = gTasks[taskId].data[2]; + if (gSprites[r6].callback == SpriteCallbackDummy) + { + sContestantStatus[gContestPlayerMonIndex].currMove = gTasks[taskId].data[1]; + sub_80B2790(gContestPlayerMonIndex); + sub_80B28F0(gContestPlayerMonIndex); + SelectContestMoveBankTarget(gTasks[taskId].data[1]); + DoMoveAnim(gTasks[taskId].data[1]); + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[0]++; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80B28CC(gContestPlayerMonIndex); + if (sContest.unk1925E != 0) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 20; + } + else + { + gTasks[taskId].data[0]++; + } + } + break; + case 3: + gTasks[taskId].data[3]++; + if (gTasks[taskId].data[3] == 21) + { + r6 = gTasks[taskId].data[2]; + gSprites[r6].callback = sub_80AD92C; + sub_80B1B14(); + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[0]++; + } + break; + case 4: + r6 = gTasks[taskId].data[2]; + if (gSprites[r6].invisible) + { + FreeSpriteOamMatrix(&gSprites[r6]); + DestroySprite(&gSprites[r6]); + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = debug_sub_80B9EBC; + gBattle_BG0_Y = DISPLAY_HEIGHT; + gBattle_BG2_Y = DISPLAY_HEIGHT; + } + break; + case 20: + if (gTasks[taskId].data[10]++ > 30) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0] = 1; + } + break; + } } + #endif void sub_80AC0AC(s8 a) -- cgit v1.2.3 From 9f7fa5781e8de8e23faea3785e8b3aebde79c8c6 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 17:15:37 -0600 Subject: decompile sub_813B79C --- src/engine/save.c | 98 ++++++++++++++----------------------------------------- 1 file changed, 25 insertions(+), 73 deletions(-) (limited to 'src') diff --git a/src/engine/save.c b/src/engine/save.c index 0eb93eb1d..0b7a3dd79 100644 --- a/src/engine/save.c +++ b/src/engine/save.c @@ -664,79 +664,31 @@ static u16 CalculateChecksum(void *data, u16 size) } #if DEBUG -__attribute__((naked)) -void sub_813B79C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " ldr r4, ._163\n" - " ldr r6, ._163 + 4\n" - " mov r5, #0x0\n" - "._161:\n" - " lsl r0, r5, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r1, r4, #0\n" - " bl DoReadFlashWholeSection\n" - " ldr r1, ._163 + 8\n" - " add r0, r4, r1\n" - " ldrh r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r6\n" - " ldrh r1, [r0, #0x4]\n" - " add r0, r4, #0\n" - " bl CalculateChecksum\n" - " ldr r2, ._163 + 12\n" - " add r1, r4, r2\n" - " strh r0, [r1]\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " cmp r5, #0x1b\n" - " bls ._161 @cond_branch\n" - " ldr r6, ._163\n" - " ldr r7, ._163 + 16\n" - " mov r5, #0x0\n" - "._162:\n" - " add r4, r5, #0\n" - " add r4, r4, #0x1c\n" - " lsl r0, r4, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r1, r6, #0\n" - " bl DoReadFlashWholeSection\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r7\n" - " ldrh r1, [r0, #0x4]\n" - " add r0, r6, #0\n" - " bl CalculateChecksum\n" - " ldr r2, ._163 + 8\n" - " add r1, r6, r2\n" - " strh r0, [r1]\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x10\n" - " lsr r5, r0, #0x10\n" - " cmp r5, #0x1\n" - " bls ._162 @cond_branch\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word +0x2000000\n" - " .word sSaveBlockChunks\n" - " .word 0xff4\n" - " .word 0xff6\n" - " .word sHallOfFameChunks\n" - "\n" - ); +void sub_813B79C(void) +{ + struct SaveSector *sbSector; + struct SaveSector *hofSector; + const struct SaveBlockChunk *sbChunks; + const struct SaveBlockChunk *hofChunks; + u16 i; + + sbSector = eSaveSection; + sbChunks = sSaveBlockChunks; + for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT * 2; i++) + { + DoReadFlashWholeSection(i, sbSector); + sbSector->checksum = CalculateChecksum(sbSector, sbChunks[sbSector->id].size); + ProgramFlashSectorAndVerify(i, sbSector->data); + } + + hofSector = eSaveSection; + hofChunks = sHallOfFameChunks; + for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++) + { + DoReadFlashWholeSection(HALL_OF_FAME_SECTOR + i, hofSector); + hofSector->id = CalculateChecksum(hofSector, hofChunks[i].size); // why id? + ProgramFlashSectorAndVerify(HALL_OF_FAME_SECTOR + i, hofSector->data); + } } #endif -- cgit v1.2.3 From e50f5e906776a799ec69418168f032880e16384c Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 19:36:54 -0600 Subject: more debug integrations --- src/battle/battle_controller_opponent.c | 262 +---------- src/battle/battle_controller_player.c | 764 ++------------------------------ src/battle/battle_controller_safari.c | 243 +--------- src/battle/battle_interface.c | 668 +--------------------------- src/pokemon/pokemon_1.c | 359 ++------------- src/pokemon/pokemon_menu.c | 151 +------ 6 files changed, 149 insertions(+), 2298 deletions(-) (limited to 'src') diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index d2045b6c4..5382738f7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -30,6 +30,7 @@ struct MovePpInfo u8 ppBonuses; }; +extern u8 gUnknown_02023A14_50; extern u8 gActiveBank; extern u8 gBattleBufferA[][0x200]; extern u16 gBattlePartyID[]; @@ -1209,255 +1210,27 @@ void sub_8034B74(void) } } -#if DEBUG -__attribute__((naked)) -void OpponentHandleTrainerThrow(void) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6}\n\ - ldr r0, ._480\n\ - ldrb r1, [r0]\n\ - mov r0, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._478 @cond_branch\n\ - ldr r0, ._480 + 4\n\ - ldr r1, ._480 + 8\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - b ._491\n\ -._481:\n\ - .align 2, 0\n\ -._480:\n\ - .word gUnknown_02023A14_50\n\ - .word +0x2000000\n\ - .word 0x160a3\n\ -._478:\n\ - ldr r3, ._484\n\ - ldrh r1, [r3]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x3\n\ - cmp r1, r0\n\ - bne ._482 @cond_branch\n\ - bl GetSecretBaseTrainerPicIndex\n\ - b ._487\n\ -._485:\n\ - .align 2, 0\n\ -._484:\n\ - .word gTrainerBattleOpponent\n\ -._482:\n\ - ldr r0, ._488\n\ - ldrh r1, [r0]\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._486 @cond_branch\n\ - bl get_trainer_class_pic_index\n\ - b ._487\n\ -._489:\n\ - .align 2, 0\n\ -._488:\n\ - .word gBattleTypeFlags\n\ -._486:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._490 @cond_branch\n\ - bl GetEReaderTrainerPicIndex\n\ -._487:\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - b ._491\n\ -._490:\n\ - ldr r2, ._492\n\ - ldrh r1, [r3]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r0, r0, r2\n\ - ldrb r0, [r0, #0x3]\n\ -._491:\n\ - mov r9, r0\n\ - ldr r2, ._492 + 4\n\ - mov r8, r2\n\ - ldrb r1, [r2]\n\ - bl sub_8031A6C\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - bl GetBankIdentity\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x18\n\ - lsr r1, r1, #0x18\n\ - mov r0, r9\n\ - bl GetMonSpriteTemplate_803C5A0\n\ - ldr r5, ._492 + 8\n\ - ldr r1, ._492 + 12\n\ - mov r2, r9\n\ - lsl r0, r2, #0x2\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r4, #0x8\n\ - sub r4, r4, r0\n\ - lsl r4, r4, #0x12\n\ - mov r0, #0xa0\n\ - lsl r0, r0, #0xe\n\ - add r4, r4, r0\n\ - asr r4, r4, #0x10\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - bl sub_8079E90\n\ - add r3, r0, #0\n\ - lsl r3, r3, #0x18\n\ - lsr r3, r3, #0x18\n\ - add r0, r5, #0\n\ - mov r1, #0xb0\n\ - add r2, r4, #0\n\ - bl CreateSprite\n\ - ldr r5, ._492 + 16\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r5\n\ - strb r0, [r1]\n\ - ldr r4, ._492 + 20\n\ - ldrb r0, [r2]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r4\n\ - ldr r1, ._492 + 24\n\ - strh r1, [r0, #0x24]\n\ - ldrb r0, [r2]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r4\n\ - mov r1, #0x2\n\ - strh r1, [r0, #0x2e]\n\ - ldr r0, ._492 + 28\n\ - mov r1, r9\n\ - lsl r6, r1, #0x3\n\ - add r0, r6, r0\n\ - ldrh r0, [r0, #0x4]\n\ - bl IndexOfSpritePaletteTag\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r5\n\ - ldrb r1, [r1]\n\ - lsl r2, r1, #0x4\n\ - add r2, r2, r1\n\ - lsl r2, r2, #0x2\n\ - add r2, r2, r4\n\ - lsl r0, r0, #0x4\n\ - ldrb r3, [r2, #0x5]\n\ - mov r1, #0xf\n\ - and r1, r1, r3\n\ - orr r1, r1, r0\n\ - strb r1, [r2, #0x5]\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - lsl r1, r0, #0x4\n\ - add r1, r1, r0\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r4\n\ - ldrh r0, [r1, #0x4]\n\ - lsl r0, r0, #0x16\n\ - lsr r0, r0, #0x16\n\ - strh r0, [r1, #0x38]\n\ - ldr r0, ._492 + 32\n\ - add r6, r6, r0\n\ - ldrh r0, [r6, #0x6]\n\ - bl GetSpriteTileStartByTag\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r5\n\ - ldrb r2, [r1]\n\ - lsl r1, r2, #0x4\n\ - add r1, r1, r2\n\ - lsl r1, r1, #0x2\n\ - add r1, r1, r4\n\ - ldr r2, ._492 + 36\n\ - and r2, r2, r0\n\ - ldrh r3, [r1, #0x4]\n\ - ldr r0, ._492 + 40\n\ - and r0, r0, r3\n\ - orr r0, r0, r2\n\ - strh r0, [r1, #0x4]\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r4\n\ - mov r2, r9\n\ - strh r2, [r0, #0x6]\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r4, r4, #0x1c\n\ - add r0, r0, r4\n\ - ldr r1, ._492 + 44\n\ - str r1, [r0]\n\ - ldr r1, ._492 + 48\n\ - mov r2, r8\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._492 + 52\n\ - str r1, [r0]\n\ - pop {r3, r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0\n\ -._493:\n\ - .align 2, 0\n\ -._492:\n\ - .word gTrainers\n\ - .word gActiveBank\n\ - .word gUnknown_02024E8C\n\ - .word gTrainerFrontPicCoords\n\ - .word gObjectBankIDs\n\ - .word gSprites\n\ - .word 0xff10\n\ - .word gTrainerFrontPicPaletteTable\n\ - .word gTrainerFrontPicTable\n\ - .word 0x3ff\n\ - .word 0xfffffc00\n\ - .word sub_80313A0+1\n\ - .word gBattleBankFunc\n\ - .word sub_8032B4C+1"); -} -#else void OpponentHandleTrainerThrow(void) { u32 trainerPicIndex; - if (gTrainerBattleOpponent == 0x400) - trainerPicIndex = GetSecretBaseTrainerPicIndex(); - else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) - trainerPicIndex = get_trainer_class_pic_index(); - else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) - trainerPicIndex = GetEReaderTrainerPicIndex(); +#if DEBUG + if (gUnknown_02023A14_50 & 0x10) + { + trainerPicIndex = gSharedMem[0x160A3]; + } else - trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; +#endif + { + if (gTrainerBattleOpponent == 0x400) + trainerPicIndex = GetSecretBaseTrainerPicIndex(); + else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) + trainerPicIndex = get_trainer_class_pic_index(); + else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER) + trainerPicIndex = GetEReaderTrainerPicIndex(); + else + trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic; + } sub_8031A6C(trainerPicIndex, gActiveBank); GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank)); @@ -1475,7 +1248,6 @@ void OpponentHandleTrainerThrow(void) gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; gBattleBankFunc[gActiveBank] = sub_8032B4C; } -#endif void OpponentHandleTrainerSlide(void) { diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 8875d5148..d4b4da6f2 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -42,6 +42,8 @@ extern struct Window gUnknown_03004210; extern void (*gBattleBankFunc[])(void); +extern u32 gOamMatrixAllocBitmap; +extern u8 gUnknown_020297ED; extern u8 gActiveBank; extern u8 gActionSelectionCursor[]; extern u8 gDisplayedStringBattle[]; @@ -617,728 +619,14 @@ struct ChooseMoveStruct const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}"); -#if DEBUG -__attribute__((naked)) -void sub_802C68C(void) -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - add sp, sp, #0xfffffff8\n\ - mov r0, #0x0\n\ - mov r8, r0\n\ - mov r7, #0x0\n\ - ldr r1, ._131\n\ - ldrb r2, [r1]\n\ - lsl r1, r2, #0x9\n\ - ldr r0, ._131 + 4\n\ - add r6, r1, r0\n\ - ldr r0, ._131 + 8\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r5, #0x1\n\ - add r0, r5, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._126 @cond_branch\n\ - b ._127\n\ -._126:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r1, ._131 + 12\n\ - ldr r2, ._131\n\ - ldrb r0, [r2]\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x1\n\ - add r1, r6, r0\n\ - ldrh r0, [r1]\n\ - cmp r0, #0xae\n\ - bne ._128 @cond_branch\n\ - ldrb r0, [r6, #0x12]\n\ - mov r4, #0x0\n\ - cmp r0, #0x7\n\ - beq ._130 @cond_branch\n\ - ldrb r1, [r6, #0x13]\n\ - mov r0, #0x7\n\ - eor r1, r1, r0\n\ - neg r0, r1\n\ - orr r0, r0, r1\n\ - asr r4, r0, #0x1f\n\ - mov r0, #0x10\n\ - and r4, r4, r0\n\ - b ._130\n\ -._132:\n\ - .align 2, 0\n\ -._131:\n\ - .word gActiveBank\n\ - .word gBattleBufferA+4\n\ - .word gMain\n\ - .word gMoveSelectionCursor\n\ -._128:\n\ - ldr r2, ._135\n\ - ldrh r1, [r1]\n\ - lsl r0, r1, #0x1\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r2\n\ - ldrb r4, [r0, #0x6]\n\ -._130:\n\ - mov r0, #0x10\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - beq ._133 @cond_branch\n\ - ldr r0, ._135 + 4\n\ - ldr r1, ._135 + 8\n\ - ldrb r1, [r1]\n\ - strb r1, [r0]\n\ - b ._134\n\ -._136:\n\ - .align 2, 0\n\ -._135:\n\ - .word gBattleMoves\n\ - .word gUnknown_03004344\n\ - .word gActiveBank\n\ -._133:\n\ - ldr r0, ._141\n\ - ldrb r0, [r0]\n\ - bl GetBankIdentity\n\ - add r1, r0, #0\n\ - mov r2, #0x1\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - eor r0, r0, r2\n\ - bl GetBankByIdentity\n\ - ldr r1, ._141 + 4\n\ - strb r0, [r1]\n\ -._134:\n\ - ldr r3, ._141 + 8\n\ - ldr r5, ._141\n\ - ldrb r2, [r5]\n\ - lsl r1, r2, #0x9\n\ - add r0, r3, #1\n\ - add r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._137 @cond_branch\n\ - mov r0, #0x2\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - beq ._146 @cond_branch\n\ - add r0, r3, #2\n\ - add r0, r1, r0\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._146 @cond_branch\n\ - mov r0, #0x1\n\ - add r8, r8, r0\n\ - b ._146\n\ -._142:\n\ - .align 2, 0\n\ -._141:\n\ - .word gActiveBank\n\ - .word gUnknown_03004344\n\ - .word gBattleBufferA\n\ -._137:\n\ - mov r0, #0x7d\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - bne ._143 @cond_branch\n\ - mov r1, #0x1\n\ - add r8, r8, r1\n\ -._143:\n\ - ldr r0, ._149\n\ - add r0, r2, r0\n\ - add r1, r6, #0\n\ - add r1, r1, #0x8\n\ - ldrb r0, [r0]\n\ - add r1, r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, #0\n\ - beq ._144 @cond_branch\n\ - mov r0, #0x12\n\ - and r0, r0, r4\n\ - cmp r0, #0\n\ - bne ._146 @cond_branch\n\ - mov r0, #0x0\n\ - bl CountAliveMons\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bhi ._146 @cond_branch\n\ - ldrb r0, [r5]\n\ - bl sub_803C434\n\ - ldr r1, ._149 + 4\n\ - strb r0, [r1]\n\ - mov r2, #0x0\n\ - mov r8, r2\n\ -._146:\n\ - mov r0, r8\n\ - cmp r0, #0\n\ - bne ._147 @cond_branch\n\ -._144:\n\ - bl DestroyMenuCursor\n\ - ldr r1, ._149\n\ - ldr r0, ._149 + 8\n\ - ldrb r0, [r0]\n\ - add r0, r0, r1\n\ - ldrb r2, [r0]\n\ - ldr r0, ._149 + 4\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x8\n\ - orr r2, r2, r0\n\ - b ._148\n\ -._150:\n\ - .align 2, 0\n\ -._149:\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_03004344\n\ - .word gActiveBank\n\ -._147:\n\ - ldr r1, ._153\n\ - ldr r2, ._153 + 4\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._153 + 8\n\ - str r1, [r0]\n\ - mov r0, #0x12\n\ - and r4, r4, r0\n\ - cmp r4, #0\n\ - beq ._151 @cond_branch\n\ - ldr r1, ._153 + 12\n\ - ldrb r0, [r2]\n\ - b ._152\n\ -._154:\n\ - .align 2, 0\n\ -._153:\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ - .word sub_802C2EC+1\n\ - .word gUnknown_03004344\n\ -._151:\n\ - mov r0, #0x1\n\ - bl GetBankByIdentity\n\ - ldr r1, ._157\n\ - ldrb r1, [r1]\n\ - ldr r2, ._157 + 4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x16\n\ - add r0, r0, r2\n\ - ldr r0, [r0]\n\ - and r1, r1, r0\n\ - cmp r1, #0\n\ - beq ._155 @cond_branch\n\ - mov r0, #0x3\n\ - b ._156\n\ -._158:\n\ - .align 2, 0\n\ -._157:\n\ - .word gAbsentBankFlags\n\ - .word gBitTable\n\ -._155:\n\ - mov r0, #0x1\n\ -._156:\n\ - bl GetBankByIdentity\n\ - ldr r1, ._160\n\ -._152:\n\ - strb r0, [r1]\n\ - ldr r2, ._160 + 4\n\ - ldr r1, ._160 + 8\n\ - ldr r0, ._160\n\ - ldrb r0, [r0]\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - lsl r0, r1, #0x4\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x2\n\ - add r2, r2, #0x1c\n\ - add r0, r0, r2\n\ - ldr r1, ._160 + 12\n\ - b ._203\n\ -._161:\n\ - .align 2, 0\n\ -._160:\n\ - .word gUnknown_03004344\n\ - .word gSprites\n\ - .word gObjectBankIDs\n\ - .word sub_8010520+1\n\ -._127:\n\ - mov r6, #0x2\n\ - add r0, r6, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._162 @cond_branch\n\ - bl DestroyMenuCursor\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._164\n\ - strh r7, [r0]\n\ - ldr r1, ._164 + 4\n\ - mov r2, #0xa0\n\ - lsl r2, r2, #0x1\n\ - add r0, r2, #0\n\ - strh r0, [r1]\n\ - ldr r2, ._164 + 8\n\ -._148:\n\ - mov r0, #0x1\n\ - mov r1, #0xa\n\ - bl Emitcmd33\n\ - bl PlayerBufferExecCompleted\n\ - b ._209\n\ -._165:\n\ - .align 2, 0\n\ -._164:\n\ - .word gBattle_BG0_X\n\ - .word gBattle_BG0_Y\n\ - .word 0xffff\n\ -._162:\n\ - mov r0, #0x20\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._166 @cond_branch\n\ - ldr r4, ._170\n\ - add r2, r2, r4\n\ - ldrb r1, [r2]\n\ - add r0, r5, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._167 @cond_branch\n\ - b ._209\n\ -._167:\n\ - ldrb r0, [r2]\n\ - bl nullsub_7\n\ - ldr r0, ._170 + 4\n\ - ldrb r1, [r0]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - mov r2, #0x1\n\ - eor r0, r0, r2\n\ - b ._183\n\ -._171:\n\ - .align 2, 0\n\ -._170:\n\ - .word gMoveSelectionCursor\n\ - .word gActiveBank\n\ -._166:\n\ - mov r3, #0x10\n\ - add r0, r3, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._172 @cond_branch\n\ - ldr r4, ._178\n\ - add r3, r2, r4\n\ - ldrb r2, [r3]\n\ - mov r6, #0x1\n\ - add r0, r5, #0\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._173 @cond_branch\n\ - b ._209\n\ -._173:\n\ - ldr r1, ._178 + 4\n\ - add r0, r6, #0\n\ - eor r0, r0, r2\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._175 @cond_branch\n\ - b ._209\n\ -._175:\n\ - ldrb r0, [r3]\n\ - bl nullsub_7\n\ - ldr r2, ._178 + 8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - eor r0, r0, r6\n\ - b ._183\n\ -._179:\n\ - .align 2, 0\n\ -._178:\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_03004348\n\ - .word gActiveBank\n\ -._172:\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._180 @cond_branch\n\ - ldr r4, ._184\n\ - add r2, r2, r4\n\ - ldrb r1, [r2]\n\ - add r0, r6, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._181 @cond_branch\n\ - b ._209\n\ -._181:\n\ - ldrb r0, [r2]\n\ - bl nullsub_7\n\ - ldr r2, ._184 + 4\n\ - ldrb r1, [r2]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - mov r2, #0x2\n\ - eor r0, r0, r2\n\ - b ._183\n\ -._185:\n\ - .align 2, 0\n\ -._184:\n\ - .word gMoveSelectionCursor\n\ - .word gActiveBank\n\ -._180:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._186 @cond_branch\n\ - ldr r4, ._192\n\ - add r3, r2, r4\n\ - ldrb r2, [r3]\n\ - mov r5, #0x2\n\ - add r0, r6, #0\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._187 @cond_branch\n\ - b ._209\n\ -._187:\n\ - ldr r1, ._192 + 4\n\ - add r0, r5, #0\n\ - eor r0, r0, r2\n\ - ldrb r1, [r1]\n\ - cmp r0, r1\n\ - bcc ._189 @cond_branch\n\ - b ._209\n\ -._189:\n\ - ldrb r0, [r3]\n\ - bl nullsub_7\n\ - ldr r2, ._192 + 8\n\ - ldrb r1, [r2]\n\ - add r1, r1, r4\n\ - ldrb r0, [r1]\n\ - eor r0, r0, r5\n\ -._183:\n\ - strb r0, [r1]\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r1, ._192 + 8\n\ - ldrb r0, [r1]\n\ - add r0, r0, r4\n\ - ldrb r0, [r0]\n\ - mov r1, #0x0\n\ - bl sub_802E3B4\n\ - bl sub_802E220\n\ - bl sub_802E2D4\n\ - b ._209\n\ -._193:\n\ - .align 2, 0\n\ -._192:\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_03004348\n\ - .word gActiveBank\n\ -._186:\n\ - mov r0, #0x4\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._194 @cond_branch\n\ - ldr r0, ._201\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bhi ._195 @cond_branch\n\ - b ._209\n\ -._195:\n\ - ldr r0, ._201 + 4\n\ - ldrh r1, [r0]\n\ - add r0, r6, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._197 @cond_branch\n\ - b ._209\n\ -._197:\n\ - ldr r4, ._201 + 8\n\ - add r0, r2, r4\n\ - ldrb r0, [r0]\n\ - ldr r1, ._201 + 12\n\ - bl sub_802E12C\n\ - ldr r2, ._201 + 16\n\ - ldrb r0, [r2]\n\ - add r0, r0, r4\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._199 @cond_branch\n\ - ldr r0, ._201 + 20\n\ - strb r7, [r0]\n\ - b ._200\n\ -._202:\n\ - .align 2, 0\n\ -._201:\n\ - .word gUnknown_03004348\n\ - .word gBattleTypeFlags\n\ - .word gMoveSelectionCursor\n\ - .word gUnknown_081FAE80\n\ - .word gActiveBank\n\ - .word gUnknown_03004344\n\ -._199:\n\ - ldr r1, ._204\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - add r0, r1, #0\n\ -._200:\n\ - ldrb r0, [r0]\n\ - mov r1, #0x1b\n\ - bl sub_802E3B4\n\ - ldr r4, ._204 + 4\n\ - ldr r1, ._204 + 8\n\ - mov r0, #0x1c\n\ - str r0, [sp]\n\ - mov r0, #0x3a\n\ - str r0, [sp, #0x4]\n\ - add r0, r4, #0\n\ - mov r2, #0x17\n\ - mov r3, #0x37\n\ - bl Text_FillWindowRect\n\ - ldr r1, ._204 + 12\n\ - mov r2, #0xa4\n\ - lsl r2, r2, #0x2\n\ - mov r0, #0x37\n\ - str r0, [sp]\n\ - add r0, r4, #0\n\ - mov r3, #0x17\n\ - bl Text_InitWindow\n\ - add r0, r4, #0\n\ - bl Text_PrintWindow8002F44\n\ - ldr r1, ._204 + 16\n\ - ldr r0, ._204 + 20\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._204 + 24\n\ - b ._203\n\ -._205:\n\ - .align 2, 0\n\ -._204:\n\ - .word gUnknown_03004344\n\ - .word gUnknown_03004210\n\ - .word 0x1016\n\ - .word BattleText_SwitchWhich\n\ - .word gBattleBankFunc\n\ - .word gActiveBank\n\ - .word sub_802CA60+1\n\ -._194:\n\ - ldr r0, ._214\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._206 @cond_branch\n\ - b ._209\n\ -._206:\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._208 @cond_branch\n\ - b ._209\n\ -._208:\n\ - ldr r6, ._214 + 4\n\ - ldr r1, ._214 + 8\n\ - str r3, [sp]\n\ - mov r0, #0x3a\n\ - str r0, [sp, #0x4]\n\ - add r0, r6, #0\n\ - mov r2, #0x1\n\ - mov r3, #0x37\n\ - bl Text_FillWindowRect\n\ - ldr r0, ._214 + 12\n\ - mov sl, r0\n\ - ldr r1, ._214 + 16\n\ - ldrb r0, [r1]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, sl\n\ - ldrh r0, [r0]\n\ - mov r2, #0x64\n\ - mov r9, r2\n\ - mov r1, r9\n\ - mul r1, r1, r0\n\ - add r0, r1, #0\n\ - ldr r5, ._214 + 20\n\ - add r0, r0, r5\n\ - mov r1, #0xd\n\ - bl GetMonData\n\ - mov r1, #0xd\n\ - mul r1, r1, r0\n\ - ldr r0, ._214 + 24\n\ - add r1, r1, r0\n\ - mov r2, #0x80\n\ - lsl r2, r2, #0x1\n\ - mov r0, #0x37\n\ - mov r8, r0\n\ - str r0, [sp]\n\ - add r0, r6, #0\n\ - mov r3, #0x2\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r4, ._214 + 28\n\ - ldr r1, ._214 + 16\n\ - ldrb r0, [r1]\n\ - lsl r0, r0, #0x1\n\ - add r0, r0, sl\n\ - ldrh r0, [r0]\n\ - mov r2, r9\n\ - mul r2, r2, r0\n\ - add r0, r2, #0\n\ - add r0, r0, r5\n\ - mov r1, #0xd\n\ - bl GetMonData\n\ - add r1, r0, #0\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x88\n\ - lsl r2, r2, #0x1\n\ - mov r0, r8\n\ - str r0, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0xa\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r1, ._214 + 32\n\ - mov r2, #0x8b\n\ - lsl r2, r2, #0x1\n\ - mov r5, #0x39\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - mov r3, #0x1\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r0, ._214 + 36\n\ - ldrb r1, [r0]\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x3\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x8e\n\ - lsl r2, r2, #0x1\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0x4\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r0, ._214 + 40\n\ - add r2, r0, #0\n\ - add r2, r2, #0x3e\n\ - mov r1, #0x3f\n\ -._211:\n\ - ldrb r0, [r2]\n\ - lsl r0, r0, #0x1f\n\ - cmp r0, #0\n\ - beq ._210 @cond_branch\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ -._210:\n\ - add r2, r2, #0x44\n\ - sub r1, r1, #0x1\n\ - cmp r1, #0\n\ - bge ._211 @cond_branch\n\ - ldr r4, ._214 + 28\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r6, ._214 + 4\n\ - mov r2, #0x91\n\ - lsl r2, r2, #0x1\n\ - mov r5, #0x39\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0x8\n\ - bl Text_InitWindowAndPrintText\n\ - bl GetTaskCount\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - mov r2, #0x93\n\ - lsl r2, r2, #0x1\n\ - str r5, [sp]\n\ - add r0, r6, #0\n\ - add r1, r4, #0\n\ - mov r3, #0xb\n\ - bl Text_InitWindowAndPrintText\n\ - mov r1, #0x0\n\ - mov r7, #0x0\n\ - ldr r0, ._214 + 44\n\ - mov r3, #0x1\n\ - ldr r2, [r0]\n\ -._213:\n\ - add r0, r3, #0\n\ - LSL r0, r1\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._212 @cond_branch\n\ - add r0, r7, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ -._212:\n\ - add r1, r1, #0x1\n\ - cmp r1, #0x1f\n\ - ble ._213 @cond_branch\n\ - ldr r4, ._214 + 28\n\ - add r0, r4, #0\n\ - add r1, r7, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x2\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r0, ._214 + 4\n\ - mov r2, #0x95\n\ - lsl r2, r2, #0x1\n\ - mov r1, #0x39\n\ - str r1, [sp]\n\ - add r1, r4, #0\n\ - mov r3, #0xe\n\ - bl Text_InitWindowAndPrintText\n\ - ldr r1, ._214 + 48\n\ - ldr r0, ._214 + 16\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x2\n\ - add r0, r0, r1\n\ - ldr r1, ._214 + 52\n\ -._203:\n\ - str r1, [r0]\n\ -._209:\n\ - add sp, sp, #0x8\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._215:\n\ - .align 2, 0\n\ -._214:\n\ - .word gUnknown_020297ED\n\ - .word gUnknown_03004210\n\ - .word 0x1016\n\ - .word gBattlePartyID\n\ - .word gActiveBank\n\ - .word gPlayerParty\n\ - .word gMoveNames\n\ - .word gDisplayedStringBattle\n\ - .word gString_TurnJP\n\ - .word gAnimMoveTurn\n\ - .word gSprites\n\ - .word gOamMatrixAllocBitmap\n\ - .word gBattleBankFunc\n\ - .word debug_sub_8030C24+1"); -} -#else +void debug_sub_8030C24(void); + void sub_802C68C(void) { u32 r8 = 0; +#if DEBUG + u8 count = 0; +#endif struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBank] + 4); if (gMain.newKeys & A_BUTTON) @@ -1469,8 +757,44 @@ void sub_802C68C(void) gBattleBankFunc[gActiveBank] = sub_802CA60; } } -} +#if DEBUG + else if (gUnknown_020297ED == 1 && (gMain.newKeys & START_BUTTON)) + { + const u8 *moveName; + s32 i; + + Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A); + moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)]; + Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37); + ConvertIntToDecimalStringN( + gDisplayedStringBattle, + GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1), + 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37); + Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39); + ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39); + for (i = 0; i < 64; i++) + { + if (gSprites[i].inUse) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39); + count = GetTaskCount(); + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39); + for (i = 0, count = 0; i < 32; i++) + { + if (gOamMatrixAllocBitmap & (1 << i)) + count++; + } + ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2); + Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39); + gBattleBankFunc[gActiveBank] = debug_sub_8030C24; + } #endif +} extern const u8 BattleText_Format[]; diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c index 4af8adbbb..5896e5e18 100644 --- a/src/battle/battle_controller_safari.c +++ b/src/battle/battle_controller_safari.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle_anim_81258BC.h" #include "battle.h" +#include "battle_interface.h" #include "battle_message.h" #include "data2.h" #include "link.h" @@ -207,236 +208,6 @@ void SafariBufferRunCommand(void) } } -#if DEBUG -__attribute__((naked)) -void bx_battle_menu_t6_2(void) -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._94\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r2, #0x1\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._89 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl DestroyMenuCursor\n\ - ldr r1, ._94 + 4\n\ - ldr r0, ._94 + 8\n\ - ldrb r0, [r0]\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - beq ._90 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._91 @cond_branch\n\ - cmp r0, #0\n\ - beq ._92 @cond_branch\n\ - b ._101\n\ -._95:\n\ - .align 2, 0\n\ -._94:\n\ - .word gMain\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._91:\n\ - cmp r0, #0x2\n\ - beq ._96 @cond_branch\n\ - cmp r0, #0x3\n\ - beq ._97 @cond_branch\n\ - b ._101\n\ -._92:\n\ - mov r0, #0x1\n\ - mov r1, #0x5\n\ - b ._100\n\ -._90:\n\ - mov r0, #0x1\n\ - mov r1, #0x6\n\ - b ._100\n\ -._96:\n\ - mov r0, #0x1\n\ - mov r1, #0x7\n\ -._100:\n\ - mov r2, #0x0\n\ - bl Emitcmd33\n\ - b ._101\n\ -._97:\n\ - mov r0, #0x1\n\ - mov r1, #0x8\n\ - mov r2, #0x0\n\ - bl Emitcmd33\n\ -._101:\n\ - bl SafariBufferExecCompleted\n\ - b ._129\n\ -._89:\n\ - mov r3, #0x20\n\ - add r0, r3, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._103 @cond_branch\n\ - ldr r5, ._107\n\ - ldr r4, ._107 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._104 @cond_branch\n\ - b ._129\n\ -._104:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - bl nullsub_8\n\ - ldrb r1, [r4]\n\ - add r1, r1, r5\n\ - ldrb r0, [r1]\n\ - mov r2, #0x1\n\ - b ._111\n\ -._108:\n\ - .align 2, 0\n\ -._107:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._103:\n\ - mov r0, #0x10\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._109 @cond_branch\n\ - ldr r5, ._112\n\ - ldr r4, ._112 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - add r0, r2, #0\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._129 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - bl nullsub_8\n\ - ldrb r1, [r4]\n\ - add r1, r1, r5\n\ - ldrb r0, [r1]\n\ - mov r2, #0x1\n\ - b ._111\n\ -._113:\n\ - .align 2, 0\n\ -._112:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._109:\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._114 @cond_branch\n\ - ldr r5, ._117\n\ - ldr r4, ._117 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._129 @cond_branch\n\ - b ._116\n\ -._118:\n\ - .align 2, 0\n\ -._117:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._114:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._119 @cond_branch\n\ - ldr r5, ._122\n\ - ldr r4, ._122 + 4\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r1, [r0]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._129 @cond_branch\n\ -._116:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - bl nullsub_8\n\ - ldrb r1, [r4]\n\ - add r1, r1, r5\n\ - ldrb r0, [r1]\n\ - mov r2, #0x2\n\ -._111:\n\ - eor r0, r0, r2\n\ - strb r0, [r1]\n\ - ldrb r0, [r4]\n\ - add r0, r0, r5\n\ - ldrb r0, [r0]\n\ - mov r1, #0x0\n\ - bl sub_802E3E4\n\ - b ._129\n\ -._123:\n\ - .align 2, 0\n\ -._122:\n\ - .word gActionSelectionCursor\n\ - .word gActiveBank\n\ -._119:\n\ - mov r0, #0x80\n\ - lsl r0, r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._124 @cond_branch\n\ - ldr r0, ._127\n\ - ldrb r2, [r0]\n\ - lsl r0, r2, #0x1\n\ - add r0, r0, r2\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._127 + 4\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - add r0, r3, #0\n\ - and r0, r0, r1\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._129 @cond_branch\n\ - str r0, [sp]\n\ - add r0, r2, #0\n\ - add r1, r2, #0\n\ - mov r3, #0x4\n\ - bl move_anim_start_t3\n\ - b ._129\n\ -._128:\n\ - .align 2, 0\n\ -._127:\n\ - .word gActiveBank\n\ - .word +0x2017810\n\ -._124:\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._129 @cond_branch\n\ - bl sub_804454C\n\ -._129:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0"); -} -#else void bx_battle_menu_t6_2(void) { if (gMain.newKeys & A_BUTTON) @@ -502,8 +273,18 @@ void bx_battle_menu_t6_2(void) sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); } } -} +#if DEBUG + else if (gMain.newKeys & R_BUTTON) + { + if (!ewram17810[gActiveBank].unk0_5) + move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0); + } + else if (gMain.newKeys & START_BUTTON) + { + sub_804454C(); + } #endif +} void sub_812B65C(void) { diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index b703bc7b8..9be026d53 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1277,353 +1277,8 @@ _08044548: .4byte 0x04000008\n\ } #endif -#if DEBUG -__attribute__((naked)) -void sub_804454C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " ldr r0, ._150\n" - " ldrb r0, [r0]\n" - " cmp r8, r0\n" - " blt ._133 @cond_branch\n" - " b ._164\n" - "._133:\n" - " ldr r1, ._150 + 4\n" - " mov r9, r1\n" - " mov r2, #0x64\n" - " mov sl, r2\n" - " ldr r7, ._150 + 8\n" - "._165:\n" - " ldr r0, ._150 + 12\n" - " mov r6, r8\n" - " add r5, r6, r0\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, r9\n" - " add r1, r1, #0x1c\n" - " add r0, r0, r1\n" - " ldr r1, [r0]\n" - " ldr r0, ._150 + 16\n" - " cmp r1, r0\n" - " beq ._135 @cond_branch\n" - " b ._147\n" - "._135:\n" - " ldr r0, ._150 + 20\n" - " ldrb r0, [r0]\n" - " lsl r4, r6, #0x18\n" - " cmp r0, #0\n" - " bne ._138 @cond_branch\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._138 @cond_branch\n" - " b ._147\n" - "._138:\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " b ._147\n" - "._141:\n" - " mov r0, r8\n" - " lsl r3, r0, #0x2\n" - " ldr r0, ._150 + 24\n" - " add r3, r3, r0\n" - " ldr r0, [r3]\n" - " lsl r0, r0, #0x1b\n" - " lsr r0, r0, #0x1f\n" - " mov r2, #0x1\n" - " eor r2, r2, r0\n" - " lsl r2, r2, #0x4\n" - " ldrb r0, [r3]\n" - " mov r6, #0x11\n" - " neg r6, r6\n" - " add r1, r6, #0\n" - " and r0, r0, r1\n" - " orr r0, r0, r2\n" - " strb r0, [r3]\n" - " ldr r0, [r3]\n" - " lsl r0, r0, #0x1b\n" - " lsr r6, r0, #0x1f\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._143 @cond_branch\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._144 @cond_branch\n" - " b ._147\n" - "._144:\n" - " ldr r0, ._150 + 28\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._146 @cond_branch\n" - " b ._147\n" - "._146:\n" - " cmp r6, #0x1\n" - " bne ._148 @cond_branch\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r0, [r0, #0x38]\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " str r2, [sp]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r0, ._150 + 32\n" - " add r1, r1, r0\n" - " mov r0, sp\n" - " ldr r2, ._150 + 36\n" - " bl CpuSet\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r1, sl\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r2, ._150 + 40\n" - " add r0, r0, r2\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " bl sub_8044210\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r0\n" - " add r0, r6, #0\n" - " ldr r1, ._150 + 40\n" - " b ._149\n" - "._151:\n" - " .align 2, 0\n" - "._150:\n" - " .word gNoOfAllBanks\n" - " .word gSprites\n" - " .word gBattlePartyID\n" - " .word gHealthboxIDs\n" - " .word SpriteCallbackDummy+1\n" - " .word gUnknown_020297ED\n" - " .word +0x2017800\n" - " .word gBattleTypeFlags\n" - " .word 0x6010000\n" - " .word 0x5000040\n" - " .word gPlayerParty\n" - "._148:\n" - " ldrb r0, [r5]\n" - " bl draw_status_ailment_maybe\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r2, sl\n" - " mul r2, r2, r1\n" - " add r1, r2, #0\n" - " ldr r6, ._153\n" - " add r1, r1, r6\n" - " mov r2, #0x5\n" - " bl sub_8045A5C\n" - " mov r0, #0x75\n" - " bl sub_8043CDC\n" - " ldrb r2, [r5]\n" - " lsl r1, r2, #0x4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r9\n" - " ldrh r1, [r1, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r2, ._153 + 4\n" - " add r1, r1, r2\n" - " ldr r2, ._153 + 8\n" - " bl CpuSet\n" - " b ._163\n" - "._154:\n" - " .align 2, 0\n" - "._153:\n" - " .word gPlayerParty\n" - " .word 0x6010680\n" - " .word 0x4000008\n" - "._143:\n" - " cmp r6, #0x1\n" - " bne ._155 @cond_branch\n" - " ldr r0, ._158\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._156 @cond_branch\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r1\n" - " add r1, r6, #0\n" - " ldr r2, ._158 + 4\n" - " add r1, r1, r2\n" - " bl sub_8044338\n" - " b ._163\n" - "._159:\n" - " .align 2, 0\n" - "._158:\n" - " .word gBattleTypeFlags\n" - " .word gEnemyParty\n" - "._156:\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r0, [r0, #0x38]\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " str r2, [sp]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r6, ._161\n" - " add r1, r1, r6\n" - " mov r0, sp\n" - " ldr r2, ._161 + 4\n" - " bl CpuSet\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r1, sl\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r2, ._161 + 8\n" - " add r0, r0, r2\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " bl sub_8044210\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r0\n" - " add r0, r6, #0\n" - " ldr r1, ._161 + 8\n" - "._149:\n" - " add r0, r0, r1\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " bl sub_8044210\n" - " b ._163\n" - "._162:\n" - " .align 2, 0\n" - "._161:\n" - " .word 0x6010000\n" - " .word 0x5000040\n" - " .word gEnemyParty\n" - "._155:\n" - " ldrb r0, [r5]\n" - " bl draw_status_ailment_maybe\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r6, #0x64\n" - " mul r1, r1, r6\n" - " ldr r4, ._166\n" - " add r1, r1, r4\n" - " mov r2, #0x5\n" - " bl sub_8045A5C\n" - " ldr r0, ._166 + 4\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._163 @cond_branch\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mul r1, r1, r6\n" - " add r1, r1, r4\n" - " mov r2, #0x4\n" - " bl sub_8045A5C\n" - "._163:\n" - " ldr r0, ._166 + 8\n" - " add r0, r0, r8\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x3c]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " strh r1, [r0, #0x3c]\n" - "._147:\n" - " add r7, r7, #0x2\n" - " mov r2, #0x1\n" - " add r8, r8, r2\n" - " ldr r0, ._166 + 12\n" - " ldrb r0, [r0]\n" - " cmp r8, r0\n" - " bge ._164 @cond_branch\n" - " b ._165\n" - "._164:\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word gEnemyParty\n" - " .word gBattleTypeFlags\n" - " .word gHealthboxIDs\n" - " .word gNoOfAllBanks\n" - "\n" - ); -} -#else +extern u8 gUnknown_020297ED; + void sub_804454C(void) { s32 i; @@ -1632,7 +1287,11 @@ void sub_804454C(void) for (i = 0; i < gNoOfAllBanks; i++) { if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy +#if DEBUG + && (gUnknown_020297ED != 0 || GetBankSide(i) != 1) +#else && GetBankSide(i) != 1 +#endif && (IsDoubleBattle() || GetBankSide(i) != 0)) { u8 r6; @@ -1691,7 +1350,6 @@ void sub_804454C(void) } } } -#endif // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING @@ -3045,310 +2703,6 @@ static u8 sub_80457E8(u8 a, u8 b) } } -#if DEBUG -__attribute__((naked)) -void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffff8\n" - " mov r9, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " lsl r2, r2, #0x18\n" - " lsr r7, r2, #0x18\n" - " ldr r1, ._429\n" - " lsl r0, r0, #0x4\n" - " add r0, r0, r8\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrh r0, [r0, #0x3a]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov sl, r0\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._410 @cond_branch\n" - " b ._411\n" - "._410:\n" - " cmp r7, #0x3\n" - " beq ._412 @cond_branch\n" - " cmp r7, #0\n" - " bne ._413 @cond_branch\n" - "._412:\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r8\n" - " bl sub_8043FC0\n" - "._413:\n" - " cmp r7, #0x1\n" - " bhi ._414 @cond_branch\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x0\n" - " bl sub_80440EC\n" - "._414:\n" - " cmp r7, #0x2\n" - " beq ._415 @cond_branch\n" - " cmp r7, #0\n" - " bne ._416 @cond_branch\n" - "._415:\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " bl sub_80440EC\n" - "._416:\n" - " cmp r7, #0x5\n" - " beq ._417 @cond_branch\n" - " cmp r7, #0\n" - " bne ._418 @cond_branch\n" - "._417:\n" - " mov r0, #0x0\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " add r2, r4, #0\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._418:\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp, #0x4]\n" - " cmp r0, #0\n" - " bne ._421 @cond_branch\n" - " cmp r7, #0x6\n" - " beq ._420 @cond_branch\n" - " cmp r7, #0\n" - " bne ._421 @cond_branch\n" - "._420:\n" - " mov r0, #0x3\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r0, r9\n" - " mov r1, #0x19\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " ldr r6, ._429 + 4\n" - " lsl r1, r4, #0x2\n" - " ldr r2, ._429 + 8\n" - " lsl r0, r5, #0x3\n" - " sub r0, r0, r5\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrb r2, [r0, #0x13]\n" - " mov r0, #0xca\n" - " lsl r0, r0, #0x1\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r6\n" - " ldr r1, [r1]\n" - " sub r3, r3, r1\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x2\n" - " add r4, r4, r0\n" - " add r4, r4, r6\n" - " ldr r2, [r4]\n" - " sub r2, r2, r1\n" - " ldr r0, [sp, #0x4]\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x1\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._421:\n" - " cmp r7, #0x4\n" - " beq ._422 @cond_branch\n" - " cmp r7, #0\n" - " bne ._423 @cond_branch\n" - "._422:\n" - " mov r0, r8\n" - " mov r1, r9\n" - " bl sub_80451A0\n" - "._423:\n" - " cmp r7, #0x9\n" - " beq ._424 @cond_branch\n" - " cmp r7, #0\n" - " bne ._425 @cond_branch\n" - "._424:\n" - " mov r0, r8\n" - " bl draw_status_ailment_maybe\n" - "._425:\n" - " cmp r7, #0xa\n" - " bne ._426 @cond_branch\n" - " mov r0, r8\n" - " bl sub_80458B0\n" - "._426:\n" - " add r0, r7, #0\n" - " sub r0, r0, #0xa\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bhi ._442 @cond_branch\n" - " mov r0, r8\n" - " bl sub_8045998\n" - " b ._442\n" - "._430:\n" - " .align 2, 0\n" - "._429:\n" - " .word gSprites\n" - " .word gExperienceTables\n" - " .word gBaseStats\n" - "._411:\n" - " cmp r7, #0x3\n" - " beq ._431 @cond_branch\n" - " cmp r7, #0\n" - " bne ._432 @cond_branch\n" - "._431:\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r8\n" - " bl sub_8043FC0\n" - "._432:\n" - " ldr r0, ._443\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x1\n" - " bne ._436 @cond_branch\n" - " cmp r7, #0x1\n" - " bhi ._434 @cond_branch\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x0\n" - " bl sub_80440EC\n" - "._434:\n" - " cmp r7, #0x2\n" - " beq ._435 @cond_branch\n" - " cmp r7, #0\n" - " bne ._436 @cond_branch\n" - "._435:\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " bl sub_80440EC\n" - "._436:\n" - " cmp r7, #0x5\n" - " beq ._437 @cond_branch\n" - " cmp r7, #0\n" - " bne ._438 @cond_branch\n" - "._437:\n" - " mov r0, #0x0\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " add r2, r4, #0\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._438:\n" - " cmp r7, #0x4\n" - " beq ._439 @cond_branch\n" - " cmp r7, #0\n" - " bne ._440 @cond_branch\n" - "._439:\n" - " mov r0, r8\n" - " mov r1, r9\n" - " bl sub_80451A0\n" - "._440:\n" - " cmp r7, #0x9\n" - " beq ._441 @cond_branch\n" - " cmp r7, #0\n" - " bne ._442 @cond_branch\n" - "._441:\n" - " mov r0, r8\n" - " bl draw_status_ailment_maybe\n" - "._442:\n" - " add sp, sp, #0x8\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._444:\n" - " .align 2, 0\n" - "._443:\n" - " .word gUnknown_020297ED\n" - "\n" - ); -} -#else void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { u8 r10; @@ -3404,6 +2758,15 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { if (c == 3 || c == 0) sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL)); +#if DEBUG + if (gUnknown_020297ED == 1) + { + if (c == 1 || c == 0) + sub_80440EC(a, GetMonData(pkmn, MON_DATA_HP), 0); + if (c == 2 || c == 0) + sub_80440EC(a, GetMonData(pkmn, MON_DATA_MAX_HP), 1); + } +#endif if (c == 5 || c == 0) { load_gfxc_health_bar(0); @@ -3418,7 +2781,6 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) draw_status_ailment_maybe(a); } } -#endif s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) { diff --git a/src/pokemon/pokemon_1.c b/src/pokemon/pokemon_1.c index 6f187ad71..41579fa28 100644 --- a/src/pokemon/pokemon_1.c +++ b/src/pokemon/pokemon_1.c @@ -525,324 +525,49 @@ void CalculateMonStats(struct Pokemon *mon) } #if DEBUG -__attribute__((naked)) -void debug_sub_803F55C() +void debug_sub_803F55C(struct Pokemon *mon) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffc4\n" - " add r5, r0, #0\n" - " mov r1, #0x39\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x1c]\n" - " add r0, r5, #0\n" - " mov r1, #0x27\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " add r7, r0, #0\n" - " add r0, r5, #0\n" - " mov r1, #0x1a\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " add r0, r5, #0\n" - " mov r1, #0x28\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov r9, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x1b\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov r8, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x29\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x20]\n" - " add r0, r5, #0\n" - " mov r1, #0x1c\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " mov sl, r0\n" - " add r0, r5, #0\n" - " mov r1, #0x2a\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x24]\n" - " add r0, r5, #0\n" - " mov r1, #0x1d\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x28]\n" - " add r0, r5, #0\n" - " mov r1, #0x2b\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x2c]\n" - " add r0, r5, #0\n" - " mov r1, #0x1e\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x30]\n" - " add r0, r5, #0\n" - " mov r1, #0x2c\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x34]\n" - " add r0, r5, #0\n" - " mov r1, #0x1f\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " str r0, [sp, #0x38]\n" - " add r0, r5, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x0\n" - " bl GetMonData\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " add r0, r5, #0\n" - " bl GetLevelFromMonExp\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " mov r1, #0x38\n" - " mov r2, sp\n" - " bl SetMonData\n" - " ldr r0, ._71\n" - " cmp r6, r0\n" - " bne ._69 @cond_branch\n" - " mov r0, #0x1\n" - " str r0, [sp, #0x4]\n" - " lsl r7, r6, #0x3\n" - " b ._70\n" - "._72:\n" - " .align 2, 0\n" - "._71:\n" - " .word 0x12f\n" - "._69:\n" - " ldr r1, ._80\n" - " lsl r2, r6, #0x3\n" - " sub r0, r2, r6\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x1\n" - " add r1, r0, r7\n" - " add r0, r4, #0\n" - " add r7, r2, #0\n" - " cmp r0, #0\n" - " bge ._73 @cond_branch\n" - " add r0, r0, #0x3\n" - "._73:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r4, [sp]\n" - " mul r0, r0, r4\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, r4\n" - " add r0, r0, #0xa\n" - " str r0, [sp, #0x4]\n" - "._70:\n" - " add r2, sp, #0x4\n" - " add r0, r5, #0\n" - " mov r1, #0x3a\n" - " bl SetMonData\n" - " ldr r1, ._80\n" - " sub r0, r7, r6\n" - " lsl r0, r0, #0x2\n" - " add r6, r0, r1\n" - " ldrb r0, [r6, #0x1]\n" - " lsl r0, r0, #0x1\n" - " mov r2, r9\n" - " add r1, r0, r2\n" - " mov r0, r8\n" - " cmp r0, #0\n" - " bge ._74 @cond_branch\n" - " add r0, r0, #0x3\n" - "._74:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x8]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x8\n" - " ldrh r1, [r4]\n" - " mov r2, #0x1\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x8]\n" - " add r0, r5, #0\n" - " mov r1, #0x3b\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x20]\n" - " add r1, r0, r2\n" - " mov r0, sl\n" - " cmp r0, #0\n" - " bge ._75 @cond_branch\n" - " add r0, r0, #0x3\n" - "._75:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0xc]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0xc\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0xc]\n" - " add r0, r5, #0\n" - " mov r1, #0x3c\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x3]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x24]\n" - " add r1, r0, r2\n" - " ldr r0, [sp, #0x28]\n" - " cmp r0, #0\n" - " bge ._76 @cond_branch\n" - " add r0, r0, #0x3\n" - "._76:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x10]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x10\n" - " ldrh r1, [r4]\n" - " mov r2, #0x3\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x10]\n" - " add r0, r5, #0\n" - " mov r1, #0x3d\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x4]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, [sp, #0x2c]\n" - " add r1, r0, r2\n" - " ldr r0, [sp, #0x30]\n" - " cmp r0, #0\n" - " bge ._77 @cond_branch\n" - " add r0, r0, #0x3\n" - "._77:\n" - " asr r0, r0, #0x2\n" - " add r0, r1, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x14]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x14\n" - " ldrh r1, [r4]\n" - " mov r2, #0x4\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r5, #0\n" - " mov r1, #0x3e\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldrb r0, [r6, #0x5]\n" - " lsl r0, r0, #0x1\n" - " ldr r1, [sp, #0x34]\n" - " add r2, r0, r1\n" - " ldr r0, [sp, #0x38]\n" - " cmp r0, #0\n" - " bge ._78 @cond_branch\n" - " add r0, r0, #0x3\n" - "._78:\n" - " asr r0, r0, #0x2\n" - " add r0, r2, r0\n" - " ldr r1, [sp]\n" - " mul r0, r0, r1\n" - " mov r1, #0x64\n" - " bl __divsi3\n" - " add r0, r0, #0x5\n" - " str r0, [sp, #0x18]\n" - " add r0, r5, #0\n" - " bl GetNature\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " add r4, sp, #0x18\n" - " ldrh r1, [r4]\n" - " mov r2, #0x5\n" - " bl nature_stat_mod\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x18]\n" - " add r0, r5, #0\n" - " mov r1, #0x3f\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " ldr r1, [sp, #0x4]\n" - " ldr r0, [sp, #0x1c]\n" - " cmp r1, r0\n" - " bge ._79 @cond_branch\n" - " str r1, [sp, #0x1c]\n" - "._79:\n" - " add r2, sp, #0x1c\n" - " add r0, r5, #0\n" - " mov r1, #0x39\n" - " bl SetMonData\n" - " add sp, sp, #0x3c\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._81:\n" - " .align 2, 0\n" - "._80:\n" - " .word gBaseStats\n" - "\n" - ); + s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL); + s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL); + s32 hpEV = GetMonData(mon, MON_DATA_HP_EV, NULL); + s32 attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL); + s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL); + s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL); + s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL); + s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL); + s32 speedEV = GetMonData(mon, MON_DATA_SPEED_EV, NULL); + s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL); + s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL); + s32 spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL); + s32 spDefenseEV = GetMonData(mon, MON_DATA_SPDEF_EV, NULL); + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + s32 level = GetLevelFromMonExp(mon); + s32 newMaxHP; + + SetMonData(mon, MON_DATA_LEVEL, &level); + + if (species == SPECIES_SHEDINJA) + { + newMaxHP = 1; + } + else + { + s32 n = 2 * gBaseStats[species].baseHP + hpIV; + newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10; + } + + SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP); + + CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK) + CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF) + CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED) + CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK) + CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF) + + if (newMaxHP < currentHP) + currentHP = newMaxHP; + + SetMonData(mon, MON_DATA_HP, ¤tHP); } #endif diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c index 8e1bd1671..532340ce4 100644 --- a/src/pokemon/pokemon_menu.c +++ b/src/pokemon/pokemon_menu.c @@ -31,6 +31,7 @@ #include "item_menu.h" #include "player_pc.h" #include "ewram.h" +#include "script.h" /* Pokemon menu: @@ -45,6 +46,7 @@ struct PokeMenuFieldMoveFunc u8 field_1; }; +extern u8 gUnknown_020297ED; extern u8 gUnknown_020384F0; extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F5; @@ -900,9 +902,10 @@ static void sub_808AE08(void) static bool8 SetUpFieldMove_Waterfall(void) { s16 x, y; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE - && IsPlayerSurfingNorth() == TRUE) + && IsPlayerSurfingNorth() == TRUE) { gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_808AE08; @@ -913,138 +916,19 @@ static bool8 SetUpFieldMove_Waterfall(void) } #if DEBUG -__attribute__((naked)) -void debug_sub_80986AC() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - mov r4, sp\n\ - add r4, r4, #0x2\n\ - mov r0, sp\n\ - add r1, r4, #0\n\ - bl GetXYCoordsOneStepInFrontOfPlayer\n\ - mov r0, sp\n\ - mov r1, #0x0\n\ - ldsh r0, [r0, r1]\n\ - mov r2, #0x0\n\ - ldsh r1, [r4, r2]\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl MetatileBehavior_IsWaterfall\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._274 @cond_branch\n\ - bl IsPlayerSurfingNorth\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - bne ._274 @cond_branch\n\ - bl sub_808AE08\n\ - b ._275\n\ -._274:\n\ - bl ScriptContext2_Disable\n\ -._275:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0"); +void debug_sub_80986AC(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE + && IsPlayerSurfingNorth() == TRUE) + sub_808AE08(); + else + ScriptContext2_Disable(); } #endif -#if DEBUG -__attribute__((naked)) -static void sub_808AE8C(void) -{ - asm("\ - push {r4, r5, r6, lr}\n\ - ldr r0, ._281\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x21\n\ - lsl r0, r0, #0x18\n\ - lsr r6, r0, #0x18\n\ - mov r5, #0x0\n\ -._287:\n\ - mov r0, #0x64\n\ - add r1, r5, #0\n\ - mul r1, r1, r0\n\ - ldr r0, ._281 + 4\n\ - add r4, r1, r0\n\ - add r0, r4, #0\n\ - mov r1, #0xb\n\ - bl GetMonData\n\ - cmp r0, #0\n\ - beq ._284 @cond_branch\n\ - add r0, r5, #0\n\ - bl sub_806D668\n\ - ldr r0, ._281 + 8\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._279 @cond_branch\n\ - add r0, r4, #0\n\ - mov r1, #0x2d\n\ - bl GetMonData\n\ - cmp r0, #0\n\ - bne ._278 @cond_branch\n\ - add r0, r4, #0\n\ - add r1, r6, #0\n\ - bl CanMonLearnTMHM\n\ - cmp r0, #0\n\ - bne ._279 @cond_branch\n\ -._278:\n\ - add r0, r5, #0\n\ - mov r1, #0x9a\n\ - bl sub_806BC3C\n\ - b ._284\n\ -._282:\n\ - .align 2, 0\n\ -._281:\n\ - .word gSpecialVar_ItemId\n\ - .word gPlayerParty\n\ - .word gUnknown_020297ED\n\ -._279:\n\ - mov r0, #0x64\n\ - add r4, r5, #0\n\ - mul r4, r4, r0\n\ - ldr r0, ._285\n\ - add r4, r4, r0\n\ - ldr r0, ._285 + 4\n\ - ldrh r0, [r0]\n\ - bl ItemIdToBattleMoveId\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x10\n\ - lsr r1, r1, #0x10\n\ - add r0, r4, #0\n\ - bl pokemon_has_move\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._283 @cond_branch\n\ - add r0, r5, #0\n\ - mov r1, #0xa8\n\ - bl sub_806BC3C\n\ - b ._284\n\ -._286:\n\ - .align 2, 0\n\ -._285:\n\ - .word gPlayerParty\n\ - .word gSpecialVar_ItemId\n\ -._283:\n\ - add r0, r5, #0\n\ - mov r1, #0x8c\n\ - bl sub_806BC3C\n\ -._284:\n\ - add r0, r5, #1\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - cmp r5, #0x5\n\ - bls ._287 @cond_branch\n\ - pop {r4, r5, r6}\n\ - pop {r0}\n\ - bx r0"); -} -#else static void sub_808AE8C(void) { u8 i; @@ -1054,7 +938,11 @@ static void sub_808AE8C(void) if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)) { sub_806D668(i); - if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)) + if ( +#if DEBUG + gUnknown_020297ED == 0 && +#endif + (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))) sub_806BC3C(i, 0x9A); else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId))) sub_806BC3C(i, 0xA8); @@ -1063,7 +951,6 @@ static void sub_808AE8C(void) } } } -#endif static void sub_808AF20(void) { -- cgit v1.2.3 From 33d2d51906bbde1c62cee3470a9b3706571d551c Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 21:33:46 -0600 Subject: decompile more debug functions --- src/battle/battle_2.c | 237 +++++++++++++------------------------------------ src/battle/battle_ai.c | 217 ++------------------------------------------ 2 files changed, 69 insertions(+), 385 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index f9756db29..e72a875fb 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -6,6 +6,7 @@ #include "constants/moves.h" #include "constants/songs.h" #include "constants/species.h" +#include "gba/flash_internal.h" #include "battle.h" #include "battle_ai.h" #include "battle_interface.h" @@ -1500,6 +1501,17 @@ void debug_sub_80108B8(void) } } +// This function matches, but it somehow affects registers in SetActionsAndBanksTurnOrder. +#ifdef NONMATCHING +void debug_sub_8010A7C(u8 a, u8 b) +{ + s32 i; + + for (i = 0; i < b; i++) + gBattleTextBuff1[i] = a; + gBattleTextBuff1[i] = EOS; +} +#else __attribute__((naked)) void debug_sub_8010A7C() { @@ -1534,6 +1546,14 @@ void debug_sub_8010A7C() "\n" ); } +#endif + +/* +void debug_sub_8010AAC(u8 a) +{ + u32 r7 = gUnknown_Debug_030043A4 * 5; +} +*/ __attribute__((naked)) void debug_sub_8010AAC() @@ -3898,72 +3918,19 @@ void debug_sub_801174C() ); } -__attribute__((naked)) -void debug_sub_8011D40() +void debug_sub_8011D40(void) { - asm( - " push {lr}\n" - " ldr r1, ._774\n" - " ldr r0, ._774 + 4\n" - " str r0, [r1]\n" - " ldr r0, ._774 + 8\n" - " str r0, [r1, #0x4]\n" - " ldr r0, ._774 + 12\n" - " str r0, [r1, #0x8]\n" - " ldr r0, [r1, #0x8]\n" - " sub r1, r1, #0xc4\n" - " ldr r0, ._774 + 16\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 20\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 24\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 28\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 32\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 36\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 40\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " add r1, r1, #0x2\n" - " ldr r0, ._774 + 44\n" - " ldrh r0, [r0]\n" - " strh r0, [r1]\n" - " bl LoadOam\n" - " bl ProcessSpriteCopyRequests\n" - " pop {r0}\n" - " bx r0\n" - "._775:\n" - " .align 2, 0\n" - "._774:\n" - " .word 0x40000d4\n" - " .word gSharedMem\n" - " .word 0x6004000\n" - " .word 0x80000800\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - "\n" - ); + DmaCopy16(3, gSharedMem, (void *)(VRAM + 0x4000), 0x1000); + REG_BG0HOFS = gBattle_BG0_X; + REG_BG0VOFS = gBattle_BG0_Y; + REG_BG1HOFS = gBattle_BG1_X; + REG_BG1VOFS = gBattle_BG1_Y; + REG_BG2HOFS = gBattle_BG2_X; + REG_BG2VOFS = gBattle_BG2_Y; + REG_BG3HOFS = gBattle_BG3_X; + REG_BG3VOFS = gBattle_BG3_Y; + LoadOam(); + ProcessSpriteCopyRequests(); } void debug_nullsub_45() @@ -6517,125 +6484,45 @@ void debug_sub_8012D10() ); } -__attribute__((naked)) -void debug_sub_8013240() +u8 debug_sub_8013240(void) { - asm( - " push {lr}\n" - " bl IdentifyFlash\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " beq ._1068 @cond_branch\n" - " mov r0, #0x1\n" - " b ._1069\n" - "._1068:\n" - " mov r0, #0x0\n" - "._1069:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (IdentifyFlash() == 0) + return 0; + else + return 1; } -__attribute__((naked)) -void debug_sub_8013258() +u32 debug_sub_8013258(u16 sectorNum, u8 *data, u32 size) { - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r1, #0\n" - " add r5, r2, #0\n" - " b ._1070\n" - "._1072:\n" - " ldr r0, ._1074\n" - " add r5, r5, r0\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " add r6, r6, r0\n" - " add r0, r4, #1\n" - "._1070:\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " cmp r0, #0\n" - " bne ._1071 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " cmp r5, r0\n" - " bhi ._1072 @cond_branch\n" - " mov r0, #0x1\n" - " b ._1073\n" - "._1075:\n" - " .align 2, 0\n" - "._1074:\n" - " .word 0xfffff000\n" - "._1071:\n" - " mov r0, #0x0\n" - "._1073:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + while (1) + { + if (ProgramFlashSectorAndVerify(sectorNum, data) != 0) + return 0; + if (size <= 0x1000) + break; + size -= 0x1000; + data += 0x1000; + sectorNum++; + } + return 1; } -__attribute__((naked)) -void debug_sub_8013294() +u32 debug_sub_8013294(u8 sectorNum, void *data, u32 size) { - asm( - " push {r4, r5, r6, lr}\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " bl debug_sub_8013240\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._1076 @cond_branch\n" - " bl m4aSoundVSyncOff\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl debug_sub_8013258\n" - " add r4, r0, #0\n" - " bl m4aSoundVSyncOn\n" - " add r0, r4, #0\n" - " b ._1077\n" - "._1076:\n" - " mov r0, #0x0\n" - "._1077:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + u32 result; + + if (debug_sub_8013240() != 0) + return 0; + m4aSoundVSyncOff(); + result = debug_sub_8013258(sectorNum, data, size); + m4aSoundVSyncOn(); + return result; } -__attribute__((naked)) -void debug_sub_80132C8() +void debug_sub_80132C8(u8 a, void *b, u32 c) { - asm( - " push {r4, r5, r6, lr}\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " bl debug_sub_8013240\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._1078 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0x0\n" - " add r2, r5, #0\n" - " add r3, r6, #0\n" - " bl ReadFlash\n" - "._1078:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + if (debug_sub_8013240() == 0) + ReadFlash(a, 0, b, c); } #endif @@ -10146,7 +10033,7 @@ void SetActionsAndBanksTurnOrder(void) // And doing this seems to fix it. #if DEBUG asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm(""); - asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm(""); + asm("");asm("");asm("");asm("");asm("");asm("");asm(""); #endif gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; eFocusPunchBank = 0; diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 87a66c2c7..629a57d25 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -13,6 +13,8 @@ #include "util.h" #include "ewram.h" +extern u8 gUnknown_02023A14_50; +extern u32 gUnknown_02023A14_4C; extern u16 gBattleTypeFlags; extern u16 gBattleWeather; extern u8 gActiveBank; @@ -289,214 +291,6 @@ void BattleAI_HandleItemUseBeforeAISetup(void) BattleAI_SetupAIData(); } -#if DEBUG -__attribute__((naked)) -void BattleAI_SetupAIData() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " ldr r2, ._16\n" - " mov r4, #0x0\n" - " ldr r3, ._16 + 4\n" - " mov r1, #0x0\n" - "._9:\n" - " add r0, r2, r4\n" - " strb r1, [r0]\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x1b\n" - " bls ._9 @cond_branch\n" - " ldr r0, ._16\n" - " mov r1, #0x64\n" - " mov r4, #0x3\n" - " add r0, r0, #0x7\n" - "._10:\n" - " strb r1, [r0]\n" - " sub r0, r0, #0x1\n" - " sub r4, r4, #0x1\n" - " cmp r4, #0\n" - " bge ._10 @cond_branch\n" - " ldrb r0, [r3]\n" - " mov r1, #0x0\n" - " mov r2, #0xff\n" - " bl CheckMoveLimitations\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " mov r4, #0x0\n" - " ldr r0, ._16\n" - " add r5, r0, #4\n" - " ldr r6, ._16 + 8\n" - "._12:\n" - " ldr r0, [r6]\n" - " and r0, r0, r7\n" - " cmp r0, #0\n" - " beq ._11 @cond_branch\n" - " mov r0, #0x0\n" - " strb r0, [r5]\n" - "._11:\n" - " bl Random\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " mov r1, #0xf\n" - " and r0, r0, r1\n" - " mov r1, #0x64\n" - " sub r1, r1, r0\n" - " strb r1, [r5, #0x14]\n" - " add r5, r5, #0x1\n" - " add r6, r6, #0x4\n" - " add r4, r4, #0x1\n" - " cmp r4, #0x3\n" - " ble ._12 @cond_branch\n" - " ldr r0, ._16 + 12\n" - " add r0, r0, #0x20\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " ldr r1, ._16 + 16\n" - " ldr r0, ._16 + 4\n" - " ldrb r2, [r0]\n" - " strb r2, [r1]\n" - " ldr r0, ._16 + 20\n" - " ldrh r1, [r0]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._13 @cond_branch\n" - " ldr r4, ._16 + 24\n" - " bl Random\n" - " mov r5, #0x2\n" - " and r0, r0, r5\n" - " strb r0, [r4]\n" - " ldr r0, ._16 + 28\n" - " ldrb r1, [r0]\n" - " ldr r2, ._16 + 8\n" - " ldrb r3, [r4]\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r2\n" - " ldr r0, [r0]\n" - " and r1, r1, r0\n" - " cmp r1, #0\n" - " beq ._15 @cond_branch\n" - " eor r3, r3, r5\n" - " strb r3, [r4]\n" - " b ._15\n" - "._17:\n" - " .align 2, 0\n" - "._16:\n" - " .word gSharedMem+0x16800\n" - " .word gActiveBank\n" - " .word gBitTable\n" - " .word +0x2016c00\n" - " .word gBankAttacker\n" - " .word gBattleTypeFlags\n" - " .word gBankTarget\n" - " .word gAbsentBankFlags\n" - "._13:\n" - " ldr r0, ._20\n" - " mov r1, #0x1\n" - " eor r1, r1, r2\n" - " strb r1, [r0]\n" - "._15:\n" - " ldr r0, ._20 + 4\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._18 @cond_branch\n" - " ldr r1, ._20 + 8\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x17\n" - " b ._27\n" - "._21:\n" - " .align 2, 0\n" - "._20:\n" - " .word gBankTarget\n" - " .word gBattleTypeFlags\n" - " .word gSharedMem+0x16800\n" - "._18:\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x3\n" - " add r0, r2, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._22 @cond_branch\n" - " ldr r1, ._24\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x16\n" - " b ._27\n" - "._25:\n" - " .align 2, 0\n" - "._24:\n" - " .word gSharedMem+0x16800\n" - "._22:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._26 @cond_branch\n" - " ldr r1, ._28\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x18\n" - " b ._27\n" - "._29:\n" - " .align 2, 0\n" - "._28:\n" - " .word gSharedMem+0x16800\n" - "._26:\n" - " mov r0, #0x90\n" - " lsl r0, r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._30 @cond_branch\n" - " ldr r1, ._33\n" - " ldrh r0, [r1]\n" - " cmp r0, r2\n" - " bne ._31 @cond_branch\n" - "._30:\n" - " ldr r1, ._33 + 4\n" - " mov r0, #0x7\n" - "._27:\n" - " str r0, [r1, #0xc]\n" - " add r3, r1, #0\n" - " b ._32\n" - "._34:\n" - " .align 2, 0\n" - "._33:\n" - " .word gTrainerBattleOpponent\n" - " .word gSharedMem+0x16800\n" - "._31:\n" - " ldr r3, ._36\n" - " ldr r2, ._36 + 4\n" - " ldrh r1, [r1]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x3\n" - " add r2, r2, #0x1c\n" - " add r0, r0, r2\n" - " ldr r0, [r0]\n" - " str r0, [r3, #0xc]\n" - "._32:\n" - " ldr r0, ._36 + 8\n" - " ldrb r1, [r0]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._35 @cond_branch\n" - " ldr r0, ._36 + 12\n" - " ldr r0, [r0]\n" - " str r0, [r3, #0xc]\n" - "._35:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._37:\n" - " .align 2, 0\n" - "._36:\n" - " .word gSharedMem+0x16800\n" - " .word gTrainers\n" - " .word gUnknown_02023A14_50\n" - " .word gUnknown_02023A14_4C\n" - "\n" - ); -} -#else void BattleAI_SetupAIData(void) { s32 i; @@ -544,13 +338,16 @@ void BattleAI_SetupAIData(void) else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) AI_THINKING_STRUCT->aiFlags = 0x80000000; #ifdef GERMAN - else if (gBattleTypeFlags & 0x900 || gTrainerBattleOpponent == 0x400) + else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER) || gTrainerBattleOpponent == 0x400) AI_THINKING_STRUCT->aiFlags = 7; #endif else // otherwise, just set aiFlags to whatever flags the trainer has set in their data. AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags; -} +#if DEBUG + if (gUnknown_02023A14_50 & 1) + AI_THINKING_STRUCT->aiFlags = gUnknown_02023A14_4C; #endif +} u8 BattleAI_GetAIActionToUse(void) { -- cgit v1.2.3 From e8bddb83db39e4352fd2f44d21e761de1174451d Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 26 Jan 2018 22:10:05 -0800 Subject: fix build --- src/battle/anim/guard.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c index 01cf07e39..254160109 100644 --- a/src/battle/anim/guard.c +++ b/src/battle/anim/guard.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle.h" #include "battle_anim.h" #include "rom_8077ABC.h" -- cgit v1.2.3 From 8aae2583eb851d1442b85e28d7bcb13a15c1818d Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sat, 27 Jan 2018 16:41:07 -0600 Subject: add comments for pool loads --- src/roulette.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/roulette.c b/src/roulette.c index 5a8d35647..ffdbc2c26 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -607,7 +607,7 @@ void sub_8115384(void) .align 2, 0\n\ ._35:\n\ .word gUnknown_Debug_03005FB8\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word gMain\n\ .word 0x43c\n\ .word ._37\n\ @@ -718,7 +718,7 @@ void sub_8115384(void) .align 2, 0\n\ ._56:\n\ .word gUnknown_083F88BC\n\ - .word +0x2018800\n\ + .word 0x2018800\n\ .word gUnknown_083F8A60\n\ .word 0x6003000\n\ .word gMain\n\ @@ -870,7 +870,7 @@ void sub_8115384(void) .word 0x4000004\n\ .word sub_8115124+1\n\ .word sub_81156BC+1\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word gTasks\n\ .word gSaveBlock1\n\ .word 0x494\n\ @@ -1063,7 +1063,7 @@ void sub_8115634(u8 unused) ._76:\n\ .align 2, 0\n\ ._75:\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word unk_203955C\n\ .word gMain\n\ .word gTasks\n\ @@ -2067,7 +2067,7 @@ void sub_8116B40(u8 taskid) // end roulette ? ._382:\n\ .align 2, 0\n\ ._381:\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word gSpriteCoordOffsetX\n\ .word gSpriteCoordOffsetY\n\ .word 0x4000050\n\ @@ -4499,7 +4499,7 @@ void debug_sub_812E698() ._840:\n\ .align 2, 0\n\ ._839:\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word 0x0\n\ .word gUnknown_083F8DF4\n\ ._837:\n\ @@ -4546,7 +4546,7 @@ void debug_sub_812E698() ._842:\n\ .align 2, 0\n\ ._841:\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word gUnknown_083F8DF4\n\ .word 0x3dae147b\n\ .word sub_8118D2C+1"); @@ -4902,7 +4902,7 @@ void sub_8118F8C(struct Sprite *sprite) ._869:\n\ .align 2, 0\n\ ._868:\n\ - .word +0x2019000\n\ + .word 0x2019000\n\ .word 0x3f000000\n\ .word 0x0\n\ .word gUnknown_083F8DF4\n\ -- cgit v1.2.3 From 2d5fdddf69bbbe524a32b6b6f104aeb60bb1cebd Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sat, 27 Jan 2018 17:00:08 -0600 Subject: fix undefined references after merge --- src/engine/cable_club.c | 2 +- src/engine/mystery_event_menu.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index 8f79944de..c656b2203 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -321,7 +321,7 @@ void debug_sub_808A55C() mov r2, #0xc\n\ mov r3, #0x1\n\ bl PrintHex\n\ - bl sub_8007ECC\n\ + bl IsLinkTaskFinished\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x18\n\ mov r1, #0xf\n\ diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 2e526bb4a..116b60477 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -697,7 +697,7 @@ void debug_sub_815D1D8() " .word 0x43c\n" "._149:\n" " bl Menu_UpdateWindowText\n" - " bl sub_8007ECC\n" + " bl IsLinkTaskFinished\n" " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " beq ._196 @cond_branch\n" -- cgit v1.2.3 From fe400f60b6609d37d2b8a0c2aec75321adc3e95f Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sat, 27 Jan 2018 17:03:40 -0600 Subject: add comments for pool loads in C files --- src/battle/battle_2.c | 942 ++++++++++++++++---------------- src/battle/battle_4.c | 76 +-- src/battle/battle_controller_opponent.c | 36 +- src/battle/battle_controller_player.c | 128 ++--- src/battle/battle_records.c | 10 +- src/debug/start_menu_debug.c | 586 ++++++++++---------- src/engine/cable_club.c | 56 +- src/engine/link.c | 8 +- src/engine/mystery_event_menu.c | 92 ++-- src/engine/reset_rtc_screen.c | 34 +- src/engine/save_failed_screen.c | 34 +- src/field/berry.c | 100 ++-- src/field/choose_party.c | 4 +- src/field/field_map_obj.c | 28 +- src/field/field_player_avatar.c | 20 +- src/field/field_weather.c | 26 +- src/field/fldeff_cut.c | 10 +- src/field/fldeff_flash.c | 4 +- src/field/fldeff_secretpower.c | 10 +- src/field/item_menu.c | 102 ++-- src/field/mauville_man.c | 6 +- src/field/party_menu.c | 106 ++-- src/field/secret_base.c | 14 +- src/field/shop.c | 2 +- src/field/slot_machine.c | 108 ++-- src/field/start_menu.c | 54 +- src/pokemon/pokemon_summary_screen.c | 126 ++--- src/pokenav_before.c | 766 +++++++++++++------------- src/roulette.c | 262 ++++----- src/scene/cable_car.c | 28 +- src/scene/cute_sketch.c | 42 +- 31 files changed, 1910 insertions(+), 1910 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 2171c6ef6..b9b4290b5 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1521,7 +1521,7 @@ void debug_sub_8010A7C() " lsl r1, r1, #0x18\n" " lsr r2, r1, #0x18\n" " mov r1, #0x0\n" - " ldr r5, ._514\n" + " ldr r5, ._514 @ gBattleTextBuff1\n" " cmp r1, r2\n" " bge ._512 @cond_branch\n" " add r3, r5, #0\n" @@ -1562,14 +1562,14 @@ void debug_sub_8010AAC() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov ip, r0\n" - " ldr r6, ._520\n" - " ldr r4, ._520 + 4\n" - " ldr r5, ._520 + 8\n" + " ldr r6, ._520 @ gBaseStats\n" + " ldr r4, ._520 + 4 @ gUnknown_Debug_2023A76\n" + " ldr r5, ._520 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r5]\n" " lsl r0, r1, #0x2\n" " add r7, r0, r1\n" " lsl r1, r7, #0x1\n" - " ldr r3, ._520 + 12\n" + " ldr r3, ._520 + 12 @ gUnknown_Debug_03004360\n" " ldrb r2, [r3]\n" " mov r0, #0x46\n" " mul r2, r2, r0\n" @@ -1685,10 +1685,10 @@ void debug_sub_8010B80() " lsr r6, r0, #0x18\n" " mov r0, #0x0\n" " mov ip, r0\n" - " ldr r4, ._534\n" - " ldr r1, ._534 + 4\n" + " ldr r4, ._534 @ gUnknown_Debug_2023A76\n" + " ldr r1, ._534 + 4 @ gUnknown_Debug_030043A0\n" " mov r8, r1\n" - " ldr r5, ._534 + 8\n" + " ldr r5, ._534 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r5]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -1696,7 +1696,7 @@ void debug_sub_8010B80() " ldrb r2, [r2]\n" " add r0, r0, r2\n" " lsl r0, r0, #0x1\n" - " ldr r3, ._534 + 12\n" + " ldr r3, ._534 + 12 @ gUnknown_Debug_03004360\n" " ldrb r2, [r3]\n" " mov r1, #0x46\n" " mul r1, r1, r2\n" @@ -1847,7 +1847,7 @@ void debug_sub_8010CAC() " mov r7, r8\n" " push {r7}\n" " add sp, sp, #0xfffffff0\n" - " ldr r4, ._553\n" + " ldr r4, ._553 @ gMain\n" " ldrh r1, [r4, #0x28]\n" " mov r0, #0x81\n" " lsl r0, r0, #0x2\n" @@ -1860,19 +1860,19 @@ void debug_sub_8010CAC() " beq ._544 @cond_branch\n" " b ._559\n" "._544:\n" - " ldr r0, ._553 + 4\n" + " ldr r0, ._553 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " mov r8, r0\n" " cmp r1, #0x5\n" " bhi ._546 @cond_branch\n" - " ldr r0, ._553 + 8\n" + " ldr r0, ._553 + 8 @ gUnknown_Debug_030043A8\n" " mov r1, #0x0\n" " strb r1, [r0]\n" " bl debug_sub_8012628\n" - " ldr r0, ._553 + 12\n" + " ldr r0, ._553 + 12 @ debug_sub_8011498\n" " bl SetMainCallback2\n" "._546:\n" - " ldr r0, ._553 + 16\n" + " ldr r0, ._553 + 16 @ gUnknown_Debug_030043A0\n" " ldrb r3, [r0]\n" " cmp r3, #0\n" " bne ._555 @cond_branch\n" @@ -1880,10 +1880,10 @@ void debug_sub_8010CAC() " ldrb r0, [r1]\n" " cmp r0, #0x6\n" " bne ._555 @cond_branch\n" - " ldr r0, ._553 + 20\n" + " ldr r0, ._553 + 20 @ debug_sub_80108B8\n" " str r0, [r4, #0x8]\n" - " ldr r4, ._553 + 24\n" - " ldr r0, ._553 + 28\n" + " ldr r4, ._553 + 24 @ gPlayerParty\n" + " ldr r0, ._553 + 28 @ gUnknown_Debug_2023A76\n" " ldrh r1, [r0]\n" " ldrb r2, [r0, #0x2]\n" " str r3, [sp]\n" @@ -1899,7 +1899,7 @@ void debug_sub_8010CAC() " add r1, r5, #0\n" " add r1, r1, #0xd\n" " lsl r4, r5, #0x1\n" - " ldr r0, ._553 + 32\n" + " ldr r0, ._553 + 32 @ gUnknown_Debug_2023B02\n" " add r4, r4, r0\n" " add r0, r6, #0\n" " add r2, r4, #0\n" @@ -1911,14 +1911,14 @@ void debug_sub_8010CAC() " lsl r2, r0, #0x1\n" " add r2, r2, r0\n" " lsl r2, r2, #0x2\n" - " ldr r0, ._553 + 36\n" + " ldr r0, ._553 + 36 @ gBattleMoves\n" " add r2, r2, r0\n" " add r0, r6, #0\n" " bl SetMonData\n" " add r5, r5, #0x1\n" " cmp r5, #0x3\n" " ble ._549 @cond_branch\n" - " ldr r2, ._553 + 28\n" + " ldr r2, ._553 + 28 @ gUnknown_Debug_2023A76\n" " mov r4, #0x3c\n" " ldsh r0, [r2, r4]\n" " cmp r0, #0x1\n" @@ -1940,10 +1940,10 @@ void debug_sub_8010CAC() " .word gUnknown_Debug_2023B02\n" " .word gBattleMoves+0x4\n" "._550:\n" - " ldr r1, ._556\n" - " ldr r0, ._556 + 4\n" + " ldr r1, ._556 @ gCB2_AfterEvolution\n" + " ldr r0, ._556 + 4 @ debug_sub_80108B8\n" " str r0, [r1]\n" - " ldr r0, ._556 + 8\n" + " ldr r0, ._556 + 8 @ gPlayerParty\n" " ldrh r1, [r2, #0xa]\n" " mov r2, #0x1\n" " mov r3, #0x0\n" @@ -1958,15 +1958,15 @@ void debug_sub_8010CAC() "._551:\n" " bl debug_sub_8012688\n" "._555:\n" - " ldr r0, ._565\n" + " ldr r0, ._565 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r0]\n" " cmp r0, #0x1\n" " bne ._559 @cond_branch\n" - " ldr r0, ._565 + 4\n" + " ldr r0, ._565 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r0, [r0]\n" " cmp r0, #0x6\n" " bne ._559 @cond_branch\n" - " ldr r3, ._565 + 8\n" + " ldr r3, ._565 + 8 @ gSaveBlock2\n" " ldrb r2, [r3, #0x15]\n" " lsl r0, r2, #0x1d\n" " lsr r5, r0, #0x1f\n" @@ -1999,7 +1999,7 @@ void debug_sub_8010CAC() " bl SetPokemonCryStereo\n" " bl debug_nullsub_3\n" "._559:\n" - " ldr r4, ._565 + 12\n" + " ldr r4, ._565 + 12 @ gMain\n" " ldrh r0, [r4, #0x2a]\n" " cmp r0, #0x8\n" " bne ._561 @cond_branch\n" @@ -2009,7 +2009,7 @@ void debug_sub_8010CAC() " cmp r0, #0x40\n" " bne ._562 @cond_branch\n" " bl debug_sub_80125E4\n" - " ldr r1, ._565 + 4\n" + " ldr r1, ._565 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" " beq ._563 @cond_branch\n" @@ -2027,7 +2027,7 @@ void debug_sub_8010CAC() "._564:\n" " strb r0, [r1]\n" " bl debug_sub_8011E74\n" - " ldr r0, ._570\n" + " ldr r0, ._570 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2036,12 +2036,12 @@ void debug_sub_8010CAC() " bl debug_sub_80123D8\n" " bl debug_sub_80125A0\n" "._562:\n" - " ldr r0, ._570 + 4\n" + " ldr r0, ._570 + 4 @ gMain\n" " ldrh r0, [r0, #0x2a]\n" " cmp r0, #0x80\n" " bne ._567 @cond_branch\n" " bl debug_sub_80125E4\n" - " ldr r1, ._570\n" + " ldr r1, ._570 @ gUnknown_Debug_030043A4\n" " ldrb r0, [r1]\n" " cmp r0, #0x6\n" " bne ._568 @cond_branch\n" @@ -2057,7 +2057,7 @@ void debug_sub_8010CAC() "._569:\n" " strb r0, [r1]\n" " bl debug_sub_8011E74\n" - " ldr r0, ._575\n" + " ldr r0, ._575 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2066,12 +2066,12 @@ void debug_sub_8010CAC() " bl debug_sub_80123D8\n" " bl debug_sub_80125A0\n" "._567:\n" - " ldr r0, ._575 + 4\n" + " ldr r0, ._575 + 4 @ gMain\n" " ldrh r0, [r0, #0x2a]\n" " cmp r0, #0x20\n" " bne ._572 @cond_branch\n" " bl debug_sub_80125E4\n" - " ldr r2, ._575 + 8\n" + " ldr r2, ._575 + 8 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r2]\n" " add r1, r0, #0\n" " cmp r1, #0\n" @@ -2086,18 +2086,18 @@ void debug_sub_8010CAC() " .word gMain\n" " .word gUnknown_Debug_030043A0\n" "._573:\n" - " ldr r3, ._581\n" + " ldr r3, ._581 @ gUnknown_Debug_03004360\n" " ldrb r0, [r3]\n" " cmp r0, #0\n" " beq ._577 @cond_branch\n" " strb r1, [r3]\n" " mov r0, #0x4\n" " strb r0, [r2]\n" - " ldr r0, ._581 + 4\n" + " ldr r0, ._581 + 4 @ gBattle_BG1_X\n" " strh r1, [r0]\n" " bl debug_sub_8011E5C\n" " bl debug_sub_8011E74\n" - " ldr r0, ._581 + 8\n" + " ldr r0, ._581 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2107,12 +2107,12 @@ void debug_sub_8010CAC() "._577:\n" " bl debug_sub_80125A0\n" "._572:\n" - " ldr r0, ._581 + 12\n" + " ldr r0, ._581 + 12 @ gMain\n" " ldrh r0, [r0, #0x2a]\n" " cmp r0, #0x10\n" " bne ._578 @cond_branch\n" " bl debug_sub_80125E4\n" - " ldr r2, ._581 + 16\n" + " ldr r2, ._581 + 16 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r2]\n" " cmp r0, #0x4\n" " beq ._579 @cond_branch\n" @@ -2128,21 +2128,21 @@ void debug_sub_8010CAC() " .word gMain\n" " .word gUnknown_Debug_030043A0\n" "._579:\n" - " ldr r3, ._587\n" + " ldr r3, ._587 @ gUnknown_Debug_03004360\n" " ldrb r1, [r3]\n" " cmp r1, #0\n" " bne ._583 @cond_branch\n" " mov r0, #0x1\n" " strb r0, [r3]\n" " strb r1, [r2]\n" - " ldr r1, ._587 + 4\n" + " ldr r1, ._587 + 4 @ gBattle_BG1_X\n" " mov r2, #0x80\n" " lsl r2, r2, #0x1\n" " add r0, r2, #0\n" " strh r0, [r1]\n" " bl debug_sub_8011E5C\n" " bl debug_sub_8011E74\n" - " ldr r0, ._587 + 8\n" + " ldr r0, ._587 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2152,7 +2152,7 @@ void debug_sub_8010CAC() "._583:\n" " bl debug_sub_80125A0\n" "._578:\n" - " ldr r0, ._587 + 12\n" + " ldr r0, ._587 + 12 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x2\n" " and r0, r0, r1\n" @@ -2160,9 +2160,9 @@ void debug_sub_8010CAC() " bne ._584 @cond_branch\n" " b ._607\n" "._584:\n" - " ldr r0, ._587 + 16\n" + " ldr r0, ._587 + 16 @ gUnknown_Debug_030043A0\n" " ldrb r2, [r0]\n" - " ldr r0, ._587 + 8\n" + " ldr r0, ._587 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2171,7 +2171,7 @@ void debug_sub_8010CAC() " cmp r0, #0x4\n" " bhi ._586 @cond_branch\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._587 + 20\n" + " ldr r1, ._587 + 20 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -2194,7 +2194,7 @@ void debug_sub_8010CAC() " bl debug_sub_8010818\n" " b ._595\n" "._592:\n" - " ldr r1, ._597\n" + " ldr r1, ._597 @ gUnknown_Debug_2023A76\n" " mov r0, #0x1f\n" " mov r2, #0xec\n" " bl debug_sub_80132C8\n" @@ -2203,7 +2203,7 @@ void debug_sub_8010CAC() " bl debug_sub_8011E74\n" " bl debug_sub_8012540\n" " bl debug_nullsub_3\n" - " ldr r0, ._597 + 4\n" + " ldr r0, ._597 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2217,7 +2217,7 @@ void debug_sub_8010CAC() " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A4\n" "._593:\n" - " ldr r1, ._600\n" + " ldr r1, ._600 @ gUnknown_Debug_2023A76\n" " mov r0, #0x1f\n" " mov r2, #0xec\n" " bl debug_sub_8013294\n" @@ -2227,7 +2227,7 @@ void debug_sub_8010CAC() "._600:\n" " .word gUnknown_Debug_2023A76\n" "._594:\n" - " ldr r3, ._604\n" + " ldr r3, ._604 @ gUnknown_Debug_2023A76\n" " add r2, r3, #0\n" " add r2, r2, #0x44\n" " ldrh r1, [r2]\n" @@ -2259,8 +2259,8 @@ void debug_sub_8010CAC() "._590:\n" " mov r0, #0x0\n" " bl debug_sub_8010B80\n" - " ldr r2, ._608\n" - " ldr r0, ._608 + 4\n" + " ldr r2, ._608 @ gUnknown_Debug_030043A0\n" + " ldr r0, ._608 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2284,16 +2284,16 @@ void debug_sub_8010CAC() " bl debug_sub_8010AAC\n" " b ._613\n" "._611:\n" - " ldr r6, ._618\n" - " ldr r5, ._618 + 4\n" - " ldr r4, ._618 + 8\n" + " ldr r6, ._618 @ gUnknown_Debug_2023A76\n" + " ldr r5, ._618 + 4 @ gUnknown_Debug_030043A0\n" + " ldr r4, ._618 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r0, [r4]\n" " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " ldrb r0, [r5]\n" " add r1, r1, r0\n" " lsl r1, r1, #0x1\n" - " ldr r2, ._618 + 12\n" + " ldr r2, ._618 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r2]\n" " mov r3, #0x46\n" " mul r0, r0, r3\n" @@ -2314,7 +2314,7 @@ void debug_sub_8010CAC() " add r3, r0, r6\n" " mov r4, #0x0\n" " ldsh r2, [r3, r4]\n" - " ldr r4, ._618 + 16\n" + " ldr r4, ._618 + 16 @ gUnknown_Debug_821F424\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" " lsl r1, r0, #0x1\n" @@ -2329,13 +2329,13 @@ void debug_sub_8010CAC() " ldrh r0, [r0]\n" " strh r0, [r3]\n" "._613:\n" - " ldr r5, ._618 + 4\n" + " ldr r5, ._618 + 4 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r5]\n" " cmp r0, #0\n" " bne ._614 @cond_branch\n" " mov r0, #0x0\n" " bl debug_sub_8010AAC\n" - " ldr r0, ._618 + 8\n" + " ldr r0, ._618 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2344,7 +2344,7 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_8011EA0\n" "._614:\n" - " ldr r4, ._618 + 8\n" + " ldr r4, ._618 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r4]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2360,7 +2360,7 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_80123D8\n" "._607:\n" - " ldr r0, ._618 + 20\n" + " ldr r0, ._618 + 20 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -2368,9 +2368,9 @@ void debug_sub_8010CAC() " bne ._615 @cond_branch\n" " b ._638\n" "._615:\n" - " ldr r0, ._618 + 4\n" + " ldr r0, ._618 + 4 @ gUnknown_Debug_030043A0\n" " ldrb r2, [r0]\n" - " ldr r0, ._618 + 8\n" + " ldr r0, ._618 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2379,7 +2379,7 @@ void debug_sub_8010CAC() " cmp r0, #0x4\n" " bhi ._617 @cond_branch\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._618 + 24\n" + " ldr r1, ._618 + 24 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -2403,7 +2403,7 @@ void debug_sub_8010CAC() " bl debug_sub_8010818\n" " b ._626\n" "._623:\n" - " ldr r1, ._628\n" + " ldr r1, ._628 @ gUnknown_Debug_2023A76\n" " mov r0, #0x1f\n" " mov r2, #0xec\n" " bl debug_sub_80132C8\n" @@ -2412,7 +2412,7 @@ void debug_sub_8010CAC() " bl debug_sub_8011E74\n" " bl debug_sub_8012540\n" " bl debug_nullsub_3\n" - " ldr r0, ._628 + 4\n" + " ldr r0, ._628 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2426,7 +2426,7 @@ void debug_sub_8010CAC() " .word gUnknown_Debug_2023A76\n" " .word gUnknown_Debug_030043A4\n" "._624:\n" - " ldr r1, ._631\n" + " ldr r1, ._631 @ gUnknown_Debug_2023A76\n" " mov r0, #0x1f\n" " mov r2, #0xec\n" " bl debug_sub_8013294\n" @@ -2436,7 +2436,7 @@ void debug_sub_8010CAC() "._631:\n" " .word gUnknown_Debug_2023A76\n" "._625:\n" - " ldr r3, ._635\n" + " ldr r3, ._635 @ gUnknown_Debug_2023A76\n" " add r2, r3, #0\n" " add r2, r2, #0x44\n" " ldrh r1, [r2]\n" @@ -2468,8 +2468,8 @@ void debug_sub_8010CAC() "._621:\n" " mov r0, #0x1\n" " bl debug_sub_8010B80\n" - " ldr r2, ._639\n" - " ldr r0, ._639 + 4\n" + " ldr r2, ._639 @ gUnknown_Debug_030043A0\n" + " ldr r0, ._639 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2493,16 +2493,16 @@ void debug_sub_8010CAC() " bl debug_sub_8010AAC\n" " b ._644\n" "._642:\n" - " ldr r6, ._650\n" - " ldr r5, ._650 + 4\n" - " ldr r4, ._650 + 8\n" + " ldr r6, ._650 @ gUnknown_Debug_2023A76\n" + " ldr r5, ._650 + 4 @ gUnknown_Debug_030043A0\n" + " ldr r4, ._650 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r0, [r4]\n" " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " ldrb r0, [r5]\n" " add r1, r1, r0\n" " lsl r1, r1, #0x1\n" - " ldr r2, ._650 + 12\n" + " ldr r2, ._650 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r2]\n" " mov r3, #0x46\n" " mul r0, r0, r3\n" @@ -2523,7 +2523,7 @@ void debug_sub_8010CAC() " add r3, r0, r6\n" " mov r4, #0x0\n" " ldsh r2, [r3, r4]\n" - " ldr r4, ._650 + 16\n" + " ldr r4, ._650 + 16 @ gUnknown_Debug_821F424\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" " lsl r1, r0, #0x1\n" @@ -2538,13 +2538,13 @@ void debug_sub_8010CAC() " ldrh r0, [r0]\n" " strh r0, [r3]\n" "._644:\n" - " ldr r5, ._650 + 4\n" + " ldr r5, ._650 + 4 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r5]\n" " cmp r0, #0\n" " bne ._645 @cond_branch\n" " mov r0, #0x0\n" " bl debug_sub_8010AAC\n" - " ldr r0, ._650 + 8\n" + " ldr r0, ._650 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2553,7 +2553,7 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_8011EA0\n" "._645:\n" - " ldr r4, ._650 + 8\n" + " ldr r4, ._650 + 8 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r4]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2569,16 +2569,16 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_80123D8\n" "._638:\n" - " ldr r0, ._650 + 20\n" + " ldr r0, ._650 + 20 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x80\n" " lsl r0, r0, #0x2\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._646 @cond_branch\n" - " ldr r0, ._650 + 4\n" + " ldr r0, ._650 + 4 @ gUnknown_Debug_030043A0\n" " ldrb r1, [r0]\n" - " ldr r2, ._650 + 8\n" + " ldr r2, ._650 + 8 @ gUnknown_Debug_030043A4\n" " mov r8, r2\n" " add r7, r0, #0\n" " cmp r1, #0x4\n" @@ -2611,9 +2611,9 @@ void debug_sub_8010CAC() " bl debug_sub_8010B80\n" " b ._653\n" "._652:\n" - " ldr r4, ._655\n" + " ldr r4, ._655 @ gUnknown_Debug_2023A76\n" " lsl r1, r0, #0x1\n" - " ldr r3, ._655 + 4\n" + " ldr r3, ._655 + 4 @ gUnknown_Debug_03004360\n" " ldrb r2, [r3]\n" " mov r0, #0x46\n" " mul r0, r0, r2\n" @@ -2623,7 +2623,7 @@ void debug_sub_8010CAC() " sub r0, r0, #0xa\n" " strh r0, [r1]\n" " add r6, r3, #0\n" - " ldr r5, ._655 + 8\n" + " ldr r5, ._655 + 8 @ gUnknown_Debug_821F424\n" " b ._654\n" "._656:\n" " .align 2, 0\n" @@ -2663,13 +2663,13 @@ void debug_sub_8010CAC() " cmp r2, r0\n" " blt ._657 @cond_branch\n" "._653:\n" - " ldr r5, ._663\n" + " ldr r5, ._663 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r5]\n" " cmp r0, #0\n" " bne ._658 @cond_branch\n" " mov r0, #0x0\n" " bl debug_sub_8010AAC\n" - " ldr r0, ._663 + 4\n" + " ldr r0, ._663 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2678,7 +2678,7 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_8011EA0\n" "._658:\n" - " ldr r4, ._663 + 4\n" + " ldr r4, ._663 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r4]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2694,16 +2694,16 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_80123D8\n" "._646:\n" - " ldr r0, ._663 + 8\n" + " ldr r0, ._663 + 8 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._659 @cond_branch\n" - " ldr r0, ._663\n" + " ldr r0, ._663 @ gUnknown_Debug_030043A0\n" " ldrb r1, [r0]\n" - " ldr r2, ._663 + 4\n" + " ldr r2, ._663 + 4 @ gUnknown_Debug_030043A4\n" " mov r8, r2\n" " add r7, r0, #0\n" " cmp r1, #0x4\n" @@ -2733,9 +2733,9 @@ void debug_sub_8010CAC() " bl debug_sub_8010B80\n" " b ._666\n" "._665:\n" - " ldr r4, ._668\n" + " ldr r4, ._668 @ gUnknown_Debug_2023A76\n" " lsl r1, r0, #0x1\n" - " ldr r3, ._668 + 4\n" + " ldr r3, ._668 + 4 @ gUnknown_Debug_03004360\n" " ldrb r2, [r3]\n" " mov r0, #0x46\n" " mul r0, r0, r2\n" @@ -2745,7 +2745,7 @@ void debug_sub_8010CAC() " add r0, r0, #0xa\n" " strh r0, [r1]\n" " add r6, r3, #0\n" - " ldr r5, ._668 + 8\n" + " ldr r5, ._668 + 8 @ gUnknown_Debug_821F424\n" " b ._667\n" "._669:\n" " .align 2, 0\n" @@ -2781,13 +2781,13 @@ void debug_sub_8010CAC() " cmp r2, r1\n" " bgt ._670 @cond_branch\n" "._666:\n" - " ldr r5, ._672\n" + " ldr r5, ._672 @ gUnknown_Debug_030043A0\n" " ldrb r0, [r5]\n" " cmp r0, #0\n" " bne ._671 @cond_branch\n" " mov r0, #0x0\n" " bl debug_sub_8010AAC\n" - " ldr r0, ._672 + 4\n" + " ldr r0, ._672 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2796,7 +2796,7 @@ void debug_sub_8010CAC() " lsr r0, r0, #0x18\n" " bl debug_sub_8011EA0\n" "._671:\n" - " ldr r4, ._672 + 4\n" + " ldr r4, ._672 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r4]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2838,8 +2838,8 @@ void debug_sub_8011498() " mov r6, r9\n" " mov r5, r8\n" " push {r5, r6, r7}\n" - " ldr r2, ._687\n" - " ldr r0, ._687 + 4\n" + " ldr r2, ._687 @ gUnknown_Debug_030043A0\n" + " ldr r0, ._687 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -2848,7 +2848,7 @@ void debug_sub_8011498() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " mov r9, r0\n" - " ldr r4, ._687 + 8\n" + " ldr r4, ._687 + 8 @ gMain\n" " ldrh r1, [r4, #0x28]\n" " mov r0, #0x81\n" " lsl r0, r0, #0x2\n" @@ -2860,7 +2860,7 @@ void debug_sub_8011498() " cmp r0, #0x4\n" " bne ._675 @cond_branch\n" " bl debug_sub_8012658\n" - " ldr r0, ._687 + 12\n" + " ldr r0, ._687 + 12 @ debug_sub_8010CAC\n" " bl SetMainCallback2\n" "._675:\n" " ldrh r0, [r4, #0x2a]\n" @@ -2875,14 +2875,14 @@ void debug_sub_8011498() " bne ._678 @cond_branch\n" "._677:\n" " bl debug_sub_8012658\n" - " ldr r0, ._687 + 16\n" + " ldr r0, ._687 + 16 @ gUnknown_Debug_030043A8\n" " ldrb r1, [r0]\n" " mov r2, #0x2\n" " eor r1, r1, r2\n" " strb r1, [r0]\n" " bl debug_sub_8012628\n" "._678:\n" - " ldr r0, ._687 + 8\n" + " ldr r0, ._687 + 8 @ gMain\n" " ldrh r0, [r0, #0x2a]\n" " cmp r0, #0x20\n" " beq ._679 @cond_branch\n" @@ -2890,22 +2890,22 @@ void debug_sub_8011498() " bne ._680 @cond_branch\n" "._679:\n" " bl debug_sub_8012658\n" - " ldr r0, ._687 + 16\n" + " ldr r0, ._687 + 16 @ gUnknown_Debug_030043A8\n" " ldrb r1, [r0]\n" " mov r2, #0x1\n" " eor r1, r1, r2\n" " strb r1, [r0]\n" " bl debug_sub_8012628\n" "._680:\n" - " ldr r0, ._687 + 8\n" + " ldr r0, ._687 + 8 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x2\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._681 @cond_branch\n" - " ldr r0, ._687 + 20\n" + " ldr r0, ._687 + 20 @ gUnknown_Debug_2023B02\n" " mov r8, r0\n" - " ldr r6, ._687 + 16\n" + " ldr r6, ._687 + 16 @ gUnknown_Debug_030043A8\n" " ldrb r4, [r6]\n" " lsl r4, r4, #0x1\n" " mov r0, r9\n" @@ -2914,7 +2914,7 @@ void debug_sub_8011498() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" - " ldr r5, ._687 + 24\n" + " ldr r5, ._687 + 24 @ gUnknown_Debug_03004360\n" " ldrb r2, [r5]\n" " lsl r1, r2, #0x1\n" " add r1, r1, r2\n" @@ -2936,7 +2936,7 @@ void debug_sub_8011498() " add r4, r1, r0\n" " mov r0, #0x0\n" " ldsh r1, [r4, r0]\n" - " ldr r5, ._687 + 28\n" + " ldr r5, ._687 + 28 @ gUnknown_Debug_821F564\n" " lsl r0, r3, #0x2\n" " add r0, r0, r3\n" " lsl r2, r0, #0x1\n" @@ -2953,15 +2953,15 @@ void debug_sub_8011498() "._682:\n" " bl debug_sub_8012294\n" "._681:\n" - " ldr r0, ._687 + 8\n" + " ldr r0, ._687 + 8 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._683 @cond_branch\n" - " ldr r1, ._687 + 20\n" + " ldr r1, ._687 + 20 @ gUnknown_Debug_2023B02\n" " mov r8, r1\n" - " ldr r6, ._687 + 16\n" + " ldr r6, ._687 + 16 @ gUnknown_Debug_030043A8\n" " ldrb r4, [r6]\n" " lsl r4, r4, #0x1\n" " mov r0, r9\n" @@ -2970,7 +2970,7 @@ void debug_sub_8011498() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" - " ldr r5, ._687 + 24\n" + " ldr r5, ._687 + 24 @ gUnknown_Debug_03004360\n" " ldrb r2, [r5]\n" " lsl r1, r2, #0x1\n" " add r1, r1, r2\n" @@ -2992,7 +2992,7 @@ void debug_sub_8011498() " add r4, r1, r0\n" " mov r0, #0x0\n" " ldsh r1, [r4, r0]\n" - " ldr r5, ._687 + 28\n" + " ldr r5, ._687 + 28 @ gUnknown_Debug_821F564\n" " lsl r0, r3, #0x2\n" " add r0, r0, r3\n" " lsl r2, r0, #0x1\n" @@ -3009,15 +3009,15 @@ void debug_sub_8011498() "._684:\n" " bl debug_sub_8012294\n" "._683:\n" - " ldr r0, ._687 + 8\n" + " ldr r0, ._687 + 8 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x80\n" " lsl r0, r0, #0x2\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._685 @cond_branch\n" - " ldr r6, ._687 + 20\n" - " ldr r5, ._687 + 16\n" + " ldr r6, ._687 + 20 @ gUnknown_Debug_2023B02\n" + " ldr r5, ._687 + 16 @ gUnknown_Debug_030043A8\n" " ldrb r4, [r5]\n" " lsl r4, r4, #0x1\n" " mov r0, r9\n" @@ -3026,7 +3026,7 @@ void debug_sub_8011498() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" - " ldr r2, ._687 + 24\n" + " ldr r2, ._687 + 24 @ gUnknown_Debug_03004360\n" " ldrb r1, [r2]\n" " lsl r0, r1, #0x1\n" " add r0, r0, r1\n" @@ -3039,7 +3039,7 @@ void debug_sub_8011498() " mov sl, r5\n" " mov r8, r6\n" " add r7, r2, #0\n" - " ldr r6, ._687 + 28\n" + " ldr r6, ._687 + 28 @ gUnknown_Debug_821F564\n" " b ._686\n" "._688:\n" " .align 2, 0\n" @@ -3088,15 +3088,15 @@ void debug_sub_8011498() " blt ._689 @cond_branch\n" " bl debug_sub_8012294\n" "._685:\n" - " ldr r0, ._692\n" + " ldr r0, ._692 @ gMain\n" " ldrh r1, [r0, #0x30]\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._690 @cond_branch\n" - " ldr r6, ._692 + 4\n" - " ldr r5, ._692 + 8\n" + " ldr r6, ._692 + 4 @ gUnknown_Debug_2023B02\n" + " ldr r5, ._692 + 8 @ gUnknown_Debug_030043A8\n" " ldrb r4, [r5]\n" " lsl r4, r4, #0x1\n" " mov r0, r9\n" @@ -3105,7 +3105,7 @@ void debug_sub_8011498() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x15\n" " add r4, r4, r0\n" - " ldr r2, ._692 + 12\n" + " ldr r2, ._692 + 12 @ gUnknown_Debug_03004360\n" " ldrb r1, [r2]\n" " lsl r0, r1, #0x1\n" " add r0, r0, r1\n" @@ -3118,7 +3118,7 @@ void debug_sub_8011498() " mov sl, r5\n" " mov r8, r6\n" " add r7, r2, #0\n" - " ldr r6, ._692 + 16\n" + " ldr r6, ._692 + 16 @ gUnknown_Debug_821F564\n" " b ._691\n" "._693:\n" " .align 2, 0\n" @@ -3185,7 +3185,7 @@ void debug_sub_801174C() " add sp, sp, #0xffffffe8\n" " mov r0, #0x0\n" " mov r9, r0\n" - " ldr r1, ._704\n" + " ldr r1, ._704 @ gUnknown_020297ED\n" " mov r0, #0x1\n" " strb r0, [r1]\n" " bl Random\n" @@ -3196,11 +3196,11 @@ void debug_sub_801174C() " and r4, r4, r0\n" " lsl r4, r4, #0x18\n" " lsr r6, r4, #0x18\n" - " ldr r5, ._704 + 4\n" + " ldr r5, ._704 + 4 @ gSaveBlock2\n" " lsl r1, r6, #0x1\n" " add r1, r1, r6\n" " lsl r1, r1, #0x1\n" - " ldr r0, ._704 + 8\n" + " ldr r0, ._704 + 8 @ str_821F631\n" " add r1, r1, r0\n" " add r0, r5, #0\n" " bl StringCopy\n" @@ -3208,7 +3208,7 @@ void debug_sub_801174C() " strb r4, [r5, #0x8]\n" " bl ZeroPlayerPartyMons\n" " bl ZeroEnemyPartyMons\n" - " ldr r0, ._704 + 12\n" + " ldr r0, ._704 + 12 @ gUnknown_Debug_2023A76\n" " mov r1, #0x3c\n" " ldsh r7, [r0, r1]\n" " mov r2, r9\n" @@ -3223,17 +3223,17 @@ void debug_sub_801174C() " bgt ._696 @cond_branch\n" " str r0, [sp, #0xc]\n" "._695:\n" - " ldr r2, ._704 + 16\n" - " ldr r1, ._704 + 20\n" + " ldr r2, ._704 + 16 @ gBattleTypeFlags\n" + " ldr r1, ._704 + 20 @ gUnknown_Debug_821F598\n" " sub r0, r7, #1\n" " lsl r0, r0, #0x1\n" " add r0, r0, r1\n" " ldrh r3, [r0]\n" " strh r3, [r2]\n" - " ldr r1, ._704 + 24\n" + " ldr r1, ._704 + 24 @ gUnknown_02023A14_50\n" " mov r0, #0x8\n" " strb r0, [r1]\n" - " ldr r1, ._704 + 28\n" + " ldr r1, ._704 + 28 @ gBattleTerrain\n" " add r0, sp, #0xc\n" " ldrb r0, [r0]\n" " strb r0, [r1]\n" @@ -3243,27 +3243,27 @@ void debug_sub_801174C() " beq ._697 @cond_branch\n" " bl EnterSafariMode\n" "._697:\n" - " ldr r5, ._704 + 12\n" + " ldr r5, ._704 + 12 @ gUnknown_Debug_2023A76\n" " ldrh r0, [r5, #0x3c]\n" " sub r0, r0, #0x2\n" " lsl r0, r0, #0x10\n" " lsr r0, r0, #0x10\n" " cmp r0, #0x2\n" " bhi ._698 @cond_branch\n" - " ldr r4, ._704 + 32\n" + " ldr r4, ._704 + 32 @ gTrainerBattleOpponent\n" " bl Random\n" " mov r1, #0x7\n" " and r1, r1, r0\n" " add r1, r1, #0x1\n" " strh r1, [r4]\n" "._698:\n" - " ldr r1, ._704 + 36\n" + " ldr r1, ._704 + 36 @ gPlayerPartyCount\n" " mov r0, #0x0\n" " strb r0, [r1]\n" " mov r7, #0x0\n" "._745:\n" " lsl r0, r7, #0x1\n" - " ldr r3, ._704 + 12\n" + " ldr r3, ._704 + 12 @ gUnknown_Debug_2023A76\n" " add r1, r0, r3\n" " mov r2, #0x0\n" " ldsh r1, [r1, r2]\n" @@ -3339,14 +3339,14 @@ void debug_sub_801174C() " bl __divsi3\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" - " ldr r1, ._719\n" + " ldr r1, ._719 @ gEnemyParty\n" " add r0, r0, r1\n" - " ldr r1, ._719 + 4\n" + " ldr r1, ._719 + 4 @ gUnknown_Debug_2023A76\n" " add r1, r1, r8\n" " ldrh r1, [r1]\n" " add r2, r7, #1\n" " lsl r2, r2, #0x1\n" - " ldr r3, ._719 + 4\n" + " ldr r3, ._719 + 4 @ gUnknown_Debug_2023A76\n" " add r2, r2, r3\n" " ldrb r2, [r2]\n" " str r6, [sp]\n" @@ -3363,9 +3363,9 @@ void debug_sub_801174C() " mov r2, #0x64\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" - " ldr r0, ._719\n" + " ldr r0, ._719 @ gEnemyParty\n" " add r5, r1, r0\n" - " ldr r4, ._719 + 8\n" + " ldr r4, ._719 + 8 @ gUnknown_Debug_2023A7A\n" " mov r3, r8\n" " add r6, r3, r4\n" " add r0, r5, #0\n" @@ -3421,19 +3421,19 @@ void debug_sub_801174C() " bl __divsi3\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" - " ldr r1, ._726\n" + " ldr r1, ._726 @ gEnemyParty\n" " add r0, r0, r1\n" " mov r1, #0x2e\n" " add r2, sp, #0xc\n" " bl SetMonData\n" "._716:\n" - " ldr r1, ._726 + 4\n" + " ldr r1, ._726 + 4 @ gUnknown_Debug_2023A76\n" " add r1, r1, #0x46\n" " mov r2, r8\n" " add r0, r2, r1\n" " mov r3, #0x0\n" " ldsh r0, [r0, r3]\n" - " ldr r2, ._726 + 4\n" + " ldr r2, ._726 + 4 @ gUnknown_Debug_2023A76\n" " cmp r0, #0\n" " beq ._721 @cond_branch\n" " add r0, r7, #4\n" @@ -3494,14 +3494,14 @@ void debug_sub_801174C() " bl __divsi3\n" " mov r2, #0x64\n" " mul r0, r0, r2\n" - " ldr r1, ._741\n" + " ldr r1, ._741 @ gPlayerParty\n" " add r0, r0, r1\n" - " ldr r1, ._741 + 4\n" + " ldr r1, ._741 + 4 @ gUnknown_Debug_2023ABC\n" " add r1, r1, r8\n" " ldrh r1, [r1]\n" " add r2, r7, #1\n" " lsl r2, r2, #0x1\n" - " ldr r3, ._741 + 4\n" + " ldr r3, ._741 + 4 @ gUnknown_Debug_2023ABC\n" " add r2, r2, r3\n" " ldrb r2, [r2]\n" " str r6, [sp]\n" @@ -3511,7 +3511,7 @@ void debug_sub_801174C() " str r3, [sp, #0x8]\n" " mov r3, #0x0\n" " bl CreateMonWithGenderNatureLetter\n" - " ldr r1, ._741 + 8\n" + " ldr r1, ._741 + 8 @ gPlayerPartyCount\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" " strb r0, [r1]\n" @@ -3522,9 +3522,9 @@ void debug_sub_801174C() " mov r2, #0x64\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" - " ldr r0, ._741\n" + " ldr r0, ._741 @ gPlayerParty\n" " add r4, r1, r0\n" - " ldr r0, ._741 + 12\n" + " ldr r0, ._741 + 12 @ gUnknown_Debug_2023AC0\n" " mov r3, r8\n" " add r5, r3, r0\n" " add r0, r4, #0\n" @@ -3533,7 +3533,7 @@ void debug_sub_801174C() " bl SetMonData\n" " ldr r1, [sp, #0x10]\n" " lsl r0, r1, #0x1\n" - " ldr r2, ._741 + 16\n" + " ldr r2, ._741 + 16 @ gUnknown_Debug_2023A76\n" " add r0, r0, r2\n" " ldrh r0, [r0]\n" " sub r0, r0, #0x1\n" @@ -3548,7 +3548,7 @@ void debug_sub_801174C() "._736:\n" " ldr r3, [sp, #0x14]\n" " lsl r0, r3, #0x1\n" - " ldr r1, ._741 + 4\n" + " ldr r1, ._741 + 4 @ gUnknown_Debug_2023ABC\n" " add r0, r0, r1\n" " mov r2, #0x0\n" " ldsh r1, [r0, r2]\n" @@ -3580,7 +3580,7 @@ void debug_sub_801174C() " bl __divsi3\n" " mov r2, #0x64\n" " mul r0, r0, r2\n" - " ldr r1, ._750\n" + " ldr r1, ._750 @ gPlayerParty\n" " add r0, r0, r1\n" " mov r1, #0x2e\n" " add r2, sp, #0xc\n" @@ -3588,7 +3588,7 @@ void debug_sub_801174C() "._738:\n" " ldr r3, [sp, #0x14]\n" " lsl r0, r3, #0x1\n" - " ldr r1, ._750 + 4\n" + " ldr r1, ._750 + 4 @ gUnknown_Debug_2023ABC\n" " add r0, r0, r1\n" " mov r2, #0x0\n" " ldsh r0, [r0, r2]\n" @@ -3599,12 +3599,12 @@ void debug_sub_801174C() " bl __divsi3\n" " mov r3, #0x64\n" " mul r0, r0, r3\n" - " ldr r1, ._750\n" + " ldr r1, ._750 @ gPlayerParty\n" " add r0, r0, r1\n" " mov r1, #0x7\n" - " ldr r2, ._750 + 8\n" + " ldr r2, ._750 + 8 @ Str_821F649\n" " bl SetMonData\n" - " ldr r2, ._750 + 12\n" + " ldr r2, ._750 + 12 @ gUnknown_02023A14_50\n" " ldrb r0, [r2]\n" " mov r1, #0x40\n" " orr r0, r0, r1\n" @@ -3619,9 +3619,9 @@ void debug_sub_801174C() " str r0, [sp, #0xc]\n" " mov r0, #0x64\n" " mov r8, r0\n" - " ldr r1, ._750 + 16\n" + " ldr r1, ._750 + 16 @ gUnknown_Debug_2023B02\n" " mov r9, r1\n" - " ldr r2, ._750\n" + " ldr r2, ._750 @ gPlayerParty\n" " mov sl, r2\n" "._747:\n" " mov r7, #0x0\n" @@ -3629,7 +3629,7 @@ void debug_sub_801174C() " ldr r2, [sp, #0xc]\n" " mov r0, r8\n" " mul r0, r0, r2\n" - " ldr r3, ._750 + 20\n" + " ldr r3, ._750 + 20 @ gEnemyParty\n" " add r0, r0, r3\n" " add r5, r7, #0\n" " add r5, r5, #0xd\n" @@ -3643,7 +3643,7 @@ void debug_sub_801174C() " ldr r1, [sp, #0xc]\n" " mov r0, r8\n" " mul r0, r0, r1\n" - " ldr r2, ._750 + 20\n" + " ldr r2, ._750 + 20 @ gEnemyParty\n" " add r0, r0, r2\n" " add r6, r7, #0\n" " add r6, r6, #0x11\n" @@ -3655,7 +3655,7 @@ void debug_sub_801174C() " lsl r2, r1, #0x1\n" " add r2, r2, r1\n" " lsl r2, r2, #0x2\n" - " ldr r1, ._750 + 24\n" + " ldr r1, ._750 + 24 @ gBattleMoves\n" " add r2, r2, r1\n" " add r1, r6, #0\n" " bl SetMonData\n" @@ -3664,7 +3664,7 @@ void debug_sub_801174C() " mul r0, r0, r2\n" " add r0, r0, sl\n" " lsl r2, r2, #0x3\n" - " ldr r3, ._750 + 28\n" + " ldr r3, ._750 + 28 @ gUnknown_Debug_2023B32\n" " add r1, r4, r3\n" " add r2, r2, r1\n" " add r1, r5, #0\n" @@ -3675,14 +3675,14 @@ void debug_sub_801174C() " add r0, r0, sl\n" " lsl r1, r1, #0x3\n" " add r4, r4, r1\n" - " ldr r1, ._750 + 28\n" + " ldr r1, ._750 + 28 @ gUnknown_Debug_2023B32\n" " add r4, r4, r1\n" " mov r2, #0x0\n" " ldsh r1, [r4, r2]\n" " lsl r2, r1, #0x1\n" " add r2, r2, r1\n" " lsl r2, r2, #0x2\n" - " ldr r3, ._750 + 24\n" + " ldr r3, ._750 + 24 @ gBattleMoves\n" " add r2, r2, r3\n" " add r1, r6, #0\n" " bl SetMonData\n" @@ -3694,7 +3694,7 @@ void debug_sub_801174C() " str r0, [sp, #0xc]\n" " cmp r0, #0x5\n" " ble ._747 @cond_branch\n" - " ldr r3, ._750 + 32\n" + " ldr r3, ._750 + 32 @ gUnknown_Debug_2023A76\n" " add r4, r3, #0\n" " add r4, r4, #0x44\n" " ldrh r1, [r4]\n" @@ -3702,7 +3702,7 @@ void debug_sub_801174C() " ldsh r0, [r4, r2]\n" " cmp r0, #0x8\n" " bne ._748 @cond_branch\n" - " ldr r0, ._750 + 12\n" + " ldr r0, ._750 + 12 @ gUnknown_02023A14_50\n" " ldrb r1, [r0]\n" " mov r2, #0x80\n" " b ._753\n" @@ -3721,7 +3721,7 @@ void debug_sub_801174C() "._748:\n" " cmp r0, #0x7\n" " bne ._752 @cond_branch\n" - " ldr r0, ._754\n" + " ldr r0, ._754 @ gUnknown_02023A14_50\n" " ldrb r1, [r0]\n" " mov r2, #0x20\n" " b ._753\n" @@ -3732,7 +3732,7 @@ void debug_sub_801174C() "._752:\n" " cmp r0, #0x6\n" " bne ._756 @cond_branch\n" - " ldr r2, ._759\n" + " ldr r2, ._759 @ gUnknown_02023A14_50\n" " ldrb r0, [r2]\n" " mov r1, #0x10\n" " orr r0, r0, r1\n" @@ -3742,9 +3742,9 @@ void debug_sub_801174C() " ldsh r0, [r3, r2]\n" " cmp r0, #0x5\n" " ble ._757 @cond_branch\n" - " ldr r0, ._759 + 4\n" + " ldr r0, ._759 + 4 @ gSharedMem\n" " sub r1, r1, #0x2\n" - " ldr r3, ._759 + 8\n" + " ldr r3, ._759 + 8 @ 0x160a3\n" " add r0, r0, r3\n" " b ._761\n" "._760:\n" @@ -3754,8 +3754,8 @@ void debug_sub_801174C() " .word gSharedMem\n" " .word 0x160a3\n" "._757:\n" - " ldr r0, ._762\n" - " ldr r2, ._762 + 4\n" + " ldr r0, ._762 @ gSharedMem\n" + " ldr r2, ._762 + 4 @ 0x160a3\n" " add r0, r0, r2\n" " b ._761\n" "._763:\n" @@ -3766,7 +3766,7 @@ void debug_sub_801174C() "._756:\n" " cmp r0, #0x5\n" " bne ._764 @cond_branch\n" - " ldr r0, ._766\n" + " ldr r0, ._766 @ gUnknown_02023A14_50\n" " ldrb r1, [r0]\n" " mov r2, #0x21\n" "._753:\n" @@ -3791,7 +3791,7 @@ void debug_sub_801174C() " and r0, r0, r3\n" " cmp r0, #0\n" " beq ._769 @cond_branch\n" - " ldr r0, ._772\n" + " ldr r0, ._772 @ gUnknown_02023A14_50\n" " ldrb r1, [r0]\n" " mov r2, #0x4\n" " orr r1, r1, r2\n" @@ -3801,16 +3801,16 @@ void debug_sub_801174C() " and r0, r0, r3\n" " cmp r0, #0\n" " beq ._770 @cond_branch\n" - " ldr r0, ._772\n" + " ldr r0, ._772 @ gUnknown_02023A14_50\n" " ldrb r1, [r0]\n" " mov r2, #0x6\n" " orr r1, r1, r2\n" " strb r1, [r0]\n" "._770:\n" - " ldr r0, ._772 + 4\n" - " ldr r1, ._772 + 8\n" + " ldr r0, ._772 + 4 @ gMain\n" + " ldr r1, ._772 + 8 @ debug_sub_80108B8\n" " str r1, [r0, #0x8]\n" - " ldr r0, ._772 + 12\n" + " ldr r0, ._772 + 12 @ unref_sub_800D684\n" " bl SetMainCallback2\n" " bl ClearBag\n" " mov r0, #0x1\n" @@ -3888,7 +3888,7 @@ void debug_sub_801174C() " mov r0, #0x50\n" " mov r1, #0x63\n" " bl AddBagItem\n" - " ldr r4, ._772 + 16\n" + " ldr r4, ._772 + 16 @ gUnknown_Debug_821F5AC\n" " mov r7, #0xe\n" "._771:\n" " add r0, r4, #0\n" @@ -3995,7 +3995,7 @@ void debug_sub_8011EA0(u8 a) " b ._815\n" "._782:\n" " lsl r0, r7, #0x2\n" - " ldr r1, ._785\n" + " ldr r1, ._785 @ \n" " add r1, r0, r1\n" " ldr r1, [r1]\n" " str r0, [sp, #0x8]\n" @@ -4044,8 +4044,8 @@ void debug_sub_8011EA0(u8 a) " mov r0, #0x0\n" " mov r1, #0x14\n" " bl debug_sub_8010A7C\n" - " ldr r6, ._823\n" - " ldr r2, ._823 + 4\n" + " ldr r6, ._823 @ gBattleTextBuff1\n" + " ldr r2, ._823 + 4 @ gUnknown_Debug_821F424\n" " ldr r0, [sp, #0x8]\n" " add r1, r0, r7\n" " lsl r1, r1, #0x1\n" @@ -4061,17 +4061,17 @@ void debug_sub_8011EA0(u8 a) " ldrb r1, [r1]\n" " mov r9, r1\n" " str r1, [sp]\n" - " ldr r0, ._823 + 8\n" + " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" " add r1, r6, #0\n" " ldr r2, [sp, #0x4]\n" " mov r3, r8\n" " bl Text_InitWindow\n" - " ldr r0, ._823 + 8\n" + " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" " bl Text_PrintWindow8002F44\n" - " ldr r1, ._823 + 12\n" + " ldr r1, ._823 + 12 @ gUnknown_Debug_2023A76\n" " mov sl, r1\n" " lsl r4, r7, #0x1\n" - " ldr r5, ._823 + 16\n" + " ldr r5, ._823 + 16 @ gUnknown_Debug_03004360\n" " ldrb r0, [r5]\n" " mov r7, #0x46\n" " mul r0, r0, r7\n" @@ -4092,10 +4092,10 @@ void debug_sub_8011EA0(u8 a) " lsr r3, r3, #0x18\n" " mov r0, #0x0\n" " str r0, [sp]\n" - " ldr r0, ._823 + 8\n" + " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" " add r1, r6, #0\n" " bl Text_InitWindow\n" - " ldr r0, ._823 + 8\n" + " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" " bl Text_PrintWindow8002F44\n" " mov r0, #0xff\n" " strb r0, [r6]\n" @@ -4107,18 +4107,18 @@ void debug_sub_8011EA0(u8 a) " ldsh r1, [r4, r0]\n" " mov r0, #0xb\n" " mul r1, r1, r0\n" - " ldr r0, ._823 + 20\n" + " ldr r0, ._823 + 20 @ gSpeciesNames\n" " add r1, r1, r0\n" " add r0, r6, #0\n" " bl StringAppend\n" " mov r1, r9\n" " str r1, [sp]\n" - " ldr r0, ._823 + 8\n" + " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" " add r1, r6, #0\n" " ldr r2, [sp, #0x4]\n" " mov r3, r8\n" " bl Text_InitWindow\n" - " ldr r0, ._823 + 8\n" + " ldr r0, ._823 + 8 @ gUnknown_Debug_03004370\n" " bl Text_PrintWindow8002F44\n" " b ._848\n" "._824:\n" @@ -4131,10 +4131,10 @@ void debug_sub_8011EA0(u8 a) " .word gUnknown_Debug_03004360\n" " .word gSpeciesNames\n" "._817:\n" - " ldr r6, ._826\n" - " ldr r3, ._826 + 4\n" + " ldr r6, ._826 @ gBattleTextBuff1\n" + " ldr r3, ._826 + 4 @ gUnknown_Debug_2023A76\n" " lsl r1, r7, #0x1\n" - " ldr r0, ._826 + 8\n" + " ldr r0, ._826 + 8 @ gUnknown_Debug_03004360\n" " ldrb r2, [r0]\n" " mov r0, #0x46\n" " mul r0, r0, r2\n" @@ -4157,10 +4157,10 @@ void debug_sub_8011EA0(u8 a) " mov r0, #0x0\n" " mov r1, #0x18\n" " bl debug_sub_8010A7C\n" - " ldr r6, ._830\n" - " ldr r1, ._830 + 4\n" + " ldr r6, ._830 @ gUnknown_Debug_03004370\n" + " ldr r1, ._830 + 4 @ gBattleTextBuff1\n" " mov sl, r1\n" - " ldr r4, ._830 + 8\n" + " ldr r4, ._830 + 8 @ gUnknown_Debug_821F424\n" " ldr r2, [sp, #0x8]\n" " add r1, r2, r7\n" " lsl r1, r1, #0x1\n" @@ -4179,12 +4179,12 @@ void debug_sub_8011EA0(u8 a) " add r0, r6, #0\n" " bl Text_PrintWindow8002F44\n" " lsl r4, r7, #0x1\n" - " ldr r5, ._830 + 12\n" + " ldr r5, ._830 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r5]\n" " mov r1, #0x46\n" " mul r0, r0, r1\n" " add r0, r4, r0\n" - " ldr r2, ._830 + 16\n" + " ldr r2, ._830 + 16 @ gUnknown_Debug_2023A76\n" " add r0, r0, r2\n" " mov r2, #0x0\n" " ldsh r1, [r0, r2]\n" @@ -4213,7 +4213,7 @@ void debug_sub_8011EA0(u8 a) " mov r2, #0x46\n" " mul r0, r0, r2\n" " add r4, r4, r0\n" - " ldr r0, ._830 + 16\n" + " ldr r0, ._830 + 16 @ gUnknown_Debug_2023A76\n" " add r4, r4, r0\n" " mov r1, #0x0\n" " ldsh r0, [r4, r1]\n" @@ -4234,13 +4234,13 @@ void debug_sub_8011EA0(u8 a) " .word gUnknown_Debug_03004360\n" " .word gUnknown_Debug_2023A76\n" "._828:\n" - " ldr r1, ._833\n" + " ldr r1, ._833 @ Str_821F624\n" " mov r0, sl\n" " bl StringAppend\n" "._829:\n" - " ldr r6, ._833 + 4\n" - " ldr r1, ._833 + 8\n" - " ldr r5, ._833 + 12\n" + " ldr r6, ._833 + 4 @ gUnknown_Debug_03004370\n" + " ldr r1, ._833 + 8 @ gBattleTextBuff1\n" + " ldr r5, ._833 + 12 @ gUnknown_Debug_821F424\n" " ldr r2, [sp, #0x8]\n" " add r4, r2, r7\n" " lsl r4, r4, #0x1\n" @@ -4269,9 +4269,9 @@ void debug_sub_8011EA0(u8 a) " mov r0, #0x0\n" " mov r1, #0x4\n" " bl debug_sub_8010A7C\n" - " ldr r5, ._839\n" - " ldr r6, ._839 + 4\n" - " ldr r4, ._839 + 8\n" + " ldr r5, ._839 @ gUnknown_Debug_03004370\n" + " ldr r6, ._839 + 4 @ gBattleTextBuff1\n" + " ldr r4, ._839 + 8 @ gUnknown_Debug_821F424\n" " ldr r0, [sp, #0x8]\n" " add r1, r0, r7\n" " lsl r1, r1, #0x1\n" @@ -4290,9 +4290,9 @@ void debug_sub_8011EA0(u8 a) " add r0, r5, #0\n" " bl Text_PrintWindow8002F44\n" " mov r4, #0x0\n" - " ldr r3, ._839 + 12\n" + " ldr r3, ._839 + 12 @ gUnknown_Debug_2023A76\n" " lsl r1, r7, #0x1\n" - " ldr r0, ._839 + 16\n" + " ldr r0, ._839 + 16 @ gUnknown_Debug_03004360\n" " ldrb r2, [r0]\n" " mov r0, #0x46\n" " mul r0, r0, r2\n" @@ -4341,7 +4341,7 @@ void debug_sub_8011EA0(u8 a) " mov r4, #0x2\n" " b ._847\n" "._843:\n" - " ldr r2, ._849\n" + " ldr r2, ._849 @ gBattleTextBuff1\n" " add r1, r4, r2\n" " mov r0, #0xac\n" " strb r0, [r1]\n" @@ -4352,8 +4352,8 @@ void debug_sub_8011EA0(u8 a) " mov r0, #0xff\n" " strb r0, [r1]\n" "._825:\n" - " ldr r5, ._849 + 4\n" - " ldr r4, ._849 + 8\n" + " ldr r5, ._849 + 4 @ gUnknown_Debug_03004370\n" + " ldr r4, ._849 + 8 @ gUnknown_Debug_821F424\n" " ldr r0, [sp, #0x8]\n" " add r1, r0, r7\n" " lsl r1, r1, #0x1\n" @@ -4379,10 +4379,10 @@ void debug_sub_8011EA0(u8 a) " .word gUnknown_Debug_03004370\n" " .word gUnknown_Debug_821F424\n" "._815:\n" - " ldr r6, ._851\n" - " ldr r3, ._851 + 4\n" + " ldr r6, ._851 @ gBattleTextBuff1\n" + " ldr r3, ._851 + 4 @ gUnknown_Debug_2023A76\n" " lsl r1, r7, #0x1\n" - " ldr r0, ._851 + 8\n" + " ldr r0, ._851 + 8 @ gUnknown_Debug_03004360\n" " ldrb r2, [r0]\n" " mov r0, #0x46\n" " mul r0, r0, r2\n" @@ -4394,8 +4394,8 @@ void debug_sub_8011EA0(u8 a) " mov r2, #0x2\n" " mov r3, #0x1\n" " bl ConvertIntToDecimalStringN\n" - " ldr r5, ._851 + 12\n" - " ldr r4, ._851 + 16\n" + " ldr r5, ._851 + 12 @ gUnknown_Debug_03004370\n" + " ldr r4, ._851 + 16 @ gUnknown_Debug_821F424\n" " lsl r1, r7, #0x2\n" " add r1, r1, r7\n" " lsl r1, r1, #0x1\n" @@ -4444,8 +4444,8 @@ void debug_sub_8012294() " mov r5, r8\n" " push {r5, r6, r7}\n" " add sp, sp, #0xfffffffc\n" - " ldr r2, ._854\n" - " ldr r0, ._854 + 4\n" + " ldr r2, ._854 @ gUnknown_Debug_030043A0\n" + " ldr r0, ._854 + 4 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" @@ -4458,23 +4458,23 @@ void debug_sub_8012294() " mov r0, #0x0\n" " mov r1, #0x18\n" " bl debug_sub_8010A7C\n" - " ldr r0, ._854 + 8\n" + " ldr r0, ._854 + 8 @ gUnknown_Debug_03004370\n" " mov sl, r0\n" - " ldr r1, ._854 + 12\n" + " ldr r1, ._854 + 12 @ gBattleTextBuff1\n" " mov r9, r1\n" - " ldr r2, ._854 + 16\n" + " ldr r2, ._854 + 16 @ gUnknown_Debug_821F564\n" " mov r8, r2\n" - " ldr r7, ._854 + 20\n" + " ldr r7, ._854 + 20 @ gUnknown_Debug_030043A8\n" " ldrb r1, [r7]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" " lsl r0, r0, #0x1\n" " add r1, r0, r2\n" " ldrh r2, [r1]\n" - " ldr r3, ._854 + 24\n" + " ldr r3, ._854 + 24 @ gUnknown_Debug_821F566\n" " add r1, r0, r3\n" " ldrb r3, [r1]\n" - " ldr r1, ._854 + 28\n" + " ldr r1, ._854 + 28 @ gUnknown_Debug_821F568\n" " add r0, r0, r1\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -4492,13 +4492,13 @@ void debug_sub_8012294() " lsl r5, r5, #0x18\n" " lsr r5, r5, #0x15\n" " add r4, r4, r5\n" - " ldr r6, ._854 + 32\n" + " ldr r6, ._854 + 32 @ gUnknown_Debug_03004360\n" " ldrb r1, [r6]\n" " lsl r0, r1, #0x1\n" " add r0, r0, r1\n" " lsl r0, r0, #0x4\n" " add r4, r4, r0\n" - " ldr r2, ._854 + 36\n" + " ldr r2, ._854 + 36 @ gUnknown_Debug_2023B02\n" " add r4, r4, r2\n" " mov r3, #0x0\n" " ldsh r1, [r4, r3]\n" @@ -4531,13 +4531,13 @@ void debug_sub_8012294() " add r0, r0, r2\n" " lsl r0, r0, #0x4\n" " add r1, r1, r0\n" - " ldr r2, ._854 + 36\n" + " ldr r2, ._854 + 36 @ gUnknown_Debug_2023B02\n" " add r1, r1, r2\n" " mov r3, #0x0\n" " ldsh r1, [r1, r3]\n" " mov r0, #0xd\n" " mul r1, r1, r0\n" - " ldr r0, ._854 + 40\n" + " ldr r0, ._854 + 40 @ gMoveNames\n" " add r1, r1, r0\n" " mov r0, r9\n" " bl StringAppend\n" @@ -4548,10 +4548,10 @@ void debug_sub_8012294() " add r8, r8, r0\n" " mov r1, r8\n" " ldrh r2, [r1]\n" - " ldr r3, ._854 + 24\n" + " ldr r3, ._854 + 24 @ gUnknown_Debug_821F566\n" " add r1, r0, r3\n" " ldrb r3, [r1]\n" - " ldr r1, ._854 + 28\n" + " ldr r1, ._854 + 28 @ gUnknown_Debug_821F568\n" " add r0, r0, r1\n" " ldrb r0, [r0]\n" " str r0, [sp]\n" @@ -4604,10 +4604,10 @@ void debug_sub_80123D8(u8 a) " mov r0, #0x0\n" " mov r1, #0x12\n" " bl debug_sub_8010A7C\n" - " ldr r4, ._858\n" - " ldr r0, ._858 + 4\n" + " ldr r4, ._858 @ gUnknown_Debug_03004370\n" + " ldr r0, ._858 + 4 @ gBattleTextBuff1\n" " mov r8, r0\n" - " ldr r6, ._858 + 8\n" + " ldr r6, ._858 + 8 @ gUnknown_Debug_821F58C\n" " ldrh r1, [r6]\n" " mov sl, r1\n" " ldrb r7, [r6, #0x2]\n" @@ -4622,25 +4622,25 @@ void debug_sub_80123D8(u8 a) " add r0, r4, #0\n" " bl Text_PrintWindow8002F44\n" " lsl r5, r5, #0x1\n" - " ldr r1, ._858 + 12\n" + " ldr r1, ._858 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r1]\n" " mov r2, #0x46\n" " mul r0, r0, r2\n" " add r0, r5, r0\n" - " ldr r1, ._858 + 16\n" + " ldr r1, ._858 + 16 @ gUnknown_Debug_2023A76\n" " add r0, r0, r1\n" " mov r2, #0x0\n" " ldsh r1, [r0, r2]\n" " lsl r0, r1, #0x3\n" " sub r0, r0, r1\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._858 + 20\n" + " ldr r1, ._858 + 20 @ gBaseStats\n" " add r0, r0, r1\n" " ldrb r0, [r0, #0x16]\n" " mov r2, #0xd\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" - " ldr r0, ._858 + 24\n" + " ldr r0, ._858 + 24 @ gAbilityNames\n" " add r1, r1, r0\n" " mov r0, r8\n" " bl StringCopy\n" @@ -4668,25 +4668,25 @@ void debug_sub_80123D8(u8 a) " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r1, ._858 + 12\n" + " ldr r1, ._858 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r1]\n" " mov r2, #0x46\n" " mul r0, r0, r2\n" " add r5, r5, r0\n" - " ldr r0, ._858 + 16\n" + " ldr r0, ._858 + 16 @ gUnknown_Debug_2023A76\n" " add r5, r5, r0\n" " mov r2, #0x0\n" " ldsh r1, [r5, r2]\n" " lsl r0, r1, #0x3\n" " sub r0, r0, r1\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._858 + 20\n" + " ldr r1, ._858 + 20 @ gBaseStats\n" " add r0, r0, r1\n" " ldrb r0, [r0, #0x17]\n" " mov r2, #0xd\n" " add r1, r0, #0\n" " mul r1, r1, r2\n" - " ldr r0, ._858 + 24\n" + " ldr r0, ._858 + 24 @ gAbilityNames\n" " add r1, r1, r0\n" " mov r0, r8\n" " bl StringCopy\n" @@ -4710,12 +4710,12 @@ void debug_sub_80123D8(u8 a) " .word gBaseStats\n" " .word gAbilityNames\n" "._856:\n" - " ldr r6, ._860\n" - " ldr r1, ._860 + 4\n" + " ldr r6, ._860 @ gBattleTextBuff1\n" + " ldr r1, ._860 + 4 @ gAbilityNames\n" " add r0, r6, #0\n" " bl StringCopy\n" - " ldr r5, ._860 + 8\n" - " ldr r4, ._860 + 12\n" + " ldr r5, ._860 + 8 @ gUnknown_Debug_03004370\n" + " ldr r4, ._860 + 12 @ gUnknown_Debug_821F58C\n" " ldrh r2, [r4]\n" " ldrb r3, [r4, #0x2]\n" " ldrb r0, [r4, #0x4]\n" @@ -4760,8 +4760,8 @@ void debug_sub_8012540() asm( " push {r4, r5, r6, lr}\n" " add sp, sp, #0xfffffffc\n" - " ldr r5, ._862\n" - " ldr r0, ._862 + 4\n" + " ldr r5, ._862 @ gBattleTextBuff1\n" + " ldr r0, ._862 + 4 @ gUnknown_Debug_2023A76\n" " add r0, r0, #0x44\n" " mov r2, #0x0\n" " ldsh r1, [r0, r2]\n" @@ -4769,8 +4769,8 @@ void debug_sub_8012540() " mov r2, #0x0\n" " mov r3, #0x1\n" " bl ConvertIntToDecimalStringN\n" - " ldr r4, ._862 + 8\n" - " ldr r1, ._862 + 12\n" + " ldr r4, ._862 + 8 @ gUnknown_Debug_03004370\n" + " ldr r1, ._862 + 12 @ gUnknown_Debug_821F424\n" " mov r3, #0x9b\n" " lsl r3, r3, #0x1\n" " add r0, r1, r3\n" @@ -4817,17 +4817,17 @@ void debug_sub_80125A0() { asm( " push {r4, lr}\n" - " ldr r4, ._864\n" - " ldr r3, ._864 + 4\n" - " ldr r2, ._864 + 8\n" - " ldr r0, ._864 + 12\n" + " ldr r4, ._864 @ gSharedMem\n" + " ldr r3, ._864 + 4 @ gUnknown_Debug_821F680\n" + " ldr r2, ._864 + 8 @ gUnknown_Debug_030043A0\n" + " ldr r0, ._864 + 12 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" " ldrb r2, [r2]\n" " add r0, r0, r2\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._864 + 16\n" + " ldr r1, ._864 + 16 @ gUnknown_Debug_03004360\n" " ldrb r2, [r1]\n" " mov r1, #0x8c\n" " mul r1, r1, r2\n" @@ -4857,17 +4857,17 @@ void debug_sub_80125E4() { asm( " push {r4, lr}\n" - " ldr r4, ._866\n" - " ldr r3, ._866 + 4\n" - " ldr r2, ._866 + 8\n" - " ldr r0, ._866 + 12\n" + " ldr r4, ._866 @ gSharedMem\n" + " ldr r3, ._866 + 4 @ gUnknown_Debug_821F680\n" + " ldr r2, ._866 + 8 @ gUnknown_Debug_030043A0\n" + " ldr r0, ._866 + 12 @ gUnknown_Debug_030043A4\n" " ldrb r1, [r0]\n" " lsl r0, r1, #0x2\n" " add r0, r0, r1\n" " ldrb r2, [r2]\n" " add r0, r0, r2\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._866 + 16\n" + " ldr r1, ._866 + 16 @ gUnknown_Debug_03004360\n" " ldrb r2, [r1]\n" " mov r1, #0x8c\n" " mul r1, r1, r2\n" @@ -4896,12 +4896,12 @@ __attribute__((naked)) void debug_sub_8012628() { asm( - " ldr r3, ._868\n" - " ldr r2, ._868 + 4\n" - " ldr r0, ._868 + 8\n" + " ldr r3, ._868 @ gSharedMem\n" + " ldr r2, ._868 + 4 @ gUnknown_Debug_821F798\n" + " ldr r0, ._868 + 8 @ gUnknown_Debug_030043A8\n" " ldrb r1, [r0]\n" " lsl r1, r1, #0x2\n" - " ldr r0, ._868 + 12\n" + " ldr r0, ._868 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r0]\n" " lsl r0, r0, #0x4\n" " add r1, r1, r0\n" @@ -4926,12 +4926,12 @@ __attribute__((naked)) void debug_sub_8012658() { asm( - " ldr r3, ._870\n" - " ldr r2, ._870 + 4\n" - " ldr r0, ._870 + 8\n" + " ldr r3, ._870 @ gSharedMem\n" + " ldr r2, ._870 + 4 @ gUnknown_Debug_821F798\n" + " ldr r0, ._870 + 8 @ gUnknown_Debug_030043A8\n" " ldrb r1, [r0]\n" " lsl r1, r1, #0x2\n" - " ldr r0, ._870 + 12\n" + " ldr r0, ._870 + 12 @ gUnknown_Debug_03004360\n" " ldrb r0, [r0]\n" " lsl r0, r0, #0x4\n" " add r1, r1, r0\n" @@ -4963,7 +4963,7 @@ void debug_sub_8012688() " mov r1, #0x0\n" " mov r4, #0xcd\n" " lsl r4, r4, #0x1\n" - " ldr r3, ._873\n" + " ldr r3, ._873 @ gUnknown_Debug_2023B62\n" " mov r2, #0x0\n" "._872:\n" " add r0, r1, r3\n" @@ -4977,16 +4977,16 @@ void debug_sub_8012688() " bl SetVBlankCallback\n" " mov r5, #0x0\n" " str r5, [sp, #0x8]\n" - " ldr r1, ._873 + 4\n" + " ldr r1, ._873 + 4 @ 0x40000d4\n" " add r0, sp, #0x8\n" " str r0, [r1]\n" " mov r0, #0xc0\n" " lsl r0, r0, #0x13\n" " str r0, [r1, #0x4]\n" - " ldr r0, ._873 + 8\n" + " ldr r0, ._873 + 8 @ 0x85006000\n" " str r0, [r1, #0x8]\n" " ldr r0, [r1, #0x8]\n" - " ldr r0, ._873 + 12\n" + " ldr r0, ._873 + 12 @ 0x400004c\n" " strh r5, [r0]\n" " sub r0, r0, #0xc\n" " strh r5, [r0]\n" @@ -5000,28 +5000,28 @@ void debug_sub_8012688() " strh r5, [r0]\n" " add r0, r0, #0x2\n" " strh r5, [r0]\n" - " ldr r4, ._873 + 16\n" + " ldr r4, ._873 + 16 @ gWindowTemplate_81E6C58\n" " add r0, r4, #0\n" " bl Text_LoadWindowTemplate\n" " bl ResetPaletteFade\n" - " ldr r0, ._873 + 20\n" + " ldr r0, ._873 + 20 @ gBattle_BG0_X\n" " strh r5, [r0]\n" - " ldr r1, ._873 + 24\n" + " ldr r1, ._873 + 24 @ gBattle_BG0_Y\n" " mov r0, #0xa0\n" " strh r0, [r1]\n" - " ldr r0, ._873 + 28\n" + " ldr r0, ._873 + 28 @ gBattle_BG1_X\n" " strh r5, [r0]\n" - " ldr r0, ._873 + 32\n" + " ldr r0, ._873 + 32 @ gBattle_BG1_Y\n" " strh r5, [r0]\n" - " ldr r0, ._873 + 36\n" + " ldr r0, ._873 + 36 @ gBattle_BG2_X\n" " strh r5, [r0]\n" - " ldr r0, ._873 + 40\n" + " ldr r0, ._873 + 40 @ gBattle_BG2_Y\n" " strh r5, [r0]\n" - " ldr r0, ._873 + 44\n" + " ldr r0, ._873 + 44 @ gBattle_BG3_X\n" " strh r5, [r0]\n" - " ldr r0, ._873 + 48\n" + " ldr r0, ._873 + 48 @ gBattle_BG3_Y\n" " strh r5, [r0]\n" - " ldr r1, ._873 + 52\n" + " ldr r1, ._873 + 52 @ gBattleTerrain\n" " mov r0, #0x9\n" " strb r0, [r1]\n" " bl sub_800D6D4\n" @@ -5029,20 +5029,20 @@ void debug_sub_8012688() " bl ResetSpriteData\n" " bl ResetTasks\n" " bl FreeAllSpritePalettes\n" - " ldr r1, ._873 + 56\n" + " ldr r1, ._873 + 56 @ gReservedSpritePaletteCount\n" " mov r0, #0x4\n" " strb r0, [r1]\n" - " ldr r6, ._873 + 60\n" + " ldr r6, ._873 + 60 @ gCurrentMove\n" " mov r0, #0x1\n" " strh r0, [r6]\n" - " ldr r0, ._873 + 64\n" + " ldr r0, ._873 + 64 @ gUnknown_03004210\n" " add r1, r4, #0\n" " bl Text_InitWindowWithTemplate\n" " ldrh r2, [r6]\n" " lsl r0, r2, #0x3\n" - " ldr r1, ._873 + 68\n" + " ldr r1, ._873 + 68 @ gMonFrontPicTable\n" " add r0, r0, r1\n" - " ldr r1, ._873 + 72\n" + " ldr r1, ._873 + 72 @ gMonFrontPicCoords\n" " mov r8, r1\n" " lsl r2, r2, #0x2\n" " add r2, r2, r8\n" @@ -5050,13 +5050,13 @@ void debug_sub_8012688() " ldrb r2, [r2, #0x1]\n" " mov r3, #0x80\n" " lsl r3, r3, #0x12\n" - " ldr r4, ._873 + 76\n" + " ldr r4, ._873 + 76 @ gUnknown_081FAF4C\n" " ldr r4, [r4, #0x4]\n" " str r4, [sp]\n" " ldrh r4, [r6]\n" " str r4, [sp, #0x4]\n" " bl DecompressPicFromTable_2\n" - " ldr r1, ._873 + 80\n" + " ldr r1, ._873 + 80 @ gMonPaletteTable\n" " ldrh r0, [r6]\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" @@ -5068,7 +5068,7 @@ void debug_sub_8012688() " ldrh r0, [r6]\n" " mov r1, #0x1\n" " bl GetMonSpriteTemplate_803C56C\n" - " ldr r0, ._873 + 84\n" + " ldr r0, ._873 + 84 @ gUnknown_02024E8C\n" " ldrh r1, [r6]\n" " lsl r1, r1, #0x2\n" " add r1, r1, r8\n" @@ -5080,14 +5080,14 @@ void debug_sub_8012688() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " ldr r3, ._873 + 88\n" + " ldr r3, ._873 + 88 @ gSprites\n" " lsl r1, r4, #0x4\n" " add r1, r1, r4\n" " lsl r1, r1, #0x2\n" " add r0, r3, #0\n" " add r0, r0, #0x1c\n" " add r0, r1, r0\n" - " ldr r2, ._873 + 92\n" + " ldr r2, ._873 + 92 @ nullsub_37\n" " str r2, [r0]\n" " add r1, r1, r3\n" " ldrb r2, [r1, #0x5]\n" @@ -5102,24 +5102,24 @@ void debug_sub_8012688() " lsl r2, r2, #0x5\n" " add r0, r2, #0\n" " strh r0, [r1]\n" - " ldr r0, ._873 + 96\n" + " ldr r0, ._873 + 96 @ debug_nullsub_45\n" " bl SetHBlankCallback\n" - " ldr r0, ._873 + 100\n" + " ldr r0, ._873 + 100 @ debug_sub_8011DD4\n" " bl SetVBlankCallback\n" " bl m4aMPlayAllStop\n" - " ldr r0, ._873 + 104\n" + " ldr r0, ._873 + 104 @ debug_sub_8012D10\n" " mov r1, #0x0\n" " bl CreateTask\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" - " ldr r2, ._873 + 108\n" + " ldr r2, ._873 + 108 @ gTasks\n" " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r1, r1, #0x3\n" " add r1, r1, r2\n" " strh r5, [r1, #0x8]\n" " strh r4, [r1, #0xa]\n" - " ldr r0, ._873 + 112\n" + " ldr r0, ._873 + 112 @ debug_sub_8012878\n" " bl SetMainCallback2\n" " add sp, sp, #0xc\n" " pop {r3}\n" @@ -5170,17 +5170,17 @@ void debug_sub_8012878() " push {lr}\n" " bl AnimateSprites\n" " bl BuildOamBuffer\n" - " ldr r0, ._876\n" + " ldr r0, ._876 @ gUnknown_03004210\n" " bl Text_UpdateWindowInBattle\n" " bl UpdatePaletteFade\n" " bl RunTasks\n" - " ldr r0, ._876 + 4\n" + " ldr r0, ._876 + 4 @ gMain\n" " ldrh r1, [r0, #0x2c]\n" " mov r0, #0x82\n" " lsl r0, r0, #0x1\n" " cmp r1, r0\n" " bne ._875 @cond_branch\n" - " ldr r0, ._876 + 8\n" + " ldr r0, ._876 + 8 @ debug_sub_80108B8\n" " bl SetMainCallback2\n" "._875:\n" " pop {r0}\n" @@ -5206,8 +5206,8 @@ void debug_sub_80128B4() " mov r0, #0x0\n" " mov r1, #0x9\n" " bl debug_sub_8010A7C\n" - " ldr r5, ._878\n" - " ldr r4, ._878 + 4\n" + " ldr r5, ._878 @ gUnknown_03004210\n" + " ldr r4, ._878 + 4 @ gBattleTextBuff1\n" " mov r0, #0x23\n" " mov r8, r0\n" " str r0, [sp]\n" @@ -5218,7 +5218,7 @@ void debug_sub_80128B4() " bl Text_InitWindow\n" " add r0, r5, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r6, ._878 + 8\n" + " ldr r6, ._878 + 8 @ gCurrentMove\n" " ldrh r1, [r6]\n" " add r0, r4, #0\n" " mov r2, #0x2\n" @@ -5231,7 +5231,7 @@ void debug_sub_80128B4() " ldrh r1, [r6]\n" " mov r0, #0xb\n" " mul r1, r1, r0\n" - " ldr r0, ._878 + 12\n" + " ldr r0, ._878 + 12 @ gSpeciesNames\n" " add r1, r1, r0\n" " add r0, r4, #0\n" " bl StringAppend\n" @@ -5277,8 +5277,8 @@ void debug_sub_8012938() " mov r0, #0x0\n" " mov r1, #0x7\n" " bl debug_sub_8010A7C\n" - " ldr r6, ._880\n" - " ldr r4, ._880 + 4\n" + " ldr r6, ._880 @ gUnknown_03004210\n" + " ldr r4, ._880 + 4 @ gBattleTextBuff1\n" " mov r0, #0x25\n" " mov r8, r0\n" " str r0, [sp]\n" @@ -5289,13 +5289,13 @@ void debug_sub_8012938() " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r1, ._880 + 8\n" + " ldr r1, ._880 + 8 @ Str_821F7B8\n" " add r0, r4, #0\n" " bl StringCopy\n" " add r0, r4, #4\n" - " ldr r1, ._880 + 12\n" + " ldr r1, ._880 + 12 @ gUnknown_Debug_2023B62\n" " mov sl, r1\n" - " ldr r2, ._880 + 16\n" + " ldr r2, ._880 + 16 @ gCurrentMove\n" " mov r9, r2\n" " ldrh r1, [r2]\n" " sub r1, r1, #0x1\n" @@ -5313,8 +5313,8 @@ void debug_sub_8012938() " bl Text_InitWindow\n" " add r0, r6, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r2, ._880 + 20\n" - " ldr r1, ._880 + 24\n" + " ldr r2, ._880 + 20 @ gSprites\n" + " ldr r1, ._880 + 24 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5365,12 +5365,12 @@ void debug_sub_80129F8() " add r5, r0, #0\n" " lsl r5, r5, #0x18\n" " lsr r5, r5, #0x18\n" - " ldr r6, ._882\n" + " ldr r6, ._882 @ gCurrentMove\n" " ldrh r2, [r6]\n" " lsl r0, r2, #0x3\n" - " ldr r1, ._882 + 4\n" + " ldr r1, ._882 + 4 @ gMonFrontPicTable\n" " add r0, r0, r1\n" - " ldr r1, ._882 + 8\n" + " ldr r1, ._882 + 8 @ gMonFrontPicCoords\n" " mov r8, r1\n" " lsl r2, r2, #0x2\n" " add r2, r2, r8\n" @@ -5378,13 +5378,13 @@ void debug_sub_80129F8() " ldrb r2, [r2, #0x1]\n" " mov r3, #0x80\n" " lsl r3, r3, #0x12\n" - " ldr r4, ._882 + 12\n" + " ldr r4, ._882 + 12 @ gUnknown_081FAF4C\n" " ldr r4, [r4, #0x4]\n" " str r4, [sp]\n" " ldrh r4, [r6]\n" " str r4, [sp, #0x4]\n" " bl DecompressPicFromTable_2\n" - " ldr r1, ._882 + 16\n" + " ldr r1, ._882 + 16 @ gMonPaletteTable\n" " ldrh r0, [r6]\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" @@ -5393,8 +5393,8 @@ void debug_sub_80129F8() " lsl r1, r1, #0x1\n" " mov r2, #0x20\n" " bl LoadCompressedPalette\n" - " ldr r4, ._882 + 20\n" - " ldr r0, ._882 + 24\n" + " ldr r4, ._882 + 20 @ gSprites\n" + " ldr r0, ._882 + 24 @ gTasks\n" " lsl r2, r5, #0x2\n" " add r2, r2, r5\n" " lsl r2, r2, #0x3\n" @@ -5417,7 +5417,7 @@ void debug_sub_80129F8() " add r1, r1, r0\n" " lsl r1, r1, #0x2\n" " add r1, r1, r4\n" - " ldr r3, ._882 + 28\n" + " ldr r3, ._882 + 28 @ gUnknown_Debug_2023B62\n" " ldrh r0, [r6]\n" " sub r0, r0, #0x1\n" " add r0, r0, r3\n" @@ -5462,8 +5462,8 @@ void debug_sub_8012AC0() " lsr r5, r0, #0x18\n" " lsl r1, r1, #0x18\n" " lsr r6, r1, #0x18\n" - " ldr r3, ._885\n" - " ldr r4, ._885 + 4\n" + " ldr r3, ._885 @ gCurrentMove\n" + " ldr r4, ._885 + 4 @ gBaseStats\n" " b ._884\n" "._886:\n" " .align 2, 0\n" @@ -5484,12 +5484,12 @@ void debug_sub_8012AC0() " lsl r0, r0, #0x10\n" " cmp r0, #0\n" " bne ._888 @cond_branch\n" - " ldr r1, ._891\n" + " ldr r1, ._891 @ 0x19b\n" " add r0, r1, #0\n" " strh r0, [r2]\n" "._888:\n" " ldrh r1, [r2]\n" - " ldr r0, ._891\n" + " ldr r0, ._891 @ 0x19b\n" " cmp r1, r0\n" " bne ._889 @cond_branch\n" " mov r0, #0x1\n" @@ -5526,11 +5526,11 @@ void debug_sub_8012B2C() asm( " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x11\n" - " ldr r1, ._893\n" + " ldr r1, ._893 @ 0x600c772\n" " add r2, r0, r1\n" " mov r1, #0x1\n" " strh r1, [r2]\n" - " ldr r1, ._893 + 4\n" + " ldr r1, ._893 + 4 @ 0x600c7b2\n" " add r0, r0, r1\n" " mov r1, #0x2\n" " strh r1, [r0]\n" @@ -5550,12 +5550,12 @@ void debug_sub_8012B4C() asm( " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x11\n" - " ldr r2, ._895\n" + " ldr r2, ._895 @ 0x600c772\n" " add r1, r0, r2\n" - " ldr r3, ._895 + 4\n" + " ldr r3, ._895 + 4 @ 0x1016\n" " add r2, r3, #0\n" " strh r2, [r1]\n" - " ldr r1, ._895 + 8\n" + " ldr r1, ._895 + 8 @ 0x600c7b2\n" " add r0, r0, r1\n" " strh r2, [r0]\n" " bx lr\n" @@ -5593,7 +5593,7 @@ void debug_sub_8012B70() " bl debug_sub_8012938\n" " add r0, r5, #0\n" " bl debug_sub_80129F8\n" - " ldr r1, ._899\n" + " ldr r1, ._899 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5611,15 +5611,15 @@ void debug_sub_8012B70() " mov r2, #0x1d\n" " mov r3, #0x21\n" " bl sub_802BBD4\n" - " ldr r0, ._901\n" + " ldr r0, ._901 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" " add r4, r4, r0\n" " mov r0, #0x2\n" " strh r0, [r4, #0x8]\n" - " ldr r5, ._901 + 4\n" - " ldr r1, ._901 + 8\n" + " ldr r5, ._901 + 4 @ gUnknown_03004210\n" + " ldr r1, ._901 + 8 @ Str_821F7DA\n" " mov r2, #0xa4\n" " lsl r2, r2, #0x2\n" " mov r0, #0x1d\n" @@ -5663,8 +5663,8 @@ void debug_sub_8012C08() " mov r0, #0x0\n" " mov r1, #0x9\n" " bl debug_sub_8010A7C\n" - " ldr r7, ._905\n" - " ldr r5, ._905 + 4\n" + " ldr r7, ._905 @ gUnknown_03004210\n" + " ldr r5, ._905 + 4 @ gBattleTextBuff1\n" " mov r0, #0x23\n" " mov r8, r0\n" " str r0, [sp]\n" @@ -5696,14 +5696,14 @@ void debug_sub_8012C08() " bl sub_802BBD4\n" " cmp r4, #0\n" " beq ._903 @cond_branch\n" - " ldr r1, ._905 + 8\n" + " ldr r1, ._905 + 8 @ gTasks\n" " lsl r4, r6, #0x2\n" " add r0, r4, r6\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" " mov r1, #0x4\n" " strh r1, [r0, #0x8]\n" - " ldr r1, ._905 + 12\n" + " ldr r1, ._905 + 12 @ gUnknown_Debug_821F7F3\n" " mov r0, r8\n" " str r0, [sp]\n" " add r0, r7, #0\n" @@ -5719,14 +5719,14 @@ void debug_sub_8012C08() " .word gTasks\n" " .word gUnknown_Debug_821F7F3\n" "._903:\n" - " ldr r1, ._907\n" + " ldr r1, ._907 @ gTasks\n" " lsl r4, r6, #0x2\n" " add r0, r4, r6\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" " mov r1, #0x3\n" " strh r1, [r0, #0x8]\n" - " ldr r1, ._907 + 4\n" + " ldr r1, ._907 + 4 @ Str_821F7EA\n" " mov r0, r8\n" " str r0, [sp]\n" " add r0, r7, #0\n" @@ -5735,10 +5735,10 @@ void debug_sub_8012C08() " bl Text_InitWindow\n" "._904:\n" " add r5, r4, #0\n" - " ldr r4, ._907 + 8\n" + " ldr r4, ._907 + 8 @ gUnknown_03004210\n" " add r0, r4, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r1, ._907 + 12\n" + " ldr r1, ._907 + 12 @ BattleText_YesNo\n" " mov r2, #0xa4\n" " lsl r2, r2, #0x2\n" " mov r0, #0x1d\n" @@ -5748,7 +5748,7 @@ void debug_sub_8012C08() " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r1, ._907\n" + " ldr r1, ._907 @ gTasks\n" " add r0, r5, r6\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" @@ -5781,7 +5781,7 @@ void debug_sub_8012D10() " add sp, sp, #0xfffffffc\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" - " ldr r1, ._911\n" + " ldr r1, ._911 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5793,7 +5793,7 @@ void debug_sub_8012D10() " b ._1067\n" "._909:\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._911 + 4\n" + " ldr r1, ._911 + 4 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -5812,8 +5812,8 @@ void debug_sub_8012D10() " bl debug_sub_80128B4\n" " add r0, r5, #0\n" " bl debug_sub_8012938\n" - " ldr r4, ._920\n" - " ldr r1, ._920 + 4\n" + " ldr r4, ._920 @ gUnknown_03004210\n" + " ldr r1, ._920 + 4 @ Str_821F7BD\n" " mov r2, #0xc8\n" " lsl r2, r2, #0x1\n" " mov r0, #0x23\n" @@ -5823,7 +5823,7 @@ void debug_sub_8012D10() " bl Text_InitWindow\n" " add r0, r4, #0\n" " bl Text_PrintWindow8002F44\n" - " ldr r1, ._920 + 8\n" + " ldr r1, ._920 + 8 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5840,7 +5840,7 @@ void debug_sub_8012D10() " .word Str_821F7BD\n" " .word gTasks\n" "._915:\n" - " ldr r2, ._924\n" + " ldr r2, ._924 @ gMain\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -5848,7 +5848,7 @@ void debug_sub_8012D10() " beq ._922 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._924 + 4\n" + " ldr r0, ._924 + 4 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -5872,7 +5872,7 @@ void debug_sub_8012D10() " beq ._926 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._928\n" + " ldr r0, ._928 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -5893,7 +5893,7 @@ void debug_sub_8012D10() " beq ._930 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._932\n" + " ldr r0, ._932 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -5916,7 +5916,7 @@ void debug_sub_8012D10() " beq ._934 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._936\n" + " ldr r0, ._936 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -5948,7 +5948,7 @@ void debug_sub_8012D10() " beq ._938 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._943\n" + " ldr r1, ._943 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5976,8 +5976,8 @@ void debug_sub_8012D10() "._946:\n" " b ._1067\n" "._941:\n" - " ldr r1, ._952\n" - " ldr r0, ._952 + 4\n" + " ldr r1, ._952 @ gUnknown_Debug_2023B62\n" + " ldr r0, ._952 + 4 @ gCurrentMove\n" " ldrh r0, [r0]\n" " sub r0, r0, #0x1\n" " add r1, r0, r1\n" @@ -5998,7 +5998,7 @@ void debug_sub_8012D10() " mov r0, #0x1\n" " b ._997\n" "._945:\n" - " ldr r1, ._957\n" + " ldr r1, ._957 @ gCurrentMove\n" " ldrh r2, [r1]\n" " mov r0, #0xcd\n" " lsl r0, r0, #0x1\n" @@ -6022,7 +6022,7 @@ void debug_sub_8012D10() " beq ._960 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._966\n" + " ldr r1, ._966 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -6047,8 +6047,8 @@ void debug_sub_8012D10() " beq ._968 @cond_branch\n" " b ._990\n" "._964:\n" - " ldr r1, ._973\n" - " ldr r0, ._973 + 4\n" + " ldr r1, ._973 @ gUnknown_Debug_2023B62\n" + " ldr r0, ._973 + 4 @ gCurrentMove\n" " ldrh r0, [r0]\n" " sub r0, r0, #0x1\n" " add r1, r0, r1\n" @@ -6066,7 +6066,7 @@ void debug_sub_8012D10() " .word gUnknown_Debug_2023B62\n" " .word gCurrentMove\n" "._968:\n" - " ldr r1, ._977\n" + " ldr r1, ._977 @ gCurrentMove\n" " ldrh r0, [r1]\n" " cmp r0, #0x1\n" " bls ._975 @cond_branch\n" @@ -6077,7 +6077,7 @@ void debug_sub_8012D10() "._977:\n" " .word gCurrentMove\n" "._975:\n" - " ldr r2, ._980\n" + " ldr r2, ._980 @ 0x19b\n" " add r0, r2, #0\n" " b ._979\n" "._981:\n" @@ -6092,7 +6092,7 @@ void debug_sub_8012D10() " beq ._982 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._987\n" + " ldr r1, ._987 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -6115,8 +6115,8 @@ void debug_sub_8012D10() " beq ._989 @cond_branch\n" " b ._990\n" "._985:\n" - " ldr r3, ._995\n" - " ldr r2, ._995 + 4\n" + " ldr r3, ._995 @ gUnknown_Debug_2023B62\n" + " ldr r2, ._995 + 4 @ gCurrentMove\n" " ldrh r0, [r2]\n" " sub r0, r0, #0x1\n" " add r1, r0, r3\n" @@ -6145,11 +6145,11 @@ void debug_sub_8012D10() " mov r0, #0x1\n" " b ._997\n" "._989:\n" - " ldr r3, ._1000\n" + " ldr r3, ._1000 @ gCurrentMove\n" " ldrh r2, [r3]\n" " add r1, r2, #0\n" " add r1, r1, #0xa\n" - " ldr r0, ._1000 + 4\n" + " ldr r0, ._1000 + 4 @ 0x19b\n" " cmp r1, r0\n" " bgt ._998 @cond_branch\n" " strh r1, [r3]\n" @@ -6160,7 +6160,7 @@ void debug_sub_8012D10() " .word gCurrentMove\n" " .word 0x19b\n" "._998:\n" - " ldr r1, ._1003\n" + " ldr r1, ._1003 @ 0xfffffe70\n" " add r0, r2, r1\n" " strh r0, [r3]\n" " b ._1025\n" @@ -6178,7 +6178,7 @@ void debug_sub_8012D10() "._1005:\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._1011\n" + " ldr r1, ._1011 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -6203,8 +6203,8 @@ void debug_sub_8012D10() " beq ._1014 @cond_branch\n" " b ._1067\n" "._1009:\n" - " ldr r1, ._1020\n" - " ldr r0, ._1020 + 4\n" + " ldr r1, ._1020 @ gUnknown_Debug_2023B62\n" + " ldr r0, ._1020 + 4 @ gCurrentMove\n" " ldrh r0, [r0]\n" " sub r0, r0, #0x1\n" " add r2, r0, r1\n" @@ -6238,7 +6238,7 @@ void debug_sub_8012D10() " bl debug_sub_8012AC0\n" " b ._1067\n" "._1013:\n" - " ldr r2, ._1026\n" + " ldr r2, ._1026 @ gCurrentMove\n" " ldrh r0, [r2]\n" " add r1, r0, #0\n" " sub r1, r1, #0xa\n" @@ -6268,7 +6268,7 @@ void debug_sub_8012D10() " bl debug_sub_8012B70\n" " b ._1067\n" "._916:\n" - " ldr r0, ._1032\n" + " ldr r0, ._1032 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -6276,7 +6276,7 @@ void debug_sub_8012D10() " beq ._1030 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1032 + 4\n" + " ldr r0, ._1032 + 4 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -6301,7 +6301,7 @@ void debug_sub_8012D10() " beq ._1035 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1037\n" + " ldr r0, ._1037 @ gTasks\n" " lsl r1, r5, #0x2\n" " add r1, r1, r5\n" " lsl r1, r1, #0x3\n" @@ -6325,7 +6325,7 @@ void debug_sub_8012D10() " bl PlaySE\n" " b ._1063\n" "._917:\n" - " ldr r0, ._1044\n" + " ldr r0, ._1044 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -6333,7 +6333,7 @@ void debug_sub_8012D10() " beq ._1042 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1044 + 4\n" + " ldr r0, ._1044 + 4 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -6358,7 +6358,7 @@ void debug_sub_8012D10() " beq ._1047 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1050\n" + " ldr r0, ._1050 @ gTasks\n" " lsl r1, r5, #0x2\n" " add r1, r1, r5\n" " lsl r1, r1, #0x3\n" @@ -6367,8 +6367,8 @@ void debug_sub_8012D10() " ldsh r0, [r1, r2]\n" " cmp r0, #0\n" " bne ._1063 @cond_branch\n" - " ldr r1, ._1050 + 4\n" - " ldr r2, ._1050 + 8\n" + " ldr r1, ._1050 + 4 @ gUnknown_Debug_2023B62\n" + " ldr r2, ._1050 + 8 @ 0x19b\n" " mov r0, #0x1f\n" " bl debug_sub_80132C8\n" " b ._1063\n" @@ -6387,7 +6387,7 @@ void debug_sub_8012D10() " bl PlaySE\n" " b ._1063\n" "._918:\n" - " ldr r0, ._1056\n" + " ldr r0, ._1056 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -6395,7 +6395,7 @@ void debug_sub_8012D10() " beq ._1054 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1056 + 4\n" + " ldr r0, ._1056 + 4 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -6417,7 +6417,7 @@ void debug_sub_8012D10() "._1046:\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1060\n" + " ldr r0, ._1060 @ gTasks\n" " lsl r4, r5, #0x2\n" " add r4, r4, r5\n" " lsl r4, r4, #0x3\n" @@ -6440,7 +6440,7 @@ void debug_sub_8012D10() " beq ._1062 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r0, ._1065\n" + " ldr r0, ._1065 @ gTasks\n" " lsl r1, r5, #0x2\n" " add r1, r1, r5\n" " lsl r1, r1, #0x3\n" @@ -6449,8 +6449,8 @@ void debug_sub_8012D10() " ldsh r0, [r1, r2]\n" " cmp r0, #0\n" " bne ._1063 @cond_branch\n" - " ldr r1, ._1065 + 4\n" - " ldr r2, ._1065 + 8\n" + " ldr r1, ._1065 + 4 @ gUnknown_Debug_2023B62\n" + " ldr r2, ._1065 + 8 @ 0x19b\n" " mov r0, #0x1f\n" " bl debug_sub_8013294\n" "._1063:\n" @@ -6810,7 +6810,7 @@ void debug_sub_80138CC() { asm( " push {lr}\n" - " ldr r0, ._1167\n" + " ldr r0, ._1167 @ gActiveBank\n" " ldrb r0, [r0]\n" " bl GetBankSide\n" " lsl r0, r0, #0x18\n" @@ -6818,8 +6818,8 @@ void debug_sub_80138CC() " beq ._1163 @cond_branch\n" " b ._1186\n" "._1163:\n" - " ldr r1, ._1167 + 4\n" - " ldr r2, ._1167 + 8\n" + " ldr r1, ._1167 + 4 @ gSharedMem\n" + " ldr r2, ._1167 + 8 @ 0x160fd\n" " add r0, r1, r2\n" " ldrb r0, [r0]\n" " add r2, r1, #0\n" @@ -6828,7 +6828,7 @@ void debug_sub_80138CC() " b ._1186\n" "._1165:\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._1167 + 12\n" + " ldr r1, ._1167 + 12 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -6846,16 +6846,16 @@ void debug_sub_80138CC() " .word ._1173\n" " .word ._1174\n" "._1170:\n" - " ldr r1, ._1177\n" - " ldr r0, ._1177 + 4\n" + " ldr r1, ._1177 @ gBattleBankFunc\n" + " ldr r0, ._1177 + 4 @ gActiveBank\n" " ldrb r0, [r0]\n" " lsl r0, r0, #0x2\n" " add r0, r0, r1\n" " ldr r1, [r0]\n" - " ldr r0, ._1177 + 8\n" + " ldr r0, ._1177 + 8 @ sub_802C098\n" " cmp r1, r0\n" " bne ._1186 @cond_branch\n" - " ldr r0, ._1177 + 12\n" + " ldr r0, ._1177 + 12 @ 0x160fd\n" " add r1, r2, r0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" @@ -6868,16 +6868,16 @@ void debug_sub_80138CC() " .word sub_802C098+1\n" " .word 0x160fd\n" "._1171:\n" - " ldr r1, ._1180\n" + " ldr r1, ._1180 @ gMain\n" " mov r0, #0x1\n" " strh r0, [r1, #0x2c]\n" " strh r0, [r1, #0x2e]\n" - " ldr r0, ._1180 + 4\n" + " ldr r0, ._1180 + 4 @ 0x160fd\n" " add r1, r2, r0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" " strb r0, [r1]\n" - " ldr r0, ._1180 + 8\n" + " ldr r0, ._1180 + 8 @ 0x160fe\n" " add r1, r2, r0\n" " mov r0, #0x80\n" " b ._1187\n" @@ -6888,7 +6888,7 @@ void debug_sub_80138CC() " .word 0x160fd\n" " .word 0x160fe\n" "._1172:\n" - " ldr r0, ._1184\n" + " ldr r0, ._1184 @ 0x160fe\n" " add r3, r2, r0\n" " ldrb r0, [r3]\n" " sub r0, r0, #0x1\n" @@ -6896,11 +6896,11 @@ void debug_sub_80138CC() " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " bne ._1186 @cond_branch\n" - " ldr r1, ._1184 + 4\n" + " ldr r1, ._1184 + 4 @ gMain\n" " mov r0, #0x1\n" " strh r0, [r1, #0x2c]\n" " strh r0, [r1, #0x2e]\n" - " ldr r0, ._1184 + 8\n" + " ldr r0, ._1184 + 8 @ 0x160fd\n" " add r1, r2, r0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" @@ -6915,7 +6915,7 @@ void debug_sub_80138CC() " .word gMain\n" " .word 0x160fd\n" "._1173:\n" - " ldr r0, ._1188\n" + " ldr r0, ._1188 @ 0x160fe\n" " add r1, r2, r0\n" " ldrb r0, [r1]\n" " sub r0, r0, #0x1\n" @@ -6923,11 +6923,11 @@ void debug_sub_80138CC() " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " bne ._1186 @cond_branch\n" - " ldr r1, ._1188 + 4\n" + " ldr r1, ._1188 + 4 @ gMain\n" " mov r0, #0x1\n" " strh r0, [r1, #0x2c]\n" " strh r0, [r1, #0x2e]\n" - " ldr r0, ._1188 + 8\n" + " ldr r0, ._1188 + 8 @ 0x160fd\n" " add r1, r2, r0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" @@ -6939,7 +6939,7 @@ void debug_sub_80138CC() " .word gMain\n" " .word 0x160fd\n" "._1174:\n" - " ldr r0, ._1190\n" + " ldr r0, ._1190 @ 0x160fd\n" " add r1, r2, r0\n" " mov r0, #0x0\n" "._1187:\n" @@ -6960,7 +6960,7 @@ void debug_sub_80139E4() { asm( " push {r4, r5, lr}\n" - " ldr r0, ._1198\n" + " ldr r0, ._1198 @ gUnknown_02023A14_50\n" " ldrb r1, [r0]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" @@ -6968,10 +6968,10 @@ void debug_sub_80139E4() " lsr r4, r0, #0x18\n" " cmp r4, #0\n" " beq ._1192 @cond_branch\n" - " ldr r2, ._1198 + 4\n" + " ldr r2, ._1198 + 4 @ gActiveBank\n" " mov r0, #0x0\n" " strb r0, [r2]\n" - " ldr r1, ._1198 + 8\n" + " ldr r1, ._1198 + 8 @ gNoOfAllBanks\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" " beq ._1193 @cond_branch\n" @@ -6988,17 +6988,17 @@ void debug_sub_80139E4() " cmp r0, r1\n" " bcc ._1194 @cond_branch\n" "._1193:\n" - " ldr r0, ._1198 + 12\n" + " ldr r0, ._1198 + 12 @ gBattleMainFunc\n" " ldr r0, [r0]\n" " bl _call_via_r0\n" - " ldr r1, ._1198 + 4\n" + " ldr r1, ._1198 + 4 @ gActiveBank\n" " mov r0, #0x0\n" " strb r0, [r1]\n" - " ldr r0, ._1198 + 8\n" + " ldr r0, ._1198 + 8 @ gNoOfAllBanks\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " beq ._1200 @cond_branch\n" - " ldr r5, ._1198 + 16\n" + " ldr r5, ._1198 + 16 @ gBattleBankFunc\n" " add r4, r1, #0\n" "._1196:\n" " ldrb r0, [r4]\n" @@ -7009,7 +7009,7 @@ void debug_sub_80139E4() " ldrb r0, [r4]\n" " add r0, r0, #0x1\n" " strb r0, [r4]\n" - " ldr r1, ._1198 + 8\n" + " ldr r1, ._1198 + 8 @ gNoOfAllBanks\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " ldrb r1, [r1]\n" @@ -7025,16 +7025,16 @@ void debug_sub_80139E4() " .word gBattleMainFunc\n" " .word gBattleBankFunc\n" "._1192:\n" - " ldr r0, ._1202\n" + " ldr r0, ._1202 @ gBattleMainFunc\n" " ldr r0, [r0]\n" " bl _call_via_r0\n" - " ldr r1, ._1202 + 4\n" + " ldr r1, ._1202 + 4 @ gActiveBank\n" " strb r4, [r1]\n" - " ldr r0, ._1202 + 8\n" + " ldr r0, ._1202 + 8 @ gNoOfAllBanks\n" " ldrb r0, [r0]\n" " cmp r4, r0\n" " bcs ._1200 @cond_branch\n" - " ldr r5, ._1202 + 12\n" + " ldr r5, ._1202 + 12 @ gBattleBankFunc\n" " add r4, r1, #0\n" "._1201:\n" " ldrb r0, [r4]\n" @@ -7045,7 +7045,7 @@ void debug_sub_80139E4() " ldrb r0, [r4]\n" " add r0, r0, #0x1\n" " strb r0, [r4]\n" - " ldr r1, ._1202 + 8\n" + " ldr r1, ._1202 + 8 @ gNoOfAllBanks\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " ldrb r1, [r1]\n" @@ -7080,20 +7080,20 @@ void sub_8010874() " bl SpecialStatusesClear\n" " mov r2, #0x0\n" " mov r3, #0x0\n" - " ldr r0, ._1215\n" + " ldr r0, ._1215 @ gUnknown_02024C4C\n" " mov sl, r0\n" - " ldr r1, ._1215 + 4\n" + " ldr r1, ._1215 + 4 @ gLastHitByType\n" " mov r9, r1\n" - " ldr r4, ._1215 + 8\n" + " ldr r4, ._1215 + 8 @ gLastLandedMoves\n" " mov r8, r4\n" - " ldr r0, ._1215 + 12\n" + " ldr r0, ._1215 + 12 @ gLastUsedMove\n" " mov ip, r0\n" - " ldr r4, ._1215 + 16\n" + " ldr r4, ._1215 + 16 @ gDisableStructs\n" " mov r5, #0x0\n" - " ldr r7, ._1215 + 20\n" - " ldr r6, ._1215 + 24\n" + " ldr r7, ._1215 + 20 @ gUnknown_02024C2C\n" + " ldr r6, ._1215 + 24 @ gLockedMoves\n" "._1205:\n" - " ldr r0, ._1215 + 28\n" + " ldr r0, ._1215 + 28 @ gStatuses3\n" " add r0, r5, r0\n" " str r3, [r0]\n" " mov r1, #0x0\n" @@ -7105,7 +7105,7 @@ void sub_8010874() " bls ._1204 @cond_branch\n" " mov r0, #0x2\n" " strb r0, [r4, #0x16]\n" - " ldr r1, ._1215 + 32\n" + " ldr r1, ._1215 + 32 @ gUnknown_02024C70\n" " add r0, r2, r1\n" " strb r3, [r0]\n" " mov r0, ip\n" @@ -7116,13 +7116,13 @@ void sub_8010874() " strh r3, [r0]\n" " mov r1, sl\n" " strh r3, [r1]\n" - " ldr r0, ._1215 + 36\n" + " ldr r0, ._1215 + 36 @ gUnknown_02024C5C\n" " add r1, r2, r0\n" " mov r0, #0xff\n" " strb r0, [r1]\n" " strh r3, [r6]\n" " strh r3, [r7]\n" - " ldr r1, ._1215 + 40\n" + " ldr r1, ._1215 + 40 @ gSharedMem\n" " add r0, r5, r1\n" " str r3, [r0]\n" " mov r0, #0x2\n" @@ -7138,8 +7138,8 @@ void sub_8010874() " cmp r2, #0x3\n" " ble ._1205 @cond_branch\n" " mov r5, #0x0\n" - " ldr r3, ._1215 + 44\n" - " ldr r4, ._1215 + 48\n" + " ldr r3, ._1215 + 44 @ gSideTimers\n" + " ldr r4, ._1215 + 48 @ gSideAffecting\n" " mov r2, #0x1\n" "._1207:\n" " strh r5, [r4]\n" @@ -7156,13 +7156,13 @@ void sub_8010874() " cmp r2, #0\n" " bge ._1207 @cond_branch\n" " mov r1, #0x0\n" - " ldr r2, ._1215 + 52\n" + " ldr r2, ._1215 + 52 @ gBankAttacker\n" " strb r1, [r2]\n" - " ldr r3, ._1215 + 56\n" + " ldr r3, ._1215 + 56 @ gBankTarget\n" " strb r1, [r3]\n" - " ldr r4, ._1215 + 60\n" + " ldr r4, ._1215 + 60 @ gBattleWeather\n" " strh r1, [r4]\n" - " ldr r1, ._1215 + 64\n" + " ldr r1, ._1215 + 64 @ gWishFutureKnock\n" " mov r2, #0x0\n" " mov r3, #0x0\n" "._1208:\n" @@ -7172,50 +7172,50 @@ void sub_8010874() " cmp r2, #0x2b\n" " bls ._1208 @cond_branch\n" " mov r0, #0x0\n" - " ldr r1, ._1215 + 68\n" + " ldr r1, ._1215 + 68 @ gHitMarker\n" " str r0, [r1]\n" - " ldr r2, ._1215 + 72\n" + " ldr r2, ._1215 + 72 @ gBattleTypeFlags\n" " ldrh r1, [r2]\n" " mov r0, #0x2\n" " and r0, r0, r1\n" " cmp r0, #0\n" " bne ._1210 @cond_branch\n" - " ldr r3, ._1215 + 76\n" + " ldr r3, ._1215 + 76 @ gSaveBlock2\n" " ldrb r1, [r3, #0x15]\n" " mov r0, #0x4\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._1210 @cond_branch\n" " mov r0, #0x80\n" - " ldr r4, ._1215 + 68\n" + " ldr r4, ._1215 + 68 @ gHitMarker\n" " str r0, [r4]\n" "._1210:\n" - " ldr r1, ._1215 + 76\n" + " ldr r1, ._1215 + 76 @ gSaveBlock2\n" " ldrb r0, [r1, #0x15]\n" " lsl r0, r0, #0x1e\n" " lsr r0, r0, #0x1f\n" - " ldr r3, ._1215 + 80\n" - " ldr r4, ._1215 + 84\n" + " ldr r3, ._1215 + 80 @ gSharedMem\n" + " ldr r4, ._1215 + 84 @ 0x16084\n" " add r2, r3, r4\n" " mov r1, #0x0\n" " strb r0, [r2]\n" - " ldr r0, ._1215 + 88\n" + " ldr r0, ._1215 + 88 @ gMultiHitCounter\n" " strb r1, [r0]\n" - " ldr r2, ._1215 + 92\n" + " ldr r2, ._1215 + 92 @ gBattleOutcome\n" " strb r1, [r2]\n" - " ldr r3, ._1215 + 96\n" + " ldr r3, ._1215 + 96 @ gBattleExecBuffer\n" " str r1, [r3]\n" " mov r2, #0x0\n" - " ldr r4, ._1215 + 100\n" + " ldr r4, ._1215 + 100@ gPaydayMoney\n" " strh r1, [r4]\n" - " ldr r1, ._1215 + 80\n" - " ldr r3, ._1215 + 104\n" + " ldr r1, ._1215 + 80 @ gSharedMem\n" + " ldr r3, ._1215 + 104@ 0x17130\n" " add r0, r1, r3\n" " strb r2, [r0]\n" - " ldr r4, ._1215 + 108\n" + " ldr r4, ._1215 + 108@ 0x17160\n" " add r0, r1, r4\n" " strb r2, [r0]\n" - " ldr r1, ._1215 + 112\n" + " ldr r1, ._1215 + 112@ gBattleCommunication\n" " mov r2, #0x0\n" " add r0, r1, #7\n" "._1211:\n" @@ -7224,37 +7224,37 @@ void sub_8010874() " cmp r0, r1\n" " bge ._1211 @cond_branch\n" " mov r5, #0x0\n" - " ldr r0, ._1215 + 116\n" + " ldr r0, ._1215 + 116@ gPauseCounterBattle\n" " strh r5, [r0]\n" " mov r0, #0x0\n" - " ldr r1, ._1215 + 120\n" + " ldr r1, ._1215 + 120@ gBattleMoveDamage\n" " str r0, [r1]\n" - " ldr r2, ._1215 + 124\n" + " ldr r2, ._1215 + 124@ gUnknown_02024DE8\n" " strh r0, [r2]\n" - " ldr r4, ._1215 + 80\n" - " ldr r3, ._1215 + 128\n" + " ldr r4, ._1215 + 80 @ gSharedMem\n" + " ldr r3, ._1215 + 128@ 0x16002\n" " add r0, r4, r3\n" " strb r5, [r0]\n" - " ldr r1, ._1215 + 132\n" + " ldr r1, ._1215 + 132@ 0x160a1\n" " add r0, r4, r1\n" " strb r5, [r0]\n" - " ldr r2, ._1215 + 136\n" + " ldr r2, ._1215 + 136@ gLeveledUpInBattle\n" " strb r5, [r2]\n" - " ldr r3, ._1215 + 140\n" + " ldr r3, ._1215 + 140@ gAbsentBankFlags\n" " strb r5, [r3]\n" " sub r1, r1, #0x29\n" " add r0, r4, r1\n" " strb r5, [r0]\n" - " ldr r2, ._1215 + 144\n" + " ldr r2, ._1215 + 144@ 0x16086\n" " add r0, r4, r2\n" " strb r5, [r0]\n" - " ldr r3, ._1215 + 148\n" + " ldr r3, ._1215 + 148@ 0x16087\n" " add r0, r4, r3\n" " strb r5, [r0]\n" - " ldr r0, ._1215 + 152\n" + " ldr r0, ._1215 + 152@ gEnemyParty\n" " mov r1, #0xb\n" " bl GetMonData\n" - " ldr r2, ._1215 + 156\n" + " ldr r2, ._1215 + 156@ gBaseStats\n" " lsl r1, r0, #0x3\n" " sub r1, r1, r0\n" " lsl r1, r1, #0x2\n" @@ -7262,16 +7262,16 @@ void sub_8010874() " ldrb r1, [r1, #0x8]\n" " mov r0, #0x64\n" " mul r0, r0, r1\n" - " ldr r1, ._1215 + 160\n" + " ldr r1, ._1215 + 160@ 0x4fb\n" " bl __divsi3\n" - " ldr r2, ._1215 + 164\n" + " ldr r2, ._1215 + 164@ 0x16089\n" " add r1, r4, r2\n" " strb r0, [r1]\n" - " ldr r3, ._1215 + 168\n" + " ldr r3, ._1215 + 168@ 0x16088\n" " add r1, r4, r3\n" " mov r0, #0x3\n" " strb r0, [r1]\n" - " ldr r1, ._1215 + 172\n" + " ldr r1, ._1215 + 172@ 0x1601b\n" " add r0, r4, r1\n" " strb r5, [r0]\n" " sub r2, r2, #0x33\n" @@ -7281,7 +7281,7 @@ void sub_8010874() " mov r2, #0x0\n" " mov r1, #0x0\n" "._1212:\n" - " ldr r3, ._1215 + 176\n" + " ldr r3, ._1215 + 176@ 0x160ac\n" " add r0, r2, r3\n" " add r0, r0, r4\n" " strb r1, [r0]\n" @@ -7308,8 +7308,8 @@ void sub_8010874() " add r2, r2, #0x1\n" " cmp r2, #0x7\n" " ble ._1212 @cond_branch\n" - " ldr r4, ._1215 + 80\n" - " ldr r1, ._1215 + 180\n" + " ldr r4, ._1215 + 80 @ gSharedMem\n" + " ldr r1, ._1215 + 180@ 0x160c8\n" " add r0, r4, r1\n" " mov r2, #0x0\n" " mov r1, #0x6\n" @@ -7317,10 +7317,10 @@ void sub_8010874() " sub r3, r3, #0x3f\n" " add r0, r4, r3\n" " strb r1, [r0]\n" - " ldr r1, ._1215 + 184\n" + " ldr r1, ._1215 + 184@ 0x16113\n" " add r0, r4, r1\n" " strb r2, [r0]\n" - " ldr r3, ._1215 + 188\n" + " ldr r3, ._1215 + 188@ gBattleResults\n" " mov r1, #0x0\n" " mov r2, #0xa\n" " add r0, r3, #0\n" @@ -7367,12 +7367,12 @@ void sub_8010874() " add r2, r2, #0x1\n" " cmp r2, #0x9\n" " ble ._1214 @cond_branch\n" - " ldr r2, ._1215 + 80\n" - " ldr r3, ._1215 + 192\n" + " ldr r2, ._1215 + 80 @ gSharedMem\n" + " ldr r3, ._1215 + 192@ 0x1609e\n" " add r0, r2, r3\n" " mov r1, #0x0\n" " strb r1, [r0]\n" - " ldr r4, ._1215 + 196\n" + " ldr r4, ._1215 + 196@ 0x1609f\n" " add r0, r2, r4\n" " strb r1, [r0]\n" " pop {r3, r4, r5}\n" diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 9fe1f6cb0..8b81139fb 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -5024,8 +5024,8 @@ static void atk15_seteffectwithchance(void) { asm("\ push {r4, lr}\n\ - ldr r2, ._1037\n\ - ldr r0, ._1037 + 4\n\ + ldr r2, ._1037 @ gBattleMons\n\ + ldr r0, ._1037 + 4 @ gBankAttacker\n\ ldrb r1, [r0]\n\ mov r0, #0x58\n\ mul r0, r0, r1\n\ @@ -5034,8 +5034,8 @@ static void atk15_seteffectwithchance(void) ldrb r0, [r0]\n\ cmp r0, #0x20\n\ bne ._1035 @cond_branch\n\ - ldr r2, ._1037 + 8\n\ - ldr r0, ._1037 + 12\n\ + ldr r2, ._1037 + 8 @ gBattleMoves\n\ + ldr r0, ._1037 + 12 @ gCurrentMove\n\ ldrh r1, [r0]\n\ lsl r0, r1, #0x1\n\ add r0, r0, r1\n\ @@ -5052,8 +5052,8 @@ static void atk15_seteffectwithchance(void) .word gBattleMoves\n\ .word gCurrentMove\n\ ._1035:\n\ - ldr r2, ._1045\n\ - ldr r0, ._1045 + 4\n\ + ldr r2, ._1045 @ gBattleMoves\n\ + ldr r0, ._1045 + 4 @ gCurrentMove\n\ ldrh r1, [r0]\n\ lsl r0, r1, #0x1\n\ add r0, r0, r1\n\ @@ -5061,11 +5061,11 @@ static void atk15_seteffectwithchance(void) add r0, r0, r2\n\ ldrb r4, [r0, #0x5]\n\ ._1036:\n\ - ldr r0, ._1045 + 8\n\ + ldr r0, ._1045 + 8 @ gUnknown_02023A14_50\n\ ldrb r1, [r0]\n\ mov r0, #0x4\n\ and r0, r0, r1\n\ - ldr r2, ._1045 + 12\n\ + ldr r2, ._1045 + 12 @ gBattleCommunication\n\ cmp r0, #0\n\ beq ._1039 @cond_branch\n\ ldrb r1, [r2, #0x3]\n\ @@ -5073,7 +5073,7 @@ static void atk15_seteffectwithchance(void) and r0, r0, r1\n\ cmp r0, #0\n\ bne ._1040 @cond_branch\n\ - ldr r0, ._1045 + 16\n\ + ldr r0, ._1045 + 16 @ gBattleMoveFlags\n\ ldrb r1, [r0]\n\ mov r0, #0x29\n\ and r0, r0, r1\n\ @@ -5086,13 +5086,13 @@ static void atk15_seteffectwithchance(void) cmp r0, #0\n\ beq ._1043 @cond_branch\n\ ._1040:\n\ - ldr r0, ._1045 + 16\n\ + ldr r0, ._1045 + 16 @ gBattleMoveFlags\n\ ldrb r1, [r0]\n\ mov r0, #0x29\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._1043 @cond_branch\n\ - ldr r2, ._1045 + 12\n\ + ldr r2, ._1045 + 12 @ gBattleCommunication\n\ ldrb r1, [r2, #0x3]\n\ mov r0, #0x7f\n\ and r0, r0, r1\n\ @@ -5116,11 +5116,11 @@ static void atk15_seteffectwithchance(void) lsr r0, r0, #0x10\n\ cmp r0, r4\n\ bhi ._1049 @cond_branch\n\ - ldr r0, ._1052\n\ + ldr r0, ._1052 @ gBattleCommunication\n\ ldrb r0, [r0, #0x3]\n\ cmp r0, #0\n\ beq ._1049 @cond_branch\n\ - ldr r0, ._1052 + 4\n\ + ldr r0, ._1052 + 4 @ gBattleMoveFlags\n\ ldrb r1, [r0]\n\ mov r0, #0x29\n\ and r0, r0, r1\n\ @@ -5144,16 +5144,16 @@ static void atk15_seteffectwithchance(void) bl SetMoveEffect\n\ b ._1054\n\ ._1049:\n\ - ldr r1, ._1055\n\ + ldr r1, ._1055 @ gBattlescriptCurrInstr\n\ ldr r0, [r1]\n\ add r0, r0, #0x1\n\ str r0, [r1]\n\ ._1054:\n\ - ldr r0, ._1055 + 4\n\ + ldr r0, ._1055 + 4 @ gBattleCommunication\n\ mov r1, #0x0\n\ strb r1, [r0, #0x3]\n\ - ldr r0, ._1055 + 8\n\ - ldr r2, ._1055 + 12\n\ + ldr r0, ._1055 + 8 @ \n\ + ldr r2, ._1055 + 12 @ \n\ add r0, r0, r2\n\ strb r1, [r0]\n\ pop {r4}\n\ @@ -12778,12 +12778,12 @@ static void atk9E_metronome(void) push {r4, r5, r6, r7, lr}\n\ mov r7, r8\n\ push {r7}\n\ - ldr r6, ._3076\n\ + ldr r6, ._3076 @ gBankAttacker\n\ ldrb r2, [r6]\n\ lsl r1, r2, #0x1\n\ - ldr r0, ._3076 + 4\n\ + ldr r0, ._3076 + 4 @ \n\ add r3, r1, r0\n\ - ldr r5, ._3076 + 8\n\ + ldr r5, ._3076 + 8 @ \n\ mov r4, #0x58\n\ add r0, r2, #0\n\ mul r0, r0, r4\n\ @@ -12802,7 +12802,7 @@ static void atk9E_metronome(void) bne ._3072 @cond_branch\n\ strh r2, [r3]\n\ ._3072:\n\ - ldr r1, ._3076 + 12\n\ + ldr r1, ._3076 + 12 @ \n\ ldrh r0, [r3]\n\ strh r0, [r1]\n\ ldrb r0, [r6]\n\ @@ -12845,14 +12845,14 @@ static void atk9E_metronome(void) ._3079:\n\ strh r0, [r3]\n\ ._3081:\n\ - ldr r4, ._3083\n\ + ldr r4, ._3083 @ gHitMarker\n\ ldr r2, [r4]\n\ - ldr r0, ._3083 + 4\n\ + ldr r0, ._3083 + 4 @ 0xfffffbff\n\ and r2, r2, r0\n\ str r2, [r4]\n\ - ldr r6, ._3083 + 8\n\ - ldr r5, ._3083 + 12\n\ - ldr r3, ._3083 + 16\n\ + ldr r6, ._3083 + 8 @ gBattlescriptCurrInstr\n\ + ldr r5, ._3083 + 12 @ gBattleScriptsForMoveEffects\n\ + ldr r3, ._3083 + 16 @ gBattleMoves\n\ ldrh r1, [r7]\n\ lsl r0, r1, #0x1\n\ add r0, r0, r1\n\ @@ -12878,15 +12878,15 @@ static void atk9E_metronome(void) .word gBattleScriptsForMoveEffects\n\ .word gBattleMoves\n\ ._3071:\n\ - ldr r7, ._3090\n\ + ldr r7, ._3090 @ gCurrentMove\n\ mov r6, #0xb1\n\ lsl r6, r6, #0x1\n\ - ldr r5, ._3090 + 4\n\ - ldr r0, ._3090 + 8\n\ + ldr r5, ._3090 + 4 @ sMovesForbiddenToCopy\n\ + ldr r0, ._3090 + 8 @ gBattlescriptCurrInstr\n\ mov r8, r0\n\ ._3089:\n\ bl Random\n\ - ldr r2, ._3090 + 12\n\ + ldr r2, ._3090 + 12 @ 0x1ff\n\ add r1, r2, #0\n\ and r0, r0, r1\n\ add r0, r0, #0x1\n\ @@ -12898,9 +12898,9 @@ static void atk9E_metronome(void) sub r0, r0, #0x1\n\ cmp r0, #0\n\ bge ._3086 @cond_branch\n\ - ldr r4, ._3090\n\ + ldr r4, ._3090 @ gCurrentMove\n\ ldrh r2, [r4]\n\ - ldr r3, ._3090 + 16\n\ + ldr r3, ._3090 + 16 @ 0xffff\n\ sub r0, r5, #2\n\ ._3088:\n\ add r0, r0, #0x2\n\ @@ -12910,16 +12910,16 @@ static void atk9E_metronome(void) cmp r1, r3\n\ bne ._3088 @cond_branch\n\ ._3087:\n\ - ldr r0, ._3090 + 16\n\ + ldr r0, ._3090 + 16 @ 0xffff\n\ cmp r1, r0\n\ bne ._3089 @cond_branch\n\ - ldr r2, ._3090 + 20\n\ + ldr r2, ._3090 + 20 @ gHitMarker\n\ ldr r0, [r2]\n\ - ldr r1, ._3090 + 24\n\ + ldr r1, ._3090 + 24 @ 0xfffffbff\n\ and r0, r0, r1\n\ str r0, [r2]\n\ - ldr r3, ._3090 + 28\n\ - ldr r2, ._3090 + 32\n\ + ldr r3, ._3090 + 28 @ gBattleScriptsForMoveEffects\n\ + ldr r2, ._3090 + 32 @ gBattleMoves\n\ ldrh r1, [r4]\n\ lsl r0, r1, #0x1\n\ add r0, r0, r1\n\ @@ -12935,7 +12935,7 @@ static void atk9E_metronome(void) ._3082:\n\ mov r1, #0x0\n\ bl GetMoveTarget\n\ - ldr r1, ._3090 + 36\n\ + ldr r1, ._3090 + 36 @ gBankTarget\n\ strb r0, [r1]\n\ pop {r3}\n\ mov r8, r3\n\ diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 5382738f7..338f8d418 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1447,26 +1447,26 @@ void OpponentHandlecmd20(void) mov r6, r9\n\ mov r5, r8\n\ push {r5, r6, r7}\n\ - ldr r6, ._549\n\ + ldr r6, ._549 @ gActiveBank\n\ ldrb r0, [r6]\n\ lsl r0, r0, #0x9\n\ - ldr r1, ._549 + 4\n\ + ldr r1, ._549 + 4 @ gBattleBufferA\n\ add r5, r0, r1\n\ - ldr r2, ._549 + 8\n\ + ldr r2, ._549 + 8 @ gUnknown_02023A14_50\n\ ldrb r1, [r2]\n\ mov r0, #0x4\n\ and r0, r0, r1\n\ mov sl, r6\n\ cmp r0, #0\n\ beq ._546 @cond_branch\n\ - ldr r0, ._549 + 12\n\ + ldr r0, ._549 + 12 @ gBattleMoves\n\ mov r9, r0\n\ - ldr r1, ._549 + 16\n\ + ldr r1, ._549 + 16 @ \n\ mov ip, r1\n\ add r7, r6, #0\n\ mov r0, #0x2\n\ mov r8, r0\n\ - ldr r6, ._549 + 20\n\ + ldr r6, ._549 + 20 @ \n\ ._552:\n\ ldrb r1, [r7]\n\ mov r0, r8\n\ @@ -1526,13 +1526,13 @@ void OpponentHandlecmd20(void) ldrb r0, [r1]\n\ b ._561\n\ ._553:\n\ - ldr r0, ._559\n\ + ldr r0, ._559 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._557 @cond_branch\n\ - ldr r0, ._559 + 4\n\ + ldr r0, ._559 + 4 @ gUnknown_02023A14_50\n\ ldrb r1, [r0]\n\ mov r5, #0x2\n\ add r0, r5, #0\n\ @@ -1578,7 +1578,7 @@ void OpponentHandlecmd20(void) bl OpponentBufferExecCompleted\n\ b ._562\n\ ._546:\n\ - ldr r0, ._567\n\ + ldr r0, ._567 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x93\n\ lsl r0, r0, #0x3\n\ @@ -1607,7 +1607,7 @@ void OpponentHandlecmd20(void) mov r2, #0x0\n\ b ._569\n\ ._565:\n\ - ldr r3, ._574\n\ + ldr r3, ._574 @ gBattleMoves\n\ lsl r0, r4, #0x1\n\ add r2, r5, r0\n\ ldrh r1, [r2]\n\ @@ -1620,7 +1620,7 @@ void OpponentHandlecmd20(void) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._570 @cond_branch\n\ - ldr r1, ._574 + 4\n\ + ldr r1, ._574 + 4 @ gBankTarget\n\ ldrb r0, [r6]\n\ strb r0, [r1]\n\ ._570:\n\ @@ -1636,11 +1636,11 @@ void OpponentHandlecmd20(void) beq ._572 @cond_branch\n\ mov r0, #0x0\n\ bl GetBankByIdentity\n\ - ldr r5, ._574 + 4\n\ + ldr r5, ._574 + 4 @ gBankTarget\n\ strb r0, [r5]\n\ - ldr r0, ._574 + 8\n\ + ldr r0, ._574 + 8 @ gAbsentBankFlags\n\ ldrb r1, [r0]\n\ - ldr r2, ._574 + 12\n\ + ldr r2, ._574 + 12 @ gBitTable\n\ ldrb r0, [r5]\n\ lsl r0, r0, #0x2\n\ add r0, r0, r2\n\ @@ -1652,7 +1652,7 @@ void OpponentHandlecmd20(void) bl GetBankByIdentity\n\ strb r0, [r5]\n\ ._572:\n\ - ldr r0, ._574 + 4\n\ + ldr r0, ._574 + 4 @ gBankTarget\n\ ldrb r2, [r0]\n\ lsl r2, r2, #0x8\n\ orr r2, r2, r4\n\ @@ -1678,7 +1678,7 @@ void OpponentHandlecmd20(void) ldrh r2, [r0]\n\ cmp r2, #0\n\ beq ._576 @cond_branch\n\ - ldr r1, ._579\n\ + ldr r1, ._579 @ gBattleMoves\n\ lsl r0, r2, #0x1\n\ add r0, r0, r2\n\ lsl r0, r0, #0x2\n\ @@ -1688,7 +1688,7 @@ void OpponentHandlecmd20(void) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._577 @cond_branch\n\ - ldr r0, ._579 + 4\n\ + ldr r0, ._579 + 4 @ gActiveBank\n\ ldrb r2, [r0]\n\ lsl r2, r2, #0x8\n\ b ._578\n\ @@ -1698,7 +1698,7 @@ void OpponentHandlecmd20(void) .word gBattleMoves\n\ .word gActiveBank\n\ ._577:\n\ - ldr r0, ._583\n\ + ldr r0, ._583 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index d4b4da6f2..e03e21849 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -1007,21 +1007,21 @@ void debug_sub_8030C24(void) asm("\ push {r4, r5, r6, lr}\n\ add sp, sp, #0xfffffff4\n\ - ldr r1, ._293\n\ - ldr r4, ._293 + 4\n\ + ldr r1, ._293 @ gBattlePartyID\n\ + ldr r4, ._293 + 4 @ gActiveBank\n\ ldrb r0, [r4]\n\ lsl r0, r0, #0x1\n\ add r0, r0, r1\n\ ldrh r1, [r0]\n\ mov r0, #0x64\n\ mul r0, r0, r1\n\ - ldr r1, ._293 + 8\n\ + ldr r1, ._293 + 8 @ gPlayerParty\n\ add r0, r0, r1\n\ mov r1, #0xd\n\ bl GetMonData\n\ add r1, sp, #0x8\n\ strh r0, [r1]\n\ - ldr r5, ._293 + 12\n\ + ldr r5, ._293 + 12 @ gMain\n\ ldrh r1, [r5, #0x30]\n\ cmp r1, #0x20\n\ bne ._286 @cond_branch\n\ @@ -1082,7 +1082,7 @@ void debug_sub_8030C24(void) ldrb r0, [r4]\n\ mov r1, #0x0\n\ bl dp11b_obj_free\n\ - ldr r0, ._312\n\ + ldr r0, ._312 @ gBankAttacker\n\ ldrb r2, [r4]\n\ strb r2, [r0]\n\ ldrh r1, [r5, #0x28]\n\ @@ -1090,13 +1090,13 @@ void debug_sub_8030C24(void) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._310 @cond_branch\n\ - ldr r0, ._312 + 4\n\ + ldr r0, ._312 + 4 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._310 @cond_branch\n\ - ldr r0, ._312 + 8\n\ + ldr r0, ._312 + 8 @ gBankTarget\n\ mov r1, #0x2\n\ eor r1, r1, r2\n\ strb r1, [r0]\n\ @@ -1108,14 +1108,14 @@ void debug_sub_8030C24(void) .word gBattleTypeFlags\n\ .word gBankTarget\n\ ._310:\n\ - ldr r0, ._317\n\ + ldr r0, ._317 @ gMain\n\ ldrh r1, [r0, #0x28]\n\ mov r2, #0x1\n\ add r0, r2, #0\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._315 @cond_branch\n\ - ldr r0, ._317 + 4\n\ + ldr r0, ._317 + 4 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ add r0, r2, #0\n\ and r0, r0, r1\n\ @@ -1132,7 +1132,7 @@ void debug_sub_8030C24(void) mov r0, #0x1\n\ ._316:\n\ bl GetBankByIdentity\n\ - ldr r1, ._320\n\ + ldr r1, ._320 @ gBankTarget\n\ strb r0, [r1]\n\ ._311:\n\ mov r0, #0x0\n\ @@ -1140,8 +1140,8 @@ void debug_sub_8030C24(void) add r0, sp, #0x8\n\ ldrh r0, [r0]\n\ bl DoMoveAnim\n\ - ldr r1, ._320 + 4\n\ - ldr r0, ._320 + 8\n\ + ldr r1, ._320 + 4 @ gBattleBankFunc\n\ + ldr r0, ._320 + 8 @ gActiveBank\n\ ldrb r0, [r0]\n\ b ._332\n\ ._321:\n\ @@ -1157,7 +1157,7 @@ void debug_sub_8030C24(void) ldrb r0, [r4]\n\ mov r1, #0x0\n\ bl dp11b_obj_free\n\ - ldr r0, ._325\n\ + ldr r0, ._325 @ gBankTarget\n\ ldrb r2, [r4]\n\ strb r2, [r0]\n\ ldrh r1, [r5, #0x28]\n\ @@ -1165,13 +1165,13 @@ void debug_sub_8030C24(void) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._323 @cond_branch\n\ - ldr r0, ._325 + 4\n\ + ldr r0, ._325 + 4 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._323 @cond_branch\n\ - ldr r0, ._325 + 8\n\ + ldr r0, ._325 + 8 @ gBankAttacker\n\ mov r1, #0x2\n\ eor r1, r1, r2\n\ strb r1, [r0]\n\ @@ -1183,14 +1183,14 @@ void debug_sub_8030C24(void) .word gBattleTypeFlags\n\ .word gBankAttacker\n\ ._323:\n\ - ldr r0, ._330\n\ + ldr r0, ._330 @ gMain\n\ ldrh r1, [r0, #0x28]\n\ mov r2, #0x1\n\ add r0, r2, #0\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._328 @cond_branch\n\ - ldr r0, ._330 + 4\n\ + ldr r0, ._330 + 4 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ add r0, r2, #0\n\ and r0, r0, r1\n\ @@ -1207,7 +1207,7 @@ void debug_sub_8030C24(void) mov r0, #0x1\n\ ._329:\n\ bl GetBankByIdentity\n\ - ldr r1, ._333\n\ + ldr r1, ._333 @ gBankAttacker\n\ strb r0, [r1]\n\ ._324:\n\ mov r0, #0x0\n\ @@ -1215,8 +1215,8 @@ void debug_sub_8030C24(void) add r0, sp, #0x8\n\ ldrh r0, [r0]\n\ bl DoMoveAnim\n\ - ldr r1, ._333 + 4\n\ - ldr r0, ._333 + 8\n\ + ldr r1, ._333 + 4 @ gBattleBankFunc\n\ + ldr r0, ._333 + 8 @ gActiveBank\n\ ldrb r0, [r0]\n\ b ._332\n\ ._334:\n\ @@ -1231,7 +1231,7 @@ void debug_sub_8030C24(void) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._336 @cond_branch\n\ - ldr r0, ._338\n\ + ldr r0, ._338 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -1245,7 +1245,7 @@ void debug_sub_8030C24(void) bl dp11b_obj_free\n\ mov r0, #0x3\n\ bl GetBankByIdentity\n\ - ldr r1, ._338 + 4\n\ + ldr r1, ._338 + 4 @ gBankAttacker\n\ strb r0, [r1]\n\ mov r0, #0x1\n\ b ._337\n\ @@ -1283,7 +1283,7 @@ void debug_sub_8030C24(void) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._343 @cond_branch\n\ - ldr r0, ._345\n\ + ldr r0, ._345 @ gBattleTypeFlags\n\ ldrh r1, [r0]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -1297,24 +1297,24 @@ void debug_sub_8030C24(void) bl dp11b_obj_free\n\ mov r0, #0x1\n\ bl GetBankByIdentity\n\ - ldr r1, ._345 + 4\n\ + ldr r1, ._345 + 4 @ gBankAttacker\n\ strb r0, [r1]\n\ mov r0, #0x3\n\ ._337:\n\ bl GetBankByIdentity\n\ - ldr r1, ._345 + 8\n\ + ldr r1, ._345 + 8 @ gBankTarget\n\ strb r0, [r1]\n\ mov r0, #0x0\n\ bl sub_80326EC\n\ add r0, sp, #0x8\n\ ldrh r0, [r0]\n\ bl DoMoveAnim\n\ - ldr r1, ._345 + 12\n\ + ldr r1, ._345 + 12 @ gBattleBankFunc\n\ ldrb r0, [r4]\n\ ._332:\n\ lsl r0, r0, #0x2\n\ add r0, r0, r1\n\ - ldr r1, ._345 + 16\n\ + ldr r1, ._345 + 16 @ debug_sub_803107C\n\ str r1, [r0]\n\ b ._348\n\ ._346:\n\ @@ -1345,20 +1345,20 @@ void debug_sub_8030C24(void) add r0, r2, #0\n\ strh r0, [r1]\n\ ._347:\n\ - ldr r1, ._349\n\ - ldr r4, ._349 + 4\n\ + ldr r1, ._349 @ gBattlePartyID\n\ + ldr r4, ._349 + 4 @ gActiveBank\n\ ldrb r0, [r4]\n\ lsl r0, r0, #0x1\n\ add r0, r0, r1\n\ ldrh r1, [r0]\n\ mov r0, #0x64\n\ mul r0, r0, r1\n\ - ldr r1, ._349 + 8\n\ + ldr r1, ._349 + 8 @ gPlayerParty\n\ add r0, r0, r1\n\ mov r1, #0xd\n\ add r2, sp, #0x8\n\ bl SetMonData\n\ - ldr r2, ._349 + 12\n\ + ldr r2, ._349 + 12 @ gBattleMons\n\ ldrb r1, [r4]\n\ mov r0, #0x58\n\ mul r0, r0, r1\n\ @@ -1366,8 +1366,8 @@ void debug_sub_8030C24(void) add r1, sp, #0x8\n\ ldrh r1, [r1]\n\ strh r1, [r0, #0xc]\n\ - ldr r5, ._349 + 16\n\ - ldr r1, ._349 + 20\n\ + ldr r5, ._349 + 16 @ gUnknown_03004210\n\ + ldr r1, ._349 + 20 @ 0x1016\n\ mov r0, #0x10\n\ str r0, [sp]\n\ mov r0, #0x38\n\ @@ -1381,7 +1381,7 @@ void debug_sub_8030C24(void) ldsh r1, [r0, r2]\n\ mov r0, #0xd\n\ mul r1, r1, r0\n\ - ldr r0, ._349 + 24\n\ + ldr r0, ._349 + 24 @ gMoveNames\n\ add r1, r1, r0\n\ mov r2, #0x80\n\ lsl r2, r2, #0x1\n\ @@ -1390,7 +1390,7 @@ void debug_sub_8030C24(void) add r0, r5, #0\n\ mov r3, #0x2\n\ bl Text_InitWindowAndPrintText\n\ - ldr r4, ._349 + 28\n\ + ldr r4, ._349 + 28 @ gDisplayedStringBattle\n\ add r0, sp, #0x8\n\ mov r2, #0x0\n\ ldsh r1, [r0, r2]\n\ @@ -1418,11 +1418,11 @@ void debug_sub_8030C24(void) .word gMoveNames\n\ .word gDisplayedStringBattle\n\ ._302:\n\ - ldr r0, ._353\n\ + ldr r0, ._353 @ gMain\n\ ldrh r0, [r0, #0x30]\n\ cmp r0, #0x40\n\ bne ._351 @cond_branch\n\ - ldr r1, ._353 + 4\n\ + ldr r1, ._353 + 4 @ gAnimMoveTurn\n\ ldrb r0, [r1]\n\ sub r0, r0, #0x1\n\ b ._352\n\ @@ -1432,18 +1432,18 @@ void debug_sub_8030C24(void) .word gMain\n\ .word gAnimMoveTurn\n\ ._351:\n\ - ldr r1, ._359\n\ + ldr r1, ._359 @ gAnimMoveTurn\n\ ldrb r0, [r1]\n\ add r0, r0, #0x1\n\ ._352:\n\ strb r0, [r1]\n\ - ldr r4, ._359 + 4\n\ + ldr r4, ._359 + 4 @ gDisplayedStringBattle\n\ ldrb r1, [r1]\n\ add r0, r4, #0\n\ mov r2, #0x2\n\ mov r3, #0x3\n\ bl ConvertIntToDecimalStringN\n\ - ldr r0, ._359 + 8\n\ + ldr r0, ._359 + 8 @ gUnknown_03004210\n\ mov r2, #0x8e\n\ lsl r2, r2, #0x1\n\ mov r1, #0x39\n\ @@ -1452,7 +1452,7 @@ void debug_sub_8030C24(void) mov r3, #0x4\n\ bl Text_InitWindowAndPrintText\n\ ._348:\n\ - ldr r0, ._359 + 12\n\ + ldr r0, ._359 + 12 @ gMain\n\ ldrh r2, [r0, #0x28]\n\ mov r1, #0xc0\n\ lsl r1, r1, #0x2\n\ @@ -1461,28 +1461,28 @@ void debug_sub_8030C24(void) cmp r0, r1\n\ bne ._355 @cond_branch\n\ mov r4, #0x0\n\ - ldr r5, ._359 + 4\n\ - ldr r6, ._359 + 8\n\ + ldr r5, ._359 + 4 @ gDisplayedStringBattle\n\ + ldr r6, ._359 + 8 @ gUnknown_03004210\n\ ._361:\n\ add r0, r5, #0\n\ - ldr r1, ._359 + 16\n\ + ldr r1, ._359 + 16 @ BattleText_Format\n\ bl StringCopy\n\ - ldr r1, ._359 + 20\n\ - ldr r0, ._359 + 24\n\ + ldr r1, ._359 + 20 @ gBattlePartyID\n\ + ldr r0, ._359 + 24 @ gActiveBank\n\ ldrb r0, [r0]\n\ lsl r0, r0, #0x1\n\ add r0, r0, r1\n\ ldrh r1, [r0]\n\ mov r0, #0x64\n\ mul r0, r0, r1\n\ - ldr r1, ._359 + 28\n\ + ldr r1, ._359 + 28 @ gPlayerParty\n\ add r0, r0, r1\n\ add r1, r4, #0\n\ add r1, r1, #0xd\n\ bl GetMonData\n\ mov r1, #0xd\n\ mul r1, r1, r0\n\ - ldr r0, ._359 + 32\n\ + ldr r0, ._359 + 32 @ gMoveNames\n\ add r1, r1, r0\n\ add r0, r5, #0\n\ bl StringAppend\n\ @@ -1521,19 +1521,19 @@ void debug_sub_8030C24(void) add r0, r6, #0\n\ add r1, r5, #0\n\ bl Text_InitWindow\n\ - ldr r0, ._362\n\ + ldr r0, ._362 @ gUnknown_03004210\n\ bl Text_PrintWindow8002F44\n\ add r0, r4, #1\n\ lsl r0, r0, #0x18\n\ lsr r4, r0, #0x18\n\ cmp r4, #0x3\n\ bls ._361 @cond_branch\n\ - ldr r1, ._362 + 4\n\ - ldr r0, ._362 + 8\n\ + ldr r1, ._362 + 4 @ gBattleBankFunc\n\ + ldr r0, ._362 + 8 @ gActiveBank\n\ ldrb r0, [r0]\n\ lsl r0, r0, #0x2\n\ add r0, r0, r1\n\ - ldr r1, ._362 + 12\n\ + ldr r1, ._362 + 12 @ sub_802C68C\n\ str r1, [r0]\n\ ._355:\n\ add sp, sp, #0xc\n\ @@ -1556,16 +1556,16 @@ void debug_sub_803107C(void) push {r4, r5, r6, r7, lr}\n\ add sp, sp, #0xfffffffc\n\ mov r7, #0x0\n\ - ldr r0, ._369\n\ + ldr r0, ._369 @ gAnimScriptCallback\n\ ldr r0, [r0]\n\ bl _call_via_r0\n\ - ldr r0, ._369 + 4\n\ + ldr r0, ._369 + 4 @ gAnimScriptActive\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ bne ._364 @cond_branch\n\ mov r0, #0x1\n\ bl sub_80326EC\n\ - ldr r4, ._369 + 8\n\ + ldr r4, ._369 + 8 @ gActiveBank\n\ ldrb r0, [r4]\n\ mov r1, #0x1\n\ mov r2, #0x7\n\ @@ -1576,7 +1576,7 @@ void debug_sub_803107C(void) mov r2, #0x7\n\ mov r3, #0x1\n\ bl dp11b_obj_instanciate\n\ - ldr r0, ._369 + 12\n\ + ldr r0, ._369 + 12 @ gSprites\n\ add r2, r0, #0\n\ add r2, r2, #0x3e\n\ mov r1, #0x3f\n\ @@ -1593,13 +1593,13 @@ void debug_sub_803107C(void) sub r1, r1, #0x1\n\ cmp r1, #0\n\ bge ._366 @cond_branch\n\ - ldr r4, ._369 + 16\n\ + ldr r4, ._369 + 16 @ gDisplayedStringBattle\n\ add r0, r4, #0\n\ add r1, r7, #0\n\ mov r2, #0x2\n\ mov r3, #0x2\n\ bl ConvertIntToDecimalStringN\n\ - ldr r6, ._369 + 20\n\ + ldr r6, ._369 + 20 @ gUnknown_03004210\n\ mov r2, #0x91\n\ lsl r2, r2, #0x1\n\ mov r5, #0x39\n\ @@ -1625,7 +1625,7 @@ void debug_sub_803107C(void) bl Text_InitWindowAndPrintText\n\ mov r1, #0x0\n\ mov r7, #0x0\n\ - ldr r0, ._369 + 24\n\ + ldr r0, ._369 + 24 @ gOamMatrixAllocBitmap\n\ mov r3, #0x1\n\ ldr r2, [r0]\n\ ._368:\n\ @@ -1641,13 +1641,13 @@ void debug_sub_803107C(void) add r1, r1, #0x1\n\ cmp r1, #0x1f\n\ ble ._368 @cond_branch\n\ - ldr r4, ._369 + 16\n\ + ldr r4, ._369 + 16 @ gDisplayedStringBattle\n\ add r0, r4, #0\n\ add r1, r7, #0\n\ mov r2, #0x2\n\ mov r3, #0x2\n\ bl ConvertIntToDecimalStringN\n\ - ldr r0, ._369 + 20\n\ + ldr r0, ._369 + 20 @ gUnknown_03004210\n\ mov r2, #0x95\n\ lsl r2, r2, #0x1\n\ mov r1, #0x39\n\ @@ -1655,12 +1655,12 @@ void debug_sub_803107C(void) add r1, r4, #0\n\ mov r3, #0xe\n\ bl Text_InitWindowAndPrintText\n\ - ldr r1, ._369 + 28\n\ - ldr r0, ._369 + 8\n\ + ldr r1, ._369 + 28 @ gBattleBankFunc\n\ + ldr r0, ._369 + 8 @ gActiveBank\n\ ldrb r0, [r0]\n\ lsl r0, r0, #0x2\n\ add r0, r0, r1\n\ - ldr r1, ._369 + 32\n\ + ldr r1, ._369 + 32 @ debug_sub_8030C24\n\ str r1, [r0]\n\ ._364:\n\ add sp, sp, #0x4\n\ diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 9dd1d7b53..1532a0b2f 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -234,12 +234,12 @@ void debug_sub_81257E0(void) add sp, sp, #0xfffffffc\n\ bl InitLinkBattleRecords\n\ mov r5, #0x0\n\ - ldr r6, ._62\n\ + ldr r6, ._62 @ gUnknown_Debug_4245CC\n\ sub r0, r6, #2\n\ mov r8, r0\n\ - ldr r7, ._62 + 4\n\ + ldr r7, ._62 + 4 @ gLinkPlayers\n\ ._61:\n\ - ldr r0, ._62 + 8\n\ + ldr r0, ._62 + 8 @ gUnknown_Debug_8424620\n\ lsl r3, r5, #0x2\n\ add r3, r3, r0\n\ ldrb r4, [r3]\n\ @@ -251,7 +251,7 @@ void debug_sub_81257E0(void) add r0, r0, r8\n\ ldrh r2, [r0]\n\ ldrb r3, [r3, #0x1]\n\ - ldr r0, ._62 + 12\n\ + ldr r0, ._62 + 12 @ gLinkPlayerMapObjects\n\ lsl r4, r4, #0x2\n\ add r4, r4, r0\n\ ldrb r4, [r4, #0x1]\n\ @@ -261,7 +261,7 @@ void debug_sub_81257E0(void) add r0, r0, r7\n\ ldrb r0, [r0, #0x1a]\n\ str r0, [sp]\n\ - ldr r0, ._62 + 16\n\ + ldr r0, ._62 + 16 @ gSaveBlock1\n\ bl UpdateLinkBattleRecords_\n\ add r5, r5, #0x1\n\ cmp r5, #0x2\n\ diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 2bc536d6c..4690368d8 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -491,7 +491,7 @@ u8 DebugMenu_8076E18() asm( " push {lr}\n" " bl debug_sub_8076B4C\n" - " ldr r0, ._67\n" + " ldr r0, ._67 @ DebugMenu_8076D6C\n" " mov r1, #0xa\n" " bl CreateTask\n" " mov r0, #0x0\n" @@ -515,7 +515,7 @@ void DebugMenu_8076E30() " lsl r0, r3, #0x2\n" " add r0, r0, r3\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._73\n" + " ldr r1, ._73 @ gTasks\n" " add r4, r0, r1\n" " mov r0, #0x0\n" " ldsh r1, [r4, r0]\n" @@ -536,7 +536,7 @@ void DebugMenu_8076E30() " b ._86\n" "._71:\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._78\n" + " ldr r0, ._78 @ Str_839BD5A\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -546,14 +546,14 @@ void DebugMenu_8076E30() "._78:\n" " .word Str_839BD5A\n" "._69:\n" - " ldr r0, ._82\n" + " ldr r0, ._82 @ gMain\n" " ldrh r2, [r0, #0x2e]\n" " and r1, r1, r2\n" " cmp r1, #0\n" " beq ._80 @cond_branch\n" " bl Menu_DisplayDialogueFrame\n" " bl sub_813B79C\n" - " ldr r0, ._82 + 4\n" + " ldr r0, ._82 + 4 @ Str_839BD7D\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -579,7 +579,7 @@ void DebugMenu_8076E30() " bl DoSoftReset\n" " b ._86\n" "._75:\n" - " ldr r0, ._87\n" + " ldr r0, ._87 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -606,7 +606,7 @@ u8 DebugMenu_8076EDC() asm( " push {lr}\n" " bl debug_sub_8076B4C\n" - " ldr r0, ._89\n" + " ldr r0, ._89 @ DebugMenu_8076E30\n" " mov r1, #0xa\n" " bl CreateTask\n" " mov r0, #0x0\n" @@ -631,7 +631,7 @@ void DebugMenu_8076EF4() " mov r2, #0xb\n" " mov r3, #0x11\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._93\n" + " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n" " mov r0, #0x2\n" " mov r1, #0x1\n" " mov r2, #0x8\n" @@ -711,13 +711,13 @@ void DebugMenu_8076F60() " bl DestroyTask\n" " b ._97\n" "._96:\n" - " ldr r3, ._100\n" + " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n" " lsl r2, r2, #0x18\n" " asr r2, r2, #0x15\n" " add r0, r3, #4\n" " add r0, r2, r0\n" " ldrb r4, [r0]\n" - " ldr r0, ._100 + 4\n" + " ldr r0, ._100 + 4 @ gSaveBlock2\n" " mov r1, #0x1\n" " and r1, r1, r4\n" " strb r1, [r0, #0x8]\n" @@ -742,7 +742,7 @@ void DebugMenu_8076F60() "._99:\n" " add r0, r5, #0\n" " bl DestroyTask\n" - " ldr r0, ._102\n" + " ldr r0, ._102 @ debug_sub_8058C00\n" " bl SetMainCallback2\n" "._97:\n" " pop {r4, r5}\n" @@ -762,7 +762,7 @@ void DebugMenu_8076FEC() asm( " push {lr}\n" " bl DebugMenu_8076EF4\n" - " ldr r0, ._104\n" + " ldr r0, ._104 @ DebugMenu_8076F60\n" " mov r1, #0xa\n" " bl CreateTask\n" " pop {r0}\n" @@ -779,11 +779,11 @@ __attribute__((naked)) void DebugMenu_8077004() { asm( - " ldr r2, ._106\n" - " ldr r0, ._106 + 4\n" + " ldr r2, ._106 @ gUnknown_030006C4\n" + " ldr r0, ._106 + 4 @ gUnknown_030006C1\n" " ldrb r0, [r0]\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._106 + 8\n" + " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n" " add r0, r0, r1\n" " str r0, [r2]\n" " bx lr\n" @@ -804,7 +804,7 @@ void DebugMenu_8077020() " push {r4, lr}\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" - " ldr r0, ._109\n" + " ldr r0, ._109 @ gMenuCallback\n" " ldr r0, [r0]\n" " bl _call_via_r0\n" " lsl r0, r0, #0x18\n" @@ -830,11 +830,11 @@ void DebugMenu_8077048() { asm( " push {lr}\n" - " ldr r0, ._111\n" - " ldr r1, ._111 + 4\n" + " ldr r0, ._111 @ gMenuCallback\n" + " ldr r1, ._111 + 4 @ DebugMenu_807706C\n" " str r1, [r0]\n" " bl ScriptContext2_Enable\n" - " ldr r0, ._111 + 8\n" + " ldr r0, ._111 + 8 @ DebugMenu_8077020\n" " mov r1, #0x50\n" " bl CreateTask\n" " pop {r0}\n" @@ -854,14 +854,14 @@ void DebugMenu_807706C() { asm( " push {lr}\n" - " ldr r0, ._113\n" + " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n" " bl InitMenuWindow\n" " bl DebugMenu_8077004\n" " bl DebugMenu_807719C\n" " bl DebugMenu_80771EC\n" " bl DebugMenu_8077238\n" - " ldr r1, ._113 + 4\n" - " ldr r0, ._113 + 8\n" + " ldr r1, ._113 + 4 @ gMenuCallback\n" + " ldr r0, ._113 + 8 @ DebugMenu_807709C\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -881,7 +881,7 @@ void DebugMenu_807709C() { asm( " push {r4, lr}\n" - " ldr r4, ._120\n" + " ldr r4, ._120 @ gMain\n" " ldrh r1, [r4, #0x2e]\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -892,7 +892,7 @@ void DebugMenu_807709C() " mov r0, #0x1\n" " neg r0, r0\n" " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4\n" + " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" " strb r0, [r1]\n" "._115:\n" " ldrh r1, [r4, #0x2e]\n" @@ -904,7 +904,7 @@ void DebugMenu_807709C() " bl PlaySE\n" " mov r0, #0x1\n" " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4\n" + " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" " strb r0, [r1]\n" "._116:\n" " ldrh r1, [r4, #0x2e]\n" @@ -914,7 +914,7 @@ void DebugMenu_807709C() " beq ._117 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._120 + 8\n" + " ldr r1, ._120 + 8 @ gUnknown_030006C1\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" " bne ._118 @cond_branch\n" @@ -933,7 +933,7 @@ void DebugMenu_807709C() " bl DebugMenu_8077004\n" " bl DebugMenu_807719C\n" "._117:\n" - " ldr r0, ._125\n" + " ldr r0, ._125 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x10\n" " and r0, r0, r1\n" @@ -941,7 +941,7 @@ void DebugMenu_807709C() " beq ._122 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._125 + 4\n" + " ldr r1, ._125 + 4 @ gUnknown_030006C1\n" " ldrb r0, [r1]\n" " cmp r0, #0x7\n" " bne ._123 @cond_branch\n" @@ -959,7 +959,7 @@ void DebugMenu_807709C() " bl DebugMenu_8077004\n" " bl DebugMenu_807719C\n" "._122:\n" - " ldr r0, ._129\n" + " ldr r0, ._129 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -967,10 +967,10 @@ void DebugMenu_807709C() " beq ._127 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r1, ._129 + 4\n" - " ldr r0, ._129 + 8\n" + " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n" + " ldr r0, ._129 + 8 @ gUnknown_030006C0\n" " ldrb r2, [r0]\n" - " ldr r0, ._129 + 12\n" + " ldr r0, ._129 + 12 @ gUnknown_030006C4\n" " ldr r0, [r0]\n" " add r0, r0, r2\n" " ldrb r0, [r0]\n" @@ -1018,15 +1018,15 @@ void DebugMenu_807719C() " mov r2, #0xe\n" " mov r3, #0x11\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._133\n" - " ldr r0, ._133 + 4\n" + " ldr r3, ._133 @ gDebug0x839B9BC\n" + " ldr r0, ._133 + 4 @ gUnknown_030006C4\n" " ldr r0, [r0]\n" " str r0, [sp]\n" " mov r0, #0x1\n" " mov r1, #0x1\n" " mov r2, #0x8\n" " bl Menu_PrintItemsReordered\n" - " ldr r4, ._133 + 8\n" + " ldr r4, ._133 + 8 @ gUnknown_030006C0\n" " ldrb r0, [r4]\n" " str r0, [sp]\n" " mov r0, #0xd\n" @@ -1056,10 +1056,10 @@ void DebugMenu_80771EC() { asm( " push {r4, lr}\n" - " ldr r0, ._135\n" - " ldr r1, ._135 + 4\n" + " ldr r0, ._135 @ gStringVar4\n" + " ldr r1, ._135 + 4 @ Str_839BE04\n" " bl StringCopy\n" - " ldr r4, ._135 + 8\n" + " ldr r4, ._135 + 8 @ gSaveBlock1\n" " mov r1, #0x4\n" " ldsb r1, [r4, r1]\n" " mov r2, #0x1\n" @@ -1075,7 +1075,7 @@ void DebugMenu_80771EC() " mov r2, #0x1d\n" " mov r3, #0xf\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._135\n" + " ldr r0, ._135 @ gStringVar4\n" " mov r1, #0x14\n" " mov r2, #0xd\n" " bl Menu_PrintText\n" @@ -1102,18 +1102,18 @@ void DebugMenu_8077238() " mov r5, r8\n" " push {r5, r6, r7}\n" " add sp, sp, #0xffffffe8\n" - " ldr r1, ._139\n" + " ldr r1, ._139 @ Str_839BE07\n" " mov r0, sp\n" " mov r2, #0x2\n" " bl memcpy\n" " add r0, sp, #0x4\n" " mov r9, r0\n" - " ldr r1, ._139 + 4\n" + " ldr r1, ._139 + 4 @ Str_839BE09\n" " mov r2, #0x3\n" " bl memcpy\n" " add r1, sp, #0x8\n" " mov sl, r1\n" - " ldr r1, ._139 + 8\n" + " ldr r1, ._139 + 8 @ Str_839BE0C\n" " mov r0, sl\n" " mov r2, #0x3\n" " bl memcpy\n" @@ -1141,7 +1141,7 @@ void DebugMenu_8077238() " ldrh r0, [r6]\n" " sub r0, r0, #0x7\n" " strh r0, [r6]\n" - " ldr r7, ._139 + 12\n" + " ldr r7, ._139 + 12 @ gStringVar4\n" " add r0, r7, #0\n" " mov r1, sp\n" " bl StringCopy\n" @@ -1202,7 +1202,7 @@ void DebugMenu_8077238() " mov r2, #0x1d\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._139 + 12\n" + " ldr r0, ._139 + 12 @ gStringVar4\n" " mov r1, #0x1d\n" " ldr r2, [sp, #0x14]\n" " sub r1, r1, r2\n" @@ -1318,7 +1318,7 @@ u8 DebugMenu_OpenWatanabe() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._141\n" + " ldr r0, ._141 @ InitWatanabeDebugMenu\n" " bl SetMainCallback2\n" " bl ScriptContext2_Enable\n" " mov r0, #0x1\n" @@ -1338,7 +1338,7 @@ u8 DebugMenu_EndSequenceDemo() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._143\n" + " ldr r0, ._143 @ sub_81439D0\n" " bl SetMainCallback2\n" " bl ScriptContext2_Enable\n" " mov r0, #0x1\n" @@ -1415,7 +1415,7 @@ u8 DebugMenu_8077434() " cmp r0, #0x4\n" " bhi ._165 @cond_branch\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._149\n" + " ldr r1, ._149 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -1430,7 +1430,7 @@ u8 DebugMenu_8077434() " .word ._154\n" " .word ._155\n" "._151:\n" - " ldr r0, ._157\n" + " ldr r0, ._157 @ Str_839BE0F\n" " mov r1, #0x1\n" " mov r2, #0x4\n" " bl GetEnigmaBerryChecksum\n" @@ -1447,7 +1447,7 @@ u8 DebugMenu_8077434() "._157:\n" " .word Str_839BE0F\n" "._152:\n" - " ldr r0, ._160\n" + " ldr r0, ._160 @ Str_839BE12\n" " mov r1, #0x2\n" " mov r2, #0x0\n" " bl GetEnigmaBerryChecksum\n" @@ -1462,7 +1462,7 @@ u8 DebugMenu_8077434() "._160:\n" " .word Str_839BE12\n" "._153:\n" - " ldr r0, ._163\n" + " ldr r0, ._163 @ Str_839BE16\n" " mov r1, #0x3\n" " mov r2, #0x0\n" " bl GetEnigmaBerryChecksum\n" @@ -1476,7 +1476,7 @@ u8 DebugMenu_8077434() "._163:\n" " .word Str_839BE16\n" "._154:\n" - " ldr r0, ._166\n" + " ldr r0, ._166 @ Str_839BE1A\n" " mov r1, #0x4\n" " mov r2, #0x0\n" " bl GetEnigmaBerryChecksum\n" @@ -1496,7 +1496,7 @@ u8 DebugMenu_8077434() "._166:\n" " .word Str_839BE1A\n" "._155:\n" - " ldr r0, ._168\n" + " ldr r0, ._168 @ Str_839BE1E\n" " mov r1, #0x4\n" " mov r2, #0x0\n" " bl GetEnigmaBerryChecksum\n" @@ -1526,7 +1526,7 @@ u8 DebugMenu_807750C() { asm( " push {lr}\n" - " ldr r0, ._170\n" + " ldr r0, ._170 @ gUnknown_Debug_839BE24\n" " bl DebugMenu_8077D78\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -1545,12 +1545,12 @@ u8 DebugMenu_SetRamBerry() { asm( " push {lr}\n" - " ldr r0, ._172\n" + " ldr r0, ._172 @ gUnknown_Debug_839BE24\n" " mov r1, #0xc\n" " mov r2, #0x5\n" " bl DebugMenu_8077D24\n" - " ldr r1, ._172 + 4\n" - " ldr r0, ._172 + 8\n" + " ldr r1, ._172 + 4 @ gMenuCallback\n" + " ldr r0, ._172 + 8 @ DebugMenu_807750C\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -1570,7 +1570,7 @@ u8 DebugMenu_ToggleBGM() { asm( " push {lr}\n" - " ldr r2, ._175\n" + " ldr r2, ._175 @ gDisableMusic\n" " mov r1, #0x0\n" " ldrb r0, [r2]\n" " cmp r0, #0\n" @@ -1611,7 +1611,7 @@ u8 DebugMenu_NationalDex() asm( " push {r4, r5, lr}\n" " mov r4, #0x0\n" - " ldr r5, ._178\n" + " ldr r5, ._178 @ 0x181\n" "._177:\n" " add r4, r4, #0x1\n" " lsl r4, r4, #0x10\n" @@ -1624,7 +1624,7 @@ u8 DebugMenu_NationalDex() " bl GetSetPokedexFlag\n" " cmp r4, r5\n" " bls ._177 @cond_branch\n" - " ldr r1, ._178 + 4\n" + " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n" " mov r0, #0x1\n" " strb r0, [r1]\n" " bl CloseMenu\n" @@ -1664,7 +1664,7 @@ u8 DebugMenu_HoennDex() " bl GetSetPokedexFlag\n" " cmp r5, #0xc9\n" " bls ._180 @cond_branch\n" - " ldr r1, ._181\n" + " ldr r1, ._181 @ gUnknown_03005CE8\n" " mov r0, #0x1\n" " strb r0, [r1]\n" " bl CloseMenu\n" @@ -1847,7 +1847,7 @@ void DebugMenu_80776B4() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " ldr r1, ._183\n" + " ldr r1, ._183 @ Str_839BE4C\n" " mov r0, sp\n" " mov r2, #0x7\n" " bl memcpy\n" @@ -1861,7 +1861,7 @@ void DebugMenu_80776B4() " add r1, r5, #0\n" " mov r2, #0x1d\n" " bl Menu_BlankWindowRect\n" - " ldr r0, ._183 + 4\n" + " ldr r0, ._183 + 4 @ gUnknown_030006C8\n" " ldrb r0, [r0]\n" " ASR r0, r4\n" " mov r1, #0x1\n" @@ -1890,7 +1890,7 @@ void DebugMenu_8077704() asm( " push {lr}\n" " add sp, sp, #0xffffffec\n" - " ldr r1, ._185\n" + " ldr r1, ._185 @ Str_839BE53\n" " mov r0, sp\n" " mov r2, #0x11\n" " bl memcpy\n" @@ -1903,7 +1903,7 @@ void DebugMenu_8077704() " mov r1, #0x15\n" " mov r2, #0x0\n" " bl Menu_PrintText\n" - " ldr r2, ._185 + 4\n" + " ldr r2, ._185 + 4 @ gUnknown_030006C8\n" " mov r0, #0x80\n" " lsl r0, r0, #0x13\n" " ldrh r0, [r0]\n" @@ -1936,7 +1936,7 @@ u8 DebugMenu_8077760() { asm( " push {r4, r5, lr}\n" - " ldr r2, ._190\n" + " ldr r2, ._190 @ gMain\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x40\n" " and r0, r0, r1\n" @@ -1948,7 +1948,7 @@ u8 DebugMenu_8077760() " mov r0, #0x1\n" " neg r0, r0\n" " bl Menu_MoveCursor\n" - " ldr r1, ._190 + 4\n" + " ldr r1, ._190 + 4 @ gUnknown_030006B8\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" " beq ._188 @cond_branch\n" @@ -1973,7 +1973,7 @@ u8 DebugMenu_8077760() " bl PlaySE\n" " mov r0, #0x1\n" " bl Menu_MoveCursor\n" - " ldr r1, ._195\n" + " ldr r1, ._195 @ gUnknown_030006B8\n" " ldrb r0, [r1]\n" " cmp r0, #0x3\n" " beq ._193 @cond_branch\n" @@ -1995,7 +1995,7 @@ u8 DebugMenu_8077760() " beq ._197 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r4, ._201\n" + " ldr r4, ._201 @ gUnknown_030006C8\n" " bl Menu_GetCursorPos\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -2022,9 +2022,9 @@ u8 DebugMenu_8077760() " mov r2, #0x80\n" " lsl r2, r2, #0x13\n" " ldrh r0, [r2]\n" - " ldr r1, ._201 + 4\n" + " ldr r1, ._201 + 4 @ 0xf0ff\n" " and r1, r1, r0\n" - " ldr r0, ._201\n" + " ldr r0, ._201 @ gUnknown_030006C8\n" " ldrb r0, [r0]\n" " lsl r0, r0, #0x8\n" " add r1, r1, r0\n" @@ -2064,8 +2064,8 @@ u8 DebugMenu_SwitchBG() " mov r2, #0x0\n" " mov r3, #0x4\n" " bl InitMenu\n" - " ldr r1, ._203\n" - " ldr r0, ._203 + 4\n" + " ldr r1, ._203 @ gMenuCallback\n" + " ldr r0, ._203 + 4 @ DebugMenu_8077760\n" " str r0, [r1]\n" " mov r0, #0x0\n" " add sp, sp, #0x8\n" @@ -2089,7 +2089,7 @@ void DebugMenu_807786C() " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" - " ldr r1, ._205\n" + " ldr r1, ._205 @ Str_839BE64\n" " mov r0, sp\n" " mov r2, #0x7\n" " bl memcpy\n" @@ -2121,7 +2121,7 @@ void DebugMenu_80778A8() { asm( " push {r4, lr}\n" - " ldr r4, ._211\n" + " ldr r4, ._211 @ gMain\n" " ldrh r1, [r4, #0x2e]\n" " mov r0, #0x30\n" " and r0, r0, r1\n" @@ -2129,7 +2129,7 @@ void DebugMenu_80778A8() " beq ._207 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r2, ._211 + 4\n" + " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n" " ldrb r0, [r2]\n" " mov r1, #0x1\n" " eor r0, r0, r1\n" @@ -2171,11 +2171,11 @@ u8 DebugMenu_ControlEncounter() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._213\n" + " ldr r0, ._213 @ sWildEncountersDisabled\n" " ldrb r0, [r0]\n" " bl DebugMenu_807786C\n" - " ldr r1, ._213 + 4\n" - " ldr r0, ._213 + 8\n" + " ldr r1, ._213 + 4 @ gMenuCallback\n" + " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -2194,8 +2194,8 @@ __attribute__((naked)) u8 DebugMenu_UseHM() { asm( - " ldr r1, ._215\n" - " ldr r0, ._215 + 4\n" + " ldr r1, ._215 @ gMenuCallback\n" + " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n" " str r0, [r1]\n" " mov r0, #0x0\n" " bx lr\n" @@ -2214,7 +2214,7 @@ void DebugMenu_8077934() asm( " push {lr}\n" " mov r1, #0x0\n" - " ldr r3, ._218\n" + " ldr r3, ._218 @ gSaveBlock1\n" " mov r2, #0x1\n" "._217:\n" " add r0, r1, r3\n" @@ -2240,7 +2240,7 @@ void DebugMenu_8077954() asm( " push {lr}\n" " mov r1, #0x0\n" - " ldr r3, ._222\n" + " ldr r3, ._222 @ gSaveBlock1\n" " mov r2, #0x0\n" "._221:\n" " add r0, r1, r3\n" @@ -2266,7 +2266,7 @@ void DebugMenu_8077974() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r1, ._226\n" + " ldr r1, ._226 @ gSaveBlock1\n" " mov r0, #0x4\n" " ldsb r0, [r1, r0]\n" " lsl r0, r0, #0x10\n" @@ -2279,8 +2279,8 @@ void DebugMenu_8077974() " bl IsRematchTrainerIn\n" " cmp r0, #0\n" " beq ._224 @cond_branch\n" - " ldr r0, ._226 + 4\n" - " ldr r1, ._226 + 8\n" + " ldr r0, ._226 + 4 @ gStringVar1\n" + " ldr r1, ._226 + 8 @ Str_839BE8D\n" " bl StringCopy\n" " b ._225\n" "._227:\n" @@ -2290,11 +2290,11 @@ void DebugMenu_8077974() " .word gStringVar1\n" " .word Str_839BE8D\n" "._224:\n" - " ldr r0, ._230\n" - " ldr r1, ._230 + 4\n" + " ldr r0, ._230 @ gStringVar1\n" + " ldr r1, ._230 + 4 @ Str_839BE90\n" " bl StringCopy\n" "._225:\n" - " ldr r1, ._230 + 8\n" + " ldr r1, ._230 + 8 @ gSaveBlock1\n" " mov r0, #0x4\n" " ldsb r0, [r1, r0]\n" " lsl r0, r0, #0x10\n" @@ -2307,8 +2307,8 @@ void DebugMenu_8077974() " bl DoesSomeoneWantRematchIn\n" " cmp r0, #0\n" " beq ._228 @cond_branch\n" - " ldr r0, ._230 + 12\n" - " ldr r1, ._230 + 16\n" + " ldr r0, ._230 + 12 @ gStringVar2\n" + " ldr r1, ._230 + 16 @ Str_839BE8D\n" " bl StringCopy\n" " b ._229\n" "._231:\n" @@ -2320,14 +2320,14 @@ void DebugMenu_8077974() " .word gStringVar2\n" " .word Str_839BE8D\n" "._228:\n" - " ldr r0, ._232\n" - " ldr r1, ._232 + 4\n" + " ldr r0, ._232 @ gStringVar2\n" + " ldr r1, ._232 + 4 @ Str_839BE90\n" " bl StringCopy\n" "._229:\n" - " ldr r0, ._232 + 8\n" + " ldr r0, ._232 + 8 @ Str_839BE6B\n" " bl sub_8071F40\n" - " ldr r1, ._232 + 12\n" - " ldr r0, ._232 + 16\n" + " ldr r1, ._232 + 12 @ gMenuCallback\n" + " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -2349,8 +2349,8 @@ void DebugMenu_8077A20() { asm( " push {lr}\n" - " ldr r0, ._234\n" - " ldr r1, ._234 + 4\n" + " ldr r0, ._234 @ gSaveBlock1\n" + " ldr r1, ._234 + 4 @ 0x978\n" " add r0, r0, r1\n" " mov r1, #0xff\n" " strh r1, [r0]\n" @@ -2372,8 +2372,8 @@ void DebugMenu_8077A40() { asm( " push {lr}\n" - " ldr r0, ._236\n" - " ldr r1, ._236 + 4\n" + " ldr r0, ._236 @ gSaveBlock1\n" + " ldr r1, ._236 + 4 @ 0x978\n" " add r0, r0, r1\n" " mov r1, #0x0\n" " strh r1, [r0]\n" @@ -2395,7 +2395,7 @@ void DebugMenu_8077A60() { asm( " push {lr}\n" - " ldr r0, ._238\n" + " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n" " bl DebugMenu_8077D78\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -2415,12 +2415,12 @@ u8 DebugMenu_RematchTrainers() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._240\n" + " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n" " mov r1, #0xd\n" " mov r2, #0x5\n" " bl DebugMenu_8077D24\n" - " ldr r1, ._240 + 4\n" - " ldr r0, ._240 + 8\n" + " ldr r1, ._240 + 4 @ gMenuCallback\n" + " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -2440,7 +2440,7 @@ void DebugMenu_8077A9C() { asm( " push {lr}\n" - " ldr r1, ._242\n" + " ldr r1, ._242 @ gNumSafariBalls\n" " mov r0, #0x1e\n" " strb r0, [r1]\n" " bl CloseMenu\n" @@ -2460,7 +2460,7 @@ void DebugMenu_8077AB4() { asm( " push {lr}\n" - " ldr r1, ._244\n" + " ldr r1, ._244 @ gNumSafariBalls\n" " mov r0, #0x1\n" " strb r0, [r1]\n" " bl CloseMenu\n" @@ -2480,7 +2480,7 @@ void DebugMenu_8077ACC() { asm( " push {lr}\n" - " ldr r1, ._246\n" + " ldr r1, ._246 @ gSafariZoneStepCounter\n" " mov r2, #0xfa\n" " lsl r2, r2, #0x1\n" " add r0, r2, #0\n" @@ -2502,7 +2502,7 @@ void DebugMenu_8077AE8() { asm( " push {lr}\n" - " ldr r1, ._248\n" + " ldr r1, ._248 @ gSafariZoneStepCounter\n" " mov r0, #0x1\n" " strh r0, [r1]\n" " bl CloseMenu\n" @@ -2526,7 +2526,7 @@ void DebugMenu_8077B00() " bl unref_sub_80C853C\n" " cmp r0, #0\n" " beq ._250 @cond_branch\n" - " ldr r0, ._252\n" + " ldr r0, ._252 @ Str_839BF14\n" " bl sub_8071F40\n" " b ._251\n" "._253:\n" @@ -2534,11 +2534,11 @@ void DebugMenu_8077B00() "._252:\n" " .word Str_839BF14\n" "._250:\n" - " ldr r0, ._254\n" + " ldr r0, ._254 @ Str_839BF1F\n" " bl sub_8071F40\n" "._251:\n" - " ldr r1, ._254 + 4\n" - " ldr r0, ._254 + 8\n" + " ldr r1, ._254 + 4 @ gMenuCallback\n" + " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -2558,7 +2558,7 @@ void DebugMenu_8077B3C() { asm( " push {lr}\n" - " ldr r0, ._256\n" + " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n" " bl DebugMenu_8077D78\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -2581,20 +2581,20 @@ u8 DebugMenu_Safari() " cmp r0, #0\n" " beq ._258 @cond_branch\n" " bl Menu_EraseScreen\n" - " ldr r0, ._260\n" + " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n" " mov r1, #0xe\n" " mov r2, #0x5\n" " bl DebugMenu_8077D24\n" - " ldr r0, ._260 + 4\n" - " ldr r1, ._260 + 8\n" + " ldr r0, ._260 + 4 @ gStringVar1\n" + " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n" " ldrh r1, [r1]\n" " mov r2, #0x1\n" " mov r3, #0x3\n" " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._260 + 12\n" + " ldr r0, ._260 + 12 @ Str_839BF0C\n" " bl sub_8071F40\n" - " ldr r1, ._260 + 16\n" - " ldr r0, ._260 + 20\n" + " ldr r1, ._260 + 16 @ gMenuCallback\n" + " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n" " str r0, [r1]\n" " bl ScriptContext2_Enable\n" " mov r0, #0x0\n" @@ -2704,7 +2704,7 @@ void DebugMenu_8077C00() { asm( " push {lr}\n" - " ldr r0, ._262\n" + " ldr r0, ._262 @ gUnknown_Debug_839BF94\n" " bl DebugMenu_8077D78\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -2724,12 +2724,12 @@ void DebugMenu_8077C14() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._264\n" + " ldr r0, ._264 @ gUnknown_Debug_839BF94\n" " mov r1, #0xa\n" " mov r2, #0x9\n" " bl DebugMenu_8077D24\n" - " ldr r1, ._264 + 4\n" - " ldr r0, ._264 + 8\n" + " ldr r1, ._264 + 4 @ gMenuCallback\n" + " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -2756,8 +2756,8 @@ void DebugMenu_8077C3C() " add sp, sp, #0xfffffffc\n" " mov sl, r0\n" " add r7, r1, #0\n" - " ldr r0, ._271\n" - " ldr r1, ._271 + 4\n" + " ldr r0, ._271 @ gUnknown_030006BC\n" + " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" " str r1, [r0]\n" " mov r1, #0x0\n" " strb r1, [r7]\n" @@ -2768,7 +2768,7 @@ void DebugMenu_8077C3C() " mov r8, r0\n" "._269:\n" " mov r5, #0x0\n" - " ldr r1, ._271\n" + " ldr r1, ._271 @ gUnknown_030006BC\n" " ldr r0, [r1]\n" " ldr r2, [r0, #0x4]\n" " mov r4, #0x0\n" @@ -2858,8 +2858,8 @@ void debug_sub_8077CF4() " lsr r4, r4, #0x18\n" " lsl r5, r5, #0x18\n" " lsr r5, r5, #0x18\n" - " ldr r0, ._273\n" - " ldr r6, ._273 + 4\n" + " ldr r0, ._273 @ BuildDateTime\n" + " ldr r6, ._273 + 4 @ gStringVar4\n" " add r1, r6, #0\n" " bl DebugMenu_8077C3C\n" " add r0, r6, #0\n" @@ -2940,7 +2940,7 @@ void DebugMenu_8077D78() " cmp r4, r0\n" " beq ._276 @cond_branch\n" " bl Menu_EraseScreen\n" - " ldr r0, ._278\n" + " ldr r0, ._278 @ gMenuCallback\n" " lsl r1, r4, #0x3\n" " add r1, r1, r5\n" " ldr r1, [r1, #0x4]\n" @@ -2968,7 +2968,7 @@ void DebugMenu_8077DB4() { asm( " push {lr}\n" - " ldr r0, ._282\n" + " ldr r0, ._282 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -3063,7 +3063,7 @@ void DebugMenu_8077E40() asm( " push {r4, lr}\n" " add r4, r0, #0\n" - " ldr r0, ._297\n" + " ldr r0, ._297 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -3130,14 +3130,14 @@ void DebugMenu_8077EAC() { asm( " push {r4, lr}\n" - " ldr r0, ._303\n" + " ldr r0, ._303 @ DebugMenu_8077F40\n" " mov r1, #0x50\n" " bl CreateTask\n" " add r4, r0, #0\n" " lsl r4, r4, #0x18\n" " lsr r4, r4, #0x18\n" " bl Menu_EraseScreen\n" - " ldr r1, ._303 + 4\n" + " ldr r1, ._303 + 4 @ gTasks\n" " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" " lsl r0, r0, #0x3\n" @@ -3173,7 +3173,7 @@ void DebugMenu_8077EE0() " mov r2, #0x16\n" " mov r3, #0x12\n" " bl Menu_BlankWindowRect\n" - " ldr r5, ._305\n" + " ldr r5, ._305 @ gStringVar1\n" " add r0, r5, #0\n" " add r1, r4, #0\n" " mov r2, #0x1\n" @@ -3218,17 +3218,17 @@ void DebugMenu_8077F40() " lsl r4, r0, #0x2\n" " add r4, r4, r0\n" " lsl r4, r4, #0x3\n" - " ldr r0, ._307\n" + " ldr r0, ._307 @ gTasks\n" " add r4, r4, r0\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._307 + 4\n" + " ldr r0, ._307 + 4 @ gDebug0x839C008\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" " ldrh r0, [r4, #0xa]\n" " ldrh r1, [r4, #0xc]\n" " bl DebugMenu_8077EE0\n" - " ldr r0, ._307 + 8\n" + " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n" " str r0, [r4]\n" " pop {r4}\n" " pop {r0}\n" @@ -3253,23 +3253,23 @@ void DebugMenu_8077F7C() " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r1, r1, #0x3\n" - " ldr r0, ._311\n" + " ldr r0, ._311 @ gTasks\n" " add r4, r1, r0\n" - " ldr r3, ._311 + 4\n" + " ldr r3, ._311 + 4 @ gMain\n" " ldrh r1, [r3, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._309 @cond_branch\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._311 + 8\n" + " ldr r0, ._311 + 8 @ Str_839C014\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" " ldrh r0, [r4, #0xa]\n" " ldrh r1, [r4, #0xc]\n" " bl DebugMenu_8077EE0\n" - " ldr r0, ._311 + 12\n" + " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n" " str r0, [r4]\n" " b ._317\n" "._312:\n" @@ -3284,7 +3284,7 @@ void DebugMenu_8077F7C() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._313 @cond_branch\n" - " ldr r0, ._315\n" + " ldr r0, ._315 @ DebugMenu_807806C\n" " str r0, [r4]\n" " b ._317\n" "._316:\n" @@ -3322,9 +3322,9 @@ void DebugMenu_8077FFC() " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r1, r1, #0x3\n" - " ldr r0, ._321\n" + " ldr r0, ._321 @ gTasks\n" " add r4, r1, r0\n" - " ldr r2, ._321 + 4\n" + " ldr r2, ._321 + 4 @ gMain\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -3351,7 +3351,7 @@ void DebugMenu_8077FFC() " cmp r0, #0\n" " beq ._323 @cond_branch\n" "._320:\n" - " ldr r0, ._325\n" + " ldr r0, ._325 @ DebugMenu_8077F40\n" " str r0, [r4]\n" " b ._327\n" "._326:\n" @@ -3411,7 +3411,7 @@ void DebugMenu_807808C() " mov r4, #0x1\n" "._328:\n" " lsl r1, r4, #0x5\n" - " ldr r0, ._331\n" + " ldr r0, ._331 @ gSaveBlock1\n" " add r5, r1, r0\n" " bl Menu_EraseScreen\n" " mov r0, #0x0\n" @@ -3419,7 +3419,7 @@ void DebugMenu_807808C() " mov r2, #0x13\n" " mov r3, #0x11\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._331 + 4\n" + " ldr r0, ._331 + 4 @ Str_839C01E\n" " mov r1, #0x2\n" " mov r2, #0x2\n" " bl Menu_PrintText\n" @@ -3460,7 +3460,7 @@ void DebugMenu_807808C() " .word gSaveBlock1+0x2ddc\n" " .word Str_839C01E\n" "._329:\n" - " ldr r0, ._335\n" + " ldr r0, ._335 @ Str_839C04D\n" " mov r1, #0xb\n" " mov r2, #0x6\n" " bl Menu_PrintText\n" @@ -3483,7 +3483,7 @@ void DebugMenu_807808C() "._335:\n" " .word Str_839C04D\n" "._333:\n" - " ldr r0, ._337\n" + " ldr r0, ._337 @ Str_839C04D\n" " mov r1, #0xb\n" " mov r2, #0x8\n" " bl Menu_PrintText\n" @@ -3525,7 +3525,7 @@ void DebugMenu_807817C() " push {r4, lr}\n" " lsl r0, r0, #0x18\n" " lsr r4, r0, #0x18\n" - " ldr r0, ._340\n" + " ldr r0, ._340 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -3557,7 +3557,7 @@ void DebugMenu_80781A8() " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r1, r1, #0x3\n" - " ldr r0, ._344\n" + " ldr r0, ._344 @ gTasks\n" " add r5, r1, r0\n" " ldrh r1, [r5, #0x8]\n" " mov r2, #0x8\n" @@ -3572,7 +3572,7 @@ void DebugMenu_80781A8() "._344:\n" " .word gTasks\n" "._342:\n" - " ldr r2, ._348\n" + " ldr r2, ._348 @ gMain\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -3581,7 +3581,7 @@ void DebugMenu_80781A8() " mov r1, #0x8\n" " ldsh r0, [r5, r1]\n" " bl DebugMenu_807808C\n" - " ldr r0, ._348 + 4\n" + " ldr r0, ._348 + 4 @ DebugMenu_807817C\n" " str r0, [r5]\n" " b ._350\n" "._349:\n" @@ -3606,7 +3606,7 @@ void DebugMenu_80781A8() " mov r2, #0x16\n" " mov r3, #0x12\n" " bl Menu_BlankWindowRect\n" - " ldr r4, ._351\n" + " ldr r4, ._351 @ gStringVar1\n" " mov r2, #0x8\n" " ldsh r1, [r5, r2]\n" " add r0, r4, #0\n" @@ -3635,7 +3635,7 @@ u8 DebugMenu_ViewPortraits() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._353\n" + " ldr r0, ._353 @ DebugMenu_80781A8\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -3667,21 +3667,21 @@ u8 DebugMenu_AllBadges() { asm( " push {lr}\n" - " ldr r0, ._355\n" + " ldr r0, ._355 @ 0x807\n" " bl FlagSet\n" - " ldr r0, ._355 + 4\n" + " ldr r0, ._355 + 4 @ 0x808\n" " bl FlagSet\n" - " ldr r0, ._355 + 8\n" + " ldr r0, ._355 + 8 @ 0x809\n" " bl FlagSet\n" - " ldr r0, ._355 + 12\n" + " ldr r0, ._355 + 12 @ 0x80a\n" " bl FlagSet\n" - " ldr r0, ._355 + 16\n" + " ldr r0, ._355 + 16 @ 0x80b\n" " bl FlagSet\n" - " ldr r0, ._355 + 20\n" + " ldr r0, ._355 + 20 @ 0x80c\n" " bl FlagSet\n" - " ldr r0, ._355 + 24\n" + " ldr r0, ._355 + 24 @ 0x80d\n" " bl FlagSet\n" - " ldr r0, ._355 + 28\n" + " ldr r0, ._355 + 28 @ 0x80e\n" " bl FlagSet\n" " bl CloseMenu\n" " mov r0, #0x1\n" @@ -3708,7 +3708,7 @@ u8 DebugMenu_TimeRecords() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._357\n" + " ldr r0, ._357 @ debug_sub_806F9E4\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -3746,11 +3746,11 @@ void DebugMenu_80782EC() " add r1, r0, #0\n" " lsl r1, r1, #0x10\n" " lsr r1, r1, #0x10\n" - " ldr r0, ._359\n" + " ldr r0, ._359 @ gStringVar1\n" " mov r2, #0x0\n" " mov r3, #0x4\n" " bl ConvertIntToHexStringN\n" - " ldr r0, ._359 + 4\n" + " ldr r0, ._359 + 4 @ Str_839C053\n" " bl sub_8071F40\n" " pop {r0}\n" " bx r0\n" @@ -3773,7 +3773,7 @@ void DebugMenu_8078310() " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._364\n" + " ldr r1, ._364 @ gTasks\n" " add r4, r0, r1\n" " mov r1, #0x0\n" " ldsh r0, [r4, r1]\n" @@ -3787,7 +3787,7 @@ void DebugMenu_8078310() "._364:\n" " .word gTasks+0x8\n" "._361:\n" - " ldr r0, ._367\n" + " ldr r0, ._367 @ 0x4024\n" " bl VarGet\n" " strh r0, [r4, #0x2]\n" " ldrh r0, [r4, #0x2]\n" @@ -3801,14 +3801,14 @@ void DebugMenu_8078310() "._367:\n" " .word 0x4024\n" "._362:\n" - " ldr r3, ._371\n" + " ldr r3, ._371 @ gMain\n" " ldrh r1, [r3, #0x2e]\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._369 @cond_branch\n" " mov r0, #0x49\n" " bl PlaySE\n" - " ldr r0, ._371 + 4\n" + " ldr r0, ._371 + 4 @ 0x4024\n" " bl GetVarPointer\n" " ldrh r1, [r4, #0x2]\n" " strh r1, [r0]\n" @@ -3831,7 +3831,7 @@ void DebugMenu_8078310() " b ._375\n" "._373:\n" " add r0, r4, #2\n" - " ldr r2, ._376\n" + " ldr r2, ._376 @ 0xffff\n" " ldrh r3, [r3, #0x30]\n" " mov r1, #0x0\n" " bl DebugMenu_8077DD8\n" @@ -3857,7 +3857,7 @@ u8 DebugMenu_MiragaIslandRND() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._378\n" + " ldr r0, ._378 @ DebugMenu_8078310\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -3877,7 +3877,7 @@ void DebugMenu_80783C8() { asm( " push {r4, lr}\n" - " ldr r0, ._383\n" + " ldr r0, ._383 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x30\n" " and r0, r0, r1\n" @@ -3885,7 +3885,7 @@ void DebugMenu_80783C8() " beq ._382 @cond_branch\n" " mov r0, #0x5\n" " bl PlaySE\n" - " ldr r4, ._383 + 4\n" + " ldr r4, ._383 + 4 @ 0x804\n" " add r0, r4, #0\n" " bl FlagGet\n" " lsl r0, r0, #0x18\n" @@ -3907,7 +3907,7 @@ void DebugMenu_80783C8() " mov r0, #0x1\n" " bl DebugMenu_807786C\n" "._382:\n" - " ldr r0, ._388\n" + " ldr r0, ._388 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -3941,15 +3941,15 @@ u8 DebugMenu_ToggleClearFlag() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._390\n" + " ldr r0, ._390 @ 0x804\n" " bl FlagGet\n" " mov r1, #0x1\n" " eor r0, r0, r1\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " bl DebugMenu_807786C\n" - " ldr r1, ._390 + 4\n" - " ldr r0, ._390 + 8\n" + " ldr r1, ._390 + 4 @ gMenuCallback\n" + " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -3969,7 +3969,7 @@ void DebugMenu_8078464() { asm( " push {r4, lr}\n" - " ldr r4, ._396\n" + " ldr r4, ._396 @ 0x82a\n" " add r0, r4, #0\n" " bl FlagGet\n" " lsl r0, r0, #0x18\n" @@ -4020,7 +4020,7 @@ u8 DebugMenu_OpenWeatherEvents() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._404\n" + " ldr r0, ._404 @ 0x82a\n" " bl FlagGet\n" " mov r1, #0x0\n" " lsl r0, r0, #0x18\n" @@ -4030,8 +4030,8 @@ u8 DebugMenu_OpenWeatherEvents() "._403:\n" " add r0, r1, #0\n" " bl DebugMenu_807786C\n" - " ldr r1, ._404 + 4\n" - " ldr r0, ._404 + 8\n" + " ldr r1, ._404 + 4 @ gMenuCallback\n" + " ldr r0, ._404 + 8 @ DebugMenu_8078464\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -4099,8 +4099,8 @@ u8 DebugMenu_OpenMysteryEvent() "._415:\n" " add r0, r1, #0\n" " bl DebugMenu_807786C\n" - " ldr r1, ._416\n" - " ldr r0, ._416 + 4\n" + " ldr r1, ._416 @ gMenuCallback\n" + " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -4125,13 +4125,13 @@ void DebugMenu_8078550() " lsr r0, r0, #0x18\n" " bl GetGameStat\n" " add r7, r0, #0\n" - " ldr r0, ._420\n" + " ldr r0, ._420 @ gStringVar1\n" " add r1, r6, #0\n" " mov r2, #0x2\n" " mov r3, #0x2\n" " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._420 + 4\n" - " ldr r5, ._420 + 8\n" + " ldr r0, ._420 + 4 @ gStringVar2\n" + " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n" " lsl r4, r6, #0x3\n" " add r1, r5, #4\n" " add r1, r4, r1\n" @@ -4141,8 +4141,8 @@ void DebugMenu_8078550() " ldr r0, [r4]\n" " cmp r0, #0\n" " bne ._418 @cond_branch\n" - " ldr r0, ._420 + 12\n" - " ldr r1, ._420 + 16\n" + " ldr r0, ._420 + 12 @ gStringVar3\n" + " ldr r1, ._420 + 16 @ Str_839C085\n" " bl StringCopy\n" " b ._423\n" "._421:\n" @@ -4156,7 +4156,7 @@ void DebugMenu_8078550() "._418:\n" " cmp r6, #0x1\n" " beq ._422 @cond_branch\n" - " ldr r0, ._424\n" + " ldr r0, ._424 @ gStringVar3\n" " add r1, r7, #0\n" " mov r2, #0x1\n" " mov r3, #0xa\n" @@ -4167,7 +4167,7 @@ void DebugMenu_8078550() "._424:\n" " .word gStringVar3\n" "._422:\n" - " ldr r4, ._426\n" + " ldr r4, ._426 @ gStringVar3\n" " lsr r1, r7, #0x10\n" " add r0, r4, #0\n" " mov r2, #0x1\n" @@ -4192,7 +4192,7 @@ void DebugMenu_8078550() " bl ConvertIntToDecimalStringN\n" "._423:\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._426 + 4\n" + " ldr r0, ._426 + 4 @ Str_839C07C\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -4218,7 +4218,7 @@ void DebugMenu_807860C() " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._432\n" + " ldr r1, ._432 @ gTasks\n" " add r4, r0, r1\n" " mov r1, #0x0\n" " ldsh r0, [r4, r1]\n" @@ -4246,7 +4246,7 @@ void DebugMenu_807860C() " strh r0, [r4]\n" " b ._447\n" "._428:\n" - " ldr r3, ._439\n" + " ldr r3, ._439 @ gMain\n" " ldrh r1, [r3, #0x2e]\n" " and r0, r0, r1\n" " cmp r0, #0\n" @@ -4338,13 +4338,13 @@ void DebugMenu_80786D0() " bl DebugMenu_807860C\n" " cmp r0, #0\n" " beq ._449 @cond_branch\n" - " ldr r1, ._450\n" + " ldr r1, ._450 @ gTasks\n" " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._450 + 4\n" + " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n" " lsl r0, r2, #0x3\n" " add r0, r0, r1\n" " ldr r0, [r0]\n" @@ -4379,13 +4379,13 @@ void DebugMenu_8078714() " bl DebugMenu_807860C\n" " cmp r0, #0\n" " beq ._453 @cond_branch\n" - " ldr r1, ._454\n" + " ldr r1, ._454 @ gTasks\n" " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" " lsl r0, r0, #0x3\n" " add r0, r0, r1\n" " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._454 + 4\n" + " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n" " lsl r0, r2, #0x3\n" " add r0, r0, r1\n" " ldr r0, [r0]\n" @@ -4433,7 +4433,7 @@ void DebugMenu_8078774() { asm( " push {lr}\n" - " ldr r0, ._456\n" + " ldr r0, ._456 @ DebugMenu_80786C0\n" " bl DebugMenu_8078758\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -4452,7 +4452,7 @@ void DebugMenu_8078788() { asm( " push {lr}\n" - " ldr r0, ._458\n" + " ldr r0, ._458 @ DebugMenu_80786D0\n" " bl DebugMenu_8078758\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -4471,7 +4471,7 @@ void DebugMenu_807879C() { asm( " push {lr}\n" - " ldr r0, ._460\n" + " ldr r0, ._460 @ DebugMenu_8078714\n" " bl DebugMenu_8078758\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -4490,7 +4490,7 @@ void DebugMenu_80787B0() { asm( " push {lr}\n" - " ldr r0, ._462\n" + " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n" " bl DebugMenu_8077D78\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -4510,12 +4510,12 @@ u8 DebugMenu_OpenLegendsRecord() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._464\n" + " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n" " mov r1, #0xc\n" " mov r2, #0x3\n" " bl DebugMenu_8077D24\n" - " ldr r1, ._464 + 4\n" - " ldr r0, ._464 + 8\n" + " ldr r1, ._464 + 4 @ gMenuCallback\n" + " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -4541,7 +4541,7 @@ void DebugMenu_80787EC() " mov r0, sp\n" " add r1, r5, #0\n" " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " ldr r4, ._466\n" + " ldr r4, ._466 @ gSpecialVar_Result\n" " mov r0, sp\n" " mov r1, #0x0\n" " ldsh r0, [r0, r1]\n" @@ -4549,7 +4549,7 @@ void DebugMenu_80787EC() " ldsh r1, [r5, r2]\n" " bl MapGridGetMetatileBehaviorAt\n" " strh r0, [r4]\n" - " ldr r0, ._466 + 4\n" + " ldr r0, ._466 + 4 @ gStringVar1\n" " ldrh r1, [r4]\n" " mov r2, #0x2\n" " mov r3, #0x4\n" @@ -4561,7 +4561,7 @@ void DebugMenu_80787EC() " ldsh r1, [r5, r2]\n" " bl MapGridGetMetatileIdAt\n" " strh r0, [r4]\n" - " ldr r0, ._466 + 8\n" + " ldr r0, ._466 + 8 @ gStringVar2\n" " ldrh r1, [r4]\n" " mov r2, #0x2\n" " mov r3, #0x4\n" @@ -4575,13 +4575,13 @@ void DebugMenu_80787EC() " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" " strh r0, [r4]\n" - " ldr r0, ._466 + 12\n" + " ldr r0, ._466 + 12 @ gStringVar3\n" " ldrh r1, [r4]\n" " mov r2, #0x2\n" " mov r3, #0x4\n" " bl ConvertIntToHexStringN\n" - " ldr r0, ._466 + 16\n" - " ldr r1, ._466 + 20\n" + " ldr r0, ._466 + 16 @ gStringVar4\n" + " ldr r1, ._466 + 20 @ Str_839C414\n" " bl StringExpandPlaceholders\n" " add sp, sp, #0x4\n" " pop {r4, r5}\n" @@ -4607,7 +4607,7 @@ void DebugMenu_8078880() " push {r4, r5, lr}\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" - " ldr r1, ._472\n" + " ldr r1, ._472 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -4633,7 +4633,7 @@ void DebugMenu_8078880() " bl Menu_DisplayDialogueFrame\n" " b ._476\n" "._468:\n" - " ldr r0, ._478\n" + " ldr r0, ._478 @ gStringVar4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -4647,7 +4647,7 @@ void DebugMenu_8078880() "._478:\n" " .word gStringVar4\n" "._474:\n" - " ldr r0, ._481\n" + " ldr r0, ._481 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -4675,7 +4675,7 @@ u8 DebugMenu_CellInfo() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._483\n" + " ldr r0, ._483 @ DebugMenu_8078880\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl DebugMenu_80787EC\n" @@ -4713,8 +4713,8 @@ u8 DebugMenu_OpenBerryInfo() " mov r1, #0x1\n" " mov r2, #0x1\n" " bl Menu_PrintText\n" - " ldr r1, ._487\n" - " ldr r0, ._487 + 4\n" + " ldr r1, ._487 @ gMenuCallback\n" + " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n" " str r0, [r1]\n" " mov r0, #0x0\n" "._486:\n" @@ -4736,7 +4736,7 @@ void DebugMenu_8078950() asm( " push {lr}\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._489\n" + " ldr r0, ._489 @ Str_839C42E\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -4758,7 +4758,7 @@ void DebugMenu_8078968() " lsl r0, r0, #0x10\n" " cmp r0, #0\n" " bne ._491 @cond_branch\n" - " ldr r0, ._493\n" + " ldr r0, ._493 @ gStringVar1\n" " mov r1, #0x32\n" " mov r2, #0x2\n" " mov r3, #0x3\n" @@ -4769,13 +4769,13 @@ void DebugMenu_8078968() "._493:\n" " .word gStringVar1\n" "._491:\n" - " ldr r0, ._495\n" + " ldr r0, ._495 @ gStringVar1\n" " mov r1, #0x64\n" " mov r2, #0x2\n" " mov r3, #0x3\n" " bl ConvertIntToDecimalStringN\n" "._492:\n" - " ldr r0, ._495\n" + " ldr r0, ._495 @ gStringVar1\n" " mov r1, #0x4\n" " mov r2, #0x11\n" " bl Menu_PrintText\n" @@ -4797,7 +4797,7 @@ void DebugMenu_80789A4() " add r1, r0, #0\n" " lsl r1, r1, #0x10\n" " lsr r1, r1, #0x10\n" - " ldr r4, ._497\n" + " ldr r4, ._497 @ gStringVar1\n" " add r0, r4, #0\n" " mov r2, #0x2\n" " mov r3, #0x4\n" @@ -4827,12 +4827,12 @@ void DebugMenu_80789CC() " lsl r4, r0, #0x2\n" " add r4, r4, r0\n" " lsl r4, r4, #0x3\n" - " ldr r6, ._499\n" + " ldr r6, ._499 @ gTasks\n" " add r5, r4, r6\n" " mov r0, #0x0\n" " strh r0, [r5]\n" - " ldr r0, ._499 + 4\n" - " ldr r1, ._499 + 8\n" + " ldr r0, ._499 + 4 @ gSaveBlock2\n" + " ldr r1, ._499 + 8 @ 0x55c\n" " add r0, r0, r1\n" " ldrh r0, [r0]\n" " strh r0, [r5, #0x2]\n" @@ -4841,7 +4841,7 @@ void DebugMenu_80789CC() " bl DebugMenu_8078968\n" " sub r6, r6, #0x8\n" " add r4, r4, r6\n" - " ldr r0, ._499 + 12\n" + " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n" " str r0, [r4]\n" " pop {r4, r5, r6}\n" " pop {r0}\n" @@ -4867,9 +4867,9 @@ void DebugMenu_8078A14() " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r4, r1, #0x3\n" - " ldr r5, ._504\n" + " ldr r5, ._504 @ gTasks\n" " add r2, r4, r5\n" - " ldr r0, ._504 + 4\n" + " ldr r0, ._504 + 4 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0xc0\n" " and r0, r0, r1\n" @@ -4896,11 +4896,11 @@ void DebugMenu_8078A14() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._506 @cond_branch\n" - " ldr r1, ._508\n" + " ldr r1, ._508 @ gSaveBlock2\n" " mov r3, #0x0\n" " ldsh r0, [r2, r3]\n" " lsl r0, r0, #0x1\n" - " ldr r3, ._508 + 4\n" + " ldr r3, ._508 + 4 @ 0x55c\n" " add r1, r1, r3\n" " add r0, r0, r1\n" " ldrh r0, [r0]\n" @@ -4910,7 +4910,7 @@ void DebugMenu_8078A14() " add r0, r5, #0\n" " sub r0, r0, #0x8\n" " add r0, r4, r0\n" - " ldr r1, ._508 + 8\n" + " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n" " b ._507\n" "._509:\n" " .align 2, 0\n" @@ -4926,7 +4926,7 @@ void DebugMenu_8078A14() " add r0, r5, #0\n" " sub r0, r0, #0x8\n" " add r0, r4, r0\n" - " ldr r1, ._511\n" + " ldr r1, ._511 @ DebugMenu_8078B38\n" "._507:\n" " str r1, [r0]\n" "._510:\n" @@ -4951,12 +4951,12 @@ void DebugMenu_8078AA4() " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r5, r1, #0x3\n" - " ldr r7, ._515\n" + " ldr r7, ._515 @ gTasks\n" " add r4, r5, r7\n" " add r0, r4, #2\n" " mov r2, #0xfa\n" " lsl r2, r2, #0x3\n" - " ldr r6, ._515 + 4\n" + " ldr r6, ._515 + 4 @ gMain\n" " ldrh r3, [r6, #0x30]\n" " mov r1, #0x0\n" " bl DebugMenu_8077DD8\n" @@ -4976,11 +4976,11 @@ void DebugMenu_8078AA4() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._517 @cond_branch\n" - " ldr r1, ._519\n" + " ldr r1, ._519 @ gSaveBlock2\n" " mov r2, #0x0\n" " ldsh r0, [r4, r2]\n" " lsl r0, r0, #0x1\n" - " ldr r2, ._519 + 4\n" + " ldr r2, ._519 + 4 @ 0x55c\n" " add r1, r1, r2\n" " add r0, r0, r1\n" " ldrh r1, [r4, #0x2]\n" @@ -4990,7 +4990,7 @@ void DebugMenu_8078AA4() " add r0, r7, #0\n" " sub r0, r0, #0x8\n" " add r0, r5, r0\n" - " ldr r1, ._519 + 8\n" + " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n" " b ._518\n" "._520:\n" " .align 2, 0\n" @@ -5009,7 +5009,7 @@ void DebugMenu_8078AA4() " add r0, r7, #0\n" " sub r0, r0, #0x8\n" " add r0, r5, r0\n" - " ldr r1, ._522\n" + " ldr r1, ._522 @ DebugMenu_8078A14\n" "._518:\n" " str r1, [r0]\n" "._521:\n" @@ -5050,7 +5050,7 @@ u8 DebugMenu_BattleTowerStages() " push {lr}\n" " bl CloseMenu\n" " bl ScriptContext2_Enable\n" - " ldr r0, ._524\n" + " ldr r0, ._524 @ DebugMenu_80789CC\n" " mov r1, #0x50\n" " bl CreateTask\n" " mov r0, #0x1\n" @@ -5072,11 +5072,11 @@ void DebugMenu_8078B70() " add r1, r0, #0\n" " lsl r1, r1, #0x10\n" " lsr r1, r1, #0x10\n" - " ldr r0, ._526\n" + " ldr r0, ._526 @ gStringVar1\n" " mov r2, #0x0\n" " mov r3, #0x1\n" " bl ConvertIntToHexStringN\n" - " ldr r0, ._526 + 4\n" + " ldr r0, ._526 + 4 @ Str_839C438\n" " bl sub_8071F40\n" " pop {r0}\n" " bx r0\n" @@ -5095,11 +5095,11 @@ void DebugMenu_8078B94() asm( " push {r4, r5, lr}\n" " mov r3, #0x0\n" - " ldr r1, ._531\n" + " ldr r1, ._531 @ gUnknown_Debug_839C444\n" " ldrb r0, [r1]\n" " cmp r0, #0\n" " beq ._529 @cond_branch\n" - " ldr r5, ._531 + 4\n" + " ldr r5, ._531 + 4 @ gSaveBlock1\n" " add r4, r1, #0\n" "._530:\n" " lsl r0, r3, #0x3\n" @@ -5142,7 +5142,7 @@ void DebugMenu_8078BD4() " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._536\n" + " ldr r1, ._536 @ gTasks\n" " add r4, r0, r1\n" " mov r1, #0x0\n" " ldsh r0, [r4, r1]\n" @@ -5163,7 +5163,7 @@ void DebugMenu_8078BD4() " strh r0, [r4]\n" " b ._545\n" "._534:\n" - " ldr r2, ._541\n" + " ldr r2, ._541 @ gMain\n" " ldrh r1, [r2, #0x2e]\n" " and r0, r0, r1\n" " cmp r0, #0\n" @@ -5214,7 +5214,7 @@ u8 DebugMenu_CheckPKBLCK() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._546\n" + " ldr r0, ._546 @ DebugMenu_8078BD4\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -5235,12 +5235,12 @@ void DebugMenu_8078C80() asm( " push {lr}\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._548\n" + " ldr r0, ._548 @ Str_839C5A4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" - " ldr r1, ._548 + 4\n" - " ldr r0, ._548 + 8\n" + " ldr r1, ._548 + 4 @ gMenuCallback\n" + " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -5260,14 +5260,14 @@ void DebugMenu_8078CA8() { asm( " push {lr}\n" - " ldr r0, ._552\n" + " ldr r0, ._552 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._550 @cond_branch\n" - " ldr r1, ._552 + 4\n" - " ldr r0, ._552 + 8\n" + " ldr r1, ._552 + 4 @ gMenuCallback\n" + " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n" " str r0, [r1]\n" " mov r0, #0x0\n" " b ._555\n" @@ -5299,15 +5299,15 @@ void DebugMenu_8078CE4() { asm( " push {lr}\n" - " ldr r1, ._558\n" + " ldr r1, ._558 @ \n" " mov r2, #0x80\n" " lsl r2, r2, #0xa\n" " mov r0, #0x0\n" " bl DebugMenu_8078E40\n" " cmp r0, #0x1\n" " bne ._556 @cond_branch\n" - " ldr r0, ._558 + 4\n" - " ldr r1, ._558 + 8\n" + " ldr r0, ._558 + 4 @ \n" + " ldr r1, ._558 + 8 @ \n" " bl StringCopy\n" " b ._557\n" "._559:\n" @@ -5317,12 +5317,12 @@ void DebugMenu_8078CE4() " .word gStringVar4\n" " .word Str_839C5CC\n" "._556:\n" - " ldr r0, ._560\n" - " ldr r1, ._560 + 4\n" + " ldr r0, ._560 @ gStringVar4\n" + " ldr r1, ._560 + 4 @ Str_839C5DF\n" " bl StringCopy\n" "._557:\n" - " ldr r1, ._560 + 8\n" - " ldr r0, ._560 + 12\n" + " ldr r1, ._560 + 8 @ gMenuCallback\n" + " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -5343,7 +5343,7 @@ void DebugMenu_8078D30() { asm( " push {r4, r5, r6, lr}\n" - " ldr r5, ._563\n" + " ldr r5, ._563 @ \n" " mov r4, #0x0\n" " mov r6, #0x80\n" " lsl r6, r6, #0x5\n" @@ -5358,11 +5358,11 @@ void DebugMenu_8078D30() " lsr r4, r0, #0x18\n" " cmp r4, #0x1f\n" " bls ._562 @cond_branch\n" - " ldr r0, ._563 + 4\n" - " ldr r1, ._563 + 8\n" + " ldr r0, ._563 + 4 @ \n" + " ldr r1, ._563 + 8 @ \n" " bl StringCopy\n" - " ldr r1, ._563 + 12\n" - " ldr r0, ._563 + 16\n" + " ldr r1, ._563 + 12 @ \n" + " ldr r0, ._563 + 16 @ \n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r4, r5, r6}\n" @@ -5386,12 +5386,12 @@ void DebugMenu_8078D7C() asm( " push {lr}\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._565\n" + " ldr r0, ._565 @ gStringVar4\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" - " ldr r1, ._565 + 4\n" - " ldr r0, ._565 + 8\n" + " ldr r1, ._565 + 4 @ gMenuCallback\n" + " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -5411,7 +5411,7 @@ void DebugMenu_8078DA4() { asm( " push {lr}\n" - " ldr r0, ._569\n" + " ldr r0, ._569 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -5439,12 +5439,12 @@ u8 DebugMenu_MeTooBackupMan() asm( " push {lr}\n" " bl Menu_EraseScreen\n" - " ldr r0, ._571\n" + " ldr r0, ._571 @ gUnknown_Debug_839C594\n" " mov r1, #0xc\n" " mov r2, #0x2\n" " bl DebugMenu_8077D24\n" - " ldr r1, ._571 + 4\n" - " ldr r0, ._571 + 8\n" + " ldr r1, ._571 + 4 @ gMenuCallback\n" + " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n" " str r0, [r1]\n" " mov r0, #0x0\n" " pop {r1}\n" @@ -5464,7 +5464,7 @@ void DebugMenu_8078DF0() { asm( " push {lr}\n" - " ldr r0, ._573\n" + " ldr r0, ._573 @ gUnknown_Debug_839C594\n" " bl DebugMenu_8077D78\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" @@ -5487,7 +5487,7 @@ void DebugMenu_8078E04() " add r5, r2, #0\n" " b ._575\n" "._577:\n" - " ldr r0, ._579\n" + " ldr r0, ._579 @ 0xfffff000\n" " add r5, r5, r0\n" " mov r0, #0x80\n" " lsl r0, r0, #0x5\n" @@ -5576,7 +5576,7 @@ void DebugMenu_8078E80() " mov r2, #0x16\n" " mov r3, #0x10\n" " bl Menu_BlankWindowRect\n" - " ldr r1, ._581\n" + " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n" " mov r2, #0x0\n" " ldsh r0, [r4, r2]\n" " lsl r0, r0, #0x3\n" @@ -5602,7 +5602,7 @@ void DebugMenu_8078EB0() asm( " push {r4, r5, lr}\n" " add r5, r0, #0\n" - " ldr r4, ._583\n" + " ldr r4, ._583 @ gStringVar1\n" " mov r0, #0x2\n" " ldsh r1, [r5, r0]\n" " add r0, r4, #0\n" @@ -5662,11 +5662,11 @@ void DebugMenu_8078F1C() " lsl r4, r0, #0x2\n" " add r4, r4, r0\n" " lsl r4, r4, #0x3\n" - " ldr r6, ._585\n" + " ldr r6, ._585 @ gTasks\n" " add r5, r4, r6\n" " mov r0, #0x0\n" " strh r0, [r5]\n" - " ldr r1, ._585 + 4\n" + " ldr r1, ._585 + 4 @ gSaveBlock2\n" " ldrh r0, [r1, #0xe]\n" " strh r0, [r5, #0x2]\n" " ldrb r0, [r1, #0x10]\n" @@ -5680,7 +5680,7 @@ void DebugMenu_8078F1C() " bl DebugMenu_8078E80\n" " sub r6, r6, #0x8\n" " add r4, r4, r6\n" - " ldr r0, ._585 + 8\n" + " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n" " str r0, [r4]\n" " pop {r4, r5, r6}\n" " pop {r0}\n" @@ -5705,15 +5705,15 @@ void DebugMenu_8078F68() " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r5, r1, #0x3\n" - " ldr r6, ._589\n" + " ldr r6, ._589 @ gTasks\n" " add r4, r5, r6\n" - " ldr r3, ._589 + 4\n" + " ldr r3, ._589 + 4 @ gMain\n" " ldrh r1, [r3, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._587 @cond_branch\n" - " ldr r1, ._589 + 8\n" + " ldr r1, ._589 + 8 @ gSaveBlock2\n" " ldrh r0, [r4, #0x2]\n" " strh r0, [r1, #0xe]\n" " ldrh r0, [r4, #0x4]\n" @@ -5738,7 +5738,7 @@ void DebugMenu_8078F68() " add r0, r6, #0\n" " sub r0, r0, #0x8\n" " add r0, r5, r0\n" - " ldr r1, ._593\n" + " ldr r1, ._593 @ DebugMenu_8079020\n" " str r1, [r0]\n" " b ._601\n" "._594:\n" @@ -5775,7 +5775,7 @@ void DebugMenu_8078F68() " mov r0, #0x0\n" " ldsh r2, [r4, r0]\n" " lsl r2, r2, #0x3\n" - " ldr r0, ._602\n" + " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n" " add r2, r2, r0\n" " ldrb r0, [r2, #0x5]\n" " lsl r0, r0, #0x1\n" @@ -5825,7 +5825,7 @@ u8 DebugMenu_PTime() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._604\n" + " ldr r0, ._604 @ DebugMenu_8078F1C\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -5847,7 +5847,7 @@ void DebugMenu_8079058() " push {r4, r5, lr}\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" - " ldr r1, ._610\n" + " ldr r1, ._610 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5870,7 +5870,7 @@ void DebugMenu_8079058() " beq ._612 @cond_branch\n" " b ._620\n" "._608:\n" - " ldr r0, ._615\n" + " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n" " str r1, [r0]\n" " bl Menu_DisplayDialogueFrame\n" " b ._614\n" @@ -5879,7 +5879,7 @@ void DebugMenu_8079058() "._615:\n" " .word gUnknown_Debug_03004BD0\n" "._606:\n" - " ldr r0, ._618\n" + " ldr r0, ._618 @ gDebug0x839C60C\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -5906,7 +5906,7 @@ void DebugMenu_8079058() " beq ._620 @cond_branch\n" " cmp r1, #0\n" " bne ._621 @cond_branch\n" - " ldr r1, ._623\n" + " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n" " mov r0, #0x1\n" " b ._622\n" "._624:\n" @@ -5914,7 +5914,7 @@ void DebugMenu_8079058() "._623:\n" " .word gUnknown_Debug_03004BD0\n" "._621:\n" - " ldr r1, ._625\n" + " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n" " mov r0, #0x0\n" "._622:\n" " str r0, [r1]\n" @@ -5940,7 +5940,7 @@ u8 DebugMenu_OpenMurakawa() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._627\n" + " ldr r0, ._627 @ DebugMenu_8079058\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -5962,7 +5962,7 @@ void DebugMenu_8079110() " push {r4, r5, lr}\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" - " ldr r1, ._633\n" + " ldr r1, ._633 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -5988,7 +5988,7 @@ void DebugMenu_8079110() " bl Menu_DisplayDialogueFrame\n" " b ._637\n" "._629:\n" - " ldr r0, ._639\n" + " ldr r0, ._639 @ Str_839C61A\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl MenuPrintMessage\n" @@ -6006,7 +6006,7 @@ void DebugMenu_8079110() " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " beq ._642 @cond_branch\n" - " ldr r0, ._643\n" + " ldr r0, ._643 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -6034,7 +6034,7 @@ u8 DebugMenu_OpenKiwa() asm( " push {lr}\n" " bl CloseMenu\n" - " ldr r0, ._645\n" + " ldr r0, ._645 @ DebugMenu_8079110\n" " mov r1, #0x50\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c index c656b2203..ff73e638e 100644 --- a/src/engine/cable_club.c +++ b/src/engine/cable_club.c @@ -104,7 +104,7 @@ int debug_sub_808A4D0() asm("\ push {lr}\n\ add r1, r0, #0\n\ - ldr r0, ._3\n\ + ldr r0, ._3 @ sub_8082F68\n\ cmp r1, r0\n\ bne ._1 @cond_branch\n\ mov r0, #0x1\n\ @@ -114,7 +114,7 @@ int debug_sub_808A4D0() ._3:\n\ .word sub_8082F68+1\n\ ._1:\n\ - ldr r0, ._7\n\ + ldr r0, ._7 @ sub_8082FEC\n\ cmp r1, r0\n\ bne ._5 @cond_branch\n\ mov r0, #0x11\n\ @@ -124,7 +124,7 @@ int debug_sub_808A4D0() ._7:\n\ .word sub_8082FEC+1\n\ ._5:\n\ - ldr r0, ._11\n\ + ldr r0, ._11 @ sub_808303C\n\ cmp r1, r0\n\ bne ._9 @cond_branch\n\ mov r0, #0x12\n\ @@ -134,7 +134,7 @@ int debug_sub_808A4D0() ._11:\n\ .word sub_808303C+1\n\ ._9:\n\ - ldr r0, ._15\n\ + ldr r0, ._15 @ sub_8083188\n\ cmp r1, r0\n\ bne ._13 @cond_branch\n\ mov r0, #0x13\n\ @@ -144,7 +144,7 @@ int debug_sub_808A4D0() ._15:\n\ .word sub_8083188+1\n\ ._13:\n\ - ldr r0, ._19\n\ + ldr r0, ._19 @ sub_80830E4\n\ cmp r1, r0\n\ bne ._17 @cond_branch\n\ mov r0, #0x14\n\ @@ -154,7 +154,7 @@ int debug_sub_808A4D0() ._19:\n\ .word sub_80830E4+1\n\ ._17:\n\ - ldr r0, ._23\n\ + ldr r0, ._23 @ sub_80831F8\n\ cmp r1, r0\n\ bne ._21 @cond_branch\n\ mov r0, #0x21\n\ @@ -164,7 +164,7 @@ int debug_sub_808A4D0() ._23:\n\ .word sub_80831F8+1\n\ ._21:\n\ - ldr r0, ._27\n\ + ldr r0, ._27 @ sub_8083314\n\ cmp r1, r0\n\ bne ._25 @cond_branch\n\ mov r0, #0x2\n\ @@ -174,7 +174,7 @@ int debug_sub_808A4D0() ._27:\n\ .word sub_8083314+1\n\ ._25:\n\ - ldr r0, ._31\n\ + ldr r0, ._31 @ sub_80833C4\n\ cmp r1, r0\n\ beq ._29 @cond_branch\n\ mov r0, #0x0\n\ @@ -199,7 +199,7 @@ void debug_sub_808A55C() push {r7}\n\ lsl r0, r0, #0x18\n\ lsr r7, r0, #0x18\n\ - ldr r2, ._37\n\ + ldr r2, ._37 @ gTasks\n\ lsl r0, r7, #0x2\n\ add r0, r0, r7\n\ lsl r0, r0, #0x3\n\ @@ -224,13 +224,13 @@ void debug_sub_808A55C() add r0, r0, #0x1\n\ strh r0, [r4, #0xa]\n\ ._33:\n\ - ldr r0, ._37 + 4\n\ + ldr r0, ._37 + 4 @ gShouldAdvanceLinkState\n\ ldrb r0, [r0]\n\ mov r1, #0x2\n\ mov r2, #0x0\n\ mov r3, #0x2\n\ bl PrintHex\n\ - ldr r0, ._37 + 8\n\ + ldr r0, ._37 + 8 @ gBlockSendBuffer\n\ ldrb r0, [r0]\n\ mov r1, #0x16\n\ mov r2, #0x5\n\ @@ -244,14 +244,14 @@ void debug_sub_808A55C() mov r5, #0xa0\n\ lsl r5, r5, #0x13\n\ ._35:\n\ - ldr r0, ._37 + 12\n\ + ldr r0, ._37 + 12 @ gLinkPlayerPending\n\ add r0, r4, r0\n\ ldrb r0, [r0]\n\ lsr r1, r5, #0x18\n\ mov r2, #0x0\n\ mov r3, #0x1\n\ bl PrintHex\n\ - ldr r1, ._37 + 16\n\ + ldr r1, ._37 + 16 @ gBlockRecvBuffer\n\ lsl r0, r4, #0x8\n\ add r0, r0, r1\n\ ldrh r0, [r0]\n\ @@ -268,13 +268,13 @@ void debug_sub_808A55C() add r4, r4, #0x1\n\ cmp r4, #0x3\n\ ble ._35 @cond_branch\n\ - ldr r4, ._37 + 20\n\ + ldr r4, ._37 + 20 @ gLinkStatus\n\ ldr r0, [r4]\n\ mov r1, #0xf\n\ mov r2, #0x0\n\ mov r3, #0x8\n\ bl PrintHex\n\ - ldr r0, ._37 + 24\n\ + ldr r0, ._37 + 24 @ gLink\n\ ldrb r0, [r0, #0x1]\n\ mov r1, #0x2\n\ mov r2, #0xa\n\ @@ -294,13 +294,13 @@ void debug_sub_808A55C() mov r2, #0xa\n\ mov r3, #0x2\n\ bl PrintHex\n\ - ldr r0, ._37 + 28\n\ + ldr r0, ._37 + 28 @ gReceivedRemoteLinkPlayers\n\ ldrb r0, [r0]\n\ mov r1, #0x2\n\ mov r2, #0xc\n\ mov r3, #0x1\n\ bl PrintHex\n\ - ldr r0, ._37 + 32\n\ + ldr r0, ._37 + 32 @ gSpecialVar_Result\n\ ldrh r0, [r0]\n\ mov r1, #0xb\n\ mov r2, #0x8\n\ @@ -328,7 +328,7 @@ void debug_sub_808A55C() mov r2, #0xa\n\ mov r3, #0x1\n\ bl PrintHex\n\ - ldr r2, ._37\n\ + ldr r2, ._37 @ gTasks\n\ mov r3, r8\n\ add r0, r3, r7\n\ lsl r0, r0, #0x3\n\ @@ -347,7 +347,7 @@ void debug_sub_808A55C() mov r2, #0xc\n\ mov r3, #0x2\n\ bl PrintHex\n\ - ldr r0, ._37 + 36\n\ + ldr r0, ._37 + 36 @ gLinkCallback\n\ ldr r0, [r0]\n\ mov r1, #0x2\n\ mov r2, #0xd\n\ @@ -360,7 +360,7 @@ void debug_sub_808A55C() mov r2, #0x2\n\ mov r3, #0x1\n\ bl PrintHex\n\ - ldr r0, ._37 + 40\n\ + ldr r0, ._37 + 40 @ gLinkPlayers\n\ mov r6, #0x80\n\ lsl r6, r6, #0x12\n\ add r5, r0, #0\n\ @@ -379,7 +379,7 @@ void debug_sub_808A55C() sub r4, r4, #0x1\n\ cmp r4, #0\n\ bge ._36 @cond_branch\n\ - ldr r0, ._37 + 44\n\ + ldr r0, ._37 + 44 @ 0x4000128\n\ ldrh r0, [r0]\n\ mov r1, #0x2\n\ mov r2, #0x6\n\ @@ -430,7 +430,7 @@ static void sub_8082CD4(u8 arg0, u8 arg1) mov r2, #0x1f\n\ mov r3, #0x2\n\ bl InitLinkTestBG_Unused\n\ - ldr r4, ._40\n\ + ldr r4, ._40 @ sub_8082F20\n\ add r0, r4, #0\n\ bl FindTaskIdByFunc\n\ lsl r0, r0, #0x18\n\ @@ -443,14 +443,14 @@ static void sub_8082CD4(u8 arg0, u8 arg1) add r4, r0, #0\n\ lsl r4, r4, #0x18\n\ lsr r4, r4, #0x18\n\ - ldr r5, ._40 + 4\n\ + ldr r5, ._40 + 4 @ gTasks\n\ lsl r0, r4, #0x2\n\ add r0, r0, r4\n\ lsl r0, r0, #0x3\n\ add r0, r0, r5\n\ strh r7, [r0, #0xa]\n\ strh r6, [r0, #0xc]\n\ - ldr r0, ._40 + 8\n\ + ldr r0, ._40 + 8 @ debug_sub_808A55C\n\ mov r1, #0x50\n\ bl CreateTask\n\ lsl r0, r0, #0x18\n\ @@ -1297,7 +1297,7 @@ void debug_sub_808B778() { asm("\ push {r4, lr}\n\ - ldr r4, ._390\n\ + ldr r4, ._390 @ debug_sub_808B7A8\n\ add r0, r4, #0\n\ bl FuncIsActiveTask\n\ lsl r0, r0, #0x18\n\ @@ -1307,7 +1307,7 @@ void debug_sub_808B778() mov r1, #0x50\n\ bl CreateTask\n\ ._389:\n\ - ldr r1, ._390 + 4\n\ + ldr r1, ._390 + 4 @ unk_3004E98\n\ ldr r0, [r1]\n\ add r0, r0, #0x1\n\ str r0, [r1]\n\ @@ -1328,7 +1328,7 @@ void debug_sub_808B7A8() push {lr}\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x18\n\ - ldr r2, ._393\n\ + ldr r2, ._393 @ gTasks\n\ lsl r1, r0, #0x2\n\ add r1, r1, r0\n\ lsl r1, r1, #0x3\n\ @@ -1342,7 +1342,7 @@ void debug_sub_808B7A8() bne ._392 @cond_branch\n\ mov r0, #0x0\n\ strh r0, [r1, #0x8]\n\ - ldr r2, ._393 + 4\n\ + ldr r2, ._393 + 4 @ unk_3004E94\n\ ldrh r0, [r2]\n\ mov r1, #0x1\n\ orr r0, r0, r1\n\ diff --git a/src/engine/link.c b/src/engine/link.c index 8888f22f5..00c084069 100644 --- a/src/engine/link.c +++ b/src/engine/link.c @@ -1050,7 +1050,7 @@ void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) " add r6, r1, #0\n" " add r4, r3, #0\n" " ldr r0, [sp, #0x38]\n" - " ldr r1, ._347\n" + " ldr r1, ._347 @ unk_20238D0\n" " ldr r1, [r1]\n" " cmp r1, r0\n" " bne ._345 @cond_branch\n" @@ -1059,7 +1059,7 @@ void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) " mov r4, #0x8\n" "._342:\n" " mov r3, sp\n" - " ldr r0, ._347 + 4\n" + " ldr r0, ._347 + 4 @ debugTileMap\n" " mov r8, r0\n" " lsl r2, r2, #0x6\n" " mov ip, r2\n" @@ -1087,8 +1087,8 @@ void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0) " sub r3, r0, #4\n" " cmp r4, #0\n" " ble ._345 @cond_branch\n" - " ldr r7, ._347 + 8\n" - " ldr r6, ._347 + 12\n" + " ldr r7, ._347 + 8 @ debugCharacterBase\n" + " ldr r6, ._347 + 12 @ unk_20238C8\n" " add r2, r4, #0\n" "._346:\n" " ldr r1, [r7]\n" diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c index 116b60477..bc14c760d 100644 --- a/src/engine/mystery_event_menu.c +++ b/src/engine/mystery_event_menu.c @@ -350,7 +350,7 @@ void debug_sub_815D04C() " push {r4, r5, r6, lr}\n" " lsl r0, r0, #0x18\n" " lsr r5, r0, #0x18\n" - " ldr r1, ._125\n" + " ldr r1, ._125 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -364,7 +364,7 @@ void debug_sub_815D04C() " mov r2, #0xd\n" " mov r3, #0x7\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r1, ._125 + 4\n" + " ldr r1, ._125 + 4 @ gUnknown_Debug_842E2D0\n" " mov r2, #0xa\n" " ldsh r0, [r4, r2]\n" " lsl r0, r0, #0x3\n" @@ -377,7 +377,7 @@ void debug_sub_815D04C() " add r0, r0, #0x1\n" " strh r0, [r4, #0x8]\n" "._121:\n" - " ldr r2, ._125 + 8\n" + " ldr r2, ._125 + 8 @ gMain\n" " ldrh r1, [r2, #0x2e]\n" " mov r0, #0x20\n" " and r0, r0, r1\n" @@ -389,7 +389,7 @@ void debug_sub_815D04C() " ldsh r0, [r4, r2]\n" " cmp r0, #0\n" " bne ._123 @cond_branch\n" - " ldr r0, ._125 + 12\n" + " ldr r0, ._125 + 12 @ gUnknown_Debug_842E350\n" " ldrb r0, [r0]\n" " sub r0, r0, #0x1\n" " b ._124\n" @@ -404,7 +404,7 @@ void debug_sub_815D04C() " sub r0, r1, #1\n" "._124:\n" " strh r0, [r4, #0xa]\n" - " ldr r0, ._130\n" + " ldr r0, ._130 @ gTasks\n" " lsl r1, r5, #0x2\n" " add r1, r1, r5\n" " lsl r1, r1, #0x3\n" @@ -417,14 +417,14 @@ void debug_sub_815D04C() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._127 @cond_branch\n" - " ldr r1, ._130\n" + " ldr r1, ._130 @ gTasks\n" " lsl r2, r5, #0x2\n" " add r0, r2, r5\n" " lsl r0, r0, #0x3\n" " add r4, r0, r1\n" " mov r0, #0xa\n" " ldsh r3, [r4, r0]\n" - " ldr r0, ._130 + 4\n" + " ldr r0, ._130 + 4 @ gUnknown_Debug_842E350\n" " ldrb r0, [r0]\n" " sub r0, r0, #0x1\n" " cmp r3, r0\n" @@ -452,7 +452,7 @@ void debug_sub_815D04C() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._132 @cond_branch\n" - " ldr r1, ._133\n" + " ldr r1, ._133 @ gTasks\n" " lsl r0, r5, #0x2\n" " add r0, r0, r5\n" " lsl r0, r0, #0x3\n" @@ -460,13 +460,13 @@ void debug_sub_815D04C() " mov r2, #0xa\n" " ldsh r1, [r0, r2]\n" " lsl r1, r1, #0x3\n" - " ldr r0, ._133 + 4\n" + " ldr r0, ._133 + 4 @ gUnknown_Debug_842E2D0\n" " add r0, r0, #0x4\n" " add r1, r1, r0\n" - " ldr r0, ._133 + 8\n" + " ldr r0, ._133 + 8 @ \n" " ldr r1, [r1]\n" " bl _call_via_r1\n" - " ldr r0, ._133 + 12\n" + " ldr r0, ._133 + 12 @ \n" " add r1, r6, r0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" @@ -516,8 +516,8 @@ void debug_sub_815D1D8() asm( " push {r4, lr}\n" " add sp, sp, #0xfffffffc\n" - " ldr r1, ._139\n" - " ldr r2, ._139 + 4\n" + " ldr r1, ._139 @ gMain\n" + " ldr r2, ._139 + 4 @ 0x43c\n" " add r0, r1, r2\n" " ldrb r0, [r0]\n" " add r4, r1, #0\n" @@ -526,7 +526,7 @@ void debug_sub_815D1D8() " b ._196\n" "._137:\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._139 + 8\n" + " ldr r1, ._139 + 8 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -562,8 +562,8 @@ void debug_sub_815D1D8() " mov r2, #0x10\n" " mov r3, #0x0\n" " bl BeginNormalPaletteFade\n" - " ldr r1, ._155\n" - " ldr r0, ._155 + 4\n" + " ldr r1, ._155 @ gMain\n" + " ldr r0, ._155 + 4 @ 0x43c\n" " add r1, r1, r0\n" " b ._189\n" "._156:\n" @@ -572,7 +572,7 @@ void debug_sub_815D1D8() " .word gMain\n" " .word 0x43c\n" "._143:\n" - " ldr r0, ._161\n" + " ldr r0, ._161 @ gPaletteFade\n" " ldrb r1, [r0, #0x7]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" @@ -586,16 +586,16 @@ void debug_sub_815D1D8() " and r0, r0, r1\n" " cmp r0, #0\n" " beq ._159 @cond_branch\n" - " ldr r1, ._161 + 4\n" + " ldr r1, ._161 + 4 @ gUnknown_Debug_30030E0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" " strb r0, [r1]\n" "._159:\n" - " ldr r0, ._161 + 8\n" + " ldr r0, ._161 + 8 @ Str_843DA70\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl MenuPrintMessage\n" - " ldr r2, ._161 + 12\n" + " ldr r2, ._161 + 12 @ 0x43c\n" " add r1, r4, r2\n" " b ._189\n" "._162:\n" @@ -612,14 +612,14 @@ void debug_sub_815D1D8() " bne ._163 @cond_branch\n" " b ._196\n" "._163:\n" - " ldr r1, ._166\n" - " ldr r0, ._166 + 4\n" + " ldr r1, ._166 @ gMain\n" + " ldr r0, ._166 + 4 @ 0x43c\n" " add r1, r1, r0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" " strb r0, [r1]\n" - " ldr r1, ._166 + 8\n" - " ldr r2, ._166 + 12\n" + " ldr r1, ._166 + 8 @ gLinkType\n" + " ldr r2, ._166 + 12 @ 0x5501\n" " add r0, r2, #0\n" " strh r0, [r1]\n" " bl OpenLink\n" @@ -632,18 +632,18 @@ void debug_sub_815D1D8() " .word gLinkType\n" " .word 0x5501\n" "._145:\n" - " ldr r0, ._171\n" + " ldr r0, ._171 @ gReceivedRemoteLinkPlayers\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " bne ._168 @cond_branch\n" " b ._196\n" "._168:\n" - " ldr r1, ._171 + 4\n" + " ldr r1, ._171 + 4 @ 0x43c\n" " add r0, r4, r1\n" " ldrb r1, [r0]\n" " add r1, r1, #0x1\n" " strb r1, [r0]\n" - " ldr r0, ._171 + 8\n" + " ldr r0, ._171 + 8 @ Str_843DA84\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl MenuPrintMessage\n" @@ -661,11 +661,11 @@ void debug_sub_815D1D8() " bne ._173 @cond_branch\n" " b ._196\n" "._173:\n" - " ldr r0, ._176\n" + " ldr r0, ._176 @ debug_sub_815D04C\n" " mov r1, #0xa\n" " bl CreateTask\n" - " ldr r1, ._176 + 4\n" - " ldr r2, ._176 + 8\n" + " ldr r1, ._176 + 4 @ gMain\n" + " ldr r2, ._176 + 8 @ 0x43c\n" " add r1, r1, r2\n" " b ._189\n" "._177:\n" @@ -675,16 +675,16 @@ void debug_sub_815D1D8() " .word gMain\n" " .word 0x43c\n" "._148:\n" - " ldr r0, ._179\n" + " ldr r0, ._179 @ Str_843DA98\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl MenuPrintMessage\n" - " ldr r1, ._179 + 4\n" - " ldr r2, ._179 + 8\n" + " ldr r1, ._179 + 4 @ 0x2004000\n" + " ldr r2, ._179 + 8 @ 0x2004\n" " mov r0, #0x0\n" " bl SendBlock\n" - " ldr r1, ._179 + 12\n" - " ldr r0, ._179 + 16\n" + " ldr r1, ._179 + 12 @ gMain\n" + " ldr r0, ._179 + 16 @ 0x43c\n" " add r1, r1, r0\n" " b ._189\n" "._180:\n" @@ -701,8 +701,8 @@ void debug_sub_815D1D8() " lsl r0, r0, #0x18\n" " cmp r0, #0\n" " beq ._196 @cond_branch\n" - " ldr r1, ._183\n" - " ldr r2, ._183 + 4\n" + " ldr r1, ._183 @ gMain\n" + " ldr r2, ._183 + 4 @ 0x43c\n" " add r1, r1, r2\n" " b ._189\n" "._184:\n" @@ -712,8 +712,8 @@ void debug_sub_815D1D8() " .word 0x43c\n" "._150:\n" " bl sub_800832C\n" - " ldr r1, ._186\n" - " ldr r0, ._186 + 4\n" + " ldr r1, ._186 @ gMain\n" + " ldr r0, ._186 + 4 @ 0x43c\n" " add r1, r1, r0\n" " b ._189\n" "._187:\n" @@ -722,7 +722,7 @@ void debug_sub_815D1D8() " .word gMain\n" " .word 0x43c\n" "._151:\n" - " ldr r0, ._190\n" + " ldr r0, ._190 @ gReceivedRemoteLinkPlayers\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " bne ._196 @cond_branch\n" @@ -731,12 +731,12 @@ void debug_sub_815D1D8() " mov r2, #0x1a\n" " mov r3, #0x12\n" " bl Menu_BlankWindowRect\n" - " ldr r0, ._190 + 4\n" + " ldr r0, ._190 + 4 @ Str_843DAA3\n" " mov r1, #0x4\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" - " ldr r1, ._190 + 8\n" - " ldr r2, ._190 + 12\n" + " ldr r1, ._190 + 8 @ gMain\n" + " ldr r2, ._190 + 12 @ 0x43c\n" " add r1, r1, r2\n" " b ._189\n" "._191:\n" @@ -759,7 +759,7 @@ void debug_sub_815D1D8() " mov r2, #0x0\n" " mov r3, #0x10\n" " bl BeginNormalPaletteFade\n" - " ldr r0, ._194\n" + " ldr r0, ._194 @ 0x43c\n" " add r1, r4, r0\n" "._189:\n" " ldrb r0, [r1]\n" @@ -771,13 +771,13 @@ void debug_sub_815D1D8() "._194:\n" " .word 0x43c\n" "._153:\n" - " ldr r0, ._197\n" + " ldr r0, ._197 @ gPaletteFade\n" " ldrb r1, [r0, #0x7]\n" " mov r0, #0x80\n" " and r0, r0, r1\n" " cmp r0, #0\n" " bne ._196 @cond_branch\n" - " ldr r0, ._197 + 4\n" + " ldr r0, ._197 + 4 @ CB2_InitTitleScreen\n" " bl SetMainCallback2\n" "._196:\n" " bl RunTasks\n" diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 9324ea1c1..8b67f39a5 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -602,7 +602,7 @@ void debug_sub_806F8F8(void) { asm("\ push {lr}\n\ - ldr r0, ._131\n\ + ldr r0, ._131 @ CB2_InitResetRtcScreen\n\ bl SetMainCallback2\n\ pop {r0}\n\ bx r0\n\ @@ -622,7 +622,7 @@ void debug_sub_806F908(u8 a) lsl r0, r5, #0x2\n\ add r0, r0, r5\n\ lsl r0, r0, #0x3\n\ - ldr r2, ._136\n\ + ldr r2, ._136 @ gTasks\n\ add r4, r0, r2\n\ mov r1, #0x0\n\ ldsh r0, [r4, r1]\n\ @@ -636,7 +636,7 @@ void debug_sub_806F908(u8 a) ._136:\n\ .word gTasks+0x8\n\ ._133:\n\ - ldr r0, ._139\n\ + ldr r0, ._139 @ Task_ResetRtc_0\n\ mov r1, #0x50\n\ bl CreateTask\n\ lsl r0, r0, #0x18\n\ @@ -666,7 +666,7 @@ void debug_sub_806F908(u8 a) ldsh r0, [r2, r1]\n\ cmp r0, #0x1\n\ bne ._142 @cond_branch\n\ - ldr r3, ._143\n\ + ldr r3, ._143 @ gLocalTime\n\ mov r1, #0x0\n\ ldsh r0, [r3, r1]\n\ mov r1, #0x2\n\ @@ -700,7 +700,7 @@ void debug_sub_806F99C() asm("\ push {lr}\n\ bl RtcCalcLocalTime\n\ - ldr r0, ._145\n\ + ldr r0, ._145 @ debug_sub_806F908\n\ mov r1, #0x50\n\ bl CreateTask\n\ bl ScriptContext2_Enable\n\ @@ -717,14 +717,14 @@ void debug_sub_806F9B8() { asm("\ push {lr}\n\ - ldr r2, ._147\n\ - ldr r0, ._147 + 4\n\ + ldr r2, ._147 @ gLocalTime\n\ + ldr r0, ._147 + 4 @ gSaveBlock2\n\ add r0, r0, #0xa0\n\ ldr r1, [r0, #0x4]\n\ ldr r0, [r0]\n\ str r0, [r2]\n\ str r1, [r2, #0x4]\n\ - ldr r0, ._147 + 8\n\ + ldr r0, ._147 + 8 @ debug_sub_806F908\n\ mov r1, #0x50\n\ bl CreateTask\n\ bl ScriptContext2_Enable\n\ @@ -752,9 +752,9 @@ void debug_sub_806F9E4() lsl r0, r7, #0x2\n\ add r0, r0, r7\n\ lsl r0, r0, #0x3\n\ - ldr r1, ._153\n\ + ldr r1, ._153 @ gTasks\n\ add r5, r0, r1\n\ - ldr r6, ._153 + 4\n\ + ldr r6, ._153 + 4 @ gStringVar4\n\ mov r1, #0x0\n\ ldsh r0, [r5, r1]\n\ cmp r0, #0x1\n\ @@ -793,19 +793,19 @@ void debug_sub_806F9E4() mov r1, #0x2\n\ mov r2, #0xa\n\ bl Menu_PrintText\n\ - ldr r0, ._158\n\ + ldr r0, ._158 @ gUnknown_Debug_0839AE94\n\ mov r1, #0xc\n\ mov r2, #0xc\n\ bl Menu_PrintText\n\ - ldr r0, ._158 + 4\n\ + ldr r0, ._158 + 4 @ gUnknown_Debug_0839AE99\n\ mov r1, #0x14\n\ mov r2, #0xc\n\ bl Menu_PrintText\n\ - ldr r0, ._158 + 8\n\ + ldr r0, ._158 + 8 @ gUnknown_Debug_0839AEA7\n\ mov r1, #0x1\n\ mov r2, #0xe\n\ bl Menu_PrintText\n\ - ldr r0, ._158 + 12\n\ + ldr r0, ._158 + 12 @ gUnknown_Debug_0839AE9D\n\ mov r1, #0x1\n\ mov r2, #0x10\n\ bl Menu_PrintText\n\ @@ -833,7 +833,7 @@ void debug_sub_806F9E4() mov r0, #0x28\n\ add r0, r0, r6\n\ mov sl, r0\n\ - ldr r4, ._163\n\ + ldr r4, ._163 @ gLocalTime\n\ mov r1, #0x2\n\ ldsb r1, [r4, r1]\n\ mov r2, #0x3\n\ @@ -850,7 +850,7 @@ void debug_sub_806F9E4() mov r2, #0x1\n\ mov r3, #0x4\n\ bl ConvertIntToDecimalStringN\n\ - ldr r0, ._163 + 4\n\ + ldr r0, ._163 + 4 @ gSaveBlock2\n\ ldrb r0, [r0, #0x12]\n\ cmp r0, #0\n\ bne ._160 @cond_branch\n\ @@ -885,7 +885,7 @@ void debug_sub_806F9E4() .word gLocalTime\n\ .word gSaveBlock2\n\ ._161:\n\ - ldr r0, ._166\n\ + ldr r0, ._166 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ diff --git a/src/engine/save_failed_screen.c b/src/engine/save_failed_screen.c index 7902427e0..49cf166d4 100644 --- a/src/engine/save_failed_screen.c +++ b/src/engine/save_failed_screen.c @@ -157,12 +157,12 @@ void CB2_WipeSave() asm( " push {r4, r5, lr}\n" " mov r4, #0x0\n" - " ldr r0, ._20\n" + " ldr r0, ._20 @ gSaveFailedClockInfo\n" " mov r2, #0x1\n" " strh r2, [r0]\n" - " ldr r0, ._20 + 4\n" + " ldr r0, ._20 + 4 @ gUnknown_Debug_03004BD0\n" " ldr r0, [r0]\n" - " ldr r1, ._20 + 8\n" + " ldr r1, ._20 + 8 @ gDamagedSaveSectors\n" " cmp r0, #0\n" " beq ._12 @cond_branch\n" " str r2, [r1]\n" @@ -182,11 +182,11 @@ void CB2_WipeSave() " mov r2, #0x1c\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._20 + 12\n" + " ldr r0, ._20 + 12 @ gSystemText_CheckCompleteSaveAttempt\n" " mov r1, #0x2\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" - " ldr r0, ._20 + 16\n" + " ldr r0, ._20 + 16 @ gSaveFailedType\n" " ldrb r0, [r0]\n" " bl Save_WriteDataInternal\n" " ldr r0, [r5]\n" @@ -197,7 +197,7 @@ void CB2_WipeSave() " mov r2, #0x1c\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._20 + 20\n" + " ldr r0, ._20 + 20 @ gSystemText_SaveFailedBackupCheck\n" " mov r1, #0x2\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" @@ -218,11 +218,11 @@ void CB2_WipeSave() " mov r2, #0x1c\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._20 + 24\n" + " ldr r0, ._20 + 24 @ gSystemText_BackupDamagedGameContinue\n" " mov r1, #0x2\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" - " ldr r0, ._20 + 28\n" + " ldr r0, ._20 + 28 @ CB2_FadeAndReturnToTitleScreen\n" " bl SetMainCallback2\n" " b ._23\n" "._21:\n" @@ -242,11 +242,11 @@ void CB2_WipeSave() " mov r2, #0x1c\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._24\n" + " ldr r0, ._24 @ gGameContinueCallback\n" " ldr r0, [r0]\n" " cmp r0, #0\n" " bne ._22 @cond_branch\n" - " ldr r0, ._24 + 4\n" + " ldr r0, ._24 + 4 @ gSystemText_SaveCompletedGameEnd\n" " mov r1, #0x2\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" @@ -262,11 +262,11 @@ void CB2_WipeSave() " mov r2, #0x1c\n" " mov r3, #0x13\n" " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._27\n" + " ldr r0, ._27 @ gSystemText_BackupDamagedGameContinue\n" " mov r1, #0x2\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" - " ldr r0, ._27 + 4\n" + " ldr r0, ._27 + 4 @ CB2_GameplayCannotBeContinued\n" " bl SetMainCallback2\n" " b ._26\n" "._28:\n" @@ -275,12 +275,12 @@ void CB2_WipeSave() " .word gSystemText_BackupDamagedGameContinue\n" " .word CB2_GameplayCannotBeContinued+1\n" "._22:\n" - " ldr r0, ._29\n" + " ldr r0, ._29 @ gSystemText_SaveCompletedPressA\n" " mov r1, #0x2\n" " mov r2, #0xb\n" " bl Menu_PrintText\n" "._23:\n" - " ldr r0, ._29 + 4\n" + " ldr r0, ._29 + 4 @ CB2_FadeAndReturnToTitleScreen\n" " bl SetMainCallback2\n" "._26:\n" " pop {r4, r5}\n" @@ -420,20 +420,20 @@ bool8 VerifySectorWipe(u16 sector) " push {lr}\n" " lsl r0, r0, #0x10\n" " lsr r0, r0, #0x10\n" - " ldr r2, ._50\n" + " ldr r2, ._50 @ \n" " mov r3, #0x80\n" " lsl r3, r3, #0x5\n" " mov r1, #0x0\n" " bl ReadFlash\n" " mov r0, #0x0\n" - " ldr r1, ._50 + 4\n" + " ldr r1, ._50 + 4 @ \n" "._49:\n" " add r0, r0, #0x1\n" " lsl r0, r0, #0x10\n" " lsr r0, r0, #0x10\n" " cmp r0, r1\n" " bls ._49 @cond_branch\n" - " ldr r0, ._50 + 8\n" + " ldr r0, ._50 + 8 @ \n" " ldrb r0, [r0]\n" " pop {r1}\n" " bx r1\n" diff --git a/src/field/berry.c b/src/field/berry.c index 5c1ecd699..588807755 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1009,7 +1009,7 @@ void debug_sub_80C2B04() " bl sub_80B47D8\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" - " ldr r2, ._1\n" + " ldr r2, ._1 @ gTasks\n" " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r1, r1, #0x3\n" @@ -1038,7 +1038,7 @@ void debug_sub_80C2B30() " bl sub_80B47D8\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x18\n" - " ldr r2, ._3\n" + " ldr r2, ._3 @ gTasks\n" " lsl r1, r0, #0x2\n" " add r1, r1, r0\n" " lsl r1, r1, #0x3\n" @@ -1088,8 +1088,8 @@ void debug_sub_80C2BD0() { asm( " push {r4, r5, r6, r7, lr}\n" - " ldr r3, ._11\n" - " ldr r1, ._11 + 4\n" + " ldr r3, ._11 @ gSaveBlock1\n" + " ldr r1, ._11 + 4 @ 0x316c\n" " add r4, r3, r1\n" " ldr r6, [r4]\n" " add r1, r1, #0x4\n" @@ -1100,7 +1100,7 @@ void debug_sub_80C2BD0() " str r1, [r2]\n" " add r4, r0, #0\n" " mov r2, #0x0\n" - " ldr r5, ._11 + 8\n" + " ldr r5, ._11 + 8 @ 0x52b\n" "._10:\n" " add r0, r4, r1\n" " ldrb r0, [r0]\n" @@ -1108,7 +1108,7 @@ void debug_sub_80C2BD0() " add r1, r1, #0x1\n" " cmp r1, r5\n" " bls ._10 @cond_branch\n" - " ldr r1, ._11 + 4\n" + " ldr r1, ._11 + 4 @ 0x316c\n" " add r0, r3, r1\n" " str r6, [r0]\n" " add r1, r1, #0x4\n" @@ -1145,11 +1145,11 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) " lsl r2, r2, #0x18\n" " lsr r2, r2, #0x18\n" " mov r8, r2\n" - " ldr r4, ._16\n" - " ldr r1, ._16 + 4\n" + " ldr r4, ._16 @ gSaveBlock1\n" + " ldr r1, ._16 + 4 @ 0x3160\n" " add r0, r4, r1\n" " add r2, r0, #0\n" - " ldr r1, ._16 + 8\n" + " ldr r1, ._16 + 8 @ gBerries\n" " ldmia r1!, {r5, r6, r7}\n" " stmia r2!, {r5, r6, r7}\n" " ldmia r1!, {r5, r6, r7}\n" @@ -1158,27 +1158,27 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) " str r1, [r2]\n" " add r1, r3, #0\n" " bl StringCopy\n" - " ldr r0, ._16 + 12\n" + " ldr r0, ._16 + 12 @ 0x361c\n" " add r6, r4, r0\n" - " ldr r1, ._16 + 16\n" + " ldr r1, ._16 + 16 @ gUnknown_Debug_083F7F84\n" " add r0, r6, #0\n" " bl StringCopy\n" - " ldr r1, ._16 + 20\n" + " ldr r1, ._16 + 20 @ 0x3649\n" " add r5, r4, r1\n" - " ldr r1, ._16 + 24\n" + " ldr r1, ._16 + 24 @ gUnknown_Debug_083F7F90\n" " add r0, r5, #0\n" " bl StringCopy\n" - " ldr r2, ._16 + 28\n" + " ldr r2, ._16 + 28 @ 0x316c\n" " add r0, r4, r2\n" " str r6, [r0]\n" - " ldr r6, ._16 + 32\n" + " ldr r6, ._16 + 32 @ 0x3170\n" " add r0, r4, r6\n" " str r5, [r0]\n" " mov r2, #0x0\n" - " ldr r6, ._16 + 36\n" - " ldr r7, ._16 + 40\n" + " ldr r6, ._16 + 36 @ 0x47f\n" + " ldr r7, ._16 + 40 @ 0x317c\n" " add r5, r4, r7\n" - " ldr r3, ._16 + 44\n" + " ldr r3, ._16 + 44 @ gSpriteImage_UnusedCherry\n" "._13:\n" " add r0, r2, r5\n" " add r1, r2, r3\n" @@ -1187,9 +1187,9 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) " add r2, r2, #0x1\n" " cmp r2, r6\n" " ble ._13 @cond_branch\n" - " ldr r0, ._16\n" - " ldr r3, ._16 + 48\n" - " ldr r2, ._16 + 52\n" + " ldr r0, ._16 @ gSaveBlock1\n" + " ldr r3, ._16 + 48 @ gSpritePalette_UnusedCherry\n" + " ldr r2, ._16 + 52 @ 0x35fc\n" " add r1, r0, r2\n" " mov r2, #0xf\n" "._14:\n" @@ -1201,8 +1201,8 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) " cmp r2, #0\n" " bge ._14 @cond_branch\n" " mov r2, #0x0\n" - " ldr r5, ._16 + 56\n" - " ldr r3, ._16 + 60\n" + " ldr r5, ._16 + 56 @ gSaveBlock1\n" + " ldr r3, ._16 + 60 @ gUnknown_Debug_839B6CE\n" "._15:\n" " add r0, r2, r5\n" " add r1, r2, r3\n" @@ -1211,15 +1211,15 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) " add r2, r2, #0x1\n" " cmp r2, #0x11\n" " ble ._15 @cond_branch\n" - " ldr r5, ._16 + 64\n" + " ldr r5, ._16 + 64 @ 0x3688\n" " add r0, r4, r5\n" " mov r6, r9\n" " strb r6, [r0]\n" - " ldr r7, ._16 + 68\n" + " ldr r7, ._16 + 68 @ 0x3689\n" " add r0, r4, r7\n" " mov r1, r8\n" " strb r1, [r0]\n" - " ldr r2, ._16 + 4\n" + " ldr r2, ._16 + 4 @ 0x3160\n" " add r0, r4, r2\n" " bl debug_sub_80C2BD0\n" " add r5, r5, #0x4\n" @@ -1298,17 +1298,17 @@ void debug_sub_80C2D24() " ldr r6, [sp, #0x18]\n" " ldr r4, [sp, #0x1c]\n" " mov r8, r4\n" - " ldr r5, ._18\n" - " ldr r7, ._18 + 4\n" + " ldr r5, ._18 @ gSaveBlock1\n" + " ldr r7, ._18 + 4 @ 0x3175\n" " add r4, r5, r7\n" " strb r0, [r4]\n" - " ldr r4, ._18 + 8\n" + " ldr r4, ._18 + 8 @ 0x3176\n" " add r0, r5, r4\n" " strb r1, [r0]\n" " add r7, r7, #0x2\n" " add r0, r5, r7\n" " strb r2, [r0]\n" - " ldr r1, ._18 + 12\n" + " ldr r1, ._18 + 12 @ 0x3178\n" " add r0, r5, r1\n" " strb r3, [r0]\n" " add r4, r4, #0x3\n" @@ -1321,7 +1321,7 @@ void debug_sub_80C2D24() " sub r4, r4, #0x19\n" " add r0, r5, r4\n" " bl debug_sub_80C2BD0\n" - " ldr r7, ._18 + 16\n" + " ldr r7, ._18 + 16 @ 0x368c\n" " add r5, r5, r7\n" " str r0, [r5]\n" " pop {r3}\n" @@ -1350,21 +1350,21 @@ bool32 IsEnigmaBerryValid() { asm( " push {r4, lr}\n" - " ldr r4, ._24\n" - " ldr r1, ._24 + 4\n" + " ldr r4, ._24 @ gSaveBlock1\n" + " ldr r1, ._24 + 4 @ 0x3174\n" " add r0, r4, r1\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " beq ._22 @cond_branch\n" - " ldr r2, ._24 + 8\n" + " ldr r2, ._24 + 8 @ 0x316a\n" " add r0, r4, r2\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " beq ._22 @cond_branch\n" - " ldr r1, ._24 + 12\n" + " ldr r1, ._24 + 12 @ 0x3160\n" " add r0, r4, r1\n" " bl debug_sub_80C2BD0\n" - " ldr r2, ._24 + 16\n" + " ldr r2, ._24 + 16 @ 0x368c\n" " add r1, r4, r2\n" " ldr r1, [r1]\n" " cmp r0, r1\n" @@ -1810,7 +1810,7 @@ void DebugOpenBerryInfo() asm( " push {r4, r5, r6, r7, lr}\n" " bl GetFieldObjectScriptPointerPlayerFacing\n" - " ldr r1, ._138\n" + " ldr r1, ._138 @ S_BerryTree\n" " cmp r0, r1\n" " beq ._136 @cond_branch\n" " mov r0, #0x0\n" @@ -1820,7 +1820,7 @@ void DebugOpenBerryInfo() "._138:\n" " .word S_BerryTree\n" "._136:\n" - " ldr r0, ._141\n" + " ldr r0, ._141 @ gSelectedMapObject\n" " ldrb r0, [r0]\n" " bl FieldObjectGetBerryTreeId\n" " lsl r0, r0, #0x18\n" @@ -1829,8 +1829,8 @@ void DebugOpenBerryInfo() " bl GetBerryTreeInfo\n" " add r5, r0, #0\n" " mov r2, #0x0\n" - " ldr r7, ._141 + 4\n" - " ldr r4, ._141 + 8\n" + " ldr r7, ._141 + 4 @ 0x1f3\n" + " ldr r4, ._141 + 8 @ gStringVar4\n" " mov r3, #0xff\n" "._140:\n" " add r1, r2, r4\n" @@ -1840,46 +1840,46 @@ void DebugOpenBerryInfo() " add r2, r2, #0x1\n" " cmp r2, r7\n" " ble ._140 @cond_branch\n" - " ldr r0, ._141 + 12\n" + " ldr r0, ._141 + 12 @ gUnknown_Debug_083F7F9D\n" " add r1, r6, #0\n" " mov r2, #0x3\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 16\n" + " ldr r0, ._141 + 16 @ gUnknown_Debug_083F7FA2\n" " ldrb r1, [r5]\n" " mov r2, #0x2\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 20\n" + " ldr r0, ._141 + 20 @ gUnknown_Debug_083F7FA9\n" " ldrb r1, [r5, #0x1]\n" " lsl r1, r1, #0x19\n" " lsr r1, r1, #0x19\n" " mov r2, #0x2\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 24\n" + " ldr r0, ._141 + 24 @ gUnknown_Debug_083F7FB0\n" " ldrh r1, [r5, #0x2]\n" " mov r2, #0x5\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 28\n" + " ldr r0, ._141 + 28 @ gUnknown_Debug_083F7FB7\n" " ldrb r1, [r5, #0x4]\n" " mov r2, #0x2\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 32\n" + " ldr r0, ._141 + 32 @ gUnknown_Debug_083F7FBE\n" " ldrb r1, [r5, #0x5]\n" " lsl r1, r1, #0x1c\n" " lsr r1, r1, #0x1c\n" " mov r2, #0x3\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 36\n" + " ldr r0, ._141 + 36 @ gUnknown_Debug_083F7FC5\n" " ldrb r1, [r5, #0x1]\n" " lsr r1, r1, #0x7\n" " mov r2, #0x1\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 40\n" + " ldr r0, ._141 + 40 @ gUnknown_Debug_083F7FCC\n" " ldrb r1, [r5, #0x5]\n" " lsl r1, r1, #0x1b\n" " lsr r1, r1, #0x1f\n" " mov r2, #0x1\n" " bl debug_sub_80C33FC\n" - " ldr r4, ._141 + 44\n" + " ldr r4, ._141 + 44 @ gUnknown_Debug_083F7FD3\n" " ldrb r1, [r5, #0x5]\n" " lsl r1, r1, #0x1a\n" " lsr r1, r1, #0x1f\n" @@ -1897,7 +1897,7 @@ void DebugOpenBerryInfo() " add r0, r4, #0\n" " mov r2, #0x1\n" " bl debug_sub_80C33FC\n" - " ldr r0, ._141 + 8\n" + " ldr r0, ._141 + 8 @ gStringVar4\n" "._137:\n" " pop {r4, r5, r6, r7}\n" " pop {r1}\n" diff --git a/src/field/choose_party.c b/src/field/choose_party.c index b2d950e35..696f7cf4f 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -536,7 +536,7 @@ void debug_sub_81381B4() " mov r7, r9\n" " mov r6, r8\n" " push {r6, r7}\n" - " ldr r4, ._189\n" + " ldr r4, ._189 @ gUnknown_02023A00\n" " add r0, r4, #0\n" " mov r1, #0x0\n" " mov r2, #0x60\n" @@ -550,7 +550,7 @@ void debug_sub_81381B4() " mov r0, #0x64\n" " add r1, r7, #0\n" " mul r1, r1, r0\n" - " ldr r0, ._189 + 4\n" + " ldr r0, ._189 + 4 @ gPlayerParty\n" " add r5, r1, r0\n" " add r0, r5, #0\n" " mov r1, #0x41\n" diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index c255d3013..13d8ebb5b 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1927,7 +1927,7 @@ void npcs_clear_ids_and_state() asm( " push {r4, r5, lr}\n" " mov r4, #0x0\n" - " ldr r5, ._2\n" + " ldr r5, ._2 @ gMapObjects\n" "._1:\n" " lsl r0, r4, #0x3\n" " add r0, r0, r4\n" @@ -1939,7 +1939,7 @@ void npcs_clear_ids_and_state() " lsr r4, r0, #0x18\n" " cmp r4, #0xf\n" " bls ._1 @cond_branch\n" - " ldr r1, ._2 + 4\n" + " ldr r1, ._2 + 4 @ gUnknown_Debug_03004BC0\n" " mov r0, #0x0\n" " strb r0, [r1]\n" " pop {r4, r5}\n" @@ -2086,7 +2086,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 " lsl r0, r1, #0x3\n" " add r0, r0, r1\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._40\n" + " ldr r1, ._40 @ gMapObjects\n" " add r4, r0, r1\n" " add r0, r4, #0\n" " bl npc_clear_ids_and_state\n" @@ -2154,7 +2154,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 " strb r0, [r4, #0x7]\n" " ldrh r0, [r5, #0xe]\n" " strb r0, [r4, #0x1d]\n" - " ldr r1, ._40 + 4\n" + " ldr r1, ._40 + 4 @ gUnknown_0836DC09\n" " ldrb r0, [r5, #0x9]\n" " add r0, r0, r1\n" " ldrb r1, [r0]\n" @@ -2166,7 +2166,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 " bl FieldObjectSetDirection\n" " add r0, r4, #0\n" " bl FieldObjectHandleDynamicGraphicsId\n" - " ldr r1, ._40 + 8\n" + " ldr r1, ._40 + 8 @ gUnknown_0836DBBC\n" " ldrb r0, [r4, #0x6]\n" " add r0, r0, r1\n" " ldrb r0, [r0]\n" @@ -2200,7 +2200,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 " orr r0, r0, r1\n" " strb r0, [r4, #0x19]\n" "._39:\n" - " ldr r1, ._40 + 12\n" + " ldr r1, ._40 + 12 @ gUnknown_Debug_03004BC0\n" " ldrb r0, [r1]\n" " add r0, r0, #0x1\n" " strb r0, [r1]\n" @@ -2487,7 +2487,7 @@ void RemoveFieldObject(struct MapObject *mapObject) " and r1, r1, r2\n" " strb r1, [r0]\n" " bl RemoveFieldObjectInternal\n" - " ldr r1, ._72\n" + " ldr r1, ._72 @ gUnknown_Debug_03004BC0\n" " ldrb r0, [r1]\n" " sub r0, r0, #0x1\n" " strb r0, [r1]\n" @@ -2577,7 +2577,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * " lsl r4, r0, #0x3\n" " add r0, r4, r0\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._87\n" + " ldr r1, ._87 @ gMapObjects\n" " add r5, r0, r1\n" " ldrb r0, [r5, #0x5]\n" " bl GetFieldObjectGraphicsInfo\n" @@ -2612,7 +2612,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * " orr r0, r0, r1\n" " strb r0, [r5, #0x1]\n" "._90:\n" - " ldr r1, ._93\n" + " ldr r1, ._93 @ 0xffff\n" " add r0, r1, #0\n" " strh r0, [r7, #0x2]\n" " add r0, r7, #0\n" @@ -2624,11 +2624,11 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * " lsr r7, r0, #0x18\n" " cmp r7, #0x40\n" " bne ._91 @cond_branch\n" - " ldr r1, ._93 + 4\n" + " ldr r1, ._93 + 4 @ gUnknown_Debug_03004BC0\n" " ldrb r0, [r1]\n" " sub r0, r0, #0x1\n" " strb r0, [r1]\n" - " ldr r0, ._93 + 8\n" + " ldr r0, ._93 + 8 @ gMapObjects\n" " mov r2, r8\n" " add r1, r4, r2\n" " lsl r1, r1, #0x2\n" @@ -2650,7 +2650,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * " lsl r0, r7, #0x4\n" " add r0, r0, r7\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._96\n" + " ldr r1, ._96 @ gSprites\n" " add r4, r0, r1\n" " mov r1, r9\n" " lsl r0, r1, #0x10\n" @@ -3045,12 +3045,12 @@ void sub_805B710(u16 u161, u16 u162) " lsr r4, r4, #0x10\n" " lsl r5, r5, #0x10\n" " lsr r5, r5, #0x10\n" - " ldr r6, ._153\n" + " ldr r6, ._153 @ gUnknown_Debug_03004BC0\n" " mov r0, #0x0\n" " strb r0, [r6]\n" " bl ClearPlayerAvatarInfo\n" " mov r7, #0x0\n" - " ldr r0, ._153 + 4\n" + " ldr r0, ._153 + 4 @ gMapObjects\n" " mov r8, r0\n" " lsl r4, r4, #0x10\n" " lsl r5, r5, #0x10\n" diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index c382db19f..a7594372d 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -266,11 +266,11 @@ u8 TryDoMetatileBehaviorForcedMovement() { asm( " push {r4, lr}\n" - " ldr r0, ._27\n" + " ldr r0, ._27 @ gUnknown_020297ED\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " beq ._25 @cond_branch\n" - " ldr r0, ._27 + 4\n" + " ldr r0, ._27 + 4 @ gMain\n" " ldrh r1, [r0, #0x2c]\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -285,7 +285,7 @@ u8 TryDoMetatileBehaviorForcedMovement() " .word gUnknown_020297ED\n" " .word gMain\n" "._25:\n" - " ldr r4, ._29\n" + " ldr r4, ._29 @ gUnknown_0830FBA0\n" " bl GetForcedMovementByMetatileBehavior\n" " lsl r0, r0, #0x18\n" " lsr r0, r0, #0x16\n" @@ -494,7 +494,7 @@ void MovePlayerNotOnBike(u8 u81, u16 u161) " add r5, r2, #0\n" " lsl r1, r1, #0x10\n" " lsr r6, r1, #0x10\n" - " ldr r0, ._84\n" + " ldr r0, ._84 @ gUnknown_020297ED\n" " ldrb r0, [r0]\n" " cmp r0, #0\n" " beq ._82 @cond_branch\n" @@ -504,7 +504,7 @@ void MovePlayerNotOnBike(u8 u81, u16 u161) " cmp r0, #0\n" " bne ._83 @cond_branch\n" "._82:\n" - " ldr r4, ._84 + 4\n" + " ldr r4, ._84 + 4 @ gUnknown_0830FBEC\n" " add r0, r5, #0\n" " bl CheckMovementInputNotOnBike\n" " lsl r0, r0, #0x18\n" @@ -1864,7 +1864,7 @@ void debug_sub_805F2B0() " push {lr}\n" " lsl r0, r0, #0x18\n" " lsr r2, r0, #0x18\n" - " ldr r0, ._422\n" + " ldr r0, ._422 @ gMain\n" " ldrh r1, [r0, #0x2c]\n" " mov r0, #0x80\n" " lsl r0, r0, #0x1\n" @@ -1898,8 +1898,8 @@ void debug_sub_805F2DC() " lsr r4, r0, #0x18\n" " cmp r4, #0\n" " bne ._424 @cond_branch\n" - " ldr r2, ._426\n" - " ldr r0, ._426 + 4\n" + " ldr r2, ._426 @ gMapObjects\n" + " ldr r0, ._426 + 4 @ gPlayerAvatar\n" " ldrb r1, [r0, #0x5]\n" " lsl r0, r1, #0x3\n" " add r0, r0, r1\n" @@ -1915,8 +1915,8 @@ void debug_sub_805F2DC() " .word gMapObjects\n" " .word gPlayerAvatar\n" "._424:\n" - " ldr r2, ._431\n" - " ldr r0, ._431 + 4\n" + " ldr r2, ._431 @ gMapObjects\n" + " ldr r0, ._431 + 4 @ gPlayerAvatar\n" " ldrb r1, [r0, #0x5]\n" " lsl r0, r1, #0x3\n" " add r0, r0, r1\n" diff --git a/src/field/field_weather.c b/src/field/field_weather.c index c411bf20b..fbc5431ae 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -1264,14 +1264,14 @@ u8 debug_sub_8085564(void) asm("\ push {lr}\n\ mov r2, #0x0\n\ - ldr r0, ._375\n\ + ldr r0, ._375 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x80\n\ lsl r0, r0, #0x1\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._370 @cond_branch\n\ - ldr r1, ._375 + 4\n\ + ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\ ldrb r0, [r1]\n\ add r0, r0, #0x1\n\ strb r0, [r1]\n\ @@ -1283,14 +1283,14 @@ u8 debug_sub_8085564(void) ._371:\n\ mov r2, #0x1\n\ ._370:\n\ - ldr r0, ._375\n\ + ldr r0, ._375 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x80\n\ lsl r0, r0, #0x2\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._372 @cond_branch\n\ - ldr r1, ._375 + 4\n\ + ldr r1, ._375 + 4 @ gUnknown_Debug_20301FE\n\ ldrb r0, [r1]\n\ cmp r0, #0\n\ beq ._373 @cond_branch\n\ @@ -1314,8 +1314,8 @@ u8 debug_sub_8085564(void) mov r2, #0x1c\n\ mov r3, #0x2\n\ bl Menu_BlankWindowRect\n\ - ldr r1, ._380\n\ - ldr r0, ._380 + 4\n\ + ldr r1, ._380 @ gDebugText_Weather\n\ + ldr r0, ._380 + 4 @ gUnknown_Debug_20301FE\n\ ldrb r0, [r0]\n\ lsl r0, r0, #0x2\n\ add r0, r0, r1\n\ @@ -1324,7 +1324,7 @@ u8 debug_sub_8085564(void) mov r2, #0x1\n\ bl Menu_PrintText\n\ ._377:\n\ - ldr r0, ._380 + 8\n\ + ldr r0, ._380 + 8 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -1339,7 +1339,7 @@ u8 debug_sub_8085564(void) .word gUnknown_Debug_20301FE\n\ .word gMain\n\ ._378:\n\ - ldr r0, ._382\n\ + ldr r0, ._382 @ gUnknown_Debug_20301FE\n\ ldrb r0, [r0]\n\ bl ChangeWeather\n\ bl CloseMenu\n\ @@ -1358,8 +1358,8 @@ u8 debug_sub_808560C(void) { asm("\ push {r4, lr}\n\ - ldr r4, ._384\n\ - ldr r0, ._384 + 4\n\ + ldr r4, ._384 @ gUnknown_Debug_20301FE\n\ + ldr r0, ._384 + 4 @ gWeather\n\ mov r1, #0xda\n\ lsl r1, r1, #0x3\n\ add r0, r0, r1\n\ @@ -1371,7 +1371,7 @@ u8 debug_sub_808560C(void) mov r2, #0x1c\n\ mov r3, #0x2\n\ bl Menu_BlankWindowRect\n\ - ldr r1, ._384 + 8\n\ + ldr r1, ._384 + 8 @ gDebugText_Weather\n\ ldrb r0, [r4]\n\ lsl r0, r0, #0x2\n\ add r0, r0, r1\n\ @@ -1379,8 +1379,8 @@ u8 debug_sub_808560C(void) mov r1, #0x17\n\ mov r2, #0x1\n\ bl Menu_PrintText\n\ - ldr r1, ._384 + 12\n\ - ldr r0, ._384 + 16\n\ + ldr r1, ._384 + 12 @ gMenuCallback\n\ + ldr r0, ._384 + 16 @ debug_sub_8085564\n\ str r0, [r1]\n\ mov r0, #0x0\n\ pop {r4}\n\ diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index 522fb01d6..5d39b87a9 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -86,7 +86,7 @@ void debug_sub_80AFEE4() " lsr r0, r0, #0x18\n" " cmp r0, #0x1\n" " bne ._1 @cond_branch\n" - " ldr r1, ._3\n" + " ldr r1, ._3 @ gLastFieldPokeMenuOpened\n" " mov r0, #0x0\n" " strb r0, [r1]\n" " bl sub_80A2634\n" @@ -96,14 +96,14 @@ void debug_sub_80AFEE4() "._3:\n" " .word gLastFieldPokeMenuOpened\n" "._1:\n" - " ldr r4, ._9\n" + " ldr r4, ._9 @ gUnknown_0203923C\n" " add r1, r4, #2\n" " add r0, r4, #0\n" " bl PlayerGetDestCoords\n" " mov r7, #0x0\n" " mov r8, r4\n" "._12:\n" - " ldr r1, ._9 + 4\n" + " ldr r1, ._9 + 4 @ 0xffff\n" " add r0, r7, r1\n" " mov r2, r8\n" " ldrh r2, [r2, #0x2]\n" @@ -112,7 +112,7 @@ void debug_sub_80AFEE4() " lsl r0, r0, #0x10\n" " asr r5, r0, #0x10\n" "._11:\n" - " ldr r1, ._9 + 4\n" + " ldr r1, ._9 + 4 @ 0xffff\n" " add r0, r6, r1\n" " mov r2, r8\n" " ldrh r2, [r2]\n" @@ -147,7 +147,7 @@ void debug_sub_80AFEE4() " cmp r0, #0x1\n" " bne ._7 @cond_branch\n" "._6:\n" - " ldr r1, ._9 + 8\n" + " ldr r1, ._9 + 8 @ gLastFieldPokeMenuOpened\n" " mov r0, #0x0\n" " strb r0, [r1]\n" " bl sub_80A25E8\n" diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c index d8f70200c..8c0f09bd9 100644 --- a/src/field/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -77,11 +77,11 @@ void debug_sub_8122080(void) { asm("\ push {lr}\n\ - ldr r0, ._4\n\ + ldr r0, ._4 @ gMapHeader\n\ ldrb r0, [r0, #0x15]\n\ cmp r0, #0x1\n\ bne ._2 @cond_branch\n\ - ldr r0, ._4 + 4\n\ + ldr r0, ._4 + 4 @ 0x828\n\ bl FlagGet\n\ lsl r0, r0, #0x18\n\ cmp r0, #0\n\ diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index 3f539fc6e..0e91bb55c 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -251,7 +251,7 @@ void debug_sub_80D93F4() asm("\ push {r4, lr}\n\ bl sub_80BB63C\n\ - ldr r0, ._98\n\ + ldr r0, ._98 @ gSpecialVar_Result\n\ ldrh r0, [r0]\n\ cmp r0, #0x1\n\ beq ._95 @cond_branch\n\ @@ -268,7 +268,7 @@ void debug_sub_80D93F4() ._98:\n\ .word gSpecialVar_Result\n\ ._96:\n\ - ldr r4, ._102\n\ + ldr r4, ._102 @ gUnknown_0203923C\n\ add r1, r4, #2\n\ add r0, r4, #0\n\ bl GetXYCoordsOneStepInFrontOfPlayer\n\ @@ -286,7 +286,7 @@ void debug_sub_80D93F4() cmp r0, #0x1\n\ bne ._100 @cond_branch\n\ bl sub_80C6264\n\ - ldr r1, ._102 + 4\n\ + ldr r1, ._102 + 4 @ gLastFieldPokeMenuOpened\n\ mov r0, #0x0\n\ strb r0, [r1]\n\ bl sub_80C639C\n\ @@ -304,7 +304,7 @@ void debug_sub_80D93F4() cmp r0, #0x1\n\ bne ._104 @cond_branch\n\ bl sub_80C6264\n\ - ldr r1, ._106\n\ + ldr r1, ._106 @ gLastFieldPokeMenuOpened\n\ mov r0, #0x0\n\ strb r0, [r1]\n\ bl sub_80C64A8\n\ @@ -321,7 +321,7 @@ void debug_sub_80D93F4() cmp r0, #0x1\n\ bne ._108 @cond_branch\n\ bl sub_80C6264\n\ - ldr r1, ._110\n\ + ldr r1, ._110 @ gLastFieldPokeMenuOpened\n\ mov r0, #0x0\n\ strb r0, [r1]\n\ bl sub_80C660C\n\ diff --git a/src/field/item_menu.c b/src/field/item_menu.c index cf3c7ca4b..ae1465fbd 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -400,8 +400,8 @@ static bool8 SetupBagMultistep(void) asm("\ push {r4, r5, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._5\n\ - ldr r1, ._5 + 4\n\ + ldr r0, ._5 @ gMain\n\ + ldr r1, ._5 + 4 @ 0x43c\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0x10\n\ @@ -409,7 +409,7 @@ static bool8 SetupBagMultistep(void) b ._66\n\ ._3:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._5 + 8\n\ + ldr r1, ._5 + 8 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -443,8 +443,8 @@ static bool8 SetupBagMultistep(void) b ._61\n\ ._9:\n\ bl ScanlineEffect_Stop\n\ - ldr r1, ._27\n\ - ldr r0, ._27 + 4\n\ + ldr r1, ._27 @ gMain\n\ + ldr r0, ._27 + 4 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._28:\n\ @@ -457,8 +457,8 @@ static bool8 SetupBagMultistep(void) b ._61\n\ ._11:\n\ bl ClearBGTilemapBuffers\n\ - ldr r0, ._31\n\ - ldr r1, ._31 + 4\n\ + ldr r0, ._31 @ \n\ + ldr r1, ._31 + 4 @ \n\ add r0, r0, r1\n\ mov r1, #0x0\n\ strb r1, [r0]\n\ @@ -470,13 +470,13 @@ static bool8 SetupBagMultistep(void) .word 0x1ffff\n\ ._12:\n\ bl ResetPaletteFade\n\ - ldr r2, ._34\n\ + ldr r2, ._34 @ gPaletteFade\n\ ldrb r0, [r2, #0x8]\n\ mov r1, #0x80\n\ orr r0, r0, r1\n\ strb r0, [r2, #0x8]\n\ - ldr r1, ._34 + 4\n\ - ldr r0, ._34 + 8\n\ + ldr r1, ._34 + 4 @ gMain\n\ + ldr r0, ._34 + 8 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._35:\n\ @@ -495,8 +495,8 @@ static bool8 SetupBagMultistep(void) bne ._37 @cond_branch\n\ b ._66\n\ ._37:\n\ - ldr r1, ._40\n\ - ldr r0, ._40 + 4\n\ + ldr r1, ._40 @ gMain\n\ + ldr r0, ._40 + 4 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._41:\n\ @@ -505,7 +505,7 @@ static bool8 SetupBagMultistep(void) .word gMain\n\ .word 0x43c\n\ ._15:\n\ - ldr r0, ._43\n\ + ldr r0, ._43 @ gWindowTemplate_81E6DFC\n\ bl Text_LoadWindowTemplate\n\ b ._61\n\ ._44:\n\ @@ -513,10 +513,10 @@ static bool8 SetupBagMultistep(void) ._43:\n\ .word gWindowTemplate_81E6DFC\n\ ._16:\n\ - ldr r0, ._46\n\ + ldr r0, ._46 @ gWindowTemplate_81E6DFC\n\ bl MultistepInitMenuWindowBegin\n\ - ldr r1, ._46 + 4\n\ - ldr r0, ._46 + 8\n\ + ldr r1, ._46 + 4 @ gMain\n\ + ldr r0, ._46 + 8 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._47:\n\ @@ -563,7 +563,7 @@ static bool8 SetupBagMultistep(void) mov r0, #0x3\n\ mov r1, #0x2\n\ bl SetVerticalScrollIndicatorPriority\n\ - ldr r0, ._53\n\ + ldr r0, ._53 @ sReturnLocation\n\ ldrb r0, [r0]\n\ sub r0, r0, #0x4\n\ lsl r0, r0, #0x18\n\ @@ -577,8 +577,8 @@ static bool8 SetupBagMultistep(void) mov r1, #0x1\n\ bl SetVerticalScrollIndicators\n\ ._51:\n\ - ldr r1, ._53 + 4\n\ - ldr r0, ._53 + 8\n\ + ldr r1, ._53 + 4 @ gMain\n\ + ldr r0, ._53 + 8 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._54:\n\ @@ -588,11 +588,11 @@ static bool8 SetupBagMultistep(void) .word gMain\n\ .word 0x43c\n\ ._19:\n\ - ldr r1, ._56\n\ + ldr r1, ._56 @ gUnknown_0203855A\n\ mov r0, #0x10\n\ strb r0, [r1]\n\ - ldr r4, ._56 + 4\n\ - ldr r5, ._56 + 8\n\ + ldr r4, ._56 + 4 @ gBGTilemapBuffers\n\ + ldr r5, ._56 + 8 @ sCurrentBagPocket\n\ ldrb r1, [r5]\n\ add r1, r1, #0x1\n\ lsl r1, r1, #0x18\n\ @@ -603,7 +603,7 @@ static bool8 SetupBagMultistep(void) add r0, r4, #0\n\ bl DrawPocketIndicatorDots\n\ bl UpdateAllBagPockets\n\ - ldr r4, ._56 + 12\n\ + ldr r4, ._56 + 12 @ gBagPockets\n\ ldr r0, [r4, #0x10]\n\ ldr r1, [r4, #0x14]\n\ bl SortItemSlots\n\ @@ -611,7 +611,7 @@ static bool8 SetupBagMultistep(void) ldr r1, [r4, #0x1c]\n\ bl SortItemSlots\n\ bl sub_80A3D40\n\ - ldr r1, ._56 + 16\n\ + ldr r1, ._56 + 16 @ gCurrentBagPocketItemSlots\n\ mov r0, #0x0\n\ ldsb r0, [r5, r0]\n\ lsl r0, r0, #0x3\n\ @@ -629,12 +629,12 @@ static bool8 SetupBagMultistep(void) .word gBagPockets\n\ .word gCurrentBagPocketItemSlots\n\ ._20:\n\ - ldr r0, ._59\n\ + ldr r0, ._59 @ 0xffff\n\ mov r1, #0x0\n\ mov r2, #0x7\n\ bl sub_80A48E8\n\ - ldr r1, ._59 + 4\n\ - ldr r4, ._59 + 8\n\ + ldr r1, ._59 + 4 @ gBagPocketScrollStates\n\ + ldr r4, ._59 + 8 @ sCurrentBagPocket\n\ mov r0, #0x0\n\ ldsb r0, [r4, r0]\n\ lsl r0, r0, #0x2\n\ @@ -642,7 +642,7 @@ static bool8 SetupBagMultistep(void) ldrb r1, [r0, #0x1]\n\ ldrb r0, [r0]\n\ add r1, r1, r0\n\ - ldr r0, ._59 + 12\n\ + ldr r0, ._59 + 12 @ gCurrentBagPocketItemSlots\n\ ldr r0, [r0]\n\ lsl r1, r1, #0x2\n\ add r1, r1, r0\n\ @@ -650,15 +650,15 @@ static bool8 SetupBagMultistep(void) ldsh r0, [r1, r2]\n\ bl ItemListMenu_InitDescription\n\ bl ItemListMenu_InitMenu\n\ - ldr r1, ._59 + 16\n\ + ldr r1, ._59 + 16 @ gUnknown_0203855B\n\ ldrb r0, [r4]\n\ add r0, r0, #0x1\n\ strb r0, [r1]\n\ - ldr r1, ._59 + 20\n\ + ldr r1, ._59 + 20 @ gUnknown_0203855C\n\ mov r0, #0x0\n\ strb r0, [r1]\n\ - ldr r1, ._59 + 24\n\ - ldr r0, ._59 + 28\n\ + ldr r1, ._59 + 24 @ gMain\n\ + ldr r0, ._59 + 28 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._60:\n\ @@ -679,17 +679,17 @@ static bool8 SetupBagMultistep(void) bl sub_80A3740\n\ b ._61\n\ ._22:\n\ - ldr r3, ._63\n\ + ldr r3, ._63 @ 0x4000208\n\ ldrh r2, [r3]\n\ mov r0, #0x0\n\ strh r0, [r3]\n\ - ldr r4, ._63 + 4\n\ + ldr r4, ._63 + 4 @ 0x4000200\n\ ldrh r0, [r4]\n\ mov r1, #0x1\n\ orr r0, r0, r1\n\ strh r0, [r4]\n\ strh r2, [r3]\n\ - ldr r2, ._63 + 8\n\ + ldr r2, ._63 + 8 @ 0x4000004\n\ ldrh r0, [r2]\n\ mov r1, #0x8\n\ orr r0, r0, r1\n\ @@ -701,13 +701,13 @@ static bool8 SetupBagMultistep(void) mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r2, ._63 + 12\n\ + ldr r2, ._63 + 12 @ gPaletteFade\n\ ldrb r1, [r2, #0x8]\n\ mov r0, #0x7f\n\ and r0, r0, r1\n\ strb r0, [r2, #0x8]\n\ - ldr r1, ._63 + 16\n\ - ldr r0, ._63 + 20\n\ + ldr r1, ._63 + 16 @ gMain\n\ + ldr r0, ._63 + 20 @ 0x43c\n\ add r1, r1, r0\n\ b ._62\n\ ._64:\n\ @@ -724,8 +724,8 @@ static bool8 SetupBagMultistep(void) cmp r0, #0x1\n\ beq ._66 @cond_branch\n\ ._61:\n\ - ldr r1, ._67\n\ - ldr r2, ._67 + 4\n\ + ldr r1, ._67 @ gMain\n\ + ldr r2, ._67 + 4 @ 0x43c\n\ add r1, r1, r2\n\ ._62:\n\ ldrb r0, [r1]\n\ @@ -738,23 +738,23 @@ static bool8 SetupBagMultistep(void) .word gMain\n\ .word 0x43c\n\ ._24:\n\ - ldr r0, ._71\n\ + ldr r0, ._71 @ sub_80A3134\n\ bl SetVBlankCallback\n\ - ldr r0, ._71 + 4\n\ + ldr r0, ._71 + 4 @ sub_80A3118\n\ bl SetMainCallback2\n\ bl sub_80A751C\n\ bl sub_80A7630\n\ bl sub_80A770C\n\ bl sub_80A7828\n\ bl sub_80A78B8\n\ - ldr r0, ._71 + 8\n\ + ldr r0, ._71 + 8 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._69 @cond_branch\n\ - ldr r0, ._71 + 12\n\ + ldr r0, ._71 + 12 @ 0x600f5e0\n\ mov r1, #0x80\n\ lsl r1, r1, #0x8\n\ - ldr r2, ._71 + 16\n\ + ldr r2, ._71 + 16 @ 0x600f800\n\ mov r3, #0x0\n\ bl debug_sub_8008218\n\ ._69:\n\ @@ -1036,7 +1036,7 @@ void debug_sub_80A3714() push {r4, r5, r6, lr}\n\ add sp, sp, #0xfffffff4\n\ mov r5, #0x0\n\ - ldr r2, ._138\n\ + ldr r2, ._138 @ gUnknown_Debug_083EBC68\n\ mov r1, #0x0\n\ ._134:\n\ lsl r0, r5, #0x1\n\ @@ -1059,10 +1059,10 @@ void debug_sub_80A3714() bl ItemId_GetPocket\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x8\n\ - ldr r1, ._138 + 4\n\ + ldr r1, ._138 + 4 @ 0xffff0000\n\ add r0, r0, r1\n\ lsr r0, r0, #0x10\n\ - ldr r1, ._138 + 8\n\ + ldr r1, ._138 + 8 @ gBagPockets\n\ lsl r2, r0, #0x3\n\ add r2, r2, r1\n\ lsl r0, r0, #0x1\n\ @@ -4050,12 +4050,12 @@ static void sub_80A740C(void) bl sub_80A75E4\n\ bl sub_80A7768\n\ bl sub_80A7420\n\ - ldr r0, ._931\n\ + ldr r0, ._931 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._930 @cond_branch\n\ - ldr r0, ._931 + 4\n\ - ldr r1, ._931 + 8\n\ + ldr r0, ._931 + 4 @ gLink\n\ + ldr r1, ._931 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x0\n\ diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index e41ea1628..b42c50513 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -262,7 +262,7 @@ void debug_sub_810B32C() " cmp r0, #0x4\n" " bhi ._37 @cond_branch\n" " lsl r0, r0, #0x2\n" - " ldr r1, ._23\n" + " ldr r1, ._23 @ \n" " add r0, r0, r1\n" " ldr r0, [r0]\n" " mov pc, r0\n" @@ -281,7 +281,7 @@ void debug_sub_810B32C() " b ._37\n" "._26:\n" " mov r2, #0x0\n" - " ldr r3, ._34\n" + " ldr r3, ._34 @ gSaveBlock1\n" "._31:\n" " mov r0, sp\n" " add r1, r0, r2\n" @@ -295,7 +295,7 @@ void debug_sub_810B32C() " bls ._31 @cond_branch\n" " bl SetupHipster\n" " mov r2, #0x0\n" - " ldr r3, ._34\n" + " ldr r3, ._34 @ gSaveBlock1\n" "._32:\n" " add r1, r2, r3\n" " mov r4, sp\n" diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 4108145c1..66e7e2319 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -502,12 +502,12 @@ void CB2_PartyMenuMain(void) add sp, sp, #0xfffffffc\n\ bl AnimateSprites\n\ bl BuildOamBuffer\n\ - ldr r0, ._3\n\ + ldr r0, ._3 @ gPartyMenuType\n\ ldrb r1, [r0]\n\ lsl r0, r1, #0x1\n\ add r0, r0, r1\n\ lsl r0, r0, #0x4\n\ - ldr r1, ._3 + 4\n\ + ldr r1, ._3 + 4 @ PartyMonTextSettings\n\ add r5, r0, r1\n\ mov r6, #0x0\n\ ._1:\n\ @@ -529,12 +529,12 @@ void CB2_PartyMenuMain(void) ble ._1 @cond_branch\n\ bl RunTasks\n\ bl UpdatePaletteFade\n\ - ldr r0, ._3 + 8\n\ + ldr r0, ._3 + 8 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._2 @cond_branch\n\ - ldr r0, ._3 + 12\n\ - ldr r1, ._3 + 16\n\ + ldr r0, ._3 + 12 @ gLink\n\ + ldr r1, ._3 + 16 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x2\n\ @@ -696,8 +696,8 @@ bool8 InitPartyMenu(void) mov r7, r8\n\ push {r7}\n\ add sp, sp, #0xfffffff4\n\ - ldr r0, ._55\n\ - ldr r1, ._55 + 4\n\ + ldr r0, ._55 @ gMain\n\ + ldr r1, ._55 + 4 @ 0x43c\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0x11\n\ @@ -705,7 +705,7 @@ bool8 InitPartyMenu(void) b ._125\n\ ._53:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._55 + 8\n\ + ldr r1, ._55 + 8 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -745,10 +745,10 @@ bool8 InitPartyMenu(void) mov r8, r2\n\ add r2, sp, #0x4\n\ mov r6, #0x0\n\ - ldr r1, ._78\n\ + ldr r1, ._78 @ 0x40000d4\n\ mov r5, #0x80\n\ lsl r5, r5, #0x5\n\ - ldr r7, ._78 + 4\n\ + ldr r7, ._78 + 4 @ 0x81000800\n\ mov r0, #0x81\n\ lsl r0, r0, #0x18\n\ mov ip, r0\n\ @@ -778,7 +778,7 @@ bool8 InitPartyMenu(void) lsl r3, r3, #0x3\n\ mov r4, #0x0\n\ str r4, [sp, #0x8]\n\ - ldr r2, ._78\n\ + ldr r2, ._78 @ 0x40000d4\n\ mov r1, r8\n\ str r1, [r2]\n\ str r0, [r2, #0x4]\n\ @@ -800,13 +800,13 @@ bool8 InitPartyMenu(void) orr r3, r3, r0\n\ str r3, [r2, #0x8]\n\ ldr r0, [r2, #0x8]\n\ - ldr r2, ._78 + 8\n\ + ldr r2, ._78 + 8 @ gPaletteFade\n\ ldrb r0, [r2, #0x8]\n\ mov r1, #0x80\n\ orr r0, r0, r1\n\ strb r0, [r2, #0x8]\n\ - ldr r1, ._78 + 12\n\ - ldr r2, ._78 + 16\n\ + ldr r1, ._78 + 12 @ gMain\n\ + ldr r2, ._78 + 16 @ 0x43c\n\ add r1, r1, r2\n\ b ._122\n\ ._79:\n\ @@ -822,21 +822,21 @@ bool8 InitPartyMenu(void) b ._115\n\ ._60:\n\ bl sub_806B4A8\n\ - ldr r1, ._82\n\ + ldr r1, ._82 @ \n\ mov r2, #0x99\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ mov r2, #0x0\n\ strh r2, [r0]\n\ - ldr r3, ._82 + 4\n\ + ldr r3, ._82 + 4 @ \n\ add r0, r1, r3\n\ strh r2, [r0]\n\ mov r0, #0x9a\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ strh r2, [r1]\n\ - ldr r1, ._82 + 8\n\ - ldr r2, ._82 + 12\n\ + ldr r1, ._82 + 8 @ \n\ + ldr r2, ._82 + 12 @ \n\ add r1, r1, r2\n\ b ._122\n\ ._83:\n\ @@ -850,7 +850,7 @@ bool8 InitPartyMenu(void) bl ResetSpriteData\n\ b ._115\n\ ._62:\n\ - ldr r0, ._88\n\ + ldr r0, ._88 @ \n\ mov r1, #0x96\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -861,8 +861,8 @@ bool8 InitPartyMenu(void) beq ._86 @cond_branch\n\ bl ResetTasks\n\ ._86:\n\ - ldr r1, ._88 + 4\n\ - ldr r2, ._88 + 8\n\ + ldr r1, ._88 + 4 @ \n\ + ldr r2, ._88 + 8 @ \n\ add r1, r1, r2\n\ b ._122\n\ ._89:\n\ @@ -875,7 +875,7 @@ bool8 InitPartyMenu(void) bl FreeAllSpritePalettes\n\ b ._115\n\ ._64:\n\ - ldr r4, ._92\n\ + ldr r4, ._92 @ \n\ mov r1, #0x97\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -892,10 +892,10 @@ bool8 InitPartyMenu(void) ._92:\n\ .word +0x201b000\n\ ._65:\n\ - ldr r0, ._95\n\ + ldr r0, ._95 @ gWindowTemplate_81E6C90\n\ bl Text_LoadWindowTemplate\n\ - ldr r1, ._95 + 4\n\ - ldr r0, ._95 + 8\n\ + ldr r1, ._95 + 4 @ gMain\n\ + ldr r0, ._95 + 8 @ 0x43c\n\ add r1, r1, r0\n\ b ._122\n\ ._96:\n\ @@ -905,15 +905,15 @@ bool8 InitPartyMenu(void) .word gMain\n\ .word 0x43c\n\ ._66:\n\ - ldr r4, ._98\n\ - ldr r1, ._98 + 4\n\ + ldr r4, ._98 @ gUnknown_03004210\n\ + ldr r1, ._98 + 4 @ gWindowTemplate_81E6C90\n\ add r0, r4, #0\n\ bl Text_InitWindowWithTemplate\n\ add r0, r4, #0\n\ mov r1, #0x1\n\ bl MultistepInitWindowTileData\n\ - ldr r1, ._98 + 8\n\ - ldr r2, ._98 + 12\n\ + ldr r1, ._98 + 8 @ gMain\n\ + ldr r2, ._98 + 12 @ 0x43c\n\ add r1, r1, r2\n\ b ._122\n\ ._99:\n\ @@ -929,14 +929,14 @@ bool8 InitPartyMenu(void) bne ._100 @cond_branch\n\ b ._125\n\ ._100:\n\ - ldr r0, ._103\n\ + ldr r0, ._103 @ \n\ mov r3, #0x99\n\ lsl r3, r3, #0x2\n\ add r0, r0, r3\n\ mov r1, #0x1\n\ strh r1, [r0]\n\ - ldr r1, ._103 + 4\n\ - ldr r0, ._103 + 8\n\ + ldr r1, ._103 + 4 @ \n\ + ldr r0, ._103 + 8 @ \n\ add r1, r1, r0\n\ b ._122\n\ ._104:\n\ @@ -946,7 +946,7 @@ bool8 InitPartyMenu(void) .word gMain\n\ .word 0x43c\n\ ._68:\n\ - ldr r0, ._107\n\ + ldr r0, ._107 @ \n\ mov r1, #0x99\n\ lsl r1, r1, #0x2\n\ add r4, r0, r1\n\ @@ -958,8 +958,8 @@ bool8 InitPartyMenu(void) bne ._105 @cond_branch\n\ mov r0, #0x0\n\ strh r0, [r4]\n\ - ldr r1, ._107 + 4\n\ - ldr r2, ._107 + 8\n\ + ldr r1, ._107 + 4 @ \n\ + ldr r2, ._107 + 8 @ \n\ add r1, r1, r2\n\ b ._122\n\ ._108:\n\ @@ -977,8 +977,8 @@ bool8 InitPartyMenu(void) bl sub_809D51C\n\ b ._115\n\ ._70:\n\ - ldr r2, ._113\n\ - ldr r0, ._113 + 4\n\ + ldr r2, ._113 @ PartyMenuHandlers\n\ + ldr r0, ._113 + 4 @ \n\ mov r1, #0x96\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -994,8 +994,8 @@ bool8 InitPartyMenu(void) lsr r0, r0, #0x18\n\ cmp r0, #0x1\n\ bne ._125 @cond_branch\n\ - ldr r1, ._113 + 8\n\ - ldr r2, ._113 + 12\n\ + ldr r1, ._113 + 8 @ \n\ + ldr r2, ._113 + 12 @ \n\ add r1, r1, r2\n\ b ._122\n\ ._114:\n\ @@ -1006,7 +1006,7 @@ bool8 InitPartyMenu(void) .word gMain\n\ .word 0x43c\n\ ._71:\n\ - ldr r0, ._116\n\ + ldr r0, ._116 @ gWindowTemplate_81E6CC8\n\ bl MultistepInitMenuWindowBegin\n\ b ._115\n\ ._117:\n\ @@ -1017,8 +1017,8 @@ bool8 InitPartyMenu(void) bl MultistepInitMenuWindowContinue\n\ cmp r0, #0\n\ beq ._125 @cond_branch\n\ - ldr r1, ._120\n\ - ldr r0, ._120 + 4\n\ + ldr r1, ._120 @ gMain\n\ + ldr r0, ._120 + 4 @ 0x43c\n\ add r1, r1, r0\n\ b ._122\n\ ._121:\n\ @@ -1027,14 +1027,14 @@ bool8 InitPartyMenu(void) .word gMain\n\ .word 0x43c\n\ ._73:\n\ - ldr r0, ._123\n\ - ldr r1, ._123 + 4\n\ + ldr r0, ._123 @ \n\ + ldr r1, ._123 + 4 @ \n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x0\n\ bl PrintPartyMenuPromptText\n\ - ldr r1, ._123 + 8\n\ - ldr r2, ._123 + 12\n\ + ldr r1, ._123 + 8 @ \n\ + ldr r2, ._123 + 12 @ \n\ add r1, r1, r2\n\ b ._122\n\ ._124:\n\ @@ -1052,14 +1052,14 @@ bool8 InitPartyMenu(void) mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r2, ._126\n\ + ldr r2, ._126 @ gPaletteFade\n\ ldrb r1, [r2, #0x8]\n\ mov r0, #0x7f\n\ and r0, r0, r1\n\ strb r0, [r2, #0x8]\n\ ._115:\n\ - ldr r1, ._126 + 4\n\ - ldr r3, ._126 + 8\n\ + ldr r1, ._126 + 4 @ gMain\n\ + ldr r3, ._126 + 8 @ 0x43c\n\ add r1, r1, r3\n\ ._122:\n\ ldrb r0, [r1]\n\ @@ -1073,16 +1073,16 @@ bool8 InitPartyMenu(void) .word gMain\n\ .word 0x43c\n\ ._75:\n\ - ldr r0, ._130\n\ + ldr r0, ._130 @ VBlankCB_PartyMenu\n\ bl SetVBlankCallback\n\ - ldr r0, ._130 + 4\n\ + ldr r0, ._130 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._128 @cond_branch\n\ - ldr r0, ._130 + 8\n\ + ldr r0, ._130 + 8 @ 0x600e5e0\n\ mov r1, #0x80\n\ lsl r1, r1, #0x8\n\ - ldr r2, ._130 + 12\n\ + ldr r2, ._130 + 12 @ 0x6007800\n\ mov r3, #0x2\n\ bl debug_sub_8008218\n\ ._128:\n\ diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 01e9711dc..8b67a2cd9 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1658,7 +1658,7 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) add r5, r1, #0\n\ lsl r2, r2, #0x18\n\ lsr r7, r2, #0x18\n\ - ldr r0, ._503\n\ + ldr r0, ._503 @ gUnknown_020297ED\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ bne ._498 @cond_branch\n\ @@ -1747,10 +1747,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) bl sub_80BD610\n\ ._515:\n\ mov r3, #0x1\n\ - ldr r6, ._521\n\ + ldr r6, ._521 @ gSaveBlock1\n\ mov r5, #0x10\n\ neg r5, r5\n\ - ldr r4, ._521 + 4\n\ + ldr r4, ._521 + 4 @ 0x1a09\n\ ._517:\n\ lsl r0, r3, #0x2\n\ add r0, r0, r3\n\ @@ -1776,8 +1776,8 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) bls ._517 @cond_branch\n\ bl sub_80BD280\n\ mov r3, #0x1\n\ - ldr r4, ._521\n\ - ldr r6, ._521 + 4\n\ + ldr r4, ._521 @ gSaveBlock1\n\ + ldr r6, ._521 + 4 @ 0x1a09\n\ add r7, r4, #0\n\ mov r5, #0x3f\n\ ._519:\n\ @@ -1799,10 +1799,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c) lsr r3, r0, #0x10\n\ cmp r3, #0x13\n\ bls ._519 @cond_branch\n\ - ldr r0, ._521 + 8\n\ + ldr r0, ._521 + 8 @ 0x1a16\n\ add r2, r7, r0\n\ ldrh r1, [r2]\n\ - ldr r0, ._521 + 12\n\ + ldr r0, ._521 + 12 @ 0xffff\n\ cmp r1, r0\n\ beq ._520 @cond_branch\n\ add r0, r1, #1\n\ diff --git a/src/field/shop.c b/src/field/shop.c index 852ccddda..fdee31178 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -1247,7 +1247,7 @@ void debug_sub_80C2818(void) push {lr}\n\ mov r0, #0x0\n\ bl CreateShopMenu\n\ - ldr r0, ._290\n\ + ldr r0, ._290 @ gMartBuyNoSellOptionList\n\ bl SetShopItemsForSale\n\ mov r0, #0x0\n\ bl SetShopMenuCallback\n\ diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 0d4ebe3f0..2c97c146d 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -402,7 +402,7 @@ static void SlotMachineSetup_0_1(void) mov r5, r8\n\ push {r5, r6, r7}\n\ bl sub_81019EC\n\ - ldr r5, ._43\n\ + ldr r5, ._43 @ \n\ mov r4, #0x0\n\ strb r4, [r5]\n\ strb r4, [r5, #0x2]\n\ @@ -415,8 +415,8 @@ static void SlotMachineSetup_0_1(void) strh r4, [r5, #0x8]\n\ strb r0, [r5, #0xa]\n\ strb r0, [r5, #0xb]\n\ - ldr r0, ._43 + 4\n\ - ldr r1, ._43 + 8\n\ + ldr r0, ._43 + 4 @ \n\ + ldr r1, ._43 + 8 @ \n\ add r0, r0, r1\n\ ldrh r0, [r0]\n\ strh r0, [r5, #0xc]\n\ @@ -445,7 +445,7 @@ static void SlotMachineSetup_0_1(void) strh r0, [r1]\n\ mov r7, #0x0\n\ add r6, r5, #0\n\ - ldr r2, ._43 + 12\n\ + ldr r2, ._43 + 12 @ \n\ mov sl, r2\n\ mov r0, #0x1c\n\ add r0, r0, r6\n\ @@ -493,7 +493,7 @@ static void SlotMachineSetup_0_1(void) cmp r7, #0x2\n\ bls ._41 @cond_branch\n\ bl debug_sub_811B5D0\n\ - ldr r0, ._43 + 16\n\ + ldr r0, ._43 + 16 @ \n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._42 @cond_branch\n\ @@ -690,21 +690,21 @@ static bool8 sub_8101E10(struct Task *task) push {lr}\n\ mov r0, #0x0\n\ bl sub_8104CAC\n\ - ldr r2, ._70\n\ + ldr r2, ._70 @ \n\ mov r0, #0x5\n\ strb r0, [r2]\n\ - ldr r0, ._70 + 4\n\ + ldr r0, ._70 + 4 @ \n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._67 @cond_branch\n\ - ldr r0, ._70 + 8\n\ + ldr r0, ._70 + 8 @ \n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ bne ._69 @cond_branch\n\ ._67:\n\ mov r0, #0xc\n\ ldsh r1, [r2, r0]\n\ - ldr r0, ._70 + 12\n\ + ldr r0, ._70 + 12 @ \n\ cmp r1, r0\n\ ble ._69 @cond_branch\n\ mov r0, #0x17\n\ @@ -740,17 +740,17 @@ static bool8 sub_8101E3C(struct Task *task) { asm("\ push {r4, r5, lr}\n\ - ldr r0, ._77\n\ + ldr r0, ._77 @ unk_debug_bss_1_1\n\ ldrb r1, [r0]\n\ add r3, r0, #0\n\ - ldr r5, ._77 + 4\n\ + ldr r5, ._77 + 4 @ gMain\n\ cmp r1, #0\n\ beq ._76 @cond_branch\n\ - ldr r2, ._77 + 8\n\ + ldr r2, ._77 + 8 @ unk_debug_bss_1_4\n\ ldrb r0, [r2]\n\ cmp r0, #0\n\ beq ._76 @cond_branch\n\ - ldr r4, ._77 + 12\n\ + ldr r4, ._77 + 12 @ \n\ mov r1, #0xc\n\ ldsh r0, [r4, r1]\n\ cmp r0, #0x3\n\ @@ -796,7 +796,7 @@ static bool8 sub_8101E3C(struct Task *task) cmp r0, #0\n\ beq ._81 @cond_branch\n\ bl debug_sub_811B620\n\ - ldr r1, ._83\n\ + ldr r1, ._83 @ \n\ mov r0, #0x1d\n\ strb r0, [r1]\n\ b ._102\n\ @@ -812,7 +812,7 @@ static bool8 sub_8101E3C(struct Task *task) beq ._85 @cond_branch\n\ mov r0, #0x0\n\ bl sub_8104AB8\n\ - ldr r1, ._87\n\ + ldr r1, ._87 @ \n\ mov r0, #0x8\n\ strb r0, [r1]\n\ b ._102\n\ @@ -826,7 +826,7 @@ static bool8 sub_8101E3C(struct Task *task) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._89 @cond_branch\n\ - ldr r2, ._94\n\ + ldr r2, ._94 @ \n\ mov r3, #0xc\n\ ldsh r0, [r2, r3]\n\ sub r0, r0, #0x3\n\ @@ -852,7 +852,7 @@ static bool8 sub_8101E3C(struct Task *task) cmp r0, #0x2\n\ ble ._92 @cond_branch\n\ ._91:\n\ - ldr r1, ._94\n\ + ldr r1, ._94 @ \n\ ldrh r0, [r1, #0xc]\n\ sub r0, r0, #0x3\n\ ldrh r3, [r1, #0x12]\n\ @@ -877,7 +877,7 @@ static bool8 sub_8101E3C(struct Task *task) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._98 @cond_branch\n\ - ldr r4, ._103\n\ + ldr r4, ._103 @ \n\ mov r1, #0xc\n\ ldsh r0, [r4, r1]\n\ cmp r0, #0\n\ @@ -893,11 +893,11 @@ static bool8 sub_8101E3C(struct Task *task) add r0, r0, #0x1\n\ strh r0, [r4, #0x12]\n\ ._98:\n\ - ldr r0, ._103\n\ + ldr r0, ._103 @ \n\ mov r2, #0x12\n\ ldsh r1, [r0, r2]\n\ add r2, r0, #0\n\ - ldr r5, ._103 + 4\n\ + ldr r5, ._103 + 4 @ \n\ cmp r1, #0x2\n\ bgt ._99 @cond_branch\n\ cmp r1, #0\n\ @@ -1029,7 +1029,7 @@ static bool8 sub_8101FA4(struct Task *task) bl sub_8102DEC\n\ mov r0, #0x0\n\ strh r0, [r4, #0x8]\n\ - ldr r4, ._115\n\ + ldr r4, ._115 @ \n\ ldrb r1, [r4, #0x4]\n\ mov r0, #0x20\n\ and r0, r0, r1\n\ @@ -1048,7 +1048,7 @@ static bool8 sub_8101FA4(struct Task *task) mov r0, #0xb\n\ ._114:\n\ strb r0, [r4]\n\ - ldr r4, ._119\n\ + ldr r4, ._119 @ \n\ mov r0, #0x8\n\ strh r0, [r4, #0x1a]\n\ ldrb r0, [r4, #0xa]\n\ @@ -1057,7 +1057,7 @@ static bool8 sub_8101FA4(struct Task *task) bl dp15_jump_random_unknown\n\ strh r0, [r4, #0x1a]\n\ ._117:\n\ - ldr r0, ._119 + 4\n\ + ldr r0, ._119 + 4 @ \n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._118 @cond_branch\n\ @@ -1128,15 +1128,15 @@ static bool8 sub_8102034(struct Task *task) asr r1, r1, #0x10\n\ cmp r1, #0x1d\n\ ble ._124 @cond_branch\n\ - ldr r0, ._127\n\ + ldr r0, ._127 @ unk_debug_bss_1_1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._126 @cond_branch\n\ - ldr r0, ._127 + 4\n\ + ldr r0, ._127 + 4 @ unk_debug_bss_1_4\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._126 @cond_branch\n\ - ldr r4, ._127 + 8\n\ + ldr r4, ._127 + 8 @ unk_debug_bss_1_8\n\ bl Random\n\ mov r1, #0x1f\n\ and r1, r1, r0\n\ @@ -1144,7 +1144,7 @@ static bool8 sub_8102034(struct Task *task) str r1, [r4]\n\ ._126:\n\ bl sub_81024F0\n\ - ldr r1, ._127 + 12\n\ + ldr r1, ._127 + 12 @ \n\ mov r0, #0xc\n\ strb r0, [r1]\n\ ._124:\n\ @@ -1178,15 +1178,15 @@ static bool8 sub_8102058(struct Task *task) { asm("\ push {r4, r5, lr}\n\ - ldr r0, ._133\n\ + ldr r0, ._133 @ unk_debug_bss_1_1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._130 @cond_branch\n\ - ldr r0, ._133 + 4\n\ + ldr r0, ._133 + 4 @ unk_debug_bss_1_4\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._130 @cond_branch\n\ - ldr r5, ._133 + 8\n\ + ldr r5, ._133 + 8 @ unk_debug_bss_1_8\n\ ldr r0, [r5]\n\ sub r0, r0, #0x1\n\ str r0, [r5]\n\ @@ -1194,7 +1194,7 @@ static bool8 sub_8102058(struct Task *task) bne ._135 @cond_branch\n\ mov r0, #0x18\n\ bl PlaySE\n\ - ldr r4, ._133 + 12\n\ + ldr r4, ._133 + 12 @ \n\ ldrb r0, [r4, #0x18]\n\ bl sub_8102E1C\n\ ldrb r0, [r4, #0x18]\n\ @@ -1213,7 +1213,7 @@ static bool8 sub_8102058(struct Task *task) .word unk_debug_bss_1_8\n\ .word +0x2000000\n\ ._130:\n\ - ldr r0, ._136\n\ + ldr r0, ._136 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -1221,7 +1221,7 @@ static bool8 sub_8102058(struct Task *task) beq ._135 @cond_branch\n\ mov r0, #0x18\n\ bl PlaySE\n\ - ldr r4, ._136 + 4\n\ + ldr r4, ._136 + 4 @ \n\ ldrb r0, [r4, #0x18]\n\ bl sub_8102E1C\n\ ldrb r0, [r4, #0x18]\n\ @@ -1260,7 +1260,7 @@ static bool8 sub_8102090(struct Task *task) { asm("\ push {r4, lr}\n\ - ldr r4, ._146\n\ + ldr r4, ._146 @ \n\ ldrb r0, [r4, #0x18]\n\ bl sub_8102E40\n\ lsl r0, r0, #0x18\n\ @@ -1278,7 +1278,7 @@ static bool8 sub_8102090(struct Task *task) ble ._161 @cond_branch\n\ mov r0, #0xe\n\ strb r0, [r4]\n\ - ldr r0, ._146 + 4\n\ + ldr r0, ._146 + 4 @ \n\ ldrb r0, [r0]\n\ cmp r0, #0x8\n\ beq ._140 @cond_branch\n\ @@ -1389,7 +1389,7 @@ bool8 sub_81020C8(struct Task *task) { asm("\ push {r4, lr}\n\ - ldr r4, ._165\n\ + ldr r4, ._165 @ \n\ ldrb r1, [r4, #0x4]\n\ mov r0, #0xc0\n\ and r0, r0, r1\n\ @@ -1411,7 +1411,7 @@ bool8 sub_81020C8(struct Task *task) ._163:\n\ bl debug_sub_811B894\n\ ._164:\n\ - ldr r4, ._171\n\ + ldr r4, ._171 @ \n\ ldrh r0, [r4, #0x8]\n\ cmp r0, #0\n\ beq ._167 @cond_branch\n\ @@ -1440,7 +1440,7 @@ bool8 sub_81020C8(struct Task *task) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._169 @cond_branch\n\ - ldr r0, ._171 + 4\n\ + ldr r0, ._171 + 4 @ \n\ bl PlayFanfare\n\ mov r0, #0x6\n\ bl sub_8104CAC\n\ @@ -1455,7 +1455,7 @@ bool8 sub_81020C8(struct Task *task) and r0, r0, r1\n\ cmp r0, #0\n\ beq ._173 @cond_branch\n\ - ldr r0, ._175\n\ + ldr r0, ._175 @ 0x185\n\ bl PlayFanfare\n\ mov r0, #0x5\n\ bl sub_8104CAC\n\ @@ -1471,7 +1471,7 @@ bool8 sub_81020C8(struct Task *task) mov r0, #0x2\n\ bl sub_8104CAC\n\ ._174:\n\ - ldr r1, ._183\n\ + ldr r1, ._183 @ \n\ ldrh r3, [r1, #0x8]\n\ mov r0, #0xe0\n\ lsl r0, r0, #0x1\n\ @@ -1528,7 +1528,7 @@ bool8 sub_81020C8(struct Task *task) strh r0, [r4, #0x10]\n\ lsl r0, r0, #0x10\n\ asr r0, r0, #0x10\n\ - ldr r1, ._186\n\ + ldr r1, ._186 @ 0x270f\n\ cmp r0, r1\n\ ble ._185 @cond_branch\n\ strh r1, [r4, #0x10]\n\ @@ -1765,14 +1765,14 @@ static bool8 sub_8102424(struct Task *task) asm("\ push {lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._234\n\ + ldr r0, ._234 @ unk_debug_bss_1_1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ bne ._233 @cond_branch\n\ - ldr r0, ._234 + 4\n\ - ldr r1, ._234 + 8\n\ + ldr r0, ._234 + 4 @ gSaveBlock1\n\ + ldr r1, ._234 + 8 @ \n\ ldrh r1, [r1, #0xc]\n\ - ldr r2, ._234 + 12\n\ + ldr r2, ._234 + 12 @ \n\ add r0, r0, r2\n\ strh r1, [r0]\n\ ._233:\n\ @@ -1783,7 +1783,7 @@ static bool8 sub_8102424(struct Task *task) mov r2, #0x0\n\ mov r3, #0x10\n\ bl BeginNormalPaletteFade\n\ - ldr r1, ._234 + 8\n\ + ldr r1, ._234 + 8 @ \n\ ldrb r0, [r1]\n\ add r0, r0, #0x1\n\ strb r0, [r1]\n\ @@ -1828,7 +1828,7 @@ static bool8 debug_sub_8116E74(struct Task *task) lsl r0, r0, #0x18\n\ cmp r0, #0\n\ beq ._239 @cond_branch\n\ - ldr r1, ._240\n\ + ldr r1, ._240 @ \n\ mov r0, #0x5\n\ strb r0, [r1]\n\ ._239:\n\ @@ -1848,22 +1848,22 @@ static void sub_8102484(void) { asm("\ push {r4, r5, r6, lr}\n\ - ldr r0, ._256\n\ + ldr r0, ._256 @ \n\ ldrb r2, [r0, #0xa]\n\ add r4, r0, #0\n\ cmp r2, #0\n\ beq ._242 @cond_branch\n\ b ._270\n\ ._242:\n\ - ldr r0, ._256 + 4\n\ + ldr r0, ._256 + 4 @ \n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._245 @cond_branch\n\ - ldr r3, ._256 + 8\n\ + ldr r3, ._256 + 8 @ \n\ ldrb r0, [r3]\n\ cmp r0, #0\n\ beq ._245 @cond_branch\n\ - ldr r0, ._256 + 12\n\ + ldr r0, ._256 + 12 @ \n\ ldrb r1, [r0]\n\ strb r1, [r4, #0x4]\n\ strb r2, [r3]\n\ @@ -1972,7 +1972,7 @@ static void sub_8102484(void) lsr r6, r0, #0x18\n\ cmp r6, #0x3\n\ beq ._260 @cond_branch\n\ - ldr r1, ._271\n\ + ldr r1, ._271 @ gUnknown_083ECE42\n\ lsl r0, r6, #0x1\n\ add r0, r0, r1\n\ ldrb r1, [r0]\n\ @@ -2016,8 +2016,8 @@ static void sub_8102484(void) lsr r6, r0, #0x18\n\ cmp r6, #0x5\n\ beq ._270 @cond_branch\n\ - ldr r4, ._271 + 4\n\ - ldr r1, ._271 + 8\n\ + ldr r4, ._271 + 4 @ \n\ + ldr r1, ._271 + 8 @ \n\ lsl r0, r6, #0x1\n\ add r0, r0, r1\n\ ldrb r1, [r0]\n\ diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 1b01bf7a8..4904f4a80 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -166,7 +166,7 @@ void debug_sub_8075C40() " lsl r0, r4, #0x2\n" " add r0, r0, r4\n" " lsl r0, r0, #0x3\n" - " ldr r1, ._5\n" + " ldr r1, ._5 @ gTasks\n" " add r5, r0, r1\n" " mov r1, #0x0\n" " ldsh r0, [r5, r1]\n" @@ -191,28 +191,28 @@ void debug_sub_8075C40() " bl m4aSoundVSyncOff\n" " b ._12\n" "._1:\n" - " ldr r1, ._13\n" + " ldr r1, ._13 @ 0x4000208\n" " ldrh r0, [r1]\n" " mov sl, r0\n" " mov r0, #0x0\n" " strh r0, [r1]\n" - " ldr r1, ._13 + 4\n" + " ldr r1, ._13 + 4 @ 0x4000108\n" " strh r0, [r1]\n" " mov r0, #0x83\n" " lsl r0, r0, #0x10\n" " str r0, [r1]\n" - " ldr r4, ._13 + 8\n" + " ldr r4, ._13 + 8 @ 0xc34f\n" " mov r9, r4\n" - " ldr r2, ._13 + 12\n" - " ldr r0, ._13 + 16\n" + " ldr r2, ._13 + 12 @ 0x40000b0\n" + " ldr r0, ._13 + 16 @ gScanlineEffectRegBuffers\n" " mov ip, r0\n" - " ldr r1, ._13 + 20\n" + " ldr r1, ._13 + 20 @ 0xc5ff\n" " mov r8, r1\n" - " ldr r7, ._13 + 24\n" + " ldr r7, ._13 + 24 @ 0x7fff\n" " mov r3, r9\n" " add r3, r3, #0x1\n" - " ldr r6, ._13 + 28\n" - " ldr r4, ._13 + 32\n" + " ldr r6, ._13 + 28 @ 0x4000040\n" + " ldr r4, ._13 + 32 @ 0xa2600001\n" "._11:\n" " mov r0, ip\n" " str r0, [r2]\n" @@ -233,18 +233,18 @@ void debug_sub_8075C40() " bne ._11 @cond_branch\n" " mov r3, r9\n" " add r3, r3, #0x1\n" - " ldr r0, ._13 + 36\n" + " ldr r0, ._13 + 36 @ 0x400010a\n" " mov r2, #0x0\n" " strh r2, [r0]\n" - " ldr r1, ._13 + 4\n" + " ldr r1, ._13 + 4 @ 0x4000108\n" " ldrh r0, [r1]\n" - " ldr r4, ._13 + 40\n" + " ldr r4, ._13 + 40 @ _debugStartMenu_0\n" " str r0, [r4]\n" " strh r2, [r1]\n" - " ldr r0, ._13\n" + " ldr r0, ._13 @ 0x4000208\n" " mov r1, sl\n" " strh r1, [r0]\n" - " ldr r4, ._13 + 44\n" + " ldr r4, ._13 + 44 @ _debugStartMenu_1\n" " str r3, [r4]\n" " bl m4aSoundVSyncOn\n" " b ._12\n" @@ -266,20 +266,20 @@ void debug_sub_8075C40() "._7:\n" " mov r0, #0x15\n" " bl PlaySE\n" - " ldr r0, ._16\n" - " ldr r1, ._16 + 4\n" + " ldr r0, ._16 @ gStringVar1\n" + " ldr r1, ._16 + 4 @ _debugStartMenu_1\n" " ldr r1, [r1]\n" " mov r2, #0x1\n" " mov r3, #0x8\n" " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._16 + 8\n" - " ldr r1, ._16 + 12\n" + " ldr r0, ._16 + 8 @ gStringVar2\n" + " ldr r1, ._16 + 12 @ _debugStartMenu_0\n" " ldr r1, [r1]\n" " mov r2, #0x1\n" " mov r3, #0x8\n" " bl ConvertIntToDecimalStringN\n" " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._16 + 16\n" + " ldr r0, ._16 + 16 @ gUnknown_Debug_839B6D8\n" " mov r1, #0x2\n" " mov r2, #0xf\n" " bl Menu_PrintText\n" @@ -297,7 +297,7 @@ void debug_sub_8075C40() " .word _debugStartMenu_0\n" " .word gUnknown_Debug_839B6D8\n" "._8:\n" - " ldr r0, ._19\n" + " ldr r0, ._19 @ gMain\n" " ldrh r1, [r0, #0x2e]\n" " mov r0, #0x1\n" " and r0, r0, r1\n" @@ -328,7 +328,7 @@ void debug_sub_8075D9C() { asm( " push {lr}\n" - " ldr r0, ._21\n" + " ldr r0, ._21 @ debug_sub_8075C40\n" " mov r1, #0xa\n" " bl CreateTask\n" " bl ScriptContext2_Enable\n" @@ -363,8 +363,8 @@ void debug_sub_8075DB4() " bl StringCopy8\n" " mov r3, #0x7\n" " mov r4, #0x0\n" - " ldr r0, ._25\n" - " ldr r1, ._25 + 4\n" + " ldr r0, ._25 @ gSaveBlock1\n" + " ldr r1, ._25 + 4 @ 0x2b28\n" " add r5, r0, r1\n" " add r2, r6, #0\n" " add r2, r2, #0x10\n" @@ -387,7 +387,7 @@ void debug_sub_8075DB4() "._24:\n" " mov r0, #0x64\n" " mul r0, r0, r4\n" - " ldr r1, ._25 + 8\n" + " ldr r1, ._25 + 8 @ gPlayerParty\n" " add r0, r0, r1\n" " mov r1, #0x2c\n" " mul r1, r1, r4\n" @@ -417,12 +417,12 @@ void unref_sub_8070F90() { asm( " push {lr}\n" - " ldr r0, ._27\n" + " ldr r0, ._27 @ 0x801\n" " bl FlagSet\n" " mov r0, #0x80\n" " lsl r0, r0, #0x4\n" " bl FlagSet\n" - " ldr r0, ._27 + 4\n" + " ldr r0, ._27 + 4 @ 0x802\n" " bl FlagSet\n" " pop {r0}\n" " bx r0\n" diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index f1bded592..fcbfe122f 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -583,12 +583,12 @@ void sub_809D844(void) bl AnimateSprites\n\ bl BuildOamBuffer\n\ bl UpdatePaletteFade\n\ - ldr r0, ._2\n\ + ldr r0, ._2 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1 @cond_branch\n\ - ldr r0, ._2 + 4\n\ - ldr r1, ._2 + 8\n\ + ldr r0, ._2 + 4 @ gLink\n\ + ldr r1, ._2 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x3\n\ @@ -733,8 +733,8 @@ bool8 sub_809DA84(void) asm("\ push {r4, r5, r6, r7, lr}\n\ add sp, sp, #0xfffffff8\n\ - ldr r1, ._52\n\ - ldr r2, ._52 + 4\n\ + ldr r1, ._52 @ gMain\n\ + ldr r2, ._52 + 4 @ 0x43c\n\ add r0, r1, r2\n\ ldrb r0, [r0]\n\ mov ip, r1\n\ @@ -743,7 +743,7 @@ bool8 sub_809DA84(void) b ._51\n\ ._50:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._52 + 8\n\ + ldr r1, ._52 + 8 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -784,8 +784,8 @@ bool8 sub_809DA84(void) b ._146\n\ ._56:\n\ bl ScanlineEffect_Stop\n\ - ldr r1, ._80\n\ - ldr r2, ._80 + 4\n\ + ldr r1, ._80 @ gMain\n\ + ldr r2, ._80 + 4 @ 0x43c\n\ add r1, r1, r2\n\ b ._153\n\ ._81:\n\ @@ -802,10 +802,10 @@ bool8 sub_809DA84(void) mov r3, #0x80\n\ lsl r3, r3, #0x9\n\ mov r5, #0x0\n\ - ldr r1, ._85\n\ + ldr r1, ._85 @ 0x40000d4\n\ mov r4, #0x80\n\ lsl r4, r4, #0x5\n\ - ldr r6, ._85 + 4\n\ + ldr r6, ._85 + 4 @ 0x85000400\n\ mov r7, #0x85\n\ lsl r7, r7, #0x18\n\ ._83:\n\ @@ -827,7 +827,7 @@ bool8 sub_809DA84(void) orr r0, r0, r7\n\ str r0, [r1, #0x8]\n\ ldr r0, [r1, #0x8]\n\ - ldr r1, ._85 + 8\n\ + ldr r1, ._85 + 8 @ 0x43c\n\ add r1, r1, ip\n\ b ._153\n\ ._86:\n\ @@ -838,8 +838,8 @@ bool8 sub_809DA84(void) .word 0x43c\n\ ._59:\n\ bl sub_809DE64\n\ - ldr r1, ._88\n\ - ldr r2, ._88 + 4\n\ + ldr r1, ._88 @ gMain\n\ + ldr r2, ._88 + 4 @ 0x43c\n\ add r1, r1, r2\n\ b ._153\n\ ._89:\n\ @@ -848,7 +848,7 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._60:\n\ - ldr r0, ._91\n\ + ldr r0, ._91 @ gWindowTemplate_81E6E6C\n\ bl Text_LoadWindowTemplate\n\ b ._146\n\ ._92:\n\ @@ -856,10 +856,10 @@ bool8 sub_809DA84(void) ._91:\n\ .word gWindowTemplate_81E6E6C\n\ ._61:\n\ - ldr r0, ._94\n\ + ldr r0, ._94 @ gWindowTemplate_81E6E6C\n\ bl MultistepInitMenuWindowBegin\n\ - ldr r1, ._94 + 4\n\ - ldr r2, ._94 + 8\n\ + ldr r1, ._94 + 4 @ gMain\n\ + ldr r2, ._94 + 8 @ 0x43c\n\ add r1, r1, r2\n\ b ._153\n\ ._95:\n\ @@ -877,8 +877,8 @@ bool8 sub_809DA84(void) b ._146\n\ ._63:\n\ bl sub_809DA1C\n\ - ldr r1, ._100\n\ - ldr r2, ._100 + 4\n\ + ldr r1, ._100 @ gMain\n\ + ldr r2, ._100 + 4 @ 0x43c\n\ add r1, r1, r2\n\ b ._153\n\ ._101:\n\ @@ -887,26 +887,26 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._64:\n\ - ldr r1, ._103\n\ - ldr r2, ._103 + 4\n\ - ldr r0, ._103 + 8\n\ + ldr r1, ._103 @ gSummaryScreenTextTiles\n\ + ldr r2, ._103 + 4 @ 0x600d000\n\ + ldr r0, ._103 + 8 @ 0x40000d4\n\ str r1, [r0]\n\ str r2, [r0, #0x4]\n\ - ldr r1, ._103 + 12\n\ + ldr r1, ._103 + 12 @ 0x800000a0\n\ str r1, [r0, #0x8]\n\ ldr r1, [r0, #0x8]\n\ - ldr r1, ._103 + 16\n\ - ldr r2, ._103 + 20\n\ + ldr r1, ._103 + 16 @ sSummaryScreenButtonTiles\n\ + ldr r2, ._103 + 20 @ 0x600d140\n\ str r1, [r0]\n\ str r2, [r0, #0x4]\n\ - ldr r1, ._103 + 24\n\ + ldr r1, ._103 + 24 @ 0x80000080\n\ str r1, [r0, #0x8]\n\ ldr r0, [r0, #0x8]\n\ - ldr r0, ._103 + 28\n\ + ldr r0, ._103 + 28 @ \n\ add r0, r0, #0x74\n\ mov r1, #0x0\n\ strb r1, [r0]\n\ - ldr r1, ._103 + 32\n\ + ldr r1, ._103 + 32 @ \n\ add r1, r1, ip\n\ b ._153\n\ ._104:\n\ @@ -928,7 +928,7 @@ bool8 sub_809DA84(void) bne ._105 @cond_branch\n\ b ._157\n\ ._105:\n\ - ldr r0, ._108\n\ + ldr r0, ._108 @ \n\ add r0, r0, #0x74\n\ mov r1, #0x0\n\ strb r1, [r0]\n\ @@ -939,8 +939,8 @@ bool8 sub_809DA84(void) .word +0x2018000\n\ ._66:\n\ bl sub_80A18C4\n\ - ldr r1, ._111\n\ - ldr r2, ._111 + 4\n\ + ldr r1, ._111 @ gMain\n\ + ldr r2, ._111 + 4 @ 0x43c\n\ add r1, r1, r2\n\ b ._153\n\ ._112:\n\ @@ -949,7 +949,7 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._67:\n\ - ldr r4, ._115\n\ + ldr r4, ._115 @ \n\ add r0, r4, #0\n\ bl sub_809F678\n\ add r0, r4, #0\n\ @@ -968,7 +968,7 @@ bool8 sub_809DA84(void) mov r0, #0xa\n\ bl sub_80A12D0\n\ ._114:\n\ - ldr r0, ._118\n\ + ldr r0, ._118 @ \n\ bl DrawPokerusSurvivorDot\n\ b ._146\n\ ._119:\n\ @@ -977,10 +977,10 @@ bool8 sub_809DA84(void) .word +0x2018010\n\ ._68:\n\ bl sub_80A1950\n\ - ldr r0, ._121\n\ + ldr r0, ._121 @ \n\ bl sub_80A1D84\n\ - ldr r1, ._121 + 4\n\ - ldr r2, ._121 + 8\n\ + ldr r1, ._121 + 4 @ \n\ + ldr r2, ._121 + 8 @ \n\ add r1, r1, r2\n\ b ._153\n\ ._122:\n\ @@ -990,7 +990,7 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._69:\n\ - ldr r4, ._124\n\ + ldr r4, ._124 @ \n\ add r0, r4, #0\n\ bl sub_80A1DE8\n\ add r4, r4, #0x64\n\ @@ -1002,7 +1002,7 @@ bool8 sub_809DA84(void) ._124:\n\ .word +0x2018010\n\ ._70:\n\ - ldr r4, ._129\n\ + ldr r4, ._129 @ \n\ add r5, r4, #0\n\ add r5, r5, #0x64\n\ add r0, r4, #0\n\ @@ -1018,8 +1018,8 @@ bool8 sub_809DA84(void) ._126:\n\ mov r0, #0x0\n\ strb r0, [r5]\n\ - ldr r1, ._129 + 4\n\ - ldr r2, ._129 + 8\n\ + ldr r1, ._129 + 4 @ \n\ + ldr r2, ._129 + 8 @ \n\ add r1, r1, r2\n\ b ._153\n\ ._130:\n\ @@ -1033,19 +1033,19 @@ bool8 sub_809DA84(void) bl DrawSummaryScreenNavigationDots\n\ b ._146\n\ ._72:\n\ - ldr r1, ._134\n\ + ldr r1, ._134 @ \n\ ldrb r0, [r1, #0xb]\n\ cmp r0, #0x1\n\ bhi ._132 @cond_branch\n\ - ldr r0, ._134 + 4\n\ + ldr r0, ._134 + 4 @ \n\ ldrb r1, [r1, #0xb]\n\ lsl r1, r1, #0x2\n\ add r1, r1, r0\n\ ldr r0, [r1]\n\ bl _call_via_r0\n\ ._132:\n\ - ldr r1, ._134 + 8\n\ - ldr r2, ._134 + 12\n\ + ldr r1, ._134 + 8 @ \n\ + ldr r2, ._134 + 12 @ \n\ add r1, r1, r2\n\ b ._153\n\ ._135:\n\ @@ -1056,7 +1056,7 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._73:\n\ - ldr r0, ._137\n\ + ldr r0, ._137 @ \n\ bl sub_809FAC8\n\ b ._146\n\ ._138:\n\ @@ -1064,16 +1064,16 @@ bool8 sub_809DA84(void) ._137:\n\ .word +0x2018010\n\ ._74:\n\ - ldr r2, ._140\n\ - ldr r0, ._140 + 4\n\ + ldr r2, ._140 @ sUnknown_083C1598\n\ + ldr r0, ._140 + 4 @ \n\ ldrb r1, [r0, #0xb]\n\ lsl r1, r1, #0x2\n\ add r1, r1, r2\n\ add r0, r0, #0x10\n\ ldr r1, [r1]\n\ bl _call_via_r1\n\ - ldr r1, ._140 + 8\n\ - ldr r2, ._140 + 12\n\ + ldr r1, ._140 + 8 @ \n\ + ldr r2, ._140 + 12 @ \n\ add r1, r1, r2\n\ b ._153\n\ ._141:\n\ @@ -1084,13 +1084,13 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._75:\n\ - ldr r0, ._144\n\ + ldr r0, ._144 @ \n\ mov r1, #0x2d\n\ bl GetMonData\n\ add r1, r0, #0\n\ cmp r1, #0\n\ beq ._142 @cond_branch\n\ - ldr r1, ._144 + 4\n\ + ldr r1, ._144 + 4 @ \n\ mov r2, #0x80\n\ lsl r2, r2, #0x1\n\ add r0, r2, #0\n\ @@ -1102,7 +1102,7 @@ bool8 sub_809DA84(void) .word +0x2018010\n\ .word gBattle_BG3_X\n\ ._142:\n\ - ldr r0, ._147\n\ + ldr r0, ._147 @ gBattle_BG3_X\n\ strh r1, [r0]\n\ b ._146\n\ ._148:\n\ @@ -1111,7 +1111,7 @@ bool8 sub_809DA84(void) .word gBattle_BG3_X\n\ ._76:\n\ bl sub_809EBC4\n\ - ldr r0, ._151\n\ + ldr r0, ._151 @ \n\ add r0, r0, #0x79\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ @@ -1136,8 +1136,8 @@ bool8 sub_809DA84(void) bl sub_80A1654\n\ ._150:\n\ bl PrintSummaryWindowHeaderText\n\ - ldr r1, ._154\n\ - ldr r2, ._154 + 4\n\ + ldr r1, ._154 @ gMain\n\ + ldr r2, ._154 + 4 @ 0x43c\n\ add r1, r1, r2\n\ b ._153\n\ ._155:\n\ @@ -1150,8 +1150,8 @@ bool8 sub_809DA84(void) cmp r0, #0x1\n\ beq ._157 @cond_branch\n\ ._146:\n\ - ldr r1, ._158\n\ - ldr r0, ._158 + 4\n\ + ldr r1, ._158 @ gMain\n\ + ldr r0, ._158 + 4 @ 0x43c\n\ add r1, r1, r0\n\ ._153:\n\ ldrb r0, [r1]\n\ @@ -1164,7 +1164,7 @@ bool8 sub_809DA84(void) .word gMain\n\ .word 0x43c\n\ ._51:\n\ - ldr r0, ._162\n\ + ldr r0, ._162 @ sub_809D85C\n\ bl SetVBlankCallback\n\ mov r0, #0x1\n\ str r0, [sp]\n\ @@ -1173,21 +1173,21 @@ bool8 sub_809DA84(void) mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginHardwarePaletteFade\n\ - ldr r0, ._162 + 4\n\ + ldr r0, ._162 + 4 @ sub_809D844\n\ bl SetMainCallback2\n\ - ldr r2, ._162 + 8\n\ + ldr r2, ._162 + 8 @ gPaletteFade\n\ ldrb r1, [r2, #0x8]\n\ mov r0, #0x7f\n\ and r0, r0, r1\n\ strb r0, [r2, #0x8]\n\ - ldr r0, ._162 + 12\n\ + ldr r0, ._162 + 12 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._160 @cond_branch\n\ - ldr r0, ._162 + 16\n\ + ldr r0, ._162 + 16 @ 0x600dde0\n\ mov r1, #0x80\n\ lsl r1, r1, #0x8\n\ - ldr r2, ._162 + 20\n\ + ldr r2, ._162 + 20 @ 0x600f000\n\ mov r3, #0x3\n\ bl debug_sub_8008218\n\ ._160:\n\ diff --git a/src/pokenav_before.c b/src/pokenav_before.c index b292e80c4..b645136dc 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -479,7 +479,7 @@ void sub_80EBDD8() asm("\ push {lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._64\n\ + ldr r1, ._64 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -490,7 +490,7 @@ void sub_80EBDD8() b ._131\n\ ._62:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._64 + 4\n\ + ldr r1, ._64 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -525,14 +525,14 @@ void sub_80EBDD8() lsl r1, r1, #0x13\n\ mov r0, #0x0\n\ strh r0, [r1]\n\ - ldr r1, ._86\n\ - ldr r3, ._86 + 4\n\ + ldr r1, ._86 @ gSharedMem\n\ + ldr r3, ._86 + 4 @ 0x6ddc\n\ add r0, r1, r3\n\ ldrb r2, [r0]\n\ sub r3, r3, #0x2f\n\ add r0, r1, r3\n\ strb r2, [r0]\n\ - ldr r0, ._86 + 8\n\ + ldr r0, ._86 + 8 @ 0x6dae\n\ add r2, r1, r0\n\ mov r0, #0x5\n\ strb r0, [r2]\n\ @@ -548,7 +548,7 @@ void sub_80EBDD8() .word 0x6dae\n\ ._68:\n\ bl sub_80F3FF0\n\ - ldr r1, ._91\n\ + ldr r1, ._91 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -562,7 +562,7 @@ void sub_80EBDD8() beq ._88 @cond_branch\n\ b ._131\n\ ._88:\n\ - ldr r1, ._91\n\ + ldr r1, ._91 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -573,7 +573,7 @@ void sub_80EBDD8() .word gSharedMem\n\ ._70:\n\ bl sub_80F2598\n\ - ldr r1, ._94\n\ + ldr r1, ._94 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -584,7 +584,7 @@ void sub_80EBDD8() .word gSharedMem\n\ ._71:\n\ bl sub_80EEE20\n\ - ldr r1, ._99\n\ + ldr r1, ._99 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -599,7 +599,7 @@ void sub_80EBDD8() b ._131\n\ ._96:\n\ bl sub_80EEE08\n\ - ldr r1, ._99\n\ + ldr r1, ._99 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -611,7 +611,7 @@ void sub_80EBDD8() ._73:\n\ mov r0, #0x0\n\ bl sub_80EF248\n\ - ldr r1, ._104\n\ + ldr r1, ._104 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -634,7 +634,7 @@ void sub_80EBDD8() ._75:\n\ mov r0, #0x0\n\ bl sub_80F1B8C\n\ - ldr r1, ._108\n\ + ldr r1, ._108 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -647,7 +647,7 @@ void sub_80EBDD8() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._131 @cond_branch\n\ - ldr r1, ._108\n\ + ldr r1, ._108 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -657,7 +657,7 @@ void sub_80EBDD8() ._108:\n\ .word gSharedMem\n\ ._77:\n\ - ldr r0, ._111\n\ + ldr r0, ._111 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ b ._110\n\ ._112:\n\ @@ -672,7 +672,7 @@ void sub_80EBDD8() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r1, ._114\n\ + ldr r1, ._114 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -684,7 +684,7 @@ void sub_80EBDD8() ._79:\n\ mov r0, #0x0\n\ bl sub_80EED2C\n\ - ldr r1, ._117\n\ + ldr r1, ._117 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -694,7 +694,7 @@ void sub_80EBDD8() ._117:\n\ .word gSharedMem\n\ ._80:\n\ - ldr r0, ._121\n\ + ldr r0, ._121 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -711,7 +711,7 @@ void sub_80EBDD8() ._81:\n\ mov r0, #0x0\n\ bl sub_80F2C80\n\ - ldr r1, ._125\n\ + ldr r1, ._125 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -724,7 +724,7 @@ void sub_80EBDD8() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._131 @cond_branch\n\ - ldr r1, ._125\n\ + ldr r1, ._125 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -736,7 +736,7 @@ void sub_80EBDD8() ._83:\n\ bl sub_80F1DF0\n\ ._110:\n\ - ldr r1, ._128\n\ + ldr r1, ._128 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -757,14 +757,14 @@ void sub_80EBDD8() mov r0, #0x0\n\ mov r1, #0x0\n\ bl sub_80EF428\n\ - ldr r0, ._132\n\ + ldr r0, ._132 @ sub_80EC268\n\ bl sub_80EBDBC\n\ - ldr r0, ._132 + 4\n\ + ldr r0, ._132 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._131 @cond_branch\n\ - ldr r0, ._132 + 8\n\ - ldr r2, ._132 + 12\n\ + ldr r0, ._132 + 8 @ 0x6007de0\n\ + ldr r2, ._132 + 12 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -877,7 +877,7 @@ void sub_80EC00C() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._136\n\ + ldr r1, ._136 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -888,7 +888,7 @@ void sub_80EC00C() b ._191\n\ ._134:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._136 + 4\n\ + ldr r1, ._136 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -919,17 +919,17 @@ void sub_80EC00C() beq ._153 @cond_branch\n\ b ._191\n\ ._153:\n\ - ldr r0, ._156\n\ + ldr r0, ._156 @ sub_80EBD80\n\ bl SetVBlankCallback\n\ bl sub_80EED1C\n\ - ldr r4, ._156 + 4\n\ - ldr r1, ._156 + 8\n\ + ldr r4, ._156 + 4 @ gSharedMem\n\ + ldr r1, ._156 + 8 @ 0x6ddc\n\ add r0, r4, r1\n\ ldrb r1, [r0]\n\ - ldr r2, ._156 + 12\n\ + ldr r2, ._156 + 12 @ 0x6dad\n\ add r0, r4, r2\n\ strb r1, [r0]\n\ - ldr r0, ._156 + 16\n\ + ldr r0, ._156 + 16 @ 0x6dae\n\ add r1, r4, r0\n\ mov r0, #0x5\n\ strb r0, [r1]\n\ @@ -952,7 +952,7 @@ void sub_80EC00C() ._140:\n\ mov r0, #0x0\n\ bl sub_80EF248\n\ - ldr r1, ._161\n\ + ldr r1, ._161 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -967,7 +967,7 @@ void sub_80EC00C() beq ._158 @cond_branch\n\ b ._191\n\ ._158:\n\ - ldr r1, ._161\n\ + ldr r1, ._161 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -979,7 +979,7 @@ void sub_80EC00C() ._142:\n\ mov r0, #0x0\n\ bl sub_80F1B8C\n\ - ldr r1, ._166\n\ + ldr r1, ._166 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -994,7 +994,7 @@ void sub_80EC00C() beq ._163 @cond_branch\n\ b ._191\n\ ._163:\n\ - ldr r1, ._166\n\ + ldr r1, ._166 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -1020,7 +1020,7 @@ void sub_80EC00C() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._171\n\ + ldr r0, ._171 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ @@ -1033,7 +1033,7 @@ void sub_80EC00C() ._146:\n\ mov r0, #0x0\n\ bl sub_80EED2C\n\ - ldr r1, ._174\n\ + ldr r1, ._174 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -1043,7 +1043,7 @@ void sub_80EC00C() ._174:\n\ .word gSharedMem\n\ ._147:\n\ - ldr r0, ._178\n\ + ldr r0, ._178 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -1059,7 +1059,7 @@ void sub_80EC00C() .word gPaletteFade\n\ ._148:\n\ bl sub_80F2598\n\ - ldr r1, ._181\n\ + ldr r1, ._181 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -1071,7 +1071,7 @@ void sub_80EC00C() ._149:\n\ mov r0, #0x0\n\ bl sub_80F2C80\n\ - ldr r1, ._185\n\ + ldr r1, ._185 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1084,7 +1084,7 @@ void sub_80EC00C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._191 @cond_branch\n\ - ldr r1, ._185\n\ + ldr r1, ._185 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -1096,7 +1096,7 @@ void sub_80EC00C() ._151:\n\ bl sub_80F1DF0\n\ ._169:\n\ - ldr r1, ._188\n\ + ldr r1, ._188 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1114,20 +1114,20 @@ void sub_80EC00C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._191 @cond_branch\n\ - ldr r0, ._192\n\ - ldr r1, ._192 + 4\n\ + ldr r0, ._192 @ gSharedMem\n\ + ldr r1, ._192 + 4 @ 0x6dad\n\ add r0, r0, r1\n\ ldrb r1, [r0]\n\ mov r0, #0x0\n\ bl sub_80EF428\n\ - ldr r0, ._192 + 8\n\ + ldr r0, ._192 + 8 @ sub_80EC268\n\ bl sub_80EBDBC\n\ - ldr r0, ._192 + 12\n\ + ldr r0, ._192 + 12 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._191 @cond_branch\n\ - ldr r0, ._192 + 16\n\ - ldr r2, ._192 + 20\n\ + ldr r0, ._192 + 16 @ 0x6007de0\n\ + ldr r2, ._192 + 20 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -1349,7 +1349,7 @@ void sub_80EC4A0() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._285\n\ + ldr r1, ._285 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -1360,7 +1360,7 @@ void sub_80EC4A0() b ._340\n\ ._283:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._285 + 4\n\ + ldr r1, ._285 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -1397,7 +1397,7 @@ void sub_80EC4A0() beq ._304 @cond_branch\n\ b ._340\n\ ._304:\n\ - ldr r0, ._308\n\ + ldr r0, ._308 @ gSaveBlock2\n\ ldrb r1, [r0, #0x15]\n\ mov r0, #0x8\n\ and r0, r0, r1\n\ @@ -1408,7 +1408,7 @@ void sub_80EC4A0() ._306:\n\ add r0, r1, #0\n\ bl sub_80EEFBC\n\ - ldr r1, ._308 + 4\n\ + ldr r1, ._308 + 4 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1426,7 +1426,7 @@ void sub_80EC4A0() beq ._310 @cond_branch\n\ b ._340\n\ ._310:\n\ - ldr r4, ._313\n\ + ldr r4, ._313 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -1446,7 +1446,7 @@ void sub_80EC4A0() ._313:\n\ .word gSharedMem\n\ ._291:\n\ - ldr r0, ._318\n\ + ldr r0, ._318 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -1464,7 +1464,7 @@ void sub_80EC4A0() .word gPaletteFade\n\ ._292:\n\ bl sub_80F2620\n\ - ldr r1, ._321\n\ + ldr r1, ._321 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1478,7 +1478,7 @@ void sub_80EC4A0() b ._336\n\ ._294:\n\ bl sub_80EF840\n\ - ldr r1, ._326\n\ + ldr r1, ._326 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1500,7 +1500,7 @@ void sub_80EC4A0() ._296:\n\ mov r0, #0x4\n\ bl sub_80F2C80\n\ - ldr r1, ._329\n\ + ldr r1, ._329 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1517,9 +1517,9 @@ void sub_80EC4A0() .word gSharedMem\n\ ._298:\n\ bl sub_80F2DD8\n\ - ldr r0, ._332\n\ + ldr r0, ._332 @ sub_80EBD30\n\ bl SetVBlankCallback\n\ - ldr r1, ._332 + 4\n\ + ldr r1, ._332 + 4 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -1551,17 +1551,17 @@ void sub_80EC4A0() ._301:\n\ mov r0, #0x1\n\ bl sub_80EED2C\n\ - ldr r0, ._338\n\ + ldr r0, ._338 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._336 @cond_branch\n\ - ldr r0, ._338 + 4\n\ - ldr r2, ._338 + 8\n\ + ldr r0, ._338 + 4 @ 0x60075e0\n\ + ldr r2, ._338 + 8 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ ._336:\n\ - ldr r1, ._338 + 12\n\ + ldr r1, ._338 + 12 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -1578,13 +1578,13 @@ void sub_80EC4A0() .word 0x600f800\n\ .word gSharedMem\n\ ._302:\n\ - ldr r0, ._341\n\ + ldr r0, ._341 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._340 @cond_branch\n\ - ldr r0, ._341 + 4\n\ + ldr r0, ._341 + 4 @ sub_80EC67C\n\ bl sub_80EBDBC\n\ ._340:\n\ add sp, sp, #0x4\n\ @@ -1691,7 +1691,7 @@ void sub_80EC67C() asm("\ push {r4, r5, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._345\n\ + ldr r1, ._345 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -1702,7 +1702,7 @@ void sub_80EC67C() b ._386\n\ ._343:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._345 + 4\n\ + ldr r1, ._345 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -1744,7 +1744,7 @@ void sub_80EC67C() ._358:\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._364\n\ + ldr r0, ._364 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -1758,7 +1758,7 @@ void sub_80EC67C() ._359:\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._367\n\ + ldr r0, ._367 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r0, r2\n\ @@ -1770,7 +1770,7 @@ void sub_80EC67C() ._367:\n\ .word gSharedMem\n\ ._349:\n\ - ldr r1, ._371\n\ + ldr r1, ._371 @ 0x6e90\n\ add r0, r4, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ @@ -1797,8 +1797,8 @@ void sub_80EC67C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._386 @cond_branch\n\ - ldr r5, ._378\n\ - ldr r1, ._378 + 4\n\ + ldr r5, ._378 @ gSharedMem\n\ + ldr r1, ._378 + 4 @ 0x6e90\n\ add r0, r5, r1\n\ ldrb r4, [r0]\n\ cmp r4, #0\n\ @@ -1827,7 +1827,7 @@ void sub_80EC67C() cmp r4, #0\n\ bne ._386 @cond_branch\n\ bl sub_80EFBB0\n\ - ldr r0, ._383\n\ + ldr r0, ._383 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -1858,7 +1858,7 @@ void sub_80EC67C() strh r0, [r1]\n\ b ._386\n\ ._353:\n\ - ldr r0, ._389\n\ + ldr r0, ._389 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -1867,10 +1867,10 @@ void sub_80EC67C() bl sub_80F2DF4\n\ mov r0, #0x4\n\ bl sub_80F2D04\n\ - ldr r3, ._389 + 4\n\ + ldr r3, ._389 + 4 @ gSaveBlock2\n\ mov r2, #0x0\n\ - ldr r0, ._389 + 8\n\ - ldr r1, ._389 + 12\n\ + ldr r0, ._389 + 8 @ gSharedMem\n\ + ldr r1, ._389 + 12 @ 0x6e90\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ @@ -1884,15 +1884,15 @@ void sub_80EC67C() and r0, r0, r1\n\ orr r0, r0, r2\n\ strb r0, [r3, #0x15]\n\ - ldr r0, ._389 + 16\n\ + ldr r0, ._389 + 16 @ sub_80EC00C\n\ bl sub_80EBDBC\n\ ._386:\n\ - ldr r0, ._389 + 20\n\ + ldr r0, ._389 + 20 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._388 @cond_branch\n\ - ldr r0, ._389 + 24\n\ - ldr r2, ._389 + 28\n\ + ldr r0, ._389 + 24 @ gLink\n\ + ldr r2, ._389 + 28 @ 0xfbd\n\ add r0, r0, r2\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -2092,7 +2092,7 @@ void sub_80ECA10() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._456\n\ + ldr r1, ._456 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -2103,7 +2103,7 @@ void sub_80ECA10() b ._509\n\ ._454:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._456 + 4\n\ + ldr r1, ._456 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -2134,17 +2134,17 @@ void sub_80ECA10() beq ._473 @cond_branch\n\ b ._509\n\ ._473:\n\ - ldr r0, ._476\n\ + ldr r0, ._476 @ sub_80EBD80\n\ bl SetVBlankCallback\n\ bl sub_80EED1C\n\ - ldr r4, ._476 + 4\n\ - ldr r1, ._476 + 8\n\ + ldr r4, ._476 + 4 @ gSharedMem\n\ + ldr r1, ._476 + 8 @ 0x6df0\n\ add r0, r4, r1\n\ ldrb r1, [r0]\n\ - ldr r2, ._476 + 12\n\ + ldr r2, ._476 + 12 @ 0x6dad\n\ add r0, r4, r2\n\ strb r1, [r0]\n\ - ldr r0, ._476 + 16\n\ + ldr r0, ._476 + 16 @ 0x6dae\n\ add r1, r4, r0\n\ mov r0, #0x3\n\ strb r0, [r1]\n\ @@ -2167,7 +2167,7 @@ void sub_80ECA10() ._460:\n\ mov r0, #0x1\n\ bl sub_80EF248\n\ - ldr r1, ._481\n\ + ldr r1, ._481 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2182,7 +2182,7 @@ void sub_80ECA10() beq ._478 @cond_branch\n\ b ._509\n\ ._478:\n\ - ldr r1, ._481\n\ + ldr r1, ._481 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2194,7 +2194,7 @@ void sub_80ECA10() ._462:\n\ mov r0, #0x1\n\ bl sub_80F1B8C\n\ - ldr r1, ._486\n\ + ldr r1, ._486 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2209,7 +2209,7 @@ void sub_80ECA10() beq ._483 @cond_branch\n\ b ._509\n\ ._483:\n\ - ldr r1, ._486\n\ + ldr r1, ._486 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2235,7 +2235,7 @@ void sub_80ECA10() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._491\n\ + ldr r0, ._491 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ @@ -2248,7 +2248,7 @@ void sub_80ECA10() ._466:\n\ mov r0, #0x0\n\ bl sub_80EED2C\n\ - ldr r1, ._494\n\ + ldr r1, ._494 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2261,7 +2261,7 @@ void sub_80ECA10() bl sub_80F2598\n\ b ._496\n\ ._468:\n\ - ldr r0, ._499\n\ + ldr r0, ._499 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -2278,7 +2278,7 @@ void sub_80ECA10() ._469:\n\ mov r0, #0x1\n\ bl sub_80F2C80\n\ - ldr r1, ._503\n\ + ldr r1, ._503 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2291,7 +2291,7 @@ void sub_80ECA10() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._509 @cond_branch\n\ - ldr r1, ._503\n\ + ldr r1, ._503 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2303,7 +2303,7 @@ void sub_80ECA10() ._471:\n\ bl sub_80F1DF0\n\ ._496:\n\ - ldr r1, ._506\n\ + ldr r1, ._506 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2321,20 +2321,20 @@ void sub_80ECA10() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._509 @cond_branch\n\ - ldr r0, ._510\n\ - ldr r1, ._510 + 4\n\ + ldr r0, ._510 @ gSharedMem\n\ + ldr r1, ._510 + 4 @ 0x6dad\n\ add r0, r0, r1\n\ ldrb r1, [r0]\n\ mov r0, #0x1\n\ bl sub_80EF428\n\ - ldr r0, ._510 + 8\n\ + ldr r0, ._510 + 8 @ sub_80EC86C\n\ bl sub_80EBDBC\n\ - ldr r0, ._510 + 12\n\ + ldr r0, ._510 + 12 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._509 @cond_branch\n\ - ldr r0, ._510 + 16\n\ - ldr r2, ._510 + 20\n\ + ldr r0, ._510 + 16 @ 0x6007de0\n\ + ldr r2, ._510 + 20 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -2488,7 +2488,7 @@ void sub_80ECD80() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._564\n\ + ldr r1, ._564 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -2499,7 +2499,7 @@ void sub_80ECD80() b ._642\n\ ._562:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._564 + 4\n\ + ldr r1, ._564 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -2546,7 +2546,7 @@ void sub_80ECD80() add r1, r4, r0\n\ b ._630\n\ ._568:\n\ - ldr r0, ._592\n\ + ldr r0, ._592 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -2569,7 +2569,7 @@ void sub_80ECD80() beq ._594 @cond_branch\n\ b ._642\n\ ._594:\n\ - ldr r0, ._597\n\ + ldr r0, ._597 @ sub_80EBD80\n\ bl SetVBlankCallback\n\ b ._625\n\ ._598:\n\ @@ -2579,7 +2579,7 @@ void sub_80ECD80() ._570:\n\ bl sub_80EED1C\n\ bl sub_80F3130\n\ - ldr r1, ._600\n\ + ldr r1, ._600 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2591,7 +2591,7 @@ void sub_80ECD80() ._571:\n\ mov r0, #0x1\n\ bl sub_80F2D6C\n\ - ldr r1, ._603\n\ + ldr r1, ._603 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2605,13 +2605,13 @@ void sub_80ECD80() bl sub_80F2D6C\n\ b ._625\n\ ._573:\n\ - ldr r1, ._607\n\ + ldr r1, ._607 @ 0x6dfc\n\ add r0, r4, r1\n\ ldrb r1, [r0]\n\ - ldr r2, ._607 + 4\n\ + ldr r2, ._607 + 4 @ 0x6dad\n\ add r0, r4, r2\n\ strb r1, [r0]\n\ - ldr r3, ._607 + 8\n\ + ldr r3, ._607 + 8 @ 0x6dae\n\ add r1, r4, r3\n\ mov r0, #0x6\n\ strb r0, [r1]\n\ @@ -2629,7 +2629,7 @@ void sub_80ECD80() ._574:\n\ mov r0, #0x2\n\ bl sub_80EF248\n\ - ldr r1, ._612\n\ + ldr r1, ._612 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2652,7 +2652,7 @@ void sub_80ECD80() ._576:\n\ mov r0, #0x2\n\ bl sub_80F1B8C\n\ - ldr r1, ._617\n\ + ldr r1, ._617 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2667,7 +2667,7 @@ void sub_80ECD80() beq ._614 @cond_branch\n\ b ._642\n\ ._614:\n\ - ldr r1, ._617\n\ + ldr r1, ._617 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2695,7 +2695,7 @@ void sub_80ECD80() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._623\n\ + ldr r0, ._623 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ @@ -2711,7 +2711,7 @@ void sub_80ECD80() b ._625\n\ ._581:\n\ bl sub_80F2598\n\ - ldr r1, ._627\n\ + ldr r1, ._627 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -2721,7 +2721,7 @@ void sub_80ECD80() ._627:\n\ .word gSharedMem\n\ ._582:\n\ - ldr r0, ._631\n\ + ldr r0, ._631 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -2738,7 +2738,7 @@ void sub_80ECD80() ._583:\n\ mov r0, #0x1\n\ bl sub_80F2C80\n\ - ldr r1, ._635\n\ + ldr r1, ._635 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -2752,8 +2752,8 @@ void sub_80ECD80() lsr r2, r0, #0x18\n\ cmp r2, #0\n\ bne ._642 @cond_branch\n\ - ldr r0, ._635\n\ - ldr r3, ._635 + 4\n\ + ldr r0, ._635 @ gSharedMem\n\ + ldr r3, ._635 + 4 @ 0x306\n\ add r1, r0, r3\n\ strh r2, [r1]\n\ mov r1, #0xc1\n\ @@ -2771,7 +2771,7 @@ void sub_80ECD80() ._585:\n\ mov r0, #0x5\n\ bl sub_80F2C80\n\ - ldr r1, ._639\n\ + ldr r1, ._639 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -2786,7 +2786,7 @@ void sub_80ECD80() bne ._642 @cond_branch\n\ bl sub_80F1DF0\n\ ._625:\n\ - ldr r1, ._639\n\ + ldr r1, ._639 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -2804,20 +2804,20 @@ void sub_80ECD80() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._642 @cond_branch\n\ - ldr r0, ._643\n\ - ldr r1, ._643 + 4\n\ + ldr r0, ._643 @ gSharedMem\n\ + ldr r1, ._643 + 4 @ 0x6dad\n\ add r0, r0, r1\n\ ldrb r1, [r0]\n\ mov r0, #0x2\n\ bl sub_80EF428\n\ - ldr r0, ._643 + 8\n\ + ldr r0, ._643 + 8 @ sub_80ECC08\n\ bl sub_80EBDBC\n\ - ldr r0, ._643 + 12\n\ + ldr r0, ._643 + 12 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._642 @cond_branch\n\ - ldr r0, ._643 + 16\n\ - ldr r2, ._643 + 20\n\ + ldr r0, ._643 + 16 @ 0x6007de0\n\ + ldr r2, ._643 + 20 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -2952,7 +2952,7 @@ void sub_80ED01C() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._647\n\ + ldr r1, ._647 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -2963,7 +2963,7 @@ void sub_80ED01C() b ._736\n\ ._645:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._647 + 4\n\ + ldr r1, ._647 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -2999,7 +2999,7 @@ void sub_80ED01C() bl sub_80F2D04\n\ mov r0, #0x5\n\ bl sub_80F2D04\n\ - ldr r1, ._671\n\ + ldr r1, ._671 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -3017,7 +3017,7 @@ void sub_80ED01C() ._673:\n\ mov r0, #0x0\n\ bl sub_80EEFBC\n\ - ldr r1, ._676\n\ + ldr r1, ._676 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3034,7 +3034,7 @@ void sub_80ED01C() beq ._678 @cond_branch\n\ b ._736\n\ ._678:\n\ - ldr r4, ._681\n\ + ldr r4, ._681 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -3054,7 +3054,7 @@ void sub_80ED01C() ._681:\n\ .word gSharedMem\n\ ._653:\n\ - ldr r0, ._686\n\ + ldr r0, ._686 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -3066,7 +3066,7 @@ void sub_80ED01C() bl SetVBlankCallback\n\ bl sub_80EED0C\n\ bl sub_80EF814\n\ - ldr r1, ._686 + 4\n\ + ldr r1, ._686 + 4 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -3078,7 +3078,7 @@ void sub_80ED01C() .word gSharedMem\n\ ._654:\n\ bl sub_80F2620\n\ - ldr r1, ._689\n\ + ldr r1, ._689 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3089,7 +3089,7 @@ void sub_80ED01C() .word gSharedMem\n\ ._655:\n\ bl sub_80F4D44\n\ - ldr r1, ._693\n\ + ldr r1, ._693 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -3101,7 +3101,7 @@ void sub_80ED01C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._691 @cond_branch\n\ - ldr r1, ._693\n\ + ldr r1, ._693 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -3114,7 +3114,7 @@ void sub_80ED01C() ._693:\n\ .word gSharedMem\n\ ._691:\n\ - ldr r1, ._696\n\ + ldr r1, ._696 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3129,7 +3129,7 @@ void sub_80ED01C() beq ._698 @cond_branch\n\ b ._736\n\ ._698:\n\ - ldr r1, ._701\n\ + ldr r1, ._701 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -3147,7 +3147,7 @@ void sub_80ED01C() beq ._703 @cond_branch\n\ b ._736\n\ ._703:\n\ - ldr r1, ._706\n\ + ldr r1, ._706 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -3159,7 +3159,7 @@ void sub_80ED01C() ._659:\n\ mov r0, #0x0\n\ bl sub_80F0264\n\ - ldr r1, ._711\n\ + ldr r1, ._711 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3173,7 +3173,7 @@ void sub_80ED01C() beq ._708 @cond_branch\n\ b ._736\n\ ._708:\n\ - ldr r1, ._711\n\ + ldr r1, ._711 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -3185,7 +3185,7 @@ void sub_80ED01C() ._661:\n\ mov r0, #0x0\n\ bl sub_80F3008\n\ - ldr r1, ._714\n\ + ldr r1, ._714 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -3200,7 +3200,7 @@ void sub_80ED01C() beq ._716 @cond_branch\n\ b ._736\n\ ._716:\n\ - ldr r1, ._719\n\ + ldr r1, ._719 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3221,7 +3221,7 @@ void sub_80ED01C() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._722\n\ + ldr r0, ._722 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ @@ -3234,7 +3234,7 @@ void sub_80ED01C() ._664:\n\ mov r0, #0x4\n\ bl sub_80EED2C\n\ - ldr r1, ._725\n\ + ldr r1, ._725 @ gSharedMem\n\ mov r3, #0xc1\n\ lsl r3, r3, #0x2\n\ add r1, r1, r3\n\ @@ -3244,7 +3244,7 @@ void sub_80ED01C() ._725:\n\ .word gSharedMem\n\ ._665:\n\ - ldr r0, ._729\n\ + ldr r0, ._729 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -3252,7 +3252,7 @@ void sub_80ED01C() lsr r1, r0, #0x18\n\ cmp r1, #0\n\ bne ._736 @cond_branch\n\ - ldr r2, ._729 + 4\n\ + ldr r2, ._729 + 4 @ 0x306\n\ add r0, r4, r2\n\ strh r1, [r0]\n\ mov r3, #0xc1\n\ @@ -3271,7 +3271,7 @@ void sub_80ED01C() ._666:\n\ mov r0, #0x1\n\ bl sub_80F2C80\n\ - ldr r1, ._733\n\ + ldr r1, ._733 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3285,8 +3285,8 @@ void sub_80ED01C() lsr r2, r0, #0x18\n\ cmp r2, #0\n\ bne ._736 @cond_branch\n\ - ldr r0, ._733\n\ - ldr r3, ._733 + 4\n\ + ldr r0, ._733 @ gSharedMem\n\ + ldr r3, ._733 + 4 @ 0x306\n\ add r1, r0, r3\n\ strh r2, [r1]\n\ mov r1, #0xc1\n\ @@ -3302,8 +3302,8 @@ void sub_80ED01C() .word gSharedMem\n\ .word 0x306\n\ ._668:\n\ - ldr r4, ._737\n\ - ldr r2, ._737 + 4\n\ + ldr r4, ._737 @ gSharedMem\n\ + ldr r2, ._737 + 4 @ 0x6dfc\n\ add r0, r4, r2\n\ ldrb r0, [r0]\n\ add r0, r0, #0x7\n\ @@ -3317,8 +3317,8 @@ void sub_80ED01C() add r0, r0, #0x1\n\ strh r0, [r4]\n\ ._669:\n\ - ldr r0, ._737\n\ - ldr r1, ._737 + 4\n\ + ldr r0, ._737 @ gSharedMem\n\ + ldr r1, ._737 + 4 @ 0x6dfc\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ add r0, r0, #0x7\n\ @@ -3328,14 +3328,14 @@ void sub_80ED01C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._736 @cond_branch\n\ - ldr r0, ._737 + 8\n\ + ldr r0, ._737 + 8 @ sub_80ED31C\n\ bl sub_80EBDBC\n\ - ldr r0, ._737 + 12\n\ + ldr r0, ._737 + 12 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._736 @cond_branch\n\ - ldr r0, ._737 + 16\n\ - ldr r2, ._737 + 20\n\ + ldr r0, ._737 + 16 @ 0x6007de0\n\ + ldr r2, ._737 + 20 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -3472,7 +3472,7 @@ void sub_80ED31C() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._743\n\ + ldr r0, ._743 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r4, r0, r1\n\ @@ -3500,7 +3500,7 @@ void sub_80ED31C() beq ._747 @cond_branch\n\ cmp r0, #0x2\n\ beq ._748 @cond_branch\n\ - ldr r0, ._751\n\ + ldr r0, ._751 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -3508,7 +3508,7 @@ void sub_80ED31C() beq ._749 @cond_branch\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._751 + 4\n\ + ldr r0, ._751 + 4 @ sub_80ED4D8\n\ bl sub_80EBDBC\n\ b ._762\n\ ._752:\n\ @@ -3535,7 +3535,7 @@ void sub_80ED31C() beq ._761 @cond_branch\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._757\n\ + ldr r0, ._757 @ sub_80ECD80\n\ bl sub_80EBDBC\n\ b ._762\n\ ._758:\n\ @@ -3559,12 +3559,12 @@ void sub_80ED31C() ._760:\n\ strh r0, [r4]\n\ ._761:\n\ - ldr r0, ._763\n\ + ldr r0, ._763 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._762 @cond_branch\n\ - ldr r0, ._763 + 4\n\ - ldr r1, ._763 + 8\n\ + ldr r0, ._763 + 4 @ gLink\n\ + ldr r1, ._763 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -3638,7 +3638,7 @@ void sub_80ED3D0() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._767\n\ + ldr r0, ._767 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -3648,7 +3648,7 @@ void sub_80ED3D0() b ._803\n\ ._765:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._767 + 4\n\ + ldr r1, ._767 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -3670,7 +3670,7 @@ void sub_80ED3D0() ._770:\n\ mov r0, #0x0\n\ bl SetVBlankCallback\n\ - ldr r1, ._780\n\ + ldr r1, ._780 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3682,7 +3682,7 @@ void sub_80ED3D0() ._771:\n\ bl sub_80EED0C\n\ bl sub_80F6134\n\ - ldr r1, ._783\n\ + ldr r1, ._783 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3694,7 +3694,7 @@ void sub_80ED3D0() ._772:\n\ mov r0, #0x0\n\ bl sub_80EEFBC\n\ - ldr r1, ._786\n\ + ldr r1, ._786 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3706,7 +3706,7 @@ void sub_80ED3D0() ._773:\n\ mov r0, #0x0\n\ bl sub_80F0264\n\ - ldr r1, ._790\n\ + ldr r1, ._790 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3718,7 +3718,7 @@ void sub_80ED3D0() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._803 @cond_branch\n\ - ldr r1, ._790\n\ + ldr r1, ._790 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3731,7 +3731,7 @@ void sub_80ED3D0() bl sub_8055870\n\ cmp r0, #0\n\ bne ._803 @cond_branch\n\ - ldr r1, ._794\n\ + ldr r1, ._794 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3743,7 +3743,7 @@ void sub_80ED3D0() ._776:\n\ mov r0, #0x0\n\ bl sub_80F3008\n\ - ldr r4, ._797\n\ + ldr r4, ._797 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -3755,7 +3755,7 @@ void sub_80ED3D0() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._797 + 4\n\ + ldr r0, ._797 + 4 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ @@ -3773,19 +3773,19 @@ void sub_80ED3D0() ._777:\n\ mov r0, #0x4\n\ bl sub_80EED2C\n\ - ldr r1, ._801\n\ + ldr r1, ._801 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ ldrh r0, [r1]\n\ add r0, r0, #0x1\n\ strh r0, [r1]\n\ - ldr r0, ._801 + 4\n\ + ldr r0, ._801 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._803 @cond_branch\n\ - ldr r0, ._801 + 8\n\ - ldr r2, ._801 + 12\n\ + ldr r0, ._801 + 8 @ 0x6007de0\n\ + ldr r2, ._801 + 12 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -3798,13 +3798,13 @@ void sub_80ED3D0() .word 0x6007de0\n\ .word 0x600f800\n\ ._778:\n\ - ldr r0, ._804\n\ + ldr r0, ._804 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._803 @cond_branch\n\ - ldr r0, ._804 + 4\n\ + ldr r0, ._804 + 4 @ sub_80ED31C\n\ bl sub_80EBDBC\n\ ._803:\n\ add sp, sp, #0x4\n\ @@ -3872,7 +3872,7 @@ void sub_80ED4D8() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._808\n\ + ldr r1, ._808 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -3883,7 +3883,7 @@ void sub_80ED4D8() b ._844\n\ ._806:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._808 + 4\n\ + ldr r1, ._808 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -3915,7 +3915,7 @@ void sub_80ED4D8() bl BeginNormalPaletteFade\n\ b ._820\n\ ._812:\n\ - ldr r0, ._824\n\ + ldr r0, ._824 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -3927,7 +3927,7 @@ void sub_80ED4D8() bl SetVBlankCallback\n\ bl sub_80EED0C\n\ bl sub_80F3130\n\ - ldr r1, ._824 + 4\n\ + ldr r1, ._824 + 4 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3941,7 +3941,7 @@ void sub_80ED4D8() bl sub_8055870\n\ cmp r0, #0\n\ bne ._844 @cond_branch\n\ - ldr r1, ._828\n\ + ldr r1, ._828 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -3952,7 +3952,7 @@ void sub_80ED4D8() .word gSharedMem\n\ ._814:\n\ bl sub_80F4CF0\n\ - ldr r1, ._831\n\ + ldr r1, ._831 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3963,7 +3963,7 @@ void sub_80ED4D8() .word gSharedMem\n\ ._815:\n\ bl sub_80EFF34\n\ - ldr r1, ._835\n\ + ldr r1, ._835 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -3975,7 +3975,7 @@ void sub_80ED4D8() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._844 @cond_branch\n\ - ldr r1, ._835\n\ + ldr r1, ._835 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -3988,7 +3988,7 @@ void sub_80ED4D8() bl sub_80F35B4\n\ mov r0, #0x2\n\ bl sub_80EEFBC\n\ - ldr r4, ._838\n\ + ldr r4, ._838 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -4000,7 +4000,7 @@ void sub_80ED4D8() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._838 + 4\n\ + ldr r0, ._838 + 4 @ sub_80EBD4C\n\ bl SetVBlankCallback\n\ ._820:\n\ mov r2, #0xc1\n\ @@ -4019,19 +4019,19 @@ void sub_80ED4D8() ._818:\n\ mov r0, #0x2\n\ bl sub_80EED2C\n\ - ldr r1, ._842\n\ + ldr r1, ._842 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ ldrh r0, [r1]\n\ add r0, r0, #0x1\n\ strh r0, [r1]\n\ - ldr r0, ._842 + 4\n\ + ldr r0, ._842 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._844 @cond_branch\n\ - ldr r0, ._842 + 8\n\ - ldr r2, ._842 + 12\n\ + ldr r0, ._842 + 8 @ 0x6007de0\n\ + ldr r2, ._842 + 12 @ 0x600f000\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -4044,13 +4044,13 @@ void sub_80ED4D8() .word 0x6007de0\n\ .word 0x600f000\n\ ._819:\n\ - ldr r0, ._845\n\ + ldr r0, ._845 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._844 @cond_branch\n\ - ldr r0, ._845 + 4\n\ + ldr r0, ._845 + 4 @ sub_80ED858\n\ bl sub_80EBDBC\n\ ._844:\n\ add sp, sp, #0x4\n\ @@ -4123,7 +4123,7 @@ void sub_80ED620() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._849\n\ + ldr r1, ._849 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -4134,7 +4134,7 @@ void sub_80ED620() b ._912\n\ ._847:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._849 + 4\n\ + ldr r1, ._849 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -4165,7 +4165,7 @@ void sub_80ED620() bl sub_80F1E84\n\ mov r0, #0x1\n\ bl sub_80F2D04\n\ - ldr r1, ._870\n\ + ldr r1, ._870 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -4192,7 +4192,7 @@ void sub_80ED620() beq ._875 @cond_branch\n\ b ._912\n\ ._875:\n\ - ldr r4, ._878\n\ + ldr r4, ._878 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -4212,7 +4212,7 @@ void sub_80ED620() ._878:\n\ .word gSharedMem\n\ ._855:\n\ - ldr r0, ._883\n\ + ldr r0, ._883 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -4226,8 +4226,8 @@ void sub_80ED620() bl SetVBlankCallback\n\ bl sub_80EED0C\n\ bl sub_80EF814\n\ - ldr r0, ._883 + 4\n\ - ldr r2, ._883 + 8\n\ + ldr r0, ._883 + 4 @ gSharedMem\n\ + ldr r2, ._883 + 8 @ 0x76aa\n\ add r1, r0, r2\n\ strb r4, [r1]\n\ mov r1, #0xc1\n\ @@ -4247,7 +4247,7 @@ void sub_80ED620() bl sub_80F2620\n\ b ._885\n\ ._857:\n\ - ldr r0, ._887\n\ + ldr r0, ._887 @ 0xd162\n\ add r1, r4, r0\n\ mov r0, #0x2\n\ strb r0, [r1]\n\ @@ -4262,7 +4262,7 @@ void sub_80ED620() .word 0xd162\n\ ._858:\n\ bl sub_80EFF34\n\ - ldr r1, ._890\n\ + ldr r1, ._890 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -4280,7 +4280,7 @@ void sub_80ED620() bl sub_8055870\n\ cmp r0, #0\n\ bne ._912 @cond_branch\n\ - ldr r1, ._894\n\ + ldr r1, ._894 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -4294,7 +4294,7 @@ void sub_80ED620() b ._896\n\ ._862:\n\ bl sub_80F33A8\n\ - ldr r4, ._898\n\ + ldr r4, ._898 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -4306,7 +4306,7 @@ void sub_80ED620() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._898 + 4\n\ + ldr r0, ._898 + 4 @ sub_80EBD4C\n\ bl SetVBlankCallback\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ @@ -4320,7 +4320,7 @@ void sub_80ED620() ._863:\n\ mov r0, #0x2\n\ bl sub_80EED2C\n\ - ldr r1, ._901\n\ + ldr r1, ._901 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -4330,7 +4330,7 @@ void sub_80ED620() ._901:\n\ .word gSharedMem\n\ ._864:\n\ - ldr r0, ._905\n\ + ldr r0, ._905 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -4347,7 +4347,7 @@ void sub_80ED620() ._865:\n\ mov r0, #0x1\n\ bl sub_80F2C80\n\ - ldr r1, ._909\n\ + ldr r1, ._909 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -4363,7 +4363,7 @@ void sub_80ED620() cmp r0, #0\n\ bne ._912 @cond_branch\n\ ._885:\n\ - ldr r1, ._909\n\ + ldr r1, ._909 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -4379,7 +4379,7 @@ void sub_80ED620() ._867:\n\ mov r0, #0x6\n\ bl sub_80F2C80\n\ - ldr r1, ._913\n\ + ldr r1, ._913 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -4392,14 +4392,14 @@ void sub_80ED620() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._912 @cond_branch\n\ - ldr r0, ._913 + 4\n\ + ldr r0, ._913 + 4 @ sub_80ED858\n\ bl sub_80EBDBC\n\ - ldr r0, ._913 + 8\n\ + ldr r0, ._913 + 8 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._912 @cond_branch\n\ - ldr r0, ._913 + 12\n\ - ldr r2, ._913 + 16\n\ + ldr r0, ._913 + 12 @ 0x6007de0\n\ + ldr r2, ._913 + 16 @ 0x600f000\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -4684,7 +4684,7 @@ void sub_80ED858() asm("\ push {r4, r5, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._917\n\ + ldr r1, ._917 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -4695,7 +4695,7 @@ void sub_80ED858() b ._999\n\ ._915:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._917 + 4\n\ + ldr r1, ._917 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -4720,7 +4720,7 @@ void sub_80ED858() ._920:\n\ bl sub_80F4F78\n\ bl sub_80F5B38\n\ - ldr r0, ._933\n\ + ldr r0, ._933 @ gSharedMem\n\ mov r4, #0xc1\n\ lsl r4, r4, #0x2\n\ add r0, r0, r4\n\ @@ -4738,7 +4738,7 @@ void sub_80ED858() beq ._935 @cond_branch\n\ b ._999\n\ ._935:\n\ - ldr r0, ._938\n\ + ldr r0, ._938 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -4752,7 +4752,7 @@ void sub_80ED858() ._922:\n\ mov r0, #0x1\n\ bl sub_80F0174\n\ - ldr r0, ._941\n\ + ldr r0, ._941 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r0, r2\n\ @@ -4774,24 +4774,24 @@ void sub_80ED858() bl sub_80F3D00\n\ b ._945\n\ ._924:\n\ - ldr r2, ._951\n\ + ldr r2, ._951 @ gMain\n\ ldrh r1, [r2, #0x2c]\n\ mov r0, #0x40\n\ and r0, r0, r1\n\ add r3, r2, #0\n\ cmp r0, #0\n\ beq ._949 @cond_branch\n\ - ldr r1, ._951 + 4\n\ + ldr r1, ._951 + 4 @ 0x87cb\n\ add r0, r5, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._949 @cond_branch\n\ - ldr r2, ._951 + 8\n\ + ldr r2, ._951 + 8 @ 0x76aa\n\ add r0, r5, r2\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._948 @cond_branch\n\ - ldr r4, ._951 + 12\n\ + ldr r4, ._951 + 12 @ 0x87dc\n\ add r0, r5, r4\n\ mov r1, #0x0\n\ ldsh r0, [r0, r1]\n\ @@ -4820,17 +4820,17 @@ void sub_80ED858() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._956 @cond_branch\n\ - ldr r4, ._958\n\ + ldr r4, ._958 @ 0x87cb\n\ add r0, r5, r4\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._956 @cond_branch\n\ - ldr r1, ._958 + 4\n\ + ldr r1, ._958 + 4 @ 0x76aa\n\ add r0, r5, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._955 @cond_branch\n\ - ldr r2, ._958 + 8\n\ + ldr r2, ._958 + 8 @ 0x87dc\n\ add r0, r5, r2\n\ sub r4, r4, #0x57\n\ add r1, r5, r4\n\ @@ -4869,7 +4869,7 @@ void sub_80ED858() bl PlaySE\n\ bl sub_80F4FDC\n\ bl move_anim_execute\n\ - ldr r0, ._962\n\ + ldr r0, ._962 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -4888,16 +4888,16 @@ void sub_80ED858() b ._999\n\ ._964:\n\ add r4, r5, #0\n\ - ldr r2, ._970\n\ + ldr r2, ._970 @ 0x76aa\n\ add r0, r4, r2\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ bne ._966 @cond_branch\n\ - ldr r1, ._970 + 4\n\ + ldr r1, ._970 + 4 @ 0x87dc\n\ add r0, r4, r1\n\ mov r2, #0x0\n\ ldsh r1, [r0, r2]\n\ - ldr r2, ._970 + 8\n\ + ldr r2, ._970 + 8 @ 0x87da\n\ add r0, r4, r2\n\ mov r2, #0x0\n\ ldsh r0, [r0, r2]\n\ @@ -4921,7 +4921,7 @@ void sub_80ED858() .word 0x87dc\n\ .word 0x87da\n\ ._966:\n\ - ldr r1, ._975\n\ + ldr r1, ._975 @ 0x6dac\n\ add r0, r5, r1\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ @@ -4948,7 +4948,7 @@ void sub_80ED858() b ._999\n\ ._977:\n\ bl sub_80F3D00\n\ - ldr r0, ._980\n\ + ldr r0, ._980 @ gSharedMem\n\ mov r4, #0xc1\n\ lsl r4, r4, #0x2\n\ add r0, r0, r4\n\ @@ -4963,7 +4963,7 @@ void sub_80ED858() bl sub_8055870\n\ cmp r0, #0\n\ bne ._999 @cond_branch\n\ - ldr r0, ._984\n\ + ldr r0, ._984 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -4976,7 +4976,7 @@ void sub_80ED858() mov r0, #0x3\n\ bl sub_80EEFBC\n\ bl sub_80F3668\n\ - ldr r0, ._987\n\ + ldr r0, ._987 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r0, r2\n\ @@ -4996,7 +4996,7 @@ void sub_80ED858() bl sub_80EEFBC\n\ bl sub_80F3698\n\ ._945:\n\ - ldr r0, ._991\n\ + ldr r0, ._991 @ gSharedMem\n\ mov r4, #0xc1\n\ lsl r4, r4, #0x2\n\ add r0, r0, r4\n\ @@ -5017,7 +5017,7 @@ void sub_80ED858() mov r0, #0x0\n\ bl sub_80F0174\n\ bl sub_80F2F48\n\ - ldr r5, ._995\n\ + ldr r5, ._995 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r5, r1\n\ @@ -5039,7 +5039,7 @@ void sub_80ED858() ._995:\n\ .word gSharedMem\n\ ._931:\n\ - ldr r0, ._1000\n\ + ldr r0, ._1000 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -5047,8 +5047,8 @@ void sub_80ED858() bne ._999 @cond_branch\n\ bl sub_80F3CE8\n\ bl sub_80F5BDC\n\ - ldr r0, ._1000 + 4\n\ - ldr r4, ._1000 + 8\n\ + ldr r0, ._1000 + 4 @ gSharedMem\n\ + ldr r4, ._1000 + 8 @ 0x76aa\n\ add r0, r0, r4\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ @@ -5058,7 +5058,7 @@ void sub_80ED858() bl sub_80F2D6C\n\ mov r0, #0x6\n\ bl sub_80F2D6C\n\ - ldr r0, ._1000 + 12\n\ + ldr r0, ._1000 + 12 @ sub_80ECA10\n\ bl sub_80EBDBC\n\ b ._999\n\ ._1001:\n\ @@ -5070,15 +5070,15 @@ void sub_80ED858() .word sub_80ECA10+1\n\ ._998:\n\ bl sub_80F3614\n\ - ldr r0, ._1003\n\ + ldr r0, ._1003 @ sub_80ED3D0\n\ bl sub_80EBDBC\n\ ._999:\n\ - ldr r0, ._1003 + 4\n\ + ldr r0, ._1003 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1002 @cond_branch\n\ - ldr r0, ._1003 + 8\n\ - ldr r1, ._1003 + 12\n\ + ldr r0, ._1003 + 8 @ gLink\n\ + ldr r1, ._1003 + 12 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -5483,7 +5483,7 @@ void sub_80EDB88() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._1007\n\ + ldr r1, ._1007 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -5494,7 +5494,7 @@ void sub_80EDB88() b ._1088\n\ ._1005:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._1007 + 4\n\ + ldr r1, ._1007 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -5526,7 +5526,7 @@ void sub_80EDB88() bl sub_80F1E84\n\ mov r0, #0x0\n\ bl sub_80F2D04\n\ - ldr r1, ._1029\n\ + ldr r1, ._1029 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5544,7 +5544,7 @@ void sub_80EDB88() ._1031:\n\ mov r0, #0x4\n\ bl sub_80EEFBC\n\ - ldr r1, ._1034\n\ + ldr r1, ._1034 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5561,7 +5561,7 @@ void sub_80EDB88() beq ._1036 @cond_branch\n\ b ._1088\n\ ._1036:\n\ - ldr r4, ._1039\n\ + ldr r4, ._1039 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -5578,7 +5578,7 @@ void sub_80EDB88() ._1039:\n\ .word gSharedMem\n\ ._1013:\n\ - ldr r0, ._1044\n\ + ldr r0, ._1044 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -5590,7 +5590,7 @@ void sub_80EDB88() bl SetVBlankCallback\n\ bl sub_80EED0C\n\ bl sub_80EF814\n\ - ldr r1, ._1044 + 4\n\ + ldr r1, ._1044 + 4 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5602,7 +5602,7 @@ void sub_80EDB88() .word gSharedMem\n\ ._1014:\n\ bl sub_80F2620\n\ - ldr r1, ._1047\n\ + ldr r1, ._1047 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5613,7 +5613,7 @@ void sub_80EDB88() .word gSharedMem\n\ ._1015:\n\ bl sub_80F638C\n\ - ldr r1, ._1051\n\ + ldr r1, ._1051 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5625,7 +5625,7 @@ void sub_80EDB88() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1049 @cond_branch\n\ - ldr r1, ._1051\n\ + ldr r1, ._1051 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5638,7 +5638,7 @@ void sub_80EDB88() ._1051:\n\ .word gSharedMem\n\ ._1049:\n\ - ldr r1, ._1054\n\ + ldr r1, ._1054 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5653,7 +5653,7 @@ void sub_80EDB88() beq ._1056 @cond_branch\n\ b ._1088\n\ ._1056:\n\ - ldr r1, ._1059\n\ + ldr r1, ._1059 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5671,7 +5671,7 @@ void sub_80EDB88() beq ._1061 @cond_branch\n\ b ._1088\n\ ._1061:\n\ - ldr r1, ._1064\n\ + ldr r1, ._1064 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5683,7 +5683,7 @@ void sub_80EDB88() ._1019:\n\ mov r0, #0x1\n\ bl sub_80F0264\n\ - ldr r1, ._1068\n\ + ldr r1, ._1068 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5695,7 +5695,7 @@ void sub_80EDB88() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1088 @cond_branch\n\ - ldr r1, ._1068\n\ + ldr r1, ._1068 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5707,7 +5707,7 @@ void sub_80EDB88() ._1021:\n\ mov r0, #0x2\n\ bl sub_80F2C80\n\ - ldr r1, ._1072\n\ + ldr r1, ._1072 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5720,7 +5720,7 @@ void sub_80EDB88() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1088 @cond_branch\n\ - ldr r1, ._1072\n\ + ldr r1, ._1072 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5732,7 +5732,7 @@ void sub_80EDB88() ._1023:\n\ mov r0, #0x1\n\ bl sub_80F3008\n\ - ldr r1, ._1075\n\ + ldr r1, ._1075 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -5745,7 +5745,7 @@ void sub_80EDB88() bl sub_8055870\n\ cmp r0, #0\n\ bne ._1088 @cond_branch\n\ - ldr r1, ._1079\n\ + ldr r1, ._1079 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -5766,7 +5766,7 @@ void sub_80EDB88() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._1082\n\ + ldr r0, ._1082 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ ._1038:\n\ mov r2, #0xc1\n\ @@ -5784,19 +5784,19 @@ void sub_80EDB88() ._1026:\n\ mov r0, #0x4\n\ bl sub_80EED2C\n\ - ldr r1, ._1086\n\ + ldr r1, ._1086 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ ldrh r0, [r1]\n\ add r0, r0, #0x1\n\ strh r0, [r1]\n\ - ldr r0, ._1086 + 4\n\ + ldr r0, ._1086 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1088 @cond_branch\n\ - ldr r0, ._1086 + 8\n\ - ldr r2, ._1086 + 12\n\ + ldr r0, ._1086 + 8 @ 0x6007de0\n\ + ldr r2, ._1086 + 12 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -5809,13 +5809,13 @@ void sub_80EDB88() .word 0x6007de0\n\ .word 0x600f800\n\ ._1027:\n\ - ldr r0, ._1089\n\ + ldr r0, ._1089 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._1088 @cond_branch\n\ - ldr r0, ._1089 + 4\n\ + ldr r0, ._1089 + 4 @ sub_80EDDBC\n\ bl sub_80EBDBC\n\ ._1088:\n\ add sp, sp, #0x4\n\ @@ -5928,7 +5928,7 @@ void sub_80EDDBC() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._1095\n\ + ldr r0, ._1095 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r4, r0, r1\n\ @@ -5956,7 +5956,7 @@ void sub_80EDDBC() beq ._1099 @cond_branch\n\ cmp r0, #0x2\n\ beq ._1100 @cond_branch\n\ - ldr r0, ._1103\n\ + ldr r0, ._1103 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -5964,7 +5964,7 @@ void sub_80EDDBC() beq ._1101 @cond_branch\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._1103 + 4\n\ + ldr r0, ._1103 + 4 @ sub_80EDEE4\n\ bl sub_80EBDBC\n\ b ._1114\n\ ._1104:\n\ @@ -5991,7 +5991,7 @@ void sub_80EDDBC() beq ._1113 @cond_branch\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._1109\n\ + ldr r0, ._1109 @ sub_80EDE70\n\ bl sub_80EBDBC\n\ b ._1114\n\ ._1110:\n\ @@ -6015,12 +6015,12 @@ void sub_80EDDBC() ._1112:\n\ strh r0, [r4]\n\ ._1113:\n\ - ldr r0, ._1115\n\ + ldr r0, ._1115 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1114 @cond_branch\n\ - ldr r0, ._1115 + 4\n\ - ldr r1, ._1115 + 8\n\ + ldr r0, ._1115 + 4 @ gLink\n\ + ldr r1, ._1115 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -6118,7 +6118,7 @@ void sub_80EDEE4() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._1134\n\ + ldr r1, ._1134 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -6129,7 +6129,7 @@ void sub_80EDEE4() b ._1180\n\ ._1132:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._1134 + 4\n\ + ldr r1, ._1134 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -6163,7 +6163,7 @@ void sub_80EDEE4() bl BeginNormalPaletteFade\n\ b ._1169\n\ ._1138:\n\ - ldr r0, ._1152\n\ + ldr r0, ._1152 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -6175,7 +6175,7 @@ void sub_80EDEE4() bl SetVBlankCallback\n\ bl sub_80EED0C\n\ bl sub_80F3130\n\ - ldr r1, ._1152 + 4\n\ + ldr r1, ._1152 + 4 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6188,7 +6188,7 @@ void sub_80EDEE4() ._1139:\n\ bl sub_80F66E0\n\ bl sub_80EEE08\n\ - ldr r1, ._1155\n\ + ldr r1, ._1155 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6202,7 +6202,7 @@ void sub_80EDEE4() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1180 @cond_branch\n\ - ldr r1, ._1159\n\ + ldr r1, ._1159 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6215,7 +6215,7 @@ void sub_80EDEE4() mov r0, #0x5\n\ bl sub_80EEFBC\n\ bl sub_80F38B8\n\ - ldr r1, ._1163\n\ + ldr r1, ._1163 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6227,7 +6227,7 @@ void sub_80EDEE4() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1180 @cond_branch\n\ - ldr r1, ._1163\n\ + ldr r1, ._1163 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6240,7 +6240,7 @@ void sub_80EDEE4() bl sub_8055870\n\ cmp r0, #0\n\ bne ._1180 @cond_branch\n\ - ldr r1, ._1167\n\ + ldr r1, ._1167 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6261,7 +6261,7 @@ void sub_80EDEE4() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._1170\n\ + ldr r0, ._1170 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ b ._1169\n\ ._1171:\n\ @@ -6271,19 +6271,19 @@ void sub_80EDEE4() ._1145:\n\ mov r0, #0x3\n\ bl sub_80EED2C\n\ - ldr r1, ._1174\n\ + ldr r1, ._1174 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ ldrh r0, [r1]\n\ add r0, r0, #0x1\n\ strh r0, [r1]\n\ - ldr r0, ._1174 + 4\n\ + ldr r0, ._1174 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1180 @cond_branch\n\ - ldr r0, ._1174 + 8\n\ - ldr r2, ._1174 + 12\n\ + ldr r0, ._1174 + 8 @ 0x6007de0\n\ + ldr r2, ._1174 + 12 @ 0x600f000\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -6296,7 +6296,7 @@ void sub_80EDEE4() .word 0x6007de0\n\ .word 0x600f000\n\ ._1146:\n\ - ldr r0, ._1178\n\ + ldr r0, ._1178 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -6320,7 +6320,7 @@ void sub_80EDEE4() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1180 @cond_branch\n\ - ldr r0, ._1181\n\ + ldr r0, ._1181 @ sub_80EE06C\n\ bl sub_80EBDBC\n\ ._1180:\n\ add sp, sp, #0x4\n\ @@ -6399,7 +6399,7 @@ void sub_80EE06C() asm("\ push {r4, r5, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._1185\n\ + ldr r1, ._1185 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -6410,7 +6410,7 @@ void sub_80EE06C() b ._1248\n\ ._1183:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._1185 + 4\n\ + ldr r1, ._1185 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -6431,7 +6431,7 @@ void sub_80EE06C() .word ._1196\n\ ._1188:\n\ bl sub_80F15A8\n\ - ldr r1, ._1198\n\ + ldr r1, ._1198 @ gSharedMem\n\ mov r5, #0xc1\n\ lsl r5, r5, #0x2\n\ add r1, r1, r5\n\ @@ -6441,14 +6441,14 @@ void sub_80EE06C() ._1198:\n\ .word gSharedMem\n\ ._1189:\n\ - ldr r2, ._1203\n\ + ldr r2, ._1203 @ gMain\n\ ldrh r1, [r2, #0x30]\n\ mov r0, #0x40\n\ and r0, r0, r1\n\ add r3, r2, #0\n\ cmp r0, #0\n\ beq ._1201 @cond_branch\n\ - ldr r1, ._1203 + 4\n\ + ldr r1, ._1203 + 4 @ 0x87dc\n\ add r0, r4, r1\n\ mov r2, #0x0\n\ ldsh r0, [r0, r2]\n\ @@ -6474,9 +6474,9 @@ void sub_80EE06C() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._1206 @cond_branch\n\ - ldr r1, ._1208\n\ + ldr r1, ._1208 @ 0x87dc\n\ add r0, r4, r1\n\ - ldr r2, ._1208 + 4\n\ + ldr r2, ._1208 + 4 @ 0x8774\n\ add r1, r4, r2\n\ mov r5, #0x0\n\ ldsh r2, [r0, r5]\n\ @@ -6507,7 +6507,7 @@ void sub_80EE06C() bl PlaySE\n\ mov r0, #0xb\n\ bl sub_80EEFBC\n\ - ldr r0, ._1212\n\ + ldr r0, ._1212 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -6525,7 +6525,7 @@ void sub_80EE06C() ._1214:\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._1217\n\ + ldr r0, ._1217 @ sub_80EE294\n\ bl sub_80EBDBC\n\ b ._1248\n\ ._1218:\n\ @@ -6539,7 +6539,7 @@ void sub_80EE06C() beq ._1219 @cond_branch\n\ b ._1248\n\ ._1219:\n\ - ldr r1, ._1222\n\ + ldr r1, ._1222 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6553,7 +6553,7 @@ void sub_80EE06C() add r1, r0, #0\n\ cmp r1, #0\n\ bne ._1248 @cond_branch\n\ - ldr r0, ._1226\n\ + ldr r0, ._1226 @ gSharedMem\n\ mov r5, #0xc1\n\ lsl r5, r5, #0x2\n\ add r0, r0, r5\n\ @@ -6565,7 +6565,7 @@ void sub_80EE06C() .word gSharedMem\n\ ._1192:\n\ bl sub_80F3B00\n\ - ldr r1, ._1229\n\ + ldr r1, ._1229 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6584,7 +6584,7 @@ void sub_80EE06C() cmp r0, #0\n\ bne ._1248 @cond_branch\n\ bl sub_80F1494\n\ - ldr r1, ._1233\n\ + ldr r1, ._1233 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6608,7 +6608,7 @@ void sub_80EE06C() mov r0, #0x5\n\ bl PlaySE\n\ bl sub_80F3B94\n\ - ldr r0, ._1238\n\ + ldr r0, ._1238 @ gSharedMem\n\ mov r5, #0xc1\n\ lsl r5, r5, #0x2\n\ add r0, r0, r5\n\ @@ -6620,7 +6620,7 @@ void sub_80EE06C() ._1238:\n\ .word gSharedMem\n\ ._1236:\n\ - ldr r0, ._1242\n\ + ldr r0, ._1242 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x2\n\ and r0, r0, r1\n\ @@ -6629,7 +6629,7 @@ void sub_80EE06C() mov r0, #0x5\n\ bl PlaySE\n\ bl sub_80F3B94\n\ - ldr r0, ._1242 + 4\n\ + ldr r0, ._1242 + 4 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -6646,7 +6646,7 @@ void sub_80EE06C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1248 @cond_branch\n\ - ldr r0, ._1246\n\ + ldr r0, ._1246 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r0, r2\n\ @@ -6666,18 +6666,18 @@ void sub_80EE06C() bne ._1248 @cond_branch\n\ mov r0, #0x5\n\ bl sub_80EEFBC\n\ - ldr r0, ._1250\n\ + ldr r0, ._1250 @ gSharedMem\n\ mov r5, #0xc1\n\ lsl r5, r5, #0x2\n\ add r0, r0, r5\n\ strh r4, [r0]\n\ ._1248:\n\ - ldr r0, ._1250 + 4\n\ + ldr r0, ._1250 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1249 @cond_branch\n\ - ldr r0, ._1250 + 8\n\ - ldr r1, ._1250 + 12\n\ + ldr r0, ._1250 + 8 @ gLink\n\ + ldr r1, ._1250 + 12 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -6794,7 +6794,7 @@ void sub_80EE294() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._1254\n\ + ldr r1, ._1254 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r0, r1, r2\n\ @@ -6805,7 +6805,7 @@ void sub_80EE294() b ._1288\n\ ._1252:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._1254 + 4\n\ + ldr r1, ._1254 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -6836,7 +6836,7 @@ void sub_80EE294() mov r3, #0x10\n\ b ._1266\n\ ._1258:\n\ - ldr r0, ._1270\n\ + ldr r0, ._1270 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -6849,7 +6849,7 @@ void sub_80EE294() bl sub_80EED0C\n\ bl sub_80F3C2C\n\ bl sub_80EEE08\n\ - ldr r1, ._1270 + 4\n\ + ldr r1, ._1270 + 4 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6863,7 +6863,7 @@ void sub_80EE294() bl sub_80F6134\n\ mov r0, #0x1\n\ bl sub_80F0264\n\ - ldr r1, ._1274\n\ + ldr r1, ._1274 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6875,7 +6875,7 @@ void sub_80EE294() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1288 @cond_branch\n\ - ldr r1, ._1274\n\ + ldr r1, ._1274 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6889,9 +6889,9 @@ void sub_80EE294() bl sub_80EEFBC\n\ mov r0, #0x1\n\ bl sub_80F3008\n\ - ldr r0, ._1277\n\ + ldr r0, ._1277 @ sub_80EBD18\n\ bl SetVBlankCallback\n\ - ldr r1, ._1277 + 4\n\ + ldr r1, ._1277 + 4 @ gSharedMem\n\ mov r2, #0xc1\n\ lsl r2, r2, #0x2\n\ add r1, r1, r2\n\ @@ -6905,7 +6905,7 @@ void sub_80EE294() bl sub_8055870\n\ cmp r0, #0\n\ bne ._1288 @cond_branch\n\ - ldr r1, ._1281\n\ + ldr r1, ._1281 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -6938,19 +6938,19 @@ void sub_80EE294() ._1264:\n\ mov r0, #0x4\n\ bl sub_80EED2C\n\ - ldr r1, ._1286\n\ + ldr r1, ._1286 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ ldrh r0, [r1]\n\ add r0, r0, #0x1\n\ strh r0, [r1]\n\ - ldr r0, ._1286 + 4\n\ + ldr r0, ._1286 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1288 @cond_branch\n\ - ldr r0, ._1286 + 8\n\ - ldr r2, ._1286 + 12\n\ + ldr r0, ._1286 + 8 @ 0x6007de0\n\ + ldr r2, ._1286 + 12 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -6963,13 +6963,13 @@ void sub_80EE294() .word 0x6007de0\n\ .word 0x600f800\n\ ._1265:\n\ - ldr r0, ._1289\n\ + ldr r0, ._1289 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._1288 @cond_branch\n\ - ldr r0, ._1289 + 4\n\ + ldr r0, ._1289 + 4 @ sub_80EDDBC\n\ bl sub_80EBDBC\n\ ._1288:\n\ add sp, sp, #0x4\n\ @@ -7042,7 +7042,7 @@ void sub_80EE3D8() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._1293\n\ + ldr r0, ._1293 @ gSharedMem\n\ mov r1, #0xc1\n\ lsl r1, r1, #0x2\n\ add r0, r0, r1\n\ @@ -7052,7 +7052,7 @@ void sub_80EE3D8() b ._1354\n\ ._1291:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._1293 + 4\n\ + ldr r1, ._1293 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -7080,7 +7080,7 @@ void sub_80EE3D8() bl sub_80F1E84\n\ mov r0, #0x0\n\ bl sub_80F2D04\n\ - ldr r1, ._1311\n\ + ldr r1, ._1311 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7098,7 +7098,7 @@ void sub_80EE3D8() ._1313:\n\ mov r0, #0x9\n\ bl sub_80EEFBC\n\ - ldr r1, ._1316\n\ + ldr r1, ._1316 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7115,7 +7115,7 @@ void sub_80EE3D8() beq ._1318 @cond_branch\n\ b ._1354\n\ ._1318:\n\ - ldr r4, ._1321\n\ + ldr r4, ._1321 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -7132,7 +7132,7 @@ void sub_80EE3D8() ._1321:\n\ .word gSharedMem\n\ ._1299:\n\ - ldr r0, ._1326\n\ + ldr r0, ._1326 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ @@ -7145,7 +7145,7 @@ void sub_80EE3D8() bl sub_80EED0C\n\ bl sub_80EF814\n\ bl sub_80EEE08\n\ - ldr r1, ._1326 + 4\n\ + ldr r1, ._1326 + 4 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7157,7 +7157,7 @@ void sub_80EE3D8() .word gSharedMem\n\ ._1300:\n\ bl sub_80F2620\n\ - ldr r1, ._1329\n\ + ldr r1, ._1329 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7169,7 +7169,7 @@ void sub_80EE3D8() ._1301:\n\ mov r0, #0x2\n\ bl sub_80F0264\n\ - ldr r1, ._1334\n\ + ldr r1, ._1334 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7183,7 +7183,7 @@ void sub_80EE3D8() beq ._1331 @cond_branch\n\ b ._1354\n\ ._1331:\n\ - ldr r1, ._1334\n\ + ldr r1, ._1334 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7195,7 +7195,7 @@ void sub_80EE3D8() ._1303:\n\ mov r0, #0x3\n\ bl sub_80F2C80\n\ - ldr r1, ._1338\n\ + ldr r1, ._1338 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7208,7 +7208,7 @@ void sub_80EE3D8() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1354 @cond_branch\n\ - ldr r1, ._1338\n\ + ldr r1, ._1338 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7220,7 +7220,7 @@ void sub_80EE3D8() ._1305:\n\ mov r0, #0x2\n\ bl sub_80F3008\n\ - ldr r1, ._1341\n\ + ldr r1, ._1341 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7233,7 +7233,7 @@ void sub_80EE3D8() bl sub_8055870\n\ cmp r0, #0\n\ bne ._1354 @cond_branch\n\ - ldr r1, ._1345\n\ + ldr r1, ._1345 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ @@ -7244,7 +7244,7 @@ void sub_80EE3D8() .word gSharedMem\n\ ._1307:\n\ bl sub_80F6F10\n\ - ldr r4, ._1348\n\ + ldr r4, ._1348 @ gSharedMem\n\ mov r1, #0xc2\n\ lsl r1, r1, #0x2\n\ add r0, r4, r1\n\ @@ -7256,7 +7256,7 @@ void sub_80EE3D8() mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r0, ._1348 + 4\n\ + ldr r0, ._1348 + 4 @ sub_80EBD68\n\ bl SetVBlankCallback\n\ ._1320:\n\ mov r0, #0xc1\n\ @@ -7275,19 +7275,19 @@ void sub_80EE3D8() ._1308:\n\ mov r0, #0x5\n\ bl sub_80EED2C\n\ - ldr r1, ._1352\n\ + ldr r1, ._1352 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r1, r1, r0\n\ ldrh r0, [r1]\n\ add r0, r0, #0x1\n\ strh r0, [r1]\n\ - ldr r0, ._1352 + 4\n\ + ldr r0, ._1352 + 4 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1354 @cond_branch\n\ - ldr r0, ._1352 + 8\n\ - ldr r2, ._1352 + 12\n\ + ldr r0, ._1352 + 8 @ 0x6007de0\n\ + ldr r2, ._1352 + 12 @ 0x600f800\n\ mov r1, #0x0\n\ mov r3, #0x4\n\ bl debug_sub_8008218\n\ @@ -7300,13 +7300,13 @@ void sub_80EE3D8() .word 0x6007de0\n\ .word 0x600f800\n\ ._1309:\n\ - ldr r0, ._1355\n\ + ldr r0, ._1355 @ gPaletteFade\n\ ldrb r1, [r0, #0x7]\n\ mov r0, #0x80\n\ and r0, r0, r1\n\ cmp r0, #0\n\ bne ._1354 @cond_branch\n\ - ldr r0, ._1355 + 4\n\ + ldr r0, ._1355 + 4 @ sub_80EE58C\n\ bl sub_80EBDBC\n\ ._1354:\n\ add sp, sp, #0x4\n\ @@ -7404,7 +7404,7 @@ void sub_80EE58C() asm("\ push {r4, r5, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r5, ._1361\n\ + ldr r5, ._1361 @ gSharedMem\n\ mov r0, #0xc1\n\ lsl r0, r0, #0x2\n\ add r4, r5, r0\n\ @@ -7432,7 +7432,7 @@ void sub_80EE58C() beq ._1365 @cond_branch\n\ cmp r0, #0x2\n\ beq ._1366 @cond_branch\n\ - ldr r0, ._1369\n\ + ldr r0, ._1369 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -7440,7 +7440,7 @@ void sub_80EE58C() beq ._1367 @cond_branch\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._1369 + 4\n\ + ldr r0, ._1369 + 4 @ sub_80EE658\n\ bl sub_80EBDBC\n\ b ._1384\n\ ._1370:\n\ @@ -7451,7 +7451,7 @@ void sub_80EE58C() ._1365:\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r1, ._1372\n\ + ldr r1, ._1372 @ 0x876e\n\ add r0, r5, r1\n\ ldrb r0, [r0]\n\ bl sub_80F0FFC\n\ @@ -7474,7 +7474,7 @@ void sub_80EE58C() beq ._1383 @cond_branch\n\ mov r0, #0x5\n\ bl PlaySE\n\ - ldr r0, ._1377\n\ + ldr r0, ._1377 @ sub_80EE8F4\n\ bl sub_80EBDBC\n\ b ._1384\n\ ._1378:\n\ @@ -7486,7 +7486,7 @@ void sub_80EE58C() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._1383 @cond_branch\n\ - ldr r1, ._1381\n\ + ldr r1, ._1381 @ 0x876e\n\ add r0, r5, r1\n\ ldrb r0, [r0]\n\ bl sub_80F0FFC\n\ @@ -7505,12 +7505,12 @@ void sub_80EE58C() ._1380:\n\ strh r0, [r4]\n\ ._1383:\n\ - ldr r0, ._1385\n\ + ldr r0, ._1385 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1384 @cond_branch\n\ - ldr r0, ._1385 + 4\n\ - ldr r1, ._1385 + 8\n\ + ldr r0, ._1385 + 4 @ gLink\n\ + ldr r1, ._1385 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -8013,13 +8013,13 @@ bool8 sub_80EEC10() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._1563\n\ + ldr r0, ._1563 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x40\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._1559 @cond_branch\n\ - ldr r1, ._1563 + 4\n\ + ldr r1, ._1563 + 4 @ gSharedMem\n\ add r3, r1, #1\n\ add r2, r1, #5\n\ ._1561:\n\ @@ -8051,7 +8051,7 @@ bool8 sub_80EEC10() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._1565 @cond_branch\n\ - ldr r1, ._1569\n\ + ldr r1, ._1569 @ gSharedMem\n\ mov r4, #0x0\n\ mov r2, #0x1\n\ ldsb r2, [r1, r2]\n\ @@ -8079,12 +8079,12 @@ bool8 sub_80EEC10() ._1569:\n\ .word gSharedMem+0x6dad\n\ ._1565:\n\ - ldr r0, ._1572\n\ + ldr r0, ._1572 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1571 @cond_branch\n\ - ldr r0, ._1572 + 4\n\ - ldr r1, ._1572 + 8\n\ + ldr r0, ._1572 + 4 @ gLink\n\ + ldr r1, ._1572 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ @@ -8139,7 +8139,7 @@ bool8 sub_80EEC90() asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._1577\n\ + ldr r0, ._1577 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x40\n\ and r0, r0, r1\n\ @@ -8147,8 +8147,8 @@ bool8 sub_80EEC90() lsr r3, r0, #0x10\n\ cmp r3, #0\n\ beq ._1574 @cond_branch\n\ - ldr r2, ._1577 + 4\n\ - ldr r0, ._1577 + 8\n\ + ldr r2, ._1577 + 4 @ gSharedMem\n\ + ldr r0, ._1577 + 8 @ 0x6dad\n\ add r1, r2, r0\n\ ldrb r0, [r1]\n\ sub r0, r0, #0x1\n\ @@ -8156,7 +8156,7 @@ bool8 sub_80EEC90() lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bge ._1580 @cond_branch\n\ - ldr r3, ._1577 + 12\n\ + ldr r3, ._1577 + 12 @ 0x6dae\n\ add r0, r2, r3\n\ ldrb r0, [r0]\n\ sub r0, r0, #0x1\n\ @@ -8174,8 +8174,8 @@ bool8 sub_80EEC90() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._1579 @cond_branch\n\ - ldr r0, ._1582\n\ - ldr r4, ._1582 + 4\n\ + ldr r0, ._1582 @ gSharedMem\n\ + ldr r4, ._1582 + 4 @ 0x6dad\n\ add r2, r0, r4\n\ ldrb r1, [r2]\n\ add r1, r1, #0x1\n\ @@ -8199,12 +8199,12 @@ bool8 sub_80EEC90() .word gSharedMem\n\ .word 0x6dad\n\ ._1579:\n\ - ldr r0, ._1585\n\ + ldr r0, ._1585 @ gLinkOpen\n\ ldrb r0, [r0]\n\ cmp r0, #0x1\n\ bne ._1584 @cond_branch\n\ - ldr r0, ._1585 + 4\n\ - ldr r1, ._1585 + 8\n\ + ldr r0, ._1585 + 4 @ gLink\n\ + ldr r1, ._1585 + 8 @ 0xfbd\n\ add r0, r0, r1\n\ ldrb r0, [r0]\n\ mov r1, #0x4\n\ diff --git a/src/roulette.c b/src/roulette.c index ffdbc2c26..838ce94f8 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -586,11 +586,11 @@ void sub_8115384(void) asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r1, ._35\n\ - ldr r0, ._35 + 4\n\ + ldr r1, ._35 @ gUnknown_Debug_03005FB8\n\ + ldr r0, ._35 + 4 @ 0x2019000\n\ str r0, [r1]\n\ - ldr r1, ._35 + 8\n\ - ldr r2, ._35 + 12\n\ + ldr r1, ._35 + 8 @ gMain\n\ + ldr r2, ._35 + 12 @ 0x43c\n\ add r0, r1, r2\n\ ldrb r0, [r0]\n\ add r2, r1, #0\n\ @@ -599,7 +599,7 @@ void sub_8115384(void) b ._64\n\ ._33:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._35 + 16\n\ + ldr r1, ._35 + 16 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -626,12 +626,12 @@ void sub_8115384(void) bl ScanlineEffect_Stop\n\ bl ClearVideoCallbacks\n\ bl sub_80F9368\n\ - ldr r1, ._47\n\ - ldr r3, ._47 + 4\n\ + ldr r1, ._47 @ 0x400000c\n\ + ldr r3, ._47 + 4 @ 0x4686\n\ add r0, r3, #0\n\ strh r0, [r1]\n\ sub r1, r1, #0x2\n\ - ldr r2, ._47 + 8\n\ + ldr r2, ._47 + 8 @ 0x4401\n\ add r0, r2, #0\n\ strh r0, [r1]\n\ add r1, r1, #0x46\n\ @@ -640,18 +640,18 @@ void sub_8115384(void) add r0, r3, #0\n\ strh r0, [r1]\n\ add r1, r1, #0x2\n\ - ldr r2, ._47 + 12\n\ + ldr r2, ._47 + 12 @ 0x60a\n\ add r0, r2, #0\n\ strh r0, [r1]\n\ - ldr r0, ._47 + 16\n\ + ldr r0, ._47 + 16 @ gUnknown_08E8096C\n\ mov r1, #0xc0\n\ lsl r1, r1, #0x13\n\ bl LZ77UnCompVram\n\ - ldr r0, ._47 + 20\n\ - ldr r1, ._47 + 24\n\ + ldr r0, ._47 + 20 @ gRouletteWheelTiles\n\ + ldr r1, ._47 + 24 @ 0x6004000\n\ bl LZ77UnCompVram\n\ - ldr r1, ._47 + 28\n\ - ldr r3, ._47 + 32\n\ + ldr r1, ._47 + 28 @ gMain\n\ + ldr r3, ._47 + 32 @ 0x43c\n\ add r1, r1, r3\n\ b ._61\n\ ._48:\n\ @@ -670,8 +670,8 @@ void sub_8115384(void) bl ResetPaletteFade\n\ bl ResetSpriteData\n\ bl ResetTasks\n\ - ldr r1, ._50\n\ - ldr r0, ._50 + 4\n\ + ldr r1, ._50 @ gMain\n\ + ldr r0, ._50 + 4 @ 0x43c\n\ add r1, r1, r0\n\ b ._61\n\ ._51:\n\ @@ -680,17 +680,17 @@ void sub_8115384(void) .word gMain\n\ .word 0x43c\n\ ._40:\n\ - ldr r0, ._53\n\ + ldr r0, ._53 @ gWindowTemplate_81E6C3C\n\ bl Text_LoadWindowTemplate\n\ - ldr r0, ._53 + 4\n\ + ldr r0, ._53 + 4 @ gWindowTemplate_81E6CE4\n\ bl InitMenuWindow\n\ - ldr r0, ._53 + 8\n\ + ldr r0, ._53 + 8 @ gUnknown_083F86BC\n\ mov r2, #0xe0\n\ lsl r2, r2, #0x1\n\ mov r1, #0x0\n\ bl LoadPalette\n\ - ldr r1, ._53 + 12\n\ - ldr r2, ._53 + 16\n\ + ldr r1, ._53 + 12 @ gMain\n\ + ldr r2, ._53 + 16 @ 0x43c\n\ add r1, r1, r2\n\ b ._61\n\ ._54:\n\ @@ -704,14 +704,14 @@ void sub_8115384(void) ._41:\n\ bl sub_8115238\n\ bl ClearBGTilemapBuffers\n\ - ldr r0, ._56\n\ - ldr r1, ._56 + 4\n\ + ldr r0, ._56 @ gUnknown_083F88BC\n\ + ldr r1, ._56 + 4 @ 0x2018800\n\ bl LZ77UnCompWram\n\ - ldr r0, ._56 + 8\n\ - ldr r1, ._56 + 12\n\ + ldr r0, ._56 + 8 @ gUnknown_083F8A60\n\ + ldr r1, ._56 + 12 @ 0x6003000\n\ bl LZ77UnCompVram\n\ - ldr r1, ._56 + 16\n\ - ldr r3, ._56 + 20\n\ + ldr r1, ._56 + 16 @ gMain\n\ + ldr r3, ._56 + 20 @ 0x43c\n\ add r1, r1, r3\n\ b ._61\n\ ._57:\n\ @@ -732,8 +732,8 @@ void sub_8115384(void) bl sub_8117900\n\ bl sub_8117BBC\n\ bl sub_8117DF4\n\ - ldr r1, ._59\n\ - ldr r0, ._59 + 4\n\ + ldr r1, ._59 @ gMain\n\ + ldr r0, ._59 + 4 @ 0x43c\n\ add r1, r1, r0\n\ b ._61\n\ ._60:\n\ @@ -744,8 +744,8 @@ void sub_8115384(void) ._43:\n\ bl AnimateSprites\n\ bl BuildOamBuffer\n\ - ldr r0, ._62\n\ - ldr r1, ._62 + 4\n\ + ldr r0, ._62 @ gSaveBlock1\n\ + ldr r1, ._62 + 4 @ 0x494\n\ add r0, r0, r1\n\ ldrh r0, [r0]\n\ bl sub_81180F4\n\ @@ -760,20 +760,20 @@ void sub_8115384(void) mov r2, #0x1d\n\ mov r3, #0x13\n\ bl Menu_DrawStdWindowFrame\n\ - ldr r0, ._62 + 8\n\ + ldr r0, ._62 + 8 @ gUnknown_081C4157\n\ mov r1, #0x1\n\ mov r2, #0xf\n\ bl Menu_PrintText\n\ - ldr r1, ._62 + 12\n\ + ldr r1, ._62 + 12 @ gSpriteCoordOffsetX\n\ mov r2, #0x3c\n\ neg r2, r2\n\ add r0, r2, #0\n\ strh r0, [r1]\n\ - ldr r1, ._62 + 16\n\ + ldr r1, ._62 + 16 @ gSpriteCoordOffsetY\n\ mov r0, #0x0\n\ strh r0, [r1]\n\ - ldr r1, ._62 + 20\n\ - ldr r3, ._62 + 24\n\ + ldr r1, ._62 + 20 @ gMain\n\ + ldr r3, ._62 + 24 @ 0x43c\n\ add r1, r1, r3\n\ b ._61\n\ ._63:\n\ @@ -789,10 +789,10 @@ void sub_8115384(void) ._44:\n\ mov r1, #0x80\n\ lsl r1, r1, #0x13\n\ - ldr r3, ._65\n\ + ldr r3, ._65 @ 0x1741\n\ add r0, r3, #0\n\ strh r0, [r1]\n\ - ldr r0, ._65 + 4\n\ + ldr r0, ._65 + 4 @ 0x43c\n\ add r1, r2, r0\n\ ._61:\n\ ldrb r0, [r1]\n\ @@ -805,22 +805,22 @@ void sub_8115384(void) .word 0x1741\n\ .word 0x43c\n\ ._45:\n\ - ldr r3, ._67\n\ + ldr r3, ._67 @ 0x4000208\n\ ldrh r2, [r3]\n\ mov r0, #0x0\n\ strh r0, [r3]\n\ - ldr r4, ._67 + 4\n\ + ldr r4, ._67 + 4 @ 0x4000200\n\ ldrh r0, [r4]\n\ mov r1, #0x1\n\ orr r0, r0, r1\n\ strh r0, [r4]\n\ strh r2, [r3]\n\ - ldr r2, ._67 + 8\n\ + ldr r2, ._67 + 8 @ 0x4000004\n\ ldrh r0, [r2]\n\ mov r1, #0x8\n\ orr r0, r0, r1\n\ strh r0, [r2]\n\ - ldr r0, ._67 + 12\n\ + ldr r0, ._67 + 12 @ sub_8115124\n\ bl SetVBlankCallback\n\ mov r0, #0x1\n\ str r0, [sp]\n\ @@ -829,33 +829,33 @@ void sub_8115384(void) mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginHardwarePaletteFade\n\ - ldr r0, ._67 + 16\n\ + ldr r0, ._67 + 16 @ sub_81156BC\n\ mov r1, #0x0\n\ bl CreateTask\n\ - ldr r4, ._67 + 20\n\ + ldr r4, ._67 + 20 @ 0x2019000\n\ add r1, r4, #0\n\ add r1, r1, #0xa4\n\ strb r0, [r1]\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x18\n\ - ldr r2, ._67 + 24\n\ + ldr r2, ._67 + 24 @ gTasks\n\ lsl r1, r0, #0x2\n\ add r1, r1, r0\n\ lsl r1, r1, #0x3\n\ add r1, r1, r2\n\ mov r0, #0x6\n\ strh r0, [r1, #0x14]\n\ - ldr r0, ._67 + 28\n\ - ldr r2, ._67 + 32\n\ + ldr r0, ._67 + 28 @ gSaveBlock1\n\ + ldr r2, ._67 + 32 @ 0x494\n\ add r0, r0, r2\n\ ldrh r0, [r0]\n\ strh r0, [r1, #0x22]\n\ - ldr r0, ._67 + 36\n\ + ldr r0, ._67 + 36 @ sub_8115634\n\ mov r1, #0x1\n\ bl CreateTask\n\ add r4, r4, #0xa5\n\ strb r0, [r4]\n\ - ldr r0, ._67 + 40\n\ + ldr r0, ._67 + 40 @ sub_81150FC\n\ bl SetMainCallback2\n\ ._64:\n\ add sp, sp, #0x4\n\ @@ -967,7 +967,7 @@ void sub_8115634(u8 unused) { asm("\ push {r4, r5, r6, lr}\n\ - ldr r0, ._75\n\ + ldr r0, ._75 @ 0x2019000\n\ add r3, r0, #0\n\ add r3, r3, #0x21\n\ ldrb r1, [r3]\n\ @@ -1030,17 +1030,17 @@ void sub_8115634(u8 unused) asr r0, r0, #0x10\n\ neg r0, r0\n\ strh r0, [r6, #0x30]\n\ - ldr r0, ._75 + 4\n\ + ldr r0, ._75 + 4 @ unk_203955C\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._74 @cond_branch\n\ - ldr r0, ._75 + 8\n\ + ldr r0, ._75 + 8 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x8\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._74 @cond_branch\n\ - ldr r2, ._75 + 12\n\ + ldr r2, ._75 + 12 @ gTasks\n\ add r0, r6, #0\n\ add r0, r0, #0xa4\n\ ldrb r1, [r0]\n\ @@ -1048,13 +1048,13 @@ void sub_8115634(u8 unused) add r0, r0, r1\n\ lsl r0, r0, #0x3\n\ add r0, r0, r2\n\ - ldr r1, ._75 + 16\n\ + ldr r1, ._75 + 16 @ sub_81157AC\n\ str r1, [r0]\n\ - ldr r0, ._75 + 20\n\ + ldr r0, ._75 + 20 @ gMPlay_SE1\n\ bl m4aMPlayStop\n\ - ldr r0, ._75 + 24\n\ + ldr r0, ._75 + 24 @ gMPlay_SE2\n\ bl m4aMPlayStop\n\ - ldr r0, ._75 + 28\n\ + ldr r0, ._75 + 28 @ gMPlay_SE3\n\ bl m4aMPlayStop\n\ ._74:\n\ pop {r4, r5, r6}\n\ @@ -2030,13 +2030,13 @@ void sub_8116B40(u8 taskid) // end roulette ? bne ._380 @cond_branch\n\ mov r0, #0x0\n\ bl SetVBlankCallback\n\ - ldr r0, ._381\n\ + ldr r0, ._381 @ 0x2019000\n\ mov r2, #0xbe\n\ lsl r2, r2, #0x1\n\ mov r1, #0x0\n\ bl memset\n\ - ldr r1, ._381 + 4\n\ - ldr r0, ._381 + 8\n\ + ldr r1, ._381 + 4 @ gSpriteCoordOffsetX\n\ + ldr r0, ._381 + 8 @ gSpriteCoordOffsetY\n\ mov r4, #0x0\n\ strh r5, [r0]\n\ strh r5, [r1]\n\ @@ -2045,20 +2045,20 @@ void sub_8116B40(u8 taskid) // end roulette ? bl ResetPaletteFade\n\ bl ResetSpriteData\n\ bl ClearBGTilemapBuffers\n\ - ldr r0, ._381 + 12\n\ + ldr r0, ._381 + 12 @ 0x4000050\n\ strh r5, [r0]\n\ add r0, r0, #0x2\n\ strh r5, [r0]\n\ add r0, r0, #0x2\n\ strh r5, [r0]\n\ - ldr r1, ._381 + 16\n\ - ldr r0, ._381 + 20\n\ + ldr r1, ._381 + 16 @ gFieldCallback\n\ + ldr r0, ._381 + 20 @ sub_8080990\n\ str r0, [r1]\n\ - ldr r0, ._381 + 24\n\ + ldr r0, ._381 + 24 @ c2_exit_to_overworld_2_switch\n\ bl SetMainCallback2\n\ add r0, r6, #0\n\ bl DestroyTask\n\ - ldr r0, ._381 + 28\n\ + ldr r0, ._381 + 28 @ unk_203955C\n\ strb r4, [r0]\n\ ._380:\n\ pop {r4, r5, r6}\n\ @@ -3189,13 +3189,13 @@ void debug_sub_812CDE4() lsl r0, r0, #0x18\n\ lsr r3, r0, #0x18\n\ add r4, r3, #0\n\ - ldr r0, ._575\n\ + ldr r0, ._575 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ cmp r0, #0\n\ beq ._572 @cond_branch\n\ - ldr r1, ._575 + 4\n\ + ldr r1, ._575 + 4 @ gTasks\n\ lsl r0, r3, #0x2\n\ add r0, r0, r3\n\ lsl r0, r0, #0x3\n\ @@ -3204,13 +3204,13 @@ void debug_sub_812CDE4() add r0, r0, #0x1\n\ strh r0, [r2, #0x22]\n\ lsl r0, r0, #0x10\n\ - ldr r1, ._575 + 8\n\ + ldr r1, ._575 + 8 @ 0x27100000\n\ cmp r0, r1\n\ bne ._573 @cond_branch\n\ mov r0, #0x0\n\ strh r0, [r2, #0x22]\n\ ._573:\n\ - ldr r0, ._575 + 12\n\ + ldr r0, ._575 + 12 @ gStringVar1\n\ mov r3, #0x22\n\ ldsh r1, [r2, r3]\n\ b ._584\n\ @@ -3226,7 +3226,7 @@ void debug_sub_812CDE4() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._577 @cond_branch\n\ - ldr r1, ._580\n\ + ldr r1, ._580 @ gTasks\n\ lsl r0, r3, #0x2\n\ add r0, r0, r3\n\ lsl r0, r0, #0x3\n\ @@ -3240,10 +3240,10 @@ void debug_sub_812CDE4() neg r1, r1\n\ cmp r0, r1\n\ bne ._578 @cond_branch\n\ - ldr r0, ._580 + 4\n\ + ldr r0, ._580 + 4 @ 0x270f\n\ strh r0, [r2, #0x22]\n\ ._578:\n\ - ldr r0, ._580 + 8\n\ + ldr r0, ._580 + 8 @ gStringVar1\n\ mov r3, #0x22\n\ ldsh r1, [r2, r3]\n\ b ._584\n\ @@ -3259,7 +3259,7 @@ void debug_sub_812CDE4() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._582 @cond_branch\n\ - ldr r1, ._585\n\ + ldr r1, ._585 @ gTasks\n\ lsl r0, r3, #0x2\n\ add r0, r0, r3\n\ lsl r0, r0, #0x3\n\ @@ -3269,14 +3269,14 @@ void debug_sub_812CDE4() add r0, r0, #0xa\n\ strh r0, [r2, #0x22]\n\ lsl r0, r0, #0x10\n\ - ldr r1, ._585 + 4\n\ + ldr r1, ._585 + 4 @ 0x270f0000\n\ cmp r0, r1\n\ ble ._583 @cond_branch\n\ - ldr r1, ._585 + 8\n\ + ldr r1, ._585 + 8 @ 0xffffd8fb\n\ add r0, r3, r1\n\ strh r0, [r2, #0x22]\n\ ._583:\n\ - ldr r0, ._585 + 12\n\ + ldr r0, ._585 + 12 @ gStringVar1\n\ mov r3, #0x22\n\ ldsh r1, [r2, r3]\n\ b ._584\n\ @@ -3293,7 +3293,7 @@ void debug_sub_812CDE4() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._587 @cond_branch\n\ - ldr r0, ._590\n\ + ldr r0, ._590 @ gTasks\n\ lsl r1, r3, #0x2\n\ add r1, r1, r3\n\ lsl r1, r1, #0x3\n\ @@ -3305,19 +3305,19 @@ void debug_sub_812CDE4() lsl r0, r0, #0x10\n\ cmp r0, #0\n\ bge ._588 @cond_branch\n\ - ldr r3, ._590 + 4\n\ + ldr r3, ._590 + 4 @ 0x2705\n\ add r0, r2, r3\n\ strh r0, [r1, #0x22]\n\ ._588:\n\ - ldr r0, ._590 + 8\n\ + ldr r0, ._590 + 8 @ gStringVar1\n\ mov r2, #0x22\n\ ldsh r1, [r1, r2]\n\ ._584:\n\ mov r2, #0x1\n\ mov r3, #0x4\n\ bl ConvertIntToDecimalStringN\n\ - ldr r4, ._590 + 12\n\ - ldr r1, ._590 + 16\n\ + ldr r4, ._590 + 12 @ gStringVar4\n\ + ldr r1, ._590 + 16 @ gOtherText_Coins\n\ add r0, r4, #0\n\ bl StringExpandPlaceholders\n\ add r0, r4, #0\n\ @@ -3338,34 +3338,34 @@ void debug_sub_812CDE4() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._592 @cond_branch\n\ - ldr r0, ._594\n\ - ldr r2, ._594 + 4\n\ + ldr r0, ._594 @ gSaveBlock1\n\ + ldr r2, ._594 + 4 @ gTasks\n\ lsl r1, r3, #0x2\n\ add r1, r1, r3\n\ lsl r1, r1, #0x3\n\ add r1, r1, r2\n\ ldrh r2, [r1, #0x22]\n\ - ldr r3, ._594 + 8\n\ + ldr r3, ._594 + 8 @ 0x494\n\ add r0, r0, r3\n\ mov r5, #0x0\n\ strh r2, [r0]\n\ - ldr r0, ._594 + 12\n\ + ldr r0, ._594 + 12 @ Task_Roulette_0\n\ str r0, [r1]\n\ - ldr r0, ._594 + 16\n\ + ldr r0, ._594 + 16 @ gStringVar1\n\ mov r2, #0x22\n\ ldsh r1, [r1, r2]\n\ mov r2, #0x1\n\ mov r3, #0x4\n\ bl ConvertIntToDecimalStringN\n\ - ldr r4, ._594 + 20\n\ - ldr r1, ._594 + 24\n\ + ldr r4, ._594 + 20 @ gStringVar4\n\ + ldr r1, ._594 + 24 @ gOtherText_Coins\n\ add r0, r4, #0\n\ bl StringExpandPlaceholders\n\ add r0, r4, #0\n\ mov r1, #0x9\n\ mov r2, #0x1\n\ bl MenuPrint_RightAligned\n\ - ldr r0, ._594 + 28\n\ + ldr r0, ._594 + 28 @ unk_2039560\n\ strb r5, [r0]\n\ b ._596\n\ ._595:\n\ @@ -3384,33 +3384,33 @@ void debug_sub_812CDE4() and r0, r0, r1\n\ cmp r0, #0\n\ beq ._596 @cond_branch\n\ - ldr r0, ._597\n\ - ldr r2, ._597 + 4\n\ + ldr r0, ._597 @ gSaveBlock1\n\ + ldr r2, ._597 + 4 @ gTasks\n\ lsl r1, r4, #0x2\n\ add r1, r1, r4\n\ lsl r1, r1, #0x3\n\ add r1, r1, r2\n\ ldrh r2, [r1, #0x22]\n\ - ldr r3, ._597 + 8\n\ + ldr r3, ._597 + 8 @ 0x494\n\ add r0, r0, r3\n\ strh r2, [r0]\n\ - ldr r0, ._597 + 12\n\ + ldr r0, ._597 + 12 @ Task_Roulette_0\n\ str r0, [r1]\n\ - ldr r0, ._597 + 16\n\ + ldr r0, ._597 + 16 @ gStringVar1\n\ mov r2, #0x22\n\ ldsh r1, [r1, r2]\n\ mov r2, #0x1\n\ mov r3, #0x4\n\ bl ConvertIntToDecimalStringN\n\ - ldr r4, ._597 + 20\n\ - ldr r1, ._597 + 24\n\ + ldr r4, ._597 + 20 @ gStringVar4\n\ + ldr r1, ._597 + 24 @ gOtherText_Coins\n\ add r0, r4, #0\n\ bl StringExpandPlaceholders\n\ add r0, r4, #0\n\ mov r1, #0x9\n\ mov r2, #0x1\n\ bl MenuPrint_RightAligned\n\ - ldr r1, ._597 + 28\n\ + ldr r1, ._597 + 28 @ unk_2039560\n\ mov r0, #0x1\n\ strb r0, [r1]\n\ ._596:\n\ @@ -3437,13 +3437,13 @@ void debug_sub_812CFE8() push {r4, r5, lr}\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x18\n\ - ldr r2, ._600\n\ + ldr r2, ._600 @ gTasks\n\ lsl r1, r0, #0x2\n\ add r1, r1, r0\n\ lsl r1, r1, #0x3\n\ add r5, r1, r2\n\ - ldr r0, ._600 + 4\n\ - ldr r1, ._600 + 8\n\ + ldr r0, ._600 + 4 @ gSaveBlock1\n\ + ldr r1, ._600 + 8 @ 0x494\n\ add r0, r0, r1\n\ ldrh r0, [r0]\n\ strh r0, [r5, #0x22]\n\ @@ -3452,20 +3452,20 @@ void debug_sub_812CFE8() and r1, r1, r0\n\ cmp r1, #0\n\ beq ._599 @cond_branch\n\ - ldr r0, ._600 + 12\n\ + ldr r0, ._600 + 12 @ gSpecialVar_0x8004\n\ ldrh r1, [r0]\n\ mov r2, #0x80\n\ orr r1, r1, r2\n\ strh r1, [r0]\n\ ._599:\n\ - ldr r0, ._600 + 16\n\ + ldr r0, ._600 + 16 @ gStringVar1\n\ mov r2, #0x22\n\ ldsh r1, [r5, r2]\n\ mov r2, #0x1\n\ mov r3, #0x4\n\ bl ConvertIntToDecimalStringN\n\ - ldr r4, ._600 + 20\n\ - ldr r1, ._600 + 24\n\ + ldr r4, ._600 + 20 @ gStringVar4\n\ + ldr r1, ._600 + 24 @ gOtherText_Coins\n\ add r0, r4, #0\n\ bl StringExpandPlaceholders\n\ mov r0, #0x0\n\ @@ -3482,11 +3482,11 @@ void debug_sub_812CFE8() mov r2, #0x1d\n\ mov r3, #0x13\n\ bl Menu_DrawStdWindowFrame\n\ - ldr r0, ._600 + 28\n\ + ldr r0, ._600 + 28 @ gUnknown_Debug_0842510D\n\ mov r1, #0x1\n\ mov r2, #0xf\n\ bl Menu_PrintText\n\ - ldr r0, ._600 + 32\n\ + ldr r0, ._600 + 32 @ debug_sub_812CDE4\n\ str r0, [r5]\n\ pop {r4, r5}\n\ pop {r0}\n\ @@ -3514,14 +3514,14 @@ void PlayRoulette(void) asm("\ push {lr}\n\ bl ScriptContext2_Enable\n\ - ldr r1, ._604\n\ + ldr r1, ._604 @ unk_2039560\n\ mov r0, #0x0\n\ strb r0, [r1]\n\ - ldr r0, ._604 + 4\n\ + ldr r0, ._604 + 4 @ unk_203955C\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._602 @cond_branch\n\ - ldr r0, ._604 + 8\n\ + ldr r0, ._604 + 8 @ debug_sub_812CFE8\n\ mov r1, #0x0\n\ bl CreateTask\n\ b ._603\n\ @@ -3532,18 +3532,18 @@ void PlayRoulette(void) .word unk_203955C\n\ .word debug_sub_812CFE8+1\n\ ._602:\n\ - ldr r0, ._606\n\ + ldr r0, ._606 @ Task_Roulette_0\n\ mov r1, #0x0\n\ bl CreateTask\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x18\n\ - ldr r2, ._606 + 4\n\ + ldr r2, ._606 + 4 @ gTasks\n\ lsl r1, r0, #0x2\n\ add r1, r1, r0\n\ lsl r1, r1, #0x3\n\ add r1, r1, r2\n\ - ldr r0, ._606 + 8\n\ - ldr r2, ._606 + 12\n\ + ldr r0, ._606 + 8 @ gSaveBlock1\n\ + ldr r2, ._606 + 12 @ 0x494\n\ add r0, r0, r2\n\ ldrh r0, [r0]\n\ strh r0, [r1, #0x22]\n\ @@ -4479,10 +4479,10 @@ void debug_sub_812E698() and r1, r1, r0\n\ cmp r1, #0\n\ beq ._837 @cond_branch\n\ - ldr r4, ._839\n\ + ldr r4, ._839 @ 0x2019000\n\ add r1, r4, #0\n\ add r1, r1, #0x8c\n\ - ldr r0, ._839 + 4\n\ + ldr r0, ._839 + 4 @ 0x0\n\ str r0, [r1]\n\ add r0, r4, #0\n\ add r0, r0, #0x7e\n\ @@ -4494,7 +4494,7 @@ void debug_sub_812E698() add r1, r1, #0x7f\n\ strb r0, [r1]\n\ add r1, r4, #0\n\ - ldr r4, ._839 + 8\n\ + ldr r4, ._839 + 8 @ gUnknown_083F8DF4\n\ b ._838\n\ ._840:\n\ .align 2, 0\n\ @@ -4503,10 +4503,10 @@ void debug_sub_812E698() .word 0x0\n\ .word gUnknown_083F8DF4\n\ ._837:\n\ - ldr r6, ._841\n\ + ldr r6, ._841 @ 0x2019000\n\ add r5, r6, #0\n\ add r5, r5, #0x8c\n\ - ldr r4, ._841 + 4\n\ + ldr r4, ._841 + 4 @ gUnknown_083F8DF4\n\ ldrb r0, [r6, #0x4]\n\ lsl r0, r0, #0x1e\n\ lsr r0, r0, #0x19\n\ @@ -4534,9 +4534,9 @@ void debug_sub_812E698() ldrb r0, [r0, #0x2]\n\ strh r0, [r7, #0x32]\n\ add r1, r1, #0x98\n\ - ldr r0, ._841 + 8\n\ + ldr r0, ._841 + 8 @ 0x3dae147b\n\ str r0, [r1]\n\ - ldr r0, ._841 + 12\n\ + ldr r0, ._841 + 12 @ sub_8118D2C\n\ str r0, [r7, #0x1c]\n\ mov r0, #0x5\n\ strh r0, [r7, #0x30]\n\ @@ -4839,12 +4839,12 @@ void sub_8118F8C(struct Sprite *sprite) push {r6, r7}\n\ add r6, r0, #0\n\ bl sub_8118724\n\ - ldr r5, ._868\n\ + ldr r5, ._868 @ 0x2019000\n\ mov r0, #0x8c\n\ add r0, r0, r5\n\ mov r8, r0\n\ ldr r0, [r0]\n\ - ldr r1, ._868 + 4\n\ + ldr r1, ._868 + 4 @ 0x3f000000\n\ bl __gtsf2\n\ cmp r0, #0\n\ bgt ._874 @cond_branch\n\ @@ -4857,9 +4857,9 @@ void sub_8118F8C(struct Sprite *sprite) bne ._864 @cond_branch\n\ add r1, r5, #0\n\ add r1, r1, #0x90\n\ - ldr r0, ._868 + 8\n\ + ldr r0, ._868 + 8 @ 0x0\n\ str r0, [r1]\n\ - ldr r1, ._868 + 12\n\ + ldr r1, ._868 + 12 @ gUnknown_083F8DF4\n\ mov r9, r1\n\ ldrb r0, [r5, #0x4]\n\ lsl r7, r0, #0x1e\n\ @@ -4872,7 +4872,7 @@ void sub_8118F8C(struct Sprite *sprite) add r5, r0, #0\n\ cmp r4, #0\n\ bge ._865 @cond_branch\n\ - ldr r1, ._868 + 16\n\ + ldr r1, ._868 + 16 @ 0x43800000\n\ bl __addsf3\n\ add r5, r0, #0\n\ ._865:\n\ @@ -4892,11 +4892,11 @@ void sub_8118F8C(struct Sprite *sprite) str r0, [r1]\n\ mov r0, #0x4\n\ strh r0, [r6, #0x30]\n\ - ldr r0, ._868 + 20\n\ + ldr r0, ._868 + 20 @ unk_2039560\n\ ldrb r0, [r0]\n\ cmp r0, #0\n\ beq ._866 @cond_branch\n\ - ldr r0, ._868 + 24\n\ + ldr r0, ._868 + 24 @ debug_sub_812E698\n\ str r0, [r6, #0x1c]\n\ b ._874\n\ ._869:\n\ @@ -4910,7 +4910,7 @@ void sub_8118F8C(struct Sprite *sprite) .word unk_2039560\n\ .word debug_sub_812E698+1\n\ ._866:\n\ - ldr r0, ._871\n\ + ldr r0, ._871 @ sub_8118DE4\n\ str r0, [r6, #0x1c]\n\ b ._874\n\ ._872:\n\ @@ -4921,7 +4921,7 @@ void sub_8118F8C(struct Sprite *sprite) add r6, r5, #0\n\ add r6, r6, #0x90\n\ ldr r0, [r6]\n\ - ldr r4, ._875\n\ + ldr r4, ._875 @ 0x0\n\ add r1, r4, #0\n\ bl __nesf2\n\ cmp r0, #0\n\ @@ -4939,8 +4939,8 @@ void sub_8118F8C(struct Sprite *sprite) add r4, r4, #0x98\n\ ldr r0, [r4]\n\ bl __extendsfdf2\n\ - ldr r2, ._875 + 4\n\ - ldr r3, ._875 + 8\n\ + ldr r2, ._875 + 4 @ 0x3ff33333\n\ + ldr r3, ._875 + 8 @ 0x33333333\n\ bl __divdf3\n\ bl __truncdfsf2\n\ str r0, [r4]\n\ diff --git a/src/scene/cable_car.c b/src/scene/cable_car.c index d81263f87..114505e4d 100644 --- a/src/scene/cable_car.c +++ b/src/scene/cable_car.c @@ -216,10 +216,10 @@ u8 debug_sub_8138C14(void) { asm("\n\ push {lr}\n\ - ldr r0, ._1\n\ + ldr r0, ._1 @ unk_203955C\n\ mov r1, #0x1\n\ strb r1, [r0]\n\ - ldr r0, ._1 + 4\n\ + ldr r0, ._1 + 4 @ MauvilleCity_GameCorner_EventScript_1C407E\n\ bl ScriptContext1_SetupScript\n\ bl CloseMenu\n\ mov r0, #0x1\n\ @@ -237,10 +237,10 @@ u8 debug_sub_8138C34(void) { asm("\n\ push {lr}\n\ - ldr r0, ._3\n\ + ldr r0, ._3 @ unk_203955C\n\ mov r1, #0x1\n\ strb r1, [r0]\n\ - ldr r0, ._3 + 4\n\ + ldr r0, ._3 + 4 @ MauvilleCity_GameCorner_EventScript_1C40AC\n\ bl ScriptContext1_SetupScript\n\ bl CloseMenu\n\ mov r0, #0x1\n\ @@ -258,7 +258,7 @@ u8 debug_sub_8138C54(void) { asm("\n\ push {r4, lr}\n\ - ldr r4, ._10\n\ + ldr r4, ._10 @ gMain\n\ ldrh r0, [r4, #0x2e]\n\ cmp r0, #0x40\n\ bne ._5 @cond_branch\n\ @@ -275,14 +275,14 @@ u8 debug_sub_8138C54(void) ldrh r1, [r4, #0x2e]\n\ cmp r1, #0x1\n\ beq ._7 @cond_branch\n\ - ldr r0, ._10 + 4\n\ + ldr r0, ._10 + 4 @ 0x101\n\ cmp r1, r0\n\ bne ._8 @cond_branch\n\ - ldr r1, ._10 + 8\n\ + ldr r1, ._10 + 8 @ gSpecialVar_0x8004\n\ mov r0, #0x1\n\ strh r0, [r1]\n\ ._7:\n\ - ldr r4, ._10 + 12\n\ + ldr r4, ._10 + 12 @ gUnkDebug4Menu\n\ bl Menu_GetCursorPos\n\ lsl r0, r0, #0x18\n\ lsr r0, r0, #0x15\n\ @@ -320,7 +320,7 @@ u8 debug_sub_8138CC4(void) asm("\n\ push {lr}\n\ add sp, sp, #0xfffffff8\n\ - ldr r1, ._14\n\ + ldr r1, ._14 @ gSpecialVar_0x8004\n\ mov r0, #0x0\n\ strh r0, [r1]\n\ bl Menu_EraseScreen\n\ @@ -329,7 +329,7 @@ u8 debug_sub_8138CC4(void) mov r2, #0x1d\n\ mov r3, #0xc\n\ bl Menu_DrawStdWindowFrame\n\ - ldr r3, ._14 + 4\n\ + ldr r3, ._14 + 4 @ gUnkDebug4Menu\n\ mov r0, #0x14\n\ mov r1, #0x1\n\ mov r2, #0x5\n\ @@ -343,8 +343,8 @@ u8 debug_sub_8138CC4(void) mov r2, #0x1\n\ mov r3, #0x5\n\ bl InitMenu\n\ - ldr r1, ._14 + 8\n\ - ldr r0, ._14 + 12\n\ + ldr r1, ._14 + 8 @ gMenuCallback\n\ + ldr r0, ._14 + 12 @ debug_sub_8138C54\n\ str r0, [r1]\n\ mov r0, #0x0\n\ add sp, sp, #0x8\n\ @@ -384,7 +384,7 @@ u8 debug_sub_8138D74(void) { asm("\n\ push {lr}\n\ - ldr r1, ._21\n\ + ldr r1, ._21 @ gSpecialVar_0x8004\n\ mov r0, #0x0\n\ strh r0, [r1]\n\ bl CloseMenu\n\ @@ -402,7 +402,7 @@ u8 debug_sub_8138D8C(void) { asm("\n\ push {lr}\n\ - ldr r1, ._23\n\ + ldr r1, ._23 @ gSpecialVar_0x8004\n\ mov r0, #0x1\n\ strh r0, [r1]\n\ bl CloseMenu\n\ diff --git a/src/scene/cute_sketch.c b/src/scene/cute_sketch.c index 848249528..2af990290 100644 --- a/src/scene/cute_sketch.c +++ b/src/scene/cute_sketch.c @@ -38,8 +38,8 @@ void debug_sub_8110CCC(void) push {r4, r5, r6, r7, lr}\n\ mov r7, #0x0\n\ mov r1, #0x0\n\ - ldr r2, ._5\n\ - ldr r6, ._5 + 4\n\ + ldr r2, ._5 @ gUnknown_083E79C0\n\ + ldr r6, ._5 + 4 @ \n\ ._7:\n\ lsl r0, r1, #0x3\n\ add r4, r0, r2\n\ @@ -108,7 +108,7 @@ void debug_sub_8110CCC(void) mov r2, #0x1d\n\ mov r3, #0x13\n\ bl Menu_DrawStdWindowFrame\n\ - ldr r0, ._9\n\ + ldr r0, ._9 @ \n\ mov r1, #0x11\n\ mov r2, #0x11\n\ bl Menu_PrintText\n\ @@ -133,14 +133,14 @@ void debug_sub_8110D84(void) asm("\ push {r4, lr}\n\ add sp, sp, #0xfffffffc\n\ - ldr r0, ._13\n\ + ldr r0, ._13 @ \n\ ldrh r0, [r0, #0x4]\n\ cmp r0, #0x7\n\ bls ._11 @cond_branch\n\ b ._65\n\ ._11:\n\ lsl r0, r0, #0x2\n\ - ldr r1, ._13 + 4\n\ + ldr r1, ._13 + 4 @ \n\ add r0, r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ @@ -166,7 +166,7 @@ void debug_sub_8110D84(void) mov r2, #0x10\n\ mov r3, #0x0\n\ bl BeginNormalPaletteFade\n\ - ldr r1, ._25\n\ + ldr r1, ._25 @ \n\ ldrh r0, [r1, #0x4]\n\ add r0, r0, #0x1\n\ b ._62\n\ @@ -181,7 +181,7 @@ void debug_sub_8110D84(void) beq ._27 @cond_branch\n\ b ._65\n\ ._27:\n\ - ldr r1, ._30\n\ + ldr r1, ._30 @ \n\ ldrh r0, [r1, #0x4]\n\ add r0, r0, #0x1\n\ b ._62\n\ @@ -205,7 +205,7 @@ void debug_sub_8110D84(void) beq ._36 @cond_branch\n\ b ._65\n\ ._35:\n\ - ldr r4, ._41\n\ + ldr r4, ._41 @ \n\ ldrb r0, [r4, #0x1e]\n\ cmp r0, #0\n\ bne ._38 @cond_branch\n\ @@ -213,11 +213,11 @@ void debug_sub_8110D84(void) ._38:\n\ mov r0, #0x5\n\ bl m4aSongNumStart\n\ - ldr r1, ._41 + 4\n\ + ldr r1, ._41 + 4 @ \n\ add r0, r4, r1\n\ mov r1, #0x1\n\ strb r1, [r0]\n\ - ldr r0, ._41 + 8\n\ + ldr r0, ._41 + 8 @ \n\ bl sub_80FC244\n\ b ._65\n\ ._42:\n\ @@ -236,7 +236,7 @@ void debug_sub_8110D84(void) mov r2, #0x0\n\ mov r3, #0x10\n\ bl BeginNormalPaletteFade\n\ - ldr r1, ._44\n\ + ldr r1, ._44 @ \n\ ldrh r0, [r1, #0x4]\n\ add r0, r0, #0x1\n\ b ._62\n\ @@ -249,7 +249,7 @@ void debug_sub_8110D84(void) lsl r0, r0, #0x18\n\ cmp r0, #0\n\ bne ._65 @cond_branch\n\ - ldr r0, ._48\n\ + ldr r0, ._48 @ sub_805469C\n\ bl SetMainCallback2\n\ b ._65\n\ ._49:\n\ @@ -265,7 +265,7 @@ void debug_sub_8110D84(void) bl debug_sub_8110CCC\n\ b ._65\n\ ._50:\n\ - ldr r0, ._54\n\ + ldr r0, ._54 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -273,7 +273,7 @@ void debug_sub_8110D84(void) beq ._65 @cond_branch\n\ bl sub_80FBCA0\n\ bl sub_80FAEC4\n\ - ldr r1, ._54 + 4\n\ + ldr r1, ._54 + 4 @ \n\ ldrh r0, [r1, #0x4]\n\ add r0, r0, #0x1\n\ b ._62\n\ @@ -290,7 +290,7 @@ void debug_sub_8110D84(void) mov r0, #0x0\n\ mov r1, #0x0\n\ bl CreateRegionMapCursor\n\ - ldr r1, ._58\n\ + ldr r1, ._58 @ \n\ ldrh r0, [r1, #0x4]\n\ add r0, r0, #0x1\n\ b ._62\n\ @@ -305,7 +305,7 @@ void debug_sub_8110D84(void) beq ._60 @cond_branch\n\ bl debug_sub_8110CCC\n\ ._60:\n\ - ldr r0, ._63\n\ + ldr r0, ._63 @ gMain\n\ ldrh r1, [r0, #0x2e]\n\ mov r0, #0x1\n\ and r0, r0, r1\n\ @@ -313,7 +313,7 @@ void debug_sub_8110D84(void) beq ._65 @cond_branch\n\ bl sub_80FBCA0\n\ bl sub_80FAEC4\n\ - ldr r1, ._63 + 4\n\ + ldr r1, ._63 + 4 @ \n\ ldrh r0, [r1, #0x4]\n\ add r0, r0, #0x1\n\ b ._62\n\ @@ -330,7 +330,7 @@ void debug_sub_8110D84(void) mov r0, #0x0\n\ mov r1, #0x0\n\ bl CreateRegionMapCursor\n\ - ldr r1, ._66\n\ + ldr r1, ._66 @ \n\ mov r0, #0x3\n\ ._62:\n\ strh r0, [r1, #0x4]\n\ @@ -351,13 +351,13 @@ void debug_sub_8110F28(void) asm("\ push {lr}\n\ bl CB2_InitFlyRegionMap\n\ - ldr r0, ._69\n\ + ldr r0, ._69 @ gMain\n\ ldr r1, [r0, #0x4]\n\ - ldr r0, ._69 + 4\n\ + ldr r0, ._69 + 4 @ CB2_FlyRegionMap\n\ cmp r1, r0\n\ bne ._68 @cond_branch\n\ bl sub_80FBF94\n\ - ldr r0, ._69 + 8\n\ + ldr r0, ._69 + 8 @ debug_sub_8110D84\n\ bl sub_80FC244\n\ bl debug_sub_8110CCC\n\ ._68:\n\ -- cgit v1.2.3 From f87bd7328ce26deddc53b62e53827089bfacd30a Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 27 Jan 2018 20:34:43 -0600 Subject: decompile more debug functions in battle_2.c --- src/battle/battle_2.c | 2737 +++++++++++++++---------------------------------- 1 file changed, 800 insertions(+), 1937 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index b9b4290b5..a400257dd 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -67,12 +67,15 @@ struct UnknownStruct12 u8 filler4[0x54]; }; -void debug_sub_80139E4(void); -extern u8 gUnknown_02023A14_50; +extern void sub_802BBD4(); +extern const u8 Str_821F7B8[]; +extern u8 gUnknown_02023A14_50; extern const u16 gUnknown_08D004E0[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; - +extern const u8 Str_821F7EA[]; +extern const u8 gUnknown_Debug_821F7F3[]; +extern const u8 BattleText_YesNo[]; extern u8 gStatStageRatios[][2]; extern u8 gActionsByTurnOrder[4]; extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; @@ -85,7 +88,7 @@ extern u8 gCurrentActionFuncId; extern u8 gBanksByTurnOrder[]; extern struct UnknownStruct12 gUnknown_02024AD0[]; extern u8 gObjectBankIDs[]; -extern u16 gCurrentMove; +extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID. extern u8 gLastUsedAbility; extern u8 gStringBank; extern u8 gAbsentBankFlags; @@ -182,7 +185,7 @@ extern u8 gUnknown_081FA70C[][3]; extern u8 gUnknown_081FA71B[]; extern u8 gUnknown_081FA71F[]; - +void sub_8010824(void); static void BattlePrepIntroSlide(void); void CheckFocusPunch_ClearVarsBeforeTurnStarts(void); void SetActionsAndBanksTurnOrder(void); @@ -551,11 +554,7 @@ void sub_800EC9C(void) if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { gPreBattleCallback1 = gMain.callback1; -#if DEBUG - gMain.callback1 = debug_sub_80139E4; -#else gMain.callback1 = sub_8010824; -#endif SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -940,11 +939,7 @@ void sub_800F298(void) if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { gPreBattleCallback1 = gMain.callback1; -#if DEBUG - gMain.callback1 = debug_sub_80139E4; -#else gMain.callback1 = sub_8010824; -#endif SetMainCallback2(BattleMainCB2); if (gBattleTypeFlags & BATTLE_TYPE_LINK) { @@ -1363,6 +1358,10 @@ void c2_081284E0(void) // A LOT of debug code! #if DEBUG +extern u8 gUnknown_Debug_2023B62[]; +extern const u8 Str_821F7BD[]; +extern const u8 Str_821F7DA[]; + void debug_sub_8010818(void); void debug_sub_80108B8(void); void debug_sub_8010CAC(void); @@ -1372,8 +1371,10 @@ void debug_sub_8011EA0(u8); void debug_sub_8012294(void); void debug_sub_80123D8(u8); void debug_sub_8012540(void); -void debug_sub_80125A0(void); void debug_nullsub_3(void); +void debug_sub_80125A0(void); +u32 debug_sub_8013294(u8, void *, u32); +void debug_sub_80132C8(u8, void *, u32); struct UnknownStruct2023A76 { @@ -1500,8 +1501,6 @@ void debug_sub_80108B8(void) } } -// This function matches, but it somehow affects registers in SetActionsAndBanksTurnOrder. -#ifdef NONMATCHING void debug_sub_8010A7C(u8 a, u8 b) { s32 i; @@ -1510,49 +1509,6 @@ void debug_sub_8010A7C(u8 a, u8 b) gBattleTextBuff1[i] = a; gBattleTextBuff1[i] = EOS; } -#else -__attribute__((naked)) -void debug_sub_8010A7C() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r2, r1, #0x18\n" - " mov r1, #0x0\n" - " ldr r5, ._514 @ gBattleTextBuff1\n" - " cmp r1, r2\n" - " bge ._512 @cond_branch\n" - " add r3, r5, #0\n" - "._513:\n" - " add r0, r1, r3\n" - " strb r4, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, r2\n" - " blt ._513 @cond_branch\n" - "._512:\n" - " add r1, r1, r5\n" - " mov r0, #0xff\n" - " strb r0, [r1]\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._515:\n" - " .align 2, 0\n" - "._514:\n" - " .word gBattleTextBuff1\n" - "\n" - ); -} -#endif - -/* -void debug_sub_8010AAC(u8 a) -{ - u32 r7 = gUnknown_Debug_030043A4 * 5; -} -*/ __attribute__((naked)) void debug_sub_8010AAC() @@ -5195,6 +5151,21 @@ void debug_sub_8012878() ); } +/* +void debug_sub_80128B4(void) +{ + debug_sub_8010A7C(0, 9); + Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); + ConvertIntToDecimalStringN(gBattleTextBuff1, gCurrentMove, 2, 3); + gBattleTextBuff1[3] = CHAR_SPACE; + gBattleTextBuff1[4] = EOS; + StringAppend(gBattleTextBuff1, gSpeciesNames[gCurrentMove]); + Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); +} +*/ + __attribute__((naked)) void debug_sub_80128B4() { @@ -5261,1226 +5232,354 @@ void debug_sub_80128B4() ); } -__attribute__((naked)) -void debug_sub_8012938() +void debug_sub_8012938(u8 taskId) { - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, sl\n" - " mov r5, r9\n" - " mov r4, r8\n" - " push {r4, r5, r6}\n" - " add sp, sp, #0xfffffffc\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x7\n" - " bl debug_sub_8010A7C\n" - " ldr r6, ._880 @ gUnknown_03004210\n" - " ldr r4, ._880 + 4 @ gBattleTextBuff1\n" - " mov r0, #0x25\n" - " mov r8, r0\n" - " str r0, [sp]\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " mov r2, #0xa2\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " add r0, r6, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r1, ._880 + 8 @ Str_821F7B8\n" - " add r0, r4, #0\n" - " bl StringCopy\n" - " add r0, r4, #4\n" - " ldr r1, ._880 + 12 @ gUnknown_Debug_2023B62\n" - " mov sl, r1\n" - " ldr r2, ._880 + 16 @ gCurrentMove\n" - " mov r9, r2\n" - " ldrh r1, [r2]\n" - " sub r1, r1, #0x1\n" - " add r1, r1, sl\n" - " ldrb r1, [r1]\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, r8\n" - " str r0, [sp]\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " mov r2, #0xa2\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " add r0, r6, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r2, ._880 + 20 @ gSprites\n" - " ldr r1, ._880 + 24 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0xa\n" - " ldsh r0, [r0, r1]\n" - " lsl r1, r0, #0x4\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r2\n" - " mov r2, r9\n" - " ldrh r0, [r2]\n" - " sub r0, r0, #0x1\n" - " add r0, r0, sl\n" - " ldrb r0, [r0]\n" - " neg r0, r0\n" - " strh r0, [r1, #0x26]\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._881:\n" - " .align 2, 0\n" - "._880:\n" - " .word gUnknown_03004210\n" - " .word gBattleTextBuff1\n" - " .word Str_821F7B8\n" - " .word gUnknown_Debug_2023B62\n" - " .word gCurrentMove\n" - " .word gSprites\n" - " .word gTasks\n" - "\n" - ); + debug_sub_8010A7C(0, 7); + Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37); + Text_PrintWindow8002F44(&gUnknown_03004210); + StringCopy(gBattleTextBuff1, Str_821F7B8); + ConvertIntToDecimalStringN(gBattleTextBuff1 + 4, gUnknown_Debug_2023B62[gCurrentMove - 1], 2, 3); + Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37); + Text_PrintWindow8002F44(&gUnknown_03004210); + gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1]; } -__attribute__((naked)) -void debug_sub_80129F8() +void debug_sub_80129F8(u8 taskId) { - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xfffffff8\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r6, ._882 @ gCurrentMove\n" - " ldrh r2, [r6]\n" - " lsl r0, r2, #0x3\n" - " ldr r1, ._882 + 4 @ gMonFrontPicTable\n" - " add r0, r0, r1\n" - " ldr r1, ._882 + 8 @ gMonFrontPicCoords\n" - " mov r8, r1\n" - " lsl r2, r2, #0x2\n" - " add r2, r2, r8\n" - " ldrb r1, [r2]\n" - " ldrb r2, [r2, #0x1]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x12\n" - " ldr r4, ._882 + 12 @ gUnknown_081FAF4C\n" - " ldr r4, [r4, #0x4]\n" - " str r4, [sp]\n" - " ldrh r4, [r6]\n" - " str r4, [sp, #0x4]\n" - " bl DecompressPicFromTable_2\n" - " ldr r1, ._882 + 16 @ gMonPaletteTable\n" - " ldrh r0, [r6]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x88\n" - " lsl r1, r1, #0x1\n" - " mov r2, #0x20\n" - " bl LoadCompressedPalette\n" - " ldr r4, ._882 + 20 @ gSprites\n" - " ldr r0, ._882 + 24 @ gTasks\n" - " lsl r2, r5, #0x2\n" - " add r2, r2, r5\n" - " lsl r2, r2, #0x3\n" - " add r2, r2, r0\n" - " mov r1, #0xa\n" - " ldsh r0, [r2, r1]\n" - " lsl r1, r0, #0x4\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r4\n" - " ldrh r0, [r6]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r8\n" - " ldrb r0, [r0, #0x1]\n" - " add r0, r0, #0x28\n" - " strh r0, [r1, #0x22]\n" - " mov r1, #0xa\n" - " ldsh r0, [r2, r1]\n" - " lsl r1, r0, #0x4\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r4\n" - " ldr r3, ._882 + 28 @ gUnknown_Debug_2023B62\n" - " ldrh r0, [r6]\n" - " sub r0, r0, #0x1\n" - " add r0, r0, r3\n" - " ldrb r0, [r0]\n" - " neg r0, r0\n" - " strh r0, [r1, #0x26]\n" - " mov r0, #0xa\n" - " ldsh r1, [r2, r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r4\n" - " mov r1, #0x0\n" - " bl StartSpriteAnim\n" - " add sp, sp, #0x8\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._883:\n" - " .align 2, 0\n" - "._882:\n" - " .word gCurrentMove\n" - " .word gMonFrontPicTable\n" - " .word gMonFrontPicCoords\n" - " .word gUnknown_081FAF4C\n" - " .word gMonPaletteTable\n" - " .word gSprites\n" - " .word gTasks\n" - " .word gUnknown_Debug_2023B62\n" - "\n" - ); + DecompressPicFromTable_2( + &gMonFrontPicTable[gCurrentMove], + gMonFrontPicCoords[gCurrentMove].coords, + gMonFrontPicCoords[gCurrentMove].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[1], + gCurrentMove); + LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32); + gSprites[gTasks[taskId].data[1]].pos1.y = gMonFrontPicCoords[gCurrentMove].y_offset + 40; + gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1]; + StartSpriteAnim(&gSprites[gTasks[taskId].data[1]], 0); } -__attribute__((naked)) -void debug_sub_8012AC0() +void debug_sub_8012AC0(s8 a, u8 taskId) { - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r6, r1, #0x18\n" - " ldr r3, ._885 @ gCurrentMove\n" - " ldr r4, ._885 + 4 @ gBaseStats\n" - " b ._884\n" - "._886:\n" - " .align 2, 0\n" - "._885:\n" - " .word gCurrentMove\n" - " .word gBaseStats\n" - "._890:\n" - " ldrb r0, [r1, #0x7]\n" - " cmp r0, #0x2\n" - " beq ._887 @cond_branch\n" - "._884:\n" - " add r2, r3, #0\n" - " lsl r0, r5, #0x18\n" - " asr r0, r0, #0x18\n" - " ldrh r1, [r2]\n" - " add r0, r0, r1\n" - " strh r0, [r2]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._888 @cond_branch\n" - " ldr r1, ._891 @ 0x19b\n" - " add r0, r1, #0\n" - " strh r0, [r2]\n" - "._888:\n" - " ldrh r1, [r2]\n" - " ldr r0, ._891 @ 0x19b\n" - " cmp r1, r0\n" - " bne ._889 @cond_branch\n" - " mov r0, #0x1\n" - " strh r0, [r2]\n" - "._889:\n" - " ldrh r0, [r3]\n" - " lsl r1, r0, #0x3\n" - " sub r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r4\n" - " ldrb r0, [r1, #0x6]\n" - " cmp r0, #0x2\n" - " bne ._890 @cond_branch\n" - "._887:\n" - " bl debug_sub_80128B4\n" - " add r0, r6, #0\n" - " bl debug_sub_8012938\n" - " add r0, r6, #0\n" - " bl debug_sub_80129F8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._892:\n" - " .align 2, 0\n" - "._891:\n" - " .word 0x19b\n" - "\n" - ); + do + { + gCurrentMove += a; + if (gCurrentMove == 0) + gCurrentMove = 411; + if (gCurrentMove == 411) + gCurrentMove = 1; + } while (gBaseStats[gCurrentMove].type1 != 2 && gBaseStats[gCurrentMove].type2 != 2); + debug_sub_80128B4(); + debug_sub_8012938(taskId); + debug_sub_80129F8(taskId); } -__attribute__((naked)) -void debug_sub_8012B2C() +void debug_sub_8012B2C(u8 a) { - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x11\n" - " ldr r1, ._893 @ 0x600c772\n" - " add r2, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r2]\n" - " ldr r1, ._893 + 4 @ 0x600c7b2\n" - " add r0, r0, r1\n" - " mov r1, #0x2\n" - " strh r1, [r0]\n" - " bx lr\n" - "._894:\n" - " .align 2, 0\n" - "._893:\n" - " .word 0x600c772\n" - " .word 0x600c7b2\n" - "\n" - ); + *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 0) * 0x20) = 1; + *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 2) * 0x20) = 2; } -__attribute__((naked)) -void debug_sub_8012B4C() +void debug_sub_8012B4C(u8 a) { - asm( - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x11\n" - " ldr r2, ._895 @ 0x600c772\n" - " add r1, r0, r2\n" - " ldr r3, ._895 + 4 @ 0x1016\n" - " add r2, r3, #0\n" - " strh r2, [r1]\n" - " ldr r1, ._895 + 8 @ 0x600c7b2\n" - " add r0, r0, r1\n" - " strh r2, [r0]\n" - " bx lr\n" - "._896:\n" - " .align 2, 0\n" - "._895:\n" - " .word 0x600c772\n" - " .word 0x1016\n" - " .word 0x600c7b2\n" - "\n" - ); + *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 0) * 0x20) = 0x1016; + *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 2) * 0x20) = 0x1016; } -__attribute__((naked)) -void debug_sub_8012B70() +void debug_sub_8012B70(u8 taskId, u8 b) { - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r1, r1, #0x18\n" - " lsr r6, r1, #0x18\n" - " cmp r6, #0\n" - " beq ._897 @cond_branch\n" - " mov r4, #0x1\n" - " str r4, [sp]\n" - " mov r0, #0x18\n" - " mov r1, #0x1c\n" - " mov r2, #0x1d\n" - " mov r3, #0x21\n" - " bl sub_802BBD4\n" - " bl debug_sub_80128B4\n" - " add r0, r5, #0\n" - " bl debug_sub_8012938\n" - " add r0, r5, #0\n" - " bl debug_sub_80129F8\n" - " ldr r1, ._899 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " strh r4, [r0, #0x8]\n" - " b ._898\n" - "._900:\n" - " .align 2, 0\n" - "._899:\n" - " .word gTasks\n" - "._897:\n" - " str r6, [sp]\n" - " mov r0, #0x18\n" - " mov r1, #0x1c\n" - " mov r2, #0x1d\n" - " mov r3, #0x21\n" - " bl sub_802BBD4\n" - " ldr r0, ._901 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " mov r0, #0x2\n" - " strh r0, [r4, #0x8]\n" - " ldr r5, ._901 + 4 @ gUnknown_03004210\n" - " ldr r1, ._901 + 8 @ Str_821F7DA\n" - " mov r2, #0xa4\n" - " lsl r2, r2, #0x2\n" - " mov r0, #0x1d\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " mov r3, #0x1a\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - " strh r6, [r4, #0xe]\n" - " mov r0, #0x0\n" - " bl debug_sub_8012B2C\n" - "._898:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._902:\n" - " .align 2, 0\n" - "._901:\n" - " .word gTasks\n" - " .word gUnknown_03004210\n" - " .word Str_821F7DA\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8012C08() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffffc\n" - " add r4, r1, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x9\n" - " bl debug_sub_8010A7C\n" - " ldr r7, ._905 @ gUnknown_03004210\n" - " ldr r5, ._905 + 4 @ gBattleTextBuff1\n" - " mov r0, #0x23\n" - " mov r8, r0\n" - " str r0, [sp]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0x90\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " add r0, r7, #0\n" - " bl Text_PrintWindow8002F44\n" - " mov r0, #0x0\n" - " mov r1, #0x7\n" - " bl debug_sub_8010A7C\n" - " mov r0, #0x25\n" - " str r0, [sp]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0xa2\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " add r0, r7, #0\n" - " bl Text_PrintWindow8002F44\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x18\n" - " mov r1, #0x1c\n" - " mov r2, #0x1d\n" - " mov r3, #0x21\n" - " bl sub_802BBD4\n" - " cmp r4, #0\n" - " beq ._903 @cond_branch\n" - " ldr r1, ._905 + 8 @ gTasks\n" - " lsl r4, r6, #0x2\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x4\n" - " strh r1, [r0, #0x8]\n" - " ldr r1, ._905 + 12 @ gUnknown_Debug_821F7F3\n" - " mov r0, r8\n" - " str r0, [sp]\n" - " add r0, r7, #0\n" - " mov r2, #0x90\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " b ._904\n" - "._906:\n" - " .align 2, 0\n" - "._905:\n" - " .word gUnknown_03004210\n" - " .word gBattleTextBuff1\n" - " .word gTasks\n" - " .word gUnknown_Debug_821F7F3\n" - "._903:\n" - " ldr r1, ._907 @ gTasks\n" - " lsl r4, r6, #0x2\n" - " add r0, r4, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x3\n" - " strh r1, [r0, #0x8]\n" - " ldr r1, ._907 + 4 @ Str_821F7EA\n" - " mov r0, r8\n" - " str r0, [sp]\n" - " add r0, r7, #0\n" - " mov r2, #0x90\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - "._904:\n" - " add r5, r4, #0\n" - " ldr r4, ._907 + 8 @ gUnknown_03004210\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r1, ._907 + 12 @ BattleText_YesNo\n" - " mov r2, #0xa4\n" - " lsl r2, r2, #0x2\n" - " mov r0, #0x1d\n" - " str r0, [sp]\n" - " add r0, r4, #0\n" - " mov r3, #0x1a\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r1, ._907 @ gTasks\n" - " add r0, r5, r6\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xe]\n" - " mov r0, #0x1\n" - " bl debug_sub_8012B2C\n" - " add sp, sp, #0x4\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._908:\n" - " .align 2, 0\n" - "._907:\n" - " .word gTasks\n" - " .word Str_821F7EA\n" - " .word gUnknown_03004210\n" - " .word BattleText_YesNo\n" - "\n" - ); -} - -__attribute__((naked)) -void debug_sub_8012D10() -{ - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._911 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x4\n" - " bls ._909 @cond_branch\n" - " b ._1067\n" - "._909:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._911 + 4 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._912:\n" - " .align 2, 0\n" - "._911:\n" - " .word gTasks\n" - " .word ._913\n" - "._913:\n" - " .word ._914\n" - " .word ._915\n" - " .word ._916\n" - " .word ._917\n" - " .word ._918\n" - "._914:\n" - " bl debug_sub_80128B4\n" - " add r0, r5, #0\n" - " bl debug_sub_8012938\n" - " ldr r4, ._920 @ gUnknown_03004210\n" - " ldr r1, ._920 + 4 @ Str_821F7BD\n" - " mov r2, #0xc8\n" - " lsl r2, r2, #0x1\n" - " mov r0, #0x23\n" - " str r0, [sp]\n" - " add r0, r4, #0\n" - " mov r3, #0x13\n" - " bl Text_InitWindow\n" - " add r0, r4, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r1, ._920 + 8 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrh r1, [r0, #0x8]\n" - " add r1, r1, #0x1\n" - " strh r1, [r0, #0x8]\n" - " ldrb r0, [r0, #0xc]\n" - " b ._919\n" - "._921:\n" - " .align 2, 0\n" - "._920:\n" - " .word gUnknown_03004210\n" - " .word Str_821F7BD\n" - " .word gTasks\n" - "._915:\n" - " ldr r2, ._924 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._922 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._924 + 4 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xc]\n" - " bl nullsub_8\n" - " ldrh r1, [r4, #0xc]\n" - " mov r0, #0x3\n" - " neg r0, r0\n" - " and r0, r0, r1\n" - " b ._931\n" - "._925:\n" - " .align 2, 0\n" - "._924:\n" - " .word gMain\n" - " .word gTasks\n" - "._922:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._926 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._928 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xc]\n" - " bl nullsub_8\n" - " ldrh r1, [r4, #0xc]\n" - " mov r0, #0x2\n" - " b ._927\n" - "._929:\n" - " .align 2, 0\n" - "._928:\n" - " .word gTasks\n" - "._926:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._930 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._932 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xc]\n" - " bl nullsub_8\n" - " ldrh r1, [r4, #0xc]\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " and r0, r0, r1\n" - " b ._931\n" - "._933:\n" - " .align 2, 0\n" - "._932:\n" - " .word gTasks\n" - "._930:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._934 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._936 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xc]\n" - " bl nullsub_8\n" - " ldrh r1, [r4, #0xc]\n" - " mov r0, #0x1\n" - "._927:\n" - " orr r0, r0, r1\n" - "._931:\n" - " strh r0, [r4, #0xc]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - "._919:\n" - " mov r1, #0x0\n" - " bl sub_802E3E4\n" - " b ._1067\n" - "._937:\n" - " .align 2, 0\n" - "._936:\n" - " .word gTasks\n" - "._934:\n" - " ldrh r1, [r2, #0x30]\n" - " mov r4, #0x1\n" - " add r0, r4, #0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._938 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._943 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r2, #0xc\n" - " ldsh r0, [r0, r2]\n" - " cmp r0, #0x1\n" - " beq ._939 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._940 @cond_branch\n" - " cmp r0, #0\n" - " beq ._941 @cond_branch\n" - " b ._1067\n" - "._944:\n" - " .align 2, 0\n" - "._943:\n" - " .word gTasks\n" - "._940:\n" - " cmp r0, #0x2\n" - " beq ._945 @cond_branch\n" - "._990:\n" - " cmp r0, #0x3\n" - " bne ._946 @cond_branch\n" - " b ._1014\n" - "._946:\n" - " b ._1067\n" - "._941:\n" - " ldr r1, ._952 @ gUnknown_Debug_2023B62\n" - " ldr r0, ._952 + 4 @ gCurrentMove\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x1\n" - " add r1, r0, r1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3f\n" - " bls ._949 @cond_branch\n" - " b ._1067\n" - "._949:\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._1019\n" - "._953:\n" - " .align 2, 0\n" - "._952:\n" - " .word gUnknown_Debug_2023B62\n" - " .word gCurrentMove\n" - "._939:\n" - " mov r0, #0x1\n" - " b ._997\n" - "._945:\n" - " ldr r1, ._957 @ gCurrentMove\n" - " ldrh r2, [r1]\n" - " mov r0, #0xcd\n" - " lsl r0, r0, #0x1\n" - " cmp r2, r0\n" - " bhi ._955 @cond_branch\n" - " add r0, r2, #1\n" - "._979:\n" - " strh r0, [r1]\n" - " b ._1025\n" - "._958:\n" - " .align 2, 0\n" - "._957:\n" - " .word gCurrentMove\n" - "._955:\n" - " strh r4, [r1]\n" - " b ._1025\n" - "._938:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._960 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._966 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0xc\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x1\n" - " bne ._961 @cond_branch\n" - " b ._1007\n" - "._961:\n" - " cmp r0, #0x1\n" - " bgt ._963 @cond_branch\n" - " cmp r0, #0\n" - " beq ._964 @cond_branch\n" - " b ._1067\n" - "._967:\n" - " .align 2, 0\n" - "._966:\n" - " .word gTasks\n" - "._963:\n" - " cmp r0, #0x2\n" - " beq ._968 @cond_branch\n" - " b ._990\n" - "._964:\n" - " ldr r1, ._973 @ gUnknown_Debug_2023B62\n" - " ldr r0, ._973 + 4 @ gCurrentMove\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x1\n" - " add r1, r0, r1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._970 @cond_branch\n" - " b ._1067\n" - "._970:\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " b ._1019\n" - "._974:\n" - " .align 2, 0\n" - "._973:\n" - " .word gUnknown_Debug_2023B62\n" - " .word gCurrentMove\n" - "._968:\n" - " ldr r1, ._977 @ gCurrentMove\n" - " ldrh r0, [r1]\n" - " cmp r0, #0x1\n" - " bls ._975 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._979\n" - "._978:\n" - " .align 2, 0\n" - "._977:\n" - " .word gCurrentMove\n" - "._975:\n" - " ldr r2, ._980 @ 0x19b\n" - " add r0, r2, #0\n" - " b ._979\n" - "._981:\n" - " .align 2, 0\n" - "._980:\n" - " .word 0x19b\n" - "._960:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._982 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._987 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0xc\n" - " ldsh r0, [r0, r1]\n" - " cmp r0, #0x1\n" - " beq ._983 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._984 @cond_branch\n" - " cmp r0, #0\n" - " beq ._985 @cond_branch\n" - " b ._1067\n" - "._988:\n" - " .align 2, 0\n" - "._987:\n" - " .word gTasks\n" - "._984:\n" - " cmp r0, #0x2\n" - " beq ._989 @cond_branch\n" - " b ._990\n" - "._985:\n" - " ldr r3, ._995 @ gUnknown_Debug_2023B62\n" - " ldr r2, ._995 + 4 @ gCurrentMove\n" - " ldrh r0, [r2]\n" - " sub r0, r0, #0x1\n" - " add r1, r0, r3\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3f\n" - " bls ._991 @cond_branch\n" - " b ._1067\n" - "._991:\n" - " add r0, r0, #0x8\n" - " strb r0, [r1]\n" - " ldrh r0, [r2]\n" - " sub r0, r0, #0x1\n" - " add r1, r0, r3\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x40\n" - " bls ._1019 @cond_branch\n" - " mov r0, #0x40\n" - " strb r0, [r1]\n" - " b ._1019\n" - "._996:\n" - " .align 2, 0\n" - "._995:\n" - " .word gUnknown_Debug_2023B62\n" - " .word gCurrentMove\n" - "._983:\n" - " mov r0, #0x1\n" - " b ._997\n" - "._989:\n" - " ldr r3, ._1000 @ gCurrentMove\n" - " ldrh r2, [r3]\n" - " add r1, r2, #0\n" - " add r1, r1, #0xa\n" - " ldr r0, ._1000 + 4 @ 0x19b\n" - " cmp r1, r0\n" - " bgt ._998 @cond_branch\n" - " strh r1, [r3]\n" - " b ._1025\n" - "._1001:\n" - " .align 2, 0\n" - "._1000:\n" - " .word gCurrentMove\n" - " .word 0x19b\n" - "._998:\n" - " ldr r1, ._1003 @ 0xfffffe70\n" - " add r0, r2, r1\n" - " strh r0, [r3]\n" - " b ._1025\n" - "._1004:\n" - " .align 2, 0\n" - "._1003:\n" - " .word 0xfffffe70\n" - "._982:\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._1005 @cond_branch\n" - " b ._1067\n" - "._1005:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._1011 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r2, #0xc\n" - " ldsh r3, [r0, r2]\n" - " cmp r3, #0x1\n" - " beq ._1007 @cond_branch\n" - " cmp r3, #0x1\n" - " bgt ._1008 @cond_branch\n" - " cmp r3, #0\n" - " beq ._1009 @cond_branch\n" - " b ._1067\n" - "._1012:\n" - " .align 2, 0\n" - "._1011:\n" - " .word gTasks\n" - "._1008:\n" - " cmp r3, #0x2\n" - " beq ._1013 @cond_branch\n" - " cmp r3, #0x3\n" - " beq ._1014 @cond_branch\n" - " b ._1067\n" - "._1009:\n" - " ldr r1, ._1020 @ gUnknown_Debug_2023B62\n" - " ldr r0, ._1020 + 4 @ gCurrentMove\n" - " ldrh r0, [r0]\n" - " sub r0, r0, #0x1\n" - " add r2, r0, r1\n" - " ldrb r0, [r2]\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " bne ._1016 @cond_branch\n" - " b ._1067\n" - "._1016:\n" - " cmp r1, #0x8\n" - " bls ._1018 @cond_branch\n" - " sub r0, r0, #0x8\n" - " strb r0, [r2]\n" - " b ._1019\n" - "._1021:\n" - " .align 2, 0\n" - "._1020:\n" - " .word gUnknown_Debug_2023B62\n" - " .word gCurrentMove\n" - "._1018:\n" - " strb r3, [r2]\n" - "._1019:\n" - " add r0, r5, #0\n" - " bl debug_sub_8012938\n" - " b ._1067\n" - "._1007:\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - "._997:\n" - " add r1, r5, #0\n" - " bl debug_sub_8012AC0\n" - " b ._1067\n" - "._1013:\n" - " ldr r2, ._1026 @ gCurrentMove\n" - " ldrh r0, [r2]\n" - " add r1, r0, #0\n" - " sub r1, r1, #0xa\n" - " cmp r1, #0x1\n" - " ble ._1024 @cond_branch\n" - " strh r1, [r2]\n" - " b ._1025\n" - "._1027:\n" - " .align 2, 0\n" - "._1026:\n" - " .word gCurrentMove\n" - "._1024:\n" - " mov r1, #0xc8\n" - " lsl r1, r1, #0x1\n" - " add r0, r0, r1\n" - " strh r0, [r2]\n" - "._1025:\n" - " bl debug_sub_80128B4\n" - " add r0, r5, #0\n" - " bl debug_sub_8012938\n" - " add r0, r5, #0\n" - " bl debug_sub_80129F8\n" - " b ._1067\n" - "._1014:\n" - " add r0, r5, #0\n" - " mov r1, #0x0\n" - " bl debug_sub_8012B70\n" - " b ._1067\n" - "._916:\n" - " ldr r0, ._1032 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1030 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1032 + 4 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xe]\n" - " bl debug_sub_8012B4C\n" - " mov r0, #0x0\n" - " b ._1055\n" - "._1033:\n" - " .align 2, 0\n" - "._1032:\n" - " .word gMain\n" - " .word gTasks\n" - "._1030:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._1046 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1035 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1037 @ gTasks\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " ldrb r1, [r1, #0xe]\n" - " add r0, r5, #0\n" - " bl debug_sub_8012C08\n" - " b ._1067\n" - "._1038:\n" - " .align 2, 0\n" - "._1037:\n" - " .word gTasks\n" - "._1035:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._1039 @cond_branch\n" - " b ._1067\n" - "._1039:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._1063\n" - "._917:\n" - " ldr r0, ._1044 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1042 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1044 + 4 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xe]\n" - " bl debug_sub_8012B4C\n" - " mov r0, #0x0\n" - " b ._1055\n" - "._1045:\n" - " .align 2, 0\n" - "._1044:\n" - " .word gMain\n" - " .word gTasks\n" - "._1042:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._1046 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1047 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1050 @ gTasks\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " mov r2, #0xe\n" - " ldsh r0, [r1, r2]\n" - " cmp r0, #0\n" - " bne ._1063 @cond_branch\n" - " ldr r1, ._1050 + 4 @ gUnknown_Debug_2023B62\n" - " ldr r2, ._1050 + 8 @ 0x19b\n" - " mov r0, #0x1f\n" - " bl debug_sub_80132C8\n" - " b ._1063\n" - "._1051:\n" - " .align 2, 0\n" - "._1050:\n" - " .word gTasks\n" - " .word gUnknown_Debug_2023B62\n" - " .word 0x19b\n" - "._1047:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1067 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._1063\n" - "._918:\n" - " ldr r0, ._1056 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1054 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1056 + 4 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xe]\n" - " bl debug_sub_8012B4C\n" - " mov r0, #0x0\n" - " b ._1055\n" - "._1057:\n" - " .align 2, 0\n" - "._1056:\n" - " .word gMain\n" - " .word gTasks\n" - "._1054:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1058 @cond_branch\n" - "._1046:\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1060 @ gTasks\n" - " lsl r4, r5, #0x2\n" - " add r4, r4, r5\n" - " lsl r4, r4, #0x3\n" - " add r4, r4, r0\n" - " ldrb r0, [r4, #0xe]\n" - " bl debug_sub_8012B4C\n" - " mov r0, #0x1\n" - "._1055:\n" - " strh r0, [r4, #0xe]\n" - " bl debug_sub_8012B2C\n" - " b ._1067\n" - "._1061:\n" - " .align 2, 0\n" - "._1060:\n" - " .word gTasks\n" - "._1058:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1062 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r0, ._1065 @ gTasks\n" - " lsl r1, r5, #0x2\n" - " add r1, r1, r5\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r0\n" - " mov r2, #0xe\n" - " ldsh r0, [r1, r2]\n" - " cmp r0, #0\n" - " bne ._1063 @cond_branch\n" - " ldr r1, ._1065 + 4 @ gUnknown_Debug_2023B62\n" - " ldr r2, ._1065 + 8 @ 0x19b\n" - " mov r0, #0x1f\n" - " bl debug_sub_8013294\n" - "._1063:\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " bl debug_sub_8012B70\n" - " b ._1067\n" - "._1066:\n" - " .align 2, 0\n" - "._1065:\n" - " .word gTasks\n" - " .word gUnknown_Debug_2023B62\n" - " .word 0x19b\n" - "._1062:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1067 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " add r0, r5, #0\n" - " mov r1, #0x1\n" - " bl debug_sub_8012B70\n" - "._1067:\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + if (b != 0) + { + sub_802BBD4(24, 28, 29, 33, 1); + debug_sub_80128B4(); + debug_sub_8012938(taskId); + debug_sub_80129F8(taskId); + gTasks[taskId].data[0] = 1; + } + else + { + sub_802BBD4(24, 28, 29, 33, 0); + gTasks[taskId].data[0] = 2; + Text_InitWindow(&gUnknown_03004210, Str_821F7DA, 656, 26, 29); + Text_PrintWindow8002F44(&gUnknown_03004210); + gTasks[taskId].data[3] = 0; + debug_sub_8012B2C(0); + } +} + +void debug_sub_8012C08(u8 taskId, u8 b) +{ + debug_sub_8010A7C(0, 9); + Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); + debug_sub_8010A7C(0, 7); + Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37); + Text_PrintWindow8002F44(&gUnknown_03004210); + sub_802BBD4(24, 28, 29, 33, 0); + if (b != 0) + { + gTasks[taskId].data[0] = 4; + Text_InitWindow(&gUnknown_03004210, gUnknown_Debug_821F7F3, 144, 2, 35); + } + else + { + gTasks[taskId].data[0] = 3; + Text_InitWindow(&gUnknown_03004210, Str_821F7EA, 144, 2, 35); + } + Text_PrintWindow8002F44(&gUnknown_03004210); + Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 656, 26, 29); + Text_PrintWindow8002F44(&gUnknown_03004210); + gTasks[taskId].data[3] = 1; + debug_sub_8012B2C(1); +} + +void debug_sub_8012D10(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + debug_sub_80128B4(); + debug_sub_8012938(taskId); + Text_InitWindow(&gUnknown_03004210, Str_821F7BD, 400, 19, 35); + Text_PrintWindow8002F44(&gUnknown_03004210); + gTasks[taskId].data[0]++; + sub_802E3E4(gTasks[taskId].data[2], 0); + break; + case 1: + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + nullsub_8(gTasks[taskId].data[2]); + gTasks[taskId].data[2] &= ~2; + sub_802E3E4(gTasks[taskId].data[2], 0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + nullsub_8(gTasks[taskId].data[2]); + gTasks[taskId].data[2] |= 2; + sub_802E3E4(gTasks[taskId].data[2], 0); + } + else if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + nullsub_8(gTasks[taskId].data[2]); + gTasks[taskId].data[2] &= ~1; + sub_802E3E4(gTasks[taskId].data[2], 0); + } + else if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + nullsub_8(gTasks[taskId].data[2]); + gTasks[taskId].data[2] |= 1; + sub_802E3E4(gTasks[taskId].data[2], 0); + } + else if (gMain.newAndRepeatedKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + switch (gTasks[taskId].data[2]) + { + case 0: + if (gUnknown_Debug_2023B62[gCurrentMove - 1] < 64) + { + gUnknown_Debug_2023B62[gCurrentMove - 1] += 1; + debug_sub_8012938(taskId); + } + break; + case 1: + debug_sub_8012AC0(1, taskId); + break; + case 2: + if (gCurrentMove < 411) + gCurrentMove++; + else + gCurrentMove = 1; + debug_sub_80128B4(); + debug_sub_8012938(taskId); + debug_sub_80129F8(taskId); + break; + case 3: + debug_sub_8012B70(taskId, 0); + break; + } + } + else if (gMain.newAndRepeatedKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + switch (gTasks[taskId].data[2]) + { + case 0: + if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 0) + { + gUnknown_Debug_2023B62[gCurrentMove - 1] -= 1; + debug_sub_8012938(taskId); + } + break; + case 1: + debug_sub_8012AC0(-1, taskId); + break; + case 2: + if (gCurrentMove > 1) + gCurrentMove--; + else + gCurrentMove = 411; + debug_sub_80128B4(); + debug_sub_8012938(taskId); + debug_sub_80129F8(taskId); + break; + case 3: + debug_sub_8012B70(taskId, 0); + break; + } + } + else if (gMain.newAndRepeatedKeys & R_BUTTON) + { + PlaySE(SE_SELECT); + switch (gTasks[taskId].data[2]) + { + case 0: + if (gUnknown_Debug_2023B62[gCurrentMove - 1] < 64) + { + gUnknown_Debug_2023B62[gCurrentMove - 1] += 8; + if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 64) + gUnknown_Debug_2023B62[gCurrentMove - 1] = 64; + debug_sub_8012938(taskId); + } + break; + case 1: + debug_sub_8012AC0(1, taskId); + break; + case 2: + if (gCurrentMove + 10 < 412) + gCurrentMove += 10; + else + gCurrentMove -= 400; + debug_sub_80128B4(); + debug_sub_8012938(taskId); + debug_sub_80129F8(taskId); + break; + case 3: + debug_sub_8012B70(taskId, 0); + break; + } + } + else if (gMain.newAndRepeatedKeys & L_BUTTON) + { + PlaySE(SE_SELECT); + switch (gTasks[taskId].data[2]) + { + case 0: + if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 0) + { + if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 8) + gUnknown_Debug_2023B62[gCurrentMove - 1] -= 8; + else + gUnknown_Debug_2023B62[gCurrentMove - 1] = 0; + debug_sub_8012938(taskId); + } + break; + case 1: + debug_sub_8012AC0(-1, taskId); + break; + case 2: + if (gCurrentMove - 10 > 1) + gCurrentMove -= 10; + else + gCurrentMove += 400; + debug_sub_80128B4(); + debug_sub_8012938(taskId); + debug_sub_80129F8(taskId); + break; + case 3: + debug_sub_8012B70(taskId, 0); + break; + } + } + break; + case 2: + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + debug_sub_8012B4C(gTasks[taskId].data[3]); + gTasks[taskId].data[3] = 0; + debug_sub_8012B2C(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + debug_sub_8012B4C(gTasks[taskId].data[3]); + gTasks[taskId].data[3] = 1; + debug_sub_8012B2C(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + debug_sub_8012C08(taskId, gTasks[taskId].data[3]); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + asm(""); + debug_sub_8012B70(taskId, 1); + } + return; + case 3: + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + debug_sub_8012B4C(gTasks[taskId].data[3]); + gTasks[taskId].data[3] = 0; + debug_sub_8012B2C(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + debug_sub_8012B4C(gTasks[taskId].data[3]); + gTasks[taskId].data[3] = 1; + debug_sub_8012B2C(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gTasks[taskId].data[3] == 0) + debug_sub_80132C8(31, gUnknown_Debug_2023B62, 411); + debug_sub_8012B70(taskId, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + debug_sub_8012B70(taskId, 1); + } + break; + case 4: + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + debug_sub_8012B4C(gTasks[taskId].data[3]); + gTasks[taskId].data[3] = 0; + debug_sub_8012B2C(0); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + debug_sub_8012B4C(gTasks[taskId].data[3]); + gTasks[taskId].data[3] = 1; + debug_sub_8012B2C(1); + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gTasks[taskId].data[3] == 0) + debug_sub_8013294(31, gUnknown_Debug_2023B62, 411); + debug_sub_8012B70(taskId, 1); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + debug_sub_8012B70(taskId, 1); + } + break; + } } u8 debug_sub_8013240(void) @@ -6769,683 +5868,103 @@ void dp11b_obj_free(u8 a, u8 b) } else { - if (!ewram17810[a].unk0_2) - return; - r4 = gSprites[ewram17810[a].unk3].data[3]; - DestroySprite(&gSprites[ewram17810[a].unk3]); - ewram17810[a].unk0_2 = 0; - } - gSprites[r4].pos2.x = 0; - gSprites[r4].pos2.y = 0; -} - -void objc_dp11b_pingpong(struct Sprite *sprite) -{ - u8 spriteId = sprite->data[3]; - s32 var; - - if (sprite->data[4] == 1) - var = sprite->data[0]; - else - var = sprite->data[0]; - - gSprites[spriteId].pos2.y = Sin(var, sprite->data[2]) + sprite->data[2]; - sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; -} - -void nullsub_41(void) -{ -} - -void sub_8010800(void) -{ - sub_8010874(); - gBattleCommunication[1] = 0; - gBattleMainFunc = bc_8012FAC; -} - -#if DEBUG -__attribute__((naked)) -void debug_sub_80138CC() -{ - asm( - " push {lr}\n" - " ldr r0, ._1167 @ gActiveBank\n" - " ldrb r0, [r0]\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._1163 @cond_branch\n" - " b ._1186\n" - "._1163:\n" - " ldr r1, ._1167 + 4 @ gSharedMem\n" - " ldr r2, ._1167 + 8 @ 0x160fd\n" - " add r0, r1, r2\n" - " ldrb r0, [r0]\n" - " add r2, r1, #0\n" - " cmp r0, #0x4\n" - " bls ._1165 @cond_branch\n" - " b ._1186\n" - "._1165:\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._1167 + 12 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._1168:\n" - " .align 2, 0\n" - "._1167:\n" - " .word gActiveBank\n" - " .word gSharedMem\n" - " .word 0x160fd\n" - " .word ._1169\n" - "._1169:\n" - " .word ._1170\n" - " .word ._1171\n" - " .word ._1172\n" - " .word ._1173\n" - " .word ._1174\n" - "._1170:\n" - " ldr r1, ._1177 @ gBattleBankFunc\n" - " ldr r0, ._1177 + 4 @ gActiveBank\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldr r1, [r0]\n" - " ldr r0, ._1177 + 8 @ sub_802C098\n" - " cmp r1, r0\n" - " bne ._1186 @cond_branch\n" - " ldr r0, ._1177 + 12 @ 0x160fd\n" - " add r1, r2, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " b ._1187\n" - "._1178:\n" - " .align 2, 0\n" - "._1177:\n" - " .word gBattleBankFunc\n" - " .word gActiveBank\n" - " .word sub_802C098+1\n" - " .word 0x160fd\n" - "._1171:\n" - " ldr r1, ._1180 @ gMain\n" - " mov r0, #0x1\n" - " strh r0, [r1, #0x2c]\n" - " strh r0, [r1, #0x2e]\n" - " ldr r0, ._1180 + 4 @ 0x160fd\n" - " add r1, r2, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, ._1180 + 8 @ 0x160fe\n" - " add r1, r2, r0\n" - " mov r0, #0x80\n" - " b ._1187\n" - "._1181:\n" - " .align 2, 0\n" - "._1180:\n" - " .word gMain\n" - " .word 0x160fd\n" - " .word 0x160fe\n" - "._1172:\n" - " ldr r0, ._1184 @ 0x160fe\n" - " add r3, r2, r0\n" - " ldrb r0, [r3]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r3]\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._1186 @cond_branch\n" - " ldr r1, ._1184 + 4 @ gMain\n" - " mov r0, #0x1\n" - " strh r0, [r1, #0x2c]\n" - " strh r0, [r1, #0x2e]\n" - " ldr r0, ._1184 + 8 @ 0x160fd\n" - " add r1, r2, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " strb r0, [r1]\n" - " mov r0, #0x80\n" - " strb r0, [r3]\n" - " b ._1186\n" - "._1185:\n" - " .align 2, 0\n" - "._1184:\n" - " .word 0x160fe\n" - " .word gMain\n" - " .word 0x160fd\n" - "._1173:\n" - " ldr r0, ._1188 @ 0x160fe\n" - " add r1, r2, r0\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._1186 @cond_branch\n" - " ldr r1, ._1188 + 4 @ gMain\n" - " mov r0, #0x1\n" - " strh r0, [r1, #0x2c]\n" - " strh r0, [r1, #0x2e]\n" - " ldr r0, ._1188 + 8 @ 0x160fd\n" - " add r1, r2, r0\n" - " ldrb r0, [r1]\n" - " add r0, r0, #0x1\n" - " b ._1187\n" - "._1189:\n" - " .align 2, 0\n" - "._1188:\n" - " .word 0x160fe\n" - " .word gMain\n" - " .word 0x160fd\n" - "._1174:\n" - " ldr r0, ._1190 @ 0x160fd\n" - " add r1, r2, r0\n" - " mov r0, #0x0\n" - "._1187:\n" - " strb r0, [r1]\n" - "._1186:\n" - " pop {r0}\n" - " bx r0\n" - "._1191:\n" - " .align 2, 0\n" - "._1190:\n" - " .word 0x160fd\n" - "\n" - ); + if (!ewram17810[a].unk0_2) + return; + r4 = gSprites[ewram17810[a].unk3].data[3]; + DestroySprite(&gSprites[ewram17810[a].unk3]); + ewram17810[a].unk0_2 = 0; + } + gSprites[r4].pos2.x = 0; + gSprites[r4].pos2.y = 0; } -__attribute__((naked)) -void debug_sub_80139E4() +void objc_dp11b_pingpong(struct Sprite *sprite) { - asm( - " push {r4, r5, lr}\n" - " ldr r0, ._1198 @ gUnknown_02023A14_50\n" - " ldrb r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0\n" - " beq ._1192 @cond_branch\n" - " ldr r2, ._1198 + 4 @ gActiveBank\n" - " mov r0, #0x0\n" - " strb r0, [r2]\n" - " ldr r1, ._1198 + 8 @ gNoOfAllBanks\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._1193 @cond_branch\n" - " add r4, r2, #0\n" - " add r5, r1, #0\n" - "._1194:\n" - " bl debug_sub_80138CC\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldrb r1, [r5]\n" - " cmp r0, r1\n" - " bcc ._1194 @cond_branch\n" - "._1193:\n" - " ldr r0, ._1198 + 12 @ gBattleMainFunc\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " ldr r1, ._1198 + 4 @ gActiveBank\n" - " mov r0, #0x0\n" - " strb r0, [r1]\n" - " ldr r0, ._1198 + 8 @ gNoOfAllBanks\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " beq ._1200 @cond_branch\n" - " ldr r5, ._1198 + 16 @ gBattleBankFunc\n" - " add r4, r1, #0\n" - "._1196:\n" - " ldrb r0, [r4]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r5\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " ldr r1, ._1198 + 8 @ gNoOfAllBanks\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldrb r1, [r1]\n" - " cmp r0, r1\n" - " bcc ._1196 @cond_branch\n" - " b ._1200\n" - "._1199:\n" - " .align 2, 0\n" - "._1198:\n" - " .word gUnknown_02023A14_50\n" - " .word gActiveBank\n" - " .word gNoOfAllBanks\n" - " .word gBattleMainFunc\n" - " .word gBattleBankFunc\n" - "._1192:\n" - " ldr r0, ._1202 @ gBattleMainFunc\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " ldr r1, ._1202 + 4 @ gActiveBank\n" - " strb r4, [r1]\n" - " ldr r0, ._1202 + 8 @ gNoOfAllBanks\n" - " ldrb r0, [r0]\n" - " cmp r4, r0\n" - " bcs ._1200 @cond_branch\n" - " ldr r5, ._1202 + 12 @ gBattleBankFunc\n" - " add r4, r1, #0\n" - "._1201:\n" - " ldrb r0, [r4]\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r5\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " ldrb r0, [r4]\n" - " add r0, r0, #0x1\n" - " strb r0, [r4]\n" - " ldr r1, ._1202 + 8 @ gNoOfAllBanks\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldrb r1, [r1]\n" - " cmp r0, r1\n" - " bcc ._1201 @cond_branch\n" - "._1200:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._1203:\n" - " .align 2, 0\n" - "._1202:\n" - " .word gBattleMainFunc\n" - " .word gActiveBank\n" - " .word gNoOfAllBanks\n" - " .word gBattleBankFunc\n" - "\n" - ); + u8 spriteId = sprite->data[3]; + s32 var; + + if (sprite->data[4] == 1) + var = sprite->data[0]; + else + var = sprite->data[0]; + + gSprites[spriteId].pos2.y = Sin(var, sprite->data[2]) + sprite->data[2]; + sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF; } -__attribute__((naked)) -void sub_8010874() +void nullsub_41(void) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " mov r0, #0x0\n" - " bl TurnValuesCleanUp\n" - " bl SpecialStatusesClear\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " ldr r0, ._1215 @ gUnknown_02024C4C\n" - " mov sl, r0\n" - " ldr r1, ._1215 + 4 @ gLastHitByType\n" - " mov r9, r1\n" - " ldr r4, ._1215 + 8 @ gLastLandedMoves\n" - " mov r8, r4\n" - " ldr r0, ._1215 + 12 @ gLastUsedMove\n" - " mov ip, r0\n" - " ldr r4, ._1215 + 16 @ gDisableStructs\n" - " mov r5, #0x0\n" - " ldr r7, ._1215 + 20 @ gUnknown_02024C2C\n" - " ldr r6, ._1215 + 24 @ gLockedMoves\n" - "._1205:\n" - " ldr r0, ._1215 + 28 @ gStatuses3\n" - " add r0, r5, r0\n" - " str r3, [r0]\n" - " mov r1, #0x0\n" - "._1204:\n" - " add r0, r4, r1\n" - " strb r3, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x1b\n" - " bls ._1204 @cond_branch\n" - " mov r0, #0x2\n" - " strb r0, [r4, #0x16]\n" - " ldr r1, ._1215 + 32 @ gUnknown_02024C70\n" - " add r0, r2, r1\n" - " strb r3, [r0]\n" - " mov r0, ip\n" - " strh r3, [r0]\n" - " mov r1, r8\n" - " strh r3, [r1]\n" - " mov r0, r9\n" - " strh r3, [r0]\n" - " mov r1, sl\n" - " strh r3, [r1]\n" - " ldr r0, ._1215 + 36 @ gUnknown_02024C5C\n" - " add r1, r2, r0\n" - " mov r0, #0xff\n" - " strb r0, [r1]\n" - " strh r3, [r6]\n" - " strh r3, [r7]\n" - " ldr r1, ._1215 + 40 @ gSharedMem\n" - " add r0, r5, r1\n" - " str r3, [r0]\n" - " mov r0, #0x2\n" - " add sl, sl, r0\n" - " add r9, r9, r0\n" - " add r8, r8, r0\n" - " add ip, ip, r0\n" - " add r4, r4, #0x1c\n" - " add r5, r5, #0x4\n" - " add r7, r7, #0x2\n" - " add r6, r6, #0x2\n" - " add r2, r2, #0x1\n" - " cmp r2, #0x3\n" - " ble ._1205 @cond_branch\n" - " mov r5, #0x0\n" - " ldr r3, ._1215 + 44 @ gSideTimers\n" - " ldr r4, ._1215 + 48 @ gSideAffecting\n" - " mov r2, #0x1\n" - "._1207:\n" - " strh r5, [r4]\n" - " mov r1, #0x0\n" - "._1206:\n" - " add r0, r3, r1\n" - " strb r5, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0xb\n" - " bls ._1206 @cond_branch\n" - " add r3, r3, #0xc\n" - " add r4, r4, #0x2\n" - " sub r2, r2, #0x1\n" - " cmp r2, #0\n" - " bge ._1207 @cond_branch\n" - " mov r1, #0x0\n" - " ldr r2, ._1215 + 52 @ gBankAttacker\n" - " strb r1, [r2]\n" - " ldr r3, ._1215 + 56 @ gBankTarget\n" - " strb r1, [r3]\n" - " ldr r4, ._1215 + 60 @ gBattleWeather\n" - " strh r1, [r4]\n" - " ldr r1, ._1215 + 64 @ gWishFutureKnock\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - "._1208:\n" - " add r0, r1, r2\n" - " strb r3, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, #0x2b\n" - " bls ._1208 @cond_branch\n" - " mov r0, #0x0\n" - " ldr r1, ._1215 + 68 @ gHitMarker\n" - " str r0, [r1]\n" - " ldr r2, ._1215 + 72 @ gBattleTypeFlags\n" - " ldrh r1, [r2]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._1210 @cond_branch\n" - " ldr r3, ._1215 + 76 @ gSaveBlock2\n" - " ldrb r1, [r3, #0x15]\n" - " mov r0, #0x4\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._1210 @cond_branch\n" - " mov r0, #0x80\n" - " ldr r4, ._1215 + 68 @ gHitMarker\n" - " str r0, [r4]\n" - "._1210:\n" - " ldr r1, ._1215 + 76 @ gSaveBlock2\n" - " ldrb r0, [r1, #0x15]\n" - " lsl r0, r0, #0x1e\n" - " lsr r0, r0, #0x1f\n" - " ldr r3, ._1215 + 80 @ gSharedMem\n" - " ldr r4, ._1215 + 84 @ 0x16084\n" - " add r2, r3, r4\n" - " mov r1, #0x0\n" - " strb r0, [r2]\n" - " ldr r0, ._1215 + 88 @ gMultiHitCounter\n" - " strb r1, [r0]\n" - " ldr r2, ._1215 + 92 @ gBattleOutcome\n" - " strb r1, [r2]\n" - " ldr r3, ._1215 + 96 @ gBattleExecBuffer\n" - " str r1, [r3]\n" - " mov r2, #0x0\n" - " ldr r4, ._1215 + 100@ gPaydayMoney\n" - " strh r1, [r4]\n" - " ldr r1, ._1215 + 80 @ gSharedMem\n" - " ldr r3, ._1215 + 104@ 0x17130\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " ldr r4, ._1215 + 108@ 0x17160\n" - " add r0, r1, r4\n" - " strb r2, [r0]\n" - " ldr r1, ._1215 + 112@ gBattleCommunication\n" - " mov r2, #0x0\n" - " add r0, r1, #7\n" - "._1211:\n" - " strb r2, [r0]\n" - " sub r0, r0, #0x1\n" - " cmp r0, r1\n" - " bge ._1211 @cond_branch\n" - " mov r5, #0x0\n" - " ldr r0, ._1215 + 116@ gPauseCounterBattle\n" - " strh r5, [r0]\n" - " mov r0, #0x0\n" - " ldr r1, ._1215 + 120@ gBattleMoveDamage\n" - " str r0, [r1]\n" - " ldr r2, ._1215 + 124@ gUnknown_02024DE8\n" - " strh r0, [r2]\n" - " ldr r4, ._1215 + 80 @ gSharedMem\n" - " ldr r3, ._1215 + 128@ 0x16002\n" - " add r0, r4, r3\n" - " strb r5, [r0]\n" - " ldr r1, ._1215 + 132@ 0x160a1\n" - " add r0, r4, r1\n" - " strb r5, [r0]\n" - " ldr r2, ._1215 + 136@ gLeveledUpInBattle\n" - " strb r5, [r2]\n" - " ldr r3, ._1215 + 140@ gAbsentBankFlags\n" - " strb r5, [r3]\n" - " sub r1, r1, #0x29\n" - " add r0, r4, r1\n" - " strb r5, [r0]\n" - " ldr r2, ._1215 + 144@ 0x16086\n" - " add r0, r4, r2\n" - " strb r5, [r0]\n" - " ldr r3, ._1215 + 148@ 0x16087\n" - " add r0, r4, r3\n" - " strb r5, [r0]\n" - " ldr r0, ._1215 + 152@ gEnemyParty\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " ldr r2, ._1215 + 156@ gBaseStats\n" - " lsl r1, r0, #0x3\n" - " sub r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r2\n" - " ldrb r1, [r1, #0x8]\n" - " mov r0, #0x64\n" - " mul r0, r0, r1\n" - " ldr r1, ._1215 + 160@ 0x4fb\n" - " bl __divsi3\n" - " ldr r2, ._1215 + 164@ 0x16089\n" - " add r1, r4, r2\n" - " strb r0, [r1]\n" - " ldr r3, ._1215 + 168@ 0x16088\n" - " add r1, r4, r3\n" - " mov r0, #0x3\n" - " strb r0, [r1]\n" - " ldr r1, ._1215 + 172@ 0x1601b\n" - " add r0, r4, r1\n" - " strb r5, [r0]\n" - " sub r2, r2, #0x33\n" - " add r1, r4, r2\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " mov r2, #0x0\n" - " mov r1, #0x0\n" - "._1212:\n" - " ldr r3, ._1215 + 176@ 0x160ac\n" - " add r0, r2, r3\n" - " add r0, r0, r4\n" - " strb r1, [r0]\n" - " add r3, r3, #0x20\n" - " add r0, r2, r3\n" - " add r0, r0, r4\n" - " strb r1, [r0]\n" - " add r3, r3, #0x1c\n" - " add r0, r2, r3\n" - " add r0, r0, r4\n" - " strb r1, [r0]\n" - " add r3, r3, #0x8\n" - " add r0, r2, r3\n" - " add r0, r0, r4\n" - " strb r1, [r0]\n" - " add r3, r3, #0x10\n" - " add r0, r2, r3\n" - " add r0, r0, r4\n" - " strb r1, [r0]\n" - " add r3, r3, #0x8\n" - " add r0, r2, r3\n" - " add r0, r0, r4\n" - " strb r1, [r0]\n" - " add r2, r2, #0x1\n" - " cmp r2, #0x7\n" - " ble ._1212 @cond_branch\n" - " ldr r4, ._1215 + 80 @ gSharedMem\n" - " ldr r1, ._1215 + 180@ 0x160c8\n" - " add r0, r4, r1\n" - " mov r2, #0x0\n" - " mov r1, #0x6\n" - " strb r1, [r0]\n" - " sub r3, r3, #0x3f\n" - " add r0, r4, r3\n" - " strb r1, [r0]\n" - " ldr r1, ._1215 + 184@ 0x16113\n" - " add r0, r4, r1\n" - " strb r2, [r0]\n" - " ldr r3, ._1215 + 188@ gBattleResults\n" - " mov r1, #0x0\n" - " mov r2, #0xa\n" - " add r0, r3, #0\n" - " add r0, r0, #0x40\n" - "._1213:\n" - " strb r1, [r0]\n" - " sub r0, r0, #0x1\n" - " sub r2, r2, #0x1\n" - " cmp r2, #0\n" - " bge ._1213 @cond_branch\n" - " mov r1, #0x0\n" - " strb r1, [r3, #0x13]\n" - " strb r1, [r3]\n" - " strb r1, [r3, #0x1]\n" - " strb r1, [r3, #0x2]\n" - " strb r1, [r3, #0x3]\n" - " strb r1, [r3, #0x4]\n" - " ldrb r2, [r3, #0x5]\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " mov r2, #0x3\n" - " neg r2, r2\n" - " and r0, r0, r2\n" - " strb r0, [r3, #0x5]\n" - " strh r1, [r3, #0x20]\n" - " strh r1, [r3, #0x22]\n" - " strh r1, [r3, #0x24]\n" - " strh r1, [r3, #0x6]\n" - " strh r1, [r3, #0x26]\n" - " strh r1, [r3, #0x28]\n" - " mov r2, #0x0\n" - " add r5, r3, #0\n" - " add r5, r5, #0x8\n" - " mov r4, #0x0\n" - " add r1, r3, #0\n" - " add r1, r1, #0x14\n" - "._1214:\n" - " add r0, r2, r5\n" - " strb r4, [r0]\n" - " strb r4, [r1]\n" - " strb r4, [r1, #0x16]\n" - " add r1, r1, #0x1\n" - " add r2, r2, #0x1\n" - " cmp r2, #0x9\n" - " ble ._1214 @cond_branch\n" - " ldr r2, ._1215 + 80 @ gSharedMem\n" - " ldr r3, ._1215 + 192@ 0x1609e\n" - " add r0, r2, r3\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " ldr r4, ._1215 + 196@ 0x1609f\n" - " add r0, r2, r4\n" - " strb r1, [r0]\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._1216:\n" - " .align 2, 0\n" - "._1215:\n" - " .word gUnknown_02024C4C\n" - " .word gLastHitByType\n" - " .word gLastLandedMoves\n" - " .word gLastUsedMove\n" - " .word gDisableStructs\n" - " .word gUnknown_02024C2C\n" - " .word gLockedMoves\n" - " .word gStatuses3\n" - " .word gUnknown_02024C70\n" - " .word gUnknown_02024C5C\n" - " .word gSharedMem+0x17100\n" - " .word gSideTimers\n" - " .word gSideAffecting\n" - " .word gBankAttacker\n" - " .word gBankTarget\n" - " .word gBattleWeather\n" - " .word gWishFutureKnock\n" - " .word gHitMarker\n" - " .word gBattleTypeFlags\n" - " .word gSaveBlock2\n" - " .word gSharedMem\n" - " .word 0x16084\n" - " .word gMultiHitCounter\n" - " .word gBattleOutcome\n" - " .word gBattleExecBuffer\n" - " .word gPaydayMoney\n" - " .word 0x17130\n" - " .word 0x17160\n" - " .word gBattleCommunication\n" - " .word gPauseCounterBattle\n" - " .word gBattleMoveDamage\n" - " .word gUnknown_02024DE8\n" - " .word 0x16002\n" - " .word 0x160a1\n" - " .word gLeveledUpInBattle\n" - " .word gAbsentBankFlags\n" - " .word 0x16086\n" - " .word 0x16087\n" - " .word gEnemyParty\n" - " .word gBaseStats\n" - " .word 0x4fb\n" - " .word 0x16089\n" - " .word 0x16088\n" - " .word 0x1601b\n" - " .word 0x160ac\n" - " .word 0x160c8\n" - " .word 0x16113\n" - " .word gBattleResults\n" - " .word 0x1609e\n" - " .word 0x1609f\n" - "\n" - ); } -#else -void sub_8010824(void) +void sub_8010800(void) { - gBattleMainFunc(); + sub_8010874(); + gBattleCommunication[1] = 0; + gBattleMainFunc = bc_8012FAC; +} - for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) - gBattleBankFunc[gActiveBank](); +#if DEBUG +void debug_sub_80138CC(void) +{ + if (GetBankSide(gActiveBank) == 0) + { + switch (gSharedMem[0x160FD]) + { + case 0: + if (gBattleBankFunc[gActiveBank] == sub_802C098) + gSharedMem[0x160FD]++; + break; + case 1: + gMain.heldKeys = A_BUTTON; + gMain.newKeys = A_BUTTON; + gSharedMem[0x160FD]++; + gSharedMem[0x160FE] = 0x80; + break; + case 2: + gSharedMem[0x160FE]--; + if (gSharedMem[0x160FE] == 0) + { + gMain.heldKeys = A_BUTTON; + gMain.newKeys = A_BUTTON; + gSharedMem[0x160FD]++; + gSharedMem[0x160FE] = 0x80; + } + break; + case 3: + gSharedMem[0x160FE]--; + if (gSharedMem[0x160FE] == 0) + { + gMain.heldKeys = A_BUTTON; + gMain.newKeys = A_BUTTON; + gSharedMem[0x160FD]++; + } + break; + case 4: + gSharedMem[0x160FD] = 0; + break; + } + } +} +#endif + +void sub_8010824(void) +{ +#if DEBUG + if (gUnknown_02023A14_50 & 0x80) + { + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + debug_sub_80138CC(); + gBattleMainFunc(); + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + gBattleBankFunc[gActiveBank](); + } + else +#endif + { + gBattleMainFunc(); + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + gBattleBankFunc[gActiveBank](); + } } void sub_8010874(void) @@ -7548,8 +6067,11 @@ void sub_8010874(void) gBattleResults.pokeString2[i] = 0; gBattleResults.caughtNick[i] = 0; } -} +#if DEBUG + gSharedMem[0x1609E] = 0; + gSharedMem[0x1609F] = 0; #endif +} void SwitchInClearSetData(void) { @@ -9936,6 +8458,351 @@ u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreMovePriorities) return strikesFirst; } +// The debug version should be identical, but has a strange register swap, and +// seems to be affected by other functions, which is bizarre. +#if DEBUG +__attribute__((naked)) +void SetActionsAndBanksTurnOrder(void) +{ + asm("\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + mov r3, #0x0\n\ + ldr r0, ._L1550\n\ + ldrh r1, [r0]\n\ + mov r0, #0x80\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._L1499 @cond_branch\n\ + ldr r0, ._L1550+0x4\n\ + strb r3, [r0]\n\ + ldr r4, ._L1550+0x8\n\ + mov r8, r0\n\ + ldrb r0, [r4]\n\ + cmp r3, r0\n\ + bcc ._LCB12758\n\ + b ._L1505 @long jump\n\ +._LCB12758:\n\ + ldr r7, ._L1550+0xc\n\ + ldr r6, ._L1550+0x10\n\ + mov r2, r8\n\ + ldr r5, ._L1550+0x14\n\ +._L1503:\n\ + add r1, r3, r7\n\ + ldrb r0, [r2]\n\ + add r0, r0, r6\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + add r1, r3, r5\n\ + ldrb r0, [r2]\n\ + strb r0, [r1]\n\ + add r3, r3, #0x1\n\ + ldrb r0, [r2]\n\ + add r0, r0, #0x1\n\ + strb r0, [r2]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldrb r1, [r4]\n\ + cmp r0, r1\n\ + bcc ._L1503 @cond_branch\n\ + b ._L1505\n\ +._L1551:\n\ + .align 2, 0\n\ +._L1550:\n\ + .word gBattleTypeFlags\n\ + .word gActiveBank\n\ + .word gNoOfAllBanks\n\ + .word gActionsByTurnOrder\n\ + .word gActionForBanks\n\ + .word gBanksByTurnOrder\n\ +._L1499:\n\ + mov r0, #0x2\n\ + and r0, r0, r1\n\ + cmp r0, #0\n\ + beq ._L1506 @cond_branch\n\ + ldr r0, ._L1552\n\ + strb r3, [r0]\n\ + ldr r1, ._L1552+0x4\n\ + mov r8, r0\n\ + add r2, r1, #0\n\ + ldrb r2, [r2]\n\ + cmp r3, r2\n\ + bcs ._L1513 @cond_branch\n\ + ldr r0, ._L1552+0x8\n\ + ldrb r1, [r0]\n\ + add r4, r0, #0\n\ + cmp r1, #0x3\n\ + beq ._L1548 @cond_branch\n\ +._L1509:\n\ + mov r7, r8\n\ + ldrb r0, [r7]\n\ + add r0, r0, #0x1\n\ + strb r0, [r7]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r1, ._L1552+0x4\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcs ._L1513 @cond_branch\n\ + ldrb r0, [r7]\n\ + add r0, r0, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x3\n\ + bne ._L1509 @cond_branch\n\ + b ._L1548\n\ +._L1553:\n\ + .align 2, 0\n\ +._L1552:\n\ + .word gActiveBank\n\ + .word gNoOfAllBanks\n\ + .word gActionForBanks\n\ +._L1506:\n\ + ldr r0, ._L1554\n\ + ldrb r0, [r0]\n\ + ldr r2, ._L1554+0x4\n\ + mov r8, r2\n\ + cmp r0, #0x3\n\ + bne ._L1513 @cond_branch\n\ + strb r3, [r2]\n\ +._L1548:\n\ + mov r3, #0x5\n\ +._L1513:\n\ + cmp r3, #0x5\n\ + bne ._L1515 @cond_branch\n\ + ldr r6, ._L1554+0x8\n\ + ldr r1, ._L1554\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + add r0, r0, r1\n\ + ldrb r0, [r0]\n\ + strb r0, [r6]\n\ + ldr r2, ._L1554+0xc\n\ + ldrb r0, [r3]\n\ + strb r0, [r2]\n\ + mov r3, #0x1\n\ + mov r5, #0x0\n\ + add r4, r1, #0\n\ + ldr r7, ._L1554+0x10\n\ + mov r9, r7\n\ + ldr r0, ._L1554+0x14\n\ + mov ip, r0\n\ + ldr r1, ._L1554+0x18\n\ + mov sl, r1\n\ + ldr r7, ._L1554+0x1c\n\ + ldrb r7, [r7]\n\ + cmp r5, r7\n\ + bge ._L1517 @cond_branch\n\ + add r7, r6, #0\n\ + add r6, r4, #0\n\ + add r4, r2, #0\n\ + ldr r2, ._L1554+0x1c\n\ +._L1519:\n\ + mov r0, r8\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + beq ._L1518 @cond_branch\n\ + add r1, r3, r7\n\ + add r0, r5, r6\n\ + ldrb r0, [r0]\n\ + strb r0, [r1]\n\ + add r0, r3, r4\n\ + strb r5, [r0]\n\ + add r3, r3, #0x1\n\ +._L1518:\n\ + add r5, r5, #0x1\n\ + ldrb r1, [r2]\n\ + cmp r5, r1\n\ + blt ._L1519 @cond_branch\n\ +._L1517:\n\ + mov r2, ip\n\ + mov r3, r9\n\ + str r2, [r3]\n\ + ldr r1, ._L1554+0x20\n\ + add r1, r1, sl\n\ + mov r0, #0x0\n\ + strb r0, [r1]\n\ + b ._L1498\n\ +._L1555:\n\ + .align 2, 0\n\ +._L1554:\n\ + .word gActionForBanks\n\ + .word gActiveBank\n\ + .word gActionsByTurnOrder\n\ + .word gBanksByTurnOrder\n\ + .word gBattleMainFunc\n\ + .word CheckFocusPunch_ClearVarsBeforeTurnStarts\n\ + .word gSharedMem\n\ + .word gNoOfAllBanks\n\ + .word 0x1601d\n\ +._L1515:\n\ + mov r0, #0x0\n\ + mov r7, r8\n\ + strb r0, [r7]\n\ + ldr r1, ._L1556\n\ + ldrb r0, [r1]\n\ + cmp r0, #0\n\ + beq ._L1524 @cond_branch\n\ + ldr r6, ._L1556+0x4\n\ + mov r2, r8\n\ + ldr r5, ._L1556+0x8\n\ + ldr r4, ._L1556+0xc\n\ +._L1526:\n\ + ldrb r0, [r2]\n\ + add r0, r0, r6\n\ + ldrb r1, [r0]\n\ + sub r0, r1, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bhi ._L1525 @cond_branch\n\ + add r0, r3, r5\n\ + strb r1, [r0]\n\ + add r1, r3, r4\n\ + mov r7, r8\n\ + ldrb r0, [r7]\n\ + strb r0, [r1]\n\ + add r3, r3, #0x1\n\ +._L1525:\n\ + ldrb r0, [r2]\n\ + add r0, r0, #0x1\n\ + strb r0, [r2]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r1, ._L1556\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc ._L1526 @cond_branch\n\ +._L1524:\n\ + mov r0, #0x0\n\ + mov r2, r8\n\ + strb r0, [r2]\n\ + ldr r7, ._L1556\n\ + ldrb r0, [r7]\n\ + cmp r0, #0\n\ + beq ._L1530 @cond_branch\n\ + ldr r6, ._L1556+0x4\n\ + ldr r5, ._L1556+0x8\n\ + ldr r4, ._L1556+0xc\n\ +._L1532:\n\ + ldrb r0, [r2]\n\ + add r0, r0, r6\n\ + ldrb r1, [r0]\n\ + sub r0, r1, #0x1\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + cmp r0, #0x1\n\ + bls ._L1531 @cond_branch\n\ + add r0, r3, r5\n\ + strb r1, [r0]\n\ + add r1, r3, r4\n\ + mov r7, r8\n\ + ldrb r0, [r7]\n\ + strb r0, [r1]\n\ + add r3, r3, #0x1\n\ +._L1531:\n\ + ldrb r0, [r2]\n\ + add r0, r0, #0x1\n\ + strb r0, [r2]\n\ + lsl r0, r0, #0x18\n\ + lsr r0, r0, #0x18\n\ + ldr r1, ._L1556\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bcc ._L1532 @cond_branch\n\ +._L1530:\n\ + mov r5, #0x0\n\ + b ._L1549\n\ +._L1557:\n\ + .align 2, 0\n\ +._L1556:\n\ + .word gNoOfAllBanks\n\ + .word gActionForBanks\n\ + .word gActionsByTurnOrder\n\ + .word gBanksByTurnOrder\n\ +._L1538:\n\ + add r4, r5, #0x1\n\ + add r7, r4, #0\n\ + ldrb r1, [r1]\n\ + cmp r7, r1\n\ + bge ._L1537 @cond_branch\n\ + ldr r6, ._L1558\n\ + lsl r2, r5, #0x18\n\ + mov r8, r2\n\ +._L1542:\n\ + ldr r0, ._L1558+0x4\n\ + add r1, r5, r0\n\ + ldrb r3, [r1]\n\ + add r0, r4, r0\n\ + ldrb r1, [r0]\n\ + add r0, r5, r6\n\ + ldrb r2, [r0]\n\ + cmp r2, #0x1\n\ + beq ._L1541 @cond_branch\n\ + add r0, r4, r6\n\ + ldrb r0, [r0]\n\ + cmp r0, #0x1\n\ + beq ._L1541 @cond_branch\n\ + cmp r2, #0x2\n\ + beq ._L1541 @cond_branch\n\ + cmp r0, #0x2\n\ + beq ._L1541 @cond_branch\n\ + add r0, r3, #0\n\ + mov r2, #0x0\n\ + bl GetWhoStrikesFirst\n\ + lsl r0, r0, #0x18\n\ + cmp r0, #0\n\ + beq ._L1541 @cond_branch\n\ + lsl r1, r4, #0x18\n\ + lsr r1, r1, #0x18\n\ + mov r3, r8\n\ + lsr r0, r3, #0x18\n\ + bl SwapTurnOrder\n\ +._L1541:\n\ + add r4, r4, #0x1\n\ + ldr r0, ._L1558+0x8\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + blt ._L1542 @cond_branch\n\ +._L1537:\n\ + add r5, r7, #0\n\ +._L1549:\n\ + ldr r1, ._L1558+0x8\n\ + ldrb r0, [r1]\n\ + sub r0, r0, #0x1\n\ + cmp r5, r0\n\ + blt ._L1538 @cond_branch\n\ +._L1505:\n\ + ldr r1, ._L1558+0xc\n\ + ldr r0, ._L1558+0x10\n\ + str r0, [r1]\n\ + ldr r0, ._L1558+0x14\n\ + ldr r7, ._L1558+0x18\n\ + add r0, r0, r7\n\ + mov r1, #0x0\n\ + strb r1, [r0]\n\ +._L1498:\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ +._L1559:\n\ + .align 2, 0\n\ +._L1558:\n\ + .word gActionsByTurnOrder\n\ + .word gBanksByTurnOrder\n\ + .word gNoOfAllBanks\n\ + .word gBattleMainFunc\n\ + .word CheckFocusPunch_ClearVarsBeforeTurnStarts\n\ + .word gSharedMem\n\ + .word 0x1601d"); +} +#else void SetActionsAndBanksTurnOrder(void) { s32 var = 0; @@ -10028,15 +8895,11 @@ void SetActionsAndBanksTurnOrder(void) } } } - // Debug ROM has a register swap from the retail ROM. - // And doing this seems to fix it. -#if DEBUG - asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm("");asm(""); - asm("");asm("");asm("");asm("");asm("");asm("");asm(""); -#endif + gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; eFocusPunchBank = 0; } +#endif static void TurnValuesCleanUp(bool8 var0) { -- cgit v1.2.3 From e71789d6773c72e314d7b21684eaa9a48c704cd1 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 28 Jan 2018 22:19:49 -0600 Subject: remove unused file pokemon_data.c and clean up roulette_util.c --- src/pokemon/pokemon_data.c | 12 ---- src/roulette_util.c | 162 +++++++++++++++++---------------------------- 2 files changed, 62 insertions(+), 112 deletions(-) delete mode 100644 src/pokemon/pokemon_data.c (limited to 'src') diff --git a/src/pokemon/pokemon_data.c b/src/pokemon/pokemon_data.c deleted file mode 100644 index 3473b58c8..000000000 --- a/src/pokemon/pokemon_data.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "global.h" -#include "pokemon.h" -#include "constants/species.h" -#include "trainer.h" -#include "constants/abilities.h" -#include "constants/moves.h" -#include "constants/hold_effects.h" -#include "constants/items.h" -#include "sprite.h" -#include "data2.h" - - diff --git a/src/roulette_util.c b/src/roulette_util.c index 3d5b03a5c..f3eae5518 100644 --- a/src/roulette_util.c +++ b/src/roulette_util.c @@ -13,12 +13,12 @@ void sub_8124918(struct UnkStruct0 *r0) { r0->var00 = 0; r0->var02 = 0; - memset((&r0->var04), 0, 0xC0); + memset(&r0->var04, 0, sizeof(r0->var04)); } u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2) { - if (!(r1 < 0x10) || (r0->var04[r1].var00_7)) + if (!(r1 < 16) || (r0->var04[r1].var00_7)) return 0xFF; r0->var04[r1].var04.var00 = r2->var00; @@ -29,123 +29,82 @@ u8 sub_812492C(struct UnkStruct0 *r0, u8 r1, struct UnkStruct1 *r2) r0->var04[r1].var04.var07_0 = r2->var07_0; r0->var04[r1].var04.var07_5 = r2->var07_5; r0->var04[r1].var04.var07_7 = r2->var07_7; - - - r0->var04[r1].var00_0 = 0x0; - r0->var04[r1].var00_7 = 0x1; - - r0->var04[r1].var02 = 0x0; - r0->var04[r1].var01 = 0x0; + r0->var04[r1].var00_0 = 0; + r0->var04[r1].var00_7 = 1; + r0->var04[r1].var02 = 0; + r0->var04[r1].var01 = 0; if (r0->var04[r1].var04.var07_7 < 0) r0->var04[r1].var03 = 0xFF; else - r0->var04[r1].var03 = 0x1; + r0->var04[r1].var03 = 1; return r1; } -#ifdef NONMATCHING u8 unref_sub_81249B0(struct UnkStruct0 *r0, u8 r1) { - if (r1 < 0x10) - { - if (r0->var04[r1].var00_7) - { - r0->var04[r1] = (struct UnkStruct3){0}; - return r1; - } - } - return 0xFF; -} -#else -__attribute__((naked)) -u8 unref_sub_81249B0(struct UnkStruct0 *r0 , u8 r1) -{ - asm(".syntax unified\n\ - push {r4,lr}\n\ - adds r2, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r4, r1, 0\n\ - cmp r4, 0xF\n\ - bhi _081249DC\n\ - lsls r0, r4, 1\n\ - adds r0, r4\n\ - lsls r0, 2\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1, 0x4]\n\ - lsrs r0, 7\n\ - cmp r0, 0\n\ - beq _081249DC\n\ - adds r0, r1, 0x4\n\ - movs r1, 0\n\ - movs r2, 0xC\n\ - bl memset\n\ - adds r0, r4, 0\n\ - b _081249DE\n\ - _081249DC:\n\ - movs r0, 0xFF\n\ - _081249DE:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); + if (r1 >= 16) + return 0xFF; + if (!r0->var04[r1].var00_7) + return 0xFF; + memset(&r0->var04[r1], 0, sizeof(r0->var04[r1])); + return r1; } -#endif u8 sub_81249E4(struct UnkStruct3 *r0) { u8 i; u8 returnval; + for (i = 0; i < r0->var04.var04; i++) { - u32 offset = r0->var04.var02 + i; - struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[offset]; - struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[offset]; - switch(r0->var00_0) + struct PlttData *faded = (struct PlttData *)&gPlttBufferFaded[r0->var04.var02 + i]; + struct PlttData *unfaded = (struct PlttData *)&gPlttBufferUnfaded[r0->var04.var02 + i]; + + switch (r0->var00_0) { - case 0x1: - if ((u32)(faded->r + r0->var03) < 0x20) + case 1: + if (faded->r + r0->var03 >= 0 && faded->r + r0->var03 < 32) faded->r += r0->var03; - if ((u32)(faded->g + r0->var03) < 0x20) + if (faded->g + r0->var03 >= 0 && faded->g + r0->var03 < 32) faded->g += r0->var03; - if ((u32)(faded->b + r0->var03) < 0x20) + if (faded->b + r0->var03 >= 0 && faded->b + r0->var03 < 32) faded->b += r0->var03; - break; - case 0x2: + break; + case 2: if (r0->var03 < 0) { - if (!(faded->r + r0->var03 < unfaded->r)) + if (faded->r + r0->var03 >= unfaded->r) faded->r += r0->var03; - if (!(faded->g + r0->var03 < unfaded->g)) + if (faded->g + r0->var03 >= unfaded->g) faded->g += r0->var03; - if (!(faded->b + r0->var03 < unfaded->b)) + if (faded->b + r0->var03 >= unfaded->b) faded->b += r0->var03; } else { - if (!(faded->r + r0->var03 > unfaded->r)) + if (faded->r + r0->var03 <= unfaded->r) faded->r += r0->var03; - if (!(faded->g + r0->var03 > unfaded->g)) + if (faded->g + r0->var03 <= unfaded->g) faded->g += r0->var03; - if (!(faded->b + r0->var03 > unfaded->b)) + if (faded->b + r0->var03 <= unfaded->b) faded->b += r0->var03; } - break; + break; } } - if (((u32)r0->var02++) != r0->var04.var07_0) + if ((u32)r0->var02++ != r0->var04.var07_0) { - returnval = 0x0; + returnval = 0; } else { - r0->var02 = 0x0; - r0->var03 = r0->var03 * -1; - if (r0->var00_0 == 0x1) + r0->var02 = 0; + r0->var03 *= -1; + if (r0->var00_0 == 1) r0->var00_0++; else r0->var00_0--; - returnval = 0x1; + returnval = 1; } return returnval; } @@ -153,34 +112,36 @@ u8 sub_81249E4(struct UnkStruct3 *r0) u8 sub_8124BEC(struct UnkStruct3 *r0) { u8 rg2 = 0; + switch (r0->var00_0) { - case 0x1: + case 1: for (rg2 = 0; rg2 < r0->var04.var04; rg2++) gPlttBufferFaded[r0->var04.var02 + rg2] = r0->var04.var00; r0->var00_0++; break; - case 0x2: + case 2: for (rg2 = 0; rg2 < r0->var04.var04; rg2++) gPlttBufferFaded[r0->var04.var02 + rg2] = gPlttBufferUnfaded[r0->var04.var02 + rg2]; r0->var00_0--; break; } - return 0x1; + return 1; } void task_tutorial_controls_fadein(struct UnkStruct0 *r0) { u8 i = 0; + if (r0->var00) { - for (i = 0; i < 0x10; i++) + for (i = 0; i < 16; i++) { - if ((r0->var02 >> i) & 0x1) + if ((r0->var02 >> i) & 1) { - if (((u8)--r0->var04[i].var01) == 0xFF) // if underflow ? + if (--r0->var04[i].var01 == 0xFF) // if underflow ? { - if (r0->var04[i].var04.var00 & (0x80 << 8)) // PlttData->unused_15 ? + if (r0->var04[i].var04.var00 & 0x8000) // PlttData->unused_15 ? sub_81249E4(&r0->var04[i]); else sub_8124BEC(&r0->var04[i]); @@ -194,15 +155,16 @@ void task_tutorial_controls_fadein(struct UnkStruct0 *r0) void sub_8124CE8(struct UnkStruct0 *r0, u16 r1) { u8 i = 0; + r0->var00++; - for (i = 0; i < 0x10; i++) + for (i = 0; i < 16; i++) { - if ((r1 >> i) & 0x1) + if ((r1 >> i) & 1) { if (r0->var04[i].var00_7) { - r0->var02 |= 0x1 << i; - r0->var04[i].var00_0 = 0x1; + r0->var02 |= 1 << i; + r0->var04[i].var00_0 = 1; } } } @@ -211,21 +173,22 @@ void sub_8124CE8(struct UnkStruct0 *r0, u16 r1) void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) { u8 i; - for (i = 0; i < 0x10; i++) + + for (i = 0; i < 16; i++) { - if ((r0->var02 >> i) & 0x1) + if ((r0->var02 >> i) & 1) { if (r0->var04[i].var00_7) { - if ((r1 >> i) & 0x1) + if ((r1 >> i) & 1) { u32 offset = r0->var04[i].var04.var02; u16 *faded = &gPlttBufferFaded[offset]; u16 *unfaded = &gPlttBufferUnfaded[offset]; memcpy(faded, unfaded, r0->var04[i].var04.var04 * 2); - r0->var04[i].var00_0 = 0x0; - r0->var04[i].var02 = 0x0; - r0->var04[i].var01 = 0x0; + r0->var04[i].var00_0 = 0; + r0->var04[i].var02 = 0; + r0->var04[i].var01 = 0; if (r0->var04[i].var04.var07_7 < 0) r0->var04[i].var03 = 0xFF; else @@ -236,8 +199,8 @@ void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) } if (r1 == 0xFFFF) { - r0->var00 = 0x0; - r0->var02 = 0x0; + r0->var00 = 0; + r0->var02 = 0; } else { @@ -246,11 +209,10 @@ void sub_8124D3C(struct UnkStruct0 *r0, u16 r1) } void sub_8124DDC(u16 *dest, u16 src, u8 left, u8 top, u8 width, u8 height) { - u16 *_dest; u8 i; u8 j; - i = 0x0; + i = 0; dest = &dest[top * 32 + left]; for (; i < height; i++) { @@ -267,7 +229,7 @@ void sub_8124E2C(u16 *dest, u16 *src, u8 left, u8 top, u8 width, u8 height) u16 *_src = src; u8 i; u8 j; - i = 0x0; + i = 0; dest = &dest[top * 32 + left]; for (; i < height; i++) { -- cgit v1.2.3 From 1416a4c4efe8b926c809664eb63dd2c3d0f86728 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 28 Jan 2018 23:10:53 -0600 Subject: clean up option_menu.c and field_poison.c a bit --- src/battle/battle_setup.c | 2 +- src/engine/option_menu.c | 170 +++++++++++++++++++-------------------- src/field/field_control_avatar.c | 2 +- src/field/field_poison.c | 47 ++++++----- src/field/fldeff_poison.c | 4 +- 5 files changed, 112 insertions(+), 113 deletions(-) (limited to 'src') diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c index 892be1029..15555f833 100644 --- a/src/battle/battle_setup.c +++ b/src/battle/battle_setup.c @@ -475,7 +475,7 @@ static void Task_BattleStart(u8 taskId) switch (tState) { case 0: - if (!FieldPoisonEffectIsRunning()) // is poison not active? + if (!FldeffPoison_IsActive()) // is poison not active? { BattleTransition_StartOnField(tTransition); tState++; // go to case 1. diff --git a/src/engine/option_menu.c b/src/engine/option_menu.c index d4e921a0e..a2d32ffb6 100644 --- a/src/engine/option_menu.c +++ b/src/engine/option_menu.c @@ -10,19 +10,9 @@ extern void SetPokemonCryStereo(u32 val); -//Task data -enum { - TD_MENUSELECTION, - TD_TEXTSPEED, - TD_BATTLESCENE, - TD_BATTLESTYLE, - TD_SOUND, - TD_BUTTONMODE, - TD_FRAMETYPE, -}; - -//Menu items -enum { +// Menu items +enum +{ MENUITEM_TEXTSPEED, MENUITEM_BATTLESCENE, MENUITEM_BATTLESTYLE, @@ -32,6 +22,15 @@ enum { MENUITEM_CANCEL, }; +// Task data +#define tMenuSelection data[0] +#define tOptTextSpeed data[1] +#define tOptBattleScene data[2] +#define tOptBattleStyle data[3] +#define tOptSound data[4] +#define tOptButtonMode data[5] +#define tOptFrameType data[6] + const u16 gUnknown_0839F5FC[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal"); // note: this is only used in the Japanese release const u8 gUnknown_0839F63C[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp"); @@ -75,7 +74,6 @@ void CB2_InitOptionMenu(void) { default: case 0: - { SetVBlankCallback(NULL); REG_DISPCNT = 0; REG_BG2CNT = 0; @@ -92,7 +90,6 @@ void CB2_InitOptionMenu(void) DmaClear16(3, PLTT, PLTT_SIZE); gMain.state++; break; - } case 1: ResetPaletteFade(); ScanlineEffect_Stop(); @@ -150,37 +147,38 @@ void CB2_InitOptionMenu(void) { u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0); - gTasks[taskId].data[TD_MENUSELECTION] = 0; - gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed; - gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff; - gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle; - gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound; - gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; - gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; - - Menu_DrawStdWindowFrame(2, 0, 27, 3); - Menu_DrawStdWindowFrame(2, 4, 27, 19); - - Menu_PrintText(gSystemText_OptionMenu, 4, 1); - Menu_PrintText(gSystemText_TextSpeed, 4, 5); - Menu_PrintText(gSystemText_BattleScene, 4, 7); - Menu_PrintText(gSystemText_BattleStyle, 4, 9); - Menu_PrintText(gSystemText_Sound, 4, 11); - Menu_PrintText(gSystemText_ButtonMode, 4, 13); - Menu_PrintText(gSystemText_Frame, 4, 15); - Menu_PrintText(gSystemText_Cancel, 4, 17); - - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + gTasks[taskId].tMenuSelection = 0; + gTasks[taskId].tOptTextSpeed = gSaveBlock2.optionsTextSpeed; + gTasks[taskId].tOptBattleScene = gSaveBlock2.optionsBattleSceneOff; + gTasks[taskId].tOptBattleStyle = gSaveBlock2.optionsBattleStyle; + gTasks[taskId].tOptSound = gSaveBlock2.optionsSound; + gTasks[taskId].tOptButtonMode = gSaveBlock2.optionsButtonMode; + gTasks[taskId].tOptFrameType = gSaveBlock2.optionsWindowFrameType; + + Menu_DrawStdWindowFrame(2, 0, 27, 3); // title box + Menu_DrawStdWindowFrame(2, 4, 27, 19); // options list box + + Menu_PrintText(gSystemText_OptionMenu, 4, 1); + + Menu_PrintText(gSystemText_TextSpeed, 4, 5); + Menu_PrintText(gSystemText_BattleScene, 4, 7); + Menu_PrintText(gSystemText_BattleStyle, 4, 9); + Menu_PrintText(gSystemText_Sound, 4, 11); + Menu_PrintText(gSystemText_ButtonMode, 4, 13); + Menu_PrintText(gSystemText_Frame, 4, 15); + Menu_PrintText(gSystemText_Cancel, 4, 17); + + TextSpeed_DrawChoices(gTasks[taskId].tOptTextSpeed); + BattleScene_DrawChoices(gTasks[taskId].tOptBattleScene); + BattleStyle_DrawChoices(gTasks[taskId].tOptBattleStyle); + Sound_DrawChoices(gTasks[taskId].tOptSound); + ButtonMode_DrawChoices(gTasks[taskId].tOptButtonMode); + FrameType_DrawChoices(gTasks[taskId].tOptFrameType); REG_WIN0H = WIN_RANGE(17, 223); REG_WIN0V = WIN_RANGE(1, 31); - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + HighlightOptionMenuItem(gTasks[taskId].tMenuSelection); gMain.state++; break; } @@ -193,16 +191,14 @@ void CB2_InitOptionMenu(void) static void Task_OptionMenuFadeIn(u8 taskId) { if (!gPaletteFade.active) - { gTasks[taskId].func = Task_OptionMenuProcessInput; - } } static void Task_OptionMenuProcessInput(u8 taskId) { if (gMain.newKeys & A_BUTTON) { - if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL) + if (gTasks[taskId].tMenuSelection == MENUITEM_CANCEL) gTasks[taskId].func = Task_OptionMenuSave; } else if (gMain.newKeys & B_BUTTON) @@ -211,47 +207,47 @@ static void Task_OptionMenuProcessInput(u8 taskId) } else if (gMain.newKeys & DPAD_UP) { - if (gTasks[taskId].data[TD_MENUSELECTION] > 0) - gTasks[taskId].data[TD_MENUSELECTION]--; + if (gTasks[taskId].tMenuSelection > 0) + gTasks[taskId].tMenuSelection--; else - gTasks[taskId].data[TD_MENUSELECTION] = 6; - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + gTasks[taskId].tMenuSelection = 6; + HighlightOptionMenuItem(gTasks[taskId].tMenuSelection); } else if (gMain.newKeys & DPAD_DOWN) { - if (gTasks[taskId].data[TD_MENUSELECTION] <= 5) - gTasks[taskId].data[TD_MENUSELECTION]++; + if (gTasks[taskId].tMenuSelection < 6) + gTasks[taskId].tMenuSelection++; else - gTasks[taskId].data[TD_MENUSELECTION] = 0; - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + gTasks[taskId].tMenuSelection = 0; + HighlightOptionMenuItem(gTasks[taskId].tMenuSelection); } else { - switch (gTasks[taskId].data[TD_MENUSELECTION]) + switch (gTasks[taskId].tMenuSelection) { case MENUITEM_TEXTSPEED: - gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]); - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); + gTasks[taskId].tOptTextSpeed = TextSpeed_ProcessInput(gTasks[taskId].tOptTextSpeed); + TextSpeed_DrawChoices(gTasks[taskId].tOptTextSpeed); break; case MENUITEM_BATTLESCENE: - gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); + gTasks[taskId].tOptBattleScene = BattleScene_ProcessInput(gTasks[taskId].tOptBattleScene); + BattleScene_DrawChoices(gTasks[taskId].tOptBattleScene); break; case MENUITEM_BATTLESTYLE: - gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); + gTasks[taskId].tOptBattleStyle = BattleStyle_ProcessInput(gTasks[taskId].tOptBattleStyle); + BattleStyle_DrawChoices(gTasks[taskId].tOptBattleStyle); break; case MENUITEM_SOUND: - gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); + gTasks[taskId].tOptSound = Sound_ProcessInput(gTasks[taskId].tOptSound); + Sound_DrawChoices(gTasks[taskId].tOptSound); break; case MENUITEM_BUTTONMODE: - gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); + gTasks[taskId].tOptButtonMode = ButtonMode_ProcessInput(gTasks[taskId].tOptButtonMode); + ButtonMode_DrawChoices(gTasks[taskId].tOptButtonMode); break; case MENUITEM_FRAMETYPE: - gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + gTasks[taskId].tOptFrameType = FrameType_ProcessInput(gTasks[taskId].tOptFrameType); + FrameType_DrawChoices(gTasks[taskId].tOptFrameType); break; } } @@ -259,12 +255,12 @@ static void Task_OptionMenuProcessInput(u8 taskId) static void Task_OptionMenuSave(u8 taskId) { - gSaveBlock2.optionsTextSpeed = gTasks[taskId].data[TD_TEXTSPEED]; - gSaveBlock2.optionsBattleSceneOff = gTasks[taskId].data[TD_BATTLESCENE]; - gSaveBlock2.optionsBattleStyle = gTasks[taskId].data[TD_BATTLESTYLE]; - gSaveBlock2.optionsSound = gTasks[taskId].data[TD_SOUND]; - gSaveBlock2.optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE]; - gSaveBlock2.optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE]; + gSaveBlock2.optionsTextSpeed = gTasks[taskId].tOptTextSpeed; + gSaveBlock2.optionsBattleSceneOff = gTasks[taskId].tOptBattleScene; + gSaveBlock2.optionsBattleStyle = gTasks[taskId].tOptBattleStyle; + gSaveBlock2.optionsSound = gTasks[taskId].tOptSound; + gSaveBlock2.optionsButtonMode = gTasks[taskId].tOptButtonMode; + gSaveBlock2.optionsWindowFrameType = gTasks[taskId].tOptFrameType; BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_OptionMenuFadeOut; @@ -290,10 +286,10 @@ static void HighlightOptionMenuItem(u8 index) static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style) { - u8 dst[16]; + u8 dst[15]; u16 i; - for (i = 0; *text != EOS && i <= 14; i++) + for (i = 0; *text != EOS && i < 15; i++) dst[i] = *(text++); dst[2] = style; @@ -305,14 +301,14 @@ static u8 TextSpeed_ProcessInput(u8 selection) { if (gMain.newKeys & DPAD_RIGHT) { - if (selection <= 1) + if (selection < 2) selection++; else selection = 0; } if (gMain.newKeys & DPAD_LEFT) { - if (selection != 0) + if (selection > 0) selection--; else selection = 2; @@ -341,7 +337,7 @@ static void TextSpeed_DrawChoices(u8 selection) styles[selection] = 0x8; DrawOptionMenuChoice(gSystemText_Slow, TEXTSPEED_SLOW_LEFT, 40, styles[0]); - DrawOptionMenuChoice(gSystemText_Mid, TEXTSPEED_MIX_LEFT, 40, styles[1]); + DrawOptionMenuChoice(gSystemText_Mid, TEXTSPEED_MIX_LEFT, 40, styles[1]); DrawOptionMenuChoice(gSystemText_Fast, TEXTSPEED_FAST_LEFT, 40, styles[2]); } @@ -360,7 +356,7 @@ static void BattleScene_DrawChoices(u8 selection) styles[1] = 0xF; styles[selection] = 0x8; - DrawOptionMenuChoice(gSystemText_On, 120, 56, styles[0]); + DrawOptionMenuChoice(gSystemText_On, 120, 56, styles[0]); DrawOptionMenuChoice(gSystemText_Off, 190, 56, styles[1]); } @@ -388,7 +384,7 @@ static void BattleStyle_DrawChoices(u8 selection) styles[selection] = 0x8; DrawOptionMenuChoice(gSystemText_Shift, BATTLESTYLE_SHIFT, 72, styles[0]); - DrawOptionMenuChoice(gSystemText_Set, BATTLESTYLE_SET, 72, styles[1]); + DrawOptionMenuChoice(gSystemText_Set, BATTLESTYLE_SET, 72, styles[1]); } static u8 Sound_ProcessInput(u8 selection) @@ -409,7 +405,7 @@ static void Sound_DrawChoices(u8 selection) styles[1] = 0xF; styles[selection] = 0x8; - DrawOptionMenuChoice(gSystemText_Mono, 120, 88, styles[0]); + DrawOptionMenuChoice(gSystemText_Mono, 120, 88, styles[0]); DrawOptionMenuChoice(gSystemText_Stereo, 172, 88, styles[1]); } @@ -425,7 +421,7 @@ static u8 FrameType_ProcessInput(u8 selection) } if (gMain.newKeys & DPAD_LEFT) { - if (selection != 0) + if (selection > 0) selection--; else selection = 19; @@ -439,11 +435,11 @@ static u8 FrameType_ProcessInput(u8 selection) #if ENGLISH static void FrameType_DrawChoices(u8 selection) { - u8 text[8]; + u8 text[6]; u8 n = selection + 1; u16 i; - for (i = 0; gSystemText_Terminator[i] != EOS && i <= 5; i++) + for (i = 0; gSystemText_Terminator[i] != EOS && i < 6; i++) text[i] = gSystemText_Terminator[i]; //Convert number to decimal string @@ -534,14 +530,14 @@ static u8 ButtonMode_ProcessInput(u8 selection) { if (gMain.newKeys & DPAD_RIGHT) { - if (selection <= 1) + if (selection < 2) selection++; else selection = 0; } if (gMain.newKeys & DPAD_LEFT) { - if (selection != 0) + if (selection > 0) selection--; else selection = 2; @@ -559,6 +555,6 @@ static void ButtonMode_DrawChoices(u8 selection) styles[selection] = 0x8; DrawOptionMenuChoice(gSystemText_Normal, 120, 104, styles[0]); - DrawOptionMenuChoice(gSystemText_LR, 166, 104, styles[1]); - DrawOptionMenuChoice(gSystemText_LA, 188, 104, styles[2]); + DrawOptionMenuChoice(gSystemText_LR, 166, 104, styles[1]); + DrawOptionMenuChoice(gSystemText_LA, 188, 104, styles[2]); } diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index bf96c724f..83924b384 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -532,7 +532,7 @@ static void happiness_algorithm_step(void) { struct Pokemon *pkmn = gPlayerParty; - for (i = 5; i >= 0; i--) + for (i = 0; i < 6; i++) { AdjustFriendship(pkmn, 5); pkmn++; diff --git a/src/field/field_poison.c b/src/field/field_poison.c index 49678f269..8365351f9 100644 --- a/src/field/field_poison.c +++ b/src/field/field_poison.c @@ -43,7 +43,7 @@ void MonFaintFromPoisonOnField(u8 partyMember) u32 val = 0; AdjustFriendship(pkmn, 7); - SetMonData(pkmn, MON_DATA_STATUS, (u8*)&val); + SetMonData(pkmn, MON_DATA_STATUS, &val); GetMonData(pkmn, MON_DATA_NICKNAME, gStringVar1); StringGetEnd10(gStringVar1); } @@ -60,38 +60,36 @@ bool32 CheckMonFaintedFromPoison(u8 partyMember) return FALSE; } -//Task data -enum -{ - TD_STATE, - TD_PARTY_MEMBER, -}; +#define tState data[0] +#define tPartyMember data[1] void Task_WhiteOut(u8 taskId) { - s16 *taskData = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - switch (taskData[TD_STATE]) + switch (tState) { - case 0: //Check if Pokemon have fainted due to poison - while (taskData[TD_PARTY_MEMBER] < 6) + case 0: + // Check if any Pokemon have fainted due to poison + while (tPartyMember < 6) { - if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER])) + if (CheckMonFaintedFromPoison(tPartyMember)) { - MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]); + // Show message about fainted mon + MonFaintFromPoisonOnField(tPartyMember); ShowFieldMessage(fieldPoisonText_PokemonFainted); - taskData[TD_STATE]++; + tState++; return; } - taskData[TD_PARTY_MEMBER]++; + tPartyMember++; } - taskData[TD_STATE] = 2; + tState = 2; break; - case 1: //Wait for message box to disappear + case 1: // Wait for message box to disappear if (IsFieldMessageBoxHidden()) - taskData[TD_STATE]--; //Check next party member + tState--; // Go to previous step and check next party member break; - case 2: //Done checking Pokemon + case 2: // done checking all mons if (AllMonsFainted()) gSpecialVar_Result = 1; else @@ -102,6 +100,9 @@ void Task_WhiteOut(u8 taskId) } } +#undef tState +#undef tPartyMember + void ExecuteWhiteOut(void) { CreateTask(Task_WhiteOut, 0x50); @@ -115,26 +116,28 @@ s32 DoPoisonFieldEffect(void) u32 numFainting = 0; int i; + // count the number of mons that are poisoned and fainting from poison, + // and decrement HP of all poisoned mons for (i = 0; i < 6; i++) { u32 hp; - // UB: Too few arguments for function 'GetMonData' if (GetMonData(pkmn, MON_DATA_SANITY_BIT2) != 0 && pokemon_ailments_get_primary(GetMonData(pkmn, MON_DATA_STATUS)) == 1) { + // decrement HP of poisoned mon hp = GetMonData(pkmn, MON_DATA_HP); if (hp != 0) hp--; if (hp == 0) - numFainting++; //Pokemon will now faint due to poison + numFainting++; SetMonData(pkmn, MON_DATA_HP, &hp); numPoisoned++; } pkmn++; } if (numFainting != 0 || numPoisoned != 0) - DoFieldPoisonEffect(); + FldeffPoison_Start(); if (numFainting != 0) return 2; if (numPoisoned != 0) diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c index b0052d59d..52afc2516 100644 --- a/src/field/fldeff_poison.c +++ b/src/field/fldeff_poison.c @@ -32,13 +32,13 @@ static void Task_FieldPoisonEffect(u8 taskId) REG_MOSAIC = (data[1] << 4) | data[1]; } -void DoFieldPoisonEffect(void) +void FldeffPoison_Start(void) { PlaySE(SE_DOKU); CreateTask(Task_FieldPoisonEffect, 80); } -bool32 FieldPoisonEffectIsRunning(void) +bool32 FldeffPoison_IsActive(void) { return FuncIsActiveTask(Task_FieldPoisonEffect); } -- cgit v1.2.3 From 9af005dfd0a84692fb1e632589df99b1e53ba802 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 28 Jan 2018 20:40:11 -0800 Subject: Start decompiling rock.s --- src/battle/anim/rock.c | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 src/battle/anim/rock.c (limited to 'src') diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c new file mode 100644 index 000000000..d4307e7c1 --- /dev/null +++ b/src/battle/anim/rock.c @@ -0,0 +1,149 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "decompress.h" +#include "palette.h" +#include "rom_8077ABC.h" +#include "task.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; + +extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[]; +extern const u8 gBattleAnimBackgroundImage_SandstormBrew[]; +extern const u16 gBattleAnimSpritePalette_261[]; + +static void sub_80DCF1C(struct Sprite *sprite); +static void sub_80DD02C(struct Sprite *sprite); +void sub_80DD190(u8 taskId); + + +void sub_80DCE9C(struct Sprite *sprite) +{ + if (gBattleAnimArgs[3] != 0) + sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y); + + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += 14; + + StartSpriteAnim(sprite, gBattleAnimArgs[1]); + AnimateSprite(sprite); + + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 4; + sprite->data[3] = 16; + sprite->data[4] = -70; + sprite->data[5] = gBattleAnimArgs[2]; + + StoreSpriteCallbackInData(sprite, sub_80DCF1C); + sprite->callback = sub_8078278; + sprite->callback(sprite); +} + +static void sub_80DCF1C(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->data[5]; + + sprite->data[0] = 192; + sprite->data[1] = sprite->data[5]; + sprite->data[2] = 4; + sprite->data[3] = 32; + sprite->data[4] = -24; + + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); + sprite->callback = sub_8078278; + sprite->callback(sprite); +} + +void sub_80DCF60(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[5]); + AnimateSprite(sprite); + + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + sprite->pos1.x -= gBattleAnimArgs[0]; + else + sprite->pos1.x += gBattleAnimArgs[0]; + + sprite->pos1.y += gBattleAnimArgs[1]; + + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3]; + + sub_8078A5C(sprite); + sprite->data[3] = 0; + sprite->data[4] = 0; + + sprite->callback = sub_8078394; + StoreSpriteCallbackInData(sprite, move_anim_8074EE0); +} + +void sub_80DCFE4(struct Sprite *sprite) +{ + if (gBattleAnimArgs[6] == 0) + sub_80787B0(sprite, 0); + else + sub_8078764(sprite, 0); + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->data[2] = gBattleAnimArgs[4]; + sprite->data[3] = gBattleAnimArgs[5]; + + sprite->callback = sub_80DD02C; +} + +static void sub_80DD02C(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[1]; + sprite->pos2.y = -(sprite->data[4] >> 8); + sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]); + sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF; + + if (--sprite->data[0] == -1) + { + DestroyAnimSprite(sprite); + } +} + +void do_boulder_dust(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + int var0 = 0; + + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0x1000; + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG1CNT_BITFIELD.screenSize = 0; + + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + + sub_8078914(&subStruct); + DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000); + LZDecompressVram(&gBattleAnimBackgroundTilemap_SandstormBrew, subStruct.field_4); + LZDecompressVram(&gBattleAnimBackgroundImage_SandstormBrew, subStruct.field_0); + LoadCompressedPalette(&gBattleAnimSpritePalette_261, subStruct.field_8 << 4, 32); + + if (IsContest()) + sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0); + + if (gBattleAnimArgs[0] != 0 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + var0 = 1; + + gTasks[taskId].data[0] = var0; + gTasks[taskId].func = sub_80DD190; +} -- cgit v1.2.3 From cb9aec12785894d727583d13b0152c6d32948553 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 29 Jan 2018 15:08:10 -0600 Subject: integrate debug code in pokenav_before.c --- src/pokenav_before.c | 5048 ++------------------------------------------------ 1 file changed, 188 insertions(+), 4860 deletions(-) (limited to 'src') diff --git a/src/pokenav_before.c b/src/pokenav_before.c index b645136dc..4c55a5673 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -20,8 +20,6 @@ #include "text.h" #include "scanline_effect.h" -extern u8 ewram[]; - struct UnknownPokenav0 { /* 0x0000 */ u8 var0[0x0300]; @@ -472,315 +470,6 @@ void sub_80EBDBC(void (*func)(void)) ewram0_10.var304 = 0; } -#if DEBUG -__attribute__((naked)) -void sub_80EBDD8() -{ - asm("\ - push {lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._64 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r2, r1, #0\n\ - cmp r0, #0x11\n\ - bls ._62 @cond_branch\n\ - b ._131\n\ -._62:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._64 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._65:\n\ - .align 2, 0\n\ -._64:\n\ - .word gSharedMem\n\ - .word ._66\n\ -._66:\n\ - .word ._67\n\ - .word ._68\n\ - .word ._69\n\ - .word ._70\n\ - .word ._71\n\ - .word ._72\n\ - .word ._73\n\ - .word ._74\n\ - .word ._75\n\ - .word ._76\n\ - .word ._77\n\ - .word ._78\n\ - .word ._79\n\ - .word ._80\n\ - .word ._81\n\ - .word ._82\n\ - .word ._83\n\ - .word ._84\n\ -._67:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - mov r1, #0x80\n\ - lsl r1, r1, #0x13\n\ - mov r0, #0x0\n\ - strh r0, [r1]\n\ - ldr r1, ._86 @ gSharedMem\n\ - ldr r3, ._86 + 4 @ 0x6ddc\n\ - add r0, r1, r3\n\ - ldrb r2, [r0]\n\ - sub r3, r3, #0x2f\n\ - add r0, r1, r3\n\ - strb r2, [r0]\n\ - ldr r0, ._86 + 8 @ 0x6dae\n\ - add r2, r1, r0\n\ - mov r0, #0x5\n\ - strb r0, [r2]\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._124\n\ -._87:\n\ - .align 2, 0\n\ -._86:\n\ - .word gSharedMem\n\ - .word 0x6ddc\n\ - .word 0x6dae\n\ -._68:\n\ - bl sub_80F3FF0\n\ - ldr r1, ._91 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._69:\n\ - bl sub_80F4024\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._88 @cond_branch\n\ - b ._131\n\ -._88:\n\ - ldr r1, ._91 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._124\n\ -._92:\n\ - .align 2, 0\n\ -._91:\n\ - .word gSharedMem\n\ -._70:\n\ - bl sub_80F2598\n\ - ldr r1, ._94 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._124\n\ -._95:\n\ - .align 2, 0\n\ -._94:\n\ - .word gSharedMem\n\ -._71:\n\ - bl sub_80EEE20\n\ - ldr r1, ._99 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._72:\n\ - bl sub_80EEE54\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._96 @cond_branch\n\ - b ._131\n\ -._96:\n\ - bl sub_80EEE08\n\ - ldr r1, ._99 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._124\n\ -._100:\n\ - .align 2, 0\n\ -._99:\n\ - .word gSharedMem\n\ -._73:\n\ - mov r0, #0x0\n\ - bl sub_80EF248\n\ - ldr r1, ._104 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._74:\n\ - mov r0, #0x0\n\ - bl sub_80EF284\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._101 @cond_branch\n\ - b ._131\n\ -._101:\n\ - b ._110\n\ -._105:\n\ - .align 2, 0\n\ -._104:\n\ - .word gSharedMem\n\ -._75:\n\ - mov r0, #0x0\n\ - bl sub_80F1B8C\n\ - ldr r1, ._108 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._76:\n\ - mov r0, #0x0\n\ - bl sub_80F1BC8\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._131 @cond_branch\n\ - ldr r1, ._108 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._124\n\ -._109:\n\ - .align 2, 0\n\ -._108:\n\ - .word gSharedMem\n\ -._77:\n\ - ldr r0, ._111 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - b ._110\n\ -._112:\n\ - .align 2, 0\n\ -._111:\n\ - .word sub_80EBD18+1\n\ -._78:\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - mov r1, #0x0\n\ - str r1, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r1, ._114 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._124\n\ -._115:\n\ - .align 2, 0\n\ -._114:\n\ - .word gSharedMem\n\ -._79:\n\ - mov r0, #0x0\n\ - bl sub_80EED2C\n\ - ldr r1, ._117 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._124\n\ -._118:\n\ - .align 2, 0\n\ -._117:\n\ - .word gSharedMem\n\ -._80:\n\ - ldr r0, ._121 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._131 @cond_branch\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r2, r3\n\ - b ._124\n\ -._122:\n\ - .align 2, 0\n\ -._121:\n\ - .word gPaletteFade\n\ -._81:\n\ - mov r0, #0x0\n\ - bl sub_80F2C80\n\ - ldr r1, ._125 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._82:\n\ - mov r0, #0x0\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._131 @cond_branch\n\ - ldr r1, ._125 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._124\n\ -._126:\n\ - .align 2, 0\n\ -._125:\n\ - .word gSharedMem\n\ -._83:\n\ - bl sub_80F1DF0\n\ -._110:\n\ - ldr r1, ._128 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ -._124:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._131\n\ -._129:\n\ - .align 2, 0\n\ -._128:\n\ - .word gSharedMem\n\ -._84:\n\ - bl sub_80F1E50\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._131 @cond_branch\n\ - mov r0, #0x0\n\ - mov r1, #0x0\n\ - bl sub_80EF428\n\ - ldr r0, ._132 @ sub_80EC268\n\ - bl sub_80EBDBC\n\ - ldr r0, ._132 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._131 @cond_branch\n\ - ldr r0, ._132 + 8 @ 0x6007de0\n\ - ldr r2, ._132 + 12 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._131:\n\ - add sp, sp, #0x4\n\ - pop {r0}\n\ - bx r0\n\ -._133:\n\ - .align 2, 0\n\ -._132:\n\ - .word sub_80EC268+1\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800"); -} -#else void sub_80EBDD8() { switch (ewram0_10.var304) @@ -864,289 +553,15 @@ void sub_80EBDD8() { sub_80EF428(0, 0); sub_80EBDBC(&sub_80EC268); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif } break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80EC00C() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._136 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0xd\n\ - bls ._134 @cond_branch\n\ - b ._191\n\ -._134:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._136 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._137:\n\ - .align 2, 0\n\ -._136:\n\ - .word gSharedMem\n\ - .word ._138\n\ -._138:\n\ - .word ._139\n\ - .word ._140\n\ - .word ._141\n\ - .word ._142\n\ - .word ._143\n\ - .word ._144\n\ - .word ._145\n\ - .word ._146\n\ - .word ._147\n\ - .word ._148\n\ - .word ._149\n\ - .word ._150\n\ - .word ._151\n\ - .word ._152\n\ -._139:\n\ - bl sub_80EEF78\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._153 @cond_branch\n\ - b ._191\n\ -._153:\n\ - ldr r0, ._156 @ sub_80EBD80\n\ - bl SetVBlankCallback\n\ - bl sub_80EED1C\n\ - ldr r4, ._156 + 4 @ gSharedMem\n\ - ldr r1, ._156 + 8 @ 0x6ddc\n\ - add r0, r4, r1\n\ - ldrb r1, [r0]\n\ - ldr r2, ._156 + 12 @ 0x6dad\n\ - add r0, r4, r2\n\ - strb r1, [r0]\n\ - ldr r0, ._156 + 16 @ 0x6dae\n\ - add r1, r4, r0\n\ - mov r0, #0x5\n\ - strb r0, [r1]\n\ - bl sub_80EEE08\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r4, r4, r1\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._191\n\ -._157:\n\ - .align 2, 0\n\ -._156:\n\ - .word sub_80EBD80+1\n\ - .word gSharedMem\n\ - .word 0x6ddc\n\ - .word 0x6dad\n\ - .word 0x6dae\n\ -._140:\n\ - mov r0, #0x0\n\ - bl sub_80EF248\n\ - ldr r1, ._161 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._141:\n\ - mov r0, #0x0\n\ - bl sub_80EF284\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._158 @cond_branch\n\ - b ._191\n\ -._158:\n\ - ldr r1, ._161 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._184\n\ -._162:\n\ - .align 2, 0\n\ -._161:\n\ - .word gSharedMem\n\ -._142:\n\ - mov r0, #0x0\n\ - bl sub_80F1B8C\n\ - ldr r1, ._166 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._143:\n\ - mov r0, #0x0\n\ - bl sub_80F1BC8\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._163 @cond_branch\n\ - b ._191\n\ -._163:\n\ - ldr r1, ._166 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._184\n\ -._167:\n\ - .align 2, 0\n\ -._166:\n\ - .word gSharedMem\n\ -._144:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._191 @cond_branch\n\ - b ._169\n\ -._145:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._171 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._184\n\ -._172:\n\ - .align 2, 0\n\ -._171:\n\ - .word sub_80EBD18+1\n\ -._146:\n\ - mov r0, #0x0\n\ - bl sub_80EED2C\n\ - ldr r1, ._174 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._184\n\ -._175:\n\ - .align 2, 0\n\ -._174:\n\ - .word gSharedMem\n\ -._147:\n\ - ldr r0, ._178 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._191 @cond_branch\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._184\n\ -._179:\n\ - .align 2, 0\n\ -._178:\n\ - .word gPaletteFade\n\ -._148:\n\ - bl sub_80F2598\n\ - ldr r1, ._181 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._184\n\ -._182:\n\ - .align 2, 0\n\ -._181:\n\ - .word gSharedMem\n\ -._149:\n\ - mov r0, #0x0\n\ - bl sub_80F2C80\n\ - ldr r1, ._185 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._150:\n\ - mov r0, #0x0\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._191 @cond_branch\n\ - ldr r1, ._185 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._184\n\ -._186:\n\ - .align 2, 0\n\ -._185:\n\ - .word gSharedMem\n\ -._151:\n\ - bl sub_80F1DF0\n\ -._169:\n\ - ldr r1, ._188 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ -._184:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._191\n\ -._189:\n\ - .align 2, 0\n\ -._188:\n\ - .word gSharedMem\n\ -._152:\n\ - bl sub_80F1E50\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._191 @cond_branch\n\ - ldr r0, ._192 @ gSharedMem\n\ - ldr r1, ._192 + 4 @ 0x6dad\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - mov r0, #0x0\n\ - bl sub_80EF428\n\ - ldr r0, ._192 + 8 @ sub_80EC268\n\ - bl sub_80EBDBC\n\ - ldr r0, ._192 + 12 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._191 @cond_branch\n\ - ldr r0, ._192 + 16 @ 0x6007de0\n\ - ldr r2, ._192 + 20 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._191:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._193:\n\ - .align 2, 0\n\ -._192:\n\ - .word gSharedMem\n\ - .word 0x6dad\n\ - .word sub_80EC268+1\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800"); -} -#else void sub_80EC00C() { switch (ewram0_10.var304) @@ -1216,11 +631,14 @@ void sub_80EC00C() { sub_80EF428(0, ewram0_10.var6dad); sub_80EBDBC(&sub_80EC268); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif } break; } } -#endif void sub_80EC210() { @@ -1342,262 +760,6 @@ void sub_80EC268() } } -#if DEBUG -__attribute__((naked)) -void sub_80EC4A0() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._285 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0xe\n\ - bls ._283 @cond_branch\n\ - b ._340\n\ -._283:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._285 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._286:\n\ - .align 2, 0\n\ -._285:\n\ - .word gSharedMem\n\ - .word ._287\n\ -._287:\n\ - .word ._288\n\ - .word ._289\n\ - .word ._290\n\ - .word ._291\n\ - .word ._292\n\ - .word ._293\n\ - .word ._294\n\ - .word ._295\n\ - .word ._296\n\ - .word ._297\n\ - .word ._298\n\ - .word ._299\n\ - .word ._300\n\ - .word ._301\n\ - .word ._302\n\ -._288:\n\ - bl sub_80F1E84\n\ - mov r0, #0x0\n\ - bl sub_80F2D04\n\ - b ._336\n\ -._289:\n\ - bl sub_80F1F10\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._304 @cond_branch\n\ - b ._340\n\ -._304:\n\ - ldr r0, ._308 @ gSaveBlock2\n\ - ldrb r1, [r0, #0x15]\n\ - mov r0, #0x8\n\ - and r0, r0, r1\n\ - mov r1, #0x8\n\ - cmp r0, #0\n\ - beq ._306 @cond_branch\n\ - mov r1, #0x7\n\ -._306:\n\ - add r0, r1, #0\n\ - bl sub_80EEFBC\n\ - ldr r1, ._308 + 4 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._335\n\ -._309:\n\ - .align 2, 0\n\ -._308:\n\ - .word gSaveBlock2\n\ - .word gSharedMem\n\ -._290:\n\ - bl sub_80EEF34\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - beq ._310 @cond_branch\n\ - b ._340\n\ -._310:\n\ - ldr r4, ._313 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - str r2, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._335\n\ -._314:\n\ - .align 2, 0\n\ -._313:\n\ - .word gSharedMem\n\ -._291:\n\ - ldr r0, ._318 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._315 @cond_branch\n\ - b ._340\n\ -._315:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - b ._336\n\ -._319:\n\ - .align 2, 0\n\ -._318:\n\ - .word gPaletteFade\n\ -._292:\n\ - bl sub_80F2620\n\ - ldr r1, ._321 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._335\n\ -._322:\n\ - .align 2, 0\n\ -._321:\n\ - .word gSharedMem\n\ -._293:\n\ - bl sub_80EF814\n\ - b ._336\n\ -._294:\n\ - bl sub_80EF840\n\ - ldr r1, ._326 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._295:\n\ - bl sub_80EF874\n\ -._328:\n\ - lsl r0, r0, #0x18\n\ -._334:\n\ - cmp r0, #0\n\ - bne ._340 @cond_branch\n\ - b ._336\n\ -._327:\n\ - .align 2, 0\n\ -._326:\n\ - .word gSharedMem\n\ -._296:\n\ - mov r0, #0x4\n\ - bl sub_80F2C80\n\ - ldr r1, ._329 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._297:\n\ - mov r0, #0x4\n\ - bl sub_80F2CBC\n\ - b ._328\n\ -._330:\n\ - .align 2, 0\n\ -._329:\n\ - .word gSharedMem\n\ -._298:\n\ - bl sub_80F2DD8\n\ - ldr r0, ._332 @ sub_80EBD30\n\ - bl SetVBlankCallback\n\ - ldr r1, ._332 + 4 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._335\n\ -._333:\n\ - .align 2, 0\n\ -._332:\n\ - .word sub_80EBD30+1\n\ - .word gSharedMem\n\ -._299:\n\ - bl sub_8055870\n\ - b ._334\n\ -._300:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._335\n\ -._301:\n\ - mov r0, #0x1\n\ - bl sub_80EED2C\n\ - ldr r0, ._338 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._336 @cond_branch\n\ - ldr r0, ._338 + 4 @ 0x60075e0\n\ - ldr r2, ._338 + 8 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._336:\n\ - ldr r1, ._338 + 12 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ -._335:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._340\n\ -._339:\n\ - .align 2, 0\n\ -._338:\n\ - .word gLinkOpen\n\ - .word 0x60075e0\n\ - .word 0x600f800\n\ - .word gSharedMem\n\ -._302:\n\ - ldr r0, ._341 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._340 @cond_branch\n\ - ldr r0, ._341 + 4 @ sub_80EC67C\n\ - bl sub_80EBDBC\n\ -._340:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._342:\n\ - .align 2, 0\n\ -._341:\n\ - .word gPaletteFade\n\ - .word sub_80EC67C+1"); -} -#else void sub_80EC4A0() { u32 var1; @@ -1674,6 +836,10 @@ void sub_80EC4A0() break; case 0xD: sub_80EED2C(0x1); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x75E0), 0, (void *)(VRAM + 0xF800), 4); +#endif ewram0_10.var304++; break; case 0xE: @@ -1682,243 +848,7 @@ void sub_80EC4A0() break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80EC67C() -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._345 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x5\n\ - bls ._343 @cond_branch\n\ - b ._386\n\ -._343:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._345 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._346:\n\ - .align 2, 0\n\ -._345:\n\ - .word gSharedMem\n\ - .word ._347\n\ -._347:\n\ - .word ._348\n\ - .word ._349\n\ - .word ._350\n\ - .word ._351\n\ - .word ._352\n\ - .word ._353\n\ -._348:\n\ - bl sub_80FAB60\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x3\n\ - beq ._354 @cond_branch\n\ - cmp r0, #0x3\n\ - bgt ._355 @cond_branch\n\ - cmp r0, #0x1\n\ - beq ._356 @cond_branch\n\ - b ._386\n\ -._355:\n\ - cmp r0, #0x4\n\ - beq ._358 @cond_branch\n\ - cmp r0, #0x5\n\ - beq ._359 @cond_branch\n\ - b ._386\n\ -._356:\n\ - bl sub_80EED9C\n\ - b ._386\n\ -._354:\n\ - bl sub_80EF9F8\n\ - b ._386\n\ -._358:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._364 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - mov r1, #0x1\n\ - strh r1, [r0]\n\ - b ._386\n\ -._365:\n\ - .align 2, 0\n\ -._364:\n\ - .word gSharedMem\n\ -._359:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._367 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r0, r2\n\ - mov r1, #0x4\n\ - strh r1, [r0]\n\ - b ._386\n\ -._368:\n\ - .align 2, 0\n\ -._367:\n\ - .word gSharedMem\n\ -._349:\n\ - ldr r1, ._371 @ 0x6e90\n\ - add r0, r4, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - bne ._369 @cond_branch\n\ - bl sub_80FAEC4\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._380\n\ -._372:\n\ - .align 2, 0\n\ -._371:\n\ - .word 0x6e90\n\ -._369:\n\ - mov r0, #0x1\n\ - bl sub_80EFBDC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._386 @cond_branch\n\ - bl sub_80FAEC4\n\ - b ._374\n\ -._350:\n\ - bl sub_80FAFC0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._386 @cond_branch\n\ - ldr r5, ._378 @ gSharedMem\n\ - ldr r1, ._378 + 4 @ 0x6e90\n\ - add r0, r5, r1\n\ - ldrb r4, [r0]\n\ - cmp r4, #0\n\ - bne ._376 @cond_branch\n\ - bl sub_80EFBB0\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r5, r2\n\ - strh r4, [r0]\n\ - b ._386\n\ -._379:\n\ - .align 2, 0\n\ -._378:\n\ - .word gSharedMem\n\ - .word 0x6e90\n\ -._376:\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r5, r0\n\ - b ._380\n\ -._351:\n\ - mov r0, #0x0\n\ - bl sub_80EFBDC\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0\n\ - bne ._386 @cond_branch\n\ - bl sub_80EFBB0\n\ - ldr r0, ._383 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - strh r4, [r0]\n\ - b ._386\n\ -._384:\n\ - .align 2, 0\n\ -._383:\n\ - .word gSharedMem\n\ -._352:\n\ - mov r2, #0xc2\n\ - lsl r2, r2, #0x2\n\ - add r0, r4, r2\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ -._374:\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ -._380:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._386\n\ -._353:\n\ - ldr r0, ._389 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._386 @cond_branch\n\ - bl sub_80F2DF4\n\ - mov r0, #0x4\n\ - bl sub_80F2D04\n\ - ldr r3, ._389 + 4 @ gSaveBlock2\n\ - mov r2, #0x0\n\ - ldr r0, ._389 + 8 @ gSharedMem\n\ - ldr r1, ._389 + 12 @ 0x6e90\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._387 @cond_branch\n\ - mov r2, #0x1\n\ -._387:\n\ - lsl r2, r2, #0x3\n\ - ldrb r1, [r3, #0x15]\n\ - mov r0, #0x9\n\ - neg r0, r0\n\ - and r0, r0, r1\n\ - orr r0, r0, r2\n\ - strb r0, [r3, #0x15]\n\ - ldr r0, ._389 + 16 @ sub_80EC00C\n\ - bl sub_80EBDBC\n\ -._386:\n\ - ldr r0, ._389 + 20 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._388 @cond_branch\n\ - ldr r0, ._389 + 24 @ gLink\n\ - ldr r2, ._389 + 28 @ 0xfbd\n\ - add r0, r0, r2\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x1\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._388:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._390:\n\ - .align 2, 0\n\ -._389:\n\ - .word gPaletteFade\n\ - .word gSaveBlock2\n\ - .word gSharedMem\n\ - .word 0x6e90\n\ - .word sub_80EC00C+1\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void sub_80EC67C() { switch (ewram0_10.var304) @@ -1989,8 +919,11 @@ void sub_80EC67C() } break; } -} +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 4); #endif +} void sub_80EC81C() { @@ -2085,275 +1018,6 @@ void sub_80EC9A8() } } -#if DEBUG -__attribute__((naked)) -void sub_80ECA10() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._456 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0xd\n\ - bls ._454 @cond_branch\n\ - b ._509\n\ -._454:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._456 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._457:\n\ - .align 2, 0\n\ -._456:\n\ - .word gSharedMem\n\ - .word ._458\n\ -._458:\n\ - .word ._459\n\ - .word ._460\n\ - .word ._461\n\ - .word ._462\n\ - .word ._463\n\ - .word ._464\n\ - .word ._465\n\ - .word ._466\n\ - .word ._467\n\ - .word ._468\n\ - .word ._469\n\ - .word ._470\n\ - .word ._471\n\ - .word ._472\n\ -._459:\n\ - bl sub_80EEF78\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._473 @cond_branch\n\ - b ._509\n\ -._473:\n\ - ldr r0, ._476 @ sub_80EBD80\n\ - bl SetVBlankCallback\n\ - bl sub_80EED1C\n\ - ldr r4, ._476 + 4 @ gSharedMem\n\ - ldr r1, ._476 + 8 @ 0x6df0\n\ - add r0, r4, r1\n\ - ldrb r1, [r0]\n\ - ldr r2, ._476 + 12 @ 0x6dad\n\ - add r0, r4, r2\n\ - strb r1, [r0]\n\ - ldr r0, ._476 + 16 @ 0x6dae\n\ - add r1, r4, r0\n\ - mov r0, #0x3\n\ - strb r0, [r1]\n\ - bl sub_80EEE08\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r4, r4, r1\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._509\n\ -._477:\n\ - .align 2, 0\n\ -._476:\n\ - .word sub_80EBD80+1\n\ - .word gSharedMem\n\ - .word 0x6df0\n\ - .word 0x6dad\n\ - .word 0x6dae\n\ -._460:\n\ - mov r0, #0x1\n\ - bl sub_80EF248\n\ - ldr r1, ._481 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._461:\n\ - mov r0, #0x1\n\ - bl sub_80EF284\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._478 @cond_branch\n\ - b ._509\n\ -._478:\n\ - ldr r1, ._481 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._502\n\ -._482:\n\ - .align 2, 0\n\ -._481:\n\ - .word gSharedMem\n\ -._462:\n\ - mov r0, #0x1\n\ - bl sub_80F1B8C\n\ - ldr r1, ._486 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._463:\n\ - mov r0, #0x1\n\ - bl sub_80F1BC8\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._483 @cond_branch\n\ - b ._509\n\ -._483:\n\ - ldr r1, ._486 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._502\n\ -._487:\n\ - .align 2, 0\n\ -._486:\n\ - .word gSharedMem\n\ -._464:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._509 @cond_branch\n\ - b ._496\n\ -._465:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._491 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._502\n\ -._492:\n\ - .align 2, 0\n\ -._491:\n\ - .word sub_80EBD18+1\n\ -._466:\n\ - mov r0, #0x0\n\ - bl sub_80EED2C\n\ - ldr r1, ._494 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._502\n\ -._495:\n\ - .align 2, 0\n\ -._494:\n\ - .word gSharedMem\n\ -._467:\n\ - bl sub_80F2598\n\ - b ._496\n\ -._468:\n\ - ldr r0, ._499 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._509 @cond_branch\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ - b ._502\n\ -._500:\n\ - .align 2, 0\n\ -._499:\n\ - .word gPaletteFade\n\ -._469:\n\ - mov r0, #0x1\n\ - bl sub_80F2C80\n\ - ldr r1, ._503 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._470:\n\ - mov r0, #0x1\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._509 @cond_branch\n\ - ldr r1, ._503 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._502\n\ -._504:\n\ - .align 2, 0\n\ -._503:\n\ - .word gSharedMem\n\ -._471:\n\ - bl sub_80F1DF0\n\ -._496:\n\ - ldr r1, ._506 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ -._502:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._509\n\ -._507:\n\ - .align 2, 0\n\ -._506:\n\ - .word gSharedMem\n\ -._472:\n\ - bl sub_80F1E50\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._509 @cond_branch\n\ - ldr r0, ._510 @ gSharedMem\n\ - ldr r1, ._510 + 4 @ 0x6dad\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - mov r0, #0x1\n\ - bl sub_80EF428\n\ - ldr r0, ._510 + 8 @ sub_80EC86C\n\ - bl sub_80EBDBC\n\ - ldr r0, ._510 + 12 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._509 @cond_branch\n\ - ldr r0, ._510 + 16 @ 0x6007de0\n\ - ldr r2, ._510 + 20 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._509:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._511:\n\ - .align 2, 0\n\ -._510:\n\ - .word gSharedMem\n\ - .word 0x6dad\n\ - .word sub_80EC86C+1\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800"); -} -#else void sub_80ECA10() { switch (ewram0_10.var304) @@ -2364,23 +1028,23 @@ void sub_80ECA10() SetVBlankCallback(&sub_80EBD80); sub_80EED1C(); ewram0_10.var6dad = ewram0_10.var6df0; - ewram0_10.var6dae = 0x3; + ewram0_10.var6dae = 3; sub_80EEE08(); ewram0_10.var304++; } break; case 1: - sub_80EF248(0x1); + sub_80EF248(1); ewram0_10.var304++; case 2: - if (!sub_80EF284(0x1)) + if (!sub_80EF284(1)) ewram0_10.var304++; break; case 3: - sub_80F1B8C(0x1); + sub_80F1B8C(1); ewram0_10.var304++; case 4: - if (!sub_80F1BC8(0x1)) + if (!sub_80F1BC8(1)) ewram0_10.var304++; break; case 5: @@ -2404,28 +1068,31 @@ void sub_80ECA10() if (!gPaletteFade.active) ewram0_10.var304++; break; - case 0xA: - sub_80F2C80(0x1); + case 10: + sub_80F2C80(1); ewram0_10.var304++; // fall through - case 0xB: - if (!sub_80F2CBC(0x1)) + case 11: + if (!sub_80F2CBC(1)) ewram0_10.var304++; break; - case 0xC: + case 12: sub_80F1DF0(); ewram0_10.var304++; break; - case 0xD: + case 13: if (!sub_80F1E50()) { sub_80EF428(1, ewram0_10.var6dad); sub_80EBDBC(&sub_80EC86C); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif } break; } } -#endif void sub_80ECC08() { @@ -2481,362 +1148,6 @@ void sub_80ECC08() } } -#if DEBUG -__attribute__((naked)) -void sub_80ECD80() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._564 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x14\n\ - bls ._562 @cond_branch\n\ - b ._642\n\ -._562:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._564 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._565:\n\ - .align 2, 0\n\ -._564:\n\ - .word gSharedMem\n\ - .word ._566\n\ -._566:\n\ - .word ._567\n\ - .word ._568\n\ - .word ._569\n\ - .word ._570\n\ - .word ._571\n\ - .word ._572\n\ - .word ._573\n\ - .word ._574\n\ - .word ._575\n\ - .word ._576\n\ - .word ._577\n\ - .word ._578\n\ - .word ._579\n\ - .word ._580\n\ - .word ._581\n\ - .word ._582\n\ - .word ._583\n\ - .word ._584\n\ - .word ._585\n\ - .word ._586\n\ - .word ._587\n\ -._567:\n\ - mov r3, #0xc2\n\ - lsl r3, r3, #0x2\n\ - add r0, r4, r3\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ - b ._630\n\ -._568:\n\ - ldr r0, ._592 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._589 @cond_branch\n\ - b ._642\n\ -._589:\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._630\n\ -._593:\n\ - .align 2, 0\n\ -._592:\n\ - .word gPaletteFade\n\ -._569:\n\ - bl sub_80EEF78\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._594 @cond_branch\n\ - b ._642\n\ -._594:\n\ - ldr r0, ._597 @ sub_80EBD80\n\ - bl SetVBlankCallback\n\ - b ._625\n\ -._598:\n\ - .align 2, 0\n\ -._597:\n\ - .word sub_80EBD80+1\n\ -._570:\n\ - bl sub_80EED1C\n\ - bl sub_80F3130\n\ - ldr r1, ._600 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._630\n\ -._601:\n\ - .align 2, 0\n\ -._600:\n\ - .word gSharedMem\n\ -._571:\n\ - mov r0, #0x1\n\ - bl sub_80F2D6C\n\ - ldr r1, ._603 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._630\n\ -._604:\n\ - .align 2, 0\n\ -._603:\n\ - .word gSharedMem\n\ -._572:\n\ - mov r0, #0x5\n\ - bl sub_80F2D6C\n\ - b ._625\n\ -._573:\n\ - ldr r1, ._607 @ 0x6dfc\n\ - add r0, r4, r1\n\ - ldrb r1, [r0]\n\ - ldr r2, ._607 + 4 @ 0x6dad\n\ - add r0, r4, r2\n\ - strb r1, [r0]\n\ - ldr r3, ._607 + 8 @ 0x6dae\n\ - add r1, r4, r3\n\ - mov r0, #0x6\n\ - strb r0, [r1]\n\ - bl sub_80EEE08\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ - b ._630\n\ -._608:\n\ - .align 2, 0\n\ -._607:\n\ - .word 0x6dfc\n\ - .word 0x6dad\n\ - .word 0x6dae\n\ -._574:\n\ - mov r0, #0x2\n\ - bl sub_80EF248\n\ - ldr r1, ._612 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._575:\n\ - mov r0, #0x2\n\ - bl sub_80EF284\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._609 @cond_branch\n\ - b ._642\n\ -._609:\n\ - b ._625\n\ -._613:\n\ - .align 2, 0\n\ -._612:\n\ - .word gSharedMem\n\ -._576:\n\ - mov r0, #0x2\n\ - bl sub_80F1B8C\n\ - ldr r1, ._617 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._577:\n\ - mov r0, #0x2\n\ - bl sub_80F1BC8\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._614 @cond_branch\n\ - b ._642\n\ -._614:\n\ - ldr r1, ._617 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._630\n\ -._618:\n\ - .align 2, 0\n\ -._617:\n\ - .word gSharedMem\n\ -._578:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - beq ._619 @cond_branch\n\ - b ._642\n\ -._619:\n\ - b ._625\n\ -._579:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._623 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._630\n\ -._624:\n\ - .align 2, 0\n\ -._623:\n\ - .word sub_80EBD18+1\n\ -._580:\n\ - mov r0, #0x0\n\ - bl sub_80EED2C\n\ - b ._625\n\ -._581:\n\ - bl sub_80F2598\n\ - ldr r1, ._627 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._630\n\ -._628:\n\ - .align 2, 0\n\ -._627:\n\ - .word gSharedMem\n\ -._582:\n\ - ldr r0, ._631 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._642 @cond_branch\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._630\n\ -._632:\n\ - .align 2, 0\n\ -._631:\n\ - .word gPaletteFade\n\ -._583:\n\ - mov r0, #0x1\n\ - bl sub_80F2C80\n\ - ldr r1, ._635 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._584:\n\ - mov r0, #0x1\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - bne ._642 @cond_branch\n\ - ldr r0, ._635 @ gSharedMem\n\ - ldr r3, ._635 + 4 @ 0x306\n\ - add r1, r0, r3\n\ - strh r2, [r1]\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - add r1, r1, #0x1\n\ - strh r1, [r0]\n\ - b ._642\n\ -._636:\n\ - .align 2, 0\n\ -._635:\n\ - .word gSharedMem\n\ - .word 0x306\n\ -._585:\n\ - mov r0, #0x5\n\ - bl sub_80F2C80\n\ - ldr r1, ._639 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._586:\n\ - mov r0, #0x5\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._642 @cond_branch\n\ - bl sub_80F1DF0\n\ -._625:\n\ - ldr r1, ._639 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ -._630:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._642\n\ -._640:\n\ - .align 2, 0\n\ -._639:\n\ - .word gSharedMem\n\ -._587:\n\ - bl sub_80F1E50\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._642 @cond_branch\n\ - ldr r0, ._643 @ gSharedMem\n\ - ldr r1, ._643 + 4 @ 0x6dad\n\ - add r0, r0, r1\n\ - ldrb r1, [r0]\n\ - mov r0, #0x2\n\ - bl sub_80EF428\n\ - ldr r0, ._643 + 8 @ sub_80ECC08\n\ - bl sub_80EBDBC\n\ - ldr r0, ._643 + 12 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._642 @cond_branch\n\ - ldr r0, ._643 + 16 @ 0x6007de0\n\ - ldr r2, ._643 + 20 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._642:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._644:\n\ - .align 2, 0\n\ -._643:\n\ - .word gSharedMem\n\ - .word 0x6dad\n\ - .word sub_80ECC08+1\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800"); -} -#else void sub_80ECD80() { switch (ewram0_10.var304) @@ -2939,422 +1250,15 @@ void sub_80ECD80() { sub_80EF428(2, ewram0_10.var6dad); sub_80EBDBC(&sub_80ECC08); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif } break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80ED01C() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._647 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x13\n\ - bls ._645 @cond_branch\n\ - b ._736\n\ -._645:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._647 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._648:\n\ - .align 2, 0\n\ -._647:\n\ - .word gSharedMem\n\ - .word ._649\n\ -._649:\n\ - .word ._650\n\ - .word ._651\n\ - .word ._652\n\ - .word ._653\n\ - .word ._654\n\ - .word ._655\n\ - .word ._656\n\ - .word ._657\n\ - .word ._658\n\ - .word ._659\n\ - .word ._660\n\ - .word ._661\n\ - .word ._662\n\ - .word ._663\n\ - .word ._664\n\ - .word ._665\n\ - .word ._666\n\ - .word ._667\n\ - .word ._668\n\ - .word ._669\n\ -._650:\n\ - bl sub_80F1E84\n\ - mov r0, #0x1\n\ - bl sub_80F2D04\n\ - mov r0, #0x5\n\ - bl sub_80F2D04\n\ - ldr r1, ._671 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - b ._724\n\ -._672:\n\ - .align 2, 0\n\ -._671:\n\ - .word gSharedMem\n\ -._651:\n\ - bl sub_80F1F10\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._673 @cond_branch\n\ - b ._736\n\ -._673:\n\ - mov r0, #0x0\n\ - bl sub_80EEFBC\n\ - ldr r1, ._676 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._724\n\ -._677:\n\ - .align 2, 0\n\ -._676:\n\ - .word gSharedMem\n\ -._652:\n\ - bl sub_80EEF34\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - beq ._678 @cond_branch\n\ - b ._736\n\ -._678:\n\ - ldr r4, ._681 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - str r2, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._724\n\ -._682:\n\ - .align 2, 0\n\ -._681:\n\ - .word gSharedMem\n\ -._653:\n\ - ldr r0, ._686 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._683 @cond_branch\n\ - b ._736\n\ -._683:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80EF814\n\ - ldr r1, ._686 + 4 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - b ._724\n\ -._687:\n\ - .align 2, 0\n\ -._686:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ -._654:\n\ - bl sub_80F2620\n\ - ldr r1, ._689 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._724\n\ -._690:\n\ - .align 2, 0\n\ -._689:\n\ - .word gSharedMem\n\ -._655:\n\ - bl sub_80F4D44\n\ - ldr r1, ._693 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._656:\n\ - bl sub_80F4D88\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._691 @cond_branch\n\ - ldr r1, ._693 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x2\n\ - strh r0, [r1]\n\ - b ._736\n\ -._694:\n\ - .align 2, 0\n\ -._693:\n\ - .word gSharedMem\n\ -._691:\n\ - ldr r1, ._696 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._724\n\ -._697:\n\ - .align 2, 0\n\ -._696:\n\ - .word gSharedMem\n\ -._657:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - beq ._698 @cond_branch\n\ - b ._736\n\ -._698:\n\ - ldr r1, ._701 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - sub r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._736\n\ -._702:\n\ - .align 2, 0\n\ -._701:\n\ - .word gSharedMem\n\ -._658:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - beq ._703 @cond_branch\n\ - b ._736\n\ -._703:\n\ - ldr r1, ._706 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - b ._724\n\ -._707:\n\ - .align 2, 0\n\ -._706:\n\ - .word gSharedMem\n\ -._659:\n\ - mov r0, #0x0\n\ - bl sub_80F0264\n\ - ldr r1, ._711 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._660:\n\ - bl sub_80F02A0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._708 @cond_branch\n\ - b ._736\n\ -._708:\n\ - ldr r1, ._711 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._724\n\ -._712:\n\ - .align 2, 0\n\ -._711:\n\ - .word gSharedMem\n\ -._661:\n\ - mov r0, #0x0\n\ - bl sub_80F3008\n\ - ldr r1, ._714 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - b ._724\n\ -._715:\n\ - .align 2, 0\n\ -._714:\n\ - .word gSharedMem\n\ -._662:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - beq ._716 @cond_branch\n\ - b ._736\n\ -._716:\n\ - ldr r1, ._719 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._724\n\ -._720:\n\ - .align 2, 0\n\ -._719:\n\ - .word gSharedMem\n\ -._663:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._722 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._724\n\ -._723:\n\ - .align 2, 0\n\ -._722:\n\ - .word sub_80EBD18+1\n\ -._664:\n\ - mov r0, #0x4\n\ - bl sub_80EED2C\n\ - ldr r1, ._725 @ gSharedMem\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r1, r3\n\ - b ._724\n\ -._726:\n\ - .align 2, 0\n\ -._725:\n\ - .word gSharedMem\n\ -._665:\n\ - ldr r0, ._729 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - lsl r0, r0, #0x18\n\ - lsr r1, r0, #0x18\n\ - cmp r1, #0\n\ - bne ._736 @cond_branch\n\ - ldr r2, ._729 + 4 @ 0x306\n\ - add r0, r4, r2\n\ - strh r1, [r0]\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r1, r4, r3\n\ -._724:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._736\n\ -._730:\n\ - .align 2, 0\n\ -._729:\n\ - .word gPaletteFade\n\ - .word 0x306\n\ -._666:\n\ - mov r0, #0x1\n\ - bl sub_80F2C80\n\ - ldr r1, ._733 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._667:\n\ - mov r0, #0x1\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - bne ._736 @cond_branch\n\ - ldr r0, ._733 @ gSharedMem\n\ - ldr r3, ._733 + 4 @ 0x306\n\ - add r1, r0, r3\n\ - strh r2, [r1]\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - add r1, r1, #0x1\n\ - strh r1, [r0]\n\ - b ._736\n\ -._734:\n\ - .align 2, 0\n\ -._733:\n\ - .word gSharedMem\n\ - .word 0x306\n\ -._668:\n\ - ldr r4, ._737 @ gSharedMem\n\ - ldr r2, ._737 + 4 @ 0x6dfc\n\ - add r0, r4, r2\n\ - ldrb r0, [r0]\n\ - add r0, r0, #0x7\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl sub_80F2C80\n\ - mov r3, #0xc1\n\ - lsl r3, r3, #0x2\n\ - add r4, r4, r3\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ -._669:\n\ - ldr r0, ._737 @ gSharedMem\n\ - ldr r1, ._737 + 4 @ 0x6dfc\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - add r0, r0, #0x7\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._736 @cond_branch\n\ - ldr r0, ._737 + 8 @ sub_80ED31C\n\ - bl sub_80EBDBC\n\ - ldr r0, ._737 + 12 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._736 @cond_branch\n\ - ldr r0, ._737 + 16 @ 0x6007de0\n\ - ldr r2, ._737 + 20 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._736:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._738:\n\ - .align 2, 0\n\ -._737:\n\ - .word gSharedMem\n\ - .word 0x6dfc\n\ - .word sub_80ED31C+1\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800"); -} -#else void sub_80ED01C() { switch (ewram0_10.var304) @@ -3459,133 +1363,17 @@ void sub_80ED01C() // fall through case 19: if (!sub_80F2CBC(ewram0_10.var6dfc + 7)) + { sub_80EBDBC(&sub_80ED31C); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif + } break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80ED31C() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._743 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r4, r0, r1\n\ - ldrh r0, [r4]\n\ - cmp r0, #0x1\n\ - beq ._739 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._740 @cond_branch\n\ - cmp r0, #0\n\ - beq ._741 @cond_branch\n\ - b ._761\n\ -._744:\n\ - .align 2, 0\n\ -._743:\n\ - .word gSharedMem\n\ -._740:\n\ - cmp r0, #0x2\n\ - beq ._745 @cond_branch\n\ - b ._761\n\ -._741:\n\ - bl sub_80F5DD4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - beq ._747 @cond_branch\n\ - cmp r0, #0x2\n\ - beq ._748 @cond_branch\n\ - ldr r0, ._751 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._749 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._751 + 4 @ sub_80ED4D8\n\ - bl sub_80EBDBC\n\ - b ._762\n\ -._752:\n\ - .align 2, 0\n\ -._751:\n\ - .word gMain\n\ - .word sub_80ED4D8+1\n\ -._747:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl ShowMapNamePopUpWindow\n\ - b ._762\n\ -._748:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._762\n\ -._749:\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._761 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._757 @ sub_80ECD80\n\ - bl sub_80EBDBC\n\ - b ._762\n\ -._758:\n\ - .align 2, 0\n\ -._757:\n\ - .word sub_80ECD80+1\n\ -._739:\n\ - bl sub_80F0718\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._761 @cond_branch\n\ - bl ShowMapNamePopUpWindow\n\ - bl sub_80F3264\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - b ._760\n\ -._745:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._761 @cond_branch\n\ -._760:\n\ - strh r0, [r4]\n\ -._761:\n\ - ldr r0, ._763 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._762 @cond_branch\n\ - ldr r0, ._763 + 4 @ gLink\n\ - ldr r1, ._763 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x8\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._762:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._764:\n\ - .align 2, 0\n\ -._763:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void sub_80ED31C() { switch (ewram0_10.var304) @@ -3596,21 +1384,23 @@ void sub_80ED31C() case 1: PlaySE(SE_SELECT); ShowMapNamePopUpWindow(); - break; + return; case 2: PlaySE(SE_SELECT); ewram0_10.var304++; - break; + return; default: if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); sub_80EBDBC(&sub_80ED4D8); + return; } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); sub_80EBDBC(&sub_80ECD80); + return; } break; } @@ -3628,196 +1418,12 @@ void sub_80ED31C() ewram0_10.var304 = 0; break; } -} -#endif - #if DEBUG -__attribute__((naked)) -void sub_80ED3D0() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._767 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - cmp r0, #0x8\n\ - bls ._765 @cond_branch\n\ - b ._803\n\ -._765:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._767 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._768:\n\ - .align 2, 0\n\ -._767:\n\ - .word gSharedMem\n\ - .word ._769\n\ -._769:\n\ - .word ._770\n\ - .word ._771\n\ - .word ._772\n\ - .word ._773\n\ - .word ._774\n\ - .word ._775\n\ - .word ._776\n\ - .word ._777\n\ - .word ._778\n\ -._770:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - ldr r1, ._780 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._793\n\ -._781:\n\ - .align 2, 0\n\ -._780:\n\ - .word gSharedMem\n\ -._771:\n\ - bl sub_80EED0C\n\ - bl sub_80F6134\n\ - ldr r1, ._783 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._793\n\ -._784:\n\ - .align 2, 0\n\ -._783:\n\ - .word gSharedMem\n\ -._772:\n\ - mov r0, #0x0\n\ - bl sub_80EEFBC\n\ - ldr r1, ._786 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._793\n\ -._787:\n\ - .align 2, 0\n\ -._786:\n\ - .word gSharedMem\n\ -._773:\n\ - mov r0, #0x0\n\ - bl sub_80F0264\n\ - ldr r1, ._790 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._774:\n\ - bl sub_80F02A0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._803 @cond_branch\n\ - ldr r1, ._790 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._793\n\ -._791:\n\ - .align 2, 0\n\ -._790:\n\ - .word gSharedMem\n\ -._775:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._803 @cond_branch\n\ - ldr r1, ._794 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._793\n\ -._795:\n\ - .align 2, 0\n\ -._794:\n\ - .word gSharedMem\n\ -._776:\n\ - mov r0, #0x0\n\ - bl sub_80F3008\n\ - ldr r4, ._797 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._797 + 4 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ -._793:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._803\n\ -._798:\n\ - .align 2, 0\n\ -._797:\n\ - .word gSharedMem\n\ - .word sub_80EBD18+1\n\ -._777:\n\ - mov r0, #0x4\n\ - bl sub_80EED2C\n\ - ldr r1, ._801 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - ldr r0, ._801 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._803 @cond_branch\n\ - ldr r0, ._801 + 8 @ 0x6007de0\n\ - ldr r2, ._801 + 12 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ - b ._803\n\ -._802:\n\ - .align 2, 0\n\ -._801:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800\n\ -._778:\n\ - ldr r0, ._804 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._803 @cond_branch\n\ - ldr r0, ._804 + 4 @ sub_80ED31C\n\ - bl sub_80EBDBC\n\ -._803:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._805:\n\ - .align 2, 0\n\ -._804:\n\ - .word gPaletteFade\n\ - .word sub_80ED31C+1"); + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 8, 2, 4); +#endif } -#else + void sub_80ED3D0() { switch (ewram0_10.var304) @@ -3856,6 +1462,10 @@ void sub_80ED3D0() case 7: sub_80EED2C(0x4); ewram0_10.var304++; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif break; case 8: if (!gPaletteFade.active) @@ -3863,207 +1473,7 @@ void sub_80ED3D0() break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80ED4D8() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._808 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x8\n\ - bls ._806 @cond_branch\n\ - b ._844\n\ -._806:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._808 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._809:\n\ - .align 2, 0\n\ -._808:\n\ - .word gSharedMem\n\ - .word ._810\n\ -._810:\n\ - .word ._811\n\ - .word ._812\n\ - .word ._813\n\ - .word ._814\n\ - .word ._815\n\ - .word ._816\n\ - .word ._817\n\ - .word ._818\n\ - .word ._819\n\ -._811:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - b ._820\n\ -._812:\n\ - ldr r0, ._824 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._821 @cond_branch\n\ - b ._844\n\ -._821:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80F3130\n\ - ldr r1, ._824 + 4 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._834\n\ -._825:\n\ - .align 2, 0\n\ -._824:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ -._813:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._844 @cond_branch\n\ - ldr r1, ._828 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._834\n\ -._829:\n\ - .align 2, 0\n\ -._828:\n\ - .word gSharedMem\n\ -._814:\n\ - bl sub_80F4CF0\n\ - ldr r1, ._831 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._834\n\ -._832:\n\ - .align 2, 0\n\ -._831:\n\ - .word gSharedMem\n\ -._815:\n\ - bl sub_80EFF34\n\ - ldr r1, ._835 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._816:\n\ - bl sub_80EFF68\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._844 @cond_branch\n\ - ldr r1, ._835 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._834\n\ -._836:\n\ - .align 2, 0\n\ -._835:\n\ - .word gSharedMem\n\ -._817:\n\ - bl sub_80F35B4\n\ - mov r0, #0x2\n\ - bl sub_80EEFBC\n\ - ldr r4, ._838 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._838 + 4 @ sub_80EBD4C\n\ - bl SetVBlankCallback\n\ -._820:\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ -._834:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._844\n\ -._839:\n\ - .align 2, 0\n\ -._838:\n\ - .word gSharedMem\n\ - .word sub_80EBD4C+1\n\ -._818:\n\ - mov r0, #0x2\n\ - bl sub_80EED2C\n\ - ldr r1, ._842 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - ldr r0, ._842 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._844 @cond_branch\n\ - ldr r0, ._842 + 8 @ 0x6007de0\n\ - ldr r2, ._842 + 12 @ 0x600f000\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ - b ._844\n\ -._843:\n\ - .align 2, 0\n\ -._842:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f000\n\ -._819:\n\ - ldr r0, ._845 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._844 @cond_branch\n\ - ldr r0, ._845 + 4 @ sub_80ED858\n\ - bl sub_80EBDBC\n\ -._844:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._846:\n\ - .align 2, 0\n\ -._845:\n\ - .word gPaletteFade\n\ - .word sub_80ED858+1"); -} -#else void sub_80ED4D8() { switch (ewram0_10.var304) @@ -4107,6 +1517,10 @@ void sub_80ED4D8() case 7: sub_80EED2C(0x2); ewram0_10.var304++; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4); +#endif break; case 8: if (!gPaletteFade.active) @@ -4114,310 +1528,7 @@ void sub_80ED4D8() break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80ED620() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._849 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x10\n\ - bls ._847 @cond_branch\n\ - b ._912\n\ -._847:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._849 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._850:\n\ - .align 2, 0\n\ -._849:\n\ - .word gSharedMem\n\ - .word ._851\n\ -._851:\n\ - .word ._852\n\ - .word ._853\n\ - .word ._854\n\ - .word ._855\n\ - .word ._856\n\ - .word ._857\n\ - .word ._858\n\ - .word ._859\n\ - .word ._860\n\ - .word ._861\n\ - .word ._862\n\ - .word ._863\n\ - .word ._864\n\ - .word ._865\n\ - .word ._866\n\ - .word ._867\n\ - .word ._868\n\ -._852:\n\ - bl sub_80F1E84\n\ - mov r0, #0x1\n\ - bl sub_80F2D04\n\ - ldr r1, ._870 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._904\n\ -._871:\n\ - .align 2, 0\n\ -._870:\n\ - .word gSharedMem\n\ -._853:\n\ - bl sub_80F1F10\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._872 @cond_branch\n\ - b ._912\n\ -._872:\n\ - mov r0, #0x1\n\ - bl sub_80EEFBC\n\ - b ._885\n\ -._854:\n\ - bl sub_80EEF34\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - beq ._875 @cond_branch\n\ - b ._912\n\ -._875:\n\ - ldr r4, ._878 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - str r2, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._904\n\ -._879:\n\ - .align 2, 0\n\ -._878:\n\ - .word gSharedMem\n\ -._855:\n\ - ldr r0, ._883 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0\n\ - beq ._880 @cond_branch\n\ - b ._912\n\ -._880:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80EF814\n\ - ldr r0, ._883 + 4 @ gSharedMem\n\ - ldr r2, ._883 + 8 @ 0x76aa\n\ - add r1, r0, r2\n\ - strb r4, [r1]\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrh r1, [r0]\n\ - add r1, r1, #0x1\n\ - strh r1, [r0]\n\ - b ._912\n\ -._884:\n\ - .align 2, 0\n\ -._883:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ - .word 0x76aa\n\ -._856:\n\ - bl sub_80F2620\n\ - b ._885\n\ -._857:\n\ - ldr r0, ._887 @ 0xd162\n\ - add r1, r4, r0\n\ - mov r0, #0x2\n\ - strb r0, [r1]\n\ - bl sub_80F4BD0\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._904\n\ -._888:\n\ - .align 2, 0\n\ -._887:\n\ - .word 0xd162\n\ -._858:\n\ - bl sub_80EFF34\n\ - ldr r1, ._890 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._859:\n\ - bl sub_80EFF68\n\ - b ._889\n\ -._891:\n\ - .align 2, 0\n\ -._890:\n\ - .word gSharedMem\n\ -._860:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._912 @cond_branch\n\ - ldr r1, ._894 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._904\n\ -._895:\n\ - .align 2, 0\n\ -._894:\n\ - .word gSharedMem\n\ -._861:\n\ - bl sub_8055870\n\ - b ._896\n\ -._862:\n\ - bl sub_80F33A8\n\ - ldr r4, ._898 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._898 + 4 @ sub_80EBD4C\n\ - bl SetVBlankCallback\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._904\n\ -._899:\n\ - .align 2, 0\n\ -._898:\n\ - .word gSharedMem\n\ - .word sub_80EBD4C+1\n\ -._863:\n\ - mov r0, #0x2\n\ - bl sub_80EED2C\n\ - ldr r1, ._901 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._904\n\ -._902:\n\ - .align 2, 0\n\ -._901:\n\ - .word gSharedMem\n\ -._864:\n\ - ldr r0, ._905 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._912 @cond_branch\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ - b ._904\n\ -._906:\n\ - .align 2, 0\n\ -._905:\n\ - .word gPaletteFade\n\ -._865:\n\ - mov r0, #0x1\n\ - bl sub_80F2C80\n\ - ldr r1, ._909 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._866:\n\ - mov r0, #0x1\n\ - bl sub_80F2CBC\n\ -._889:\n\ - lsl r0, r0, #0x18\n\ -._896:\n\ - cmp r0, #0\n\ - bne ._912 @cond_branch\n\ -._885:\n\ - ldr r1, ._909 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ -._904:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._912\n\ -._910:\n\ - .align 2, 0\n\ -._909:\n\ - .word gSharedMem\n\ -._867:\n\ - mov r0, #0x6\n\ - bl sub_80F2C80\n\ - ldr r1, ._913 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._868:\n\ - mov r0, #0x6\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._912 @cond_branch\n\ - ldr r0, ._913 + 4 @ sub_80ED858\n\ - bl sub_80EBDBC\n\ - ldr r0, ._913 + 8 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._912 @cond_branch\n\ - ldr r0, ._913 + 12 @ 0x6007de0\n\ - ldr r2, ._913 + 16 @ 0x600f000\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ -._912:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._914:\n\ - .align 2, 0\n\ -._913:\n\ - .word gSharedMem\n\ - .word sub_80ED858+1\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f000"); -} -#else void sub_80ED620() { switch (ewram0_10.var304) @@ -4503,11 +1614,16 @@ void sub_80ED620() // fall through case 16: if (!sub_80F2CBC(0x6)) + { sub_80EBDBC(&sub_80ED858); +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4); +#endif + } break; } } -#endif #if 0 void sub_80F4F78(); @@ -5476,359 +2592,6 @@ _080EDB84: .4byte sub_80ED3D0\n"); #endif #endif -#if DEBUG -__attribute__((naked)) -void sub_80EDB88() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._1007 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x11\n\ - bls ._1005 @cond_branch\n\ - b ._1088\n\ -._1005:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._1007 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._1008:\n\ - .align 2, 0\n\ -._1007:\n\ - .word gSharedMem\n\ - .word ._1009\n\ -._1009:\n\ - .word ._1010\n\ - .word ._1011\n\ - .word ._1012\n\ - .word ._1013\n\ - .word ._1014\n\ - .word ._1015\n\ - .word ._1016\n\ - .word ._1017\n\ - .word ._1018\n\ - .word ._1019\n\ - .word ._1020\n\ - .word ._1021\n\ - .word ._1022\n\ - .word ._1023\n\ - .word ._1024\n\ - .word ._1025\n\ - .word ._1026\n\ - .word ._1027\n\ -._1010:\n\ - bl sub_80F1E84\n\ - mov r0, #0x0\n\ - bl sub_80F2D04\n\ - ldr r1, ._1029 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1030:\n\ - .align 2, 0\n\ -._1029:\n\ - .word gSharedMem\n\ -._1011:\n\ - bl sub_80F1F10\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1031 @cond_branch\n\ - b ._1088\n\ -._1031:\n\ - mov r0, #0x4\n\ - bl sub_80EEFBC\n\ - ldr r1, ._1034 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1078\n\ -._1035:\n\ - .align 2, 0\n\ -._1034:\n\ - .word gSharedMem\n\ -._1012:\n\ - bl sub_80EEF34\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - beq ._1036 @cond_branch\n\ - b ._1088\n\ -._1036:\n\ - ldr r4, ._1039 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - str r2, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - b ._1038\n\ -._1040:\n\ - .align 2, 0\n\ -._1039:\n\ - .word gSharedMem\n\ -._1013:\n\ - ldr r0, ._1044 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1041 @cond_branch\n\ - b ._1088\n\ -._1041:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80EF814\n\ - ldr r1, ._1044 + 4 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1045:\n\ - .align 2, 0\n\ -._1044:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ -._1014:\n\ - bl sub_80F2620\n\ - ldr r1, ._1047 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1078\n\ -._1048:\n\ - .align 2, 0\n\ -._1047:\n\ - .word gSharedMem\n\ -._1015:\n\ - bl sub_80F638C\n\ - ldr r1, ._1051 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1016:\n\ - bl sub_80F63D0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1049 @cond_branch\n\ - ldr r1, ._1051 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x2\n\ - strh r0, [r1]\n\ - b ._1088\n\ -._1052:\n\ - .align 2, 0\n\ -._1051:\n\ - .word gSharedMem\n\ -._1049:\n\ - ldr r1, ._1054 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1055:\n\ - .align 2, 0\n\ -._1054:\n\ - .word gSharedMem\n\ -._1017:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - beq ._1056 @cond_branch\n\ - b ._1088\n\ -._1056:\n\ - ldr r1, ._1059 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - sub r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._1088\n\ -._1060:\n\ - .align 2, 0\n\ -._1059:\n\ - .word gSharedMem\n\ -._1018:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - beq ._1061 @cond_branch\n\ - b ._1088\n\ -._1061:\n\ - ldr r1, ._1064 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1065:\n\ - .align 2, 0\n\ -._1064:\n\ - .word gSharedMem\n\ -._1019:\n\ - mov r0, #0x1\n\ - bl sub_80F0264\n\ - ldr r1, ._1068 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1020:\n\ - bl sub_80F02A0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1088 @cond_branch\n\ - ldr r1, ._1068 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1069:\n\ - .align 2, 0\n\ -._1068:\n\ - .word gSharedMem\n\ -._1021:\n\ - mov r0, #0x2\n\ - bl sub_80F2C80\n\ - ldr r1, ._1072 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1022:\n\ - mov r0, #0x2\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1088 @cond_branch\n\ - ldr r1, ._1072 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1073:\n\ - .align 2, 0\n\ -._1072:\n\ - .word gSharedMem\n\ -._1023:\n\ - mov r0, #0x1\n\ - bl sub_80F3008\n\ - ldr r1, ._1075 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1078\n\ -._1076:\n\ - .align 2, 0\n\ -._1075:\n\ - .word gSharedMem\n\ -._1024:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._1088 @cond_branch\n\ - ldr r1, ._1079 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1078\n\ -._1080:\n\ - .align 2, 0\n\ -._1079:\n\ - .word gSharedMem\n\ -._1025:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._1082 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ -._1038:\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ -._1078:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._1088\n\ -._1083:\n\ - .align 2, 0\n\ -._1082:\n\ - .word sub_80EBD18+1\n\ -._1026:\n\ - mov r0, #0x4\n\ - bl sub_80EED2C\n\ - ldr r1, ._1086 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - ldr r0, ._1086 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1088 @cond_branch\n\ - ldr r0, ._1086 + 8 @ 0x6007de0\n\ - ldr r2, ._1086 + 12 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ - b ._1088\n\ -._1087:\n\ - .align 2, 0\n\ -._1086:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800\n\ -._1027:\n\ - ldr r0, ._1089 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1088 @cond_branch\n\ - ldr r0, ._1089 + 4 @ sub_80EDDBC\n\ - bl sub_80EBDBC\n\ -._1088:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._1090:\n\ - .align 2, 0\n\ -._1089:\n\ - .word gPaletteFade\n\ - .word sub_80EDDBC+1"); -} -#else void sub_80EDB88() { switch (ewram0_10.var304) @@ -5912,6 +2675,10 @@ void sub_80EDB88() case 16: sub_80EED2C(0x4); ewram0_10.var304++; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif break; case 17: if (!gPaletteFade.active) @@ -5919,129 +2686,7 @@ void sub_80EDB88() break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80EDDBC() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._1095 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r4, r0, r1\n\ - ldrh r0, [r4]\n\ - cmp r0, #0x1\n\ - beq ._1091 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._1092 @cond_branch\n\ - cmp r0, #0\n\ - beq ._1093 @cond_branch\n\ - b ._1113\n\ -._1096:\n\ - .align 2, 0\n\ -._1095:\n\ - .word gSharedMem\n\ -._1092:\n\ - cmp r0, #0x2\n\ - beq ._1097 @cond_branch\n\ - b ._1113\n\ -._1093:\n\ - bl sub_80F5DD4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - beq ._1099 @cond_branch\n\ - cmp r0, #0x2\n\ - beq ._1100 @cond_branch\n\ - ldr r0, ._1103 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1101 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._1103 + 4 @ sub_80EDEE4\n\ - bl sub_80EBDBC\n\ - b ._1114\n\ -._1104:\n\ - .align 2, 0\n\ -._1103:\n\ - .word gMain\n\ - .word sub_80EDEE4+1\n\ -._1099:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl ShowMapNamePopUpWindow\n\ - b ._1114\n\ -._1100:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._1114\n\ -._1101:\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1113 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._1109 @ sub_80EDE70\n\ - bl sub_80EBDBC\n\ - b ._1114\n\ -._1110:\n\ - .align 2, 0\n\ -._1109:\n\ - .word sub_80EDE70+1\n\ -._1091:\n\ - bl sub_80F0718\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1113 @cond_branch\n\ - bl ShowMapNamePopUpWindow\n\ - bl sub_80F3264\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - b ._1112\n\ -._1097:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._1113 @cond_branch\n\ -._1112:\n\ - strh r0, [r4]\n\ -._1113:\n\ - ldr r0, ._1115 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1114 @cond_branch\n\ - ldr r0, ._1115 + 4 @ gLink\n\ - ldr r1, ._1115 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x8\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1114:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._1116:\n\ - .align 2, 0\n\ -._1115:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void sub_80EDDBC() { switch (ewram0_10.var304) @@ -6052,21 +2697,23 @@ void sub_80EDDBC() case 1: PlaySE(SE_SELECT); ShowMapNamePopUpWindow(); - break; + return; case 2: PlaySE(SE_SELECT); ewram0_10.var304++; - break; + return; default: if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); sub_80EBDBC(&sub_80EDEE4); + return; } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); sub_80EBDBC(&sub_80EDE70); + return; } break; } @@ -6083,10 +2730,12 @@ void sub_80EDDBC() if (!sub_8055870()) ewram0_10.var304 = 0; break; - } -} +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 8, 2, 4); #endif +} void sub_80EDE70() { @@ -6111,228 +2760,6 @@ void sub_80EDE70() } -#if DEBUG -__attribute__((naked)) -void sub_80EDEE4() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._1134 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0xa\n\ - bls ._1132 @cond_branch\n\ - b ._1180\n\ -._1132:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._1134 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._1135:\n\ - .align 2, 0\n\ -._1134:\n\ - .word gSharedMem\n\ - .word ._1136\n\ -._1136:\n\ - .word ._1137\n\ - .word ._1138\n\ - .word ._1139\n\ - .word ._1140\n\ - .word ._1141\n\ - .word ._1142\n\ - .word ._1143\n\ - .word ._1144\n\ - .word ._1145\n\ - .word ._1146\n\ - .word ._1147\n\ -._1137:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - b ._1169\n\ -._1138:\n\ - ldr r0, ._1152 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1149 @cond_branch\n\ - b ._1180\n\ -._1149:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80F3130\n\ - ldr r1, ._1152 + 4 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1166\n\ -._1153:\n\ - .align 2, 0\n\ -._1152:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ -._1139:\n\ - bl sub_80F66E0\n\ - bl sub_80EEE08\n\ - ldr r1, ._1155 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1166\n\ -._1156:\n\ - .align 2, 0\n\ -._1155:\n\ - .word gSharedMem\n\ -._1140:\n\ - bl sub_80F1080\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1180 @cond_branch\n\ - ldr r1, ._1159 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1166\n\ -._1160:\n\ - .align 2, 0\n\ -._1159:\n\ - .word gSharedMem\n\ -._1141:\n\ - mov r0, #0x5\n\ - bl sub_80EEFBC\n\ - bl sub_80F38B8\n\ - ldr r1, ._1163 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1142:\n\ - bl sub_80F38EC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1180 @cond_branch\n\ - ldr r1, ._1163 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1166\n\ -._1164:\n\ - .align 2, 0\n\ -._1163:\n\ - .word gSharedMem\n\ -._1143:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._1180 @cond_branch\n\ - ldr r1, ._1167 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1166\n\ -._1168:\n\ - .align 2, 0\n\ -._1167:\n\ - .word gSharedMem\n\ -._1144:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._1170 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - b ._1169\n\ -._1171:\n\ - .align 2, 0\n\ -._1170:\n\ - .word sub_80EBD18+1\n\ -._1145:\n\ - mov r0, #0x3\n\ - bl sub_80EED2C\n\ - ldr r1, ._1174 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - ldr r0, ._1174 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1180 @cond_branch\n\ - ldr r0, ._1174 + 8 @ 0x6007de0\n\ - ldr r2, ._1174 + 12 @ 0x600f000\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ - b ._1180\n\ -._1175:\n\ - .align 2, 0\n\ -._1174:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f000\n\ -._1146:\n\ - ldr r0, ._1178 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1180 @cond_branch\n\ -._1169:\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ -._1166:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._1180\n\ -._1179:\n\ - .align 2, 0\n\ -._1178:\n\ - .word gPaletteFade\n\ -._1147:\n\ - bl sub_80F170C\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1180 @cond_branch\n\ - ldr r0, ._1181 @ sub_80EE06C\n\ - bl sub_80EBDBC\n\ -._1180:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._1182:\n\ - .align 2, 0\n\ -._1181:\n\ - .word sub_80EE06C+1"); -} -#else void sub_80EDEE4() { switch (ewram0_10.var304) @@ -6379,6 +2806,10 @@ void sub_80EDEE4() case 8: sub_80EED2C(0x3); ewram0_10.var304++; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4); +#endif break; case 9: if (!gPaletteFade.active) @@ -6390,316 +2821,7 @@ void sub_80EDEE4() break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80EE06C() -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._1185 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x8\n\ - bls ._1183 @cond_branch\n\ - b ._1248\n\ -._1183:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._1185 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._1186:\n\ - .align 2, 0\n\ -._1185:\n\ - .word gSharedMem\n\ - .word ._1187\n\ -._1187:\n\ - .word ._1188\n\ - .word ._1189\n\ - .word ._1190\n\ - .word ._1191\n\ - .word ._1192\n\ - .word ._1193\n\ - .word ._1194\n\ - .word ._1195\n\ - .word ._1196\n\ -._1188:\n\ - bl sub_80F15A8\n\ - ldr r1, ._1198 @ gSharedMem\n\ - mov r5, #0xc1\n\ - lsl r5, r5, #0x2\n\ - add r1, r1, r5\n\ - b ._1221\n\ -._1199:\n\ - .align 2, 0\n\ -._1198:\n\ - .word gSharedMem\n\ -._1189:\n\ - ldr r2, ._1203 @ gMain\n\ - ldrh r1, [r2, #0x30]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - add r3, r2, #0\n\ - cmp r0, #0\n\ - beq ._1201 @cond_branch\n\ - ldr r1, ._1203 + 4 @ 0x87dc\n\ - add r0, r4, r1\n\ - mov r2, #0x0\n\ - ldsh r0, [r0, r2]\n\ - cmp r0, #0\n\ - beq ._1201 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0x1\n\ - neg r0, r0\n\ - bl sub_80F6A4C\n\ - mov r5, #0xc1\n\ - lsl r5, r5, #0x2\n\ - add r1, r4, r5\n\ - b ._1221\n\ -._1204:\n\ - .align 2, 0\n\ -._1203:\n\ - .word gMain\n\ - .word 0x87dc\n\ -._1201:\n\ - ldrh r1, [r3, #0x30]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1206 @cond_branch\n\ - ldr r1, ._1208 @ 0x87dc\n\ - add r0, r4, r1\n\ - ldr r2, ._1208 + 4 @ 0x8774\n\ - add r1, r4, r2\n\ - mov r5, #0x0\n\ - ldsh r2, [r0, r5]\n\ - mov r5, #0x0\n\ - ldsh r0, [r1, r5]\n\ - cmp r2, r0\n\ - bge ._1206 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0x1\n\ - bl sub_80F6A4C\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ - b ._1221\n\ -._1209:\n\ - .align 2, 0\n\ -._1208:\n\ - .word 0x87dc\n\ - .word 0x8774\n\ -._1206:\n\ - ldrh r2, [r3, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - beq ._1210 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - mov r0, #0xb\n\ - bl sub_80EEFBC\n\ - ldr r0, ._1212 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - b ._1211\n\ -._1213:\n\ - .align 2, 0\n\ -._1212:\n\ - .word gSharedMem\n\ -._1210:\n\ - mov r0, #0x2\n\ - and r0, r0, r2\n\ - cmp r0, #0\n\ - bne ._1214 @cond_branch\n\ - b ._1248\n\ -._1214:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._1217 @ sub_80EE294\n\ - bl sub_80EBDBC\n\ - b ._1248\n\ -._1218:\n\ - .align 2, 0\n\ -._1217:\n\ - .word sub_80EE294+1\n\ -._1190:\n\ - bl sub_80F6AF0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1219 @cond_branch\n\ - b ._1248\n\ -._1219:\n\ - ldr r1, ._1222 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1221\n\ -._1223:\n\ - .align 2, 0\n\ -._1222:\n\ - .word gSharedMem\n\ -._1191:\n\ - bl sub_8055870\n\ - add r1, r0, #0\n\ - cmp r1, #0\n\ - bne ._1248 @cond_branch\n\ - ldr r0, ._1226 @ gSharedMem\n\ - mov r5, #0xc1\n\ - lsl r5, r5, #0x2\n\ - add r0, r0, r5\n\ - strh r1, [r0]\n\ - b ._1248\n\ -._1227:\n\ - .align 2, 0\n\ -._1226:\n\ - .word gSharedMem\n\ -._1192:\n\ - bl sub_80F3B00\n\ - ldr r1, ._1229 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ -._1221:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._1248\n\ -._1230:\n\ - .align 2, 0\n\ -._1229:\n\ - .word gSharedMem\n\ -._1193:\n\ - bl sub_80F3B58\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1248 @cond_branch\n\ - bl sub_80F1494\n\ - ldr r1, ._1233 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - bl sub_80EED9C\n\ - b ._1248\n\ -._1234:\n\ - .align 2, 0\n\ -._1233:\n\ - .word gSharedMem\n\ -._1194:\n\ - bl sub_80F68E8\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1236 @cond_branch\n\ - cmp r0, #0x1\n\ - bne ._1236 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_80F3B94\n\ - ldr r0, ._1238 @ gSharedMem\n\ - mov r5, #0xc1\n\ - lsl r5, r5, #0x2\n\ - add r0, r0, r5\n\ - mov r1, #0x7\n\ - strh r1, [r0]\n\ - b ._1249\n\ -._1239:\n\ - .align 2, 0\n\ -._1238:\n\ - .word gSharedMem\n\ -._1236:\n\ - ldr r0, ._1242 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1248 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - bl sub_80F3B94\n\ - ldr r0, ._1242 + 4 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - mov r1, #0x8\n\ - strh r1, [r0]\n\ - b ._1248\n\ -._1243:\n\ - .align 2, 0\n\ -._1242:\n\ - .word gMain\n\ - .word gSharedMem\n\ -._1195:\n\ - bl sub_80F3BD4\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1248 @cond_branch\n\ - ldr r0, ._1246 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r0, r2\n\ -._1211:\n\ - mov r1, #0x4\n\ - strh r1, [r0]\n\ - b ._1248\n\ -._1247:\n\ - .align 2, 0\n\ -._1246:\n\ - .word gSharedMem\n\ -._1196:\n\ - bl sub_80F3BD4\n\ - lsl r0, r0, #0x18\n\ - lsr r4, r0, #0x18\n\ - cmp r4, #0\n\ - bne ._1248 @cond_branch\n\ - mov r0, #0x5\n\ - bl sub_80EEFBC\n\ - ldr r0, ._1250 @ gSharedMem\n\ - mov r5, #0xc1\n\ - lsl r5, r5, #0x2\n\ - add r0, r0, r5\n\ - strh r4, [r0]\n\ -._1248:\n\ - ldr r0, ._1250 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1249 @cond_branch\n\ - ldr r0, ._1250 + 8 @ gLink\n\ - ldr r1, ._1250 + 12 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x4\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1249:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._1251:\n\ - .align 2, 0\n\ -._1250:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void sub_80EE06C() { switch (ewram0_10.var304) @@ -6755,571 +2877,96 @@ void sub_80EE06C() break; case 6: switch (sub_80F68E8()) - { - case 1: - PlaySE(SE_SELECT); - sub_80F3B94(); - ewram0_10.var304 = 0x7; - break; - default: - case 0: - if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - sub_80F3B94(); - ewram0_10.var304 = 0x8; - } - break; - } - break; - case 7: - if (!sub_80F3BD4()) - ewram0_10.var304 = 0x4; - break; - case 8: - if (!sub_80F3BD4()) - { - sub_80EEFBC(0x5); - ewram0_10.var304 = 0; - } - break; - } -} -#endif - -#if DEBUG -__attribute__((naked)) -void sub_80EE294() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r1, ._1254 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r0, r1, r2\n\ - ldrh r0, [r0]\n\ - add r4, r1, #0\n\ - cmp r0, #0x8\n\ - bls ._1252 @cond_branch\n\ - b ._1288\n\ -._1252:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._1254 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._1255:\n\ - .align 2, 0\n\ -._1254:\n\ - .word gSharedMem\n\ - .word ._1256\n\ -._1256:\n\ - .word ._1257\n\ - .word ._1258\n\ - .word ._1259\n\ - .word ._1260\n\ - .word ._1261\n\ - .word ._1262\n\ - .word ._1263\n\ - .word ._1264\n\ - .word ._1265\n\ -._1257:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r3, #0x10\n\ - b ._1266\n\ -._1258:\n\ - ldr r0, ._1270 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1267 @cond_branch\n\ - b ._1288\n\ -._1267:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80F3C2C\n\ - bl sub_80EEE08\n\ - ldr r1, ._1270 + 4 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1280\n\ -._1271:\n\ - .align 2, 0\n\ -._1270:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ -._1259:\n\ - bl sub_80F6134\n\ - mov r0, #0x1\n\ - bl sub_80F0264\n\ - ldr r1, ._1274 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1260:\n\ - bl sub_80F02A0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1288 @cond_branch\n\ - ldr r1, ._1274 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1280\n\ -._1275:\n\ - .align 2, 0\n\ -._1274:\n\ - .word gSharedMem\n\ -._1261:\n\ - mov r0, #0x4\n\ - bl sub_80EEFBC\n\ - mov r0, #0x1\n\ - bl sub_80F3008\n\ - ldr r0, ._1277 @ sub_80EBD18\n\ - bl SetVBlankCallback\n\ - ldr r1, ._1277 + 4 @ gSharedMem\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r1, r2\n\ - b ._1280\n\ -._1278:\n\ - .align 2, 0\n\ -._1277:\n\ - .word sub_80EBD18+1\n\ - .word gSharedMem\n\ -._1262:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._1288 @cond_branch\n\ - ldr r1, ._1281 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1280\n\ -._1282:\n\ - .align 2, 0\n\ -._1281:\n\ - .word gSharedMem\n\ -._1263:\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ -._1266:\n\ - bl BeginNormalPaletteFade\n\ - mov r2, #0xc1\n\ - lsl r2, r2, #0x2\n\ - add r1, r4, r2\n\ -._1280:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._1288\n\ -._1264:\n\ - mov r0, #0x4\n\ - bl sub_80EED2C\n\ - ldr r1, ._1286 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - ldr r0, ._1286 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1288 @cond_branch\n\ - ldr r0, ._1286 + 8 @ 0x6007de0\n\ - ldr r2, ._1286 + 12 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ - b ._1288\n\ -._1287:\n\ - .align 2, 0\n\ -._1286:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800\n\ -._1265:\n\ - ldr r0, ._1289 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1288 @cond_branch\n\ - ldr r0, ._1289 + 4 @ sub_80EDDBC\n\ - bl sub_80EBDBC\n\ -._1288:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._1290:\n\ - .align 2, 0\n\ -._1289:\n\ - .word gPaletteFade\n\ - .word sub_80EDDBC+1"); -} -#else -void sub_80EE294() -{ - switch (ewram0_10.var304) - { - case 0: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); - ewram0_10.var304++; - break; - case 1: - if (!gPaletteFade.active) - { - SetVBlankCallback(NULL); - sub_80EED0C(); - sub_80F3C2C(); - sub_80EEE08(); - ewram0_10.var304++; - } - break; - case 2: - sub_80F6134(); - sub_80F0264(0x1); - ewram0_10.var304++; - case 3: - if (!sub_80F02A0()) - ewram0_10.var304++; - break; - case 4: - sub_80EEFBC(0x4); - sub_80F3008(0x1); - SetVBlankCallback(&sub_80EBD18); - ewram0_10.var304++; - break; - case 5: - if (!sub_8055870()) - ewram0_10.var304++; - break; - case 6: - BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); - ewram0_10.var304++; - break; - case 7: - sub_80EED2C(0x4); - ewram0_10.var304++; - break; - case 8: - if (!gPaletteFade.active) - sub_80EBDBC(&sub_80EDDBC); - break; - } -} -#endif - -#if DEBUG -__attribute__((naked)) -void sub_80EE3D8() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._1293 @ gSharedMem\n\ - mov r1, #0xc1\n\ - lsl r1, r1, #0x2\n\ - add r0, r0, r1\n\ - ldrh r0, [r0]\n\ - cmp r0, #0xd\n\ - bls ._1291 @cond_branch\n\ - b ._1354\n\ -._1291:\n\ - lsl r0, r0, #0x2\n\ - ldr r1, ._1293 + 4 @ \n\ - add r0, r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ -._1294:\n\ - .align 2, 0\n\ -._1293:\n\ - .word gSharedMem\n\ - .word ._1295\n\ -._1295:\n\ - .word ._1296\n\ - .word ._1297\n\ - .word ._1298\n\ - .word ._1299\n\ - .word ._1300\n\ - .word ._1301\n\ - .word ._1302\n\ - .word ._1303\n\ - .word ._1304\n\ - .word ._1305\n\ - .word ._1306\n\ - .word ._1307\n\ - .word ._1308\n\ - .word ._1309\n\ -._1296:\n\ - bl sub_80F1E84\n\ - mov r0, #0x0\n\ - bl sub_80F2D04\n\ - ldr r1, ._1311 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1312:\n\ - .align 2, 0\n\ -._1311:\n\ - .word gSharedMem\n\ -._1297:\n\ - bl sub_80F1F10\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1313 @cond_branch\n\ - b ._1354\n\ -._1313:\n\ - mov r0, #0x9\n\ - bl sub_80EEFBC\n\ - ldr r1, ._1316 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1317:\n\ - .align 2, 0\n\ -._1316:\n\ - .word gSharedMem\n\ -._1298:\n\ - bl sub_80EEF34\n\ - lsl r0, r0, #0x18\n\ - lsr r2, r0, #0x18\n\ - cmp r2, #0\n\ - beq ._1318 @cond_branch\n\ - b ._1354\n\ -._1318:\n\ - ldr r4, ._1321 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - str r2, [sp]\n\ - mov r2, #0x0\n\ - mov r3, #0x10\n\ - bl BeginNormalPaletteFade\n\ - b ._1320\n\ -._1322:\n\ - .align 2, 0\n\ -._1321:\n\ - .word gSharedMem\n\ -._1299:\n\ - ldr r0, ._1326 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1323 @cond_branch\n\ - b ._1354\n\ -._1323:\n\ - mov r0, #0x0\n\ - bl SetVBlankCallback\n\ - bl sub_80EED0C\n\ - bl sub_80EF814\n\ - bl sub_80EEE08\n\ - ldr r1, ._1326 + 4 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1327:\n\ - .align 2, 0\n\ -._1326:\n\ - .word gPaletteFade\n\ - .word gSharedMem\n\ -._1300:\n\ - bl sub_80F2620\n\ - ldr r1, ._1329 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1330:\n\ - .align 2, 0\n\ -._1329:\n\ - .word gSharedMem\n\ -._1301:\n\ - mov r0, #0x2\n\ - bl sub_80F0264\n\ - ldr r1, ._1334 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1302:\n\ - bl sub_80F02A0\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - beq ._1331 @cond_branch\n\ - b ._1354\n\ -._1331:\n\ - ldr r1, ._1334 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1335:\n\ - .align 2, 0\n\ -._1334:\n\ - .word gSharedMem\n\ -._1303:\n\ - mov r0, #0x3\n\ - bl sub_80F2C80\n\ - ldr r1, ._1338 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ -._1304:\n\ - mov r0, #0x3\n\ - bl sub_80F2CBC\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1354 @cond_branch\n\ - ldr r1, ._1338 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1339:\n\ - .align 2, 0\n\ -._1338:\n\ - .word gSharedMem\n\ -._1305:\n\ - mov r0, #0x2\n\ - bl sub_80F3008\n\ - ldr r1, ._1341 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1342:\n\ - .align 2, 0\n\ -._1341:\n\ - .word gSharedMem\n\ -._1306:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._1354 @cond_branch\n\ - ldr r1, ._1345 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - b ._1344\n\ -._1346:\n\ - .align 2, 0\n\ -._1345:\n\ - .word gSharedMem\n\ -._1307:\n\ - bl sub_80F6F10\n\ - ldr r4, ._1348 @ gSharedMem\n\ - mov r1, #0xc2\n\ - lsl r1, r1, #0x2\n\ - add r0, r4, r1\n\ - ldr r0, [r0]\n\ - mov r1, #0x1\n\ - neg r1, r1\n\ - mov r2, #0x0\n\ - str r2, [sp]\n\ - mov r2, #0x10\n\ - mov r3, #0x0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, ._1348 + 4 @ sub_80EBD68\n\ - bl SetVBlankCallback\n\ -._1320:\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r4, r0\n\ -._1344:\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - b ._1354\n\ -._1349:\n\ - .align 2, 0\n\ -._1348:\n\ - .word gSharedMem\n\ - .word sub_80EBD68+1\n\ -._1308:\n\ - mov r0, #0x5\n\ - bl sub_80EED2C\n\ - ldr r1, ._1352 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r1, r1, r0\n\ - ldrh r0, [r1]\n\ - add r0, r0, #0x1\n\ - strh r0, [r1]\n\ - ldr r0, ._1352 + 4 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1354 @cond_branch\n\ - ldr r0, ._1352 + 8 @ 0x6007de0\n\ - ldr r2, ._1352 + 12 @ 0x600f800\n\ - mov r1, #0x0\n\ - mov r3, #0x4\n\ - bl debug_sub_8008218\n\ - b ._1354\n\ -._1353:\n\ - .align 2, 0\n\ -._1352:\n\ - .word gSharedMem\n\ - .word gLinkOpen\n\ - .word 0x6007de0\n\ - .word 0x600f800\n\ -._1309:\n\ - ldr r0, ._1355 @ gPaletteFade\n\ - ldrb r1, [r0, #0x7]\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - bne ._1354 @cond_branch\n\ - ldr r0, ._1355 + 4 @ sub_80EE58C\n\ - bl sub_80EBDBC\n\ -._1354:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ -._1356:\n\ - .align 2, 0\n\ -._1355:\n\ - .word gPaletteFade\n\ - .word sub_80EE58C+1"); + { + case 1: + PlaySE(SE_SELECT); + sub_80F3B94(); + ewram0_10.var304 = 0x7; + return; + default: + case 0: + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80F3B94(); + ewram0_10.var304 = 0x8; + } + break; + } + break; + case 7: + if (!sub_80F3BD4()) + ewram0_10.var304 = 0x4; + break; + case 8: + if (!sub_80F3BD4()) + { + sub_80EEFBC(0x5); + ewram0_10.var304 = 0; + } + break; + } +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 4, 2, 4); +#endif } -#else + +void sub_80EE294() +{ + switch (ewram0_10.var304) + { + case 0: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0, 0x10, 0); + ewram0_10.var304++; + break; + case 1: + if (!gPaletteFade.active) + { + SetVBlankCallback(NULL); + sub_80EED0C(); + sub_80F3C2C(); + sub_80EEE08(); + ewram0_10.var304++; + } + break; + case 2: + sub_80F6134(); + sub_80F0264(0x1); + ewram0_10.var304++; + case 3: + if (!sub_80F02A0()) + ewram0_10.var304++; + break; + case 4: + sub_80EEFBC(0x4); + sub_80F3008(0x1); + SetVBlankCallback(&sub_80EBD18); + ewram0_10.var304++; + break; + case 5: + if (!sub_8055870()) + ewram0_10.var304++; + break; + case 6: + BeginNormalPaletteFade(ewram0_10.var308, -1, 0x10, 0, 0); + ewram0_10.var304++; + break; + case 7: + sub_80EED2C(0x4); + ewram0_10.var304++; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif + break; + case 8: + if (!gPaletteFade.active) + sub_80EBDBC(&sub_80EDDBC); + break; + } +} + void sub_80EE3D8() { switch (ewram0_10.var304) @@ -7388,6 +3035,10 @@ void sub_80EE3D8() case 12: sub_80EED2C(0x5); ewram0_10.var304++; +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4); +#endif break; case 13: if (!gPaletteFade.active) @@ -7395,143 +3046,7 @@ void sub_80EE3D8() break; } } -#endif -#if DEBUG -__attribute__((naked)) -void sub_80EE58C() -{ - asm("\ - push {r4, r5, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r5, ._1361 @ gSharedMem\n\ - mov r0, #0xc1\n\ - lsl r0, r0, #0x2\n\ - add r4, r5, r0\n\ - ldrh r0, [r4]\n\ - cmp r0, #0x1\n\ - beq ._1357 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._1358 @cond_branch\n\ - cmp r0, #0\n\ - beq ._1359 @cond_branch\n\ - b ._1383\n\ -._1362:\n\ - .align 2, 0\n\ -._1361:\n\ - .word gSharedMem\n\ -._1358:\n\ - cmp r0, #0x2\n\ - beq ._1363 @cond_branch\n\ - b ._1383\n\ -._1359:\n\ - bl sub_80F5DD4\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - cmp r0, #0x1\n\ - beq ._1365 @cond_branch\n\ - cmp r0, #0x2\n\ - beq ._1366 @cond_branch\n\ - ldr r0, ._1369 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1367 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._1369 + 4 @ sub_80EE658\n\ - bl sub_80EBDBC\n\ - b ._1384\n\ -._1370:\n\ - .align 2, 0\n\ -._1369:\n\ - .word gMain\n\ - .word sub_80EE658+1\n\ -._1365:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r1, ._1372 @ 0x876e\n\ - add r0, r5, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F0FFC\n\ - b ._1384\n\ -._1373:\n\ - .align 2, 0\n\ -._1372:\n\ - .word 0x876e\n\ -._1366:\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._1384\n\ -._1367:\n\ - mov r0, #0x2\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1383 @cond_branch\n\ - mov r0, #0x5\n\ - bl PlaySE\n\ - ldr r0, ._1377 @ sub_80EE8F4\n\ - bl sub_80EBDBC\n\ - b ._1384\n\ -._1378:\n\ - .align 2, 0\n\ -._1377:\n\ - .word sub_80EE8F4+1\n\ -._1357:\n\ - bl sub_80F0718\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bne ._1383 @cond_branch\n\ - ldr r1, ._1381 @ 0x876e\n\ - add r0, r5, r1\n\ - ldrb r0, [r0]\n\ - bl sub_80F0FFC\n\ - bl sub_80F3264\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - b ._1380\n\ -._1382:\n\ - .align 2, 0\n\ -._1381:\n\ - .word 0x876e\n\ -._1363:\n\ - bl sub_8055870\n\ - cmp r0, #0\n\ - bne ._1383 @cond_branch\n\ -._1380:\n\ - strh r0, [r4]\n\ -._1383:\n\ - ldr r0, ._1385 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1384 @cond_branch\n\ - ldr r0, ._1385 + 4 @ gLink\n\ - ldr r1, ._1385 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x1\n\ - mov r2, #0x3\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1384:\n\ - add sp, sp, #0x4\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._1386:\n\ - .align 2, 0\n\ -._1385:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else void sub_80EE58C() { switch (ewram0_10.var304) @@ -7542,21 +3057,23 @@ void sub_80EE58C() case 1: PlaySE(SE_SELECT); sub_80F0FFC(ewram0_10.var876E); - break; + return; case 2: PlaySE(SE_SELECT); ewram0_10.var304++; - break; + return; default: if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); sub_80EBDBC(&sub_80EE658); + return; } else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); sub_80EBDBC(&sub_80EE8F4); + return; } break; } @@ -7574,8 +3091,11 @@ void sub_80EE58C() ewram0_10.var304 = 0; break; } -} +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 1, 3, 2, 4); #endif +} void sub_80EE658() { @@ -8006,108 +3526,6 @@ _080EEC0A:\n\ #endif // var6dad and var6dae must be s8 in this func -#if DEBUG -__attribute__((naked)) -bool8 sub_80EEC10() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._1563 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1559 @cond_branch\n\ - ldr r1, ._1563 + 4 @ gSharedMem\n\ - add r3, r1, #1\n\ - add r2, r1, #5\n\ -._1561:\n\ - ldrb r0, [r1]\n\ - sub r0, r0, #0x1\n\ - strb r0, [r1]\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bge ._1560 @cond_branch\n\ - ldrb r0, [r3]\n\ - sub r0, r0, #0x1\n\ - strb r0, [r1]\n\ -._1560:\n\ - mov r0, #0x0\n\ - ldsb r0, [r1, r0]\n\ - add r0, r0, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._1561 @cond_branch\n\ - mov r0, #0x1\n\ - b ._1568\n\ -._1564:\n\ - .align 2, 0\n\ -._1563:\n\ - .word gMain\n\ - .word gSharedMem+0x6dad\n\ -._1559:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1565 @cond_branch\n\ - ldr r1, ._1569 @ gSharedMem\n\ - mov r4, #0x0\n\ - mov r2, #0x1\n\ - ldsb r2, [r1, r2]\n\ - add r3, r1, #5\n\ -._1567:\n\ - ldrb r0, [r1]\n\ - add r0, r0, #0x1\n\ - strb r0, [r1]\n\ - lsl r0, r0, #0x18\n\ - asr r0, r0, #0x18\n\ - cmp r0, r2\n\ - blt ._1566 @cond_branch\n\ - strb r4, [r1]\n\ -._1566:\n\ - mov r0, #0x0\n\ - ldsb r0, [r1, r0]\n\ - add r0, r0, r3\n\ - ldrb r0, [r0]\n\ - cmp r0, #0\n\ - beq ._1567 @cond_branch\n\ - mov r0, #0x1\n\ - b ._1568\n\ -._1570:\n\ - .align 2, 0\n\ -._1569:\n\ - .word gSharedMem+0x6dad\n\ -._1565:\n\ - ldr r0, ._1572 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1571 @cond_branch\n\ - ldr r0, ._1572 + 4 @ gLink\n\ - ldr r1, ._1572 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x6\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1571:\n\ - mov r0, #0x0\n\ -._1568:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ -._1573:\n\ - .align 2, 0\n\ -._1572:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else bool8 sub_80EEC10() { if (gMain.newKeys & 0x40) @@ -8128,106 +3546,13 @@ bool8 sub_80EEC10() } while (!ewram0_10.var6db2[ewram0_11.var6dad]); return TRUE; } +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 6, 10, 2, 4); +#endif return FALSE; } -#endif -#if DEBUG -__attribute__((naked)) -bool8 sub_80EEC90() -{ - asm("\ - push {r4, lr}\n\ - add sp, sp, #0xfffffffc\n\ - ldr r0, ._1577 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x40\n\ - and r0, r0, r1\n\ - lsl r0, r0, #0x10\n\ - lsr r3, r0, #0x10\n\ - cmp r3, #0\n\ - beq ._1574 @cond_branch\n\ - ldr r2, ._1577 + 4 @ gSharedMem\n\ - ldr r0, ._1577 + 8 @ 0x6dad\n\ - add r1, r2, r0\n\ - ldrb r0, [r1]\n\ - sub r0, r0, #0x1\n\ - strb r0, [r1]\n\ - lsl r0, r0, #0x18\n\ - cmp r0, #0\n\ - bge ._1580 @cond_branch\n\ - ldr r3, ._1577 + 12 @ 0x6dae\n\ - add r0, r2, r3\n\ - ldrb r0, [r0]\n\ - sub r0, r0, #0x1\n\ - strb r0, [r1]\n\ - b ._1580\n\ -._1578:\n\ - .align 2, 0\n\ -._1577:\n\ - .word gMain\n\ - .word gSharedMem\n\ - .word 0x6dad\n\ - .word 0x6dae\n\ -._1574:\n\ - mov r0, #0x80\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._1579 @cond_branch\n\ - ldr r0, ._1582 @ gSharedMem\n\ - ldr r4, ._1582 + 4 @ 0x6dad\n\ - add r2, r0, r4\n\ - ldrb r1, [r2]\n\ - add r1, r1, #0x1\n\ - strb r1, [r2]\n\ - add r4, r4, #0x1\n\ - add r0, r0, r4\n\ - lsl r1, r1, #0x18\n\ - asr r1, r1, #0x18\n\ - ldrb r0, [r0]\n\ - lsl r0, r0, #0x18\n\ - asr r0, r0, #0x18\n\ - cmp r1, r0\n\ - blt ._1580 @cond_branch\n\ - strb r3, [r2]\n\ -._1580:\n\ - mov r0, #0x1\n\ - b ._1581\n\ -._1583:\n\ - .align 2, 0\n\ -._1582:\n\ - .word gSharedMem\n\ - .word 0x6dad\n\ -._1579:\n\ - ldr r0, ._1585 @ gLinkOpen\n\ - ldrb r0, [r0]\n\ - cmp r0, #0x1\n\ - bne ._1584 @cond_branch\n\ - ldr r0, ._1585 + 4 @ gLink\n\ - ldr r1, ._1585 + 8 @ 0xfbd\n\ - add r0, r0, r1\n\ - ldrb r0, [r0]\n\ - mov r1, #0x4\n\ - str r1, [sp]\n\ - mov r1, #0x6\n\ - mov r2, #0xa\n\ - mov r3, #0x2\n\ - bl debug_sub_8008264\n\ -._1584:\n\ - mov r0, #0x0\n\ -._1581:\n\ - add sp, sp, #0x4\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ -._1586:\n\ - .align 2, 0\n\ -._1585:\n\ - .word gLinkOpen\n\ - .word gLink\n\ - .word 0xfbd"); -} -#else bool8 sub_80EEC90() { if (gMain.newKeys & 0x40) @@ -8242,9 +3567,12 @@ bool8 sub_80EEC90() ewram0_11.var6dad = 0; return TRUE; } +#if DEBUG + if (gLinkOpen == TRUE) + debug_sub_8008264(gLink.recvQueue.count, 6, 10, 2, 4); +#endif return FALSE; } -#endif void sub_80EED0C() { -- cgit v1.2.3 From 5911f59a7dc71c92ea52ff62fcb18e4a8ffa8e69 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 29 Jan 2018 20:15:27 -0800 Subject: More rock.s decompilation --- src/battle/anim/rock.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) (limited to 'src') diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index d4307e7c1..26ac78053 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -17,6 +17,8 @@ extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[]; extern const u8 gBattleAnimBackgroundImage_SandstormBrew[]; extern const u16 gBattleAnimSpritePalette_261[]; +extern const struct SubspriteTable gUnknown_083DAD10; + static void sub_80DCF1C(struct Sprite *sprite); static void sub_80DD02C(struct Sprite *sprite); void sub_80DD190(u8 taskId); @@ -147,3 +149,127 @@ void do_boulder_dust(u8 taskId) gTasks[taskId].data[0] = var0; gTasks[taskId].func = sub_80DD190; } + +void sub_80DD190(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + + if (gTasks[taskId].data[0] == 0) + gBattle_BG1_X += 0xFFFA; + else + gBattle_BG1_X += 6; + + gBattle_BG1_Y += -1; + + switch (gTasks[taskId].data[12]) + { + case 0: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]++; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 7) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 1: + if (++gTasks[taskId].data[11] == 101) + { + gTasks[taskId].data[11] = 7; + gTasks[taskId].data[12]++; + } + break; + case 2: + if (++gTasks[taskId].data[10] == 4) + { + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[11]--; + REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8); + if (gTasks[taskId].data[11] == 0) + { + gTasks[taskId].data[12]++; + gTasks[taskId].data[11] = 0; + } + } + break; + case 3: + sub_8078914(&subStruct); + DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000); + DmaClear32(3, subStruct.field_4, 0x800); + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + gTasks[taskId].data[12]++; + // fall through + case 4: + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BG1CNT_BITFIELD.priority = 1; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80DD3AC(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + if (gBattleAnimArgs[3] != 0 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + { + sprite->pos1.x = 304; + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + sprite->data[5] = 1; + sprite->oam.matrixNum = 8; + } + else + { + sprite->pos1.x = -64; + } + + sprite->pos1.y = gBattleAnimArgs[0]; + SetSubspriteTables(sprite, &gUnknown_083DAD10); + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[0]++; + } + else + { + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + sprite->pos2.x += (sprite->data[3] >> 8); + sprite->pos2.y += (sprite->data[4] >> 8); + sprite->data[3] &= 0xFF; + sprite->data[4] &= 0xFF; + + if (sprite->data[5] == 0) + { + if (sprite->pos1.x + sprite->pos2.x > 272) + { + sprite->callback = DestroyAnimSprite; + } + } + else if (sprite->pos1.x + sprite->pos2.x < -32) + { + sprite->callback = DestroyAnimSprite; + } + } +} + +void sub_80DD490(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + sub_80787B0(sprite, 0); + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[2] = sprite->pos1.x; + sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2]; + + sprite->callback = sub_8078B34; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} -- cgit v1.2.3 From 2df648dc4b9dee51503d319c677456c008b438fb Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Tue, 30 Jan 2018 19:56:12 -0800 Subject: Finish decompiling rock.s --- src/battle/anim/rock.c | 331 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 329 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c index 26ac78053..b113ce040 100644 --- a/src/battle/anim/rock.c +++ b/src/battle/anim/rock.c @@ -4,24 +4,35 @@ #include "decompress.h" #include "palette.h" #include "rom_8077ABC.h" +#include "sound.h" #include "task.h" #include "trig.h" +#include "constants/songs.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; +extern u32 gAnimMoveDmg; extern u16 gBattle_BG1_X; extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG3_Y; extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[]; extern const u8 gBattleAnimBackgroundImage_SandstormBrew[]; extern const u16 gBattleAnimSpritePalette_261[]; +extern const struct SpriteTemplate gSpriteTemplate_83DAD78; +extern const struct SpriteTemplate gSpriteTemplate_83DAD90; extern const struct SubspriteTable gUnknown_083DAD10; static void sub_80DCF1C(struct Sprite *sprite); static void sub_80DD02C(struct Sprite *sprite); -void sub_80DD190(u8 taskId); +static void sub_80DD190(u8 taskId); +static void sub_80DD604(u8 taskId); +static void sub_80DD774(struct Task *task); +static u8 sub_80DD8BC(void); +static void sub_80DD928(struct Sprite *sprite); +static void sub_80DD9FC(struct Sprite *sprite); void sub_80DCE9C(struct Sprite *sprite) @@ -150,7 +161,7 @@ void do_boulder_dust(u8 taskId) gTasks[taskId].func = sub_80DD190; } -void sub_80DD190(u8 taskId) +static void sub_80DD190(u8 taskId) { struct Struct_sub_8078914 subStruct; @@ -273,3 +284,319 @@ void sub_80DD490(struct Sprite *sprite) sprite->callback = sub_8078B34; StoreSpriteCallbackInData(sprite, DestroyAnimSprite); } + +void sub_80DD4D4(u8 taskId) +{ + u16 var0, var1, var2, var3; + u8 var4; + int var5; + s16 pan1, pan2; + struct Task *task; + + task = &gTasks[taskId]; + + var0 = GetBankPosition(gAnimBankAttacker, 2); + var1 = GetBankPosition(gAnimBankAttacker, 1) + 24; + var2 = GetBankPosition(gAnimBankTarget, 2); + var3 = GetBankPosition(gAnimBankTarget, 1) + 24; + + if ((gAnimBankAttacker ^ 2) == gAnimBankTarget) + var3 = var1; + + var4 = sub_80DD8BC(); + if (var4 == 1) + task->data[8] = 32; + else + task->data[8] = 48 - (var4 * 8); + + task->data[0] = 0; + task->data[11] = 0; + task->data[9] = 0; + task->data[12] = 1; + + var5 = task->data[8]; + if (var5 < 0) + var5 += 7; + + task->data[10] = (var5 >> 3) - 1; + + task->data[2] = var0 * 8; + task->data[3] = var1 * 8; + task->data[4] = ((var2 - var0) * 8) / task->data[8]; + task->data[5] = ((var3 - var1) * 8) / task->data[8]; + task->data[6] = 0; + task->data[7] = 0; + + pan1 = BattleAnimAdjustPanning(-64); + pan2 = BattleAnimAdjustPanning(63); + + task->data[13] = pan1; + task->data[14] = (pan2 - pan1) / task->data[8]; + task->data[1] = var4; + task->data[15] = GetAnimBankSpriteId(0); + + task->func = sub_80DD604; +} + +static void sub_80DD604(u8 taskId) +{ + struct Task *task; + + task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[6] -= task->data[4]; + task->data[7] -= task->data[5]; + gSprites[task->data[15]].pos2.x = task->data[6] >> 3; + gSprites[task->data[15]].pos2.y = task->data[7] >> 3; + + if (++task->data[9] == 10) + { + task->data[11] = 20; + task->data[0]++; + } + + PlaySE12WithPanning(SE_W029, task->data[13]); + break; + case 1: + if (--task->data[11] == 0) + task->data[0]++; + break; + case 2: + if (--task->data[9] != 0) + { + task->data[6] += task->data[4]; + task->data[7] += task->data[5]; + } + else + { + task->data[6] = 0; + task->data[7] = 0; + task->data[0]++; + } + + gSprites[task->data[15]].pos2.x = task->data[6] >> 3; + gSprites[task->data[15]].pos2.y = task->data[7] >> 3; + break; + case 3: + task->data[2] += task->data[4]; + task->data[3] += task->data[5]; + if (++task->data[9] >= task->data[10]) + { + task->data[9] = 0; + sub_80DD774(task); + task->data[13] += task->data[14]; + PlaySE12WithPanning(SE_W091, task->data[13]); + } + + if (--task->data[8] == 0) + { + task->data[0]++; + } + break; + case 4: + if (task->data[11] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80DD774(struct Task *task) +{ + const struct SpriteTemplate *spriteTemplate; + int var0; + u16 x, y; + u8 spriteId; + + switch (task->data[1]) + { + case 1: + spriteTemplate = &gSpriteTemplate_83DAD78; + var0 = 0; + break; + case 2: + case 3: + spriteTemplate = &gSpriteTemplate_83DAD90; + var0 = 80; + break; + case 4: + spriteTemplate = &gSpriteTemplate_83DAD90; + var0 = 64; + break; + case 5: + spriteTemplate = &gSpriteTemplate_83DAD90; + var0 = 48; + break; + default: + return; + } + + x = task->data[2] >> 3; + y = task->data[3] >> 3; + x += (task->data[12] * 4); + + spriteId = CreateSprite(spriteTemplate, x, y, 35); + if (spriteId != 64) + { + gSprites[spriteId].data[0] = 18; + gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3); + gSprites[spriteId].data[4] = y; + gSprites[spriteId].data[5] = -16 - (task->data[1] * 2); + gSprites[spriteId].oam.tileNum += var0; + + sub_80786EC(&gSprites[spriteId]); + task->data[11]++; + } + + task->data[12] *= -1; +} + +void sub_80DD87C(struct Sprite *sprite) +{ + if (sub_8078718(sprite)) + { + u8 taskId = FindTaskIdByFunc(sub_80DD604); + if (taskId != 0xFF) + gTasks[taskId].data[11]--; + + DestroySprite(sprite); + } +} + +u8 sub_80DD8BC(void) +{ + u8 retVal = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1; + u8 var0 = retVal - 1; + if (var0 > 4) + { + retVal = 1; + } + + return retVal; +} + +void sub_80DD8E8(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gBattleAnimArgs[4]); + + sprite->pos2.x = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[3] -= gBattleAnimArgs[2]; + sprite->data[0] = 3; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_80DD928; + sprite->invisible = 1; +} + +static void sub_80DD928(struct Sprite *sprite) +{ + sprite->invisible = 0; + if (sprite->data[3] != 0) + { + sprite->pos2.y = sprite->data[2] + sprite->data[3]; + sprite->data[3] += sprite->data[0]; + sprite->data[0]++; + if (sprite->data[3] > 0) + { + sprite->data[3] = 0; + } + } + else + { + if (--sprite->data[1] == 0) + { + DestroyAnimSprite(sprite); + } + } +} + +void sub_80DD978(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT) + StartSpriteAffineAnim(sprite, 1); + + sub_807941C(sprite); +} + +void sub_80DD9A4(struct Sprite *sprite) +{ + sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0); + sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1); + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + + sprite->data[1] = gBattleAnimArgs[0]; + sprite->data[2] = gBattleAnimArgs[1]; + sprite->data[5] = gBattleAnimArgs[2]; + + StartSpriteAnim(sprite, gBattleAnimArgs[3]); + sprite->callback = sub_80DD9FC; +} + +static void sub_80DD9FC(struct Sprite *sprite) +{ + sprite->data[0] += 8; + sprite->data[3] += sprite->data[1]; + sprite->data[4] += sprite->data[2]; + + sprite->pos2.x += sprite->data[3] / 40; + sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]); + + if (sprite->data[0] > 140) + DestroyAnimSprite(sprite); +} + +void sub_80DDA4C(u8 taskId) +{ + if ((s32)gAnimMoveDmg < 33) + gBattleAnimArgs[7] = 0; + if (gAnimMoveDmg - 33 < 33) + gBattleAnimArgs[7] = 1; + if ((s32)gAnimMoveDmg > 65) + gBattleAnimArgs[7] = 2; + + DestroyAnimVisualTask(taskId); +} + +void sub_80DDA8C(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80789D4(0); + gTasks[taskId].data[1] = 200; + } + + gBattle_BG3_Y += gTasks[taskId].data[1] / 10; + gTasks[taskId].data[1] -= 3; + + if (gTasks[taskId].data[0] == 120) + { + sub_80789D4(1); + DestroyAnimVisualTask(taskId); + } + + gTasks[taskId].data[0]++; +} + +void sub_80DDAF0(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + { + sub_80789D4(0); + gTasks[taskId].data[0]++; + gTasks[taskId].data[2] = gBattle_BG3_Y; + } + + gTasks[taskId].data[1] += 80; + gTasks[taskId].data[1] &= 0xFF; + gBattle_BG3_Y = gTasks[taskId].data[2] + Cos(4, gTasks[taskId].data[1]); + + if (gBattleAnimArgs[7] == 0xFFF) + { + gBattle_BG3_Y = 0; + sub_80789D4(1); + DestroyAnimVisualTask(taskId); + } +} -- cgit v1.2.3 From cb674ce14dc43f99dd76f456e69ab8a90cc3d506 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 31 Jan 2018 15:45:28 -0600 Subject: fix and decompile more battle_2.c debug code --- src/battle/battle_2.c | 511 ++++++++++---------------------------------------- 1 file changed, 101 insertions(+), 410 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index a400257dd..b8ad21869 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1376,30 +1376,9 @@ void debug_sub_80125A0(void); u32 debug_sub_8013294(u8, void *, u32); void debug_sub_80132C8(u8, void *, u32); -struct UnknownStruct2023A76 -{ - u16 unk0; - u16 unk2[(0x44-2)/2]; - s16 unk44; - u16 unk46; - u16 unk48[1]; -}; - -struct UnknownStruct2023B02 -{ - u16 unk0[4][4]; - u8 filler20[0x10]; - u16 unk30[4][4]; -}; - -struct UnknownStruct821F424 -{ - u8 filler0[0x12]; - u16 unk12[1][5]; // unknown length -}; - -extern struct UnknownStruct2023A76 gUnknown_Debug_2023A76; -extern struct UnknownStruct2023B02 gUnknown_Debug_2023B02; +extern s16 gUnknown_Debug_2023A76[][0x23]; +extern s16 gUnknown_Debug_2023A76_[][7][5]; +extern s16 gUnknown_Debug_2023B02[][6][4]; extern u8 gUnknown_Debug_03004360; extern struct Window gUnknown_Debug_03004370; extern u8 gUnknown_Debug_030043A0; @@ -1407,7 +1386,7 @@ extern u8 gUnknown_Debug_030043A4; extern u8 gUnknown_Debug_030043A8; extern u8 gBattleBuffersTransferData[]; -extern const struct UnknownStruct821F424 gUnknown_Debug_821F424; +extern const s16 gUnknown_Debug_821F424[][5]; extern const u16 gUnknown_Debug_821F56C[][5]; extern const u8 gUnusedOldCharmap_Gfx_lz[]; @@ -1421,25 +1400,24 @@ void debug_sub_8010800(void) *(u32 *)(gBattleBuffersTransferData + 0x100) = 0; } - void debug_sub_8010818(void) { s32 i; - gUnknown_Debug_2023A76.unk0 = 0x115; - gUnknown_Debug_2023A76.unk46 = 0x115; - for (i = 0; i < 30; i++) + gUnknown_Debug_2023A76[0][0] = 0x115; + gUnknown_Debug_2023A76[1][0] = 0x115; + for (i = 1; i < 31; i++) { - gUnknown_Debug_2023A76.unk2[i] = gUnknown_Debug_821F424.unk12[i][0]; - gUnknown_Debug_2023A76.unk48[i] = gUnknown_Debug_821F424.unk12[i][0]; + gUnknown_Debug_2023A76[0][i] = gUnknown_Debug_821F424[i][4]; + gUnknown_Debug_2023A76[1][i] = gUnknown_Debug_821F424[i][4]; } for (i = 0; i < 6; i++) { for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++) { - gUnknown_Debug_2023B02.unk0[i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0]; - gUnknown_Debug_2023B02.unk30[i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0]; + gUnknown_Debug_2023B02[0][i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0]; + gUnknown_Debug_2023B02[1][i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0]; } } } @@ -1490,7 +1468,7 @@ void debug_sub_80108B8(void) debug_nullsub_3(); gUnknown_Debug_030043A8 = 0; debug_sub_80125A0(); - if (gUnknown_Debug_2023A76.unk44 == 8) + if (gUnknown_Debug_2023A76[0][0x22] == 8) { debug_sub_801174C(); } @@ -1510,289 +1488,91 @@ void debug_sub_8010A7C(u8 a, u8 b) gBattleTextBuff1[i] = EOS; } -__attribute__((naked)) -void debug_sub_8010AAC() +// gUnknown_Debug_2023A76_ seems like a 3D array, but this function refuses to match when I do that. +#ifdef NONMATCHING +void debug_sub_8010AAC(u8 a) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov ip, r0\n" - " ldr r6, ._520 @ gBaseStats\n" - " ldr r4, ._520 + 4 @ gUnknown_Debug_2023A76\n" - " ldr r5, ._520 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x2\n" - " add r7, r0, r1\n" - " lsl r1, r7, #0x1\n" - " ldr r3, ._520 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r3]\n" - " mov r0, #0x46\n" - " mul r2, r2, r0\n" - " add r1, r1, r2\n" - " add r1, r1, r4\n" - " mov r0, #0x0\n" - " ldsh r1, [r1, r0]\n" - " lsl r0, r1, #0x3\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r6\n" - " ldrb r0, [r0, #0x10]\n" - " add r6, r3, #0\n" - " cmp r0, #0xfe\n" - " beq ._516 @cond_branch\n" - " cmp r0, #0xfe\n" - " bgt ._517 @cond_branch\n" - " cmp r0, #0\n" - " beq ._518 @cond_branch\n" - " b ._523\n" - "._521:\n" - " .align 2, 0\n" - "._520:\n" - " .word gBaseStats\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004360\n" - "._517:\n" - " cmp r0, #0xff\n" - " beq ._522 @cond_branch\n" - " b ._523\n" - "._518:\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r2\n" - " add r0, r0, r4\n" - " mov r1, #0x2\n" - " b ._528\n" - "._516:\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r2\n" - " add r0, r0, r4\n" - " mov r1, #0x3\n" - " b ._528\n" - "._522:\n" - " add r0, r7, #4\n" - " lsl r0, r0, #0x1\n" - " add r0, r0, r2\n" - " add r0, r0, r4\n" - " mov r1, #0x4\n" - " b ._528\n" - "._523:\n" - " ldrb r0, [r5]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " add r1, r1, #0x4\n" - " lsl r1, r1, #0x1\n" - " ldrb r0, [r6]\n" - " mov r3, #0x46\n" - " mul r0, r0, r3\n" - " add r1, r1, r0\n" - " add r1, r1, r4\n" - " ldrh r2, [r1]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " strh r0, [r1]\n" - " mov r1, ip\n" - " cmp r1, #0\n" - " beq ._527 @cond_branch\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r0, #0x4\n" - " lsl r0, r0, #0x1\n" - " ldrb r1, [r6]\n" - " mul r1, r1, r3\n" - " add r0, r0, r1\n" - " add r0, r0, r4\n" - " ldrh r1, [r0]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " b ._528\n" - "._527:\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r0, #0x4\n" - " lsl r0, r0, #0x1\n" - " ldrb r1, [r6]\n" - " mul r1, r1, r3\n" - " add r0, r0, r1\n" - " add r0, r0, r4\n" - " mov r1, ip\n" - "._528:\n" - " strh r1, [r0]\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + switch (gBaseStats[gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][0]].genderRatio) + { + case 0: + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 2; + break; + case 0xFE: + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 3; + break; + case 0xFF: + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 4; + break; + default: + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] &= 1; + if (a != 0) + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] ^= 1; + else + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][4] = 0; + break; + } } +#else +void debug_sub_8010AAC(u8 a) +{ + switch (gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5]].genderRatio) + { + case 0: + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 2; + break; + case 0xFE: + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 3; + break; + case 0xFF: + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 4; + break; + default: + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] &= 1; + if (a != 0) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] ^= 1; + else + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 0; + break; + } +} +#endif -__attribute__((naked)) -void debug_sub_8010B80() +void debug_sub_8010B80(u8 a) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r9\n" - " mov r6, r8\n" - " push {r6, r7}\n" - " lsl r0, r0, #0x18\n" - " lsr r6, r0, #0x18\n" - " mov r0, #0x0\n" - " mov ip, r0\n" - " ldr r4, ._534 @ gUnknown_Debug_2023A76\n" - " ldr r1, ._534 + 4 @ gUnknown_Debug_030043A0\n" - " mov r8, r1\n" - " ldr r5, ._534 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " mov r2, r8\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x1\n" - " ldr r3, ._534 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r3]\n" - " mov r1, #0x46\n" - " mul r1, r1, r2\n" - " add r0, r0, r1\n" - " add r0, r0, r4\n" - " ldrb r7, [r0]\n" - " lsl r1, r7, #0x18\n" - " asr r0, r1, #0x18\n" - " mov r9, r4\n" - " add r2, r5, #0\n" - " add r4, r3, #0\n" - " cmp r0, #0x9\n" - " ble ._529 @cond_branch\n" - "._530:\n" - " mov r3, #0xf6\n" - " lsl r3, r3, #0x18\n" - " add r0, r1, r3\n" - " lsr r7, r0, #0x18\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x11\n" - " add r0, r0, r3\n" - " lsr r0, r0, #0x18\n" - " mov ip, r0\n" - " lsl r1, r7, #0x18\n" - " asr r0, r1, #0x18\n" - " cmp r0, #0x9\n" - " bgt ._530 @cond_branch\n" - "._529:\n" - " mov r0, #0x2\n" - " and r0, r0, r6\n" - " cmp r0, #0\n" - " beq ._531 @cond_branch\n" - " mov r0, #0x1\n" - " and r0, r0, r6\n" - " cmp r0, #0\n" - " beq ._532 @cond_branch\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x11\n" - " b ._533\n" - "._535:\n" - " .align 2, 0\n" - "._534:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004360\n" - "._532:\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " mov r3, #0xff\n" - " lsl r3, r3, #0x18\n" - "._533:\n" - " add r0, r0, r3\n" - " lsr r0, r0, #0x18\n" - " mov ip, r0\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " cmp r0, #0\n" - " bge ._536 @cond_branch\n" - " mov r3, #0x9\n" - " mov ip, r3\n" - "._536:\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x9\n" - " ble ._542 @cond_branch\n" - " mov r3, #0x0\n" - " mov ip, r3\n" - " b ._542\n" - "._531:\n" - " mov r0, #0x1\n" - " and r0, r0, r6\n" - " cmp r0, #0\n" - " beq ._539 @cond_branch\n" - " lsl r0, r7, #0x18\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x11\n" - " add r0, r0, r1\n" - " b ._540\n" - "._539:\n" - " lsl r0, r7, #0x18\n" - " mov r3, #0xff\n" - " lsl r3, r3, #0x18\n" - " add r0, r0, r3\n" - "._540:\n" - " lsr r7, r0, #0x18\n" - " lsl r0, r7, #0x18\n" - " cmp r0, #0\n" - " bgt ._541 @cond_branch\n" - " mov r7, #0x9\n" - "._541:\n" - " lsl r0, r7, #0x18\n" - " asr r0, r0, #0x18\n" - " cmp r0, #0x9\n" - " ble ._542 @cond_branch\n" - " mov r7, #0x1\n" - "._542:\n" - " ldrb r0, [r2]\n" - " lsl r2, r0, #0x2\n" - " add r2, r2, r0\n" - " mov r0, r8\n" - " ldrb r0, [r0]\n" - " add r2, r2, r0\n" - " lsl r2, r2, #0x1\n" - " ldrb r1, [r4]\n" - " mov r0, #0x1\n" - " eor r0, r0, r1\n" - " mov r1, #0x46\n" - " add r3, r0, #0\n" - " mul r3, r3, r1\n" - " add r3, r2, r3\n" - " add r3, r3, r9\n" - " ldrb r0, [r4]\n" - " mul r0, r0, r1\n" - " add r2, r2, r0\n" - " add r2, r2, r9\n" - " mov r1, ip\n" - " lsl r0, r1, #0x18\n" - " asr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x1\n" - " lsl r0, r7, #0x18\n" - " asr r0, r0, #0x18\n" - " add r0, r0, r1\n" - " strh r0, [r2]\n" - " strh r0, [r3]\n" - " pop {r3, r4}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + s8 r12 = 0; + s8 r7 = gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0]; + + while (r7 >= 10) + { + r7 -= 10; + r12++; + } + + if (a & 2) + { + if (a & 1) + r12++; + else + r12--; + if (r12 < 0) + r12 = 9; + if (r12 > 9) + r12 = 0; + } + else + { + if (a & 1) + r7++; + else + r7--; + if (r7 < 1) + r7 = 9; + if (r7 > 9) + r7 = 1; + } + gUnknown_Debug_2023A76_[gUnknown_Debug_03004360 ^ 1][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0] + = gUnknown_Debug_2023A76_[gUnknown_Debug_03004360][gUnknown_Debug_030043A4][gUnknown_Debug_030043A0] + = r12 * 10 + r7; } __attribute__((naked)) @@ -5119,39 +4899,17 @@ void debug_sub_8012688() ); } -__attribute__((naked)) -void debug_sub_8012878() +void debug_sub_8012878(void) { - asm( - " push {lr}\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " ldr r0, ._876 @ gUnknown_03004210\n" - " bl Text_UpdateWindowInBattle\n" - " bl UpdatePaletteFade\n" - " bl RunTasks\n" - " ldr r0, ._876 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2c]\n" - " mov r0, #0x82\n" - " lsl r0, r0, #0x1\n" - " cmp r1, r0\n" - " bne ._875 @cond_branch\n" - " ldr r0, ._876 + 8 @ debug_sub_80108B8\n" - " bl SetMainCallback2\n" - "._875:\n" - " pop {r0}\n" - " bx r0\n" - "._877:\n" - " .align 2, 0\n" - "._876:\n" - " .word gUnknown_03004210\n" - " .word gMain\n" - " .word debug_sub_80108B8+1\n" - "\n" - ); + AnimateSprites(); + BuildOamBuffer(); + Text_UpdateWindowInBattle(&gUnknown_03004210); + UpdatePaletteFade(); + RunTasks(); + if (gMain.heldKeys == (SELECT_BUTTON | R_BUTTON)) + SetMainCallback2(debug_sub_80108B8); } -/* void debug_sub_80128B4(void) { debug_sub_8010A7C(0, 9); @@ -5164,73 +4922,6 @@ void debug_sub_80128B4(void) Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35); Text_PrintWindow8002F44(&gUnknown_03004210); } -*/ - -__attribute__((naked)) -void debug_sub_80128B4() -{ - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x0\n" - " mov r1, #0x9\n" - " bl debug_sub_8010A7C\n" - " ldr r5, ._878 @ gUnknown_03004210\n" - " ldr r4, ._878 + 4 @ gBattleTextBuff1\n" - " mov r0, #0x23\n" - " mov r8, r0\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x90\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - " ldr r6, ._878 + 8 @ gCurrentMove\n" - " ldrh r1, [r6]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x0\n" - " strb r0, [r4, #0x3]\n" - " mov r0, #0xff\n" - " strb r0, [r4, #0x4]\n" - " ldrh r1, [r6]\n" - " mov r0, #0xb\n" - " mul r1, r1, r0\n" - " ldr r0, ._878 + 12 @ gSpeciesNames\n" - " add r1, r1, r0\n" - " add r0, r4, #0\n" - " bl StringAppend\n" - " mov r0, r8\n" - " str r0, [sp]\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x90\n" - " mov r3, #0x2\n" - " bl Text_InitWindow\n" - " add r0, r5, #0\n" - " bl Text_PrintWindow8002F44\n" - " add sp, sp, #0x4\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._879:\n" - " .align 2, 0\n" - "._878:\n" - " .word gUnknown_03004210\n" - " .word gBattleTextBuff1\n" - " .word gCurrentMove\n" - " .word gSpeciesNames\n" - "\n" - ); -} void debug_sub_8012938(u8 taskId) { -- cgit v1.2.3 From 449d5cd95bbd1a3ad291e6ebe0654f47f2f3b6e4 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 31 Jan 2018 18:19:25 -0600 Subject: decompile more battle_2.c debug functions --- src/battle/battle_2.c | 326 ++++++++++---------------------------------------- 1 file changed, 64 insertions(+), 262 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index b8ad21869..d3ddc5960 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -69,6 +69,7 @@ struct UnknownStruct12 extern void sub_802BBD4(); +extern struct SpriteTemplate gUnknown_02024E8C; extern const u8 Str_821F7B8[]; extern u8 gUnknown_02023A14_50; extern const u16 gUnknown_08D004E0[]; @@ -1362,6 +1363,8 @@ extern u8 gUnknown_Debug_2023B62[]; extern const u8 Str_821F7BD[]; extern const u8 Str_821F7DA[]; +void debug_sub_8012878(void); +void debug_sub_8012D10(u8); void debug_sub_8010818(void); void debug_sub_80108B8(void); void debug_sub_8010CAC(void); @@ -1388,6 +1391,7 @@ extern u8 gBattleBuffersTransferData[]; extern const s16 gUnknown_Debug_821F424[][5]; extern const u16 gUnknown_Debug_821F56C[][5]; +extern const u32 gUnknown_Debug_821F798[][4]; extern const u8 gUnusedOldCharmap_Gfx_lz[]; extern const u8 gUnusedOldCharmap_Tilemap_lz[]; @@ -4628,275 +4632,73 @@ void debug_sub_80125E4() ); } -__attribute__((naked)) -void debug_sub_8012628() +void debug_sub_8012628(void) { - asm( - " ldr r3, ._868 @ gSharedMem\n" - " ldr r2, ._868 + 4 @ gUnknown_Debug_821F798\n" - " ldr r0, ._868 + 8 @ gUnknown_Debug_030043A8\n" - " ldrb r1, [r0]\n" - " lsl r1, r1, #0x2\n" - " ldr r0, ._868 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x4\n" - " add r1, r1, r0\n" - " add r1, r1, r2\n" - " ldr r0, [r1]\n" - " add r0, r0, r3\n" - " mov r1, #0x6d\n" - " strb r1, [r0]\n" - " bx lr\n" - "._869:\n" - " .align 2, 0\n" - "._868:\n" - " .word gSharedMem\n" - " .word gUnknown_Debug_821F798\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_03004360\n" - "\n" - ); + gSharedMem[gUnknown_Debug_821F798[gUnknown_Debug_03004360][gUnknown_Debug_030043A8]] = 0x6D; } -__attribute__((naked)) -void debug_sub_8012658() +void debug_sub_8012658(void) { - asm( - " ldr r3, ._870 @ gSharedMem\n" - " ldr r2, ._870 + 4 @ gUnknown_Debug_821F798\n" - " ldr r0, ._870 + 8 @ gUnknown_Debug_030043A8\n" - " ldrb r1, [r0]\n" - " lsl r1, r1, #0x2\n" - " ldr r0, ._870 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x4\n" - " add r1, r1, r0\n" - " add r1, r1, r2\n" - " ldr r0, [r1]\n" - " add r0, r0, r3\n" - " mov r1, #0x81\n" - " strb r1, [r0]\n" - " bx lr\n" - "._871:\n" - " .align 2, 0\n" - "._870:\n" - " .word gSharedMem\n" - " .word gUnknown_Debug_821F798\n" - " .word gUnknown_Debug_030043A8\n" - " .word gUnknown_Debug_03004360\n" - "\n" - ); + gSharedMem[gUnknown_Debug_821F798[gUnknown_Debug_03004360][gUnknown_Debug_030043A8]] = 0x81; } -__attribute__((naked)) -void debug_sub_8012688() +void debug_sub_8012688(void) { - asm( - " push {r4, r5, r6, lr}\n" - " mov r6, r8\n" - " push {r6}\n" - " add sp, sp, #0xfffffff4\n" - " mov r1, #0x0\n" - " mov r4, #0xcd\n" - " lsl r4, r4, #0x1\n" - " ldr r3, ._873 @ gUnknown_Debug_2023B62\n" - " mov r2, #0x0\n" - "._872:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, r4\n" - " ble ._872 @cond_branch\n" - " mov r0, #0x0\n" - " bl SetHBlankCallback\n" - " mov r0, #0x0\n" - " bl SetVBlankCallback\n" - " mov r5, #0x0\n" - " str r5, [sp, #0x8]\n" - " ldr r1, ._873 + 4 @ 0x40000d4\n" - " add r0, sp, #0x8\n" - " str r0, [r1]\n" - " mov r0, #0xc0\n" - " lsl r0, r0, #0x13\n" - " str r0, [r1, #0x4]\n" - " ldr r0, ._873 + 8 @ 0x85006000\n" - " str r0, [r1, #0x8]\n" - " ldr r0, [r1, #0x8]\n" - " ldr r0, ._873 + 12 @ 0x400004c\n" - " strh r5, [r0]\n" - " sub r0, r0, #0xc\n" - " strh r5, [r0]\n" - " add r0, r0, #0x4\n" - " strh r5, [r0]\n" - " sub r0, r0, #0x2\n" - " strh r5, [r0]\n" - " add r0, r0, #0x4\n" - " strh r5, [r0]\n" - " add r0, r0, #0x2\n" - " strh r5, [r0]\n" - " add r0, r0, #0x2\n" - " strh r5, [r0]\n" - " ldr r4, ._873 + 16 @ gWindowTemplate_81E6C58\n" - " add r0, r4, #0\n" - " bl Text_LoadWindowTemplate\n" - " bl ResetPaletteFade\n" - " ldr r0, ._873 + 20 @ gBattle_BG0_X\n" - " strh r5, [r0]\n" - " ldr r1, ._873 + 24 @ gBattle_BG0_Y\n" - " mov r0, #0xa0\n" - " strh r0, [r1]\n" - " ldr r0, ._873 + 28 @ gBattle_BG1_X\n" - " strh r5, [r0]\n" - " ldr r0, ._873 + 32 @ gBattle_BG1_Y\n" - " strh r5, [r0]\n" - " ldr r0, ._873 + 36 @ gBattle_BG2_X\n" - " strh r5, [r0]\n" - " ldr r0, ._873 + 40 @ gBattle_BG2_Y\n" - " strh r5, [r0]\n" - " ldr r0, ._873 + 44 @ gBattle_BG3_X\n" - " strh r5, [r0]\n" - " ldr r0, ._873 + 48 @ gBattle_BG3_Y\n" - " strh r5, [r0]\n" - " ldr r1, ._873 + 52 @ gBattleTerrain\n" - " mov r0, #0x9\n" - " strb r0, [r1]\n" - " bl sub_800D6D4\n" - " bl sub_800DAB8\n" - " bl ResetSpriteData\n" - " bl ResetTasks\n" - " bl FreeAllSpritePalettes\n" - " ldr r1, ._873 + 56 @ gReservedSpritePaletteCount\n" - " mov r0, #0x4\n" - " strb r0, [r1]\n" - " ldr r6, ._873 + 60 @ gCurrentMove\n" - " mov r0, #0x1\n" - " strh r0, [r6]\n" - " ldr r0, ._873 + 64 @ gUnknown_03004210\n" - " add r1, r4, #0\n" - " bl Text_InitWindowWithTemplate\n" - " ldrh r2, [r6]\n" - " lsl r0, r2, #0x3\n" - " ldr r1, ._873 + 68 @ gMonFrontPicTable\n" - " add r0, r0, r1\n" - " ldr r1, ._873 + 72 @ gMonFrontPicCoords\n" - " mov r8, r1\n" - " lsl r2, r2, #0x2\n" - " add r2, r2, r8\n" - " ldrb r1, [r2]\n" - " ldrb r2, [r2, #0x1]\n" - " mov r3, #0x80\n" - " lsl r3, r3, #0x12\n" - " ldr r4, ._873 + 76 @ gUnknown_081FAF4C\n" - " ldr r4, [r4, #0x4]\n" - " str r4, [sp]\n" - " ldrh r4, [r6]\n" - " str r4, [sp, #0x4]\n" - " bl DecompressPicFromTable_2\n" - " ldr r1, ._873 + 80 @ gMonPaletteTable\n" - " ldrh r0, [r6]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov r1, #0x88\n" - " lsl r1, r1, #0x1\n" - " mov r2, #0x20\n" - " bl LoadCompressedPalette\n" - " ldrh r0, [r6]\n" - " mov r1, #0x1\n" - " bl GetMonSpriteTemplate_803C56C\n" - " ldr r0, ._873 + 84 @ gUnknown_02024E8C\n" - " ldrh r1, [r6]\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r8\n" - " ldrb r2, [r1, #0x1]\n" - " add r2, r2, #0x28\n" - " mov r1, #0xb0\n" - " mov r3, #0x28\n" - " bl CreateSprite\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r3, ._873 + 88 @ gSprites\n" - " lsl r1, r4, #0x4\n" - " add r1, r1, r4\n" - " lsl r1, r1, #0x2\n" - " add r0, r3, #0\n" - " add r0, r0, #0x1c\n" - " add r0, r1, r0\n" - " ldr r2, ._873 + 92 @ nullsub_37\n" - " str r2, [r0]\n" - " add r1, r1, r3\n" - " ldrb r2, [r1, #0x5]\n" - " mov r0, #0xf\n" - " and r0, r0, r2\n" - " mov r2, #0x10\n" - " orr r0, r0, r2\n" - " strb r0, [r1, #0x5]\n" - " mov r1, #0x80\n" - " lsl r1, r1, #0x13\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x5\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " ldr r0, ._873 + 96 @ debug_nullsub_45\n" - " bl SetHBlankCallback\n" - " ldr r0, ._873 + 100 @ debug_sub_8011DD4\n" - " bl SetVBlankCallback\n" - " bl m4aMPlayAllStop\n" - " ldr r0, ._873 + 104 @ debug_sub_8012D10\n" - " mov r1, #0x0\n" - " bl CreateTask\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " ldr r2, ._873 + 108 @ gTasks\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " add r1, r1, r2\n" - " strh r5, [r1, #0x8]\n" - " strh r4, [r1, #0xa]\n" - " ldr r0, ._873 + 112 @ debug_sub_8012878\n" - " bl SetMainCallback2\n" - " add sp, sp, #0xc\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._874:\n" - " .align 2, 0\n" - "._873:\n" - " .word gUnknown_Debug_2023B62\n" - " .word 0x40000d4\n" - " .word 0x85006000\n" - " .word 0x400004c\n" - " .word gWindowTemplate_81E6C58\n" - " .word gBattle_BG0_X\n" - " .word gBattle_BG0_Y\n" - " .word gBattle_BG1_X\n" - " .word gBattle_BG1_Y\n" - " .word gBattle_BG2_X\n" - " .word gBattle_BG2_Y\n" - " .word gBattle_BG3_X\n" - " .word gBattle_BG3_Y\n" - " .word gBattleTerrain\n" - " .word gReservedSpritePaletteCount\n" - " .word gCurrentMove\n" - " .word gUnknown_03004210\n" - " .word gMonFrontPicTable\n" - " .word gMonFrontPicCoords\n" - " .word gUnknown_081FAF4C\n" - " .word gMonPaletteTable\n" - " .word gUnknown_02024E8C\n" - " .word gSprites\n" - " .word nullsub_37+1\n" - " .word debug_nullsub_45+1\n" - " .word debug_sub_8011DD4+1\n" - " .word debug_sub_8012D10+1\n" - " .word gTasks\n" - " .word debug_sub_8012878+1\n" - "\n" - ); + s32 i; + u8 spriteId; + u8 taskId; + + for (i = 0; i < 411; i++) + gUnknown_Debug_2023B62[i] = 0; + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE); + REG_MOSAIC = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + Text_LoadWindowTemplate(&gWindowTemplate_81E6C58); + ResetPaletteFade(); + gBattle_BG0_X = 0; + gBattle_BG0_Y = DISPLAY_HEIGHT; + gBattle_BG1_X = 0; + gBattle_BG1_Y = 0; + gBattle_BG2_X = 0; + gBattle_BG2_Y = 0; + gBattle_BG3_X = 0; + gBattle_BG3_Y = 0; + gBattleTerrain = 9; + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + ResetTasks(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + gCurrentMove = 1; + Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58); + DecompressPicFromTable_2( + &gMonFrontPicTable[gCurrentMove], + gMonFrontPicCoords[gCurrentMove].coords, + gMonFrontPicCoords[gCurrentMove].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[1], + gCurrentMove); + LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32); + GetMonSpriteTemplate_803C56C(gCurrentMove, 1); + spriteId = CreateSprite(&gUnknown_02024E8C, 176, 40 + gMonFrontPicCoords[gCurrentMove].y_offset, 40); + gSprites[spriteId].callback = nullsub_37; + gSprites[spriteId].oam.paletteNum = 1; + REG_DISPCNT = 0x1F40; + SetHBlankCallback(debug_nullsub_45); + SetVBlankCallback(debug_sub_8011DD4); + m4aMPlayAllStop(); + taskId = CreateTask(debug_sub_8012D10, 0); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = spriteId; + SetMainCallback2(debug_sub_8012878); } void debug_sub_8012878(void) -- cgit v1.2.3 From c410df510012f7a6ccfc342b398cd5d407fb0bf6 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 31 Jan 2018 18:33:01 -0800 Subject: Start decompiling psychic.s --- src/battle/anim/psychic.c | 356 ++++++++++++++++++++++++++++++++++++++++++++++ src/rom_8077ABC.c | 2 +- 2 files changed, 357 insertions(+), 1 deletion(-) create mode 100644 src/battle/anim/psychic.c (limited to 'src') diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c new file mode 100644 index 000000000..19bfdfdb6 --- /dev/null +++ b/src/battle/anim/psychic.c @@ -0,0 +1,356 @@ +#include "global.h" +#include "battle.h" +#include "battle_anim.h" +#include "palette.h" +#include "rom_8077ABC.h" +#include "sound.h" +#include "task.h" +#include "trig.h" +#include "constants/songs.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG2_X; +extern u8 gObjectBankIDs[]; + +extern const union AffineAnimCmd *const gUnknown_083DA888[]; +extern struct AffineAnimFrameCmd gUnknown_083DA8A4; +extern struct AffineAnimFrameCmd gUnknown_083DA8C4; + +static void sub_80DB88C(struct Sprite *sprite); +static void sub_80DB8C0(struct Sprite *sprite); +static void sub_80DB92C(struct Sprite *sprite); +static void sub_80DB9E4(struct Sprite *sprite); +static void sub_80DBC00(struct Sprite *sprite); +static void sub_80DBC34(struct Sprite *sprite); +static void sub_80DBCD0(u8 taskId); +static void sub_80DBD58(u8 taskId); +void sub_80DBE98(u8 taskId); + + +void sub_80DB74C(struct Sprite *sprite) +{ + if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER || IsContest()) + { + sprite->oam.priority = 2; + sprite->subpriority = 200; + } + + if (!IsContest()) + { + u8 bankCopy; + u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + u8 identity = GetBankIdentity_permutated(bank); + int var0 = 1; + u8 toBG_2 = (identity ^ var0) != 0; + + if (IsAnimBankSpriteVisible(bank)) + sub_8076034(bank, toBG_2); + + bank = bankCopy ^ 2; + if (IsAnimBankSpriteVisible(bank)) + sub_8076034(bank, toBG_2 ^ var0); + } + + if (!IsContest() && IsDoubleBattle()) + { + if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) + { + sprite->pos1.x = 72; + sprite->pos1.y = 80; + } + else + { + sprite->pos1.x = 176; + sprite->pos1.y = 40; + } + } + else + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[1]; + } + + if (IsContest()) + sprite->pos1.y += 9; + + sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16; + sprite->callback = sub_80DB88C; + sprite->callback(sprite); +} + +static void sub_80DB88C(struct Sprite *sprite) +{ + REG_BLDALPHA = ((16 - sprite->data[3]) << 8) | sprite->data[3]; + + if (sprite->data[3] == 13) + sprite->callback = sub_80DB8C0; + else + sprite->data[3]++; +} + +static void sub_80DB8C0(struct Sprite *sprite) +{ + u16 color; + u16 startOffset; + int i; + + if (++sprite->data[1] == 2) + { + sprite->data[1] = 0; + startOffset = sprite->data[0]; + color = gPlttBufferFaded[startOffset + 8]; + + for (i = 8; i > 0; i--) + gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1]; + + gPlttBufferFaded[startOffset + 1] = color; + + if (++sprite->data[2] == 16) + sprite->callback = sub_80DB92C; + } +} + +static void sub_80DB92C(struct Sprite *sprite) +{ + REG_BLDALPHA = ((16 - sprite->data[3]) << 8) | sprite->data[3]; + + if (--sprite->data[3] == -1) + { + if (!IsContest()) + { + u8 bankCopy; + u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + + if (IsAnimBankSpriteVisible(bank)) + gSprites[gObjectBankIDs[bank]].invisible = 0; + + bank = bankCopy ^ 2; + if (IsAnimBankSpriteVisible(bank)) + gSprites[gObjectBankIDs[bank]].invisible = 0; + } + + sprite->invisible = 1; + sprite->callback = sub_80DB9E4; + } +} + +static void sub_80DB9E4(struct Sprite *sprite) +{ + if (!IsContest()) + { + u8 bankCopy; + u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + u8 identity = GetBankIdentity_permutated(bank); + int var0 = 1; + u8 toBG_2 = (identity ^ var0) != 0; + + if (IsAnimBankSpriteVisible(bank)) + sub_8076464(toBG_2); + + bank = bankCopy ^ 2; + if (IsAnimBankSpriteVisible(bank)) + sub_8076464(toBG_2 ^ var0); + } + + sprite->callback = DestroyAnimSprite; +} + +void sub_80DBA4C(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + int arg3 = gBattleAnimArgs[3]; + u8 var0 = 0; + if (arg3 == 0) + var0 = 1; + + if (!IsContest() && IsDoubleBattle()) + { + if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) + { + sprite->pos1.x = 72 - gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1] + 80; + } + else + { + sprite->pos1.x = gBattleAnimArgs[0] + 176; + sprite->pos1.y = gBattleAnimArgs[1] + 40; + } + } + else + { + if (gBattleAnimArgs[2] == 0) + sub_80787B0(sprite, var0); + else + sub_8078764(sprite, var0); + } + + sprite->data[0]++; + } + else + { + if (sprite->animEnded || sprite->affineAnimEnded) + move_anim_8074EE0(sprite); + } +} + +void sub_80DBAF4(struct Sprite *sprite) +{ + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); + + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + { + StartSpriteAnim(sprite, 1); + sprite->pos1.x -= 40; + sprite->pos1.y += 10; + sprite->data[1] = -1; + } + else + { + sprite->pos1.x += 40; + sprite->pos1.y -= 10; + sprite->data[1] = 1; + } + + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + sprite->callback = sub_8078600; +} + +void sub_80DBB70(struct Sprite *sprite) +{ + s16 x = sub_807A100(gAnimBankAttacker, 1) / 2; + s16 y = sub_807A100(gAnimBankAttacker, 0) / -2; + + if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT) + { + x = -x; + } + + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + x; + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + y; + + if (sprite->pos1.y < 16) + { + sprite->pos1.y = 16; + } + + StoreSpriteCallbackInData(sprite, sub_80DBC00); + sprite->callback = sub_8078600; +} + +static void sub_80DBC00(struct Sprite *sprite) +{ + sprite->oam.affineMode = 1; + sprite->affineAnims = gUnknown_083DA888; + sprite->data[0] = 0; + InitSpriteAffineAnim(sprite); + sprite->callback = sub_80DBC34; +} + +static void sub_80DBC34(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (sprite->affineAnimEnded) + { + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = 0; + sprite->data[1] = 18; + sprite->data[0]++; + } + break; + case 1: + if (--sprite->data[1] == -1) + { + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_80DBC94(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + sub_80798F4(task, spriteId, &gUnknown_083DA8A4); + task->func = sub_80DBCD0; +} + +static void sub_80DBCD0(u8 taskId) +{ + if (!sub_807992C(&gTasks[taskId])) + { + DestroyAnimVisualTask(taskId); + } +} + +void sub_80DBCFC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + u8 spriteId = GetAnimBankSpriteId(0); + task->data[0] = spriteId; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = GetBankSide(gAnimBankAttacker) != SIDE_PLAYER ? 4 : 8; + + sub_80798F4(task, task->data[0], &gUnknown_083DA8C4); + task->func = sub_80DBD58; +} + +static void sub_80DBD58(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[1]) + { + case 0: + sub_807992C(task); + if (++task->data[2] > 19) + task->data[1]++; + break; + case 1: + if (task->data[3] != 0) + { + gSprites[task->data[0]].pos2.y -= 8; + task->data[3]--; + } + else + { + gSprites[task->data[0]].invisible = 1; + gSprites[task->data[0]].pos1.x = 272; + sub_8078F40(task->data[0]); + DestroyAnimVisualTask(taskId); + } + break; + } +} + +void sub_80DBE00(u8 taskId) +{ + u16 var0, var1; + + struct Task *task = &gTasks[taskId]; + + task->data[3] = 16; + task->data[4] = 0; + task->data[13] = GetBankPosition(gAnimBankAttacker, 2); + task->data[14] = GetBankPosition(gAnimBankAttacker, 3); + + var0 = sub_807A100(gAnimBankAttacker, 1) / 3; + var1 = sub_807A100(gAnimBankAttacker, 0) / 3; + task->data[12] = var0 > var1 ? var0 : var1; + + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x10; + + task->func = sub_80DBE98; +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 11a71155d..b84c431f7 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1970,7 +1970,7 @@ void sub_807A0F4(struct Sprite *sprite) DestroySpriteAndFreeResources(sprite); } -int sub_807A100(u8 slot, u8 a2) +s16 sub_807A100(u8 slot, u8 a2) { u16 species; u32 personality; -- cgit v1.2.3 From 2d89da39c172c80a8d1ca6ad63e16a8d8e29d39d Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 31 Jan 2018 20:59:31 -0800 Subject: More psychic.s decompilation --- src/battle/anim/psychic.c | 254 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 253 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 19bfdfdb6..a00b0ba3a 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -3,6 +3,7 @@ #include "battle_anim.h" #include "palette.h" #include "rom_8077ABC.h" +#include "scanline_effect.h" #include "sound.h" #include "task.h" #include "trig.h" @@ -18,6 +19,8 @@ extern u8 gObjectBankIDs[]; extern const union AffineAnimCmd *const gUnknown_083DA888[]; extern struct AffineAnimFrameCmd gUnknown_083DA8A4; extern struct AffineAnimFrameCmd gUnknown_083DA8C4; +extern const struct SpriteTemplate gSpriteTemplate_83DA8DC; +extern const struct SpriteTemplate gSpriteTemplate_83DA9AC; static void sub_80DB88C(struct Sprite *sprite); static void sub_80DB8C0(struct Sprite *sprite); @@ -27,7 +30,9 @@ static void sub_80DBC00(struct Sprite *sprite); static void sub_80DBC34(struct Sprite *sprite); static void sub_80DBCD0(u8 taskId); static void sub_80DBD58(u8 taskId); -void sub_80DBE98(u8 taskId); +static void sub_80DBE98(u8 taskId); +static void sub_80DC1FC(u8 taskId); +void sub_80DC3F4(u8 taskId); void sub_80DB74C(struct Sprite *sprite) @@ -354,3 +359,250 @@ void sub_80DBE00(u8 taskId) task->func = sub_80DBE98; } + +static void sub_80DBE98(u8 taskId) +{ + u16 i; + u8 spriteId; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 8) + { + task->data[1] = 0; + spriteId = CreateSprite(&gSpriteTemplate_83DA8DC, task->data[13], task->data[14], 0); + task->data[task->data[2] + 8] = spriteId; + + if (spriteId != 64) + { + switch (task->data[2]) + { + case 0: + gSprites[spriteId].pos2.x = task->data[12]; + gSprites[spriteId].pos2.y = -task->data[12]; + break; + case 1: + gSprites[spriteId].pos2.x = -task->data[12]; + gSprites[spriteId].pos2.y = task->data[12]; + break; + case 2: + gSprites[spriteId].pos2.x = task->data[12]; + gSprites[spriteId].pos2.y = task->data[12]; + break; + case 3: + gSprites[spriteId].pos2.x = -task->data[12]; + gSprites[spriteId].pos2.y = -task->data[12]; + break; + } + } + + if (++task->data[2] == 5) + task->data[0]++; + } + break; + case 1: + if (task->data[1] & 1) + task->data[3]--; + else + task->data[4]++; + + REG_BLDALPHA = (task->data[4] << 8) | task->data[3]; + + if (++task->data[1] == 32) + { + for (i = 8; i < 13; i++) + { + if (task->data[i] != 64) + DestroySprite(&gSprites[task->data[i]]); + } + + task->data[0]++; + } + break; + case 2: + task->data[0]++; + break; + case 3: + REG_BLDALPHA = 0; + REG_BLDCNT = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_80DC020(struct Sprite *sprite) +{ + if (sprite->data[1] > sprite->data[0] - 10) + sprite->invisible = sprite->data[1] & 1; + + if (sprite->data[1] == sprite->data[0]) + DestroyAnimSprite(sprite); + + sprite->data[1]++; +} + +void sub_80DC068(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3); + } + + sprite->data[0] = gBattleAnimArgs[1]; + sprite->callback = sub_80DC020; +} + +void sub_80DC0B0(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (IsContest()) + { + if (gBattleAnimArgs[0] == 1) + { + task->data[10] = -10; + task->data[11] = sub_807A100(gAnimBankTarget, 5) - 8; + task->data[12] = sub_807A100(gAnimBankTarget, 2) + 8; + task->data[13] = sub_807A100(gAnimBankAttacker, 5) - 8; + task->data[14] = sub_807A100(gAnimBankAttacker, 2) + 8; + } + else + { + task->data[10] = 10; + task->data[11] = sub_807A100(gAnimBankAttacker, 4) + 8; + task->data[12] = sub_807A100(gAnimBankAttacker, 3) - 8; + task->data[13] = sub_807A100(gAnimBankTarget, 4) + 8; + task->data[14] = sub_807A100(gAnimBankTarget, 3) - 8; + } + } + else + { + if (gBattleAnimArgs[0] == 1) + { + task->data[10] = -10; + task->data[11] = sub_807A100(gAnimBankTarget, 4) + 8; + task->data[12] = sub_807A100(gAnimBankTarget, 2) + 8; + task->data[13] = sub_807A100(gAnimBankAttacker, 4) + 8; + task->data[14] = sub_807A100(gAnimBankAttacker, 2) + 8; + } + else + { + task->data[10] = 10; + task->data[11] = sub_807A100(gAnimBankAttacker, 5) - 8; + task->data[12] = sub_807A100(gAnimBankAttacker, 3) - 8; + task->data[13] = sub_807A100(gAnimBankTarget, 5) - 8; + task->data[14] = sub_807A100(gAnimBankTarget, 3) - 8; + } + } + + task->data[1] = 6; + task->func = sub_80DC1FC; +} + +static void sub_80DC1FC(u8 taskId) +{ + u8 spriteId; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 6) + { + task->data[1] = 0; + spriteId = CreateSprite(&gSpriteTemplate_83DA9AC, task->data[11], task->data[12], 0); + if (spriteId != 64) + { + gSprites[spriteId].data[0] = 16; + gSprites[spriteId].data[2] = task->data[13]; + gSprites[spriteId].data[4] = task->data[14]; + gSprites[spriteId].data[5] = task->data[10]; + + sub_80786EC(&gSprites[spriteId]); + StartSpriteAffineAnim(&gSprites[spriteId], task->data[2] & 3); + } + + if (++task->data[2] == 12) + task->data[0]++; + } + break; + case 1: + if (++task->data[1] > 17) + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80DC2B0(struct Sprite *sprite) +{ + if (sub_8078718(sprite)) + { + FreeOamMatrix(sprite->oam.matrixNum); + DestroySprite(sprite); + } +} + +void sub_80DC2D4(u8 taskId) +{ + s16 i; + u8 var1; + struct ScanlineEffectParams scanlineParams; + struct Task *task = &gTasks[taskId]; + + var1 = sub_8077FC0(gAnimBankTarget); + task->data[14] = var1 - 32; + + switch (gBattleAnimArgs[0]) + { + case 0: + task->data[11] = 2; + task->data[12] = 5; + task->data[13] = 64; + task->data[15] = var1 + 32; + break; + case 1: + task->data[11] = 2; + task->data[12] = 5; + task->data[13] = 192; + task->data[15] = var1 + 32; + break; + case 2: + task->data[11] = 4; + task->data[12] = 4; + task->data[13] = 0; + task->data[15] = var1 + 32; + break; + } + + if (task->data[14] < 0) + task->data[14] = 0; + + if (GetBankIdentity_permutated(gAnimBankTarget) == 1) + { + task->data[10] = gBattle_BG1_X; + scanlineParams.dmaDest = ®_BG1HOFS; + } + else + { + task->data[10] = gBattle_BG2_X; + scanlineParams.dmaDest = ®_BG2HOFS; + } + + i = task->data[14]; + while (i <= task->data[14] + 64) + { + gScanlineEffectRegBuffers[0][i] = task->data[10]; + gScanlineEffectRegBuffers[1][i] = task->data[10]; + i++; + } + + scanlineParams.dmaControl = 0XA2600001; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); + + task->func = sub_80DC3F4; +} -- cgit v1.2.3 From 513d85e2df9cdb288df6345107130c4bd144148d Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 1 Feb 2018 12:20:37 -0800 Subject: Finish decompiling psychic.s --- src/battle/anim/psychic.c | 294 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 293 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index a00b0ba3a..6617183cb 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -32,7 +32,8 @@ static void sub_80DBCD0(u8 taskId); static void sub_80DBD58(u8 taskId); static void sub_80DBE98(u8 taskId); static void sub_80DC1FC(u8 taskId); -void sub_80DC3F4(u8 taskId); +static void sub_80DC3F4(u8 taskId); +void sub_80DC5F4(u8 taskId); void sub_80DB74C(struct Sprite *sprite) @@ -606,3 +607,294 @@ void sub_80DC2D4(u8 taskId) task->func = sub_80DC3F4; } + +static void sub_80DC3F4(u8 taskId) +{ + s16 sineIndex, i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + sineIndex = task->data[13]; + i = task->data[14]; + while (i <= task->data[15]) + { + s16 var2 = (gSineTable[sineIndex] >> task->data[12]); + if (var2 > 0) + { + var2 += (task->data[1] & 3); + } + else if (var2 < 0) + { + var2 -= (task->data[1] & 3); + } + + gScanlineEffectRegBuffers[0][i] = task->data[10] + var2; + gScanlineEffectRegBuffers[1][i] = task->data[10] + var2; + + sineIndex += task->data[11]; + i++; + } + + if (++task->data[1] > 23) + { + task->data[0]++; + } + break; + case 1: + gScanlineEffect.state = 3; + task->data[0]++; + break; + case 2: + DestroyAnimVisualTask(taskId); + break; + } +} + +#ifdef NONMATCHING +void sub_80DC4F4(u8 taskId) +{ + s16 spriteId; + u8 matrixNum; + register u8 matrixNum2 asm("r6"); + struct Task *task = &gTasks[taskId]; + + matrixNum = AllocOamMatrix(); + matrixNum2 = matrixNum; + if (matrixNum2 == 0xFF) + { + DestroyAnimVisualTask(taskId); + return; + } + + spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(gBattleAnimArgs[0]); + if (spriteId < 0) + { + FreeOamMatrix(matrixNum); + DestroyAnimVisualTask(taskId); + return; + } + + gSprites[spriteId].callback = SpriteCallbackDummy; + gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE; + gSprites[spriteId].oam.matrixNum = matrixNum2; + gSprites[spriteId].affineAnimPaused = 1; + gSprites[spriteId].subpriority++; + obj_id_set_rotscale(spriteId, 256, 256, 0); + CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode); + + task->data[13] = GetAnimBankSpriteId(gBattleAnimArgs[0]); + task->data[14] = matrixNum; + task->data[15] = spriteId; + task->func = sub_80DC5F4; +} +#else +__attribute__((naked)) +void sub_80DC4F4(u8 taskId) +{ + 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\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + mov r8, r4\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + ldr r1, _080DC528 @ =gTasks\n\ + adds r7, r0, r1\n\ + bl AllocOamMatrix\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + mov r10, r5\n\ + adds r6, r5, 0\n\ + cmp r6, 0xFF\n\ + bne _080DC52C\n\ + adds r0, r4, 0\n\ + bl DestroyAnimVisualTask\n\ + b _080DC5D6\n\ + .align 2, 0\n\ +_080DC528: .4byte gTasks\n\ +_080DC52C:\n\ + ldr r1, _080DC550 @ =gBattleAnimArgs\n\ + ldrb r0, [r1]\n\ + bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + mov r9, r1\n\ + asrs r0, 16\n\ + cmp r0, 0\n\ + bge _080DC554\n\ + adds r0, r5, 0\n\ + bl FreeOamMatrix\n\ + mov r0, r8\n\ + bl DestroyAnimVisualTask\n\ + b _080DC5D6\n\ + .align 2, 0\n\ +_080DC550: .4byte gBattleAnimArgs\n\ +_080DC554:\n\ + ldr r2, _080DC5E4 @ =gSprites\n\ + lsls r4, r0, 4\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + adds r0, r2, 0\n\ + adds r0, 0x1C\n\ + adds r0, r4, r0\n\ + ldr r1, _080DC5E8 @ =SpriteCallbackDummy\n\ + str r1, [r0]\n\ + adds r4, r2\n\ + ldrb r0, [r4, 0x1]\n\ + movs r1, 0x3\n\ + orrs r0, r1\n\ + strb r0, [r4, 0x1]\n\ + movs r0, 0x1F\n\ + ands r6, r0\n\ + lsls r2, r6, 1\n\ + ldrb r1, [r4, 0x3]\n\ + movs r0, 0x3F\n\ + negs r0, r0\n\ + ands r0, r1\n\ + orrs r0, r2\n\ + strb r0, [r4, 0x3]\n\ + adds r2, r4, 0\n\ + adds r2, 0x2C\n\ + ldrb r0, [r2]\n\ + movs r1, 0x80\n\ + orrs r0, r1\n\ + strb r0, [r2]\n\ + adds r1, r4, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + mov r1, r9\n\ + lsls r0, r1, 24\n\ + lsrs r0, 24\n\ + movs r2, 0x80\n\ + lsls r2, 1\n\ + adds r1, r2, 0\n\ + movs r3, 0\n\ + bl obj_id_set_rotscale\n\ + ldrb r3, [r4, 0x1]\n\ + lsrs r1, r3, 6\n\ + ldrb r2, [r4, 0x3]\n\ + lsrs r2, 6\n\ + lsls r3, 30\n\ + lsrs r3, 30\n\ + adds r0, r4, 0\n\ + bl CalcCenterToCornerVec\n\ + ldr r1, _080DC5EC @ =gBattleAnimArgs\n\ + ldrb r0, [r1]\n\ + bl GetAnimBankSpriteId\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + strh r0, [r7, 0x22]\n\ + mov r0, r10\n\ + strh r0, [r7, 0x24]\n\ + mov r1, r9\n\ + strh r1, [r7, 0x26]\n\ + ldr r0, _080DC5F0 @ =sub_80DC5F4\n\ + str r0, [r7]\n\ +_080DC5D6:\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\ + .align 2, 0\n\ +_080DC5E4: .4byte gSprites\n\ +_080DC5E8: .4byte SpriteCallbackDummy\n\ +_080DC5EC: .4byte gBattleAnimArgs\n\ +_080DC5F0: .4byte sub_80DC5F4\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80DC5F4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[1] += 4; + task->data[2] = 256 - (gSineTable[task->data[1]] >> 1); + obj_id_set_rotscale(task->data[15], task->data[2], task->data[2], 0); + sub_8079AB8(task->data[15], task->data[13]); + if (task->data[1] == 48) + task->data[0]++; + break; + case 1: + task->data[1] -= 4; + task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);; + obj_id_set_rotscale(task->data[15], task->data[2], task->data[2], 0); + sub_8079AB8(task->data[15], task->data[13]); + if (task->data[1] == 0) + task->data[0]++; + break; + case 2: + obj_delete_but_dont_free_vram(&gSprites[task->data[15]]); + task->data[0]++; + break; + case 3: + FreeOamMatrix(task->data[14]); + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80DC700(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0); + sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1); + + if (IsContest()) + sprite->pos1.y += 12; + + sprite->data[1] = 8; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1]; + sprite->data[0]++; + break; + case 1: + if (sprite->affineAnimEnded) + { + PlaySE12WithPanning(SE_W100, BattleAnimAdjustPanning(-64)); + ChangeSpriteAffineAnim(sprite, 1); + sprite->data[0]++; + } + break; + case 2: + if (sprite->data[2]++ > 1) + { + sprite->data[2] = 0; + sprite->data[1]--; + REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1]; + + if (sprite->data[1] == 0) + { + sprite->data[0]++; + sprite->invisible = 1; + } + } + + sprite->data[3] += 896; + sprite->pos2.y -= sprite->data[3] >> 8; + sprite->data[3] &= 0xFF; + break; + case 3: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroyAnimSprite(sprite); + break; + } +} -- cgit v1.2.3 From 07a44e30ff530d5018f870aba4c5710d1e83059b Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 3 Feb 2018 11:58:21 -0800 Subject: Decompile more of dark.s --- src/battle/anim/dark.c | 440 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 429 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 8ceb00298..14988ac71 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -1,22 +1,36 @@ #include "global.h" -#include "rom_8077ABC.h" -#include "trig.h" #include "battle_anim.h" -#include "sound.h" +#include "palette.h" +#include "rom_8077ABC.h" #include "scanline_effect.h" - -void sub_80DFE90(struct Sprite *sprite); - -void sub_80DFC9C(u8 taskId); -void sub_80DFD58(u8 taskId); +#include "sound.h" +#include "trig.h" +#include "constants/battle_constants.h" extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u8 gObjectBankIDs[]; +extern u16 gBattle_BG1_X; +extern u16 gBattle_BG1_Y; +extern u16 gBattle_BG2_X; +extern u16 gBattle_BG2_Y; +extern u16 gBattle_WIN0H; +extern u16 gBattle_WIN0V; + +static void sub_80DFE90(struct Sprite *sprite); +static void sub_80DFC9C(u8 taskId); +static void sub_80DFD58(u8 taskId); +static void sub_80DFF58(struct Sprite *sprite); +static void sub_80DFF98(struct Sprite *sprite); +static void sub_80E00D0(struct Sprite *sprite); +static void sub_80E02A4(u8 taskId); +static void sub_80E0620(u8 taskId); +void sub_80E08CC(u8 a); +void sub_80E079C(struct Task *task); -// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage +// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage void sub_80DFC24(u8 taskId) { int bank; @@ -31,7 +45,7 @@ void sub_80DFC24(u8 taskId) gTasks[taskId].func = sub_80DFC9C; } -void sub_80DFC9C(u8 taskId) +static void sub_80DFC9C(u8 taskId) { u8 r2 = gTasks[taskId].data[1] >> 8; u8 r1 = gTasks[taskId].data[1]; @@ -111,7 +125,7 @@ void sub_80DFE14(struct Sprite *sprite) sub_80DFE90(sprite); } -void sub_80DFE90(struct Sprite *sprite) +static void sub_80DFE90(struct Sprite *sprite) { sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; @@ -136,3 +150,407 @@ void sub_80DFE90(struct Sprite *sprite) if (--sprite->data[0] == 0) DestroyAnimSprite(sprite); } + +void sub_80DFF1C(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); + + sprite->data[0] = gBattleAnimArgs[3]; + sprite->data[1] = gBattleAnimArgs[4]; + sprite->data[2] = gBattleAnimArgs[5]; + sprite->callback = sub_80DFF58; +} + +static void sub_80DFF58(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[0]; + sprite->data[5] += sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = sprite->data[5] >> 8; + + if (++sprite->data[3] == sprite->data[2]) + sprite->callback = sub_80DFF98; +} + +static void sub_80DFF98(struct Sprite *sprite) +{ + sprite->data[4] -= sprite->data[0]; + sprite->data[5] -= sprite->data[1]; + sprite->pos2.x = sprite->data[4] >> 8; + sprite->pos2.y = sprite->data[5] >> 8; + + if (--sprite->data[3] == 0) + move_anim_8074EE0(sprite); +} + +void sub_80DFFD0(struct Sprite *sprite) +{ + u8 bank; + s8 xOffset; + + if (gBattleAnimArgs[0] == 0) + bank = gAnimBankAttacker; + else + bank = gAnimBankTarget; + + xOffset = 20; + sprite->oam.tileNum += 4; + + switch (gBattleAnimArgs[1]) + { + case 0: + sprite->pos1.x = sub_807A100(bank, 5) - 8; + sprite->pos1.y = sub_807A100(bank, 2) + 8; + break; + case 1: + sprite->pos1.x = sub_807A100(bank, 5) - 14; + sprite->pos1.y = sub_807A100(bank, 2) + 16; + break; + case 2: + sprite->pos1.x = sub_807A100(bank, 4) + 8; + sprite->pos1.y = sub_807A100(bank, 2) + 8; + StartSpriteAffineAnim(sprite, 1); + xOffset = -20; + break; + case 3: + sprite->pos1.x = sub_807A100(bank, 4) + 14; + sprite->pos1.y = sub_807A100(bank, 2) + 16; + StartSpriteAffineAnim(sprite, 1); + xOffset = -20; + break; + } + + sprite->data[0] = 32; + sprite->data[2] = sprite->pos1.x + xOffset; + sprite->data[4] = sprite->pos1.y + 12; + sprite->data[5] = -12; + + sub_80786EC(sprite); + sprite->callback = sub_80E00D0; +} + +static void sub_80E00D0(struct Sprite *sprite) +{ + if (sub_8078718(sprite)) + move_anim_8074EE0(sprite); +} + +void sub_80E00EC(u8 taskId) +{ + struct ScanlineEffectParams scanlineParams; + struct Struct_sub_8078914 subStruct; + u16 i; + u8 pos; + int var0; + struct Task *task = &gTasks[taskId]; + + task->data[7] = GetBankPosition(gAnimBankAttacker, 1) + 31; + task->data[6] = sub_807A100(gAnimBankAttacker, 2) - 7; + task->data[5] = task->data[7]; + task->data[4] = task->data[6]; + task->data[13] = (task->data[7] - task->data[6]) << 8; + + pos = GetBankPosition(gAnimBankAttacker, 0); + task->data[14] = pos - 32; + task->data[15] = pos + 32; + + if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER) + task->data[8] = -12; + else + task->data[8] = -64; + + task->data[3] = GetBankIdentity_permutated(gAnimBankAttacker); + if (task->data[3] == 1) + { + sub_8078914(&subStruct); + task->data[10] = gBattle_BG1_Y; + REG_BLDCNT = 0x3F42; + FillPalette(0, subStruct.field_8 << 4, 32); + scanlineParams.dmaDest = ®_BG1VOFS; + var0 = 2; + + if (!IsContest()) + gBattle_BG2_X += 240; + } + else + { + task->data[10] = gBattle_BG2_Y; + REG_BLDCNT = 0x3F44; + FillPalette(0, 144, 32); + scanlineParams.dmaDest = ®_BG2VOFS; + var0 = 4; + + if (!IsContest()) + gBattle_BG1_X += 240; + } + + scanlineParams.dmaControl = 0xA2600001; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + task->data[11] = 0; + task->data[12] = 16; + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + + sub_80E08CC(3); + + for (i = 0; i < 112; i++) + { + gScanlineEffectRegBuffers[0][i] = task->data[10]; + gScanlineEffectRegBuffers[1][i] = task->data[10]; + } + + ScanlineEffect_SetParams(scanlineParams); + + REG_WINOUT = 0x3F00 | (var0 ^ 0x3F); + REG_WININ = 0x3F3F; + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + gBattle_WIN0V = 160; + + task->func = sub_80E02A4; +} + +static void sub_80E02A4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if (++task->data[2] & 1) + { + if (task->data[11] != 12) + task->data[11]++; + } + else + { + if (task->data[12] != 8) + task->data[12]--; + } + + REG_BLDALPHA = (task->data[12] << 8) | task->data[11]; + + if (task->data[11] == 12 && task->data[12] == 8) + task->data[0]++; + } + break; + case 1: + task->data[4] -= 8; + sub_80E079C(task); + + if (task->data[4] < task->data[8]) + task->data[0]++; + break; + case 2: + task->data[4] -= 8; + sub_80E079C(task); + task->data[14] += 4; + task->data[15] -= 4; + + if (task->data[14] >= task->data[15]) + task->data[14] = task->data[15]; + + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + + if (task->data[14] == task->data[15]) + task->data[0]++; + break; + case 3: + gScanlineEffect.state = 3; + task->data[0]++; + break; + case 4: + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_80E03BC(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + struct ScanlineEffectParams scanlineParams; + u8 pos; + u16 i; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (IsContest() == TRUE) + { + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + DestroyAnimVisualTask(taskId); + } + else + { + task->data[3] = GetBankIdentity_permutated(gAnimBankTarget); + if (task->data[3] == 1) + { + REG_BLDCNT = 0x3F42; + gBattle_BG2_X += 240; + } + else + { + REG_BLDCNT = 0x3F44; + gBattle_BG1_X += 240; + } + + task->data[0]++; + } + break; + case 1: + if (task->data[3] == 1) + { + sub_8078914(&subStruct); + task->data[10] = gBattle_BG1_Y; + FillPalette(0, subStruct.field_8 << 4, 32); + } + else + { + task->data[10] = gBattle_BG2_Y; + FillPalette(0, 144, 32); + } + + sub_80E08CC(3); + task->data[0]++; + break; + case 2: + task->data[7] = GetBankPosition(gAnimBankTarget, 1) + 31; + task->data[6] = sub_807A100(gAnimBankTarget, 2) - 7; + task->data[13] = (task->data[7] - task->data[6]) << 8; + pos = GetBankPosition(gAnimBankTarget, 0); + task->data[14] = pos - 4; + task->data[15] = pos + 4; + + if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER) + task->data[8] = -12; + else + task->data[8] = -64; + + task->data[4] = task->data[8]; + task->data[5] = task->data[8]; + task->data[11] = 12; + task->data[12] = 8; + task->data[0]++; + break; + case 3: + if (task->data[3] == 1) + scanlineParams.dmaDest = ®_BG1VOFS; + else + scanlineParams.dmaDest = ®_BG2VOFS; + + for (i = 0; i < 112; i++) + { + gScanlineEffectRegBuffers[0][i] = task->data[10] + (159 - i); + gScanlineEffectRegBuffers[1][i] = task->data[10] + (159 - i); + } + + scanlineParams.dmaControl = 0xA2600001; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; + ScanlineEffect_SetParams(scanlineParams); + task->data[0]++; + break; + case 4: + if (task->data[3] == 1) + REG_WINOUT = 0x3F3D; + else + REG_WINOUT = 0x3F3B; + + REG_WININ = 0x3F3F; + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + gBattle_WIN0V = 160; + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + REG_BLDALPHA = 0x80C; + task->func = sub_80E0620; + break; + } +} + +static void sub_80E0620(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + task->data[5] += 8; + if (task->data[5] >= task->data[7]) + task->data[5] = task->data[7]; + + sub_80E079C(task); + + if (task->data[5] == task->data[7]) + task->data[0]++; + break; + case 1: + if (task->data[15] - task->data[14] < 64) + { + task->data[14] -= 4; + task->data[15] += 4; + } + else + { + task->data[1] = 1; + } + + gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; + task->data[4] += 8; + + if (task->data[4] >= task->data[6]) + task->data[4] = task->data[6]; + + sub_80E079C(task); + + if (task->data[4] == task->data[6] && task->data[1] != 0) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 1) + { + task->data[1] = 0; + if ((++task->data[2] & 1) != 0) + { + if (task->data[11] != 0) + task->data[11]--; + } + else + { + if (task->data[12] < 16) + task->data[12]++; + } + + REG_BLDALPHA = (task->data[12] << 8) | task->data[11]; + + if (task->data[11] == 0 && task->data[12] == 16) + task->data[0]++; + } + break; + case 3: + gScanlineEffect.state = 3; + task->data[0]++; + break; + case 4: + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + DestroyAnimVisualTask(taskId); + break; + } +} -- cgit v1.2.3 From f1f6c7337f4f2f002b456468b0ccc327fc494d02 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 3 Feb 2018 22:15:54 -0600 Subject: get rid of raw addresses in music_player_table.inc --- src/libs/m4a_1.s | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/libs/m4a_1.s b/src/libs/m4a_1.s index be8b44488..8dbcf7efd 100644 --- a/src/libs/m4a_1.s +++ b/src/libs/m4a_1.s @@ -4,7 +4,11 @@ .syntax unified - .lcomm gUnknown_030007B8, 0x770 + .bss + + .global gUnknown_030007B8 +gUnknown_030007B8: + .space 0x770 .text -- cgit v1.2.3 From 338d2b0b1897899a6fa787f8baa4cf392f81b718 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 4 Feb 2018 12:34:18 -0800 Subject: Finish decompiling dark.s except one function --- src/battle/anim/dark.c | 456 ++++++++++++++++++++++++++++++++++++++++++++++++- src/rom_8077ABC.c | 2 +- 2 files changed, 455 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 14988ac71..1c88dc23e 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -1,9 +1,13 @@ #include "global.h" #include "battle_anim.h" +#include "blend_palette.h" +#include "decompress.h" +#include "ewram.h" #include "palette.h" #include "rom_8077ABC.h" #include "scanline_effect.h" #include "sound.h" +#include "sprite.h" #include "trig.h" #include "constants/battle_constants.h" @@ -17,6 +21,12 @@ extern u16 gBattle_BG2_X; extern u16 gBattle_BG2_Y; extern u16 gBattle_WIN0H; extern u16 gBattle_WIN0V; +extern u16 gBattlePartyID[]; +extern u8 gAnimMoveTurn; + +extern const u8 gUnknown_08D1D574[]; +extern const u8 gUnknown_08D1D410[]; +extern const u16 gUnknown_08D1D54C[]; static void sub_80DFE90(struct Sprite *sprite); static void sub_80DFC9C(u8 taskId); @@ -26,8 +36,9 @@ static void sub_80DFF98(struct Sprite *sprite); static void sub_80E00D0(struct Sprite *sprite); static void sub_80E02A4(u8 taskId); static void sub_80E0620(u8 taskId); -void sub_80E08CC(u8 a); -void sub_80E079C(struct Task *task); +static void sub_80E08CC(u8 priority); +static void sub_80E079C(struct Task *task); +static void sub_80E0CD0(u8 taskId); // used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage @@ -554,3 +565,444 @@ static void sub_80E0620(u8 taskId) break; } } + +// static void sub_80E079C(struct Task *task) +// { +// int var0, var1; +// s16 var2; +// s16 i, j; + +// var2 = task->data[5] - task->data[4]; +// if (var2 != 0) +// { +// var0 = task->data[13] / var2; +// var1 = task->data[6]; + +// for (i = 0; i < task->data[4]; i++) +// { +// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159); +// } + +// for (i = task->data[4]; i <= task->data[5]; i++) +// { +// if (i >= 0) +// { +// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = (var1 - i) + task->data[10]; +// } + +// var1 += var0; +// } + +// for (j = i; j < task->data[7]; j++) +// { +// if (j >= 0) +// { +// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][j] = (task->data[10] + 159) - j; +// } +// } +// } +// else +// { +// for (i = 0; i < 112; i++) +// { +// gScanlineEffectRegBuffers[0][i] = task->data[10] + 159 - i; +// gScanlineEffectRegBuffers[1][i] = task->data[10] + 159 - i; +// } +// } +// } + +__attribute__((naked)) +static void sub_80E079C(struct Task *task) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + adds r6, r0, 0\n\ + ldrh r0, [r6, 0x12]\n\ + ldrh r4, [r6, 0x10]\n\ + subs r0, r4\n\ + lsls r0, 16\n\ + asrs r1, r0, 16\n\ + cmp r1, 0\n\ + beq _080E0890\n\ + movs r2, 0x22\n\ + ldrsh r0, [r6, r2]\n\ + bl __divsi3\n\ + mov r8, r0\n\ + movs r3, 0x14\n\ + ldrsh r0, [r6, r3]\n\ + lsls r5, r0, 8\n\ + lsls r0, r4, 16\n\ + movs r4, 0\n\ + cmp r0, 0\n\ + ble _080E07FC\n\ + ldr r0, _080E0888 @ =gScanlineEffectRegBuffers\n\ + mov r12, r0\n\ + ldr r7, _080E088C @ =gScanlineEffect\n\ +_080E07D0:\n\ + lsls r2, r4, 16\n\ + asrs r2, 16\n\ + lsls r3, r2, 1\n\ + ldrb r1, [r7, 0x14]\n\ + lsls r0, r1, 4\n\ + subs r0, r1\n\ + lsls r0, 7\n\ + adds r3, r0\n\ + add r3, r12\n\ + adds r1, r2, 0\n\ + subs r1, 0x9F\n\ + ldrh r0, [r6, 0x1C]\n\ + subs r0, r1\n\ + strh r0, [r3]\n\ + adds r2, 0x1\n\ + lsls r2, 16\n\ + lsrs r4, r2, 16\n\ + asrs r2, 16\n\ + movs r1, 0x10\n\ + ldrsh r0, [r6, r1]\n\ + cmp r2, r0\n\ + blt _080E07D0\n\ +_080E07FC:\n\ + ldrh r4, [r6, 0x10]\n\ + lsls r3, r4, 16\n\ + asrs r1, r3, 16\n\ + movs r2, 0x12\n\ + ldrsh r0, [r6, r2]\n\ + cmp r1, r0\n\ + bgt _080E0846\n\ + ldr r0, _080E0888 @ =gScanlineEffectRegBuffers\n\ + mov r12, r0\n\ + ldr r7, _080E088C @ =gScanlineEffect\n\ +_080E0810:\n\ + asrs r4, r3, 16\n\ + cmp r4, 0\n\ + blt _080E0832\n\ + asrs r1, r5, 8\n\ + subs r1, r4\n\ + lsls r3, r4, 1\n\ + ldrb r2, [r7, 0x14]\n\ + lsls r0, r2, 4\n\ + subs r0, r2\n\ + lsls r0, 7\n\ + adds r3, r0\n\ + add r3, r12\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + ldrh r2, [r6, 0x1C]\n\ + adds r1, r2\n\ + strh r1, [r3]\n\ +_080E0832:\n\ + add r5, r8\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r3, r4, 16\n\ + asrs r1, r3, 16\n\ + movs r2, 0x12\n\ + ldrsh r0, [r6, r2]\n\ + cmp r1, r0\n\ + ble _080E0810\n\ +_080E0846:\n\ + movs r3, 0x1C\n\ + ldrsh r0, [r6, r3]\n\ + adds r0, 0x9F\n\ + lsls r2, r4, 16\n\ + asrs r1, r2, 16\n\ + subs r5, r0, r1\n\ + movs r3, 0x16\n\ + ldrsh r0, [r6, r3]\n\ + cmp r1, r0\n\ + bge _080E08BE\n\ + ldr r7, _080E0888 @ =gScanlineEffectRegBuffers\n\ + ldr r4, _080E088C @ =gScanlineEffect\n\ +_080E085E:\n\ + asrs r3, r2, 16\n\ + cmp r3, 0\n\ + blt _080E0876\n\ + lsls r2, r3, 1\n\ + ldrb r1, [r4, 0x14]\n\ + lsls r0, r1, 4\n\ + subs r0, r1\n\ + lsls r0, 7\n\ + adds r2, r0\n\ + adds r2, r7\n\ + strh r5, [r2]\n\ + subs r5, 0x1\n\ +_080E0876:\n\ + adds r0, r3, 0x1\n\ + lsls r2, r0, 16\n\ + asrs r1, r2, 16\n\ + movs r3, 0x16\n\ + ldrsh r0, [r6, r3]\n\ + cmp r1, r0\n\ + blt _080E085E\n\ + b _080E08BE\n\ + .align 2, 0\n\ +_080E0888: .4byte gScanlineEffectRegBuffers\n\ +_080E088C: .4byte gScanlineEffect\n\ +_080E0890:\n\ + movs r1, 0x1C\n\ + ldrsh r0, [r6, r1]\n\ + adds r5, r0, 0\n\ + adds r5, 0x9F\n\ + movs r4, 0\n\ + ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers\n\ + movs r2, 0xF0\n\ + lsls r2, 3\n\ + adds r6, r3, r2\n\ +_080E08A2:\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + lsls r2, r0, 1\n\ + adds r1, r2, r3\n\ + strh r5, [r1]\n\ + adds r2, r6\n\ + strh r5, [r2]\n\ + subs r5, 0x1\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x6F\n\ + ble _080E08A2\n\ +_080E08BE:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080E08C8: .4byte gScanlineEffectRegBuffers\n\ + .syntax divided\n"); +} + +static void sub_80E08CC(u8 priority) +{ + u16 i; + + for (i = 0; i < 4; i++) + { + u8 spriteId = GetAnimBankSpriteId(i); + if (spriteId != 0xFF) + gSprites[spriteId].oam.priority = priority; + } +} + +void sub_80E0918(u8 taskId) +{ + u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0; + sub_8076034(gAnimBankAttacker, toBG2); + gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 0; + + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) + { + sub_8076034(gAnimBankAttacker ^ 2, toBG2 ^ 1); + gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].invisible = 0; + } + + DestroyAnimVisualTask(taskId); +} + +void sub_80E09C4(u8 taskId) +{ + u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0; + sub_8076464(toBG2); + + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2)) + sub_8076464(toBG2 ^ 1); + + DestroyAnimVisualTask(taskId); +} + +void sub_80E0A10(struct Sprite *sprite) +{ + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->callback = sub_8078600; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); +} + +void sub_80E0A4C(u8 taskId) +{ + u16 species; + u8 spriteId; + u8 newSpriteId; + u16 paletteNum; + struct Struct_sub_8078914 subStruct; + int var0 = 0; + + gBattle_WIN0H = var0; + gBattle_WIN0V = var0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3D; + REG_DISPCNT |= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0x3F42; + REG_BLDALPHA = 0xC08; + REG_BG1CNT_BITFIELD.priority = 0; + REG_BG1CNT_BITFIELD.screenSize = 0; + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 1; + + if (IsDoubleBattle() && !IsContest()) + { + if (GetBankIdentity(gAnimBankAttacker) == 3 || GetBankIdentity(gAnimBankAttacker) == 0) + { + if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE) + { + gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].oam.priority--; + REG_BG1CNT_BITFIELD.priority = 1; + var0 = 1; + } + } + } + + if (IsContest()) + { + species = EWRAM_19348; + } + else + { + if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER) + species = GetMonData(&gEnemyParty[gBattlePartyID[gAnimBankAttacker]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gBattlePartyID[gAnimBankAttacker]], MON_DATA_SPECIES); + } + + spriteId = GetAnimBankSpriteId(0); + newSpriteId = sub_807A4A0(gAnimBankAttacker, spriteId, species); + + sub_8078914(&subStruct); + DmaClear32(3, subStruct.field_4, 0x1000); + LZDecompressVram(&gUnknown_08D1D574, subStruct.field_4); + LZDecompressVram(&gUnknown_08D1D410, subStruct.field_0); + LoadCompressedPalette(&gUnknown_08D1D54C, subStruct.field_8 << 4, 32); + + gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96; + gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32; + paletteNum = 16 + gSprites[spriteId].oam.paletteNum; + + if (gBattleAnimArgs[1] == 0) + sub_8079108(paletteNum, FALSE); + else + BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]); + + gTasks[taskId].data[0] = newSpriteId; + gTasks[taskId].data[1] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + gTasks[taskId].data[6] = var0; + gTasks[taskId].func = sub_80E0CD0; +} + +static void sub_80E0CD0(u8 taskId) +{ + struct Struct_sub_8078914 subStruct; + u16 paletteNum; + u8 spriteId; + u8 taskIdCopy = taskId; + + gTasks[taskIdCopy].data[10] += 4; + gBattle_BG1_X -= 4; + + if (gTasks[taskIdCopy].data[10] == 128) + { + gTasks[taskIdCopy].data[10] = 0; + gBattle_BG1_X += 128; + + if (++gTasks[taskIdCopy].data[11] == 2) + { + sub_8076464(0); + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WININ = 0x3F3F; + REG_WINOUT = 0x3F3F; + + if (!IsContest()) + REG_BG1CNT_BITFIELD.charBaseBlock = 0; + + REG_DISPCNT ^= DISPCNT_OBJWIN_ON; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + + spriteId = GetAnimBankSpriteId(0); + paletteNum = 16 + gSprites[spriteId].oam.paletteNum; + if (gTasks[taskIdCopy].data[1] == 0) + sub_8079108(paletteNum, 1); + + DestroySprite(&gSprites[gTasks[taskIdCopy].data[0]]); + sub_8078914(&subStruct); + DmaClear32(3, subStruct.field_4, 0x800); + + if (gTasks[taskIdCopy].data[6] == 1) + { + gSprites[gObjectBankIDs[gAnimBankAttacker ^ 2]].oam.priority++; + } + + DestroyAnimVisualTask(taskIdCopy); + } + } +} + +void sub_80E0E24(u8 taskId) +{ + u8 spriteId; + u8 bank; + bool8 calcSpriteId = FALSE; + u8 identity = 0; + + switch (gBattleAnimArgs[0]) + { + case 0: + case 1: + case 2: + case 3: + spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + break; + case 4: + identity = IDENTITY_PLAYER_MON1; + calcSpriteId = TRUE; + break; + case 5: + identity = IDENTITY_PLAYER_MON2; + calcSpriteId = TRUE; + break; + case 6: + identity = IDENTITY_OPPONENT_MON1; + calcSpriteId = TRUE; + break; + case 7: + identity = IDENTITY_OPPONENT_MON2; + calcSpriteId = TRUE; + break; + default: + spriteId = 0xFF; + break; + } + + if (calcSpriteId) + { + bank = GetBankByIdentity(identity); + if (IsAnimBankSpriteVisible(bank)) + spriteId = gObjectBankIDs[bank]; + else + spriteId = 0xFF; + } + + if (spriteId != 0xFF) + sub_8079108(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]); + + DestroyAnimVisualTask(taskId); +} + +void sub_80E0EE8(u8 taskId) +{ + if (gAnimMoveTurn < 2) + gBattleAnimArgs[7] = 0; + + if (gAnimMoveTurn == 2) + gBattleAnimArgs[7] = 1; + + DestroyAnimVisualTask(taskId); +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index b84c431f7..4a580eb41 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -2138,7 +2138,7 @@ void sub_807A3FC(u8 slot, bool8 a2, s16 *a3, s16 *a4) *a4 = (v4 + v6) / 2; } -u8 sub_807A4A0(int a1, u8 sprite, int a3) +u8 sub_807A4A0(int bank, u8 sprite, int species) { u8 new_sprite = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); gSprites[new_sprite] = gSprites[sprite]; -- cgit v1.2.3 From 5563c78798f95130cccf7d5a5c17b02cfb06442b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 6 Feb 2018 18:50:20 -0600 Subject: decompile debug_sub_8010CAC --- src/battle/battle_2.c | 1317 ++++++++++++------------------------------------- 1 file changed, 327 insertions(+), 990 deletions(-) (limited to 'src') diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index d3ddc5960..b09d9ad8d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -1363,19 +1363,25 @@ extern u8 gUnknown_Debug_2023B62[]; extern const u8 Str_821F7BD[]; extern const u8 Str_821F7DA[]; -void debug_sub_8012878(void); -void debug_sub_8012D10(u8); void debug_sub_8010818(void); void debug_sub_80108B8(void); void debug_sub_8010CAC(void); +void debug_sub_8011498(void); void debug_sub_801174C(void); void debug_sub_8011D40(void); +void debug_sub_8011E5C(void); +void debug_sub_8011E74(void); void debug_sub_8011EA0(u8); void debug_sub_8012294(void); void debug_sub_80123D8(u8); void debug_sub_8012540(void); void debug_nullsub_3(void); void debug_sub_80125A0(void); +void debug_sub_80125E4(void); +void debug_sub_8012628(void); +void debug_sub_8012688(void); +void debug_sub_8012878(void); +void debug_sub_8012D10(u8); u32 debug_sub_8013294(u8, void *, u32); void debug_sub_80132C8(u8, void *, u32); @@ -1389,7 +1395,7 @@ extern u8 gUnknown_Debug_030043A4; extern u8 gUnknown_Debug_030043A8; extern u8 gBattleBuffersTransferData[]; -extern const s16 gUnknown_Debug_821F424[][5]; +extern const u16 gUnknown_Debug_821F424[][5]; extern const u16 gUnknown_Debug_821F56C[][5]; extern const u32 gUnknown_Debug_821F798[][4]; @@ -1579,994 +1585,325 @@ void debug_sub_8010B80(u8 a) = r12 * 10 + r7; } -__attribute__((naked)) -void debug_sub_8010CAC() +void debug_sub_8010CAC(void) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add sp, sp, #0xfffffff0\n" - " ldr r4, ._553 @ gMain\n" - " ldrh r1, [r4, #0x28]\n" - " mov r0, #0x81\n" - " lsl r0, r0, #0x2\n" - " cmp r1, r0\n" - " bne ._543 @cond_branch\n" - " bl DoSoftReset\n" - "._543:\n" - " ldrh r0, [r4, #0x2a]\n" - " cmp r0, #0x4\n" - " beq ._544 @cond_branch\n" - " b ._559\n" - "._544:\n" - " ldr r0, ._553 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " mov r8, r0\n" - " cmp r1, #0x5\n" - " bhi ._546 @cond_branch\n" - " ldr r0, ._553 + 8 @ gUnknown_Debug_030043A8\n" - " mov r1, #0x0\n" - " strb r1, [r0]\n" - " bl debug_sub_8012628\n" - " ldr r0, ._553 + 12 @ debug_sub_8011498\n" - " bl SetMainCallback2\n" - "._546:\n" - " ldr r0, ._553 + 16 @ gUnknown_Debug_030043A0\n" - " ldrb r3, [r0]\n" - " cmp r3, #0\n" - " bne ._555 @cond_branch\n" - " mov r1, r8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x6\n" - " bne ._555 @cond_branch\n" - " ldr r0, ._553 + 20 @ debug_sub_80108B8\n" - " str r0, [r4, #0x8]\n" - " ldr r4, ._553 + 24 @ gPlayerParty\n" - " ldr r0, ._553 + 28 @ gUnknown_Debug_2023A76\n" - " ldrh r1, [r0]\n" - " ldrb r2, [r0, #0x2]\n" - " str r3, [sp]\n" - " str r3, [sp, #0x4]\n" - " str r3, [sp, #0x8]\n" - " str r3, [sp, #0xc]\n" - " add r0, r4, #0\n" - " mov r3, #0x20\n" - " bl CreateMon\n" - " mov r5, #0x0\n" - " add r6, r4, #0\n" - "._549:\n" - " add r1, r5, #0\n" - " add r1, r1, #0xd\n" - " lsl r4, r5, #0x1\n" - " ldr r0, ._553 + 32 @ gUnknown_Debug_2023B02\n" - " add r4, r4, r0\n" - " add r0, r6, #0\n" - " add r2, r4, #0\n" - " bl SetMonData\n" - " add r1, r5, #0\n" - " add r1, r1, #0x11\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r2, r0, #0x1\n" - " add r2, r2, r0\n" - " lsl r2, r2, #0x2\n" - " ldr r0, ._553 + 36 @ gBattleMoves\n" - " add r2, r2, r0\n" - " add r0, r6, #0\n" - " bl SetMonData\n" - " add r5, r5, #0x1\n" - " cmp r5, #0x3\n" - " ble ._549 @cond_branch\n" - " ldr r2, ._553 + 28 @ gUnknown_Debug_2023A76\n" - " mov r4, #0x3c\n" - " ldsh r0, [r2, r4]\n" - " cmp r0, #0x1\n" - " beq ._550 @cond_branch\n" - " cmp r0, #0x2\n" - " beq ._551 @cond_branch\n" - " b ._555\n" - "._554:\n" - " .align 2, 0\n" - "._553:\n" - " .word gMain\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_030043A8\n" - " .word debug_sub_8011498+1\n" - " .word gUnknown_Debug_030043A0\n" - " .word debug_sub_80108B8+1\n" - " .word gPlayerParty\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_2023B02\n" - " .word gBattleMoves+0x4\n" - "._550:\n" - " ldr r1, ._556 @ gCB2_AfterEvolution\n" - " ldr r0, ._556 + 4 @ debug_sub_80108B8\n" - " str r0, [r1]\n" - " ldr r0, ._556 + 8 @ gPlayerParty\n" - " ldrh r1, [r2, #0xa]\n" - " mov r2, #0x1\n" - " mov r3, #0x0\n" - " bl EvolutionScene\n" - " b ._555\n" - "._557:\n" - " .align 2, 0\n" - "._556:\n" - " .word gCB2_AfterEvolution\n" - " .word debug_sub_80108B8+1\n" - " .word gPlayerParty\n" - "._551:\n" - " bl debug_sub_8012688\n" - "._555:\n" - " ldr r0, ._565 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x1\n" - " bne ._559 @cond_branch\n" - " ldr r0, ._565 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x6\n" - " bne ._559 @cond_branch\n" - " ldr r3, ._565 + 8 @ gSaveBlock2\n" - " ldrb r2, [r3, #0x15]\n" - " lsl r0, r2, #0x1d\n" - " lsr r5, r0, #0x1f\n" - " lsl r0, r2, #0x1f\n" - " lsr r0, r0, #0x1f\n" - " lsl r0, r0, #0x1\n" - " orr r5, r5, r0\n" - " add r5, r5, #0x1\n" - " cmp r5, #0x4\n" - " bne ._560 @cond_branch\n" - " mov r5, #0x0\n" - "._560:\n" - " mov r0, #0x1\n" - " add r1, r5, #0\n" - " and r1, r1, r0\n" - " lsl r1, r1, #0x2\n" - " mov r0, #0x5\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " mov r1, #0x2\n" - " and r5, r5, r1\n" - " lsr r2, r5, #0x1\n" - " sub r1, r1, #0x4\n" - " and r0, r0, r1\n" - " orr r0, r0, r2\n" - " strb r0, [r3, #0x15]\n" - " lsl r0, r0, #0x1f\n" - " lsr r0, r0, #0x1f\n" - " bl SetPokemonCryStereo\n" - " bl debug_nullsub_3\n" - "._559:\n" - " ldr r4, ._565 + 12 @ gMain\n" - " ldrh r0, [r4, #0x2a]\n" - " cmp r0, #0x8\n" - " bne ._561 @cond_branch\n" - " bl debug_sub_801174C\n" - "._561:\n" - " ldrh r0, [r4, #0x2a]\n" - " cmp r0, #0x40\n" - " bne ._562 @cond_branch\n" - " bl debug_sub_80125E4\n" - " ldr r1, ._565 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._563 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._564\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gSaveBlock2\n" - " .word gMain\n" - "._563:\n" - " mov r0, #0x6\n" - "._564:\n" - " strb r0, [r1]\n" - " bl debug_sub_8011E74\n" - " ldr r0, ._570 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - " bl debug_sub_80125A0\n" - "._562:\n" - " ldr r0, ._570 + 4 @ gMain\n" - " ldrh r0, [r0, #0x2a]\n" - " cmp r0, #0x80\n" - " bne ._567 @cond_branch\n" - " bl debug_sub_80125E4\n" - " ldr r1, ._570 @ gUnknown_Debug_030043A4\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x6\n" - " bne ._568 @cond_branch\n" - " mov r0, #0x0\n" - " b ._569\n" - "._571:\n" - " .align 2, 0\n" - "._570:\n" - " .word gUnknown_Debug_030043A4\n" - " .word gMain\n" - "._568:\n" - " add r0, r0, #0x1\n" - "._569:\n" - " strb r0, [r1]\n" - " bl debug_sub_8011E74\n" - " ldr r0, ._575 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - " bl debug_sub_80125A0\n" - "._567:\n" - " ldr r0, ._575 + 4 @ gMain\n" - " ldrh r0, [r0, #0x2a]\n" - " cmp r0, #0x20\n" - " bne ._572 @cond_branch\n" - " bl debug_sub_80125E4\n" - " ldr r2, ._575 + 8 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r2]\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._573 @cond_branch\n" - " sub r0, r0, #0x1\n" - " strb r0, [r2]\n" - " b ._577\n" - "._576:\n" - " .align 2, 0\n" - "._575:\n" - " .word gUnknown_Debug_030043A4\n" - " .word gMain\n" - " .word gUnknown_Debug_030043A0\n" - "._573:\n" - " ldr r3, ._581 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r3]\n" - " cmp r0, #0\n" - " beq ._577 @cond_branch\n" - " strb r1, [r3]\n" - " mov r0, #0x4\n" - " strb r0, [r2]\n" - " ldr r0, ._581 + 4 @ gBattle_BG1_X\n" - " strh r1, [r0]\n" - " bl debug_sub_8011E5C\n" - " bl debug_sub_8011E74\n" - " ldr r0, ._581 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - "._577:\n" - " bl debug_sub_80125A0\n" - "._572:\n" - " ldr r0, ._581 + 12 @ gMain\n" - " ldrh r0, [r0, #0x2a]\n" - " cmp r0, #0x10\n" - " bne ._578 @cond_branch\n" - " bl debug_sub_80125E4\n" - " ldr r2, ._581 + 16 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0x4\n" - " beq ._579 @cond_branch\n" - " add r0, r0, #0x1\n" - " strb r0, [r2]\n" - " b ._583\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word gUnknown_Debug_03004360\n" - " .word gBattle_BG1_X\n" - " .word gUnknown_Debug_030043A4\n" - " .word gMain\n" - " .word gUnknown_Debug_030043A0\n" - "._579:\n" - " ldr r3, ._587 @ gUnknown_Debug_03004360\n" - " ldrb r1, [r3]\n" - " cmp r1, #0\n" - " bne ._583 @cond_branch\n" - " mov r0, #0x1\n" - " strb r0, [r3]\n" - " strb r1, [r2]\n" - " ldr r1, ._587 + 4 @ gBattle_BG1_X\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x1\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl debug_sub_8011E5C\n" - " bl debug_sub_8011E74\n" - " ldr r0, ._587 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - "._583:\n" - " bl debug_sub_80125A0\n" - "._578:\n" - " ldr r0, ._587 + 12 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._584 @cond_branch\n" - " b ._607\n" - "._584:\n" - " ldr r0, ._587 + 16 @ gUnknown_Debug_030043A0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._587 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r2, r0\n" - " sub r0, r0, #0x1e\n" - " cmp r0, #0x4\n" - " bhi ._586 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._587 + 20 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._588:\n" - " .align 2, 0\n" - "._587:\n" - " .word gUnknown_Debug_03004360\n" - " .word gBattle_BG1_X\n" - " .word gUnknown_Debug_030043A4\n" - " .word gMain\n" - " .word gUnknown_Debug_030043A0\n" - " .word ._589\n" - "._589:\n" - " .word ._590\n" - " .word ._591\n" - " .word ._592\n" - " .word ._593\n" - " .word ._594\n" - "._591:\n" - " bl debug_sub_8010818\n" - " b ._595\n" - "._592:\n" - " ldr r1, ._597 @ gUnknown_Debug_2023A76\n" - " mov r0, #0x1f\n" - " mov r2, #0xec\n" - " bl debug_sub_80132C8\n" - "._595:\n" - " bl debug_sub_8011E5C\n" - " bl debug_sub_8011E74\n" - " bl debug_sub_8012540\n" - " bl debug_nullsub_3\n" - " ldr r0, ._597 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - " b ._607\n" - "._598:\n" - " .align 2, 0\n" - "._597:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_030043A4\n" - "._593:\n" - " ldr r1, ._600 @ gUnknown_Debug_2023A76\n" - " mov r0, #0x1f\n" - " mov r2, #0xec\n" - " bl debug_sub_8013294\n" - " b ._607\n" - "._601:\n" - " .align 2, 0\n" - "._600:\n" - " .word gUnknown_Debug_2023A76\n" - "._594:\n" - " ldr r3, ._604 @ gUnknown_Debug_2023A76\n" - " add r2, r3, #0\n" - " add r2, r2, #0x44\n" - " ldrh r1, [r2]\n" - " mov r4, #0x0\n" - " ldsh r0, [r2, r4]\n" - " cmp r0, #0\n" - " beq ._602 @cond_branch\n" - " sub r0, r1, #1\n" - " strh r0, [r2]\n" - " add r1, r3, #0\n" - " add r1, r1, #0x8a\n" - " ldrh r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1]\n" - " b ._603\n" - "._605:\n" - " .align 2, 0\n" - "._604:\n" - " .word gUnknown_Debug_2023A76\n" - "._602:\n" - " mov r1, #0x8\n" - " strh r1, [r2]\n" - " add r0, r3, #0\n" - " add r0, r0, #0x8a\n" - " strh r1, [r0]\n" - "._603:\n" - " bl debug_sub_8012540\n" - " b ._607\n" - "._590:\n" - " mov r0, #0x0\n" - " bl debug_sub_8010B80\n" - " ldr r2, ._608 @ gUnknown_Debug_030043A0\n" - " ldr r0, ._608 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " b ._607\n" - "._609:\n" - " .align 2, 0\n" - "._608:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - "._586:\n" - " cmp r2, #0x4\n" - " bne ._611 @cond_branch\n" - " cmp r1, #0x5\n" - " bhi ._611 @cond_branch\n" - " mov r0, #0x1\n" - " bl debug_sub_8010AAC\n" - " b ._613\n" - "._611:\n" - " ldr r6, ._618 @ gUnknown_Debug_2023A76\n" - " ldr r5, ._618 + 4 @ gUnknown_Debug_030043A0\n" - " ldr r4, ._618 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r0, [r4]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " ldrb r0, [r5]\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x1\n" - " ldr r2, ._618 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r2]\n" - " mov r3, #0x46\n" - " mul r0, r0, r3\n" - " add r1, r1, r0\n" - " add r1, r1, r6\n" - " ldrh r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r1]\n" - " ldrb r0, [r4]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " ldrb r5, [r5]\n" - " add r1, r1, r5\n" - " lsl r0, r1, #0x1\n" - " ldrb r2, [r2]\n" - " mul r2, r2, r3\n" - " add r0, r0, r2\n" - " add r3, r0, r6\n" - " mov r4, #0x0\n" - " ldsh r2, [r3, r4]\n" - " ldr r4, ._618 + 16 @ gUnknown_Debug_821F424\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r1, r0, #0x1\n" - " add r0, r4, #0\n" - " add r0, r0, #0x8\n" - " add r0, r1, r0\n" - " ldrh r0, [r0]\n" - " cmp r2, r0\n" - " bge ._613 @cond_branch\n" - " add r0, r4, #6\n" - " add r0, r1, r0\n" - " ldrh r0, [r0]\n" - " strh r0, [r3]\n" - "._613:\n" - " ldr r5, ._618 + 4 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r5]\n" - " cmp r0, #0\n" - " bne ._614 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8010AAC\n" - " ldr r0, ._618 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r0, #0x4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - "._614:\n" - " ldr r4, ._618 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r5, [r5]\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - "._607:\n" - " ldr r0, ._618 + 20 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._615 @cond_branch\n" - " b ._638\n" - "._615:\n" - " ldr r0, ._618 + 4 @ gUnknown_Debug_030043A0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._618 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r2, r0\n" - " sub r0, r0, #0x1e\n" - " cmp r0, #0x4\n" - " bhi ._617 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._618 + 24 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._619:\n" - " .align 2, 0\n" - "._618:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_821F424\n" - " .word gMain\n" - " .word ._620\n" - "._620:\n" - " .word ._621\n" - " .word ._622\n" - " .word ._623\n" - " .word ._624\n" - " .word ._625\n" - "._622:\n" - " bl debug_sub_8010818\n" - " b ._626\n" - "._623:\n" - " ldr r1, ._628 @ gUnknown_Debug_2023A76\n" - " mov r0, #0x1f\n" - " mov r2, #0xec\n" - " bl debug_sub_80132C8\n" - "._626:\n" - " bl debug_sub_8011E5C\n" - " bl debug_sub_8011E74\n" - " bl debug_sub_8012540\n" - " bl debug_nullsub_3\n" - " ldr r0, ._628 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - " b ._638\n" - "._629:\n" - " .align 2, 0\n" - "._628:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_030043A4\n" - "._624:\n" - " ldr r1, ._631 @ gUnknown_Debug_2023A76\n" - " mov r0, #0x1f\n" - " mov r2, #0xec\n" - " bl debug_sub_8013294\n" - " b ._638\n" - "._632:\n" - " .align 2, 0\n" - "._631:\n" - " .word gUnknown_Debug_2023A76\n" - "._625:\n" - " ldr r3, ._635 @ gUnknown_Debug_2023A76\n" - " add r2, r3, #0\n" - " add r2, r2, #0x44\n" - " ldrh r1, [r2]\n" - " mov r4, #0x0\n" - " ldsh r0, [r2, r4]\n" - " cmp r0, #0x7\n" - " bgt ._633 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r2]\n" - " add r1, r3, #0\n" - " add r1, r1, #0x8a\n" - " ldrh r0, [r1]\n" - " add r0, r0, #0x1\n" - " strh r0, [r1]\n" - " b ._634\n" - "._636:\n" - " .align 2, 0\n" - "._635:\n" - " .word gUnknown_Debug_2023A76\n" - "._633:\n" - " mov r1, #0x0\n" - " strh r1, [r2]\n" - " add r0, r3, #0\n" - " add r0, r0, #0x8a\n" - " strh r1, [r0]\n" - "._634:\n" - " bl debug_sub_8012540\n" - " b ._638\n" - "._621:\n" - " mov r0, #0x1\n" - " bl debug_sub_8010B80\n" - " ldr r2, ._639 @ gUnknown_Debug_030043A0\n" - " ldr r0, ._639 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r2, [r2]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " b ._638\n" - "._640:\n" - " .align 2, 0\n" - "._639:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - "._617:\n" - " cmp r2, #0x4\n" - " bne ._642 @cond_branch\n" - " cmp r1, #0x5\n" - " bhi ._642 @cond_branch\n" - " mov r0, #0x1\n" - " bl debug_sub_8010AAC\n" - " b ._644\n" - "._642:\n" - " ldr r6, ._650 @ gUnknown_Debug_2023A76\n" - " ldr r5, ._650 + 4 @ gUnknown_Debug_030043A0\n" - " ldr r4, ._650 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r0, [r4]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " ldrb r0, [r5]\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x1\n" - " ldr r2, ._650 + 12 @ gUnknown_Debug_03004360\n" - " ldrb r0, [r2]\n" - " mov r3, #0x46\n" - " mul r0, r0, r3\n" - " add r1, r1, r0\n" - " add r1, r1, r6\n" - " ldrh r0, [r1]\n" - " add r0, r0, #0x1\n" - " strh r0, [r1]\n" - " ldrb r0, [r4]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " ldrb r5, [r5]\n" - " add r1, r1, r5\n" - " lsl r0, r1, #0x1\n" - " ldrb r2, [r2]\n" - " mul r2, r2, r3\n" - " add r0, r0, r2\n" - " add r3, r0, r6\n" - " mov r4, #0x0\n" - " ldsh r2, [r3, r4]\n" - " ldr r4, ._650 + 16 @ gUnknown_Debug_821F424\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r1, r0, #0x1\n" - " add r0, r4, #6\n" - " add r0, r1, r0\n" - " ldrh r0, [r0]\n" - " cmp r2, r0\n" - " ble ._644 @cond_branch\n" - " add r0, r4, #0\n" - " add r0, r0, #0x8\n" - " add r0, r1, r0\n" - " ldrh r0, [r0]\n" - " strh r0, [r3]\n" - "._644:\n" - " ldr r5, ._650 + 4 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r5]\n" - " cmp r0, #0\n" - " bne ._645 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8010AAC\n" - " ldr r0, ._650 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r0, #0x4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - "._645:\n" - " ldr r4, ._650 + 8 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r5, [r5]\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - "._638:\n" - " ldr r0, ._650 + 20 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._646 @cond_branch\n" - " ldr r0, ._650 + 4 @ gUnknown_Debug_030043A0\n" - " ldrb r1, [r0]\n" - " ldr r2, ._650 + 8 @ gUnknown_Debug_030043A4\n" - " mov r8, r2\n" - " add r7, r0, #0\n" - " cmp r1, #0x4\n" - " bne ._648 @cond_branch\n" - " ldrb r0, [r2]\n" - " cmp r0, #0x5\n" - " bhi ._648 @cond_branch\n" - " mov r0, #0x1\n" - " bl debug_sub_8010AAC\n" - " b ._653\n" - "._651:\n" - " .align 2, 0\n" - "._650:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_821F424\n" - " .word gMain\n" - "._648:\n" - " mov r4, r8\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r1, [r7]\n" - " add r0, r0, r1\n" - " cmp r0, #0x1e\n" - " bne ._652 @cond_branch\n" - " mov r0, #0x2\n" - " bl debug_sub_8010B80\n" - " b ._653\n" - "._652:\n" - " ldr r4, ._655 @ gUnknown_Debug_2023A76\n" - " lsl r1, r0, #0x1\n" - " ldr r3, ._655 + 4 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r3]\n" - " mov r0, #0x46\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r4\n" - " ldrh r0, [r1]\n" - " sub r0, r0, #0xa\n" - " strh r0, [r1]\n" - " add r6, r3, #0\n" - " ldr r5, ._655 + 8 @ gUnknown_Debug_821F424\n" - " b ._654\n" - "._656:\n" - " .align 2, 0\n" - "._655:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_821F424\n" - "._657:\n" - " add r0, r5, #6\n" - " add r0, r1, r0\n" - " ldrh r0, [r0]\n" - " ldrh r2, [r3]\n" - " add r0, r0, r2\n" - " strh r0, [r3]\n" - "._654:\n" - " mov r1, r8\n" - " ldrb r0, [r1]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " ldrb r2, [r7]\n" - " add r1, r1, r2\n" - " lsl r2, r1, #0x1\n" - " ldrb r3, [r6]\n" - " mov r0, #0x46\n" - " mul r0, r0, r3\n" - " add r2, r2, r0\n" - " add r3, r2, r4\n" - " mov r0, #0x0\n" - " ldsh r2, [r3, r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r1, r0, #0x1\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " add r0, r1, r0\n" - " ldrh r0, [r0]\n" - " cmp r2, r0\n" - " blt ._657 @cond_branch\n" - "._653:\n" - " ldr r5, ._663 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r5]\n" - " cmp r0, #0\n" - " bne ._658 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8010AAC\n" - " ldr r0, ._663 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r0, #0x4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - "._658:\n" - " ldr r4, ._663 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r5, [r5]\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - "._646:\n" - " ldr r0, ._663 + 8 @ gMain\n" - " ldrh r1, [r0, #0x30]\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._659 @cond_branch\n" - " ldr r0, ._663 @ gUnknown_Debug_030043A0\n" - " ldrb r1, [r0]\n" - " ldr r2, ._663 + 4 @ gUnknown_Debug_030043A4\n" - " mov r8, r2\n" - " add r7, r0, #0\n" - " cmp r1, #0x4\n" - " bne ._661 @cond_branch\n" - " ldrb r0, [r2]\n" - " cmp r0, #0x5\n" - " bhi ._661 @cond_branch\n" - " mov r0, #0x1\n" - " bl debug_sub_8010AAC\n" - " b ._666\n" - "._664:\n" - " .align 2, 0\n" - "._663:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - " .word gMain\n" - "._661:\n" - " mov r4, r8\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r1, [r7]\n" - " add r0, r0, r1\n" - " cmp r0, #0x1e\n" - " bne ._665 @cond_branch\n" - " mov r0, #0x3\n" - " bl debug_sub_8010B80\n" - " b ._666\n" - "._665:\n" - " ldr r4, ._668 @ gUnknown_Debug_2023A76\n" - " lsl r1, r0, #0x1\n" - " ldr r3, ._668 + 4 @ gUnknown_Debug_03004360\n" - " ldrb r2, [r3]\n" - " mov r0, #0x46\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r4\n" - " ldrh r0, [r1]\n" - " add r0, r0, #0xa\n" - " strh r0, [r1]\n" - " add r6, r3, #0\n" - " ldr r5, ._668 + 8 @ gUnknown_Debug_821F424\n" - " b ._667\n" - "._669:\n" - " .align 2, 0\n" - "._668:\n" - " .word gUnknown_Debug_2023A76\n" - " .word gUnknown_Debug_03004360\n" - " .word gUnknown_Debug_821F424\n" - "._670:\n" - " ldrh r0, [r3]\n" - " sub r0, r0, r1\n" - " strh r0, [r3]\n" - "._667:\n" - " mov r2, r8\n" - " ldrb r0, [r2]\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " ldrb r0, [r7]\n" - " add r1, r1, r0\n" - " lsl r2, r1, #0x1\n" - " ldrb r3, [r6]\n" - " mov r0, #0x46\n" - " mul r0, r0, r3\n" - " add r2, r2, r0\n" - " add r3, r2, r4\n" - " mov r0, #0x0\n" - " ldsh r2, [r3, r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x1\n" - " add r1, r5, #6\n" - " add r0, r0, r1\n" - " ldrh r1, [r0]\n" - " cmp r2, r1\n" - " bgt ._670 @cond_branch\n" - "._666:\n" - " ldr r5, ._672 @ gUnknown_Debug_030043A0\n" - " ldrb r0, [r5]\n" - " cmp r0, #0\n" - " bne ._671 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8010AAC\n" - " ldr r0, ._672 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " add r0, r0, #0x4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - "._671:\n" - " ldr r4, ._672 + 4 @ gUnknown_Debug_030043A4\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " ldrb r5, [r5]\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_8011EA0\n" - " ldrb r1, [r4]\n" - " lsl r0, r1, #0x2\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl debug_sub_80123D8\n" - "._659:\n" - " bl AnimateSprites\n" - " bl BuildOamBuffer\n" - " add sp, sp, #0x10\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._673:\n" - " .align 2, 0\n" - "._672:\n" - " .word gUnknown_Debug_030043A0\n" - " .word gUnknown_Debug_030043A4\n" - "\n" - ); + s32 r5; + + if (gMain.heldKeysRaw == 0x204) + DoSoftReset(); + if (gMain.newKeysRaw == 4) + { + if (gUnknown_Debug_030043A4 < 6) + { + gUnknown_Debug_030043A8 = 0; + debug_sub_8012628(); + SetMainCallback2(debug_sub_8011498); + } + //_546 + if (gUnknown_Debug_030043A0 == 0 && gUnknown_Debug_030043A4 == 6) + { + gMain.savedCallback = debug_sub_80108B8; + CreateMon( + &gPlayerParty[0], + gUnknown_Debug_2023A76_[0][0][0], + gUnknown_Debug_2023A76_[0][0][1], + 32, + 0, 0, 0, 0); + for (r5 = 0; r5 < 4; r5++) + { + SetMonData(&gPlayerParty[0], MON_DATA_MOVE1 + r5, &gUnknown_Debug_2023B02[0][0][r5]); + SetMonData(&gPlayerParty[0], MON_DATA_PP1 + r5, &gBattleMoves[gUnknown_Debug_2023B02[0][0][r5]].pp); + } + switch (gUnknown_Debug_2023A76_[0][6][0]) + { + case 1: //_550 + gCB2_AfterEvolution = debug_sub_80108B8; + EvolutionScene(&gPlayerParty[0], gUnknown_Debug_2023A76_[0][1][0], 1, 0); + break; + case 2: //_551 + debug_sub_8012688(); + break; + } + } + //_555 + if (gUnknown_Debug_030043A0 == 1 && gUnknown_Debug_030043A4 == 6) + { + // This is really weird + r5 = (gSaveBlock2.optionsBattleSceneOff | (gSaveBlock2.optionsSound << 1)); + r5++; + if (r5 == 4) + r5 = 0; + gSaveBlock2.optionsBattleSceneOff = (r5 & 1); + gSaveBlock2.optionsSound = (r5 & 2) >> 1; + SetPokemonCryStereo(gSaveBlock2.optionsSound); + debug_nullsub_3(); + } + } + //_559 + if (gMain.newKeysRaw == 8) + debug_sub_801174C(); + if (gMain.newKeysRaw == 0x40) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A4 != 0) + gUnknown_Debug_030043A4--; + else + gUnknown_Debug_030043A4 = 6; + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + debug_sub_80125A0(); + } + //_562 + if (gMain.newKeysRaw == 0x80) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A4 == 6) + gUnknown_Debug_030043A4 = 0; + else + gUnknown_Debug_030043A4++; + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + debug_sub_80125A0(); + } + //_567 + if (gMain.newKeysRaw == 0x20) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A0 != 0) + { + gUnknown_Debug_030043A0--; + } + else + { + if (gUnknown_Debug_03004360 != 0) + { + gUnknown_Debug_03004360 = 0; + gUnknown_Debug_030043A0 = 4; + gBattle_BG1_X = 0; + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + } + //_577 + debug_sub_80125A0(); + } + //_572 + if (gMain.newKeysRaw == 0x10) + { + debug_sub_80125E4(); + if (gUnknown_Debug_030043A0 != 4) + { + gUnknown_Debug_030043A0++; + } + else + { + if (gUnknown_Debug_03004360 == 0) + { + gUnknown_Debug_03004360 = 1; + gUnknown_Debug_030043A0 = 0; + gBattle_BG1_X = 0x100; + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + } + debug_sub_80125A0(); + } + //_578 + if (gMain.newAndRepeatedKeys & B_BUTTON) + { + switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5) + { + case 31: + debug_sub_8010818(); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 32: + debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 33: + debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC); + break; + case 34: + if (gUnknown_Debug_2023A76_[0][6][4] != 0) + { + gUnknown_Debug_2023A76_[0][6][4]--; + gUnknown_Debug_2023A76_[1][6][4]--; + } + else + { + gUnknown_Debug_2023A76_[0][6][4] = 8; + gUnknown_Debug_2023A76_[1][6][4] = 8; + } + debug_sub_8012540(); + break; + case 30: + debug_sub_8010B80(0); + debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); + break; + default: + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]--; + if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; + } + //_613 + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + } + } + //_607 + if (gMain.newAndRepeatedKeys & A_BUTTON) + { + switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5) + { + case 31: + debug_sub_8010818(); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 32: + debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC); + debug_sub_8011E5C(); + debug_sub_8011E74(); + debug_sub_8012540(); + debug_nullsub_3(); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + case 33: + debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC); + break; + case 34: + if (gUnknown_Debug_2023A76_[0][6][4] < 8) + { + gUnknown_Debug_2023A76_[0][6][4]++; + gUnknown_Debug_2023A76_[1][6][4]++; + } + else + { + gUnknown_Debug_2023A76_[0][6][4] = 0; + gUnknown_Debug_2023A76_[1][6][4] = 0; + } + debug_sub_8012540(); + break; + case 30: + debug_sub_8010B80(1); + debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); + break; + default: + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]++; + if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]; + } + //_644 + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + //_645 + debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + break; + } + } + //_638 + if (gMain.newAndRepeatedKeys & 0x200) + { + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + //_648 + else + { + if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30) + { + debug_sub_8010B80(2); + } + //_652 + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= 10; + while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; + } + } + //_653 + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + //_658 + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + //_646 + if (gMain.newAndRepeatedKeys & 0x100) + { + if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6) + { + debug_sub_8010AAC(1); + } + //_661 + else + { + if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30) + { + debug_sub_8010B80(3); + } + //_665 + else + { + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += 10; + while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]) + gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3]; + } + } + //_666 + if (gUnknown_Debug_030043A0 == 0) + { + debug_sub_8010AAC(0); + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4); + } + //_671 + debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0); + debug_sub_80123D8(gUnknown_Debug_030043A4 * 5); + } + //_659 + AnimateSprites(); + BuildOamBuffer(); } __attribute__((naked)) -- cgit v1.2.3 From 9a8ec555e68fb143ffe900c778ddb85d5bd145a5 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 6 Feb 2018 19:23:54 -0600 Subject: fix bss memory locations --- src/debug/nakamura_debug_menu.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index b8c4ed73e..550ac7bbd 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -15,6 +15,7 @@ EWRAM_DATA u16 _nakamuraDataC = 0; __attribute__((unused)) static u8 _nakamuraStatic0[0x18]; __attribute__((unused)) static u8 _nakamuraStatic18; +__attribute__((unused)) static u8 gDebugFiller3000814[4]; asm(".global _nakamuraStatic0"); asm(".global _nakamuraStatic18"); -- cgit v1.2.3